PageSourceSearch

https://www.superrugby.co.nz/_resources/themes/super-rugby/dist/javascript/bundles/common.js?m=1790926538

js superrugby.co.nz collected 2026-10-02 08:40:43 UTC 1,608,667 bytes, 43,198 lines download raw bytes

vendor: 2,706 bytes, lines 1-77
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, {
40/******/ 				configurable: false,
41/******/ 				enumerable: true,
42/******/ 				get: getter
43/******/ 			});
44/******/ 		}
45/******/ 	};
46/******/
47/******/ 	// getDefaultExport function for compatibility with non-harmony modules
48/******/ 	__webpack_require__.n = function(module) {
49/******/ 		var getter = module && module.__esModule ?
50/******/ 			function getDefault() { return module['default']; } :
51/******/ 			function getModuleExports() { return module; };
52/******/ 		__webpack_require__.d(getter, 'a', getter);
53/******/ 		return getter;
54/******/ 	};
55/******/
56/******/ 	// Object.prototype.hasOwnProperty.call
57/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58/******/
59/******/ 	// __webpack_public_path__
60/******/ 	__webpack_require__.p = "/";
61/******/
62/******/ 	// Load entry module and return exports
63/******/ 	return __webpack_require__(__webpack_require__.s = 139);
64/******/ })
65/************************************************************************/
66/******/ ([
67/* 0 */
68/***/ (function(module, exports, __webpack_require__) {
69
70/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js
71//! version : 2.29.1
72//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
73//! license : MIT
74//! momentjs.com
75
76;(function (global, factory) {
77     true
vendor: 62,854 bytes, lines 77-2161
77 ? module.exports = factory() :
78    typeof define === 'function' && define.amd ? define(factory) :
79    global.moment = factory()
80}(this, (function () { 'use strict';
81
82    var hookCallback;
83
84    function hooks() {
85        return hookCallback.apply(null, arguments);
86    }
87
88    // This is done to register the method called with moment()
89    // without creating circular dependencies.
90    function setHookCallback(callback) {
91        hookCallback = callback;
92    }
93
94    function isArray(input) {
95        return (
96            input instanceof Array ||
97            Object.prototype.toString.call(input) === '[object Array]'
98        );
99    }
100
101    function isObject(input) {
102        // IE8 will treat undefined and null as object if it wasn't for
103        // input != null
104        return (
105            input != null &&
106            Object.prototype.toString.call(input) === '[object Object]'
107        );
108    }
109
110    function hasOwnProp(a, b) {
111        return Object.prototype.hasOwnProperty.call(a, b);
112    }
113
114    function isObjectEmpty(obj) {
115        if (Object.getOwnPropertyNames) {
116            return Object.getOwnPropertyNames(obj).length === 0;
117        } else {
118            var k;
119            for (k in obj) {
120                if (hasOwnProp(obj, k)) {
121                    return false;
122                }
123            }
124            return true;
125        }
126    }
127
128    function isUndefined(input) {
129        return input === void 0;
130    }
131
132    function isNumber(input) {
133        return (
134            typeof input === 'number' ||
135            Object.prototype.toString.call(input) === '[object Number]'
136        );
137    }
138
139    function isDate(input) {
140        return (
141            input instanceof Date ||
142            Object.prototype.toString.call(input) === '[object Date]'
143        );
144    }
145
146    function map(arr, fn) {
147        var res = [],
148            i;
149        for (i = 0; i < arr.length; ++i) {
150            res.push(fn(arr[i], i));
151        }
152        return res;
153    }
154
155    function extend(a, b) {
156        for (var i in b) {
157            if (hasOwnProp(b, i)) {
158                a[i] = b[i];
159            }
160        }
161
162        if (hasOwnProp(b, 'toString')) {
163            a.toString = b.toString;
164        }
165
166        if (hasOwnProp(b, 'valueOf')) {
167            a.valueOf = b.valueOf;
168        }
169
170        return a;
171    }
172
173    function createUTC(input, format, locale, strict) {
174        return createLocalOrUTC(input, format, locale, strict, true).utc();
175    }
176
177    function defaultParsingFlags() {
178        // We need to deep clone this object.
179        return {
180            empty: false,
181            unusedTokens: [],
182            unusedInput: [],
183            overflow: -2,
184            charsLeftOver: 0,
185            nullInput: false,
186            invalidEra: null,
187            invalidMonth: null,
188            invalidFormat: false,
189            userInvalidated: false,
190            iso: false,
191            parsedDateParts: [],
192            era: null,
193            meridiem: null,
194            rfc2822: false,
195            weekdayMismatch: false,
196        };
197    }
198
199    function getParsingFlags(m) {
200        if (m._pf == null) {
201            m._pf = defaultParsingFlags();
202        }
203        return m._pf;
204    }
205
206    var some;
207    if (Array.prototype.some) {
208        some = Array.prototype.some;
209    } else {
210        some = function (fun) {
211            var t = Object(this),
212                len = t.length >>> 0,
213                i;
214
215            for (i = 0; i < len; i++) {
216                if (i in t && fun.call(this, t[i], i, t)) {
217                    return true;
218                }
219            }
220
221            return false;
222        };
223    }
224
225    function isValid(m) {
226        if (m._isValid == null) {
227            var flags = getParsingFlags(m),
228                parsedParts = some.call(flags.parsedDateParts, function (i) {
229                    return i != null;
230                }),
231                isNowValid =
232                    !isNaN(m._d.getTime()) &&
233                    flags.overflow < 0 &&
234                    !flags.empty &&
235                    !flags.invalidEra &&
236                    !flags.invalidMonth &&
237                    !flags.invalidWeekday &&
238                    !flags.weekdayMismatch &&
239                    !flags.nullInput &&
240                    !flags.invalidFormat &&
241                    !flags.userInvalidated &&
242                    (!flags.meridiem || (flags.meridiem && parsedParts));
243
244            if (m._strict) {
245                isNowValid =
246                    isNowValid &&
247                    flags.charsLeftOver === 0 &&
248                    flags.unusedTokens.length === 0 &&
249                    flags.bigHour === undefined;
250            }
251
252            if (Object.isFrozen == null || !Object.isFrozen(m)) {
253                m._isValid = isNowValid;
254            } else {
255                return isNowValid;
256            }
257        }
258        return m._isValid;
259    }
260
261    function createInvalid(flags) {
262        var m = createUTC(NaN);
263        if (flags != null) {
264            extend(getParsingFlags(m), flags);
265        } else {
266            getParsingFlags(m).userInvalidated = true;
267        }
268
269        return m;
270    }
271
272    // Plugins that add properties should also add the key here (null value),
273    // so we can properly clone ourselves.
274    var momentProperties = (hooks.momentProperties = []),
275        updateInProgress = false;
276
277    function copyConfig(to, from) {
278        var i, prop, val;
279
280        if (!isUndefined(from._isAMomentObject)) {
281            to._isAMomentObject = from._isAMomentObject;
282        }
283        if (!isUndefined(from._i)) {
284            to._i = from._i;
285        }
286        if (!isUndefined(from._f)) {
287            to._f = from._f;
288        }
289        if (!isUndefined(from._l)) {
290            to._l = from._l;
291        }
292        if (!isUndefined(from._strict)) {
293            to._strict = from._strict;
294        }
295        if (!isUndefined(from._tzm)) {
296            to._tzm = from._tzm;
297        }
298        if (!isUndefined(from._isUTC)) {
299            to._isUTC = from._isUTC;
300        }
301        if (!isUndefined(from._offset)) {
302            to._offset = from._offset;
303        }
304        if (!isUndefined(from._pf)) {
305            to._pf = getParsingFlags(from);
306        }
307        if (!isUndefined(from._locale)) {
308            to._locale = from._locale;
309        }
310
311        if (momentProperties.length > 0) {
312            for (i = 0; i < momentProperties.length; i++) {
313                prop = momentProperties[i];
314                val = from[prop];
315                if (!isUndefined(val)) {
316                    to[prop] = val;
317                }
318            }
319        }
320
321        return to;
322    }
323
324    // Moment prototype object
325    function Moment(config) {
326        copyConfig(this, config);
327        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
328        if (!this.isValid()) {
329            this._d = new Date(NaN);
330        }
331        // Prevent infinite loop in case updateOffset creates new moment
332        // objects.
333        if (updateInProgress === false) {
334            updateInProgress = true;
335            hooks.updateOffset(this);
336            updateInProgress = false;
337        }
338    }
339
340    function isMoment(obj) {
341        return (
342            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
343        );
344    }
345
346    function warn(msg) {
347        if (
348            hooks.suppressDeprecationWarnings === false &&
349            typeof console !== 'undefined' &&
350            console.warn
351        ) {
352            console.warn('Deprecation warning: ' + msg);
353        }
354    }
355
356    function deprecate(msg, fn) {
357        var firstTime = true;
358
359        return extend(function () {
360            if (hooks.deprecationHandler != null) {
361                hooks.deprecationHandler(null, msg);
362            }
363            if (firstTime) {
364                var args = [],
365                    arg,
366                    i,
367                    key;
368                for (i = 0; i < arguments.length; i++) {
369                    arg = '';
370                    if (typeof arguments[i] === 'object') {
371                        arg += '\n[' + i + '] ';
372                        for (key in arguments[0]) {
373                            if (hasOwnProp(arguments[0], key)) {
374                                arg += key + ': ' + arguments[0][key] + ', ';
375                            }
376                        }
377                        arg = arg.slice(0, -2); // Remove trailing comma and space
378                    } else {
379                        arg = arguments[i];
380                    }
381                    args.push(arg);
382                }
383                warn(
384                    msg +
385                        '\nArguments: ' +
386                        Array.prototype.slice.call(args).join('') +
387                        '\n' +
388                        new Error().stack
389                );
390                firstTime = false;
391            }
392            return fn.apply(this, arguments);
393        }, fn);
394    }
395
396    var deprecations = {};
397
398    function deprecateSimple(name, msg) {
399        if (hooks.deprecationHandler != null) {
400            hooks.deprecationHandler(name, msg);
401        }
402        if (!deprecations[name]) {
403            warn(msg);
404            deprecations[name] = true;
405        }
406    }
407
408    hooks.suppressDeprecationWarnings = false;
409    hooks.deprecationHandler = null;
410
411    function isFunction(input) {
412        return (
413            (typeof Function !== 'undefined' && input instanceof Function) ||
414            Object.prototype.toString.call(input) === '[object Function]'
415        );
416    }
417
418    function set(config) {
419        var prop, i;
420        for (i in config) {
421            if (hasOwnProp(config, i)) {
422                prop = config[i];
423                if (isFunction(prop)) {
424                    this[i] = prop;
425                } else {
426                    this['_' + i] = prop;
427                }
428            }
429        }
430        this._config = config;
431        // Lenient ordinal parsing accepts just a number in addition to
432        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
433        // TODO: Remove "ordinalParse" fallback in next major release.
434        this._dayOfMonthOrdinalParseLenient = new RegExp(
435            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
436                '|' +
437                /\d{1,2}/.source
438        );
439    }
440
441    function mergeConfigs(parentConfig, childConfig) {
442        var res = extend({}, parentConfig),
443            prop;
444        for (prop in childConfig) {
445            if (hasOwnProp(childConfig, prop)) {
446                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
447                    res[prop] = {};
448                    extend(res[prop], parentConfig[prop]);
449                    extend(res[prop], childConfig[prop]);
450                } else if (childConfig[prop] != null) {
451                    res[prop] = childConfig[prop];
452                } else {
453                    delete res[prop];
454                }
455            }
456        }
457        for (prop in parentConfig) {
458            if (
459                hasOwnProp(parentConfig, prop) &&
460                !hasOwnProp(childConfig, prop) &&
461                isObject(parentConfig[prop])
462            ) {
463                // make sure changes to properties don't modify parent config
464                res[prop] = extend({}, res[prop]);
465            }
466        }
467        return res;
468    }
469
470    function Locale(config) {
471        if (config != null) {
472            this.set(config);
473        }
474    }
475
476    var keys;
477
478    if (Object.keys) {
479        keys = Object.keys;
480    } else {
481        keys = function (obj) {
482            var i,
483                res = [];
484            for (i in obj) {
485                if (hasOwnProp(obj, i)) {
486                    res.push(i);
487                }
488            }
489            return res;
490        };
491    }
492
493    var defaultCalendar = {
494        sameDay: '[Today at] LT',
495        nextDay: '[Tomorrow at] LT',
496        nextWeek: 'dddd [at] LT',
497        lastDay: '[Yesterday at] LT',
498        lastWeek: '[Last] dddd [at] LT',
499        sameElse: 'L',
500    };
501
502    function calendar(key, mom, now) {
503        var output = this._calendar[key] || this._calendar['sameElse'];
504        return isFunction(output) ? output.call(mom, now) : output;
505    }
506
507    function zeroFill(number, targetLength, forceSign) {
508        var absNumber = '' + Math.abs(number),
509            zerosToFill = targetLength - absNumber.length,
510            sign = number >= 0;
511        return (
512            (sign ? (forceSign ? '+' : '') : '-') +
513            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
514            absNumber
515        );
516    }
517
518    var 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,
519        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
520        formatFunctions = {},
521        formatTokenFunctions = {};
522
523    // token:    'M'
524    // padded:   ['MM', 2]
525    // ordinal:  'Mo'
526    // callback: function () { this.month() + 1 }
527    function addFormatToken(token, padded, ordinal, callback) {
528        var func = callback;
529        if (typeof callback === 'string') {
530            func = function () {
531                return this[callback]();
532            };
533        }
534        if (token) {
535            formatTokenFunctions[token] = func;
536        }
537        if (padded) {
538            formatTokenFunctions[padded[0]] = function () {
539                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
540            };
541        }
542        if (ordinal) {
543            formatTokenFunctions[ordinal] = function () {
544                return this.localeData().ordinal(
545                    func.apply(this, arguments),
546                    token
547                );
548            };
549        }
550    }
551
552    function removeFormattingTokens(input) {
553        if (input.match(/\[[\s\S]/)) {
554            return input.replace(/^\[|\]$/g, '');
555        }
556        return input.replace(/\\/g, '');
557    }
558
559    function makeFormatFunction(format) {
560        var array = format.match(formattingTokens),
561            i,
562            length;
563
564        for (i = 0, length = array.length; i < length; i++) {
565            if (formatTokenFunctions[array[i]]) {
566                array[i] = formatTokenFunctions[array[i]];
567            } else {
568                array[i] = removeFormattingTokens(array[i]);
569            }
570        }
571
572        return function (mom) {
573            var output = '',
574                i;
575            for (i = 0; i < length; i++) {
576                output += isFunction(array[i])
577                    ? array[i].call(mom, format)
578                    : array[i];
579            }
580            return output;
581        };
582    }
583
584    // format date using native date object
585    function formatMoment(m, format) {
586        if (!m.isValid()) {
587            return m.localeData().invalidDate();
588        }
589
590        format = expandFormat(format, m.localeData());
591        formatFunctions[format] =
592            formatFunctions[format] || makeFormatFunction(format);
593
594        return formatFunctions[format](m);
595    }
596
597    function expandFormat(format, locale) {
598        var i = 5;
599
600        function replaceLongDateFormatTokens(input) {
601            return locale.longDateFormat(input) || input;
602        }
603
604        localFormattingTokens.lastIndex = 0;
605        while (i >= 0 && localFormattingTokens.test(format)) {
606            format = format.replace(
607                localFormattingTokens,
608                replaceLongDateFormatTokens
609            );
610            localFormattingTokens.lastIndex = 0;
611            i -= 1;
612        }
613
614        return format;
615    }
616
617    var defaultLongDateFormat = {
618        LTS: 'h:mm:ss A',
619        LT: 'h:mm A',
620        L: 'MM/DD/YYYY',
621        LL: 'MMMM D, YYYY',
622        LLL: 'MMMM D, YYYY h:mm A',
623        LLLL: 'dddd, MMMM D, YYYY h:mm A',
624    };
625
626    function longDateFormat(key) {
627        var format = this._longDateFormat[key],
628            formatUpper = this._longDateFormat[key.toUpperCase()];
629
630        if (format || !formatUpper) {
631            return format;
632        }
633
634        this._longDateFormat[key] = formatUpper
635            .match(formattingTokens)
636            .map(function (tok) {
637                if (
638                    tok === 'MMMM' ||
639                    tok === 'MM' ||
640                    tok === 'DD' ||
641                    tok === 'dddd'
642                ) {
643                    return tok.slice(1);
644                }
645                return tok;
646            })
647            .join('');
648
649        return this._longDateFormat[key];
650    }
651
652    var defaultInvalidDate = 'Invalid date';
653
654    function invalidDate() {
655        return this._invalidDate;
656    }
657
658    var defaultOrdinal = '%d',
659        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
660
661    function ordinal(number) {
662        return this._ordinal.replace('%d', number);
663    }
664
665    var defaultRelativeTime = {
666        future: 'in %s',
667        past: '%s ago',
668        s: 'a few seconds',
669        ss: '%d seconds',
670        m: 'a minute',
671        mm: '%d minutes',
672        h: 'an hour',
673        hh: '%d hours',
674        d: 'a day',
675        dd: '%d days',
676        w: 'a week',
677        ww: '%d weeks',
678        M: 'a month',
679        MM: '%d months',
680        y: 'a year',
681        yy: '%d years',
682    };
683
684    function relativeTime(number, withoutSuffix, string, isFuture) {
685        var output = this._relativeTime[string];
686        return isFunction(output)
687            ? output(number, withoutSuffix, string, isFuture)
688            : output.replace(/%d/i, number);
689    }
690
691    function pastFuture(diff, output) {
692        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
693        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
694    }
695
696    var aliases = {};
697
698    function addUnitAlias(unit, shorthand) {
699        var lowerCase = unit.toLowerCase();
700        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
701    }
702
703    function normalizeUnits(units) {
704        return typeof units === 'string'
705            ? aliases[units] || aliases[units.toLowerCase()]
706            : undefined;
707    }
708
709    function normalizeObjectUnits(inputObject) {
710        var normalizedInput = {},
711            normalizedProp,
712            prop;
713
714        for (prop in inputObject) {
715            if (hasOwnProp(inputObject, prop)) {
716                normalizedProp = normalizeUnits(prop);
717                if (normalizedProp) {
718                    normalizedInput[normalizedProp] = inputObject[prop];
719                }
720            }
721        }
722
723        return normalizedInput;
724    }
725
726    var priorities = {};
727
728    function addUnitPriority(unit, priority) {
729        priorities[unit] = priority;
730    }
731
732    function getPrioritizedUnits(unitsObj) {
733        var units = [],
734            u;
735        for (u in unitsObj) {
736            if (hasOwnProp(unitsObj, u)) {
737                units.push({ unit: u, priority: priorities[u] });
738            }
739        }
740        units.sort(function (a, b) {
741            return a.priority - b.priority;
742        });
743        return units;
744    }
745
746    function isLeapYear(year) {
747        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
748    }
749
750    function absFloor(number) {
751        if (number < 0) {
752            // -0 -> 0
753            return Math.ceil(number) || 0;
754        } else {
755            return Math.floor(number);
756        }
757    }
758
759    function toInt(argumentForCoercion) {
760        var coercedNumber = +argumentForCoercion,
761            value = 0;
762
763        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
764            value = absFloor(coercedNumber);
765        }
766
767        return value;
768    }
769
770    function makeGetSet(unit, keepTime) {
771        return function (value) {
772            if (value != null) {
773                set$1(this, unit, value);
774                hooks.updateOffset(this, keepTime);
775                return this;
776            } else {
777                return get(this, unit);
778            }
779        };
780    }
781
782    function get(mom, unit) {
783        return mom.isValid()
784            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
785            : NaN;
786    }
787
788    function set$1(mom, unit, value) {
789        if (mom.isValid() && !isNaN(value)) {
790            if (
791                unit === 'FullYear' &&
792                isLeapYear(mom.year()) &&
793                mom.month() === 1 &&
794                mom.date() === 29
795            ) {
796                value = toInt(value);
797                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
798                    value,
799                    mom.month(),
800                    daysInMonth(value, mom.month())
801                );
802            } else {
803                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
804            }
805        }
806    }
807
808    // MOMENTS
809
810    function stringGet(units) {
811        units = normalizeUnits(units);
812        if (isFunction(this[units])) {
813            return this[units]();
814        }
815        return this;
816    }
817
818    function stringSet(units, value) {
819        if (typeof units === 'object') {
820            units = normalizeObjectUnits(units);
821            var prioritized = getPrioritizedUnits(units),
822                i;
823            for (i = 0; i < prioritized.length; i++) {
824                this[prioritized[i].unit](units[prioritized[i].unit]);
825            }
826        } else {
827            units = normalizeUnits(units);
828            if (isFunction(this[units])) {
829                return this[units](value);
830            }
831        }
832        return this;
833    }
834
835    var match1 = /\d/, //       0 - 9
836        match2 = /\d\d/, //      00 - 99
837        match3 = /\d{3}/, //     000 - 999
838        match4 = /\d{4}/, //    0000 - 9999
839        match6 = /[+-]?\d{6}/, // -999999 - 999999
840        match1to2 = /\d\d?/, //       0 - 99
841        match3to4 = /\d\d\d\d?/, //     999 - 9999
842        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
843        match1to3 = /\d{1,3}/, //       0 - 999
844        match1to4 = /\d{1,4}/, //       0 - 9999
845        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
846        matchUnsigned = /\d+/, //       0 - inf
847        matchSigned = /[+-]?\d+/, //    -inf - inf
848        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
849        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
850        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
851        // any word (or two) characters or numbers including two/three word month in arabic.
852        // includes scottish gaelic two word and hyphenated months
853        matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
854        regexes;
855
856    regexes = {};
857
858    function addRegexToken(token, regex, strictRegex) {
859        regexes[token] = isFunction(regex)
860            ? regex
861            : function (isStrict, localeData) {
862                  return isStrict && strictRegex ? strictRegex : regex;
863              };
864    }
865
866    function getParseRegexForToken(token, config) {
867        if (!hasOwnProp(regexes, token)) {
868            return new RegExp(unescapeFormat(token));
869        }
870
871        return regexes[token](config._strict, config._locale);
872    }
873
874    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
875    function unescapeFormat(s) {
876        return regexEscape(
877            s
878                .replace('\\', '')
879                .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
880                    matched,
881                    p1,
882                    p2,
883                    p3,
884                    p4
885                ) {
886                    return p1 || p2 || p3 || p4;
887                })
888        );
889    }
890
891    function regexEscape(s) {
892        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
893    }
894
895    var tokens = {};
896
897    function addParseToken(token, callback) {
898        var i,
899            func = callback;
900        if (typeof token === 'string') {
901            token = [token];
902        }
903        if (isNumber(callback)) {
904            func = function (input, array) {
905                array[callback] = toInt(input);
906            };
907        }
908        for (i = 0; i < token.length; i++) {
909            tokens[token[i]] = func;
910        }
911    }
912
913    function addWeekParseToken(token, callback) {
914        addParseToken(token, function (input, array, config, token) {
915            config._w = config._w || {};
916            callback(input, config._w, config, token);
917        });
918    }
919
920    function addTimeToArrayFromToken(token, input, config) {
921        if (input != null && hasOwnProp(tokens, token)) {
922            tokens[token](input, config._a, config, token);
923        }
924    }
925
926    var YEAR = 0,
927        MONTH = 1,
928        DATE = 2,
929        HOUR = 3,
930        MINUTE = 4,
931        SECOND = 5,
932        MILLISECOND = 6,
933        WEEK = 7,
934        WEEKDAY = 8;
935
936    function mod(n, x) {
937        return ((n % x) + x) % x;
938    }
939
940    var indexOf;
941
942    if (Array.prototype.indexOf) {
943        indexOf = Array.prototype.indexOf;
944    } else {
945        indexOf = function (o) {
946            // I know
947            var i;
948            for (i = 0; i < this.length; ++i) {
949                if (this[i] === o) {
950                    return i;
951                }
952            }
953            return -1;
954        };
955    }
956
957    function daysInMonth(year, month) {
958        if (isNaN(year) || isNaN(month)) {
959            return NaN;
960        }
961        var modMonth = mod(month, 12);
962        year += (month - modMonth) / 12;
963        return modMonth === 1
964            ? isLeapYear(year)
965                ? 29
966                : 28
967            : 31 - ((modMonth % 7) % 2);
968    }
969
970    // FORMATTING
971
972    addFormatToken('M', ['MM', 2], 'Mo', function () {
973        return this.month() + 1;
974    });
975
976    addFormatToken('MMM', 0, 0, function (format) {
977        return this.localeData().monthsShort(this, format);
978    });
979
980    addFormatToken('MMMM', 0, 0, function (format) {
981        return this.localeData().months(this, format);
982    });
983
984    // ALIASES
985
986    addUnitAlias('month', 'M');
987
988    // PRIORITY
989
990    addUnitPriority('month', 8);
991
992    // PARSING
993
994    addRegexToken('M', match1to2);
995    addRegexToken('MM', match1to2, match2);
996    addRegexToken('MMM', function (isStrict, locale) {
997        return locale.monthsShortRegex(isStrict);
998    });
999    addRegexToken('MMMM', function (isStrict, locale) {
1000        return locale.monthsRegex(isStrict);
1001    });
1002
1003    addParseToken(['M', 'MM'], function (input, array) {
1004        array[MONTH] = toInt(input) - 1;
1005    });
1006
1007    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
1008        var month = config._locale.monthsParse(input, token, config._strict);
1009        // if we didn't find a month name, mark the date as invalid.
1010        if (month != null) {
1011            array[MONTH] = month;
1012        } else {
1013            getParsingFlags(config).invalidMonth = input;
1014        }
1015    });
1016
1017    // LOCALES
1018
1019    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
1020            '_'
1021        ),
1022        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
1023            '_'
1024        ),
1025        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
1026        defaultMonthsShortRegex = matchWord,
1027        defaultMonthsRegex = matchWord;
1028
1029    function localeMonths(m, format) {
1030        if (!m) {
1031            return isArray(this._months)
1032                ? this._months
1033                : this._months['standalone'];
1034        }
1035        return isArray(this._months)
1036            ? this._months[m.month()]
1037            : this._months[
1038                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
1039                      ? 'format'
1040                      : 'standalone'
1041              ][m.month()];
1042    }
1043
1044    function localeMonthsShort(m, format) {
1045        if (!m) {
1046            return isArray(this._monthsShort)
1047                ? this._monthsShort
1048                : this._monthsShort['standalone'];
1049        }
1050        return isArray(this._monthsShort)
1051            ? this._monthsShort[m.month()]
1052            : this._monthsShort[
1053                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
1054              ][m.month()];
1055    }
1056
1057    function handleStrictParse(monthName, format, strict) {
1058        var i,
1059            ii,
1060            mom,
1061            llc = monthName.toLocaleLowerCase();
1062        if (!this._monthsParse) {
1063            // this is not used
1064            this._monthsParse = [];
1065            this._longMonthsParse = [];
1066            this._shortMonthsParse = [];
1067            for (i = 0; i < 12; ++i) {
1068                mom = createUTC([2000, i]);
1069                this._shortMonthsParse[i] = this.monthsShort(
1070                    mom,
1071                    ''
1072                ).toLocaleLowerCase();
1073                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
1074            }
1075        }
1076
1077        if (strict) {
1078            if (format === 'MMM') {
1079                ii = indexOf.call(this._shortMonthsParse, llc);
1080                return ii !== -1 ? ii : null;
1081            } else {
1082                ii = indexOf.call(this._longMonthsParse, llc);
1083                return ii !== -1 ? ii : null;
1084            }
1085        } else {
1086            if (format === 'MMM') {
1087                ii = indexOf.call(this._shortMonthsParse, llc);
1088                if (ii !== -1) {
1089                    return ii;
1090                }
1091                ii = indexOf.call(this._longMonthsParse, llc);
1092                return ii !== -1 ? ii : null;
1093            } else {
1094                ii = indexOf.call(this._longMonthsParse, llc);
1095                if (ii !== -1) {
1096                    return ii;
1097                }
1098                ii = indexOf.call(this._shortMonthsParse, llc);
1099                return ii !== -1 ? ii : null;
1100            }
1101        }
1102    }
1103
1104    function localeMonthsParse(monthName, format, strict) {
1105        var i, mom, regex;
1106
1107        if (this._monthsParseExact) {
1108            return handleStrictParse.call(this, monthName, format, strict);
1109        }
1110
1111        if (!this._monthsParse) {
1112            this._monthsParse = [];
1113            this._longMonthsParse = [];
1114            this._shortMonthsParse = [];
1115        }
1116
1117        // TODO: add sorting
1118        // Sorting makes sure if one month (or abbr) is a prefix of another
1119        // see sorting in computeMonthsParse
1120        for (i = 0; i < 12; i++) {
1121            // make the regex if we don't have it already
1122            mom = createUTC([2000, i]);
1123            if (strict && !this._longMonthsParse[i]) {
1124                this._longMonthsParse[i] = new RegExp(
1125                    '^' + this.months(mom, '').replace('.', '') + '$',
1126                    'i'
1127                );
1128                this._shortMonthsParse[i] = new RegExp(
1129                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
1130                    'i'
1131                );
1132            }
1133            if (!strict && !this._monthsParse[i]) {
1134                regex =
1135                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1136                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1137            }
1138            // test the regex
1139            if (
1140                strict &&
1141                format === 'MMMM' &&
1142                this._longMonthsParse[i].test(monthName)
1143            ) {
1144                return i;
1145            } else if (
1146                strict &&
1147                format === 'MMM' &&
1148                this._shortMonthsParse[i].test(monthName)
1149            ) {
1150                return i;
1151            } else if (!strict && this._monthsParse[i].test(monthName)) {
1152                return i;
1153            }
1154        }
1155    }
1156
1157    // MOMENTS
1158
1159    function setMonth(mom, value) {
1160        var dayOfMonth;
1161
1162        if (!mom.isValid()) {
1163            // No op
1164            return mom;
1165        }
1166
1167        if (typeof value === 'string') {
1168            if (/^\d+$/.test(value)) {
1169                value = toInt(value);
1170            } else {
1171                value = mom.localeData().monthsParse(value);
1172                // TODO: Another silent failure?
1173                if (!isNumber(value)) {
1174                    return mom;
1175                }
1176            }
1177        }
1178
1179        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1180        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1181        return mom;
1182    }
1183
1184    function getSetMonth(value) {
1185        if (value != null) {
1186            setMonth(this, value);
1187            hooks.updateOffset(this, true);
1188            return this;
1189        } else {
1190            return get(this, 'Month');
1191        }
1192    }
1193
1194    function getDaysInMonth() {
1195        return daysInMonth(this.year(), this.month());
1196    }
1197
1198    function monthsShortRegex(isStrict) {
1199        if (this._monthsParseExact) {
1200            if (!hasOwnProp(this, '_monthsRegex')) {
1201                computeMonthsParse.call(this);
1202            }
1203            if (isStrict) {
1204                return this._monthsShortStrictRegex;
1205            } else {
1206                return this._monthsShortRegex;
1207            }
1208        } else {
1209            if (!hasOwnProp(this, '_monthsShortRegex')) {
1210                this._monthsShortRegex = defaultMonthsShortRegex;
1211            }
1212            return this._monthsShortStrictRegex && isStrict
1213                ? this._monthsShortStrictRegex
1214                : this._monthsShortRegex;
1215        }
1216    }
1217
1218    function monthsRegex(isStrict) {
1219        if (this._monthsParseExact) {
1220            if (!hasOwnProp(this, '_monthsRegex')) {
1221                computeMonthsParse.call(this);
1222            }
1223            if (isStrict) {
1224                return this._monthsStrictRegex;
1225            } else {
1226                return this._monthsRegex;
1227            }
1228        } else {
1229            if (!hasOwnProp(this, '_monthsRegex')) {
1230                this._monthsRegex = defaultMonthsRegex;
1231            }
1232            return this._monthsStrictRegex && isStrict
1233                ? this._monthsStrictRegex
1234                : this._monthsRegex;
1235        }
1236    }
1237
1238    function computeMonthsParse() {
1239        function cmpLenRev(a, b) {
1240            return b.length - a.length;
1241        }
1242
1243        var shortPieces = [],
1244            longPieces = [],
1245            mixedPieces = [],
1246            i,
1247            mom;
1248        for (i = 0; i < 12; i++) {
1249            // make the regex if we don't have it already
1250            mom = createUTC([2000, i]);
1251            shortPieces.push(this.monthsShort(mom, ''));
1252            longPieces.push(this.months(mom, ''));
1253            mixedPieces.push(this.months(mom, ''));
1254            mixedPieces.push(this.monthsShort(mom, ''));
1255        }
1256        // Sorting makes sure if one month (or abbr) is a prefix of another it
1257        // will match the longer piece.
1258        shortPieces.sort(cmpLenRev);
1259        longPieces.sort(cmpLenRev);
1260        mixedPieces.sort(cmpLenRev);
1261        for (i = 0; i < 12; i++) {
1262            shortPieces[i] = regexEscape(shortPieces[i]);
1263            longPieces[i] = regexEscape(longPieces[i]);
1264        }
1265        for (i = 0; i < 24; i++) {
1266            mixedPieces[i] = regexEscape(mixedPieces[i]);
1267        }
1268
1269        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1270        this._monthsShortRegex = this._monthsRegex;
1271        this._monthsStrictRegex = new RegExp(
1272            '^(' + longPieces.join('|') + ')',
1273            'i'
1274        );
1275        this._monthsShortStrictRegex = new RegExp(
1276            '^(' + shortPieces.join('|') + ')',
1277            'i'
1278        );
1279    }
1280
1281    // FORMATTING
1282
1283    addFormatToken('Y', 0, 0, function () {
1284        var y = this.year();
1285        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
1286    });
1287
1288    addFormatToken(0, ['YY', 2], 0, function () {
1289        return this.year() % 100;
1290    });
1291
1292    addFormatToken(0, ['YYYY', 4], 0, 'year');
1293    addFormatToken(0, ['YYYYY', 5], 0, 'year');
1294    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1295
1296    // ALIASES
1297
1298    addUnitAlias('year', 'y');
1299
1300    // PRIORITIES
1301
1302    addUnitPriority('year', 1);
1303
1304    // PARSING
1305
1306    addRegexToken('Y', matchSigned);
1307    addRegexToken('YY', match1to2, match2);
1308    addRegexToken('YYYY', match1to4, match4);
1309    addRegexToken('YYYYY', match1to6, match6);
1310    addRegexToken('YYYYYY', match1to6, match6);
1311
1312    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1313    addParseToken('YYYY', function (input, array) {
1314        array[YEAR] =
1315            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1316    });
1317    addParseToken('YY', function (input, array) {
1318        array[YEAR] = hooks.parseTwoDigitYear(input);
1319    });
1320    addParseToken('Y', function (input, array) {
1321        array[YEAR] = parseInt(input, 10);
1322    });
1323
1324    // HELPERS
1325
1326    function daysInYear(year) {
1327        return isLeapYear(year) ? 366 : 365;
1328    }
1329
1330    // HOOKS
1331
1332    hooks.parseTwoDigitYear = function (input) {
1333        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1334    };
1335
1336    // MOMENTS
1337
1338    var getSetYear = makeGetSet('FullYear', true);
1339
1340    function getIsLeapYear() {
1341        return isLeapYear(this.year());
1342    }
1343
1344    function createDate(y, m, d, h, M, s, ms) {
1345        // can't just apply() to create a date:
1346        // https://stackoverflow.com/q/181348
1347        var date;
1348        // the date constructor remaps years 0-99 to 1900-1999
1349        if (y < 100 && y >= 0) {
1350            // preserve leap years using a full 400 year cycle, then reset
1351            date = new Date(y + 400, m, d, h, M, s, ms);
1352            if (isFinite(date.getFullYear())) {
1353                date.setFullYear(y);
1354            }
1355        } else {
1356            date = new Date(y, m, d, h, M, s, ms);
1357        }
1358
1359        return date;
1360    }
1361
1362    function createUTCDate(y) {
1363        var date, args;
1364        // the Date.UTC function remaps years 0-99 to 1900-1999
1365        if (y < 100 && y >= 0) {
1366            args = Array.prototype.slice.call(arguments);
1367            // preserve leap years using a full 400 year cycle, then reset
1368            args[0] = y + 400;
1369            date = new Date(Date.UTC.apply(null, args));
1370            if (isFinite(date.getUTCFullYear())) {
1371                date.setUTCFullYear(y);
1372            }
1373        } else {
1374            date = new Date(Date.UTC.apply(null, arguments));
1375        }
1376
1377        return date;
1378    }
1379
1380    // start-of-first-week - start-of-year
1381    function firstWeekOffset(year, dow, doy) {
1382        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1383            fwd = 7 + dow - doy,
1384            // first-week day local weekday -- which local weekday is fwd
1385            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1386
1387        return -fwdlw + fwd - 1;
1388    }
1389
1390    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1391    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1392        var localWeekday = (7 + weekday - dow) % 7,
1393            weekOffset = firstWeekOffset(year, dow, doy),
1394            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1395            resYear,
1396            resDayOfYear;
1397
1398        if (dayOfYear <= 0) {
1399            resYear = year - 1;
1400            resDayOfYear = daysInYear(resYear) + dayOfYear;
1401        } else if (dayOfYear > daysInYear(year)) {
1402            resYear = year + 1;
1403            resDayOfYear = dayOfYear - daysInYear(year);
1404        } else {
1405            resYear = year;
1406            resDayOfYear = dayOfYear;
1407        }
1408
1409        return {
1410            year: resYear,
1411            dayOfYear: resDayOfYear,
1412        };
1413    }
1414
1415    function weekOfYear(mom, dow, doy) {
1416        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1417            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1418            resWeek,
1419            resYear;
1420
1421        if (week < 1) {
1422            resYear = mom.year() - 1;
1423            resWeek = week + weeksInYear(resYear, dow, doy);
1424        } else if (week > weeksInYear(mom.year(), dow, doy)) {
1425            resWeek = week - weeksInYear(mom.year(), dow, doy);
1426            resYear = mom.year() + 1;
1427        } else {
1428            resYear = mom.year();
1429            resWeek = week;
1430        }
1431
1432        return {
1433            week: resWeek,
1434            year: resYear,
1435        };
1436    }
1437
1438    function weeksInYear(year, dow, doy) {
1439        var weekOffset = firstWeekOffset(year, dow, doy),
1440            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1441        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1442    }
1443
1444    // FORMATTING
1445
1446    addFormatToken('w', ['ww', 2], 'wo', 'week');
1447    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1448
1449    // ALIASES
1450
1451    addUnitAlias('week', 'w');
1452    addUnitAlias('isoWeek', 'W');
1453
1454    // PRIORITIES
1455
1456    addUnitPriority('week', 5);
1457    addUnitPriority('isoWeek', 5);
1458
1459    // PARSING
1460
1461    addRegexToken('w', match1to2);
1462    addRegexToken('ww', match1to2, match2);
1463    addRegexToken('W', match1to2);
1464    addRegexToken('WW', match1to2, match2);
1465
1466    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
1467        input,
1468        week,
1469        config,
1470        token
1471    ) {
1472        week[token.substr(0, 1)] = toInt(input);
1473    });
1474
1475    // HELPERS
1476
1477    // LOCALES
1478
1479    function localeWeek(mom) {
1480        return weekOfYear(mom, this._week.dow, this._week.doy).week;
1481    }
1482
1483    var defaultLocaleWeek = {
1484        dow: 0, // Sunday is the first day of the week.
1485        doy: 6, // The week that contains Jan 6th is the first week of the year.
1486    };
1487
1488    function localeFirstDayOfWeek() {
1489        return this._week.dow;
1490    }
1491
1492    function localeFirstDayOfYear() {
1493        return this._week.doy;
1494    }
1495
1496    // MOMENTS
1497
1498    function getSetWeek(input) {
1499        var week = this.localeData().week(this);
1500        return input == null ? week : this.add((input - week) * 7, 'd');
1501    }
1502
1503    function getSetISOWeek(input) {
1504        var week = weekOfYear(this, 1, 4).week;
1505        return input == null ? week : this.add((input - week) * 7, 'd');
1506    }
1507
1508    // FORMATTING
1509
1510    addFormatToken('d', 0, 'do', 'day');
1511
1512    addFormatToken('dd', 0, 0, function (format) {
1513        return this.localeData().weekdaysMin(this, format);
1514    });
1515
1516    addFormatToken('ddd', 0, 0, function (format) {
1517        return this.localeData().weekdaysShort(this, format);
1518    });
1519
1520    addFormatToken('dddd', 0, 0, function (format) {
1521        return this.localeData().weekdays(this, format);
1522    });
1523
1524    addFormatToken('e', 0, 0, 'weekday');
1525    addFormatToken('E', 0, 0, 'isoWeekday');
1526
1527    // ALIASES
1528
1529    addUnitAlias('day', 'd');
1530    addUnitAlias('weekday', 'e');
1531    addUnitAlias('isoWeekday', 'E');
1532
1533    // PRIORITY
1534    addUnitPriority('day', 11);
1535    addUnitPriority('weekday', 11);
1536    addUnitPriority('isoWeekday', 11);
1537
1538    // PARSING
1539
1540    addRegexToken('d', match1to2);
1541    addRegexToken('e', match1to2);
1542    addRegexToken('E', match1to2);
1543    addRegexToken('dd', function (isStrict, locale) {
1544        return locale.weekdaysMinRegex(isStrict);
1545    });
1546    addRegexToken('ddd', function (isStrict, locale) {
1547        return locale.weekdaysShortRegex(isStrict);
1548    });
1549    addRegexToken('dddd', function (isStrict, locale) {
1550        return locale.weekdaysRegex(isStrict);
1551    });
1552
1553    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1554        var weekday = config._locale.weekdaysParse(input, token, config._strict);
1555        // if we didn't get a weekday name, mark the date as invalid
1556        if (weekday != null) {
1557            week.d = weekday;
1558        } else {
1559            getParsingFlags(config).invalidWeekday = input;
1560        }
1561    });
1562
1563    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1564        week[token] = toInt(input);
1565    });
1566
1567    // HELPERS
1568
1569    function parseWeekday(input, locale) {
1570        if (typeof input !== 'string') {
1571            return input;
1572        }
1573
1574        if (!isNaN(input)) {
1575            return parseInt(input, 10);
1576        }
1577
1578        input = locale.weekdaysParse(input);
1579        if (typeof input === 'number') {
1580            return input;
1581        }
1582
1583        return null;
1584    }
1585
1586    function parseIsoWeekday(input, locale) {
1587        if (typeof input === 'string') {
1588            return locale.weekdaysParse(input) % 7 || 7;
1589        }
1590        return isNaN(input) ? null : input;
1591    }
1592
1593    // LOCALES
1594    function shiftWeekdays(ws, n) {
1595        return ws.slice(n, 7).concat(ws.slice(0, n));
1596    }
1597
1598    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
1599            '_'
1600        ),
1601        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
1602        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
1603        defaultWeekdaysRegex = matchWord,
1604        defaultWeekdaysShortRegex = matchWord,
1605        defaultWeekdaysMinRegex = matchWord;
1606
1607    function localeWeekdays(m, format) {
1608        var weekdays = isArray(this._weekdays)
1609            ? this._weekdays
1610            : this._weekdays[
1611                  m && m !== true && this._weekdays.isFormat.test(format)
1612                      ? 'format'
1613                      : 'standalone'
1614              ];
1615        return m === true
1616            ? shiftWeekdays(weekdays, this._week.dow)
1617            : m
1618            ? weekdays[m.day()]
1619            : weekdays;
1620    }
1621
1622    function localeWeekdaysShort(m) {
1623        return m === true
1624            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
1625            : m
1626            ? this._weekdaysShort[m.day()]
1627            : this._weekdaysShort;
1628    }
1629
1630    function localeWeekdaysMin(m) {
1631        return m === true
1632            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
1633            : m
1634            ? this._weekdaysMin[m.day()]
1635            : this._weekdaysMin;
1636    }
1637
1638    function handleStrictParse$1(weekdayName, format, strict) {
1639        var i,
1640            ii,
1641            mom,
1642            llc = weekdayName.toLocaleLowerCase();
1643        if (!this._weekdaysParse) {
1644            this._weekdaysParse = [];
1645            this._shortWeekdaysParse = [];
1646            this._minWeekdaysParse = [];
1647
1648            for (i = 0; i < 7; ++i) {
1649                mom = createUTC([2000, 1]).day(i);
1650                this._minWeekdaysParse[i] = this.weekdaysMin(
1651                    mom,
1652                    ''
1653                ).toLocaleLowerCase();
1654                this._shortWeekdaysParse[i] = this.weekdaysShort(
1655                    mom,
1656                    ''
1657                ).toLocaleLowerCase();
1658                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1659            }
1660        }
1661
1662        if (strict) {
1663            if (format === 'dddd') {
1664                ii = indexOf.call(this._weekdaysParse, llc);
1665                return ii !== -1 ? ii : null;
1666            } else if (format === 'ddd') {
1667                ii = indexOf.call(this._shortWeekdaysParse, llc);
1668                return ii !== -1 ? ii : null;
1669            } else {
1670                ii = indexOf.call(this._minWeekdaysParse, llc);
1671                return ii !== -1 ? ii : null;
1672            }
1673        } else {
1674            if (format === 'dddd') {
1675                ii = indexOf.call(this._weekdaysParse, llc);
1676                if (ii !== -1) {
1677                    return ii;
1678                }
1679                ii = indexOf.call(this._shortWeekdaysParse, llc);
1680                if (ii !== -1) {
1681                    return ii;
1682                }
1683                ii = indexOf.call(this._minWeekdaysParse, llc);
1684                return ii !== -1 ? ii : null;
1685            } else if (format === 'ddd') {
1686                ii = indexOf.call(this._shortWeekdaysParse, llc);
1687                if (ii !== -1) {
1688                    return ii;
1689                }
1690                ii = indexOf.call(this._weekdaysParse, llc);
1691                if (ii !== -1) {
1692                    return ii;
1693                }
1694                ii = indexOf.call(this._minWeekdaysParse, llc);
1695                return ii !== -1 ? ii : null;
1696            } else {
1697                ii = indexOf.call(this._minWeekdaysParse, llc);
1698                if (ii !== -1) {
1699                    return ii;
1700                }
1701                ii = indexOf.call(this._weekdaysParse, llc);
1702                if (ii !== -1) {
1703                    return ii;
1704                }
1705                ii = indexOf.call(this._shortWeekdaysParse, llc);
1706                return ii !== -1 ? ii : null;
1707            }
1708        }
1709    }
1710
1711    function localeWeekdaysParse(weekdayName, format, strict) {
1712        var i, mom, regex;
1713
1714        if (this._weekdaysParseExact) {
1715            return handleStrictParse$1.call(this, weekdayName, format, strict);
1716        }
1717
1718        if (!this._weekdaysParse) {
1719            this._weekdaysParse = [];
1720            this._minWeekdaysParse = [];
1721            this._shortWeekdaysParse = [];
1722            this._fullWeekdaysParse = [];
1723        }
1724
1725        for (i = 0; i < 7; i++) {
1726            // make the regex if we don't have it already
1727
1728            mom = createUTC([2000, 1]).day(i);
1729            if (strict && !this._fullWeekdaysParse[i]) {
1730                this._fullWeekdaysParse[i] = new RegExp(
1731                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
1732                    'i'
1733                );
1734                this._shortWeekdaysParse[i] = new RegExp(
1735                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
1736                    'i'
1737                );
1738                this._minWeekdaysParse[i] = new RegExp(
1739                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
1740                    'i'
1741                );
1742            }
1743            if (!this._weekdaysParse[i]) {
1744                regex =
1745                    '^' +
1746                    this.weekdays(mom, '') +
1747                    '|^' +
1748                    this.weekdaysShort(mom, '') +
1749                    '|^' +
1750                    this.weekdaysMin(mom, '');
1751                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1752            }
1753            // test the regex
1754            if (
1755                strict &&
1756                format === 'dddd' &&
1757                this._fullWeekdaysParse[i].test(weekdayName)
1758            ) {
1759                return i;
1760            } else if (
1761                strict &&
1762                format === 'ddd' &&
1763                this._shortWeekdaysParse[i].test(weekdayName)
1764            ) {
1765                return i;
1766            } else if (
1767                strict &&
1768                format === 'dd' &&
1769                this._minWeekdaysParse[i].test(weekdayName)
1770            ) {
1771                return i;
1772            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1773                return i;
1774            }
1775        }
1776    }
1777
1778    // MOMENTS
1779
1780    function getSetDayOfWeek(input) {
1781        if (!this.isValid()) {
1782            return input != null ? this : NaN;
1783        }
1784        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1785        if (input != null) {
1786            input = parseWeekday(input, this.localeData());
1787            return this.add(input - day, 'd');
1788        } else {
1789            return day;
1790        }
1791    }
1792
1793    function getSetLocaleDayOfWeek(input) {
1794        if (!this.isValid()) {
1795            return input != null ? this : NaN;
1796        }
1797        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1798        return input == null ? weekday : this.add(input - weekday, 'd');
1799    }
1800
1801    function getSetISODayOfWeek(input) {
1802        if (!this.isValid()) {
1803            return input != null ? this : NaN;
1804        }
1805
1806        // behaves the same as moment#day except
1807        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1808        // as a setter, sunday should belong to the previous week.
1809
1810        if (input != null) {
1811            var weekday = parseIsoWeekday(input, this.localeData());
1812            return this.day(this.day() % 7 ? weekday : weekday - 7);
1813        } else {
1814            return this.day() || 7;
1815        }
1816    }
1817
1818    function weekdaysRegex(isStrict) {
1819        if (this._weekdaysParseExact) {
1820            if (!hasOwnProp(this, '_weekdaysRegex')) {
1821                computeWeekdaysParse.call(this);
1822            }
1823            if (isStrict) {
1824                return this._weekdaysStrictRegex;
1825            } else {
1826                return this._weekdaysRegex;
1827            }
1828        } else {
1829            if (!hasOwnProp(this, '_weekdaysRegex')) {
1830                this._weekdaysRegex = defaultWeekdaysRegex;
1831            }
1832            return this._weekdaysStrictRegex && isStrict
1833                ? this._weekdaysStrictRegex
1834                : this._weekdaysRegex;
1835        }
1836    }
1837
1838    function weekdaysShortRegex(isStrict) {
1839        if (this._weekdaysParseExact) {
1840            if (!hasOwnProp(this, '_weekdaysRegex')) {
1841                computeWeekdaysParse.call(this);
1842            }
1843            if (isStrict) {
1844                return this._weekdaysShortStrictRegex;
1845            } else {
1846                return this._weekdaysShortRegex;
1847            }
1848        } else {
1849            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1850                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1851            }
1852            return this._weekdaysShortStrictRegex && isStrict
1853                ? this._weekdaysShortStrictRegex
1854                : this._weekdaysShortRegex;
1855        }
1856    }
1857
1858    function weekdaysMinRegex(isStrict) {
1859        if (this._weekdaysParseExact) {
1860            if (!hasOwnProp(this, '_weekdaysRegex')) {
1861                computeWeekdaysParse.call(this);
1862            }
1863            if (isStrict) {
1864                return this._weekdaysMinStrictRegex;
1865            } else {
1866                return this._weekdaysMinRegex;
1867            }
1868        } else {
1869            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1870                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1871            }
1872            return this._weekdaysMinStrictRegex && isStrict
1873                ? this._weekdaysMinStrictRegex
1874                : this._weekdaysMinRegex;
1875        }
1876    }
1877
1878    function computeWeekdaysParse() {
1879        function cmpLenRev(a, b) {
1880            return b.length - a.length;
1881        }
1882
1883        var minPieces = [],
1884            shortPieces = [],
1885            longPieces = [],
1886            mixedPieces = [],
1887            i,
1888            mom,
1889            minp,
1890            shortp,
1891            longp;
1892        for (i = 0; i < 7; i++) {
1893            // make the regex if we don't have it already
1894            mom = createUTC([2000, 1]).day(i);
1895            minp = regexEscape(this.weekdaysMin(mom, ''));
1896            shortp = regexEscape(this.weekdaysShort(mom, ''));
1897            longp = regexEscape(this.weekdays(mom, ''));
1898            minPieces.push(minp);
1899            shortPieces.push(shortp);
1900            longPieces.push(longp);
1901            mixedPieces.push(minp);
1902            mixedPieces.push(shortp);
1903            mixedPieces.push(longp);
1904        }
1905        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1906        // will match the longer piece.
1907        minPieces.sort(cmpLenRev);
1908        shortPieces.sort(cmpLenRev);
1909        longPieces.sort(cmpLenRev);
1910        mixedPieces.sort(cmpLenRev);
1911
1912        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1913        this._weekdaysShortRegex = this._weekdaysRegex;
1914        this._weekdaysMinRegex = this._weekdaysRegex;
1915
1916        this._weekdaysStrictRegex = new RegExp(
1917            '^(' + longPieces.join('|') + ')',
1918            'i'
1919        );
1920        this._weekdaysShortStrictRegex = new RegExp(
1921            '^(' + shortPieces.join('|') + ')',
1922            'i'
1923        );
1924        this._weekdaysMinStrictRegex = new RegExp(
1925            '^(' + minPieces.join('|') + ')',
1926            'i'
1927        );
1928    }
1929
1930    // FORMATTING
1931
1932    function hFormat() {
1933        return this.hours() % 12 || 12;
1934    }
1935
1936    function kFormat() {
1937        return this.hours() || 24;
1938    }
1939
1940    addFormatToken('H', ['HH', 2], 0, 'hour');
1941    addFormatToken('h', ['hh', 2], 0, hFormat);
1942    addFormatToken('k', ['kk', 2], 0, kFormat);
1943
1944    addFormatToken('hmm', 0, 0, function () {
1945        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1946    });
1947
1948    addFormatToken('hmmss', 0, 0, function () {
1949        return (
1950            '' +
1951            hFormat.apply(this) +
1952            zeroFill(this.minutes(), 2) +
1953            zeroFill(this.seconds(), 2)
1954        );
1955    });
1956
1957    addFormatToken('Hmm', 0, 0, function () {
1958        return '' + this.hours() + zeroFill(this.minutes(), 2);
1959    });
1960
1961    addFormatToken('Hmmss', 0, 0, function () {
1962        return (
1963            '' +
1964            this.hours() +
1965            zeroFill(this.minutes(), 2) +
1966            zeroFill(this.seconds(), 2)
1967        );
1968    });
1969
1970    function meridiem(token, lowercase) {
1971        addFormatToken(token, 0, 0, function () {
1972            return this.localeData().meridiem(
1973                this.hours(),
1974                this.minutes(),
1975                lowercase
1976            );
1977        });
1978    }
1979
1980    meridiem('a', true);
1981    meridiem('A', false);
1982
1983    // ALIASES
1984
1985    addUnitAlias('hour', 'h');
1986
1987    // PRIORITY
1988    addUnitPriority('hour', 13);
1989
1990    // PARSING
1991
1992    function matchMeridiem(isStrict, locale) {
1993        return locale._meridiemParse;
1994    }
1995
1996    addRegexToken('a', matchMeridiem);
1997    addRegexToken('A', matchMeridiem);
1998    addRegexToken('H', match1to2);
1999    addRegexToken('h', match1to2);
2000    addRegexToken('k', match1to2);
2001    addRegexToken('HH', match1to2, match2);
2002    addRegexToken('hh', match1to2, match2);
2003    addRegexToken('kk', match1to2, match2);
2004
2005    addRegexToken('hmm', match3to4);
2006    addRegexToken('hmmss', match5to6);
2007    addRegexToken('Hmm', match3to4);
2008    addRegexToken('Hmmss', match5to6);
2009
2010    addParseToken(['H', 'HH'], HOUR);
2011    addParseToken(['k', 'kk'], function (input, array, config) {
2012        var kInput = toInt(input);
2013        array[HOUR] = kInput === 24 ? 0 : kInput;
2014    });
2015    addParseToken(['a', 'A'], function (input, array, config) {
2016        config._isPm = config._locale.isPM(input);
2017        config._meridiem = input;
2018    });
2019    addParseToken(['h', 'hh'], function (input, array, config) {
2020        array[HOUR] = toInt(input);
2021        getParsingFlags(config).bigHour = true;
2022    });
2023    addParseToken('hmm', function (input, array, config) {
2024        var pos = input.length - 2;
2025        array[HOUR] = toInt(input.substr(0, pos));
2026        array[MINUTE] = toInt(input.substr(pos));
2027        getParsingFlags(config).bigHour = true;
2028    });
2029    addParseToken('hmmss', function (input, array, config) {
2030        var pos1 = input.length - 4,
2031            pos2 = input.length - 2;
2032        array[HOUR] = toInt(input.substr(0, pos1));
2033        array[MINUTE] = toInt(input.substr(pos1, 2));
2034        array[SECOND] = toInt(input.substr(pos2));
2035        getParsingFlags(config).bigHour = true;
2036    });
2037    addParseToken('Hmm', function (input, array, config) {
2038        var pos = input.length - 2;
2039        array[HOUR] = toInt(input.substr(0, pos));
2040        array[MINUTE] = toInt(input.substr(pos));
2041    });
2042    addParseToken('Hmmss', function (input, array, config) {
2043        var pos1 = input.length - 4,
2044            pos2 = input.length - 2;
2045        array[HOUR] = toInt(input.substr(0, pos1));
2046        array[MINUTE] = toInt(input.substr(pos1, 2));
2047        array[SECOND] = toInt(input.substr(pos2));
2048    });
2049
2050    // LOCALES
2051
2052    function localeIsPM(input) {
2053        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
2054        // Using charAt should be more compatible.
2055        return (input + '').toLowerCase().charAt(0) === 'p';
2056    }
2057
2058    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
2059        // Setting the hour should keep the time, because the user explicitly
2060        // specified which hour they want. So trying to maintain the same hour (in
2061        // a new timezone) makes sense. Adding/subtracting hours does not follow
2062        // this rule.
2063        getSetHour = makeGetSet('Hours', true);
2064
2065    function localeMeridiem(hours, minutes, isLower) {
2066        if (hours > 11) {
2067            return isLower ? 'pm' : 'PM';
2068        } else {
2069            return isLower ? 'am' : 'AM';
2070        }
2071    }
2072
2073    var baseConfig = {
2074        calendar: defaultCalendar,
2075        longDateFormat: defaultLongDateFormat,
2076        invalidDate: defaultInvalidDate,
2077        ordinal: defaultOrdinal,
2078        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
2079        relativeTime: defaultRelativeTime,
2080
2081        months: defaultLocaleMonths,
2082        monthsShort: defaultLocaleMonthsShort,
2083
2084        week: defaultLocaleWeek,
2085
2086        weekdays: defaultLocaleWeekdays,
2087        weekdaysMin: defaultLocaleWeekdaysMin,
2088        weekdaysShort: defaultLocaleWeekdaysShort,
2089
2090        meridiemParse: defaultLocaleMeridiemParse,
2091    };
2092
2093    // internal storage for locale config files
2094    var locales = {},
2095        localeFamilies = {},
2096        globalLocale;
2097
2098    function commonPrefix(arr1, arr2) {
2099        var i,
2100            minl = Math.min(arr1.length, arr2.length);
2101        for (i = 0; i < minl; i += 1) {
2102            if (arr1[i] !== arr2[i]) {
2103                return i;
2104            }
2105        }
2106        return minl;
2107    }
2108
2109    function normalizeLocale(key) {
2110        return key ? key.toLowerCase().replace('_', '-') : key;
2111    }
2112
2113    // pick the locale from the array
2114    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
2115    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
2116    function chooseLocale(names) {
2117        var i = 0,
2118            j,
2119            next,
2120            locale,
2121            split;
2122
2123        while (i < names.length) {
2124            split = normalizeLocale(names[i]).split('-');
2125            j = split.length;
2126            next = normalizeLocale(names[i + 1]);
2127            next = next ? next.split('-') : null;
2128            while (j > 0) {
2129                locale = loadLocale(split.slice(0, j).join('-'));
2130                if (locale) {
2131                    return locale;
2132                }
2133                if (
2134                    next &&
2135                    next.length >= j &&
2136                    commonPrefix(split, next) >= j - 1
2137                ) {
2138                    //the next array item is better than a shallower substring of this one
2139                    break;
2140                }
2141                j--;
2142            }
2143            i++;
2144        }
2145        return globalLocale;
2146    }
2147
2148    function loadLocale(name) {
2149        var oldLocale = null,
2150            aliasedRequire;
2151        // TODO: Find a better way to register and load all the locales in Node
2152        if (
2153            locales[name] === undefined &&
2154            typeof module !== 'undefined' &&
2155            module &&
2156            module.exports
2157        ) {
2158            try {
2159                oldLocale = globalLocale._abbr;
2160                aliasedRequire = require;
2161                
2161__webpack_require__(153)("./"
vendor: 15,527 bytes, lines 2161-2612
2161 + name);
2162                getSetGlobalLocale(oldLocale);
2163            } catch (e) {
2164                // mark as not found to avoid repeating expensive file require call causing high CPU
2165                // when trying to find en-US, en_US, en-us for every format call
2166                locales[name] = null; // null means not found
2167            }
2168        }
2169        return locales[name];
2170    }
2171
2172    // This function will load locale and then set the global locale.  If
2173    // no arguments are passed in, it will simply return the current global
2174    // locale key.
2175    function getSetGlobalLocale(key, values) {
2176        var data;
2177        if (key) {
2178            if (isUndefined(values)) {
2179                data = getLocale(key);
2180            } else {
2181                data = defineLocale(key, values);
2182            }
2183
2184            if (data) {
2185                // moment.duration._locale = moment._locale = data;
2186                globalLocale = data;
2187            } else {
2188                if (typeof console !== 'undefined' && console.warn) {
2189                    //warn user if arguments are passed but the locale could not be set
2190                    console.warn(
2191                        'Locale ' + key + ' not found. Did you forget to load it?'
2192                    );
2193                }
2194            }
2195        }
2196
2197        return globalLocale._abbr;
2198    }
2199
2200    function defineLocale(name, config) {
2201        if (config !== null) {
2202            var locale,
2203                parentConfig = baseConfig;
2204            config.abbr = name;
2205            if (locales[name] != null) {
2206                deprecateSimple(
2207                    'defineLocaleOverride',
2208                    'use moment.updateLocale(localeName, config) to change ' +
2209                        'an existing locale. moment.defineLocale(localeName, ' +
2210                        'config) should only be used for creating a new locale ' +
2211                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
2212                );
2213                parentConfig = locales[name]._config;
2214            } else if (config.parentLocale != null) {
2215                if (locales[config.parentLocale] != null) {
2216                    parentConfig = locales[config.parentLocale]._config;
2217                } else {
2218                    locale = loadLocale(config.parentLocale);
2219                    if (locale != null) {
2220                        parentConfig = locale._config;
2221                    } else {
2222                        if (!localeFamilies[config.parentLocale]) {
2223                            localeFamilies[config.parentLocale] = [];
2224                        }
2225                        localeFamilies[config.parentLocale].push({
2226                            name: name,
2227                            config: config,
2228                        });
2229                        return null;
2230                    }
2231                }
2232            }
2233            locales[name] = new Locale(mergeConfigs(parentConfig, config));
2234
2235            if (localeFamilies[name]) {
2236                localeFamilies[name].forEach(function (x) {
2237                    defineLocale(x.name, x.config);
2238                });
2239            }
2240
2241            // backwards compat for now: also set the locale
2242            // make sure we set the locale AFTER all child locales have been
2243            // created, so we won't end up with the child locale set.
2244            getSetGlobalLocale(name);
2245
2246            return locales[name];
2247        } else {
2248            // useful for testing
2249            delete locales[name];
2250            return null;
2251        }
2252    }
2253
2254    function updateLocale(name, config) {
2255        if (config != null) {
2256            var locale,
2257                tmpLocale,
2258                parentConfig = baseConfig;
2259
2260            if (locales[name] != null && locales[name].parentLocale != null) {
2261                // Update existing child locale in-place to avoid memory-leaks
2262                locales[name].set(mergeConfigs(locales[name]._config, config));
2263            } else {
2264                // MERGE
2265                tmpLocale = loadLocale(name);
2266                if (tmpLocale != null) {
2267                    parentConfig = tmpLocale._config;
2268                }
2269                config = mergeConfigs(parentConfig, config);
2270                if (tmpLocale == null) {
2271                    // updateLocale is called for creating a new locale
2272                    // Set abbr so it will have a name (getters return
2273                    // undefined otherwise).
2274                    config.abbr = name;
2275                }
2276                locale = new Locale(config);
2277                locale.parentLocale = locales[name];
2278                locales[name] = locale;
2279            }
2280
2281            // backwards compat for now: also set the locale
2282            getSetGlobalLocale(name);
2283        } else {
2284            // pass null for config to unupdate, useful for tests
2285            if (locales[name] != null) {
2286                if (locales[name].parentLocale != null) {
2287                    locales[name] = locales[name].parentLocale;
2288                    if (name === getSetGlobalLocale()) {
2289                        getSetGlobalLocale(name);
2290                    }
2291                } else if (locales[name] != null) {
2292                    delete locales[name];
2293                }
2294            }
2295        }
2296        return locales[name];
2297    }
2298
2299    // returns locale data
2300    function getLocale(key) {
2301        var locale;
2302
2303        if (key && key._locale && key._locale._abbr) {
2304            key = key._locale._abbr;
2305        }
2306
2307        if (!key) {
2308            return globalLocale;
2309        }
2310
2311        if (!isArray(key)) {
2312            //short-circuit everything else
2313            locale = loadLocale(key);
2314            if (locale) {
2315                return locale;
2316            }
2317            key = [key];
2318        }
2319
2320        return chooseLocale(key);
2321    }
2322
2323    function listLocales() {
2324        return keys(locales);
2325    }
2326
2327    function checkOverflow(m) {
2328        var overflow,
2329            a = m._a;
2330
2331        if (a && getParsingFlags(m).overflow === -2) {
2332            overflow =
2333                a[MONTH] < 0 || a[MONTH] > 11
2334                    ? MONTH
2335                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
2336                    ? DATE
2337                    : a[HOUR] < 0 ||
2338                      a[HOUR] > 24 ||
2339                      (a[HOUR] === 24 &&
2340                          (a[MINUTE] !== 0 ||
2341                              a[SECOND] !== 0 ||
2342                              a[MILLISECOND] !== 0))
2343                    ? HOUR
2344                    : a[MINUTE] < 0 || a[MINUTE] > 59
2345                    ? MINUTE
2346                    : a[SECOND] < 0 || a[SECOND] > 59
2347                    ? SECOND
2348                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
2349                    ? MILLISECOND
2350                    : -1;
2351
2352            if (
2353                getParsingFlags(m)._overflowDayOfYear &&
2354                (overflow < YEAR || overflow > DATE)
2355            ) {
2356                overflow = DATE;
2357            }
2358            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
2359                overflow = WEEK;
2360            }
2361            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
2362                overflow = WEEKDAY;
2363            }
2364
2365            getParsingFlags(m).overflow = overflow;
2366        }
2367
2368        return m;
2369    }
2370
2371    // iso 8601 regex
2372    // 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)
2373    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2374        basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2375        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
2376        isoDates = [
2377            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2378            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2379            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2380            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2381            ['YYYY-DDD', /\d{4}-\d{3}/],
2382            ['YYYY-MM', /\d{4}-\d\d/, false],
2383            ['YYYYYYMMDD', /[+-]\d{10}/],
2384            ['YYYYMMDD', /\d{8}/],
2385            ['GGGG[W]WWE', /\d{4}W\d{3}/],
2386            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2387            ['YYYYDDD', /\d{7}/],
2388            ['YYYYMM', /\d{6}/, false],
2389            ['YYYY', /\d{4}/, false],
2390        ],
2391        // iso time formats and regexes
2392        isoTimes = [
2393            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2394            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2395            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2396            ['HH:mm', /\d\d:\d\d/],
2397            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2398            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2399            ['HHmmss', /\d\d\d\d\d\d/],
2400            ['HHmm', /\d\d\d\d/],
2401            ['HH', /\d\d/],
2402        ],
2403        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
2404        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2405        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
2406        obsOffsets = {
2407            UT: 0,
2408            GMT: 0,
2409            EDT: -4 * 60,
2410            EST: -5 * 60,
2411            CDT: -5 * 60,
2412            CST: -6 * 60,
2413            MDT: -6 * 60,
2414            MST: -7 * 60,
2415            PDT: -7 * 60,
2416            PST: -8 * 60,
2417        };
2418
2419    // date from iso format
2420    function configFromISO(config) {
2421        var i,
2422            l,
2423            string = config._i,
2424            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2425            allowTime,
2426            dateFormat,
2427            timeFormat,
2428            tzFormat;
2429
2430        if (match) {
2431            getParsingFlags(config).iso = true;
2432
2433            for (i = 0, l = isoDates.length; i < l; i++) {
2434                if (isoDates[i][1].exec(match[1])) {
2435                    dateFormat = isoDates[i][0];
2436                    allowTime = isoDates[i][2] !== false;
2437                    break;
2438                }
2439            }
2440            if (dateFormat == null) {
2441                config._isValid = false;
2442                return;
2443            }
2444            if (match[3]) {
2445                for (i = 0, l = isoTimes.length; i < l; i++) {
2446                    if (isoTimes[i][1].exec(match[3])) {
2447                        // match[2] should be 'T' or space
2448                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
2449                        break;
2450                    }
2451                }
2452                if (timeFormat == null) {
2453                    config._isValid = false;
2454                    return;
2455                }
2456            }
2457            if (!allowTime && timeFormat != null) {
2458                config._isValid = false;
2459                return;
2460            }
2461            if (match[4]) {
2462                if (tzRegex.exec(match[4])) {
2463                    tzFormat = 'Z';
2464                } else {
2465                    config._isValid = false;
2466                    return;
2467                }
2468            }
2469            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2470            configFromStringAndFormat(config);
2471        } else {
2472            config._isValid = false;
2473        }
2474    }
2475
2476    function extractFromRFC2822Strings(
2477        yearStr,
2478        monthStr,
2479        dayStr,
2480        hourStr,
2481        minuteStr,
2482        secondStr
2483    ) {
2484        var result = [
2485            untruncateYear(yearStr),
2486            defaultLocaleMonthsShort.indexOf(monthStr),
2487            parseInt(dayStr, 10),
2488            parseInt(hourStr, 10),
2489            parseInt(minuteStr, 10),
2490        ];
2491
2492        if (secondStr) {
2493            result.push(parseInt(secondStr, 10));
2494        }
2495
2496        return result;
2497    }
2498
2499    function untruncateYear(yearStr) {
2500        var year = parseInt(yearStr, 10);
2501        if (year <= 49) {
2502            return 2000 + year;
2503        } else if (year <= 999) {
2504            return 1900 + year;
2505        }
2506        return year;
2507    }
2508
2509    function preprocessRFC2822(s) {
2510        // Remove comments and folding whitespace and replace multiple-spaces with a single space
2511        return s
2512            .replace(/\([^)]*\)|[\n\t]/g, ' ')
2513            .replace(/(\s\s+)/g, ' ')
2514            .replace(/^\s\s*/, '')
2515            .replace(/\s\s*$/, '');
2516    }
2517
2518    function checkWeekday(weekdayStr, parsedInput, config) {
2519        if (weekdayStr) {
2520            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
2521            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2522                weekdayActual = new Date(
2523                    parsedInput[0],
2524                    parsedInput[1],
2525                    parsedInput[2]
2526                ).getDay();
2527            if (weekdayProvided !== weekdayActual) {
2528                getParsingFlags(config).weekdayMismatch = true;
2529                config._isValid = false;
2530                return false;
2531            }
2532        }
2533        return true;
2534    }
2535
2536    function calculateOffset(obsOffset, militaryOffset, numOffset) {
2537        if (obsOffset) {
2538            return obsOffsets[obsOffset];
2539        } else if (militaryOffset) {
2540            // the only allowed military tz is Z
2541            return 0;
2542        } else {
2543            var hm = parseInt(numOffset, 10),
2544                m = hm % 100,
2545                h = (hm - m) / 100;
2546            return h * 60 + m;
2547        }
2548    }
2549
2550    // date and time from ref 2822 format
2551    function configFromRFC2822(config) {
2552        var match = rfc2822.exec(preprocessRFC2822(config._i)),
2553            parsedArray;
2554        if (match) {
2555            parsedArray = extractFromRFC2822Strings(
2556                match[4],
2557                match[3],
2558                match[2],
2559                match[5],
2560                match[6],
2561                match[7]
2562            );
2563            if (!checkWeekday(match[1], parsedArray, config)) {
2564                return;
2565            }
2566
2567            config._a = parsedArray;
2568            config._tzm = calculateOffset(match[8], match[9], match[10]);
2569
2570            config._d = createUTCDate.apply(null, config._a);
2571            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2572
2573            getParsingFlags(config).rfc2822 = true;
2574        } else {
2575            config._isValid = false;
2576        }
2577    }
2578
2579    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
2580    function configFromString(config) {
2581        var matched = aspNetJsonRegex.exec(config._i);
2582        if (matched !== null) {
2583            config._d = new Date(+matched[1]);
2584            return;
2585        }
2586
2587        configFromISO(config);
2588        if (config._isValid === false) {
2589            delete config._isValid;
2590        } else {
2591            return;
2592        }
2593
2594        configFromRFC2822(config);
2595        if (config._isValid === false) {
2596            delete config._isValid;
2597        } else {
2598            return;
2599        }
2600
2601        if (config._strict) {
2602            config._isValid = false;
2603        } else {
2604            // Final attempt, use Input Fallback
2605            hooks.createFromInputFallback(config);
2606        }
2607    }
2608
2609    hooks.createFromInputFallback = deprecate(
2610        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2611            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2612            'discouraged
2612. Please refer to 
vendor: 37,148 bytes, lines 2612-3797
2612http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2613        function (config) {
2614            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2615        }
2616    );
2617
2618    // Pick the first defined of two or three arguments.
2619    function defaults(a, b, c) {
2620        if (a != null) {
2621            return a;
2622        }
2623        if (b != null) {
2624            return b;
2625        }
2626        return c;
2627    }
2628
2629    function currentDateArray(config) {
2630        // hooks is actually the exported moment object
2631        var nowValue = new Date(hooks.now());
2632        if (config._useUTC) {
2633            return [
2634                nowValue.getUTCFullYear(),
2635                nowValue.getUTCMonth(),
2636                nowValue.getUTCDate(),
2637            ];
2638        }
2639        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2640    }
2641
2642    // convert an array to a date.
2643    // the array should mirror the parameters below
2644    // note: all values past the year are optional and will default to the lowest possible value.
2645    // [year, month, day , hour, minute, second, millisecond]
2646    function configFromArray(config) {
2647        var i,
2648            date,
2649            input = [],
2650            currentDate,
2651            expectedWeekday,
2652            yearToUse;
2653
2654        if (config._d) {
2655            return;
2656        }
2657
2658        currentDate = currentDateArray(config);
2659
2660        //compute day of the year from weeks and weekdays
2661        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2662            dayOfYearFromWeekInfo(config);
2663        }
2664
2665        //if the day of the year is set, figure out what it is
2666        if (config._dayOfYear != null) {
2667            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2668
2669            if (
2670                config._dayOfYear > daysInYear(yearToUse) ||
2671                config._dayOfYear === 0
2672            ) {
2673                getParsingFlags(config)._overflowDayOfYear = true;
2674            }
2675
2676            date = createUTCDate(yearToUse, 0, config._dayOfYear);
2677            config._a[MONTH] = date.getUTCMonth();
2678            config._a[DATE] = date.getUTCDate();
2679        }
2680
2681        // Default to current date.
2682        // * if no year, month, day of month are given, default to today
2683        // * if day of month is given, default month and year
2684        // * if month is given, default only year
2685        // * if year is given, don't default anything
2686        for (i = 0; i < 3 && config._a[i] == null; ++i) {
2687            config._a[i] = input[i] = currentDate[i];
2688        }
2689
2690        // Zero out whatever was not defaulted, including time
2691        for (; i < 7; i++) {
2692            config._a[i] = input[i] =
2693                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
2694        }
2695
2696        // Check for 24:00:00.000
2697        if (
2698            config._a[HOUR] === 24 &&
2699            config._a[MINUTE] === 0 &&
2700            config._a[SECOND] === 0 &&
2701            config._a[MILLISECOND] === 0
2702        ) {
2703            config._nextDay = true;
2704            config._a[HOUR] = 0;
2705        }
2706
2707        config._d = (config._useUTC ? createUTCDate : createDate).apply(
2708            null,
2709            input
2710        );
2711        expectedWeekday = config._useUTC
2712            ? config._d.getUTCDay()
2713            : config._d.getDay();
2714
2715        // Apply timezone offset from input. The actual utcOffset can be changed
2716        // with parseZone.
2717        if (config._tzm != null) {
2718            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2719        }
2720
2721        if (config._nextDay) {
2722            config._a[HOUR] = 24;
2723        }
2724
2725        // check for mismatching day of week
2726        if (
2727            config._w &&
2728            typeof config._w.d !== 'undefined' &&
2729            config._w.d !== expectedWeekday
2730        ) {
2731            getParsingFlags(config).weekdayMismatch = true;
2732        }
2733    }
2734
2735    function dayOfYearFromWeekInfo(config) {
2736        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
2737
2738        w = config._w;
2739        if (w.GG != null || w.W != null || w.E != null) {
2740            dow = 1;
2741            doy = 4;
2742
2743            // TODO: We need to take the current isoWeekYear, but that depends on
2744            // how we interpret now (local, utc, fixed offset). So create
2745            // a now version of current config (take local/utc/offset flags, and
2746            // create now).
2747            weekYear = defaults(
2748                w.GG,
2749                config._a[YEAR],
2750                weekOfYear(createLocal(), 1, 4).year
2751            );
2752            week = defaults(w.W, 1);
2753            weekday = defaults(w.E, 1);
2754            if (weekday < 1 || weekday > 7) {
2755                weekdayOverflow = true;
2756            }
2757        } else {
2758            dow = config._locale._week.dow;
2759            doy = config._locale._week.doy;
2760
2761            curWeek = weekOfYear(createLocal(), dow, doy);
2762
2763            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2764
2765            // Default to current week.
2766            week = defaults(w.w, curWeek.week);
2767
2768            if (w.d != null) {
2769                // weekday -- low day numbers are considered next week
2770                weekday = w.d;
2771                if (weekday < 0 || weekday > 6) {
2772                    weekdayOverflow = true;
2773                }
2774            } else if (w.e != null) {
2775                // local weekday -- counting starts from beginning of week
2776                weekday = w.e + dow;
2777                if (w.e < 0 || w.e > 6) {
2778                    weekdayOverflow = true;
2779                }
2780            } else {
2781                // default to beginning of week
2782                weekday = dow;
2783            }
2784        }
2785        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2786            getParsingFlags(config)._overflowWeeks = true;
2787        } else if (weekdayOverflow != null) {
2788            getParsingFlags(config)._overflowWeekday = true;
2789        } else {
2790            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2791            config._a[YEAR] = temp.year;
2792            config._dayOfYear = temp.dayOfYear;
2793        }
2794    }
2795
2796    // constant that refers to the ISO standard
2797    hooks.ISO_8601 = function () {};
2798
2799    // constant that refers to the RFC 2822 form
2800    hooks.RFC_2822 = function () {};
2801
2802    // date from string and format string
2803    function configFromStringAndFormat(config) {
2804        // TODO: Move this to another part of the creation flow to prevent circular deps
2805        if (config._f === hooks.ISO_8601) {
2806            configFromISO(config);
2807            return;
2808        }
2809        if (config._f === hooks.RFC_2822) {
2810            configFromRFC2822(config);
2811            return;
2812        }
2813        config._a = [];
2814        getParsingFlags(config).empty = true;
2815
2816        // This array is used to make a Date, either with `new Date` or `Date.UTC`
2817        var string = '' + config._i,
2818            i,
2819            parsedInput,
2820            tokens,
2821            token,
2822            skipped,
2823            stringLength = string.length,
2824            totalParsedInputLength = 0,
2825            era;
2826
2827        tokens =
2828            expandFormat(config._f, config._locale).match(formattingTokens) || [];
2829
2830        for (i = 0; i < tokens.length; i++) {
2831            token = tokens[i];
2832            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
2833                [])[0];
2834            if (parsedInput) {
2835                skipped = string.substr(0, string.indexOf(parsedInput));
2836                if (skipped.length > 0) {
2837                    getParsingFlags(config).unusedInput.push(skipped);
2838                }
2839                string = string.slice(
2840                    string.indexOf(parsedInput) + parsedInput.length
2841                );
2842                totalParsedInputLength += parsedInput.length;
2843            }
2844            // don't parse if it's not a known token
2845            if (formatTokenFunctions[token]) {
2846                if (parsedInput) {
2847                    getParsingFlags(config).empty = false;
2848                } else {
2849                    getParsingFlags(config).unusedTokens.push(token);
2850                }
2851                addTimeToArrayFromToken(token, parsedInput, config);
2852            } else if (config._strict && !parsedInput) {
2853                getParsingFlags(config).unusedTokens.push(token);
2854            }
2855        }
2856
2857        // add remaining unparsed input length to the string
2858        getParsingFlags(config).charsLeftOver =
2859            stringLength - totalParsedInputLength;
2860        if (string.length > 0) {
2861            getParsingFlags(config).unusedInput.push(string);
2862        }
2863
2864        // clear _12h flag if hour is <= 12
2865        if (
2866            config._a[HOUR] <= 12 &&
2867            getParsingFlags(config).bigHour === true &&
2868            config._a[HOUR] > 0
2869        ) {
2870            getParsingFlags(config).bigHour = undefined;
2871        }
2872
2873        getParsingFlags(config).parsedDateParts = config._a.slice(0);
2874        getParsingFlags(config).meridiem = config._meridiem;
2875        // handle meridiem
2876        config._a[HOUR] = meridiemFixWrap(
2877            config._locale,
2878            config._a[HOUR],
2879            config._meridiem
2880        );
2881
2882        // handle era
2883        era = getParsingFlags(config).era;
2884        if (era !== null) {
2885            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
2886        }
2887
2888        configFromArray(config);
2889        checkOverflow(config);
2890    }
2891
2892    function meridiemFixWrap(locale, hour, meridiem) {
2893        var isPm;
2894
2895        if (meridiem == null) {
2896            // nothing to do
2897            return hour;
2898        }
2899        if (locale.meridiemHour != null) {
2900            return locale.meridiemHour(hour, meridiem);
2901        } else if (locale.isPM != null) {
2902            // Fallback
2903            isPm = locale.isPM(meridiem);
2904            if (isPm && hour < 12) {
2905                hour += 12;
2906            }
2907            if (!isPm && hour === 12) {
2908                hour = 0;
2909            }
2910            return hour;
2911        } else {
2912            // this is not supposed to happen
2913            return hour;
2914        }
2915    }
2916
2917    // date from string and array of format strings
2918    function configFromStringAndArray(config) {
2919        var tempConfig,
2920            bestMoment,
2921            scoreToBeat,
2922            i,
2923            currentScore,
2924            validFormatFound,
2925            bestFormatIsValid = false;
2926
2927        if (config._f.length === 0) {
2928            getParsingFlags(config).invalidFormat = true;
2929            config._d = new Date(NaN);
2930            return;
2931        }
2932
2933        for (i = 0; i < config._f.length; i++) {
2934            currentScore = 0;
2935            validFormatFound = false;
2936            tempConfig = copyConfig({}, config);
2937            if (config._useUTC != null) {
2938                tempConfig._useUTC = config._useUTC;
2939            }
2940            tempConfig._f = config._f[i];
2941            configFromStringAndFormat(tempConfig);
2942
2943            if (isValid(tempConfig)) {
2944                validFormatFound = true;
2945            }
2946
2947            // if there is any input that was not parsed add a penalty for that format
2948            currentScore += getParsingFlags(tempConfig).charsLeftOver;
2949
2950            //or tokens
2951            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2952
2953            getParsingFlags(tempConfig).score = currentScore;
2954
2955            if (!bestFormatIsValid) {
2956                if (
2957                    scoreToBeat == null ||
2958                    currentScore < scoreToBeat ||
2959                    validFormatFound
2960                ) {
2961                    scoreToBeat = currentScore;
2962                    bestMoment = tempConfig;
2963                    if (validFormatFound) {
2964                        bestFormatIsValid = true;
2965                    }
2966                }
2967            } else {
2968                if (currentScore < scoreToBeat) {
2969                    scoreToBeat = currentScore;
2970                    bestMoment = tempConfig;
2971                }
2972            }
2973        }
2974
2975        extend(config, bestMoment || tempConfig);
2976    }
2977
2978    function configFromObject(config) {
2979        if (config._d) {
2980            return;
2981        }
2982
2983        var i = normalizeObjectUnits(config._i),
2984            dayOrDate = i.day === undefined ? i.date : i.day;
2985        config._a = map(
2986            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
2987            function (obj) {
2988                return obj && parseInt(obj, 10);
2989            }
2990        );
2991
2992        configFromArray(config);
2993    }
2994
2995    function createFromConfig(config) {
2996        var res = new Moment(checkOverflow(prepareConfig(config)));
2997        if (res._nextDay) {
2998            // Adding is smart enough around DST
2999            res.add(1, 'd');
3000            res._nextDay = undefined;
3001        }
3002
3003        return res;
3004    }
3005
3006    function prepareConfig(config) {
3007        var input = config._i,
3008            format = config._f;
3009
3010        config._locale = config._locale || getLocale(config._l);
3011
3012        if (input === null || (format === undefined && input === '')) {
3013            return createInvalid({ nullInput: true });
3014        }
3015
3016        if (typeof input === 'string') {
3017            config._i = input = config._locale.preparse(input);
3018        }
3019
3020        if (isMoment(input)) {
3021            return new Moment(checkOverflow(input));
3022        } else if (isDate(input)) {
3023            config._d = input;
3024        } else if (isArray(format)) {
3025            configFromStringAndArray(config);
3026        } else if (format) {
3027            configFromStringAndFormat(config);
3028        } else {
3029            configFromInput(config);
3030        }
3031
3032        if (!isValid(config)) {
3033            config._d = null;
3034        }
3035
3036        return config;
3037    }
3038
3039    function configFromInput(config) {
3040        var input = config._i;
3041        if (isUndefined(input)) {
3042            config._d = new Date(hooks.now());
3043        } else if (isDate(input)) {
3044            config._d = new Date(input.valueOf());
3045        } else if (typeof input === 'string') {
3046            configFromString(config);
3047        } else if (isArray(input)) {
3048            config._a = map(input.slice(0), function (obj) {
3049                return parseInt(obj, 10);
3050            });
3051            configFromArray(config);
3052        } else if (isObject(input)) {
3053            configFromObject(config);
3054        } else if (isNumber(input)) {
3055            // from milliseconds
3056            config._d = new Date(input);
3057        } else {
3058            hooks.createFromInputFallback(config);
3059        }
3060    }
3061
3062    function createLocalOrUTC(input, format, locale, strict, isUTC) {
3063        var c = {};
3064
3065        if (format === true || format === false) {
3066            strict = format;
3067            format = undefined;
3068        }
3069
3070        if (locale === true || locale === false) {
3071            strict = locale;
3072            locale = undefined;
3073        }
3074
3075        if (
3076            (isObject(input) && isObjectEmpty(input)) ||
3077            (isArray(input) && input.length === 0)
3078        ) {
3079            input = undefined;
3080        }
3081        // object construction must be done this way.
3082        // https://github.com/moment/moment/issues/1423
3083        c._isAMomentObject = true;
3084        c._useUTC = c._isUTC = isUTC;
3085        c._l = locale;
3086        c._i = input;
3087        c._f = format;
3088        c._strict = strict;
3089
3090        return createFromConfig(c);
3091    }
3092
3093    function createLocal(input, format, locale, strict) {
3094        return createLocalOrUTC(input, format, locale, strict, false);
3095    }
3096
3097    var prototypeMin = deprecate(
3098            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
3099            function () {
3100                var other = createLocal.apply(null, arguments);
3101                if (this.isValid() && other.isValid()) {
3102                    return other < this ? this : other;
3103                } else {
3104                    return createInvalid();
3105                }
3106            }
3107        ),
3108        prototypeMax = deprecate(
3109            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
3110            function () {
3111                var other = createLocal.apply(null, arguments);
3112                if (this.isValid() && other.isValid()) {
3113                    return other > this ? this : other;
3114                } else {
3115                    return createInvalid();
3116                }
3117            }
3118        );
3119
3120    // Pick a moment m from moments so that m[fn](other) is true for all
3121    // other. This relies on the function fn to be transitive.
3122    //
3123    // moments should either be an array of moment objects or an array, whose
3124    // first element is an array of moment objects.
3125    function pickBy(fn, moments) {
3126        var res, i;
3127        if (moments.length === 1 && isArray(moments[0])) {
3128            moments = moments[0];
3129        }
3130        if (!moments.length) {
3131            return createLocal();
3132        }
3133        res = moments[0];
3134        for (i = 1; i < moments.length; ++i) {
3135            if (!moments[i].isValid() || moments[i][fn](res)) {
3136                res = moments[i];
3137            }
3138        }
3139        return res;
3140    }
3141
3142    // TODO: Use [].sort instead?
3143    function min() {
3144        var args = [].slice.call(arguments, 0);
3145
3146        return pickBy('isBefore', args);
3147    }
3148
3149    function max() {
3150        var args = [].slice.call(arguments, 0);
3151
3152        return pickBy('isAfter', args);
3153    }
3154
3155    var now = function () {
3156        return Date.now ? Date.now() : +new Date();
3157    };
3158
3159    var ordering = [
3160        'year',
3161        'quarter',
3162        'month',
3163        'week',
3164        'day',
3165        'hour',
3166        'minute',
3167        'second',
3168        'millisecond',
3169    ];
3170
3171    function isDurationValid(m) {
3172        var key,
3173            unitHasDecimal = false,
3174            i;
3175        for (key in m) {
3176            if (
3177                hasOwnProp(m, key) &&
3178                !(
3179                    indexOf.call(ordering, key) !== -1 &&
3180                    (m[key] == null || !isNaN(m[key]))
3181                )
3182            ) {
3183                return false;
3184            }
3185        }
3186
3187        for (i = 0; i < ordering.length; ++i) {
3188            if (m[ordering[i]]) {
3189                if (unitHasDecimal) {
3190                    return false; // only allow non-integers for smallest unit
3191                }
3192                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
3193                    unitHasDecimal = true;
3194                }
3195            }
3196        }
3197
3198        return true;
3199    }
3200
3201    function isValid$1() {
3202        return this._isValid;
3203    }
3204
3205    function createInvalid$1() {
3206        return createDuration(NaN);
3207    }
3208
3209    function Duration(duration) {
3210        var normalizedInput = normalizeObjectUnits(duration),
3211            years = normalizedInput.year || 0,
3212            quarters = normalizedInput.quarter || 0,
3213            months = normalizedInput.month || 0,
3214            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
3215            days = normalizedInput.day || 0,
3216            hours = normalizedInput.hour || 0,
3217            minutes = normalizedInput.minute || 0,
3218            seconds = normalizedInput.second || 0,
3219            milliseconds = normalizedInput.millisecond || 0;
3220
3221        this._isValid = isDurationValid(normalizedInput);
3222
3223        // representation for dateAddRemove
3224        this._milliseconds =
3225            +milliseconds +
3226            seconds * 1e3 + // 1000
3227            minutes * 6e4 + // 1000 * 60
3228            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
3229        // Because of dateAddRemove treats 24 hours as different from a
3230        // day when working around DST, we need to store them separately
3231        this._days = +days + weeks * 7;
3232        // It is impossible to translate months into days without knowing
3233        // which months you are are talking about, so we have to store
3234        // it separately.
3235        this._months = +months + quarters * 3 + years * 12;
3236
3237        this._data = {};
3238
3239        this._locale = getLocale();
3240
3241        this._bubble();
3242    }
3243
3244    function isDuration(obj) {
3245        return obj instanceof Duration;
3246    }
3247
3248    function absRound(number) {
3249        if (number < 0) {
3250            return Math.round(-1 * number) * -1;
3251        } else {
3252            return Math.round(number);
3253        }
3254    }
3255
3256    // compare two arrays, return the number of differences
3257    function compareArrays(array1, array2, dontConvert) {
3258        var len = Math.min(array1.length, array2.length),
3259            lengthDiff = Math.abs(array1.length - array2.length),
3260            diffs = 0,
3261            i;
3262        for (i = 0; i < len; i++) {
3263            if (
3264                (dontConvert && array1[i] !== array2[i]) ||
3265                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
3266            ) {
3267                diffs++;
3268            }
3269        }
3270        return diffs + lengthDiff;
3271    }
3272
3273    // FORMATTING
3274
3275    function offset(token, separator) {
3276        addFormatToken(token, 0, 0, function () {
3277            var offset = this.utcOffset(),
3278                sign = '+';
3279            if (offset < 0) {
3280                offset = -offset;
3281                sign = '-';
3282            }
3283            return (
3284                sign +
3285                zeroFill(~~(offset / 60), 2) +
3286                separator +
3287                zeroFill(~~offset % 60, 2)
3288            );
3289        });
3290    }
3291
3292    offset('Z', ':');
3293    offset('ZZ', '');
3294
3295    // PARSING
3296
3297    addRegexToken('Z', matchShortOffset);
3298    addRegexToken('ZZ', matchShortOffset);
3299    addParseToken(['Z', 'ZZ'], function (input, array, config) {
3300        config._useUTC = true;
3301        config._tzm = offsetFromString(matchShortOffset, input);
3302    });
3303
3304    // HELPERS
3305
3306    // timezone chunker
3307    // '+10:00' > ['10',  '00']
3308    // '-1530'  > ['-15', '30']
3309    var chunkOffset = /([\+\-]|\d\d)/gi;
3310
3311    function offsetFromString(matcher, string) {
3312        var matches = (string || '').match(matcher),
3313            chunk,
3314            parts,
3315            minutes;
3316
3317        if (matches === null) {
3318            return null;
3319        }
3320
3321        chunk = matches[matches.length - 1] || [];
3322        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
3323        minutes = +(parts[1] * 60) + toInt(parts[2]);
3324
3325        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
3326    }
3327
3328    // Return a moment from input, that is local/utc/zone equivalent to model.
3329    function cloneWithOffset(input, model) {
3330        var res, diff;
3331        if (model._isUTC) {
3332            res = model.clone();
3333            diff =
3334                (isMoment(input) || isDate(input)
3335                    ? input.valueOf()
3336                    : createLocal(input).valueOf()) - res.valueOf();
3337            // Use low-level api, because this fn is low-level api.
3338            res._d.setTime(res._d.valueOf() + diff);
3339            hooks.updateOffset(res, false);
3340            return res;
3341        } else {
3342            return createLocal(input).local();
3343        }
3344    }
3345
3346    function getDateOffset(m) {
3347        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
3348        // https://github.com/moment/moment/pull/1871
3349        return -Math.round(m._d.getTimezoneOffset());
3350    }
3351
3352    // HOOKS
3353
3354    // This function will be called whenever a moment is mutated.
3355    // It is intended to keep the offset in sync with the timezone.
3356    hooks.updateOffset = function () {};
3357
3358    // MOMENTS
3359
3360    // keepLocalTime = true means only change the timezone, without
3361    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
3362    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
3363    // +0200, so we adjust the time as needed, to be valid.
3364    //
3365    // Keeping the time actually adds/subtracts (one hour)
3366    // from the actual represented time. That is why we call updateOffset
3367    // a second time. In case it wants us to change the offset again
3368    // _changeInProgress == true case, then we have to adjust, because
3369    // there is no such time in the given timezone.
3370    function getSetOffset(input, keepLocalTime, keepMinutes) {
3371        var offset = this._offset || 0,
3372            localAdjust;
3373        if (!this.isValid()) {
3374            return input != null ? this : NaN;
3375        }
3376        if (input != null) {
3377            if (typeof input === 'string') {
3378                input = offsetFromString(matchShortOffset, input);
3379                if (input === null) {
3380                    return this;
3381                }
3382            } else if (Math.abs(input) < 16 && !keepMinutes) {
3383                input = input * 60;
3384            }
3385            if (!this._isUTC && keepLocalTime) {
3386                localAdjust = getDateOffset(this);
3387            }
3388            this._offset = input;
3389            this._isUTC = true;
3390            if (localAdjust != null) {
3391                this.add(localAdjust, 'm');
3392            }
3393            if (offset !== input) {
3394                if (!keepLocalTime || this._changeInProgress) {
3395                    addSubtract(
3396                        this,
3397                        createDuration(input - offset, 'm'),
3398                        1,
3399                        false
3400                    );
3401                } else if (!this._changeInProgress) {
3402                    this._changeInProgress = true;
3403                    hooks.updateOffset(this, true);
3404                    this._changeInProgress = null;
3405                }
3406            }
3407            return this;
3408        } else {
3409            return this._isUTC ? offset : getDateOffset(this);
3410        }
3411    }
3412
3413    function getSetZone(input, keepLocalTime) {
3414        if (input != null) {
3415            if (typeof input !== 'string') {
3416                input = -input;
3417            }
3418
3419            this.utcOffset(input, keepLocalTime);
3420
3421            return this;
3422        } else {
3423            return -this.utcOffset();
3424        }
3425    }
3426
3427    function setOffsetToUTC(keepLocalTime) {
3428        return this.utcOffset(0, keepLocalTime);
3429    }
3430
3431    function setOffsetToLocal(keepLocalTime) {
3432        if (this._isUTC) {
3433            this.utcOffset(0, keepLocalTime);
3434            this._isUTC = false;
3435
3436            if (keepLocalTime) {
3437                this.subtract(getDateOffset(this), 'm');
3438            }
3439        }
3440        return this;
3441    }
3442
3443    function setOffsetToParsedOffset() {
3444        if (this._tzm != null) {
3445            this.utcOffset(this._tzm, false, true);
3446        } else if (typeof this._i === 'string') {
3447            var tZone = offsetFromString(matchOffset, this._i);
3448            if (tZone != null) {
3449                this.utcOffset(tZone);
3450            } else {
3451                this.utcOffset(0, true);
3452            }
3453        }
3454        return this;
3455    }
3456
3457    function hasAlignedHourOffset(input) {
3458        if (!this.isValid()) {
3459            return false;
3460        }
3461        input = input ? createLocal(input).utcOffset() : 0;
3462
3463        return (this.utcOffset() - input) % 60 === 0;
3464    }
3465
3466    function isDaylightSavingTime() {
3467        return (
3468            this.utcOffset() > this.clone().month(0).utcOffset() ||
3469            this.utcOffset() > this.clone().month(5).utcOffset()
3470        );
3471    }
3472
3473    function isDaylightSavingTimeShifted() {
3474        if (!isUndefined(this._isDSTShifted)) {
3475            return this._isDSTShifted;
3476        }
3477
3478        var c = {},
3479            other;
3480
3481        copyConfig(c, this);
3482        c = prepareConfig(c);
3483
3484        if (c._a) {
3485            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
3486            this._isDSTShifted =
3487                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
3488        } else {
3489            this._isDSTShifted = false;
3490        }
3491
3492        return this._isDSTShifted;
3493    }
3494
3495    function isLocal() {
3496        return this.isValid() ? !this._isUTC : false;
3497    }
3498
3499    function isUtcOffset() {
3500        return this.isValid() ? this._isUTC : false;
3501    }
3502
3503    function isUtc() {
3504        return this.isValid() ? this._isUTC && this._offset === 0 : false;
3505    }
3506
3507    // ASP.NET json date format regex
3508    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
3509        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3510        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3511        // and further modified to allow for strings containing both week and day
3512        isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
3513
3514    function createDuration(input, key) {
3515        var duration = input,
3516            // matching against regexp is expensive, do it on demand
3517            match = null,
3518            sign,
3519            ret,
3520            diffRes;
3521
3522        if (isDuration(input)) {
3523            duration = {
3524                ms: input._milliseconds,
3525                d: input._days,
3526                M: input._months,
3527            };
3528        } else if (isNumber(input) || !isNaN(+input)) {
3529            duration = {};
3530            if (key) {
3531                duration[key] = +input;
3532            } else {
3533                duration.milliseconds = +input;
3534            }
3535        } else if ((match = aspNetRegex.exec(input))) {
3536            sign = match[1] === '-' ? -1 : 1;
3537            duration = {
3538                y: 0,
3539                d: toInt(match[DATE]) * sign,
3540                h: toInt(match[HOUR]) * sign,
3541                m: toInt(match[MINUTE]) * sign,
3542                s: toInt(match[SECOND]) * sign,
3543                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
3544            };
3545        } else if ((match = isoRegex.exec(input))) {
3546            sign = match[1] === '-' ? -1 : 1;
3547            duration = {
3548                y: parseIso(match[2], sign),
3549                M: parseIso(match[3], sign),
3550                w: parseIso(match[4], sign),
3551                d: parseIso(match[5], sign),
3552                h: parseIso(match[6], sign),
3553                m: parseIso(match[7], sign),
3554                s: parseIso(match[8], sign),
3555            };
3556        } else if (duration == null) {
3557            // checks for null or undefined
3558            duration = {};
3559        } else if (
3560            typeof duration === 'object' &&
3561            ('from' in duration || 'to' in duration)
3562        ) {
3563            diffRes = momentsDifference(
3564                createLocal(duration.from),
3565                createLocal(duration.to)
3566            );
3567
3568            duration = {};
3569            duration.ms = diffRes.milliseconds;
3570            duration.M = diffRes.months;
3571        }
3572
3573        ret = new Duration(duration);
3574
3575        if (isDuration(input) && hasOwnProp(input, '_locale')) {
3576            ret._locale = input._locale;
3577        }
3578
3579        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
3580            ret._isValid = input._isValid;
3581        }
3582
3583        return ret;
3584    }
3585
3586    createDuration.fn = Duration.prototype;
3587    createDuration.invalid = createInvalid$1;
3588
3589    function parseIso(inp, sign) {
3590        // We'd normally use ~~inp for this, but unfortunately it also
3591        // converts floats to ints.
3592        // inp may be undefined, so careful calling replace on it.
3593        var res = inp && parseFloat(inp.replace(',', '.'));
3594        // apply sign while we're at it
3595        return (isNaN(res) ? 0 : res) * sign;
3596    }
3597
3598    function positiveMomentsDifference(base, other) {
3599        var res = {};
3600
3601        res.months =
3602            other.month() - base.month() + (other.year() - base.year()) * 12;
3603        if (base.clone().add(res.months, 'M').isAfter(other)) {
3604            --res.months;
3605        }
3606
3607        res.milliseconds = +other - +base.clone().add(res.months, 'M');
3608
3609        return res;
3610    }
3611
3612    function momentsDifference(base, other) {
3613        var res;
3614        if (!(base.isValid() && other.isValid())) {
3615            return { milliseconds: 0, months: 0 };
3616        }
3617
3618        other = cloneWithOffset(other, base);
3619        if (base.isBefore(other)) {
3620            res = positiveMomentsDifference(base, other);
3621        } else {
3622            res = positiveMomentsDifference(other, base);
3623            res.milliseconds = -res.milliseconds;
3624            res.months = -res.months;
3625        }
3626
3627        return res;
3628    }
3629
3630    // TODO: remove 'name' arg after deprecation is removed
3631    function createAdder(direction, name) {
3632        return function (val, period) {
3633            var dur, tmp;
3634            //invert the arguments, but complain about it
3635            if (period !== null && !isNaN(+period)) {
3636                deprecateSimple(
3637                    name,
3638                    'moment().' +
3639                        name +
3640                        '(period, number) is deprecated. Please use moment().' +
3641                        name +
3642                        '(number, period). ' +
3643                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
3644                );
3645                tmp = val;
3646                val = period;
3647                period = tmp;
3648            }
3649
3650            dur = createDuration(val, period);
3651            addSubtract(this, dur, direction);
3652            return this;
3653        };
3654    }
3655
3656    function addSubtract(mom, duration, isAdding, updateOffset) {
3657        var milliseconds = duration._milliseconds,
3658            days = absRound(duration._days),
3659            months = absRound(duration._months);
3660
3661        if (!mom.isValid()) {
3662            // No op
3663            return;
3664        }
3665
3666        updateOffset = updateOffset == null ? true : updateOffset;
3667
3668        if (months) {
3669            setMonth(mom, get(mom, 'Month') + months * isAdding);
3670        }
3671        if (days) {
3672            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3673        }
3674        if (milliseconds) {
3675            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3676        }
3677        if (updateOffset) {
3678            hooks.updateOffset(mom, days || months);
3679        }
3680    }
3681
3682    var add = createAdder(1, 'add'),
3683        subtract = createAdder(-1, 'subtract');
3684
3685    function isString(input) {
3686        return typeof input === 'string' || input instanceof String;
3687    }
3688
3689    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
3690    function isMomentInput(input) {
3691        return (
3692            isMoment(input) ||
3693            isDate(input) ||
3694            isString(input) ||
3695            isNumber(input) ||
3696            isNumberOrStringArray(input) ||
3697            isMomentInputObject(input) ||
3698            input === null ||
3699            input === undefined
3700        );
3701    }
3702
3703    function isMomentInputObject(input) {
3704        var objectTest = isObject(input) && !isObjectEmpty(input),
3705            propertyTest = false,
3706            properties = [
3707                'years',
3708                'year',
3709                'y',
3710                'months',
3711                'month',
3712                'M',
3713                'days',
3714                'day',
3715                'd',
3716                'dates',
3717                'date',
3718                'D',
3719                'hours',
3720                'hour',
3721                'h',
3722                'minutes',
3723                'minute',
3724                'm',
3725                'seconds',
3726                'second',
3727                's',
3728                'milliseconds',
3729                'millisecond',
3730                'ms',
3731            ],
3732            i,
3733            property;
3734
3735        for (i = 0; i < properties.length; i += 1) {
3736            property = properties[i];
3737            propertyTest = propertyTest || hasOwnProp(input, property);
3738        }
3739
3740        return objectTest && propertyTest;
3741    }
3742
3743    function isNumberOrStringArray(input) {
3744        var arrayTest = isArray(input),
3745            dataTypeTest = false;
3746        if (arrayTest) {
3747            dataTypeTest =
3748                input.filter(function (item) {
3749                    return !isNumber(item) && isString(input);
3750                }).length === 0;
3751        }
3752        return arrayTest && dataTypeTest;
3753    }
3754
3755    function isCalendarSpec(input) {
3756        var objectTest = isObject(input) && !isObjectEmpty(input),
3757            propertyTest = false,
3758            properties = [
3759                'sameDay',
3760                'nextDay',
3761                'lastDay',
3762                'nextWeek',
3763                'lastWeek',
3764                'sameElse',
3765            ],
3766            i,
3767            property;
3768
3769        for (i = 0; i < properties.length; i += 1) {
3770            property = properties[i];
3771            propertyTest = propertyTest || hasOwnProp(input, property);
3772        }
3773
3774        return objectTest && propertyTest;
3775    }
3776
3777    function getCalendarFormat(myMoment, now) {
3778        var diff = myMoment.diff(now, 'days', true);
3779        return diff < -6
3780            ? 'sameElse'
3781            : diff < -1
3782            ? 'lastWeek'
3783            : diff < 0
3784            ? 'lastDay'
3785            : diff < 1
3786            ? 'sameDay'
3787            : diff < 2
3788            ? 'nextDay'
3789            : diff < 7
3790            ? 'nextWeek'
3791            : 'sameElse';
3792    }
3793
3794    function calendar$1(time, formats) {
3795        // Support for single parameter, formats only overload to the calendar function
3796        if (arguments.length === 1) {
3797            if (
3797!arguments[0]) {
3798                time = undefined;
3799                formats = undefined;
3800            } else
vendor: 21,292 bytes, lines 3800-4478
3800 if (isMomentInput(arguments[0])) {
3801                time = arguments[0];
3802                formats = undefined;
3803            } else if (isCalendarSpec(arguments[0])) {
3804                formats = arguments[0];
3805                time = undefined;
3806            }
3807        }
3808        // We want to compare the start of today, vs this.
3809        // Getting start-of-today depends on whether we're local/utc/offset or not.
3810        var now = time || createLocal(),
3811            sod = cloneWithOffset(now, this).startOf('day'),
3812            format = hooks.calendarFormat(this, sod) || 'sameElse',
3813            output =
3814                formats &&
3815                (isFunction(formats[format])
3816                    ? formats[format].call(this, now)
3817                    : formats[format]);
3818
3819        return this.format(
3820            output || this.localeData().calendar(format, this, createLocal(now))
3821        );
3822    }
3823
3824    function clone() {
3825        return new Moment(this);
3826    }
3827
3828    function isAfter(input, units) {
3829        var localInput = isMoment(input) ? input : createLocal(input);
3830        if (!(this.isValid() && localInput.isValid())) {
3831            return false;
3832        }
3833        units = normalizeUnits(units) || 'millisecond';
3834        if (units === 'millisecond') {
3835            return this.valueOf() > localInput.valueOf();
3836        } else {
3837            return localInput.valueOf() < this.clone().startOf(units).valueOf();
3838        }
3839    }
3840
3841    function isBefore(input, units) {
3842        var localInput = isMoment(input) ? input : createLocal(input);
3843        if (!(this.isValid() && localInput.isValid())) {
3844            return false;
3845        }
3846        units = normalizeUnits(units) || 'millisecond';
3847        if (units === 'millisecond') {
3848            return this.valueOf() < localInput.valueOf();
3849        } else {
3850            return this.clone().endOf(units).valueOf() < localInput.valueOf();
3851        }
3852    }
3853
3854    function isBetween(from, to, units, inclusivity) {
3855        var localFrom = isMoment(from) ? from : createLocal(from),
3856            localTo = isMoment(to) ? to : createLocal(to);
3857        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
3858            return false;
3859        }
3860        inclusivity = inclusivity || '()';
3861        return (
3862            (inclusivity[0] === '('
3863                ? this.isAfter(localFrom, units)
3864                : !this.isBefore(localFrom, units)) &&
3865            (inclusivity[1] === ')'
3866                ? this.isBefore(localTo, units)
3867                : !this.isAfter(localTo, units))
3868        );
3869    }
3870
3871    function isSame(input, units) {
3872        var localInput = isMoment(input) ? input : createLocal(input),
3873            inputMs;
3874        if (!(this.isValid() && localInput.isValid())) {
3875            return false;
3876        }
3877        units = normalizeUnits(units) || 'millisecond';
3878        if (units === 'millisecond') {
3879            return this.valueOf() === localInput.valueOf();
3880        } else {
3881            inputMs = localInput.valueOf();
3882            return (
3883                this.clone().startOf(units).valueOf() <= inputMs &&
3884                inputMs <= this.clone().endOf(units).valueOf()
3885            );
3886        }
3887    }
3888
3889    function isSameOrAfter(input, units) {
3890        return this.isSame(input, units) || this.isAfter(input, units);
3891    }
3892
3893    function isSameOrBefore(input, units) {
3894        return this.isSame(input, units) || this.isBefore(input, units);
3895    }
3896
3897    function diff(input, units, asFloat) {
3898        var that, zoneDelta, output;
3899
3900        if (!this.isValid()) {
3901            return NaN;
3902        }
3903
3904        that = cloneWithOffset(input, this);
3905
3906        if (!that.isValid()) {
3907            return NaN;
3908        }
3909
3910        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3911
3912        units = normalizeUnits(units);
3913
3914        switch (units) {
3915            case 'year':
3916                output = monthDiff(this, that) / 12;
3917                break;
3918            case 'month':
3919                output = monthDiff(this, that);
3920                break;
3921            case 'quarter':
3922                output = monthDiff(this, that) / 3;
3923                break;
3924            case 'second':
3925                output = (this - that) / 1e3;
3926                break; // 1000
3927            case 'minute':
3928                output = (this - that) / 6e4;
3929                break; // 1000 * 60
3930            case 'hour':
3931                output = (this - that) / 36e5;
3932                break; // 1000 * 60 * 60
3933            case 'day':
3934                output = (this - that - zoneDelta) / 864e5;
3935                break; // 1000 * 60 * 60 * 24, negate dst
3936            case 'week':
3937                output = (this - that - zoneDelta) / 6048e5;
3938                break; // 1000 * 60 * 60 * 24 * 7, negate dst
3939            default:
3940                output = this - that;
3941        }
3942
3943        return asFloat ? output : absFloor(output);
3944    }
3945
3946    function monthDiff(a, b) {
3947        if (a.date() < b.date()) {
3948            // end-of-month calculations work correct when the start month has more
3949            // days than the end month.
3950            return -monthDiff(b, a);
3951        }
3952        // difference in months
3953        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
3954            // b is in (anchor - 1 month, anchor + 1 month)
3955            anchor = a.clone().add(wholeMonthDiff, 'months'),
3956            anchor2,
3957            adjust;
3958
3959        if (b - anchor < 0) {
3960            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3961            // linear across the month
3962            adjust = (b - anchor) / (anchor - anchor2);
3963        } else {
3964            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3965            // linear across the month
3966            adjust = (b - anchor) / (anchor2 - anchor);
3967        }
3968
3969        //check for negative zero, return zero if negative zero
3970        return -(wholeMonthDiff + adjust) || 0;
3971    }
3972
3973    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3974    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3975
3976    function toString() {
3977        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3978    }
3979
3980    function toISOString(keepOffset) {
3981        if (!this.isValid()) {
3982            return null;
3983        }
3984        var utc = keepOffset !== true,
3985            m = utc ? this.clone().utc() : this;
3986        if (m.year() < 0 || m.year() > 9999) {
3987            return formatMoment(
3988                m,
3989                utc
3990                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
3991                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
3992            );
3993        }
3994        if (isFunction(Date.prototype.toISOString)) {
3995            // native implementation is ~50x faster, use it when we can
3996            if (utc) {
3997                return this.toDate().toISOString();
3998            } else {
3999                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
4000                    .toISOString()
4001                    .replace('Z', formatMoment(m, 'Z'));
4002            }
4003        }
4004        return formatMoment(
4005            m,
4006            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
4007        );
4008    }
4009
4010    /**
4011     * Return a human readable representation of a moment that can
4012     * also be evaluated to get a new moment which is the same
4013     *
4014     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
4015     */
4016    function inspect() {
4017        if (!this.isValid()) {
4018            return 'moment.invalid(/* ' + this._i + ' */)';
4019        }
4020        var func = 'moment',
4021            zone = '',
4022            prefix,
4023            year,
4024            datetime,
4025            suffix;
4026        if (!this.isLocal()) {
4027            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
4028            zone = 'Z';
4029        }
4030        prefix = '[' + func + '("]';
4031        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
4032        datetime = '-MM-DD[T]HH:mm:ss.SSS';
4033        suffix = zone + '[")]';
4034
4035        return this.format(prefix + year + datetime + suffix);
4036    }
4037
4038    function format(inputString) {
4039        if (!inputString) {
4040            inputString = this.isUtc()
4041                ? hooks.defaultFormatUtc
4042                : hooks.defaultFormat;
4043        }
4044        var output = formatMoment(this, inputString);
4045        return this.localeData().postformat(output);
4046    }
4047
4048    function from(time, withoutSuffix) {
4049        if (
4050            this.isValid() &&
4051            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
4052        ) {
4053            return createDuration({ to: this, from: time })
4054                .locale(this.locale())
4055                .humanize(!withoutSuffix);
4056        } else {
4057            return this.localeData().invalidDate();
4058        }
4059    }
4060
4061    function fromNow(withoutSuffix) {
4062        return this.from(createLocal(), withoutSuffix);
4063    }
4064
4065    function to(time, withoutSuffix) {
4066        if (
4067            this.isValid() &&
4068            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
4069        ) {
4070            return createDuration({ from: this, to: time })
4071                .locale(this.locale())
4072                .humanize(!withoutSuffix);
4073        } else {
4074            return this.localeData().invalidDate();
4075        }
4076    }
4077
4078    function toNow(withoutSuffix) {
4079        return this.to(createLocal(), withoutSuffix);
4080    }
4081
4082    // If passed a locale key, it will set the locale for this
4083    // instance.  Otherwise, it will return the locale configuration
4084    // variables for this instance.
4085    function locale(key) {
4086        var newLocaleData;
4087
4088        if (key === undefined) {
4089            return this._locale._abbr;
4090        } else {
4091            newLocaleData = getLocale(key);
4092            if (newLocaleData != null) {
4093                this._locale = newLocaleData;
4094            }
4095            return this;
4096        }
4097    }
4098
4099    var lang = deprecate(
4100        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
4101        function (key) {
4102            if (key === undefined) {
4103                return this.localeData();
4104            } else {
4105                return this.locale(key);
4106            }
4107        }
4108    );
4109
4110    function localeData() {
4111        return this._locale;
4112    }
4113
4114    var MS_PER_SECOND = 1000,
4115        MS_PER_MINUTE = 60 * MS_PER_SECOND,
4116        MS_PER_HOUR = 60 * MS_PER_MINUTE,
4117        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
4118
4119    // actual modulo - handles negative numbers (for dates before 1970):
4120    function mod$1(dividend, divisor) {
4121        return ((dividend % divisor) + divisor) % divisor;
4122    }
4123
4124    function localStartOfDate(y, m, d) {
4125        // the date constructor remaps years 0-99 to 1900-1999
4126        if (y < 100 && y >= 0) {
4127            // preserve leap years using a full 400 year cycle, then reset
4128            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
4129        } else {
4130            return new Date(y, m, d).valueOf();
4131        }
4132    }
4133
4134    function utcStartOfDate(y, m, d) {
4135        // Date.UTC remaps years 0-99 to 1900-1999
4136        if (y < 100 && y >= 0) {
4137            // preserve leap years using a full 400 year cycle, then reset
4138            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
4139        } else {
4140            return Date.UTC(y, m, d);
4141        }
4142    }
4143
4144    function startOf(units) {
4145        var time, startOfDate;
4146        units = normalizeUnits(units);
4147        if (units === undefined || units === 'millisecond' || !this.isValid()) {
4148            return this;
4149        }
4150
4151        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4152
4153        switch (units) {
4154            case 'year':
4155                time = startOfDate(this.year(), 0, 1);
4156                break;
4157            case 'quarter':
4158                time = startOfDate(
4159                    this.year(),
4160                    this.month() - (this.month() % 3),
4161                    1
4162                );
4163                break;
4164            case 'month':
4165                time = startOfDate(this.year(), this.month(), 1);
4166                break;
4167            case 'week':
4168                time = startOfDate(
4169                    this.year(),
4170                    this.month(),
4171                    this.date() - this.weekday()
4172                );
4173                break;
4174            case 'isoWeek':
4175                time = startOfDate(
4176                    this.year(),
4177                    this.month(),
4178                    this.date() - (this.isoWeekday() - 1)
4179                );
4180                break;
4181            case 'day':
4182            case 'date':
4183                time = startOfDate(this.year(), this.month(), this.date());
4184                break;
4185            case 'hour':
4186                time = this._d.valueOf();
4187                time -= mod$1(
4188                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4189                    MS_PER_HOUR
4190                );
4191                break;
4192            case 'minute':
4193                time = this._d.valueOf();
4194                time -= mod$1(time, MS_PER_MINUTE);
4195                break;
4196            case 'second':
4197                time = this._d.valueOf();
4198                time -= mod$1(time, MS_PER_SECOND);
4199                break;
4200        }
4201
4202        this._d.setTime(time);
4203        hooks.updateOffset(this, true);
4204        return this;
4205    }
4206
4207    function endOf(units) {
4208        var time, startOfDate;
4209        units = normalizeUnits(units);
4210        if (units === undefined || units === 'millisecond' || !this.isValid()) {
4211            return this;
4212        }
4213
4214        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4215
4216        switch (units) {
4217            case 'year':
4218                time = startOfDate(this.year() + 1, 0, 1) - 1;
4219                break;
4220            case 'quarter':
4221                time =
4222                    startOfDate(
4223                        this.year(),
4224                        this.month() - (this.month() % 3) + 3,
4225                        1
4226                    ) - 1;
4227                break;
4228            case 'month':
4229                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
4230                break;
4231            case 'week':
4232                time =
4233                    startOfDate(
4234                        this.year(),
4235                        this.month(),
4236                        this.date() - this.weekday() + 7
4237                    ) - 1;
4238                break;
4239            case 'isoWeek':
4240                time =
4241                    startOfDate(
4242                        this.year(),
4243                        this.month(),
4244                        this.date() - (this.isoWeekday() - 1) + 7
4245                    ) - 1;
4246                break;
4247            case 'day':
4248            case 'date':
4249                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
4250                break;
4251            case 'hour':
4252                time = this._d.valueOf();
4253                time +=
4254                    MS_PER_HOUR -
4255                    mod$1(
4256                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4257                        MS_PER_HOUR
4258                    ) -
4259                    1;
4260                break;
4261            case 'minute':
4262                time = this._d.valueOf();
4263                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
4264                break;
4265            case 'second':
4266                time = this._d.valueOf();
4267                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
4268                break;
4269        }
4270
4271        this._d.setTime(time);
4272        hooks.updateOffset(this, true);
4273        return this;
4274    }
4275
4276    function valueOf() {
4277        return this._d.valueOf() - (this._offset || 0) * 60000;
4278    }
4279
4280    function unix() {
4281        return Math.floor(this.valueOf() / 1000);
4282    }
4283
4284    function toDate() {
4285        return new Date(this.valueOf());
4286    }
4287
4288    function toArray() {
4289        var m = this;
4290        return [
4291            m.year(),
4292            m.month(),
4293            m.date(),
4294            m.hour(),
4295            m.minute(),
4296            m.second(),
4297            m.millisecond(),
4298        ];
4299    }
4300
4301    function toObject() {
4302        var m = this;
4303        return {
4304            years: m.year(),
4305            months: m.month(),
4306            date: m.date(),
4307            hours: m.hours(),
4308            minutes: m.minutes(),
4309            seconds: m.seconds(),
4310            milliseconds: m.milliseconds(),
4311        };
4312    }
4313
4314    function toJSON() {
4315        // new Date(NaN).toJSON() === null
4316        return this.isValid() ? this.toISOString() : null;
4317    }
4318
4319    function isValid$2() {
4320        return isValid(this);
4321    }
4322
4323    function parsingFlags() {
4324        return extend({}, getParsingFlags(this));
4325    }
4326
4327    function invalidAt() {
4328        return getParsingFlags(this).overflow;
4329    }
4330
4331    function creationData() {
4332        return {
4333            input: this._i,
4334            format: this._f,
4335            locale: this._locale,
4336            isUTC: this._isUTC,
4337            strict: this._strict,
4338        };
4339    }
4340
4341    addFormatToken('N', 0, 0, 'eraAbbr');
4342    addFormatToken('NN', 0, 0, 'eraAbbr');
4343    addFormatToken('NNN', 0, 0, 'eraAbbr');
4344    addFormatToken('NNNN', 0, 0, 'eraName');
4345    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
4346
4347    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
4348    addFormatToken('y', ['yy', 2], 0, 'eraYear');
4349    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
4350    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
4351
4352    addRegexToken('N', matchEraAbbr);
4353    addRegexToken('NN', matchEraAbbr);
4354    addRegexToken('NNN', matchEraAbbr);
4355    addRegexToken('NNNN', matchEraName);
4356    addRegexToken('NNNNN', matchEraNarrow);
4357
4358    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
4359        input,
4360        array,
4361        config,
4362        token
4363    ) {
4364        var era = config._locale.erasParse(input, token, config._strict);
4365        if (era) {
4366            getParsingFlags(config).era = era;
4367        } else {
4368            getParsingFlags(config).invalidEra = input;
4369        }
4370    });
4371
4372    addRegexToken('y', matchUnsigned);
4373    addRegexToken('yy', matchUnsigned);
4374    addRegexToken('yyy', matchUnsigned);
4375    addRegexToken('yyyy', matchUnsigned);
4376    addRegexToken('yo', matchEraYearOrdinal);
4377
4378    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
4379    addParseToken(['yo'], function (input, array, config, token) {
4380        var match;
4381        if (config._locale._eraYearOrdinalRegex) {
4382            match = input.match(config._locale._eraYearOrdinalRegex);
4383        }
4384
4385        if (config._locale.eraYearOrdinalParse) {
4386            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
4387        } else {
4388            array[YEAR] = parseInt(input, 10);
4389        }
4390    });
4391
4392    function localeEras(m, format) {
4393        var i,
4394            l,
4395            date,
4396            eras = this._eras || getLocale('en')._eras;
4397        for (i = 0, l = eras.length; i < l; ++i) {
4398            switch (typeof eras[i].since) {
4399                case 'string':
4400                    // truncate time
4401                    date = hooks(eras[i].since).startOf('day');
4402                    eras[i].since = date.valueOf();
4403                    break;
4404            }
4405
4406            switch (typeof eras[i].until) {
4407                case 'undefined':
4408                    eras[i].until = +Infinity;
4409                    break;
4410                case 'string':
4411                    // truncate time
4412                    date = hooks(eras[i].until).startOf('day').valueOf();
4413                    eras[i].until = date.valueOf();
4414                    break;
4415            }
4416        }
4417        return eras;
4418    }
4419
4420    function localeErasParse(eraName, format, strict) {
4421        var i,
4422            l,
4423            eras = this.eras(),
4424            name,
4425            abbr,
4426            narrow;
4427        eraName = eraName.toUpperCase();
4428
4429        for (i = 0, l = eras.length; i < l; ++i) {
4430            name = eras[i].name.toUpperCase();
4431            abbr = eras[i].abbr.toUpperCase();
4432            narrow = eras[i].narrow.toUpperCase();
4433
4434            if (strict) {
4435                switch (format) {
4436                    case 'N':
4437                    case 'NN':
4438                    case 'NNN':
4439                        if (abbr === eraName) {
4440                            return eras[i];
4441                        }
4442                        break;
4443
4444                    case 'NNNN':
4445                        if (name === eraName) {
4446                            return eras[i];
4447                        }
4448                        break;
4449
4450                    case 'NNNNN':
4451                        if (narrow === eraName) {
4452                            return eras[i];
4453                        }
4454                        break;
4455                }
4456            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
4457                return eras[i];
4458            }
4459        }
4460    }
4461
4462    function localeErasConvertYear(era, year) {
4463        var dir = era.since <= era.until ? +1 : -1;
4464        if (year === undefined) {
4465            return hooks(era.since).year();
4466        } else {
4467            return hooks(era.since).year() + (year - era.offset) * dir;
4468        }
4469    }
4470
4471    function getEraName() {
4472        var i,
4473            l,
4474            val,
4475            eras = this.localeData().eras();
4476        for (i = 0, l = eras.length; i < l; ++i) {
4477            // truncate time
4478            val = this.
vendor: 1,666 bytes, lines 4478-4541
4478clone().startOf('day').valueOf();
4479
4480            if (eras[i].since <= val && val <= eras[i].until) {
4481                return eras[i].name;
4482            }
4483            if (eras[i].until <= val && val <= eras[i].since) {
4484                return eras[i].name;
4485            }
4486        }
4487
4488        return '';
4489    }
4490
4491    function getEraNarrow() {
4492        var i,
4493            l,
4494            val,
4495            eras = this.localeData().eras();
4496        for (i = 0, l = eras.length; i < l; ++i) {
4497            // truncate time
4498            val = this.clone().startOf('day').valueOf();
4499
4500            if (eras[i].since <= val && val <= eras[i].until) {
4501                return eras[i].narrow;
4502            }
4503            if (eras[i].until <= val && val <= eras[i].since) {
4504                return eras[i].narrow;
4505            }
4506        }
4507
4508        return '';
4509    }
4510
4511    function getEraAbbr() {
4512        var i,
4513            l,
4514            val,
4515            eras = this.localeData().eras();
4516        for (i = 0, l = eras.length; i < l; ++i) {
4517            // truncate time
4518            val = this.clone().startOf('day').valueOf();
4519
4520            if (eras[i].since <= val && val <= eras[i].until) {
4521                return eras[i].abbr;
4522            }
4523            if (eras[i].until <= val && val <= eras[i].since) {
4524                return eras[i].abbr;
4525            }
4526        }
4527
4528        return '';
4529    }
4530
4531    function getEraYear() {
4532        var i,
4533            l,
4534            dir,
4535            val,
4536            eras = this.localeData().eras();
4537        for (i = 0, l = eras.length; i < l; ++i) {
4538            dir = eras[i].since <= eras[i].until ? +1 : -1;
4539
4540            // truncate time
4541            val = this.clone()
vendor: 33,286 bytes, lines 4541-5692
4541.startOf('day').valueOf();
4542
4543            if (
4544                (eras[i].since <= val && val <= eras[i].until) ||
4545                (eras[i].until <= val && val <= eras[i].since)
4546            ) {
4547                return (
4548                    (this.year() - hooks(eras[i].since).year()) * dir +
4549                    eras[i].offset
4550                );
4551            }
4552        }
4553
4554        return this.year();
4555    }
4556
4557    function erasNameRegex(isStrict) {
4558        if (!hasOwnProp(this, '_erasNameRegex')) {
4559            computeErasParse.call(this);
4560        }
4561        return isStrict ? this._erasNameRegex : this._erasRegex;
4562    }
4563
4564    function erasAbbrRegex(isStrict) {
4565        if (!hasOwnProp(this, '_erasAbbrRegex')) {
4566            computeErasParse.call(this);
4567        }
4568        return isStrict ? this._erasAbbrRegex : this._erasRegex;
4569    }
4570
4571    function erasNarrowRegex(isStrict) {
4572        if (!hasOwnProp(this, '_erasNarrowRegex')) {
4573            computeErasParse.call(this);
4574        }
4575        return isStrict ? this._erasNarrowRegex : this._erasRegex;
4576    }
4577
4578    function matchEraAbbr(isStrict, locale) {
4579        return locale.erasAbbrRegex(isStrict);
4580    }
4581
4582    function matchEraName(isStrict, locale) {
4583        return locale.erasNameRegex(isStrict);
4584    }
4585
4586    function matchEraNarrow(isStrict, locale) {
4587        return locale.erasNarrowRegex(isStrict);
4588    }
4589
4590    function matchEraYearOrdinal(isStrict, locale) {
4591        return locale._eraYearOrdinalRegex || matchUnsigned;
4592    }
4593
4594    function computeErasParse() {
4595        var abbrPieces = [],
4596            namePieces = [],
4597            narrowPieces = [],
4598            mixedPieces = [],
4599            i,
4600            l,
4601            eras = this.eras();
4602
4603        for (i = 0, l = eras.length; i < l; ++i) {
4604            namePieces.push(regexEscape(eras[i].name));
4605            abbrPieces.push(regexEscape(eras[i].abbr));
4606            narrowPieces.push(regexEscape(eras[i].narrow));
4607
4608            mixedPieces.push(regexEscape(eras[i].name));
4609            mixedPieces.push(regexEscape(eras[i].abbr));
4610            mixedPieces.push(regexEscape(eras[i].narrow));
4611        }
4612
4613        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
4614        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
4615        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
4616        this._erasNarrowRegex = new RegExp(
4617            '^(' + narrowPieces.join('|') + ')',
4618            'i'
4619        );
4620    }
4621
4622    // FORMATTING
4623
4624    addFormatToken(0, ['gg', 2], 0, function () {
4625        return this.weekYear() % 100;
4626    });
4627
4628    addFormatToken(0, ['GG', 2], 0, function () {
4629        return this.isoWeekYear() % 100;
4630    });
4631
4632    function addWeekYearFormatToken(token, getter) {
4633        addFormatToken(0, [token, token.length], 0, getter);
4634    }
4635
4636    addWeekYearFormatToken('gggg', 'weekYear');
4637    addWeekYearFormatToken('ggggg', 'weekYear');
4638    addWeekYearFormatToken('GGGG', 'isoWeekYear');
4639    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
4640
4641    // ALIASES
4642
4643    addUnitAlias('weekYear', 'gg');
4644    addUnitAlias('isoWeekYear', 'GG');
4645
4646    // PRIORITY
4647
4648    addUnitPriority('weekYear', 1);
4649    addUnitPriority('isoWeekYear', 1);
4650
4651    // PARSING
4652
4653    addRegexToken('G', matchSigned);
4654    addRegexToken('g', matchSigned);
4655    addRegexToken('GG', match1to2, match2);
4656    addRegexToken('gg', match1to2, match2);
4657    addRegexToken('GGGG', match1to4, match4);
4658    addRegexToken('gggg', match1to4, match4);
4659    addRegexToken('GGGGG', match1to6, match6);
4660    addRegexToken('ggggg', match1to6, match6);
4661
4662    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
4663        input,
4664        week,
4665        config,
4666        token
4667    ) {
4668        week[token.substr(0, 2)] = toInt(input);
4669    });
4670
4671    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
4672        week[token] = hooks.parseTwoDigitYear(input);
4673    });
4674
4675    // MOMENTS
4676
4677    function getSetWeekYear(input) {
4678        return getSetWeekYearHelper.call(
4679            this,
4680            input,
4681            this.week(),
4682            this.weekday(),
4683            this.localeData()._week.dow,
4684            this.localeData()._week.doy
4685        );
4686    }
4687
4688    function getSetISOWeekYear(input) {
4689        return getSetWeekYearHelper.call(
4690            this,
4691            input,
4692            this.isoWeek(),
4693            this.isoWeekday(),
4694            1,
4695            4
4696        );
4697    }
4698
4699    function getISOWeeksInYear() {
4700        return weeksInYear(this.year(), 1, 4);
4701    }
4702
4703    function getISOWeeksInISOWeekYear() {
4704        return weeksInYear(this.isoWeekYear(), 1, 4);
4705    }
4706
4707    function getWeeksInYear() {
4708        var weekInfo = this.localeData()._week;
4709        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
4710    }
4711
4712    function getWeeksInWeekYear() {
4713        var weekInfo = this.localeData()._week;
4714        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
4715    }
4716
4717    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
4718        var weeksTarget;
4719        if (input == null) {
4720            return weekOfYear(this, dow, doy).year;
4721        } else {
4722            weeksTarget = weeksInYear(input, dow, doy);
4723            if (week > weeksTarget) {
4724                week = weeksTarget;
4725            }
4726            return setWeekAll.call(this, input, week, weekday, dow, doy);
4727        }
4728    }
4729
4730    function setWeekAll(weekYear, week, weekday, dow, doy) {
4731        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
4732            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
4733
4734        this.year(date.getUTCFullYear());
4735        this.month(date.getUTCMonth());
4736        this.date(date.getUTCDate());
4737        return this;
4738    }
4739
4740    // FORMATTING
4741
4742    addFormatToken('Q', 0, 'Qo', 'quarter');
4743
4744    // ALIASES
4745
4746    addUnitAlias('quarter', 'Q');
4747
4748    // PRIORITY
4749
4750    addUnitPriority('quarter', 7);
4751
4752    // PARSING
4753
4754    addRegexToken('Q', match1);
4755    addParseToken('Q', function (input, array) {
4756        array[MONTH] = (toInt(input) - 1) * 3;
4757    });
4758
4759    // MOMENTS
4760
4761    function getSetQuarter(input) {
4762        return input == null
4763            ? Math.ceil((this.month() + 1) / 3)
4764            : this.month((input - 1) * 3 + (this.month() % 3));
4765    }
4766
4767    // FORMATTING
4768
4769    addFormatToken('D', ['DD', 2], 'Do', 'date');
4770
4771    // ALIASES
4772
4773    addUnitAlias('date', 'D');
4774
4775    // PRIORITY
4776    addUnitPriority('date', 9);
4777
4778    // PARSING
4779
4780    addRegexToken('D', match1to2);
4781    addRegexToken('DD', match1to2, match2);
4782    addRegexToken('Do', function (isStrict, locale) {
4783        // TODO: Remove "ordinalParse" fallback in next major release.
4784        return isStrict
4785            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
4786            : locale._dayOfMonthOrdinalParseLenient;
4787    });
4788
4789    addParseToken(['D', 'DD'], DATE);
4790    addParseToken('Do', function (input, array) {
4791        array[DATE] = toInt(input.match(match1to2)[0]);
4792    });
4793
4794    // MOMENTS
4795
4796    var getSetDayOfMonth = makeGetSet('Date', true);
4797
4798    // FORMATTING
4799
4800    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
4801
4802    // ALIASES
4803
4804    addUnitAlias('dayOfYear', 'DDD');
4805
4806    // PRIORITY
4807    addUnitPriority('dayOfYear', 4);
4808
4809    // PARSING
4810
4811    addRegexToken('DDD', match1to3);
4812    addRegexToken('DDDD', match3);
4813    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
4814        config._dayOfYear = toInt(input);
4815    });
4816
4817    // HELPERS
4818
4819    // MOMENTS
4820
4821    function getSetDayOfYear(input) {
4822        var dayOfYear =
4823            Math.round(
4824                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
4825            ) + 1;
4826        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
4827    }
4828
4829    // FORMATTING
4830
4831    addFormatToken('m', ['mm', 2], 0, 'minute');
4832
4833    // ALIASES
4834
4835    addUnitAlias('minute', 'm');
4836
4837    // PRIORITY
4838
4839    addUnitPriority('minute', 14);
4840
4841    // PARSING
4842
4843    addRegexToken('m', match1to2);
4844    addRegexToken('mm', match1to2, match2);
4845    addParseToken(['m', 'mm'], MINUTE);
4846
4847    // MOMENTS
4848
4849    var getSetMinute = makeGetSet('Minutes', false);
4850
4851    // FORMATTING
4852
4853    addFormatToken('s', ['ss', 2], 0, 'second');
4854
4855    // ALIASES
4856
4857    addUnitAlias('second', 's');
4858
4859    // PRIORITY
4860
4861    addUnitPriority('second', 15);
4862
4863    // PARSING
4864
4865    addRegexToken('s', match1to2);
4866    addRegexToken('ss', match1to2, match2);
4867    addParseToken(['s', 'ss'], SECOND);
4868
4869    // MOMENTS
4870
4871    var getSetSecond = makeGetSet('Seconds', false);
4872
4873    // FORMATTING
4874
4875    addFormatToken('S', 0, 0, function () {
4876        return ~~(this.millisecond() / 100);
4877    });
4878
4879    addFormatToken(0, ['SS', 2], 0, function () {
4880        return ~~(this.millisecond() / 10);
4881    });
4882
4883    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
4884    addFormatToken(0, ['SSSS', 4], 0, function () {
4885        return this.millisecond() * 10;
4886    });
4887    addFormatToken(0, ['SSSSS', 5], 0, function () {
4888        return this.millisecond() * 100;
4889    });
4890    addFormatToken(0, ['SSSSSS', 6], 0, function () {
4891        return this.millisecond() * 1000;
4892    });
4893    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
4894        return this.millisecond() * 10000;
4895    });
4896    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
4897        return this.millisecond() * 100000;
4898    });
4899    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
4900        return this.millisecond() * 1000000;
4901    });
4902
4903    // ALIASES
4904
4905    addUnitAlias('millisecond', 'ms');
4906
4907    // PRIORITY
4908
4909    addUnitPriority('millisecond', 16);
4910
4911    // PARSING
4912
4913    addRegexToken('S', match1to3, match1);
4914    addRegexToken('SS', match1to3, match2);
4915    addRegexToken('SSS', match1to3, match3);
4916
4917    var token, getSetMillisecond;
4918    for (token = 'SSSS'; token.length <= 9; token += 'S') {
4919        addRegexToken(token, matchUnsigned);
4920    }
4921
4922    function parseMs(input, array) {
4923        array[MILLISECOND] = toInt(('0.' + input) * 1000);
4924    }
4925
4926    for (token = 'S'; token.length <= 9; token += 'S') {
4927        addParseToken(token, parseMs);
4928    }
4929
4930    getSetMillisecond = makeGetSet('Milliseconds', false);
4931
4932    // FORMATTING
4933
4934    addFormatToken('z', 0, 0, 'zoneAbbr');
4935    addFormatToken('zz', 0, 0, 'zoneName');
4936
4937    // MOMENTS
4938
4939    function getZoneAbbr() {
4940        return this._isUTC ? 'UTC' : '';
4941    }
4942
4943    function getZoneName() {
4944        return this._isUTC ? 'Coordinated Universal Time' : '';
4945    }
4946
4947    var proto = Moment.prototype;
4948
4949    proto.add = add;
4950    proto.calendar = calendar$1;
4951    proto.clone = clone;
4952    proto.diff = diff;
4953    proto.endOf = endOf;
4954    proto.format = format;
4955    proto.from = from;
4956    proto.fromNow = fromNow;
4957    proto.to = to;
4958    proto.toNow = toNow;
4959    proto.get = stringGet;
4960    proto.invalidAt = invalidAt;
4961    proto.isAfter = isAfter;
4962    proto.isBefore = isBefore;
4963    proto.isBetween = isBetween;
4964    proto.isSame = isSame;
4965    proto.isSameOrAfter = isSameOrAfter;
4966    proto.isSameOrBefore = isSameOrBefore;
4967    proto.isValid = isValid$2;
4968    proto.lang = lang;
4969    proto.locale = locale;
4970    proto.localeData = localeData;
4971    proto.max = prototypeMax;
4972    proto.min = prototypeMin;
4973    proto.parsingFlags = parsingFlags;
4974    proto.set = stringSet;
4975    proto.startOf = startOf;
4976    proto.subtract = subtract;
4977    proto.toArray = toArray;
4978    proto.toObject = toObject;
4979    proto.toDate = toDate;
4980    proto.toISOString = toISOString;
4981    proto.inspect = inspect;
4982    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
4983        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
4984            return 'Moment<' + this.format() + '>';
4985        };
4986    }
4987    proto.toJSON = toJSON;
4988    proto.toString = toString;
4989    proto.unix = unix;
4990    proto.valueOf = valueOf;
4991    proto.creationData = creationData;
4992    proto.eraName = getEraName;
4993    proto.eraNarrow = getEraNarrow;
4994    proto.eraAbbr = getEraAbbr;
4995    proto.eraYear = getEraYear;
4996    proto.year = getSetYear;
4997    proto.isLeapYear = getIsLeapYear;
4998    proto.weekYear = getSetWeekYear;
4999    proto.isoWeekYear = getSetISOWeekYear;
5000    proto.quarter = proto.quarters = getSetQuarter;
5001    proto.month = getSetMonth;
5002    proto.daysInMonth = getDaysInMonth;
5003    proto.week = proto.weeks = getSetWeek;
5004    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
5005    proto.weeksInYear = getWeeksInYear;
5006    proto.weeksInWeekYear = getWeeksInWeekYear;
5007    proto.isoWeeksInYear = getISOWeeksInYear;
5008    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
5009    proto.date = getSetDayOfMonth;
5010    proto.day = proto.days = getSetDayOfWeek;
5011    proto.weekday = getSetLocaleDayOfWeek;
5012    proto.isoWeekday = getSetISODayOfWeek;
5013    proto.dayOfYear = getSetDayOfYear;
5014    proto.hour = proto.hours = getSetHour;
5015    proto.minute = proto.minutes = getSetMinute;
5016    proto.second = proto.seconds = getSetSecond;
5017    proto.millisecond = proto.milliseconds = getSetMillisecond;
5018    proto.utcOffset = getSetOffset;
5019    proto.utc = setOffsetToUTC;
5020    proto.local = setOffsetToLocal;
5021    proto.parseZone = setOffsetToParsedOffset;
5022    proto.hasAlignedHourOffset = hasAlignedHourOffset;
5023    proto.isDST = isDaylightSavingTime;
5024    proto.isLocal = isLocal;
5025    proto.isUtcOffset = isUtcOffset;
5026    proto.isUtc = isUtc;
5027    proto.isUTC = isUtc;
5028    proto.zoneAbbr = getZoneAbbr;
5029    proto.zoneName = getZoneName;
5030    proto.dates = deprecate(
5031        'dates accessor is deprecated. Use date instead.',
5032        getSetDayOfMonth
5033    );
5034    proto.months = deprecate(
5035        'months accessor is deprecated. Use month instead',
5036        getSetMonth
5037    );
5038    proto.years = deprecate(
5039        'years accessor is deprecated. Use year instead',
5040        getSetYear
5041    );
5042    proto.zone = deprecate(
5043        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
5044        getSetZone
5045    );
5046    proto.isDSTShifted = deprecate(
5047        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
5048        isDaylightSavingTimeShifted
5049    );
5050
5051    function createUnix(input) {
5052        return createLocal(input * 1000);
5053    }
5054
5055    function createInZone() {
5056        return createLocal.apply(null, arguments).parseZone();
5057    }
5058
5059    function preParsePostFormat(string) {
5060        return string;
5061    }
5062
5063    var proto$1 = Locale.prototype;
5064
5065    proto$1.calendar = calendar;
5066    proto$1.longDateFormat = longDateFormat;
5067    proto$1.invalidDate = invalidDate;
5068    proto$1.ordinal = ordinal;
5069    proto$1.preparse = preParsePostFormat;
5070    proto$1.postformat = preParsePostFormat;
5071    proto$1.relativeTime = relativeTime;
5072    proto$1.pastFuture = pastFuture;
5073    proto$1.set = set;
5074    proto$1.eras = localeEras;
5075    proto$1.erasParse = localeErasParse;
5076    proto$1.erasConvertYear = localeErasConvertYear;
5077    proto$1.erasAbbrRegex = erasAbbrRegex;
5078    proto$1.erasNameRegex = erasNameRegex;
5079    proto$1.erasNarrowRegex = erasNarrowRegex;
5080
5081    proto$1.months = localeMonths;
5082    proto$1.monthsShort = localeMonthsShort;
5083    proto$1.monthsParse = localeMonthsParse;
5084    proto$1.monthsRegex = monthsRegex;
5085    proto$1.monthsShortRegex = monthsShortRegex;
5086    proto$1.week = localeWeek;
5087    proto$1.firstDayOfYear = localeFirstDayOfYear;
5088    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
5089
5090    proto$1.weekdays = localeWeekdays;
5091    proto$1.weekdaysMin = localeWeekdaysMin;
5092    proto$1.weekdaysShort = localeWeekdaysShort;
5093    proto$1.weekdaysParse = localeWeekdaysParse;
5094
5095    proto$1.weekdaysRegex = weekdaysRegex;
5096    proto$1.weekdaysShortRegex = weekdaysShortRegex;
5097    proto$1.weekdaysMinRegex = weekdaysMinRegex;
5098
5099    proto$1.isPM = localeIsPM;
5100    proto$1.meridiem = localeMeridiem;
5101
5102    function get$1(format, index, field, setter) {
5103        var locale = getLocale(),
5104            utc = createUTC().set(setter, index);
5105        return locale[field](utc, format);
5106    }
5107
5108    function listMonthsImpl(format, index, field) {
5109        if (isNumber(format)) {
5110            index = format;
5111            format = undefined;
5112        }
5113
5114        format = format || '';
5115
5116        if (index != null) {
5117            return get$1(format, index, field, 'month');
5118        }
5119
5120        var i,
5121            out = [];
5122        for (i = 0; i < 12; i++) {
5123            out[i] = get$1(format, i, field, 'month');
5124        }
5125        return out;
5126    }
5127
5128    // ()
5129    // (5)
5130    // (fmt, 5)
5131    // (fmt)
5132    // (true)
5133    // (true, 5)
5134    // (true, fmt, 5)
5135    // (true, fmt)
5136    function listWeekdaysImpl(localeSorted, format, index, field) {
5137        if (typeof localeSorted === 'boolean') {
5138            if (isNumber(format)) {
5139                index = format;
5140                format = undefined;
5141            }
5142
5143            format = format || '';
5144        } else {
5145            format = localeSorted;
5146            index = format;
5147            localeSorted = false;
5148
5149            if (isNumber(format)) {
5150                index = format;
5151                format = undefined;
5152            }
5153
5154            format = format || '';
5155        }
5156
5157        var locale = getLocale(),
5158            shift = localeSorted ? locale._week.dow : 0,
5159            i,
5160            out = [];
5161
5162        if (index != null) {
5163            return get$1(format, (index + shift) % 7, field, 'day');
5164        }
5165
5166        for (i = 0; i < 7; i++) {
5167            out[i] = get$1(format, (i + shift) % 7, field, 'day');
5168        }
5169        return out;
5170    }
5171
5172    function listMonths(format, index) {
5173        return listMonthsImpl(format, index, 'months');
5174    }
5175
5176    function listMonthsShort(format, index) {
5177        return listMonthsImpl(format, index, 'monthsShort');
5178    }
5179
5180    function listWeekdays(localeSorted, format, index) {
5181        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
5182    }
5183
5184    function listWeekdaysShort(localeSorted, format, index) {
5185        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
5186    }
5187
5188    function listWeekdaysMin(localeSorted, format, index) {
5189        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
5190    }
5191
5192    getSetGlobalLocale('en', {
5193        eras: [
5194            {
5195                since: '0001-01-01',
5196                until: +Infinity,
5197                offset: 1,
5198                name: 'Anno Domini',
5199                narrow: 'AD',
5200                abbr: 'AD',
5201            },
5202            {
5203                since: '0000-12-31',
5204                until: -Infinity,
5205                offset: 1,
5206                name: 'Before Christ',
5207                narrow: 'BC',
5208                abbr: 'BC',
5209            },
5210        ],
5211        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
5212        ordinal: function (number) {
5213            var b = number % 10,
5214                output =
5215                    toInt((number % 100) / 10) === 1
5216                        ? 'th'
5217                        : b === 1
5218                        ? 'st'
5219                        : b === 2
5220                        ? 'nd'
5221                        : b === 3
5222                        ? 'rd'
5223                        : 'th';
5224            return number + output;
5225        },
5226    });
5227
5228    // Side effect imports
5229
5230    hooks.lang = deprecate(
5231        'moment.lang is deprecated. Use moment.locale instead.',
5232        getSetGlobalLocale
5233    );
5234    hooks.langData = deprecate(
5235        'moment.langData is deprecated. Use moment.localeData instead.',
5236        getLocale
5237    );
5238
5239    var mathAbs = Math.abs;
5240
5241    function abs() {
5242        var data = this._data;
5243
5244        this._milliseconds = mathAbs(this._milliseconds);
5245        this._days = mathAbs(this._days);
5246        this._months = mathAbs(this._months);
5247
5248        data.milliseconds = mathAbs(data.milliseconds);
5249        data.seconds = mathAbs(data.seconds);
5250        data.minutes = mathAbs(data.minutes);
5251        data.hours = mathAbs(data.hours);
5252        data.months = mathAbs(data.months);
5253        data.years = mathAbs(data.years);
5254
5255        return this;
5256    }
5257
5258    function addSubtract$1(duration, input, value, direction) {
5259        var other = createDuration(input, value);
5260
5261        duration._milliseconds += direction * other._milliseconds;
5262        duration._days += direction * other._days;
5263        duration._months += direction * other._months;
5264
5265        return duration._bubble();
5266    }
5267
5268    // supports only 2.0-style add(1, 's') or add(duration)
5269    function add$1(input, value) {
5270        return addSubtract$1(this, input, value, 1);
5271    }
5272
5273    // supports only 2.0-style subtract(1, 's') or subtract(duration)
5274    function subtract$1(input, value) {
5275        return addSubtract$1(this, input, value, -1);
5276    }
5277
5278    function absCeil(number) {
5279        if (number < 0) {
5280            return Math.floor(number);
5281        } else {
5282            return Math.ceil(number);
5283        }
5284    }
5285
5286    function bubble() {
5287        var milliseconds = this._milliseconds,
5288            days = this._days,
5289            months = this._months,
5290            data = this._data,
5291            seconds,
5292            minutes,
5293            hours,
5294            years,
5295            monthsFromDays;
5296
5297        // if we have a mix of positive and negative values, bubble down first
5298        // check: https://github.com/moment/moment/issues/2166
5299        if (
5300            !(
5301                (milliseconds >= 0 && days >= 0 && months >= 0) ||
5302                (milliseconds <= 0 && days <= 0 && months <= 0)
5303            )
5304        ) {
5305            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
5306            days = 0;
5307            months = 0;
5308        }
5309
5310        // The following code bubbles up values, see the tests for
5311        // examples of what that means.
5312        data.milliseconds = milliseconds % 1000;
5313
5314        seconds = absFloor(milliseconds / 1000);
5315        data.seconds = seconds % 60;
5316
5317        minutes = absFloor(seconds / 60);
5318        data.minutes = minutes % 60;
5319
5320        hours = absFloor(minutes / 60);
5321        data.hours = hours % 24;
5322
5323        days += absFloor(hours / 24);
5324
5325        // convert days to months
5326        monthsFromDays = absFloor(daysToMonths(days));
5327        months += monthsFromDays;
5328        days -= absCeil(monthsToDays(monthsFromDays));
5329
5330        // 12 months -> 1 year
5331        years = absFloor(months / 12);
5332        months %= 12;
5333
5334        data.days = days;
5335        data.months = months;
5336        data.years = years;
5337
5338        return this;
5339    }
5340
5341    function daysToMonths(days) {
5342        // 400 years have 146097 days (taking into account leap year rules)
5343        // 400 years have 12 months === 4800
5344        return (days * 4800) / 146097;
5345    }
5346
5347    function monthsToDays(months) {
5348        // the reverse of daysToMonths
5349        return (months * 146097) / 4800;
5350    }
5351
5352    function as(units) {
5353        if (!this.isValid()) {
5354            return NaN;
5355        }
5356        var days,
5357            months,
5358            milliseconds = this._milliseconds;
5359
5360        units = normalizeUnits(units);
5361
5362        if (units === 'month' || units === 'quarter' || units === 'year') {
5363            days = this._days + milliseconds / 864e5;
5364            months = this._months + daysToMonths(days);
5365            switch (units) {
5366                case 'month':
5367                    return months;
5368                case 'quarter':
5369                    return months / 3;
5370                case 'year':
5371                    return months / 12;
5372            }
5373        } else {
5374            // handle milliseconds separately because of floating point math errors (issue #1867)
5375            days = this._days + Math.round(monthsToDays(this._months));
5376            switch (units) {
5377                case 'week':
5378                    return days / 7 + milliseconds / 6048e5;
5379                case 'day':
5380                    return days + milliseconds / 864e5;
5381                case 'hour':
5382                    return days * 24 + milliseconds / 36e5;
5383                case 'minute':
5384                    return days * 1440 + milliseconds / 6e4;
5385                case 'second':
5386                    return days * 86400 + milliseconds / 1000;
5387                // Math.floor prevents floating point math errors here
5388                case 'millisecond':
5389                    return Math.floor(days * 864e5) + milliseconds;
5390                default:
5391                    throw new Error('Unknown unit ' + units);
5392            }
5393        }
5394    }
5395
5396    // TODO: Use this.as('ms')?
5397    function valueOf$1() {
5398        if (!this.isValid()) {
5399            return NaN;
5400        }
5401        return (
5402            this._milliseconds +
5403            this._days * 864e5 +
5404            (this._months % 12) * 2592e6 +
5405            toInt(this._months / 12) * 31536e6
5406        );
5407    }
5408
5409    function makeAs(alias) {
5410        return function () {
5411            return this.as(alias);
5412        };
5413    }
5414
5415    var asMilliseconds = makeAs('ms'),
5416        asSeconds = makeAs('s'),
5417        asMinutes = makeAs('m'),
5418        asHours = makeAs('h'),
5419        asDays = makeAs('d'),
5420        asWeeks = makeAs('w'),
5421        asMonths = makeAs('M'),
5422        asQuarters = makeAs('Q'),
5423        asYears = makeAs('y');
5424
5425    function clone$1() {
5426        return createDuration(this);
5427    }
5428
5429    function get$2(units) {
5430        units = normalizeUnits(units);
5431        return this.isValid() ? this[units + 's']() : NaN;
5432    }
5433
5434    function makeGetter(name) {
5435        return function () {
5436            return this.isValid() ? this._data[name] : NaN;
5437        };
5438    }
5439
5440    var milliseconds = makeGetter('milliseconds'),
5441        seconds = makeGetter('seconds'),
5442        minutes = makeGetter('minutes'),
5443        hours = makeGetter('hours'),
5444        days = makeGetter('days'),
5445        months = makeGetter('months'),
5446        years = makeGetter('years');
5447
5448    function weeks() {
5449        return absFloor(this.days() / 7);
5450    }
5451
5452    var round = Math.round,
5453        thresholds = {
5454            ss: 44, // a few seconds to seconds
5455            s: 45, // seconds to minute
5456            m: 45, // minutes to hour
5457            h: 22, // hours to day
5458            d: 26, // days to month/week
5459            w: null, // weeks to month
5460            M: 11, // months to year
5461        };
5462
5463    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
5464    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
5465        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
5466    }
5467
5468    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
5469        var duration = createDuration(posNegDuration).abs(),
5470            seconds = round(duration.as('s')),
5471            minutes = round(duration.as('m')),
5472            hours = round(duration.as('h')),
5473            days = round(duration.as('d')),
5474            months = round(duration.as('M')),
5475            weeks = round(duration.as('w')),
5476            years = round(duration.as('y')),
5477            a =
5478                (seconds <= thresholds.ss && ['s', seconds]) ||
5479                (seconds < thresholds.s && ['ss', seconds]) ||
5480                (minutes <= 1 && ['m']) ||
5481                (minutes < thresholds.m && ['mm', minutes]) ||
5482                (hours <= 1 && ['h']) ||
5483                (hours < thresholds.h && ['hh', hours]) ||
5484                (days <= 1 && ['d']) ||
5485                (days < thresholds.d && ['dd', days]);
5486
5487        if (thresholds.w != null) {
5488            a =
5489                a ||
5490                (weeks <= 1 && ['w']) ||
5491                (weeks < thresholds.w && ['ww', weeks]);
5492        }
5493        a = a ||
5494            (months <= 1 && ['M']) ||
5495            (months < thresholds.M && ['MM', months]) ||
5496            (years <= 1 && ['y']) || ['yy', years];
5497
5498        a[2] = withoutSuffix;
5499        a[3] = +posNegDuration > 0;
5500        a[4] = locale;
5501        return substituteTimeAgo.apply(null, a);
5502    }
5503
5504    // This function allows you to set the rounding function for relative time strings
5505    function getSetRelativeTimeRounding(roundingFunction) {
5506        if (roundingFunction === undefined) {
5507            return round;
5508        }
5509        if (typeof roundingFunction === 'function') {
5510            round = roundingFunction;
5511            return true;
5512        }
5513        return false;
5514    }
5515
5516    // This function allows you to set a threshold for relative time strings
5517    function getSetRelativeTimeThreshold(threshold, limit) {
5518        if (thresholds[threshold] === undefined) {
5519            return false;
5520        }
5521        if (limit === undefined) {
5522            return thresholds[threshold];
5523        }
5524        thresholds[threshold] = limit;
5525        if (threshold === 's') {
5526            thresholds.ss = limit - 1;
5527        }
5528        return true;
5529    }
5530
5531    function humanize(argWithSuffix, argThresholds) {
5532        if (!this.isValid()) {
5533            return this.localeData().invalidDate();
5534        }
5535
5536        var withSuffix = false,
5537            th = thresholds,
5538            locale,
5539            output;
5540
5541        if (typeof argWithSuffix === 'object') {
5542            argThresholds = argWithSuffix;
5543            argWithSuffix = false;
5544        }
5545        if (typeof argWithSuffix === 'boolean') {
5546            withSuffix = argWithSuffix;
5547        }
5548        if (typeof argThresholds === 'object') {
5549            th = Object.assign({}, thresholds, argThresholds);
5550            if (argThresholds.s != null && argThresholds.ss == null) {
5551                th.ss = argThresholds.s - 1;
5552            }
5553        }
5554
5555        locale = this.localeData();
5556        output = relativeTime$1(this, !withSuffix, th, locale);
5557
5558        if (withSuffix) {
5559            output = locale.pastFuture(+this, output);
5560        }
5561
5562        return locale.postformat(output);
5563    }
5564
5565    var abs$1 = Math.abs;
5566
5567    function sign(x) {
5568        return (x > 0) - (x < 0) || +x;
5569    }
5570
5571    function toISOString$1() {
5572        // for ISO strings we do not use the normal bubbling rules:
5573        //  * milliseconds bubble up until they become hours
5574        //  * days do not bubble at all
5575        //  * months bubble up until they become years
5576        // This is because there is no context-free conversion between hours and days
5577        // (think of clock changes)
5578        // and also not between days and months (28-31 days per month)
5579        if (!this.isValid()) {
5580            return this.localeData().invalidDate();
5581        }
5582
5583        var seconds = abs$1(this._milliseconds) / 1000,
5584            days = abs$1(this._days),
5585            months = abs$1(this._months),
5586            minutes,
5587            hours,
5588            years,
5589            s,
5590            total = this.asSeconds(),
5591            totalSign,
5592            ymSign,
5593            daysSign,
5594            hmsSign;
5595
5596        if (!total) {
5597            // this is the same as C#'s (Noda) and python (isodate)...
5598            // but not other JS (goog.date)
5599            return 'P0D';
5600        }
5601
5602        // 3600 seconds -> 60 minutes -> 1 hour
5603        minutes = absFloor(seconds / 60);
5604        hours = absFloor(minutes / 60);
5605        seconds %= 60;
5606        minutes %= 60;
5607
5608        // 12 months -> 1 year
5609        years = absFloor(months / 12);
5610        months %= 12;
5611
5612        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
5613        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
5614
5615        totalSign = total < 0 ? '-' : '';
5616        ymSign = sign(this._months) !== sign(total) ? '-' : '';
5617        daysSign = sign(this._days) !== sign(total) ? '-' : '';
5618        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
5619
5620        return (
5621            totalSign +
5622            'P' +
5623            (years ? ymSign + years + 'Y' : '') +
5624            (months ? ymSign + months + 'M' : '') +
5625            (days ? daysSign + days + 'D' : '') +
5626            (hours || minutes || seconds ? 'T' : '') +
5627            (hours ? hmsSign + hours + 'H' : '') +
5628            (minutes ? hmsSign + minutes + 'M' : '') +
5629            (seconds ? hmsSign + s + 'S' : '')
5630        );
5631    }
5632
5633    var proto$2 = Duration.prototype;
5634
5635    proto$2.isValid = isValid$1;
5636    proto$2.abs = abs;
5637    proto$2.add = add$1;
5638    proto$2.subtract = subtract$1;
5639    proto$2.as = as;
5640    proto$2.asMilliseconds = asMilliseconds;
5641    proto$2.asSeconds = asSeconds;
5642    proto$2.asMinutes = asMinutes;
5643    proto$2.asHours = asHours;
5644    proto$2.asDays = asDays;
5645    proto$2.asWeeks = asWeeks;
5646    proto$2.asMonths = asMonths;
5647    proto$2.asQuarters = asQuarters;
5648    proto$2.asYears = asYears;
5649    proto$2.valueOf = valueOf$1;
5650    proto$2._bubble = bubble;
5651    proto$2.clone = clone$1;
5652    proto$2.get = get$2;
5653    proto$2.milliseconds = milliseconds;
5654    proto$2.seconds = seconds;
5655    proto$2.minutes = minutes;
5656    proto$2.hours = hours;
5657    proto$2.days = days;
5658    proto$2.weeks = weeks;
5659    proto$2.months = months;
5660    proto$2.years = years;
5661    proto$2.humanize = humanize;
5662    proto$2.toISOString = toISOString$1;
5663    proto$2.toString = toISOString$1;
5664    proto$2.toJSON = toISOString$1;
5665    proto$2.locale = locale;
5666    proto$2.localeData = localeData;
5667
5668    proto$2.toIsoString = deprecate(
5669        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
5670        toISOString$1
5671    );
5672    proto$2.lang = lang;
5673
5674    // FORMATTING
5675
5676    addFormatToken('X', 0, 0, 'unix');
5677    addFormatToken('x', 0, 0, 'valueOf');
5678
5679    // PARSING
5680
5681    addRegexToken('x', matchSigned);
5682    addRegexToken('X', matchTimestamp);
5683    addParseToken('X', function (input, array, config) {
5684        config._d = new Date(parseFloat(input) * 1000);
5685    });
5686    addParseToken('x', function (input, array, config) {
5687        config._d = new Date(toInt(input));
5688    });
5689
5690    //! moment.js
5691
5692    hooks.version = '2.2
56929.1';
5693
5694    setHookCallback(createLocal);
5695
5696    hooks.fn = proto;
5697    hooks.min = min;
5698    hooks.max = max;
5699    hooks.now = now;
5700    hooks.utc = createUTC;
5701    hooks.unix = createUnix;
5702    hooks.months = listMonths;
5703    hooks.isDate = isDate;
5704    hooks.locale = getSetGlobalLocale;
5705    hooks.invalid = createInvalid;
5706    hooks.duration = createDuration;
5707    hooks.isMoment = isMoment;
5708    hooks.weekdays = listWeekdays;
5709    hooks.parseZone = createInZone;
5710    hooks.localeData = getLocale;
5711    hooks.isDuration = isDuration;
5712    hooks.monthsShort = listMonthsShort;
5713    hooks.weekdaysMin = listWeekdaysMin;
5714    hooks.defineLocale = defineLocale;
5715    hooks.updateLocale = updateLocale;
5716    hooks.locales = listLocales;
5717    hooks.weekdaysShort = listWeekdaysShort;
5718    hooks.normalizeUnits = normalizeUnits;
5719    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
5720    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
5721    hooks.calendarFormat = getCalendarFormat;
5722    hooks.prototype = proto;
5723
5724    // currently HTML5 input type only supports 24-hour formats
5725    hooks.HTML5_FMT = {
5726        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
5727        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
5728        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
5729        DATE: 'YYYY-MM-DD', // <input type="date" />
5730        TIME: 'HH:mm', // <input type="time" />
5731        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
5732        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
5733        WEEK: 'GGGG-[W]WW', // <input type="week" />
5734        MONTH: 'YYYY-MM', // <input type="month" />
5735    };
5736
5737    return hooks;
5738
5739})));
5740
5741/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)(module)))
5742
5743/***/ }),
5744/* 1 */
5745/***/ (function(module, exports, __webpack_require__) {
5746
5747/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**
5748 * @license
5749 * Lodash <https://lodash.com/>
5750 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
5751 * Released under MIT license <https://lodash.com/license>
5752 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
5753 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
5754 */
5755;(function() {
5756
5757  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
5758  var undefined
vendor: 12,195 bytes, lines 5758-6061
5758;
5759
5760  /** Used as the semantic version number. */
5761  var VERSION = '4.17.21';
5762
5763  /** Used as the size to enable large array optimizations. */
5764  var LARGE_ARRAY_SIZE = 200;
5765
5766  /** Error message constants. */
5767  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
5768      FUNC_ERROR_TEXT = 'Expected a function',
5769      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
5770
5771  /** Used to stand-in for `undefined` hash values. */
5772  var HASH_UNDEFINED = '__lodash_hash_undefined__';
5773
5774  /** Used as the maximum memoize cache size. */
5775  var MAX_MEMOIZE_SIZE = 500;
5776
5777  /** Used as the internal argument placeholder. */
5778  var PLACEHOLDER = '__lodash_placeholder__';
5779
5780  /** Used to compose bitmasks for cloning. */
5781  var CLONE_DEEP_FLAG = 1,
5782      CLONE_FLAT_FLAG = 2,
5783      CLONE_SYMBOLS_FLAG = 4;
5784
5785  /** Used to compose bitmasks for value comparisons. */
5786  var COMPARE_PARTIAL_FLAG = 1,
5787      COMPARE_UNORDERED_FLAG = 2;
5788
5789  /** Used to compose bitmasks for function metadata. */
5790  var WRAP_BIND_FLAG = 1,
5791      WRAP_BIND_KEY_FLAG = 2,
5792      WRAP_CURRY_BOUND_FLAG = 4,
5793      WRAP_CURRY_FLAG = 8,
5794      WRAP_CURRY_RIGHT_FLAG = 16,
5795      WRAP_PARTIAL_FLAG = 32,
5796      WRAP_PARTIAL_RIGHT_FLAG = 64,
5797      WRAP_ARY_FLAG = 128,
5798      WRAP_REARG_FLAG = 256,
5799      WRAP_FLIP_FLAG = 512;
5800
5801  /** Used as default options for `_.truncate`. */
5802  var DEFAULT_TRUNC_LENGTH = 30,
5803      DEFAULT_TRUNC_OMISSION = '...';
5804
5805  /** Used to detect hot functions by number of calls within a span of milliseconds. */
5806  var HOT_COUNT = 800,
5807      HOT_SPAN = 16;
5808
5809  /** Used to indicate the type of lazy iteratees. */
5810  var LAZY_FILTER_FLAG = 1,
5811      LAZY_MAP_FLAG = 2,
5812      LAZY_WHILE_FLAG = 3;
5813
5814  /** Used as references for various `Number` constants. */
5815  var INFINITY = 1 / 0,
5816      MAX_SAFE_INTEGER = 9007199254740991,
5817      MAX_INTEGER = 1.7976931348623157e+308,
5818      NAN = 0 / 0;
5819
5820  /** Used as references for the maximum length and index of an array. */
5821  var MAX_ARRAY_LENGTH = 4294967295,
5822      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
5823      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
5824
5825  /** Used to associate wrap methods with their bit flags. */
5826  var wrapFlags = [
5827    ['ary', WRAP_ARY_FLAG],
5828    ['bind', WRAP_BIND_FLAG],
5829    ['bindKey', WRAP_BIND_KEY_FLAG],
5830    ['curry', WRAP_CURRY_FLAG],
5831    ['curryRight', WRAP_CURRY_RIGHT_FLAG],
5832    ['flip', WRAP_FLIP_FLAG],
5833    ['partial', WRAP_PARTIAL_FLAG],
5834    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
5835    ['rearg', WRAP_REARG_FLAG]
5836  ];
5837
5838  /** `Object#toString` result references. */
5839  var argsTag = '[object Arguments]',
5840      arrayTag = '[object Array]',
5841      asyncTag = '[object AsyncFunction]',
5842      boolTag = '[object Boolean]',
5843      dateTag = '[object Date]',
5844      domExcTag = '[object DOMException]',
5845      errorTag = '[object Error]',
5846      funcTag = '[object Function]',
5847      genTag = '[object GeneratorFunction]',
5848      mapTag = '[object Map]',
5849      numberTag = '[object Number]',
5850      nullTag = '[object Null]',
5851      objectTag = '[object Object]',
5852      promiseTag = '[object Promise]',
5853      proxyTag = '[object Proxy]',
5854      regexpTag = '[object RegExp]',
5855      setTag = '[object Set]',
5856      stringTag = '[object String]',
5857      symbolTag = '[object Symbol]',
5858      undefinedTag = '[object Undefined]',
5859      weakMapTag = '[object WeakMap]',
5860      weakSetTag = '[object WeakSet]';
5861
5862  var arrayBufferTag = '[object ArrayBuffer]',
5863      dataViewTag = '[object DataView]',
5864      float32Tag = '[object Float32Array]',
5865      float64Tag = '[object Float64Array]',
5866      int8Tag = '[object Int8Array]',
5867      int16Tag = '[object Int16Array]',
5868      int32Tag = '[object Int32Array]',
5869      uint8Tag = '[object Uint8Array]',
5870      uint8ClampedTag = '[object Uint8ClampedArray]',
5871      uint16Tag = '[object Uint16Array]',
5872      uint32Tag = '[object Uint32Array]';
5873
5874  /** Used to match empty string literals in compiled template source. */
5875  var reEmptyStringLeading = /\b__p \+= '';/g,
5876      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
5877      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
5878
5879  /** Used to match HTML entities and HTML characters. */
5880  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
5881      reUnescapedHtml = /[&<>"']/g,
5882      reHasEscapedHtml = RegExp(reEscapedHtml.source),
5883      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
5884
5885  /** Used to match template delimiters. */
5886  var reEscape = /<%-([\s\S]+?)%>/g,
5887      reEvaluate = /<%([\s\S]+?)%>/g,
5888      reInterpolate = /<%=([\s\S]+?)%>/g;
5889
5890  /** Used to match property names within property paths. */
5891  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
5892      reIsPlainProp = /^\w*$/,
5893      rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
5894
5895  /**
5896   * Used to match `RegExp`
5897   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
5898   */
5899  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
5900      reHasRegExpChar = RegExp(reRegExpChar.source);
5901
5902  /** Used to match leading whitespace. */
5903  var reTrimStart = /^\s+/;
5904
5905  /** Used to match a single whitespace character. */
5906  var reWhitespace = /\s/;
5907
5908  /** Used to match wrap detail comments. */
5909  var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
5910      reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
5911      reSplitDetails = /,? & /;
5912
5913  /** Used to match words composed of alphanumeric characters. */
5914  var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
5915
5916  /**
5917   * Used to validate the `validate` option in `_.template` variable.
5918   *
5919   * Forbids characters which could potentially change the meaning of the function argument definition:
5920   * - "()," (modification of function parameters)
5921   * - "=" (default value)
5922   * - "[]{}" (destructuring of function parameters)
5923   * - "/" (beginning of a comment)
5924   * - whitespace
5925   */
5926  var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
5927
5928  /** Used to match backslashes in property paths. */
5929  var reEscapeChar = /\\(\\)?/g;
5930
5931  /**
5932   * Used to match
5933   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
5934   */
5935  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
5936
5937  /** Used to match `RegExp` flags from their coerced string values. */
5938  var reFlags = /\w*$/;
5939
5940  /** Used to detect bad signed hexadecimal string values. */
5941  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
5942
5943  /** Used to detect binary string values. */
5944  var reIsBinary = /^0b[01]+$/i;
5945
5946  /** Used to detect host constructors (Safari). */
5947  var reIsHostCtor = /^\[object .+?Constructor\]$/;
5948
5949  /** Used to detect octal string values. */
5950  var reIsOctal = /^0o[0-7]+$/i;
5951
5952  /** Used to detect unsigned integer values. */
5953  var reIsUint = /^(?:0|[1-9]\d*)$/;
5954
5955  /** Used to match Latin Unicode letters (excluding mathematical operators). */
5956  var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
5957
5958  /** Used to ensure capturing order of template delimiters. */
5959  var reNoMatch = /($^)/;
5960
5961  /** Used to match unescaped characters in compiled string literals. */
5962  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
5963
5964  /** Used to compose unicode character classes. */
5965  var rsAstralRange = '\\ud800-\\udfff',
5966      rsComboMarksRange = '\\u0300-\\u036f',
5967      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
5968      rsComboSymbolsRange = '\\u20d0-\\u20ff',
5969      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
5970      rsDingbatRange = '\\u2700-\\u27bf',
5971      rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
5972      rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
5973      rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
5974      rsPunctuationRange = '\\u2000-\\u206f',
5975      rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
5976      rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
5977      rsVarRange = '\\ufe0e\\ufe0f',
5978      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
5979
5980  /** Used to compose unicode capture groups. */
5981  var rsApos = "['\u2019]",
5982      rsAstral = '[' + rsAstralRange + ']',
5983      rsBreak = '[' + rsBreakRange + ']',
5984      rsCombo = '[' + rsComboRange + ']',
5985      rsDigits = '\\d+',
5986      rsDingbat = '[' + rsDingbatRange + ']',
5987      rsLower = '[' + rsLowerRange + ']',
5988      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
5989      rsFitz = '\\ud83c[\\udffb-\\udfff]',
5990      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
5991      rsNonAstral = '[^' + rsAstralRange + ']',
5992      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
5993      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
5994      rsUpper = '[' + rsUpperRange + ']',
5995      rsZWJ = '\\u200d';
5996
5997  /** Used to compose unicode regexes. */
5998  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
5999      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
6000      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
6001      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
6002      reOptMod = rsModifier + '?',
6003      rsOptVar = '[' + rsVarRange + ']?',
6004      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
6005      rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
6006      rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
6007      rsSeq = rsOptVar + reOptMod + rsOptJoin,
6008      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
6009      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
6010
6011  /** Used to match apostrophes. */
6012  var reApos = RegExp(rsApos, 'g');
6013
6014  /**
6015   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
6016   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
6017   */
6018  var reComboMark = RegExp(rsCombo, 'g');
6019
6020  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
6021  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
6022
6023  /** Used to match complex or compound words. */
6024  var reUnicodeWord = RegExp([
6025    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
6026    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
6027    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
6028    rsUpper + '+' + rsOptContrUpper,
6029    rsOrdUpper,
6030    rsOrdLower,
6031    rsDigits,
6032    rsEmoji
6033  ].join('|'), 'g');
6034
6035  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
6036  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
6037
6038  /** Used to detect strings that need a more robust regexp to match words. */
6039  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
6040
6041  /** Used to assign default `context` object properties. */
6042  var contextProps = [
6043    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
6044    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
6045    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
6046    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
6047    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
6048  ];
6049
6050  /** Used to make template sourceURLs easier to identify. */
6051  var templateCounter = -1;
6052
6053  /** Used to identify `toStringTag` values of typed arrays. */
6054  var typedArrayTags = {};
6055  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
6056  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
6057  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
6058  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
6059  typedArrayTags[uint32Tag] = true;
6060  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
6061  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
vendor: 5,923 bytes, lines 6062-6196
6062  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
6063  typedArrayTags[errorTag] = typedArrayTags[funcTag] =
6064  typedArrayTags[mapTag] = typedArrayTags[numberTag] =
6065  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
6066  typedArrayTags[setTag] = typedArrayTags[stringTag] =
6067  typedArrayTags[weakMapTag] = false;
6068
6069  /** Used to identify `toStringTag` values supported by `_.clone`. */
6070  var cloneableTags = {};
6071  cloneableTags[argsTag] = cloneableTags[arrayTag] =
6072  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
6073  cloneableTags[boolTag] = cloneableTags[dateTag] =
6074  cloneableTags[float32Tag] = cloneableTags[float64Tag] =
6075  cloneableTags[int8Tag] = cloneableTags[int16Tag] =
6076  cloneableTags[int32Tag] = cloneableTags[mapTag] =
6077  cloneableTags[numberTag] = cloneableTags[objectTag] =
6078  cloneableTags[regexpTag] = cloneableTags[setTag] =
6079  cloneableTags[stringTag] = cloneableTags[symbolTag] =
6080  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
6081  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
6082  cloneableTags[errorTag] = cloneableTags[funcTag] =
6083  cloneableTags[weakMapTag] = false;
6084
6085  /** Used to map Latin Unicode letters to basic Latin letters. */
6086  var deburredLetters = {
6087    // Latin-1 Supplement block.
6088    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
6089    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
6090    '\xc7': 'C',  '\xe7': 'c',
6091    '\xd0': 'D',  '\xf0': 'd',
6092    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
6093    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
6094    '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
6095    '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
6096    '\xd1': 'N',  '\xf1': 'n',
6097    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
6098    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
6099    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
6100    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
6101    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
6102    '\xc6': 'Ae', '\xe6': 'ae',
6103    '\xde': 'Th', '\xfe': 'th',
6104    '\xdf': 'ss',
6105    // Latin Extended-A block.
6106    '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
6107    '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
6108    '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
6109    '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
6110    '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
6111    '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
6112    '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
6113    '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
6114    '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
6115    '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
6116    '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
6117    '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
6118    '\u0134': 'J',  '\u0135': 'j',
6119    '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
6120    '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
6121    '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
6122    '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
6123    '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
6124    '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
6125    '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
6126    '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
6127    '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
6128    '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
6129    '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
6130    '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
6131    '\u0163': 't',  '\u0165': 't', '\u0167': 't',
6132    '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
6133    '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
6134    '\u0174': 'W',  '\u0175': 'w',
6135    '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
6136    '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
6137    '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
6138    '\u0132': 'IJ', '\u0133': 'ij',
6139    '\u0152': 'Oe', '\u0153': 'oe',
6140    '\u0149': "'n", '\u017f': 's'
6141  };
6142
6143  /** Used to map characters to HTML entities. */
6144  var htmlEscapes = {
6145    '&': '&amp;',
6146    '<': '&lt;',
6147    '>': '&gt;',
6148    '"': '&quot;',
6149    "'": '&#39;'
6150  };
6151
6152  /** Used to map HTML entities to characters. */
6153  var htmlUnescapes = {
6154    '&amp;': '&',
6155    '&lt;': '<',
6156    '&gt;': '>',
6157    '&quot;': '"',
6158    '&#39;': "'"
6159  };
6160
6161  /** Used to escape characters for inclusion in compiled string literals. */
6162  var stringEscapes = {
6163    '\\': '\\',
6164    "'": "'",
6165    '\n': 'n',
6166    '\r': 'r',
6167    '\u2028': 'u2028',
6168    '\u2029': 'u2029'
6169  };
6170
6171  /** Built-in method references without a dependency on `root`. */
6172  var freeParseFloat = parseFloat,
6173      freeParseInt = parseInt;
6174
6175  /** Detect free variable `global` from Node.js. */
6176  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
6177
6178  /** Detect free variable `self`. */
6179  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
6180
6181  /** Used as a reference to the global object. */
6182  var root = freeGlobal || freeSelf || Function('return this')();
6183
6184  /** Detect free variable `exports`. */
6185  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
6186
6187  /** Detect free variable `module`. */
6188  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
6189
6190  /** Detect the popular CommonJS extension `module.exports`. */
6191  var moduleExports = freeModule && freeModule.exports === freeExports;
6192
6193  /** Detect free variable `process` from Node.js. */
6194  var freeProcess = moduleExports && freeGlobal.process;
6195
6196  /** Used to access faster Node.js helpers. */
vendor: 8,860 bytes, lines 6197-6490
6197  var nodeUtil = (function() {
6198    try {
6199      // Use `util.types` for Node.js 10+.
6200      var types = freeModule && freeModule.require && freeModule.require('util').types;
6201
6202      if (types) {
6203        return types;
6204      }
6205
6206      // Legacy `process.binding('util')` for Node.js < 10.
6207      return freeProcess && freeProcess.binding && freeProcess.binding('util');
6208    } catch (e) {}
6209  }());
6210
6211  /* Node.js helper references. */
6212  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
6213      nodeIsDate = nodeUtil && nodeUtil.isDate,
6214      nodeIsMap = nodeUtil && nodeUtil.isMap,
6215      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
6216      nodeIsSet = nodeUtil && nodeUtil.isSet,
6217      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
6218
6219  /*--------------------------------------------------------------------------*/
6220
6221  /**
6222   * A faster alternative to `Function#apply`, this function invokes `func`
6223   * with the `this` binding of `thisArg` and the arguments of `args`.
6224   *
6225   * @private
6226   * @param {Function} func The function to invoke.
6227   * @param {*} thisArg The `this` binding of `func`.
6228   * @param {Array} args The arguments to invoke `func` with.
6229   * @returns {*} Returns the result of `func`.
6230   */
6231  function apply(func, thisArg, args) {
6232    switch (args.length) {
6233      case 0: return func.call(thisArg);
6234      case 1: return func.call(thisArg, args[0]);
6235      case 2: return func.call(thisArg, args[0], args[1]);
6236      case 3: return func.call(thisArg, args[0], args[1], args[2]);
6237    }
6238    return func.apply(thisArg, args);
6239  }
6240
6241  /**
6242   * A specialized version of `baseAggregator` for arrays.
6243   *
6244   * @private
6245   * @param {Array} [array] The array to iterate over.
6246   * @param {Function} setter The function to set `accumulator` values.
6247   * @param {Function} iteratee The iteratee to transform keys.
6248   * @param {Object} accumulator The initial aggregated object.
6249   * @returns {Function} Returns `accumulator`.
6250   */
6251  function arrayAggregator(array, setter, iteratee, accumulator) {
6252    var index = -1,
6253        length = array == null ? 0 : array.length;
6254
6255    while (++index < length) {
6256      var value = array[index];
6257      setter(accumulator, value, iteratee(value), array);
6258    }
6259    return accumulator;
6260  }
6261
6262  /**
6263   * A specialized version of `_.forEach` for arrays without support for
6264   * iteratee shorthands.
6265   *
6266   * @private
6267   * @param {Array} [array] The array to iterate over.
6268   * @param {Function} iteratee The function invoked per iteration.
6269   * @returns {Array} Returns `array`.
6270   */
6271  function arrayEach(array, iteratee) {
6272    var index = -1,
6273        length = array == null ? 0 : array.length;
6274
6275    while (++index < length) {
6276      if (iteratee(array[index], index, array) === false) {
6277        break;
6278      }
6279    }
6280    return array;
6281  }
6282
6283  /**
6284   * A specialized version of `_.forEachRight` for arrays without support for
6285   * iteratee shorthands.
6286   *
6287   * @private
6288   * @param {Array} [array] The array to iterate over.
6289   * @param {Function} iteratee The function invoked per iteration.
6290   * @returns {Array} Returns `array`.
6291   */
6292  function arrayEachRight(array, iteratee) {
6293    var length = array == null ? 0 : array.length;
6294
6295    while (length--) {
6296      if (iteratee(array[length], length, array) === false) {
6297        break;
6298      }
6299    }
6300    return array;
6301  }
6302
6303  /**
6304   * A specialized version of `_.every` for arrays without support for
6305   * iteratee shorthands.
6306   *
6307   * @private
6308   * @param {Array} [array] The array to iterate over.
6309   * @param {Function} predicate The function invoked per iteration.
6310   * @returns {boolean} Returns `true` if all elements pass the predicate check,
6311   *  else `false`.
6312   */
6313  function arrayEvery(array, predicate) {
6314    var index = -1,
6315        length = array == null ? 0 : array.length;
6316
6317    while (++index < length) {
6318      if (!predicate(array[index], index, array)) {
6319        return false;
6320      }
6321    }
6322    return true;
6323  }
6324
6325  /**
6326   * A specialized version of `_.filter` for arrays without support for
6327   * iteratee shorthands.
6328   *
6329   * @private
6330   * @param {Array} [array] The array to iterate over.
6331   * @param {Function} predicate The function invoked per iteration.
6332   * @returns {Array} Returns the new filtered array.
6333   */
6334  function arrayFilter(array, predicate) {
6335    var index = -1,
6336        length = array == null ? 0 : array.length,
6337        resIndex = 0,
6338        result = [];
6339
6340    while (++index < length) {
6341      var value = array[index];
6342      if (predicate(value, index, array)) {
6343        result[resIndex++] = value;
6344      }
6345    }
6346    return result;
6347  }
6348
6349  /**
6350   * A specialized version of `_.includes` for arrays without support for
6351   * specifying an index to search from.
6352   *
6353   * @private
6354   * @param {Array} [array] The array to inspect.
6355   * @param {*} target The value to search for.
6356   * @returns {boolean} Returns `true` if `target` is found, else `false`.
6357   */
6358  function arrayIncludes(array, value) {
6359    var length = array == null ? 0 : array.length;
6360    return !!length && baseIndexOf(array, value, 0) > -1;
6361  }
6362
6363  /**
6364   * This function is like `arrayIncludes` except that it accepts a comparator.
6365   *
6366   * @private
6367   * @param {Array} [array] The array to inspect.
6368   * @param {*} target The value to search for.
6369   * @param {Function} comparator The comparator invoked per element.
6370   * @returns {boolean} Returns `true` if `target` is found, else `false`.
6371   */
6372  function arrayIncludesWith(array, value, comparator) {
6373    var index = -1,
6374        length = array == null ? 0 : array.length;
6375
6376    while (++index < length) {
6377      if (comparator(value, array[index])) {
6378        return true;
6379      }
6380    }
6381    return false;
6382  }
6383
6384  /**
6385   * A specialized version of `_.map` for arrays without support for iteratee
6386   * shorthands.
6387   *
6388   * @private
6389   * @param {Array} [array] The array to iterate over.
6390   * @param {Function} iteratee The function invoked per iteration.
6391   * @returns {Array} Returns the new mapped array.
6392   */
6393  function arrayMap(array, iteratee) {
6394    var index = -1,
6395        length = array == null ? 0 : array.length,
6396        result = Array(length);
6397
6398    while (++index < length) {
6399      result[index] = iteratee(array[index], index, array);
6400    }
6401    return result;
6402  }
6403
6404  /**
6405   * Appends the elements of `values` to `array`.
6406   *
6407   * @private
6408   * @param {Array} array The array to modify.
6409   * @param {Array} values The values to append.
6410   * @returns {Array} Returns `array`.
6411   */
6412  function arrayPush(array, values) {
6413    var index = -1,
6414        length = values.length,
6415        offset = array.length;
6416
6417    while (++index < length) {
6418      array[offset + index] = values[index];
6419    }
6420    return array;
6421  }
6422
6423  /**
6424   * A specialized version of `_.reduce` for arrays without support for
6425   * iteratee shorthands.
6426   *
6427   * @private
6428   * @param {Array} [array] The array to iterate over.
6429   * @param {Function} iteratee The function invoked per iteration.
6430   * @param {*} [accumulator] The initial value.
6431   * @param {boolean} [initAccum] Specify using the first element of `array` as
6432   *  the initial value.
6433   * @returns {*} Returns the accumulated value.
6434   */
6435  function arrayReduce(array, iteratee, accumulator, initAccum) {
6436    var index = -1,
6437        length = array == null ? 0 : array.length;
6438
6439    if (initAccum && length) {
6440      accumulator = array[++index];
6441    }
6442    while (++index < length) {
6443      accumulator = iteratee(accumulator, array[index], index, array);
6444    }
6445    return accumulator;
6446  }
6447
6448  /**
6449   * A specialized version of `_.reduceRight` for arrays without support for
6450   * iteratee shorthands.
6451   *
6452   * @private
6453   * @param {Array} [array] The array to iterate over.
6454   * @param {Function} iteratee The function invoked per iteration.
6455   * @param {*} [accumulator] The initial value.
6456   * @param {boolean} [initAccum] Specify using the last element of `array` as
6457   *  the initial value.
6458   * @returns {*} Returns the accumulated value.
6459   */
6460  function arrayReduceRight(array, iteratee, accumulator, initAccum) {
6461    var length = array == null ? 0 : array.length;
6462    if (initAccum && length) {
6463      accumulator = array[--length];
6464    }
6465    while (length--) {
6466      accumulator = iteratee(accumulator, array[length], length, array);
6467    }
6468    return accumulator;
6469  }
6470
6471  /**
6472   * A specialized version of `_.some` for arrays without support for iteratee
6473   * shorthands.
6474   *
6475   * @private
6476   * @param {Array} [array] The array to iterate over.
6477   * @param {Function} predicate The function invoked per iteration.
6478   * @returns {boolean} Returns `true` if any element passes the predicate check,
6479   *  else `false`.
6480   */
6481  function arraySome(array, predicate) {
6482    var index = -1,
6483        length = array == null ? 0 : array.length;
6484
6485    while (++index < length) {
6486      if (predicate(array[index], index, array)) {
6487        return true;
6488      }
6489    }
6490    return false;
vendor: 12,899 bytes, lines 6491-6928
6491  }
6492
6493  /**
6494   * Gets the size of an ASCII `string`.
6495   *
6496   * @private
6497   * @param {string} string The string inspect.
6498   * @returns {number} Returns the string size.
6499   */
6500  var asciiSize = baseProperty('length');
6501
6502  /**
6503   * Converts an ASCII `string` to an array.
6504   *
6505   * @private
6506   * @param {string} string The string to convert.
6507   * @returns {Array} Returns the converted array.
6508   */
6509  function asciiToArray(string) {
6510    return string.split('');
6511  }
6512
6513  /**
6514   * Splits an ASCII `string` into an array of its words.
6515   *
6516   * @private
6517   * @param {string} The string to inspect.
6518   * @returns {Array} Returns the words of `string`.
6519   */
6520  function asciiWords(string) {
6521    return string.match(reAsciiWord) || [];
6522  }
6523
6524  /**
6525   * The base implementation of methods like `_.findKey` and `_.findLastKey`,
6526   * without support for iteratee shorthands, which iterates over `collection`
6527   * using `eachFunc`.
6528   *
6529   * @private
6530   * @param {Array|Object} collection The collection to inspect.
6531   * @param {Function} predicate The function invoked per iteration.
6532   * @param {Function} eachFunc The function to iterate over `collection`.
6533   * @returns {*} Returns the found element or its key, else `undefined`.
6534   */
6535  function baseFindKey(collection, predicate, eachFunc) {
6536    var result;
6537    eachFunc(collection, function(value, key, collection) {
6538      if (predicate(value, key, collection)) {
6539        result = key;
6540        return false;
6541      }
6542    });
6543    return result;
6544  }
6545
6546  /**
6547   * The base implementation of `_.findIndex` and `_.findLastIndex` without
6548   * support for iteratee shorthands.
6549   *
6550   * @private
6551   * @param {Array} array The array to inspect.
6552   * @param {Function} predicate The function invoked per iteration.
6553   * @param {number} fromIndex The index to search from.
6554   * @param {boolean} [fromRight] Specify iterating from right to left.
6555   * @returns {number} Returns the index of the matched value, else `-1`.
6556   */
6557  function baseFindIndex(array, predicate, fromIndex, fromRight) {
6558    var length = array.length,
6559        index = fromIndex + (fromRight ? 1 : -1);
6560
6561    while ((fromRight ? index-- : ++index < length)) {
6562      if (predicate(array[index], index, array)) {
6563        return index;
6564      }
6565    }
6566    return -1;
6567  }
6568
6569  /**
6570   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
6571   *
6572   * @private
6573   * @param {Array} array The array to inspect.
6574   * @param {*} value The value to search for.
6575   * @param {number} fromIndex The index to search from.
6576   * @returns {number} Returns the index of the matched value, else `-1`.
6577   */
6578  function baseIndexOf(array, value, fromIndex) {
6579    return value === value
6580      ? strictIndexOf(array, value, fromIndex)
6581      : baseFindIndex(array, baseIsNaN, fromIndex);
6582  }
6583
6584  /**
6585   * This function is like `baseIndexOf` except that it accepts a comparator.
6586   *
6587   * @private
6588   * @param {Array} array The array to inspect.
6589   * @param {*} value The value to search for.
6590   * @param {number} fromIndex The index to search from.
6591   * @param {Function} comparator The comparator invoked per element.
6592   * @returns {number} Returns the index of the matched value, else `-1`.
6593   */
6594  function baseIndexOfWith(array, value, fromIndex, comparator) {
6595    var index = fromIndex - 1,
6596        length = array.length;
6597
6598    while (++index < length) {
6599      if (comparator(array[index], value)) {
6600        return index;
6601      }
6602    }
6603    return -1;
6604  }
6605
6606  /**
6607   * The base implementation of `_.isNaN` without support for number objects.
6608   *
6609   * @private
6610   * @param {*} value The value to check.
6611   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
6612   */
6613  function baseIsNaN(value) {
6614    return value !== value;
6615  }
6616
6617  /**
6618   * The base implementation of `_.mean` and `_.meanBy` without support for
6619   * iteratee shorthands.
6620   *
6621   * @private
6622   * @param {Array} array The array to iterate over.
6623   * @param {Function} iteratee The function invoked per iteration.
6624   * @returns {number} Returns the mean.
6625   */
6626  function baseMean(array, iteratee) {
6627    var length = array == null ? 0 : array.length;
6628    return length ? (baseSum(array, iteratee) / length) : NAN;
6629  }
6630
6631  /**
6632   * The base implementation of `_.property` without support for deep paths.
6633   *
6634   * @private
6635   * @param {string} key The key of the property to get.
6636   * @returns {Function} Returns the new accessor function.
6637   */
6638  function baseProperty(key) {
6639    return function(object) {
6640      return object == null ? undefined : object[key];
6641    };
6642  }
6643
6644  /**
6645   * The base implementation of `_.propertyOf` without support for deep paths.
6646   *
6647   * @private
6648   * @param {Object} object The object to query.
6649   * @returns {Function} Returns the new accessor function.
6650   */
6651  function basePropertyOf(object) {
6652    return function(key) {
6653      return object == null ? undefined : object[key];
6654    };
6655  }
6656
6657  /**
6658   * The base implementation of `_.reduce` and `_.reduceRight`, without support
6659   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
6660   *
6661   * @private
6662   * @param {Array|Object} collection The collection to iterate over.
6663   * @param {Function} iteratee The function invoked per iteration.
6664   * @param {*} accumulator The initial value.
6665   * @param {boolean} initAccum Specify using the first or last element of
6666   *  `collection` as the initial value.
6667   * @param {Function} eachFunc The function to iterate over `collection`.
6668   * @returns {*} Returns the accumulated value.
6669   */
6670  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
6671    eachFunc(collection, function(value, index, collection) {
6672      accumulator = initAccum
6673        ? (initAccum = false, value)
6674        : iteratee(accumulator, value, index, collection);
6675    });
6676    return accumulator;
6677  }
6678
6679  /**
6680   * The base implementation of `_.sortBy` which uses `comparer` to define the
6681   * sort order of `array` and replaces criteria objects with their corresponding
6682   * values.
6683   *
6684   * @private
6685   * @param {Array} array The array to sort.
6686   * @param {Function} comparer The function to define sort order.
6687   * @returns {Array} Returns `array`.
6688   */
6689  function baseSortBy(array, comparer) {
6690    var length = array.length;
6691
6692    array.sort(comparer);
6693    while (length--) {
6694      array[length] = array[length].value;
6695    }
6696    return array;
6697  }
6698
6699  /**
6700   * The base implementation of `_.sum` and `_.sumBy` without support for
6701   * iteratee shorthands.
6702   *
6703   * @private
6704   * @param {Array} array The array to iterate over.
6705   * @param {Function} iteratee The function invoked per iteration.
6706   * @returns {number} Returns the sum.
6707   */
6708  function baseSum(array, iteratee) {
6709    var result,
6710        index = -1,
6711        length = array.length;
6712
6713    while (++index < length) {
6714      var current = iteratee(array[index]);
6715      if (current !== undefined) {
6716        result = result === undefined ? current : (result + current);
6717      }
6718    }
6719    return result;
6720  }
6721
6722  /**
6723   * The base implementation of `_.times` without support for iteratee shorthands
6724   * or max array length checks.
6725   *
6726   * @private
6727   * @param {number} n The number of times to invoke `iteratee`.
6728   * @param {Function} iteratee The function invoked per iteration.
6729   * @returns {Array} Returns the array of results.
6730   */
6731  function baseTimes(n, iteratee) {
6732    var index = -1,
6733        result = Array(n);
6734
6735    while (++index < n) {
6736      result[index] = iteratee(index);
6737    }
6738    return result;
6739  }
6740
6741  /**
6742   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
6743   * of key-value pairs for `object` corresponding to the property names of `props`.
6744   *
6745   * @private
6746   * @param {Object} object The object to query.
6747   * @param {Array} props The property names to get values for.
6748   * @returns {Object} Returns the key-value pairs.
6749   */
6750  function baseToPairs(object, props) {
6751    return arrayMap(props, function(key) {
6752      return [key, object[key]];
6753    });
6754  }
6755
6756  /**
6757   * The base implementation of `_.trim`.
6758   *
6759   * @private
6760   * @param {string} string The string to trim.
6761   * @returns {string} Returns the trimmed string.
6762   */
6763  function baseTrim(string) {
6764    return string
6765      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
6766      : string;
6767  }
6768
6769  /**
6770   * The base implementation of `_.unary` without support for storing metadata.
6771   *
6772   * @private
6773   * @param {Function} func The function to cap arguments for.
6774   * @returns {Function} Returns the new capped function.
6775   */
6776  function baseUnary(func) {
6777    return function(value) {
6778      return func(value);
6779    };
6780  }
6781
6782  /**
6783   * The base implementation of `_.values` and `_.valuesIn` which creates an
6784   * array of `object` property values corresponding to the property names
6785   * of `props`.
6786   *
6787   * @private
6788   * @param {Object} object The object to query.
6789   * @param {Array} props The property names to get values for.
6790   * @returns {Object} Returns the array of property values.
6791   */
6792  function baseValues(object, props) {
6793    return arrayMap(props, function(key) {
6794      return object[key];
6795    });
6796  }
6797
6798  /**
6799   * Checks if a `cache` value for `key` exists.
6800   *
6801   * @private
6802   * @param {Object} cache The cache to query.
6803   * @param {string} key The key of the entry to check.
6804   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
6805   */
6806  function cacheHas(cache, key) {
6807    return cache.has(key);
6808  }
6809
6810  /**
6811   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
6812   * that is not found in the character symbols.
6813   *
6814   * @private
6815   * @param {Array} strSymbols The string symbols to inspect.
6816   * @param {Array} chrSymbols The character symbols to find.
6817   * @returns {number} Returns the index of the first unmatched string symbol.
6818   */
6819  function charsStartIndex(strSymbols, chrSymbols) {
6820    var index = -1,
6821        length = strSymbols.length;
6822
6823    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
6824    return index;
6825  }
6826
6827  /**
6828   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
6829   * that is not found in the character symbols.
6830   *
6831   * @private
6832   * @param {Array} strSymbols The string symbols to inspect.
6833   * @param {Array} chrSymbols The character symbols to find.
6834   * @returns {number} Returns the index of the last unmatched string symbol.
6835   */
6836  function charsEndIndex(strSymbols, chrSymbols) {
6837    var index = strSymbols.length;
6838
6839    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
6840    return index;
6841  }
6842
6843  /**
6844   * Gets the number of `placeholder` occurrences in `array`.
6845   *
6846   * @private
6847   * @param {Array} array The array to inspect.
6848   * @param {*} placeholder The placeholder to search for.
6849   * @returns {number} Returns the placeholder count.
6850   */
6851  function countHolders(array, placeholder) {
6852    var length = array.length,
6853        result = 0;
6854
6855    while (length--) {
6856      if (array[length] === placeholder) {
6857        ++result;
6858      }
6859    }
6860    return result;
6861  }
6862
6863  /**
6864   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
6865   * letters to basic Latin letters.
6866   *
6867   * @private
6868   * @param {string} letter The matched letter to deburr.
6869   * @returns {string} Returns the deburred letter.
6870   */
6871  var deburrLetter = basePropertyOf(deburredLetters);
6872
6873  /**
6874   * Used by `_.escape` to convert characters to HTML entities.
6875   *
6876   * @private
6877   * @param {string} chr The matched character to escape.
6878   * @returns {string} Returns the escaped character.
6879   */
6880  var escapeHtmlChar = basePropertyOf(htmlEscapes);
6881
6882  /**
6883   * Used by `_.template` to escape characters for inclusion in compiled string literals.
6884   *
6885   * @private
6886   * @param {string} chr The matched character to escape.
6887   * @returns {string} Returns the escaped character.
6888   */
6889  function escapeStringChar(chr) {
6890    return '\\' + stringEscapes[chr];
6891  }
6892
6893  /**
6894   * Gets the value at `key` of `object`.
6895   *
6896   * @private
6897   * @param {Object} [object] The object to query.
6898   * @param {string} key The key of the property to get.
6899   * @returns {*} Returns the property value.
6900   */
6901  function getValue(object, key) {
6902    return object == null ? undefined : object[key];
6903  }
6904
6905  /**
6906   * Checks if `string` contains Unicode symbols.
6907   *
6908   * @private
6909   * @param {string} string The string to inspect.
6910   * @returns {boolean} Returns `true` if a symbol is found, else `false`.
6911   */
6912  function hasUnicode(string) {
6913    return reHasUnicode.test(string);
6914  }
6915
6916  /**
6917   * Checks if `string` contains a word composed of Unicode symbols.
6918   *
6919   * @private
6920   * @param {string} string The string to inspect.
6921   * @returns {boolean} Returns `true` if a word is found, else `false`.
6922   */
6923  function hasUnicodeWord(string) {
6924    return reHasUnicodeWord.test(string);
6925  }
6926
6927  /**
6928   * Converts `iterator` to an array.
vendor: 8,214 bytes, lines 6929-7238
6929   *
6930   * @private
6931   * @param {Object} iterator The iterator to convert.
6932   * @returns {Array} Returns the converted array.
6933   */
6934  function iteratorToArray(iterator) {
6935    var data,
6936        result = [];
6937
6938    while (!(data = iterator.next()).done) {
6939      result.push(data.value);
6940    }
6941    return result;
6942  }
6943
6944  /**
6945   * Converts `map` to its key-value pairs.
6946   *
6947   * @private
6948   * @param {Object} map The map to convert.
6949   * @returns {Array} Returns the key-value pairs.
6950   */
6951  function mapToArray(map) {
6952    var index = -1,
6953        result = Array(map.size);
6954
6955    map.forEach(function(value, key) {
6956      result[++index] = [key, value];
6957    });
6958    return result;
6959  }
6960
6961  /**
6962   * Creates a unary function that invokes `func` with its argument transformed.
6963   *
6964   * @private
6965   * @param {Function} func The function to wrap.
6966   * @param {Function} transform The argument transform.
6967   * @returns {Function} Returns the new function.
6968   */
6969  function overArg(func, transform) {
6970    return function(arg) {
6971      return func(transform(arg));
6972    };
6973  }
6974
6975  /**
6976   * Replaces all `placeholder` elements in `array` with an internal placeholder
6977   * and returns an array of their indexes.
6978   *
6979   * @private
6980   * @param {Array} array The array to modify.
6981   * @param {*} placeholder The placeholder to replace.
6982   * @returns {Array} Returns the new array of placeholder indexes.
6983   */
6984  function replaceHolders(array, placeholder) {
6985    var index = -1,
6986        length = array.length,
6987        resIndex = 0,
6988        result = [];
6989
6990    while (++index < length) {
6991      var value = array[index];
6992      if (value === placeholder || value === PLACEHOLDER) {
6993        array[index] = PLACEHOLDER;
6994        result[resIndex++] = index;
6995      }
6996    }
6997    return result;
6998  }
6999
7000  /**
7001   * Converts `set` to an array of its values.
7002   *
7003   * @private
7004   * @param {Object} set The set to convert.
7005   * @returns {Array} Returns the values.
7006   */
7007  function setToArray(set) {
7008    var index = -1,
7009        result = Array(set.size);
7010
7011    set.forEach(function(value) {
7012      result[++index] = value;
7013    });
7014    return result;
7015  }
7016
7017  /**
7018   * Converts `set` to its value-value pairs.
7019   *
7020   * @private
7021   * @param {Object} set The set to convert.
7022   * @returns {Array} Returns the value-value pairs.
7023   */
7024  function setToPairs(set) {
7025    var index = -1,
7026        result = Array(set.size);
7027
7028    set.forEach(function(value) {
7029      result[++index] = [value, value];
7030    });
7031    return result;
7032  }
7033
7034  /**
7035   * A specialized version of `_.indexOf` which performs strict equality
7036   * comparisons of values, i.e. `===`.
7037   *
7038   * @private
7039   * @param {Array} array The array to inspect.
7040   * @param {*} value The value to search for.
7041   * @param {number} fromIndex The index to search from.
7042   * @returns {number} Returns the index of the matched value, else `-1`.
7043   */
7044  function strictIndexOf(array, value, fromIndex) {
7045    var index = fromIndex - 1,
7046        length = array.length;
7047
7048    while (++index < length) {
7049      if (array[index] === value) {
7050        return index;
7051      }
7052    }
7053    return -1;
7054  }
7055
7056  /**
7057   * A specialized version of `_.lastIndexOf` which performs strict equality
7058   * comparisons of values, i.e. `===`.
7059   *
7060   * @private
7061   * @param {Array} array The array to inspect.
7062   * @param {*} value The value to search for.
7063   * @param {number} fromIndex The index to search from.
7064   * @returns {number} Returns the index of the matched value, else `-1`.
7065   */
7066  function strictLastIndexOf(array, value, fromIndex) {
7067    var index = fromIndex + 1;
7068    while (index--) {
7069      if (array[index] === value) {
7070        return index;
7071      }
7072    }
7073    return index;
7074  }
7075
7076  /**
7077   * Gets the number of symbols in `string`.
7078   *
7079   * @private
7080   * @param {string} string The string to inspect.
7081   * @returns {number} Returns the string size.
7082   */
7083  function stringSize(string) {
7084    return hasUnicode(string)
7085      ? unicodeSize(string)
7086      : asciiSize(string);
7087  }
7088
7089  /**
7090   * Converts `string` to an array.
7091   *
7092   * @private
7093   * @param {string} string The string to convert.
7094   * @returns {Array} Returns the converted array.
7095   */
7096  function stringToArray(string) {
7097    return hasUnicode(string)
7098      ? unicodeToArray(string)
7099      : asciiToArray(string);
7100  }
7101
7102  /**
7103   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
7104   * character of `string`.
7105   *
7106   * @private
7107   * @param {string} string The string to inspect.
7108   * @returns {number} Returns the index of the last non-whitespace character.
7109   */
7110  function trimmedEndIndex(string) {
7111    var index = string.length;
7112
7113    while (index-- && reWhitespace.test(string.charAt(index))) {}
7114    return index;
7115  }
7116
7117  /**
7118   * Used by `_.unescape` to convert HTML entities to characters.
7119   *
7120   * @private
7121   * @param {string} chr The matched character to unescape.
7122   * @returns {string} Returns the unescaped character.
7123   */
7124  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
7125
7126  /**
7127   * Gets the size of a Unicode `string`.
7128   *
7129   * @private
7130   * @param {string} string The string inspect.
7131   * @returns {number} Returns the string size.
7132   */
7133  function unicodeSize(string) {
7134    var result = reUnicode.lastIndex = 0;
7135    while (reUnicode.test(string)) {
7136      ++result;
7137    }
7138    return result;
7139  }
7140
7141  /**
7142   * Converts a Unicode `string` to an array.
7143   *
7144   * @private
7145   * @param {string} string The string to convert.
7146   * @returns {Array} Returns the converted array.
7147   */
7148  function unicodeToArray(string) {
7149    return string.match(reUnicode) || [];
7150  }
7151
7152  /**
7153   * Splits a Unicode `string` into an array of its words.
7154   *
7155   * @private
7156   * @param {string} The string to inspect.
7157   * @returns {Array} Returns the words of `string`.
7158   */
7159  function unicodeWords(string) {
7160    return string.match(reUnicodeWord) || [];
7161  }
7162
7163  /*--------------------------------------------------------------------------*/
7164
7165  /**
7166   * Create a new pristine `lodash` function using the `context` object.
7167   *
7168   * @static
7169   * @memberOf _
7170   * @since 1.1.0
7171   * @category Util
7172   * @param {Object} [context=root] The context object.
7173   * @returns {Function} Returns a new `lodash` function.
7174   * @example
7175   *
7176   * _.mixin({ 'foo': _.constant('foo') });
7177   *
7178   * var lodash = _.runInContext();
7179   * lodash.mixin({ 'bar': lodash.constant('bar') });
7180   *
7181   * _.isFunction(_.foo);
7182   * // => true
7183   * _.isFunction(_.bar);
7184   * // => false
7185   *
7186   * lodash.isFunction(lodash.foo);
7187   * // => false
7188   * lodash.isFunction(lodash.bar);
7189   * // => true
7190   *
7191   * // Create a suped-up `defer` in Node.js.
7192   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
7193   */
7194  var runInContext = (function runInContext(context) {
7195    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
7196
7197    /** Built-in constructor references. */
7198    var Array = context.Array,
7199        Date = context.Date,
7200        Error = context.Error,
7201        Function = context.Function,
7202        Math = context.Math,
7203        Object = context.Object,
7204        RegExp = context.RegExp,
7205        String = context.String,
7206        TypeError = context.TypeError;
7207
7208    /** Used for built-in method references. */
7209    var arrayProto = Array.prototype,
7210        funcProto = Function.prototype,
7211        objectProto = Object.prototype;
7212
7213    /** Used to detect overreaching core-js shims. */
7214    var coreJsData = context['__core-js_shared__'];
7215
7216    /** Used to resolve the decompiled source of functions. */
7217    var funcToString = funcProto.toString;
7218
7219    /** Used to check objects for own properties. */
7220    var hasOwnProperty = objectProto.hasOwnProperty;
7221
7222    /** Used to generate unique IDs. */
7223    var idCounter = 0;
7224
7225    /** Used to detect methods masquerading as native. */
7226    var maskSrcKey = (function() {
7227      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
7228      return uid ? ('Symbol(src)_1.' + uid) : '';
7229    }());
7230
7231    /**
7232     * Used to resolve the
7233     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7234     * of values.
7235     */
7236    var nativeObjectToString = objectProto.toString;
7237
7238    /** Used to infer the `Object` constructor. */
vendor: 25,659 bytes, lines 7239-8036
7239    var objectCtorString = funcToString.call(Object);
7240
7241    /** Used to restore the original `_` reference in `_.noConflict`. */
7242    var oldDash = root._;
7243
7244    /** Used to detect if a method is native. */
7245    var reIsNative = RegExp('^' +
7246      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
7247      .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
7248    );
7249
7250    /** Built-in value references. */
7251    var Buffer = moduleExports ? context.Buffer : undefined,
7252        Symbol = context.Symbol,
7253        Uint8Array = context.Uint8Array,
7254        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
7255        getPrototype = overArg(Object.getPrototypeOf, Object),
7256        objectCreate = Object.create,
7257        propertyIsEnumerable = objectProto.propertyIsEnumerable,
7258        splice = arrayProto.splice,
7259        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
7260        symIterator = Symbol ? Symbol.iterator : undefined,
7261        symToStringTag = Symbol ? Symbol.toStringTag : undefined;
7262
7263    var defineProperty = (function() {
7264      try {
7265        var func = getNative(Object, 'defineProperty');
7266        func({}, '', {});
7267        return func;
7268      } catch (e) {}
7269    }());
7270
7271    /** Mocked built-ins. */
7272    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
7273        ctxNow = Date && Date.now !== root.Date.now && Date.now,
7274        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
7275
7276    /* Built-in method references for those with the same name as other `lodash` methods. */
7277    var nativeCeil = Math.ceil,
7278        nativeFloor = Math.floor,
7279        nativeGetSymbols = Object.getOwnPropertySymbols,
7280        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
7281        nativeIsFinite = context.isFinite,
7282        nativeJoin = arrayProto.join,
7283        nativeKeys = overArg(Object.keys, Object),
7284        nativeMax = Math.max,
7285        nativeMin = Math.min,
7286        nativeNow = Date.now,
7287        nativeParseInt = context.parseInt,
7288        nativeRandom = Math.random,
7289        nativeReverse = arrayProto.reverse;
7290
7291    /* Built-in method references that are verified to be native. */
7292    var DataView = getNative(context, 'DataView'),
7293        Map = getNative(context, 'Map'),
7294        Promise = getNative(context, 'Promise'),
7295        Set = getNative(context, 'Set'),
7296        WeakMap = getNative(context, 'WeakMap'),
7297        nativeCreate = getNative(Object, 'create');
7298
7299    /** Used to store function metadata. */
7300    var metaMap = WeakMap && new WeakMap;
7301
7302    /** Used to lookup unminified function names. */
7303    var realNames = {};
7304
7305    /** Used to detect maps, sets, and weakmaps. */
7306    var dataViewCtorString = toSource(DataView),
7307        mapCtorString = toSource(Map),
7308        promiseCtorString = toSource(Promise),
7309        setCtorString = toSource(Set),
7310        weakMapCtorString = toSource(WeakMap);
7311
7312    /** Used to convert symbols to primitives and strings. */
7313    var symbolProto = Symbol ? Symbol.prototype : undefined,
7314        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
7315        symbolToString = symbolProto ? symbolProto.toString : undefined;
7316
7317    /*------------------------------------------------------------------------*/
7318
7319    /**
7320     * Creates a `lodash` object which wraps `value` to enable implicit method
7321     * chain sequences. Methods that operate on and return arrays, collections,
7322     * and functions can be chained together. Methods that retrieve a single value
7323     * or may return a primitive value will automatically end the chain sequence
7324     * and return the unwrapped value. Otherwise, the value must be unwrapped
7325     * with `_#value`.
7326     *
7327     * Explicit chain sequences, which must be unwrapped with `_#value`, may be
7328     * enabled using `_.chain`.
7329     *
7330     * The execution of chained methods is lazy, that is, it's deferred until
7331     * `_#value` is implicitly or explicitly called.
7332     *
7333     * Lazy evaluation allows several methods to support shortcut fusion.
7334     * Shortcut fusion is an optimization to merge iteratee calls; this avoids
7335     * the creation of intermediate arrays and can greatly reduce the number of
7336     * iteratee executions. Sections of a chain sequence qualify for shortcut
7337     * fusion if the section is applied to an array and iteratees accept only
7338     * one argument. The heuristic for whether a section qualifies for shortcut
7339     * fusion is subject to change.
7340     *
7341     * Chaining is supported in custom builds as long as the `_#value` method is
7342     * directly or indirectly included in the build.
7343     *
7344     * In addition to lodash methods, wrappers have `Array` and `String` methods.
7345     *
7346     * The wrapper `Array` methods are:
7347     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
7348     *
7349     * The wrapper `String` methods are:
7350     * `replace` and `split`
7351     *
7352     * The wrapper methods that support shortcut fusion are:
7353     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
7354     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
7355     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
7356     *
7357     * The chainable wrapper methods are:
7358     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
7359     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
7360     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
7361     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
7362     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
7363     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
7364     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
7365     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
7366     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
7367     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
7368     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
7369     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
7370     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
7371     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
7372     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
7373     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
7374     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
7375     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
7376     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
7377     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
7378     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
7379     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
7380     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
7381     * `zipObject`, `zipObjectDeep`, and `zipWith`
7382     *
7383     * The wrapper methods that are **not** chainable by default are:
7384     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
7385     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
7386     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
7387     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
7388     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
7389     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
7390     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
7391     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
7392     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
7393     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
7394     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
7395     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
7396     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
7397     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
7398     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
7399     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
7400     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
7401     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
7402     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
7403     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
7404     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
7405     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
7406     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
7407     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
7408     * `upperFirst`, `value`, and `words`
7409     *
7410     * @name _
7411     * @constructor
7412     * @category Seq
7413     * @param {*} value The value to wrap in a `lodash` instance.
7414     * @returns {Object} Returns the new `lodash` wrapper instance.
7415     * @example
7416     *
7417     * function square(n) {
7418     *   return n * n;
7419     * }
7420     *
7421     * var wrapped = _([1, 2, 3]);
7422     *
7423     * // Returns an unwrapped value.
7424     * wrapped.reduce(_.add);
7425     * // => 6
7426     *
7427     * // Returns a wrapped value.
7428     * var squares = wrapped.map(square);
7429     *
7430     * _.isArray(squares);
7431     * // => false
7432     *
7433     * _.isArray(squares.value());
7434     * // => true
7435     */
7436    function lodash(value) {
7437      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
7438        if (value instanceof LodashWrapper) {
7439          return value;
7440        }
7441        if (hasOwnProperty.call(value, '__wrapped__')) {
7442          return wrapperClone(value);
7443        }
7444      }
7445      return new LodashWrapper(value);
7446    }
7447
7448    /**
7449     * The base implementation of `_.create` without support for assigning
7450     * properties to the created object.
7451     *
7452     * @private
7453     * @param {Object} proto The object to inherit from.
7454     * @returns {Object} Returns the new object.
7455     */
7456    var baseCreate = (function() {
7457      function object() {}
7458      return function(proto) {
7459        if (!isObject(proto)) {
7460          return {};
7461        }
7462        if (objectCreate) {
7463          return objectCreate(proto);
7464        }
7465        object.prototype = proto;
7466        var result = new object;
7467        object.prototype = undefined;
7468        return result;
7469      };
7470    }());
7471
7472    /**
7473     * The function whose prototype chain sequence wrappers inherit from.
7474     *
7475     * @private
7476     */
7477    function baseLodash() {
7478      // No operation performed.
7479    }
7480
7481    /**
7482     * The base constructor for creating `lodash` wrapper objects.
7483     *
7484     * @private
7485     * @param {*} value The value to wrap.
7486     * @param {boolean} [chainAll] Enable explicit method chain sequences.
7487     */
7488    function LodashWrapper(value, chainAll) {
7489      this.__wrapped__ = value;
7490      this.__actions__ = [];
7491      this.__chain__ = !!chainAll;
7492      this.__index__ = 0;
7493      this.__values__ = undefined;
7494    }
7495
7496    /**
7497     * By default, the template delimiters used by lodash are like those in
7498     * embedded Ruby (ERB) as well as ES2015 template strings. Change the
7499     * following template settings to use alternative delimiters.
7500     *
7501     * @static
7502     * @memberOf _
7503     * @type {Object}
7504     */
7505    lodash.templateSettings = {
7506
7507      /**
7508       * Used to detect `data` property values to be HTML-escaped.
7509       *
7510       * @memberOf _.templateSettings
7511       * @type {RegExp}
7512       */
7513      'escape': reEscape,
7514
7515      /**
7516       * Used to detect code to be evaluated.
7517       *
7518       * @memberOf _.templateSettings
7519       * @type {RegExp}
7520       */
7521      'evaluate': reEvaluate,
7522
7523      /**
7524       * Used to detect `data` property values to inject.
7525       *
7526       * @memberOf _.templateSettings
7527       * @type {RegExp}
7528       */
7529      'interpolate': reInterpolate,
7530
7531      /**
7532       * Used to reference the data object in the template text.
7533       *
7534       * @memberOf _.templateSettings
7535       * @type {string}
7536       */
7537      'variable': '',
7538
7539      /**
7540       * Used to import variables into the compiled template.
7541       *
7542       * @memberOf _.templateSettings
7543       * @type {Object}
7544       */
7545      'imports': {
7546
7547        /**
7548         * A reference to the `lodash` function.
7549         *
7550         * @memberOf _.templateSettings.imports
7551         * @type {Function}
7552         */
7553        '_': lodash
7554      }
7555    };
7556
7557    // Ensure wrappers are instances of `baseLodash`.
7558    lodash.prototype = baseLodash.prototype;
7559    lodash.prototype.constructor = lodash;
7560
7561    LodashWrapper.prototype = baseCreate(baseLodash.prototype);
7562    LodashWrapper.prototype.constructor = LodashWrapper;
7563
7564    /*------------------------------------------------------------------------*/
7565
7566    /**
7567     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
7568     *
7569     * @private
7570     * @constructor
7571     * @param {*} value The value to wrap.
7572     */
7573    function LazyWrapper(value) {
7574      this.__wrapped__ = value;
7575      this.__actions__ = [];
7576      this.__dir__ = 1;
7577      this.__filtered__ = false;
7578      this.__iteratees__ = [];
7579      this.__takeCount__ = MAX_ARRAY_LENGTH;
7580      this.__views__ = [];
7581    }
7582
7583    /**
7584     * Creates a clone of the lazy wrapper object.
7585     *
7586     * @private
7587     * @name clone
7588     * @memberOf LazyWrapper
7589     * @returns {Object} Returns the cloned `LazyWrapper` object.
7590     */
7591    function lazyClone() {
7592      var result = new LazyWrapper(this.__wrapped__);
7593      result.__actions__ = copyArray(this.__actions__);
7594      result.__dir__ = this.__dir__;
7595      result.__filtered__ = this.__filtered__;
7596      result.__iteratees__ = copyArray(this.__iteratees__);
7597      result.__takeCount__ = this.__takeCount__;
7598      result.__views__ = copyArray(this.__views__);
7599      return result;
7600    }
7601
7602    /**
7603     * Reverses the direction of lazy iteration.
7604     *
7605     * @private
7606     * @name reverse
7607     * @memberOf LazyWrapper
7608     * @returns {Object} Returns the new reversed `LazyWrapper` object.
7609     */
7610    function lazyReverse() {
7611      if (this.__filtered__) {
7612        var result = new LazyWrapper(this);
7613        result.__dir__ = -1;
7614        result.__filtered__ = true;
7615      } else {
7616        result = this.clone();
7617        result.__dir__ *= -1;
7618      }
7619      return result;
7620    }
7621
7622    /**
7623     * Extracts the unwrapped value from its lazy wrapper.
7624     *
7625     * @private
7626     * @name value
7627     * @memberOf LazyWrapper
7628     * @returns {*} Returns the unwrapped value.
7629     */
7630    function lazyValue() {
7631      var array = this.__wrapped__.value(),
7632          dir = this.__dir__,
7633          isArr = isArray(array),
7634          isRight = dir < 0,
7635          arrLength = isArr ? array.length : 0,
7636          view = getView(0, arrLength, this.__views__),
7637          start = view.start,
7638          end = view.end,
7639          length = end - start,
7640          index = isRight ? end : (start - 1),
7641          iteratees = this.__iteratees__,
7642          iterLength = iteratees.length,
7643          resIndex = 0,
7644          takeCount = nativeMin(length, this.__takeCount__);
7645
7646      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
7647        return baseWrapperValue(array, this.__actions__);
7648      }
7649      var result = [];
7650
7651      outer:
7652      while (length-- && resIndex < takeCount) {
7653        index += dir;
7654
7655        var iterIndex = -1,
7656            value = array[index];
7657
7658        while (++iterIndex < iterLength) {
7659          var data = iteratees[iterIndex],
7660              iteratee = data.iteratee,
7661              type = data.type,
7662              computed = iteratee(value);
7663
7664          if (type == LAZY_MAP_FLAG) {
7665            value = computed;
7666          } else if (!computed) {
7667            if (type == LAZY_FILTER_FLAG) {
7668              continue outer;
7669            } else {
7670              break outer;
7671            }
7672          }
7673        }
7674        result[resIndex++] = value;
7675      }
7676      return result;
7677    }
7678
7679    // Ensure `LazyWrapper` is an instance of `baseLodash`.
7680    LazyWrapper.prototype = baseCreate(baseLodash.prototype);
7681    LazyWrapper.prototype.constructor = LazyWrapper;
7682
7683    /*------------------------------------------------------------------------*/
7684
7685    /**
7686     * Creates a hash object.
7687     *
7688     * @private
7689     * @constructor
7690     * @param {Array} [entries] The key-value pairs to cache.
7691     */
7692    function Hash(entries) {
7693      var index = -1,
7694          length = entries == null ? 0 : entries.length;
7695
7696      this.clear();
7697      while (++index < length) {
7698        var entry = entries[index];
7699        this.set(entry[0], entry[1]);
7700      }
7701    }
7702
7703    /**
7704     * Removes all key-value entries from the hash.
7705     *
7706     * @private
7707     * @name clear
7708     * @memberOf Hash
7709     */
7710    function hashClear() {
7711      this.__data__ = nativeCreate ? nativeCreate(null) : {};
7712      this.size = 0;
7713    }
7714
7715    /**
7716     * Removes `key` and its value from the hash.
7717     *
7718     * @private
7719     * @name delete
7720     * @memberOf Hash
7721     * @param {Object} hash The hash to modify.
7722     * @param {string} key The key of the value to remove.
7723     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
7724     */
7725    function hashDelete(key) {
7726      var result = this.has(key) && delete this.__data__[key];
7727      this.size -= result ? 1 : 0;
7728      return result;
7729    }
7730
7731    /**
7732     * Gets the hash value for `key`.
7733     *
7734     * @private
7735     * @name get
7736     * @memberOf Hash
7737     * @param {string} key The key of the value to get.
7738     * @returns {*} Returns the entry value.
7739     */
7740    function hashGet(key) {
7741      var data = this.__data__;
7742      if (nativeCreate) {
7743        var result = data[key];
7744        return result === HASH_UNDEFINED ? undefined : result;
7745      }
7746      return hasOwnProperty.call(data, key) ? data[key] : undefined;
7747    }
7748
7749    /**
7750     * Checks if a hash value for `key` exists.
7751     *
7752     * @private
7753     * @name has
7754     * @memberOf Hash
7755     * @param {string} key The key of the entry to check.
7756     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
7757     */
7758    function hashHas(key) {
7759      var data = this.__data__;
7760      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
7761    }
7762
7763    /**
7764     * Sets the hash `key` to `value`.
7765     *
7766     * @private
7767     * @name set
7768     * @memberOf Hash
7769     * @param {string} key The key of the value to set.
7770     * @param {*} value The value to set.
7771     * @returns {Object} Returns the hash instance.
7772     */
7773    function hashSet(key, value) {
7774      var data = this.__data__;
7775      this.size += this.has(key) ? 0 : 1;
7776      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
7777      return this;
7778    }
7779
7780    // Add methods to `Hash`.
7781    Hash.prototype.clear = hashClear;
7782    Hash.prototype['delete'] = hashDelete;
7783    Hash.prototype.get = hashGet;
7784    Hash.prototype.has = hashHas;
7785    Hash.prototype.set = hashSet;
7786
7787    /*------------------------------------------------------------------------*/
7788
7789    /**
7790     * Creates an list cache object.
7791     *
7792     * @private
7793     * @constructor
7794     * @param {Array} [entries] The key-value pairs to cache.
7795     */
7796    function ListCache(entries) {
7797      var index = -1,
7798          length = entries == null ? 0 : entries.length;
7799
7800      this.clear();
7801      while (++index < length) {
7802        var entry = entries[index];
7803        this.set(entry[0], entry[1]);
7804      }
7805    }
7806
7807    /**
7808     * Removes all key-value entries from the list cache.
7809     *
7810     * @private
7811     * @name clear
7812     * @memberOf ListCache
7813     */
7814    function listCacheClear() {
7815      this.__data__ = [];
7816      this.size = 0;
7817    }
7818
7819    /**
7820     * Removes `key` and its value from the list cache.
7821     *
7822     * @private
7823     * @name delete
7824     * @memberOf ListCache
7825     * @param {string} key The key of the value to remove.
7826     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
7827     */
7828    function listCacheDelete(key) {
7829      var data = this.__data__,
7830          index = assocIndexOf(data, key);
7831
7832      if (index < 0) {
7833        return false;
7834      }
7835      var lastIndex = data.length - 1;
7836      if (index == lastIndex) {
7837        data.pop();
7838      } else {
7839        splice.call(data, index, 1);
7840      }
7841      --this.size;
7842      return true;
7843    }
7844
7845    /**
7846     * Gets the list cache value for `key`.
7847     *
7848     * @private
7849     * @name get
7850     * @memberOf ListCache
7851     * @param {string} key The key of the value to get.
7852     * @returns {*} Returns the entry value.
7853     */
7854    function listCacheGet(key) {
7855      var data = this.__data__,
7856          index = assocIndexOf(data, key);
7857
7858      return index < 0 ? undefined : data[index][1];
7859    }
7860
7861    /**
7862     * Checks if a list cache value for `key` exists.
7863     *
7864     * @private
7865     * @name has
7866     * @memberOf ListCache
7867     * @param {string} key The key of the entry to check.
7868     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
7869     */
7870    function listCacheHas(key) {
7871      return assocIndexOf(this.__data__, key) > -1;
7872    }
7873
7874    /**
7875     * Sets the list cache `key` to `value`.
7876     *
7877     * @private
7878     * @name set
7879     * @memberOf ListCache
7880     * @param {string} key The key of the value to set.
7881     * @param {*} value The value to set.
7882     * @returns {Object} Returns the list cache instance.
7883     */
7884    function listCacheSet(key, value) {
7885      var data = this.__data__,
7886          index = assocIndexOf(data, key);
7887
7888      if (index < 0) {
7889        ++this.size;
7890        data.push([key, value]);
7891      } else {
7892        data[index][1] = value;
7893      }
7894      return this;
7895    }
7896
7897    // Add methods to `ListCache`.
7898    ListCache.prototype.clear = listCacheClear;
7899    ListCache.prototype['delete'] = listCacheDelete;
7900    ListCache.prototype.get = listCacheGet;
7901    ListCache.prototype.has = listCacheHas;
7902    ListCache.prototype.set = listCacheSet;
7903
7904    /*------------------------------------------------------------------------*/
7905
7906    /**
7907     * Creates a map cache object to store key-value pairs.
7908     *
7909     * @private
7910     * @constructor
7911     * @param {Array} [entries] The key-value pairs to cache.
7912     */
7913    function MapCache(entries) {
7914      var index = -1,
7915          length = entries == null ? 0 : entries.length;
7916
7917      this.clear();
7918      while (++index < length) {
7919        var entry = entries[index];
7920        this.set(entry[0], entry[1]);
7921      }
7922    }
7923
7924    /**
7925     * Removes all key-value entries from the map.
7926     *
7927     * @private
7928     * @name clear
7929     * @memberOf MapCache
7930     */
7931    function mapCacheClear() {
7932      this.size = 0;
7933      this.__data__ = {
7934        'hash': new Hash,
7935        'map': new (Map || ListCache),
7936        'string': new Hash
7937      };
7938    }
7939
7940    /**
7941     * Removes `key` and its value from the map.
7942     *
7943     * @private
7944     * @name delete
7945     * @memberOf MapCache
7946     * @param {string} key The key of the value to remove.
7947     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
7948     */
7949    function mapCacheDelete(key) {
7950      var result = getMapData(this, key)['delete'](key);
7951      this.size -= result ? 1 : 0;
7952      return result;
7953    }
7954
7955    /**
7956     * Gets the map value for `key`.
7957     *
7958     * @private
7959     * @name get
7960     * @memberOf MapCache
7961     * @param {string} key The key of the value to get.
7962     * @returns {*} Returns the entry value.
7963     */
7964    function mapCacheGet(key) {
7965      return getMapData(this, key).get(key);
7966    }
7967
7968    /**
7969     * Checks if a map value for `key` exists.
7970     *
7971     * @private
7972     * @name has
7973     * @memberOf MapCache
7974     * @param {string} key The key of the entry to check.
7975     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
7976     */
7977    function mapCacheHas(key) {
7978      return getMapData(this, key).has(key);
7979    }
7980
7981    /**
7982     * Sets the map `key` to `value`.
7983     *
7984     * @private
7985     * @name set
7986     * @memberOf MapCache
7987     * @param {string} key The key of the value to set.
7988     * @param {*} value The value to set.
7989     * @returns {Object} Returns the map cache instance.
7990     */
7991    function mapCacheSet(key, value) {
7992      var data = getMapData(this, key),
7993          size = data.size;
7994
7995      data.set(key, value);
7996      this.size += data.size == size ? 0 : 1;
7997      return this;
7998    }
7999
8000    // Add methods to `MapCache`.
8001    MapCache.prototype.clear = mapCacheClear;
8002    MapCache.prototype['delete'] = mapCacheDelete;
8003    MapCache.prototype.get = mapCacheGet;
8004    MapCache.prototype.has = mapCacheHas;
8005    MapCache.prototype.set = mapCacheSet;
8006
8007    /*------------------------------------------------------------------------*/
8008
8009    /**
8010     *
8011     * Creates an array cache object to store unique values.
8012     *
8013     * @private
8014     * @constructor
8015     * @param {Array} [values] The values to cache.
8016     */
8017    function SetCache(values) {
8018      var index = -1,
8019          length = values == null ? 0 : values.length;
8020
8021      this.__data__ = new MapCache;
8022      while (++index < length) {
8023        this.add(values[index]);
8024      }
8025    }
8026
8027    /**
8028     * Adds `value` to the array cache.
8029     *
8030     * @private
8031     * @name add
8032     * @memberOf SetCache
8033     * @alias push
8034     * @param {*} value The value to cache.
8035     * @returns {Object} Returns the cache instance.
8036     */
vendor: 3,741 bytes, lines 8037-8173
8037    function setCacheAdd(value) {
8038      this.__data__.set(value, HASH_UNDEFINED);
8039      return this;
8040    }
8041
8042    /**
8043     * Checks if `value` is in the array cache.
8044     *
8045     * @private
8046     * @name has
8047     * @memberOf SetCache
8048     * @param {*} value The value to search for.
8049     * @returns {number} Returns `true` if `value` is found, else `false`.
8050     */
8051    function setCacheHas(value) {
8052      return this.__data__.has(value);
8053    }
8054
8055    // Add methods to `SetCache`.
8056    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
8057    SetCache.prototype.has = setCacheHas;
8058
8059    /*------------------------------------------------------------------------*/
8060
8061    /**
8062     * Creates a stack cache object to store key-value pairs.
8063     *
8064     * @private
8065     * @constructor
8066     * @param {Array} [entries] The key-value pairs to cache.
8067     */
8068    function Stack(entries) {
8069      var data = this.__data__ = new ListCache(entries);
8070      this.size = data.size;
8071    }
8072
8073    /**
8074     * Removes all key-value entries from the stack.
8075     *
8076     * @private
8077     * @name clear
8078     * @memberOf Stack
8079     */
8080    function stackClear() {
8081      this.__data__ = new ListCache;
8082      this.size = 0;
8083    }
8084
8085    /**
8086     * Removes `key` and its value from the stack.
8087     *
8088     * @private
8089     * @name delete
8090     * @memberOf Stack
8091     * @param {string} key The key of the value to remove.
8092     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
8093     */
8094    function stackDelete(key) {
8095      var data = this.__data__,
8096          result = data['delete'](key);
8097
8098      this.size = data.size;
8099      return result;
8100    }
8101
8102    /**
8103     * Gets the stack value for `key`.
8104     *
8105     * @private
8106     * @name get
8107     * @memberOf Stack
8108     * @param {string} key The key of the value to get.
8109     * @returns {*} Returns the entry value.
8110     */
8111    function stackGet(key) {
8112      return this.__data__.get(key);
8113    }
8114
8115    /**
8116     * Checks if a stack value for `key` exists.
8117     *
8118     * @private
8119     * @name has
8120     * @memberOf Stack
8121     * @param {string} key The key of the entry to check.
8122     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
8123     */
8124    function stackHas(key) {
8125      return this.__data__.has(key);
8126    }
8127
8128    /**
8129     * Sets the stack `key` to `value`.
8130     *
8131     * @private
8132     * @name set
8133     * @memberOf Stack
8134     * @param {string} key The key of the value to set.
8135     * @param {*} value The value to set.
8136     * @returns {Object} Returns the stack cache instance.
8137     */
8138    function stackSet(key, value) {
8139      var data = this.__data__;
8140      if (data instanceof ListCache) {
8141        var pairs = data.__data__;
8142        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
8143          pairs.push([key, value]);
8144          this.size = ++data.size;
8145          return this;
8146        }
8147        data = this.__data__ = new MapCache(pairs);
8148      }
8149      data.set(key, value);
8150      this.size = data.size;
8151      return this;
8152    }
8153
8154    // Add methods to `Stack`.
8155    Stack.prototype.clear = stackClear;
8156    Stack.prototype['delete'] = stackDelete;
8157    Stack.prototype.get = stackGet;
8158    Stack.prototype.has = stackHas;
8159    Stack.prototype.set = stackSet;
8160
8161    /*------------------------------------------------------------------------*/
8162
8163    /**
8164     * Creates an array of the enumerable property names of the array-like `value`.
8165     *
8166     * @private
8167     * @param {*} value The value to query.
8168     * @param {boolean} inherited Specify returning inherited property names.
8169     * @returns {Array} Returns the array of property names.
8170     */
8171    function arrayLikeKeys(value, inherited) {
8172      var isArr = isArray(value),
8173          isArg = !isArr && isArguments(value),
vendor: 111,524 bytes, lines 8174-11467
8174          isBuff = !isArr && !isArg && isBuffer(value),
8175          isType = !isArr && !isArg && !isBuff && isTypedArray(value),
8176          skipIndexes = isArr || isArg || isBuff || isType,
8177          result = skipIndexes ? baseTimes(value.length, String) : [],
8178          length = result.length;
8179
8180      for (var key in value) {
8181        if ((inherited || hasOwnProperty.call(value, key)) &&
8182            !(skipIndexes && (
8183               // Safari 9 has enumerable `arguments.length` in strict mode.
8184               key == 'length' ||
8185               // Node.js 0.10 has enumerable non-index properties on buffers.
8186               (isBuff && (key == 'offset' || key == 'parent')) ||
8187               // PhantomJS 2 has enumerable non-index properties on typed arrays.
8188               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
8189               // Skip index properties.
8190               isIndex(key, length)
8191            ))) {
8192          result.push(key);
8193        }
8194      }
8195      return result;
8196    }
8197
8198    /**
8199     * A specialized version of `_.sample` for arrays.
8200     *
8201     * @private
8202     * @param {Array} array The array to sample.
8203     * @returns {*} Returns the random element.
8204     */
8205    function arraySample(array) {
8206      var length = array.length;
8207      return length ? array[baseRandom(0, length - 1)] : undefined;
8208    }
8209
8210    /**
8211     * A specialized version of `_.sampleSize` for arrays.
8212     *
8213     * @private
8214     * @param {Array} array The array to sample.
8215     * @param {number} n The number of elements to sample.
8216     * @returns {Array} Returns the random elements.
8217     */
8218    function arraySampleSize(array, n) {
8219      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
8220    }
8221
8222    /**
8223     * A specialized version of `_.shuffle` for arrays.
8224     *
8225     * @private
8226     * @param {Array} array The array to shuffle.
8227     * @returns {Array} Returns the new shuffled array.
8228     */
8229    function arrayShuffle(array) {
8230      return shuffleSelf(copyArray(array));
8231    }
8232
8233    /**
8234     * This function is like `assignValue` except that it doesn't assign
8235     * `undefined` values.
8236     *
8237     * @private
8238     * @param {Object} object The object to modify.
8239     * @param {string} key The key of the property to assign.
8240     * @param {*} value The value to assign.
8241     */
8242    function assignMergeValue(object, key, value) {
8243      if ((value !== undefined && !eq(object[key], value)) ||
8244          (value === undefined && !(key in object))) {
8245        baseAssignValue(object, key, value);
8246      }
8247    }
8248
8249    /**
8250     * Assigns `value` to `key` of `object` if the existing value is not equivalent
8251     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
8252     * for equality comparisons.
8253     *
8254     * @private
8255     * @param {Object} object The object to modify.
8256     * @param {string} key The key of the property to assign.
8257     * @param {*} value The value to assign.
8258     */
8259    function assignValue(object, key, value) {
8260      var objValue = object[key];
8261      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
8262          (value === undefined && !(key in object))) {
8263        baseAssignValue(object, key, value);
8264      }
8265    }
8266
8267    /**
8268     * Gets the index at which the `key` is found in `array` of key-value pairs.
8269     *
8270     * @private
8271     * @param {Array} array The array to inspect.
8272     * @param {*} key The key to search for.
8273     * @returns {number} Returns the index of the matched value, else `-1`.
8274     */
8275    function assocIndexOf(array, key) {
8276      var length = array.length;
8277      while (length--) {
8278        if (eq(array[length][0], key)) {
8279          return length;
8280        }
8281      }
8282      return -1;
8283    }
8284
8285    /**
8286     * Aggregates elements of `collection` on `accumulator` with keys transformed
8287     * by `iteratee` and values set by `setter`.
8288     *
8289     * @private
8290     * @param {Array|Object} collection The collection to iterate over.
8291     * @param {Function} setter The function to set `accumulator` values.
8292     * @param {Function} iteratee The iteratee to transform keys.
8293     * @param {Object} accumulator The initial aggregated object.
8294     * @returns {Function} Returns `accumulator`.
8295     */
8296    function baseAggregator(collection, setter, iteratee, accumulator) {
8297      baseEach(collection, function(value, key, collection) {
8298        setter(accumulator, value, iteratee(value), collection);
8299      });
8300      return accumulator;
8301    }
8302
8303    /**
8304     * The base implementation of `_.assign` without support for multiple sources
8305     * or `customizer` functions.
8306     *
8307     * @private
8308     * @param {Object} object The destination object.
8309     * @param {Object} source The source object.
8310     * @returns {Object} Returns `object`.
8311     */
8312    function baseAssign(object, source) {
8313      return object && copyObject(source, keys(source), object);
8314    }
8315
8316    /**
8317     * The base implementation of `_.assignIn` without support for multiple sources
8318     * or `customizer` functions.
8319     *
8320     * @private
8321     * @param {Object} object The destination object.
8322     * @param {Object} source The source object.
8323     * @returns {Object} Returns `object`.
8324     */
8325    function baseAssignIn(object, source) {
8326      return object && copyObject(source, keysIn(source), object);
8327    }
8328
8329    /**
8330     * The base implementation of `assignValue` and `assignMergeValue` without
8331     * value checks.
8332     *
8333     * @private
8334     * @param {Object} object The object to modify.
8335     * @param {string} key The key of the property to assign.
8336     * @param {*} value The value to assign.
8337     */
8338    function baseAssignValue(object, key, value) {
8339      if (key == '__proto__' && defineProperty) {
8340        defineProperty(object, key, {
8341          'configurable': true,
8342          'enumerable': true,
8343          'value': value,
8344          'writable': true
8345        });
8346      } else {
8347        object[key] = value;
8348      }
8349    }
8350
8351    /**
8352     * The base implementation of `_.at` without support for individual paths.
8353     *
8354     * @private
8355     * @param {Object} object The object to iterate over.
8356     * @param {string[]} paths The property paths to pick.
8357     * @returns {Array} Returns the picked elements.
8358     */
8359    function baseAt(object, paths) {
8360      var index = -1,
8361          length = paths.length,
8362          result = Array(length),
8363          skip = object == null;
8364
8365      while (++index < length) {
8366        result[index] = skip ? undefined : get(object, paths[index]);
8367      }
8368      return result;
8369    }
8370
8371    /**
8372     * The base implementation of `_.clamp` which doesn't coerce arguments.
8373     *
8374     * @private
8375     * @param {number} number The number to clamp.
8376     * @param {number} [lower] The lower bound.
8377     * @param {number} upper The upper bound.
8378     * @returns {number} Returns the clamped number.
8379     */
8380    function baseClamp(number, lower, upper) {
8381      if (number === number) {
8382        if (upper !== undefined) {
8383          number = number <= upper ? number : upper;
8384        }
8385        if (lower !== undefined) {
8386          number = number >= lower ? number : lower;
8387        }
8388      }
8389      return number;
8390    }
8391
8392    /**
8393     * The base implementation of `_.clone` and `_.cloneDeep` which tracks
8394     * traversed objects.
8395     *
8396     * @private
8397     * @param {*} value The value to clone.
8398     * @param {boolean} bitmask The bitmask flags.
8399     *  1 - Deep clone
8400     *  2 - Flatten inherited properties
8401     *  4 - Clone symbols
8402     * @param {Function} [customizer] The function to customize cloning.
8403     * @param {string} [key] The key of `value`.
8404     * @param {Object} [object] The parent object of `value`.
8405     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
8406     * @returns {*} Returns the cloned value.
8407     */
8408    function baseClone(value, bitmask, customizer, key, object, stack) {
8409      var result,
8410          isDeep = bitmask & CLONE_DEEP_FLAG,
8411          isFlat = bitmask & CLONE_FLAT_FLAG,
8412          isFull = bitmask & CLONE_SYMBOLS_FLAG;
8413
8414      if (customizer) {
8415        result = object ? customizer(value, key, object, stack) : customizer(value);
8416      }
8417      if (result !== undefined) {
8418        return result;
8419      }
8420      if (!isObject(value)) {
8421        return value;
8422      }
8423      var isArr = isArray(value);
8424      if (isArr) {
8425        result = initCloneArray(value);
8426        if (!isDeep) {
8427          return copyArray(value, result);
8428        }
8429      } else {
8430        var tag = getTag(value),
8431            isFunc = tag == funcTag || tag == genTag;
8432
8433        if (isBuffer(value)) {
8434          return cloneBuffer(value, isDeep);
8435        }
8436        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
8437          result = (isFlat || isFunc) ? {} : initCloneObject(value);
8438          if (!isDeep) {
8439            return isFlat
8440              ? copySymbolsIn(value, baseAssignIn(result, value))
8441              : copySymbols(value, baseAssign(result, value));
8442          }
8443        } else {
8444          if (!cloneableTags[tag]) {
8445            return object ? value : {};
8446          }
8447          result = initCloneByTag(value, tag, isDeep);
8448        }
8449      }
8450      // Check for circular references and return its corresponding clone.
8451      stack || (stack = new Stack);
8452      var stacked = stack.get(value);
8453      if (stacked) {
8454        return stacked;
8455      }
8456      stack.set(value, result);
8457
8458      if (isSet(value)) {
8459        value.forEach(function(subValue) {
8460          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
8461        });
8462      } else if (isMap(value)) {
8463        value.forEach(function(subValue, key) {
8464          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
8465        });
8466      }
8467
8468      var keysFunc = isFull
8469        ? (isFlat ? getAllKeysIn : getAllKeys)
8470        : (isFlat ? keysIn : keys);
8471
8472      var props = isArr ? undefined : keysFunc(value);
8473      arrayEach(props || value, function(subValue, key) {
8474        if (props) {
8475          key = subValue;
8476          subValue = value[key];
8477        }
8478        // Recursively populate clone (susceptible to call stack limits).
8479        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
8480      });
8481      return result;
8482    }
8483
8484    /**
8485     * The base implementation of `_.conforms` which doesn't clone `source`.
8486     *
8487     * @private
8488     * @param {Object} source The object of property predicates to conform to.
8489     * @returns {Function} Returns the new spec function.
8490     */
8491    function baseConforms(source) {
8492      var props = keys(source);
8493      return function(object) {
8494        return baseConformsTo(object, source, props);
8495      };
8496    }
8497
8498    /**
8499     * The base implementation of `_.conformsTo` which accepts `props` to check.
8500     *
8501     * @private
8502     * @param {Object} object The object to inspect.
8503     * @param {Object} source The object of property predicates to conform to.
8504     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
8505     */
8506    function baseConformsTo(object, source, props) {
8507      var length = props.length;
8508      if (object == null) {
8509        return !length;
8510      }
8511      object = Object(object);
8512      while (length--) {
8513        var key = props[length],
8514            predicate = source[key],
8515            value = object[key];
8516
8517        if ((value === undefined && !(key in object)) || !predicate(value)) {
8518          return false;
8519        }
8520      }
8521      return true;
8522    }
8523
8524    /**
8525     * The base implementation of `_.delay` and `_.defer` which accepts `args`
8526     * to provide to `func`.
8527     *
8528     * @private
8529     * @param {Function} func The function to delay.
8530     * @param {number} wait The number of milliseconds to delay invocation.
8531     * @param {Array} args The arguments to provide to `func`.
8532     * @returns {number|Object} Returns the timer id or timeout object.
8533     */
8534    function baseDelay(func, wait, args) {
8535      if (typeof func != 'function') {
8536        throw new TypeError(FUNC_ERROR_TEXT);
8537      }
8538      return setTimeout(function() { func.apply(undefined, args); }, wait);
8539    }
8540
8541    /**
8542     * The base implementation of methods like `_.difference` without support
8543     * for excluding multiple arrays or iteratee shorthands.
8544     *
8545     * @private
8546     * @param {Array} array The array to inspect.
8547     * @param {Array} values The values to exclude.
8548     * @param {Function} [iteratee] The iteratee invoked per element.
8549     * @param {Function} [comparator] The comparator invoked per element.
8550     * @returns {Array} Returns the new array of filtered values.
8551     */
8552    function baseDifference(array, values, iteratee, comparator) {
8553      var index = -1,
8554          includes = arrayIncludes,
8555          isCommon = true,
8556          length = array.length,
8557          result = [],
8558          valuesLength = values.length;
8559
8560      if (!length) {
8561        return result;
8562      }
8563      if (iteratee) {
8564        values = arrayMap(values, baseUnary(iteratee));
8565      }
8566      if (comparator) {
8567        includes = arrayIncludesWith;
8568        isCommon = false;
8569      }
8570      else if (values.length >= LARGE_ARRAY_SIZE) {
8571        includes = cacheHas;
8572        isCommon = false;
8573        values = new SetCache(values);
8574      }
8575      outer:
8576      while (++index < length) {
8577        var value = array[index],
8578            computed = iteratee == null ? value : iteratee(value);
8579
8580        value = (comparator || value !== 0) ? value : 0;
8581        if (isCommon && computed === computed) {
8582          var valuesIndex = valuesLength;
8583          while (valuesIndex--) {
8584            if (values[valuesIndex] === computed) {
8585              continue outer;
8586            }
8587          }
8588          result.push(value);
8589        }
8590        else if (!includes(values, computed, comparator)) {
8591          result.push(value);
8592        }
8593      }
8594      return result;
8595    }
8596
8597    /**
8598     * The base implementation of `_.forEach` without support for iteratee shorthands.
8599     *
8600     * @private
8601     * @param {Array|Object} collection The collection to iterate over.
8602     * @param {Function} iteratee The function invoked per iteration.
8603     * @returns {Array|Object} Returns `collection`.
8604     */
8605    var baseEach = createBaseEach(baseForOwn);
8606
8607    /**
8608     * The base implementation of `_.forEachRight` without support for iteratee shorthands.
8609     *
8610     * @private
8611     * @param {Array|Object} collection The collection to iterate over.
8612     * @param {Function} iteratee The function invoked per iteration.
8613     * @returns {Array|Object} Returns `collection`.
8614     */
8615    var baseEachRight = createBaseEach(baseForOwnRight, true);
8616
8617    /**
8618     * The base implementation of `_.every` without support for iteratee shorthands.
8619     *
8620     * @private
8621     * @param {Array|Object} collection The collection to iterate over.
8622     * @param {Function} predicate The function invoked per iteration.
8623     * @returns {boolean} Returns `true` if all elements pass the predicate check,
8624     *  else `false`
8625     */
8626    function baseEvery(collection, predicate) {
8627      var result = true;
8628      baseEach(collection, function(value, index, collection) {
8629        result = !!predicate(value, index, collection);
8630        return result;
8631      });
8632      return result;
8633    }
8634
8635    /**
8636     * The base implementation of methods like `_.max` and `_.min` which accepts a
8637     * `comparator` to determine the extremum value.
8638     *
8639     * @private
8640     * @param {Array} array The array to iterate over.
8641     * @param {Function} iteratee The iteratee invoked per iteration.
8642     * @param {Function} comparator The comparator used to compare values.
8643     * @returns {*} Returns the extremum value.
8644     */
8645    function baseExtremum(array, iteratee, comparator) {
8646      var index = -1,
8647          length = array.length;
8648
8649      while (++index < length) {
8650        var value = array[index],
8651            current = iteratee(value);
8652
8653        if (current != null && (computed === undefined
8654              ? (current === current && !isSymbol(current))
8655              : comparator(current, computed)
8656            )) {
8657          var computed = current,
8658              result = value;
8659        }
8660      }
8661      return result;
8662    }
8663
8664    /**
8665     * The base implementation of `_.fill` without an iteratee call guard.
8666     *
8667     * @private
8668     * @param {Array} array The array to fill.
8669     * @param {*} value The value to fill `array` with.
8670     * @param {number} [start=0] The start position.
8671     * @param {number} [end=array.length] The end position.
8672     * @returns {Array} Returns `array`.
8673     */
8674    function baseFill(array, value, start, end) {
8675      var length = array.length;
8676
8677      start = toInteger(start);
8678      if (start < 0) {
8679        start = -start > length ? 0 : (length + start);
8680      }
8681      end = (end === undefined || end > length) ? length : toInteger(end);
8682      if (end < 0) {
8683        end += length;
8684      }
8685      end = start > end ? 0 : toLength(end);
8686      while (start < end) {
8687        array[start++] = value;
8688      }
8689      return array;
8690    }
8691
8692    /**
8693     * The base implementation of `_.filter` without support for iteratee shorthands.
8694     *
8695     * @private
8696     * @param {Array|Object} collection The collection to iterate over.
8697     * @param {Function} predicate The function invoked per iteration.
8698     * @returns {Array} Returns the new filtered array.
8699     */
8700    function baseFilter(collection, predicate) {
8701      var result = [];
8702      baseEach(collection, function(value, index, collection) {
8703        if (predicate(value, index, collection)) {
8704          result.push(value);
8705        }
8706      });
8707      return result;
8708    }
8709
8710    /**
8711     * The base implementation of `_.flatten` with support for restricting flattening.
8712     *
8713     * @private
8714     * @param {Array} array The array to flatten.
8715     * @param {number} depth The maximum recursion depth.
8716     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
8717     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
8718     * @param {Array} [result=[]] The initial result value.
8719     * @returns {Array} Returns the new flattened array.
8720     */
8721    function baseFlatten(array, depth, predicate, isStrict, result) {
8722      var index = -1,
8723          length = array.length;
8724
8725      predicate || (predicate = isFlattenable);
8726      result || (result = []);
8727
8728      while (++index < length) {
8729        var value = array[index];
8730        if (depth > 0 && predicate(value)) {
8731          if (depth > 1) {
8732            // Recursively flatten arrays (susceptible to call stack limits).
8733            baseFlatten(value, depth - 1, predicate, isStrict, result);
8734          } else {
8735            arrayPush(result, value);
8736          }
8737        } else if (!isStrict) {
8738          result[result.length] = value;
8739        }
8740      }
8741      return result;
8742    }
8743
8744    /**
8745     * The base implementation of `baseForOwn` which iterates over `object`
8746     * properties returned by `keysFunc` and invokes `iteratee` for each property.
8747     * Iteratee functions may exit iteration early by explicitly returning `false`.
8748     *
8749     * @private
8750     * @param {Object} object The object to iterate over.
8751     * @param {Function} iteratee The function invoked per iteration.
8752     * @param {Function} keysFunc The function to get the keys of `object`.
8753     * @returns {Object} Returns `object`.
8754     */
8755    var baseFor = createBaseFor();
8756
8757    /**
8758     * This function is like `baseFor` except that it iterates over properties
8759     * in the opposite order.
8760     *
8761     * @private
8762     * @param {Object} object The object to iterate over.
8763     * @param {Function} iteratee The function invoked per iteration.
8764     * @param {Function} keysFunc The function to get the keys of `object`.
8765     * @returns {Object} Returns `object`.
8766     */
8767    var baseForRight = createBaseFor(true);
8768
8769    /**
8770     * The base implementation of `_.forOwn` without support for iteratee shorthands.
8771     *
8772     * @private
8773     * @param {Object} object The object to iterate over.
8774     * @param {Function} iteratee The function invoked per iteration.
8775     * @returns {Object} Returns `object`.
8776     */
8777    function baseForOwn(object, iteratee) {
8778      return object && baseFor(object, iteratee, keys);
8779    }
8780
8781    /**
8782     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
8783     *
8784     * @private
8785     * @param {Object} object The object to iterate over.
8786     * @param {Function} iteratee The function invoked per iteration.
8787     * @returns {Object} Returns `object`.
8788     */
8789    function baseForOwnRight(object, iteratee) {
8790      return object && baseForRight(object, iteratee, keys);
8791    }
8792
8793    /**
8794     * The base implementation of `_.functions` which creates an array of
8795     * `object` function property names filtered from `props`.
8796     *
8797     * @private
8798     * @param {Object} object The object to inspect.
8799     * @param {Array} props The property names to filter.
8800     * @returns {Array} Returns the function names.
8801     */
8802    function baseFunctions(object, props) {
8803      return arrayFilter(props, function(key) {
8804        return isFunction(object[key]);
8805      });
8806    }
8807
8808    /**
8809     * The base implementation of `_.get` without support for default values.
8810     *
8811     * @private
8812     * @param {Object} object The object to query.
8813     * @param {Array|string} path The path of the property to get.
8814     * @returns {*} Returns the resolved value.
8815     */
8816    function baseGet(object, path) {
8817      path = castPath(path, object);
8818
8819      var index = 0,
8820          length = path.length;
8821
8822      while (object != null && index < length) {
8823        object = object[toKey(path[index++])];
8824      }
8825      return (index && index == length) ? object : undefined;
8826    }
8827
8828    /**
8829     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
8830     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
8831     * symbols of `object`.
8832     *
8833     * @private
8834     * @param {Object} object The object to query.
8835     * @param {Function} keysFunc The function to get the keys of `object`.
8836     * @param {Function} symbolsFunc The function to get the symbols of `object`.
8837     * @returns {Array} Returns the array of property names and symbols.
8838     */
8839    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
8840      var result = keysFunc(object);
8841      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
8842    }
8843
8844    /**
8845     * The base implementation of `getTag` without fallbacks for buggy environments.
8846     *
8847     * @private
8848     * @param {*} value The value to query.
8849     * @returns {string} Returns the `toStringTag`.
8850     */
8851    function baseGetTag(value) {
8852      if (value == null) {
8853        return value === undefined ? undefinedTag : nullTag;
8854      }
8855      return (symToStringTag && symToStringTag in Object(value))
8856        ? getRawTag(value)
8857        : objectToString(value);
8858    }
8859
8860    /**
8861     * The base implementation of `_.gt` which doesn't coerce arguments.
8862     *
8863     * @private
8864     * @param {*} value The value to compare.
8865     * @param {*} other The other value to compare.
8866     * @returns {boolean} Returns `true` if `value` is greater than `other`,
8867     *  else `false`.
8868     */
8869    function baseGt(value, other) {
8870      return value > other;
8871    }
8872
8873    /**
8874     * The base implementation of `_.has` without support for deep paths.
8875     *
8876     * @private
8877     * @param {Object} [object] The object to query.
8878     * @param {Array|string} key The key to check.
8879     * @returns {boolean} Returns `true` if `key` exists, else `false`.
8880     */
8881    function baseHas(object, key) {
8882      return object != null && hasOwnProperty.call(object, key);
8883    }
8884
8885    /**
8886     * The base implementation of `_.hasIn` without support for deep paths.
8887     *
8888     * @private
8889     * @param {Object} [object] The object to query.
8890     * @param {Array|string} key The key to check.
8891     * @returns {boolean} Returns `true` if `key` exists, else `false`.
8892     */
8893    function baseHasIn(object, key) {
8894      return object != null && key in Object(object);
8895    }
8896
8897    /**
8898     * The base implementation of `_.inRange` which doesn't coerce arguments.
8899     *
8900     * @private
8901     * @param {number} number The number to check.
8902     * @param {number} start The start of the range.
8903     * @param {number} end The end of the range.
8904     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
8905     */
8906    function baseInRange(number, start, end) {
8907      return number >= nativeMin(start, end) && number < nativeMax(start, end);
8908    }
8909
8910    /**
8911     * The base implementation of methods like `_.intersection`, without support
8912     * for iteratee shorthands, that accepts an array of arrays to inspect.
8913     *
8914     * @private
8915     * @param {Array} arrays The arrays to inspect.
8916     * @param {Function} [iteratee] The iteratee invoked per element.
8917     * @param {Function} [comparator] The comparator invoked per element.
8918     * @returns {Array} Returns the new array of shared values.
8919     */
8920    function baseIntersection(arrays, iteratee, comparator) {
8921      var includes = comparator ? arrayIncludesWith : arrayIncludes,
8922          length = arrays[0].length,
8923          othLength = arrays.length,
8924          othIndex = othLength,
8925          caches = Array(othLength),
8926          maxLength = Infinity,
8927          result = [];
8928
8929      while (othIndex--) {
8930        var array = arrays[othIndex];
8931        if (othIndex && iteratee) {
8932          array = arrayMap(array, baseUnary(iteratee));
8933        }
8934        maxLength = nativeMin(array.length, maxLength);
8935        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
8936          ? new SetCache(othIndex && array)
8937          : undefined;
8938      }
8939      array = arrays[0];
8940
8941      var index = -1,
8942          seen = caches[0];
8943
8944      outer:
8945      while (++index < length && result.length < maxLength) {
8946        var value = array[index],
8947            computed = iteratee ? iteratee(value) : value;
8948
8949        value = (comparator || value !== 0) ? value : 0;
8950        if (!(seen
8951              ? cacheHas(seen, computed)
8952              : includes(result, computed, comparator)
8953            )) {
8954          othIndex = othLength;
8955          while (--othIndex) {
8956            var cache = caches[othIndex];
8957            if (!(cache
8958                  ? cacheHas(cache, computed)
8959                  : includes(arrays[othIndex], computed, comparator))
8960                ) {
8961              continue outer;
8962            }
8963          }
8964          if (seen) {
8965            seen.push(computed);
8966          }
8967          result.push(value);
8968        }
8969      }
8970      return result;
8971    }
8972
8973    /**
8974     * The base implementation of `_.invert` and `_.invertBy` which inverts
8975     * `object` with values transformed by `iteratee` and set by `setter`.
8976     *
8977     * @private
8978     * @param {Object} object The object to iterate over.
8979     * @param {Function} setter The function to set `accumulator` values.
8980     * @param {Function} iteratee The iteratee to transform values.
8981     * @param {Object} accumulator The initial inverted object.
8982     * @returns {Function} Returns `accumulator`.
8983     */
8984    function baseInverter(object, setter, iteratee, accumulator) {
8985      baseForOwn(object, function(value, key, object) {
8986        setter(accumulator, iteratee(value), key, object);
8987      });
8988      return accumulator;
8989    }
8990
8991    /**
8992     * The base implementation of `_.invoke` without support for individual
8993     * method arguments.
8994     *
8995     * @private
8996     * @param {Object} object The object to query.
8997     * @param {Array|string} path The path of the method to invoke.
8998     * @param {Array} args The arguments to invoke the method with.
8999     * @returns {*} Returns the result of the invoked method.
9000     */
9001    function baseInvoke(object, path, args) {
9002      path = castPath(path, object);
9003      object = parent(object, path);
9004      var func = object == null ? object : object[toKey(last(path))];
9005      return func == null ? undefined : apply(func, object, args);
9006    }
9007
9008    /**
9009     * The base implementation of `_.isArguments`.
9010     *
9011     * @private
9012     * @param {*} value The value to check.
9013     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
9014     */
9015    function baseIsArguments(value) {
9016      return isObjectLike(value) && baseGetTag(value) == argsTag;
9017    }
9018
9019    /**
9020     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
9021     *
9022     * @private
9023     * @param {*} value The value to check.
9024     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
9025     */
9026    function baseIsArrayBuffer(value) {
9027      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
9028    }
9029
9030    /**
9031     * The base implementation of `_.isDate` without Node.js optimizations.
9032     *
9033     * @private
9034     * @param {*} value The value to check.
9035     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
9036     */
9037    function baseIsDate(value) {
9038      return isObjectLike(value) && baseGetTag(value) == dateTag;
9039    }
9040
9041    /**
9042     * The base implementation of `_.isEqual` which supports partial comparisons
9043     * and tracks traversed objects.
9044     *
9045     * @private
9046     * @param {*} value The value to compare.
9047     * @param {*} other The other value to compare.
9048     * @param {boolean} bitmask The bitmask flags.
9049     *  1 - Unordered comparison
9050     *  2 - Partial comparison
9051     * @param {Function} [customizer] The function to customize comparisons.
9052     * @param {Object} [stack] Tracks traversed `value` and `other` objects.
9053     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
9054     */
9055    function baseIsEqual(value, other, bitmask, customizer, stack) {
9056      if (value === other) {
9057        return true;
9058      }
9059      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
9060        return value !== value && other !== other;
9061      }
9062      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
9063    }
9064
9065    /**
9066     * A specialized version of `baseIsEqual` for arrays and objects which performs
9067     * deep comparisons and tracks traversed objects enabling objects with circular
9068     * references to be compared.
9069     *
9070     * @private
9071     * @param {Object} object The object to compare.
9072     * @param {Object} other The other object to compare.
9073     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
9074     * @param {Function} customizer The function to customize comparisons.
9075     * @param {Function} equalFunc The function to determine equivalents of values.
9076     * @param {Object} [stack] Tracks traversed `object` and `other` objects.
9077     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9078     */
9079    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
9080      var objIsArr = isArray(object),
9081          othIsArr = isArray(other),
9082          objTag = objIsArr ? arrayTag : getTag(object),
9083          othTag = othIsArr ? arrayTag : getTag(other);
9084
9085      objTag = objTag == argsTag ? objectTag : objTag;
9086      othTag = othTag == argsTag ? objectTag : othTag;
9087
9088      var objIsObj = objTag == objectTag,
9089          othIsObj = othTag == objectTag,
9090          isSameTag = objTag == othTag;
9091
9092      if (isSameTag && isBuffer(object)) {
9093        if (!isBuffer(other)) {
9094          return false;
9095        }
9096        objIsArr = true;
9097        objIsObj = false;
9098      }
9099      if (isSameTag && !objIsObj) {
9100        stack || (stack = new Stack);
9101        return (objIsArr || isTypedArray(object))
9102          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
9103          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
9104      }
9105      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
9106        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
9107            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
9108
9109        if (objIsWrapped || othIsWrapped) {
9110          var objUnwrapped = objIsWrapped ? object.value() : object,
9111              othUnwrapped = othIsWrapped ? other.value() : other;
9112
9113          stack || (stack = new Stack);
9114          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
9115        }
9116      }
9117      if (!isSameTag) {
9118        return false;
9119      }
9120      stack || (stack = new Stack);
9121      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
9122    }
9123
9124    /**
9125     * The base implementation of `_.isMap` without Node.js optimizations.
9126     *
9127     * @private
9128     * @param {*} value The value to check.
9129     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
9130     */
9131    function baseIsMap(value) {
9132      return isObjectLike(value) && getTag(value) == mapTag;
9133    }
9134
9135    /**
9136     * The base implementation of `_.isMatch` without support for iteratee shorthands.
9137     *
9138     * @private
9139     * @param {Object} object The object to inspect.
9140     * @param {Object} source The object of property values to match.
9141     * @param {Array} matchData The property names, values, and compare flags to match.
9142     * @param {Function} [customizer] The function to customize comparisons.
9143     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
9144     */
9145    function baseIsMatch(object, source, matchData, customizer) {
9146      var index = matchData.length,
9147          length = index,
9148          noCustomizer = !customizer;
9149
9150      if (object == null) {
9151        return !length;
9152      }
9153      object = Object(object);
9154      while (index--) {
9155        var data = matchData[index];
9156        if ((noCustomizer && data[2])
9157              ? data[1] !== object[data[0]]
9158              : !(data[0] in object)
9159            ) {
9160          return false;
9161        }
9162      }
9163      while (++index < length) {
9164        data = matchData[index];
9165        var key = data[0],
9166            objValue = object[key],
9167            srcValue = data[1];
9168
9169        if (noCustomizer && data[2]) {
9170          if (objValue === undefined && !(key in object)) {
9171            return false;
9172          }
9173        } else {
9174          var stack = new Stack;
9175          if (customizer) {
9176            var result = customizer(objValue, srcValue, key, object, source, stack);
9177          }
9178          if (!(result === undefined
9179                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
9180                : result
9181              )) {
9182            return false;
9183          }
9184        }
9185      }
9186      return true;
9187    }
9188
9189    /**
9190     * The base implementation of `_.isNative` without bad shim checks.
9191     *
9192     * @private
9193     * @param {*} value The value to check.
9194     * @returns {boolean} Returns `true` if `value` is a native function,
9195     *  else `false`.
9196     */
9197    function baseIsNative(value) {
9198      if (!isObject(value) || isMasked(value)) {
9199        return false;
9200      }
9201      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
9202      return pattern.test(toSource(value));
9203    }
9204
9205    /**
9206     * The base implementation of `_.isRegExp` without Node.js optimizations.
9207     *
9208     * @private
9209     * @param {*} value The value to check.
9210     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
9211     */
9212    function baseIsRegExp(value) {
9213      return isObjectLike(value) && baseGetTag(value) == regexpTag;
9214    }
9215
9216    /**
9217     * The base implementation of `_.isSet` without Node.js optimizations.
9218     *
9219     * @private
9220     * @param {*} value The value to check.
9221     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
9222     */
9223    function baseIsSet(value) {
9224      return isObjectLike(value) && getTag(value) == setTag;
9225    }
9226
9227    /**
9228     * The base implementation of `_.isTypedArray` without Node.js optimizations.
9229     *
9230     * @private
9231     * @param {*} value The value to check.
9232     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
9233     */
9234    function baseIsTypedArray(value) {
9235      return isObjectLike(value) &&
9236        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
9237    }
9238
9239    /**
9240     * The base implementation of `_.iteratee`.
9241     *
9242     * @private
9243     * @param {*} [value=_.identity] The value to convert to an iteratee.
9244     * @returns {Function} Returns the iteratee.
9245     */
9246    function baseIteratee(value) {
9247      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
9248      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
9249      if (typeof value == 'function') {
9250        return value;
9251      }
9252      if (value == null) {
9253        return identity;
9254      }
9255      if (typeof value == 'object') {
9256        return isArray(value)
9257          ? baseMatchesProperty(value[0], value[1])
9258          : baseMatches(value);
9259      }
9260      return property(value);
9261    }
9262
9263    /**
9264     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
9265     *
9266     * @private
9267     * @param {Object} object The object to query.
9268     * @returns {Array} Returns the array of property names.
9269     */
9270    function baseKeys(object) {
9271      if (!isPrototype(object)) {
9272        return nativeKeys(object);
9273      }
9274      var result = [];
9275      for (var key in Object(object)) {
9276        if (hasOwnProperty.call(object, key) && key != 'constructor') {
9277          result.push(key);
9278        }
9279      }
9280      return result;
9281    }
9282
9283    /**
9284     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
9285     *
9286     * @private
9287     * @param {Object} object The object to query.
9288     * @returns {Array} Returns the array of property names.
9289     */
9290    function baseKeysIn(object) {
9291      if (!isObject(object)) {
9292        return nativeKeysIn(object);
9293      }
9294      var isProto = isPrototype(object),
9295          result = [];
9296
9297      for (var key in object) {
9298        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
9299          result.push(key);
9300        }
9301      }
9302      return result;
9303    }
9304
9305    /**
9306     * The base implementation of `_.lt` which doesn't coerce arguments.
9307     *
9308     * @private
9309     * @param {*} value The value to compare.
9310     * @param {*} other The other value to compare.
9311     * @returns {boolean} Returns `true` if `value` is less than `other`,
9312     *  else `false`.
9313     */
9314    function baseLt(value, other) {
9315      return value < other;
9316    }
9317
9318    /**
9319     * The base implementation of `_.map` without support for iteratee shorthands.
9320     *
9321     * @private
9322     * @param {Array|Object} collection The collection to iterate over.
9323     * @param {Function} iteratee The function invoked per iteration.
9324     * @returns {Array} Returns the new mapped array.
9325     */
9326    function baseMap(collection, iteratee) {
9327      var index = -1,
9328          result = isArrayLike(collection) ? Array(collection.length) : [];
9329
9330      baseEach(collection, function(value, key, collection) {
9331        result[++index] = iteratee(value, key, collection);
9332      });
9333      return result;
9334    }
9335
9336    /**
9337     * The base implementation of `_.matches` which doesn't clone `source`.
9338     *
9339     * @private
9340     * @param {Object} source The object of property values to match.
9341     * @returns {Function} Returns the new spec function.
9342     */
9343    function baseMatches(source) {
9344      var matchData = getMatchData(source);
9345      if (matchData.length == 1 && matchData[0][2]) {
9346        return matchesStrictComparable(matchData[0][0], matchData[0][1]);
9347      }
9348      return function(object) {
9349        return object === source || baseIsMatch(object, source, matchData);
9350      };
9351    }
9352
9353    /**
9354     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
9355     *
9356     * @private
9357     * @param {string} path The path of the property to get.
9358     * @param {*} srcValue The value to match.
9359     * @returns {Function} Returns the new spec function.
9360     */
9361    function baseMatchesProperty(path, srcValue) {
9362      if (isKey(path) && isStrictComparable(srcValue)) {
9363        return matchesStrictComparable(toKey(path), srcValue);
9364      }
9365      return function(object) {
9366        var objValue = get(object, path);
9367        return (objValue === undefined && objValue === srcValue)
9368          ? hasIn(object, path)
9369          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
9370      };
9371    }
9372
9373    /**
9374     * The base implementation of `_.merge` without support for multiple sources.
9375     *
9376     * @private
9377     * @param {Object} object The destination object.
9378     * @param {Object} source The source object.
9379     * @param {number} srcIndex The index of `source`.
9380     * @param {Function} [customizer] The function to customize merged values.
9381     * @param {Object} [stack] Tracks traversed source values and their merged
9382     *  counterparts.
9383     */
9384    function baseMerge(object, source, srcIndex, customizer, stack) {
9385      if (object === source) {
9386        return;
9387      }
9388      baseFor(source, function(srcValue, key) {
9389        stack || (stack = new Stack);
9390        if (isObject(srcValue)) {
9391          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
9392        }
9393        else {
9394          var newValue = customizer
9395            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
9396            : undefined;
9397
9398          if (newValue === undefined) {
9399            newValue = srcValue;
9400          }
9401          assignMergeValue(object, key, newValue);
9402        }
9403      }, keysIn);
9404    }
9405
9406    /**
9407     * A specialized version of `baseMerge` for arrays and objects which performs
9408     * deep merges and tracks traversed objects enabling objects with circular
9409     * references to be merged.
9410     *
9411     * @private
9412     * @param {Object} object The destination object.
9413     * @param {Object} source The source object.
9414     * @param {string} key The key of the value to merge.
9415     * @param {number} srcIndex The index of `source`.
9416     * @param {Function} mergeFunc The function to merge values.
9417     * @param {Function} [customizer] The function to customize assigned values.
9418     * @param {Object} [stack] Tracks traversed source values and their merged
9419     *  counterparts.
9420     */
9421    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
9422      var objValue = safeGet(object, key),
9423          srcValue = safeGet(source, key),
9424          stacked = stack.get(srcValue);
9425
9426      if (stacked) {
9427        assignMergeValue(object, key, stacked);
9428        return;
9429      }
9430      var newValue = customizer
9431        ? customizer(objValue, srcValue, (key + ''), object, source, stack)
9432        : undefined;
9433
9434      var isCommon = newValue === undefined;
9435
9436      if (isCommon) {
9437        var isArr = isArray(srcValue),
9438            isBuff = !isArr && isBuffer(srcValue),
9439            isTyped = !isArr && !isBuff && isTypedArray(srcValue);
9440
9441        newValue = srcValue;
9442        if (isArr || isBuff || isTyped) {
9443          if (isArray(objValue)) {
9444            newValue = objValue;
9445          }
9446          else if (isArrayLikeObject(objValue)) {
9447            newValue = copyArray(objValue);
9448          }
9449          else if (isBuff) {
9450            isCommon = false;
9451            newValue = cloneBuffer(srcValue, true);
9452          }
9453          else if (isTyped) {
9454            isCommon = false;
9455            newValue = cloneTypedArray(srcValue, true);
9456          }
9457          else {
9458            newValue = [];
9459          }
9460        }
9461        else if (isPlainObject(srcValue) || isArguments(srcValue)) {
9462          newValue = objValue;
9463          if (isArguments(objValue)) {
9464            newValue = toPlainObject(objValue);
9465          }
9466          else if (!isObject(objValue) || isFunction(objValue)) {
9467            newValue = initCloneObject(srcValue);
9468          }
9469        }
9470        else {
9471          isCommon = false;
9472        }
9473      }
9474      if (isCommon) {
9475        // Recursively merge objects and arrays (susceptible to call stack limits).
9476        stack.set(srcValue, newValue);
9477        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
9478        stack['delete'](srcValue);
9479      }
9480      assignMergeValue(object, key, newValue);
9481    }
9482
9483    /**
9484     * The base implementation of `_.nth` which doesn't coerce arguments.
9485     *
9486     * @private
9487     * @param {Array} array The array to query.
9488     * @param {number} n The index of the element to return.
9489     * @returns {*} Returns the nth element of `array`.
9490     */
9491    function baseNth(array, n) {
9492      var length = array.length;
9493      if (!length) {
9494        return;
9495      }
9496      n += n < 0 ? length : 0;
9497      return isIndex(n, length) ? array[n] : undefined;
9498    }
9499
9500    /**
9501     * The base implementation of `_.orderBy` without param guards.
9502     *
9503     * @private
9504     * @param {Array|Object} collection The collection to iterate over.
9505     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
9506     * @param {string[]} orders The sort orders of `iteratees`.
9507     * @returns {Array} Returns the new sorted array.
9508     */
9509    function baseOrderBy(collection, iteratees, orders) {
9510      if (iteratees.length) {
9511        iteratees = arrayMap(iteratees, function(iteratee) {
9512          if (isArray(iteratee)) {
9513            return function(value) {
9514              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
9515            }
9516          }
9517          return iteratee;
9518        });
9519      } else {
9520        iteratees = [identity];
9521      }
9522
9523      var index = -1;
9524      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
9525
9526      var result = baseMap(collection, function(value, key, collection) {
9527        var criteria = arrayMap(iteratees, function(iteratee) {
9528          return iteratee(value);
9529        });
9530        return { 'criteria': criteria, 'index': ++index, 'value': value };
9531      });
9532
9533      return baseSortBy(result, function(object, other) {
9534        return compareMultiple(object, other, orders);
9535      });
9536    }
9537
9538    /**
9539     * The base implementation of `_.pick` without support for individual
9540     * property identifiers.
9541     *
9542     * @private
9543     * @param {Object} object The source object.
9544     * @param {string[]} paths The property paths to pick.
9545     * @returns {Object} Returns the new object.
9546     */
9547    function basePick(object, paths) {
9548      return basePickBy(object, paths, function(value, path) {
9549        return hasIn(object, path);
9550      });
9551    }
9552
9553    /**
9554     * The base implementation of  `_.pickBy` without support for iteratee shorthands.
9555     *
9556     * @private
9557     * @param {Object} object The source object.
9558     * @param {string[]} paths The property paths to pick.
9559     * @param {Function} predicate The function invoked per property.
9560     * @returns {Object} Returns the new object.
9561     */
9562    function basePickBy(object, paths, predicate) {
9563      var index = -1,
9564          length = paths.length,
9565          result = {};
9566
9567      while (++index < length) {
9568        var path = paths[index],
9569            value = baseGet(object, path);
9570
9571        if (predicate(value, path)) {
9572          baseSet(result, castPath(path, object), value);
9573        }
9574      }
9575      return result;
9576    }
9577
9578    /**
9579     * A specialized version of `baseProperty` which supports deep paths.
9580     *
9581     * @private
9582     * @param {Array|string} path The path of the property to get.
9583     * @returns {Function} Returns the new accessor function.
9584     */
9585    function basePropertyDeep(path) {
9586      return function(object) {
9587        return baseGet(object, path);
9588      };
9589    }
9590
9591    /**
9592     * The base implementation of `_.pullAllBy` without support for iteratee
9593     * shorthands.
9594     *
9595     * @private
9596     * @param {Array} array The array to modify.
9597     * @param {Array} values The values to remove.
9598     * @param {Function} [iteratee] The iteratee invoked per element.
9599     * @param {Function} [comparator] The comparator invoked per element.
9600     * @returns {Array} Returns `array`.
9601     */
9602    function basePullAll(array, values, iteratee, comparator) {
9603      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
9604          index = -1,
9605          length = values.length,
9606          seen = array;
9607
9608      if (array === values) {
9609        values = copyArray(values);
9610      }
9611      if (iteratee) {
9612        seen = arrayMap(array, baseUnary(iteratee));
9613      }
9614      while (++index < length) {
9615        var fromIndex = 0,
9616            value = values[index],
9617            computed = iteratee ? iteratee(value) : value;
9618
9619        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
9620          if (seen !== array) {
9621            splice.call(seen, fromIndex, 1);
9622          }
9623          splice.call(array, fromIndex, 1);
9624        }
9625      }
9626      return array;
9627    }
9628
9629    /**
9630     * The base implementation of `_.pullAt` without support for individual
9631     * indexes or capturing the removed elements.
9632     *
9633     * @private
9634     * @param {Array} array The array to modify.
9635     * @param {number[]} indexes The indexes of elements to remove.
9636     * @returns {Array} Returns `array`.
9637     */
9638    function basePullAt(array, indexes) {
9639      var length = array ? indexes.length : 0,
9640          lastIndex = length - 1;
9641
9642      while (length--) {
9643        var index = indexes[length];
9644        if (length == lastIndex || index !== previous) {
9645          var previous = index;
9646          if (isIndex(index)) {
9647            splice.call(array, index, 1);
9648          } else {
9649            baseUnset(array, index);
9650          }
9651        }
9652      }
9653      return array;
9654    }
9655
9656    /**
9657     * The base implementation of `_.random` without support for returning
9658     * floating-point numbers.
9659     *
9660     * @private
9661     * @param {number} lower The lower bound.
9662     * @param {number} upper The upper bound.
9663     * @returns {number} Returns the random number.
9664     */
9665    function baseRandom(lower, upper) {
9666      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
9667    }
9668
9669    /**
9670     * The base implementation of `_.range` and `_.rangeRight` which doesn't
9671     * coerce arguments.
9672     *
9673     * @private
9674     * @param {number} start The start of the range.
9675     * @param {number} end The end of the range.
9676     * @param {number} step The value to increment or decrement by.
9677     * @param {boolean} [fromRight] Specify iterating from right to left.
9678     * @returns {Array} Returns the range of numbers.
9679     */
9680    function baseRange(start, end, step, fromRight) {
9681      var index = -1,
9682          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
9683          result = Array(length);
9684
9685      while (length--) {
9686        result[fromRight ? length : ++index] = start;
9687        start += step;
9688      }
9689      return result;
9690    }
9691
9692    /**
9693     * The base implementation of `_.repeat` which doesn't coerce arguments.
9694     *
9695     * @private
9696     * @param {string} string The string to repeat.
9697     * @param {number} n The number of times to repeat the string.
9698     * @returns {string} Returns the repeated string.
9699     */
9700    function baseRepeat(string, n) {
9701      var result = '';
9702      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
9703        return result;
9704      }
9705      // Leverage the exponentiation by squaring algorithm for a faster repeat.
9706      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
9707      do {
9708        if (n % 2) {
9709          result += string;
9710        }
9711        n = nativeFloor(n / 2);
9712        if (n) {
9713          string += string;
9714        }
9715      } while (n);
9716
9717      return result;
9718    }
9719
9720    /**
9721     * The base implementation of `_.rest` which doesn't validate or coerce arguments.
9722     *
9723     * @private
9724     * @param {Function} func The function to apply a rest parameter to.
9725     * @param {number} [start=func.length-1] The start position of the rest parameter.
9726     * @returns {Function} Returns the new function.
9727     */
9728    function baseRest(func, start) {
9729      return setToString(overRest(func, start, identity), func + '');
9730    }
9731
9732    /**
9733     * The base implementation of `_.sample`.
9734     *
9735     * @private
9736     * @param {Array|Object} collection The collection to sample.
9737     * @returns {*} Returns the random element.
9738     */
9739    function baseSample(collection) {
9740      return arraySample(values(collection));
9741    }
9742
9743    /**
9744     * The base implementation of `_.sampleSize` without param guards.
9745     *
9746     * @private
9747     * @param {Array|Object} collection The collection to sample.
9748     * @param {number} n The number of elements to sample.
9749     * @returns {Array} Returns the random elements.
9750     */
9751    function baseSampleSize(collection, n) {
9752      var array = values(collection);
9753      return shuffleSelf(array, baseClamp(n, 0, array.length));
9754    }
9755
9756    /**
9757     * The base implementation of `_.set`.
9758     *
9759     * @private
9760     * @param {Object} object The object to modify.
9761     * @param {Array|string} path The path of the property to set.
9762     * @param {*} value The value to set.
9763     * @param {Function} [customizer] The function to customize path creation.
9764     * @returns {Object} Returns `object`.
9765     */
9766    function baseSet(object, path, value, customizer) {
9767      if (!isObject(object)) {
9768        return object;
9769      }
9770      path = castPath(path, object);
9771
9772      var index = -1,
9773          length = path.length,
9774          lastIndex = length - 1,
9775          nested = object;
9776
9777      while (nested != null && ++index < length) {
9778        var key = toKey(path[index]),
9779            newValue = value;
9780
9781        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
9782          return object;
9783        }
9784
9785        if (index != lastIndex) {
9786          var objValue = nested[key];
9787          newValue = customizer ? customizer(objValue, key, nested) : undefined;
9788          if (newValue === undefined) {
9789            newValue = isObject(objValue)
9790              ? objValue
9791              : (isIndex(path[index + 1]) ? [] : {});
9792          }
9793        }
9794        assignValue(nested, key, newValue);
9795        nested = nested[key];
9796      }
9797      return object;
9798    }
9799
9800    /**
9801     * The base implementation of `setData` without support for hot loop shorting.
9802     *
9803     * @private
9804     * @param {Function} func The function to associate metadata with.
9805     * @param {*} data The metadata.
9806     * @returns {Function} Returns `func`.
9807     */
9808    var baseSetData = !metaMap ? identity : function(func, data) {
9809      metaMap.set(func, data);
9810      return func;
9811    };
9812
9813    /**
9814     * The base implementation of `setToString` without support for hot loop shorting.
9815     *
9816     * @private
9817     * @param {Function} func The function to modify.
9818     * @param {Function} string The `toString` result.
9819     * @returns {Function} Returns `func`.
9820     */
9821    var baseSetToString = !defineProperty ? identity : function(func, string) {
9822      return defineProperty(func, 'toString', {
9823        'configurable': true,
9824        'enumerable': false,
9825        'value': constant(string),
9826        'writable': true
9827      });
9828    };
9829
9830    /**
9831     * The base implementation of `_.shuffle`.
9832     *
9833     * @private
9834     * @param {Array|Object} collection The collection to shuffle.
9835     * @returns {Array} Returns the new shuffled array.
9836     */
9837    function baseShuffle(collection) {
9838      return shuffleSelf(values(collection));
9839    }
9840
9841    /**
9842     * The base implementation of `_.slice` without an iteratee call guard.
9843     *
9844     * @private
9845     * @param {Array} array The array to slice.
9846     * @param {number} [start=0] The start position.
9847     * @param {number} [end=array.length] The end position.
9848     * @returns {Array} Returns the slice of `array`.
9849     */
9850    function baseSlice(array, start, end) {
9851      var index = -1,
9852          length = array.length;
9853
9854      if (start < 0) {
9855        start = -start > length ? 0 : (length + start);
9856      }
9857      end = end > length ? length : end;
9858      if (end < 0) {
9859        end += length;
9860      }
9861      length = start > end ? 0 : ((end - start) >>> 0);
9862      start >>>= 0;
9863
9864      var result = Array(length);
9865      while (++index < length) {
9866        result[index] = array[index + start];
9867      }
9868      return result;
9869    }
9870
9871    /**
9872     * The base implementation of `_.some` without support for iteratee shorthands.
9873     *
9874     * @private
9875     * @param {Array|Object} collection The collection to iterate over.
9876     * @param {Function} predicate The function invoked per iteration.
9877     * @returns {boolean} Returns `true` if any element passes the predicate check,
9878     *  else `false`.
9879     */
9880    function baseSome(collection, predicate) {
9881      var result;
9882
9883      baseEach(collection, function(value, index, collection) {
9884        result = predicate(value, index, collection);
9885        return !result;
9886      });
9887      return !!result;
9888    }
9889
9890    /**
9891     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
9892     * performs a binary search of `array` to determine the index at which `value`
9893     * should be inserted into `array` in order to maintain its sort order.
9894     *
9895     * @private
9896     * @param {Array} array The sorted array to inspect.
9897     * @param {*} value The value to evaluate.
9898     * @param {boolean} [retHighest] Specify returning the highest qualified index.
9899     * @returns {number} Returns the index at which `value` should be inserted
9900     *  into `array`.
9901     */
9902    function baseSortedIndex(array, value, retHighest) {
9903      var low = 0,
9904          high = array == null ? low : array.length;
9905
9906      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
9907        while (low < high) {
9908          var mid = (low + high) >>> 1,
9909              computed = array[mid];
9910
9911          if (computed !== null && !isSymbol(computed) &&
9912              (retHighest ? (computed <= value) : (computed < value))) {
9913            low = mid + 1;
9914          } else {
9915            high = mid;
9916          }
9917        }
9918        return high;
9919      }
9920      return baseSortedIndexBy(array, value, identity, retHighest);
9921    }
9922
9923    /**
9924     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
9925     * which invokes `iteratee` for `value` and each element of `array` to compute
9926     * their sort ranking. The iteratee is invoked with one argument; (value).
9927     *
9928     * @private
9929     * @param {Array} array The sorted array to inspect.
9930     * @param {*} value The value to evaluate.
9931     * @param {Function} iteratee The iteratee invoked per element.
9932     * @param {boolean} [retHighest] Specify returning the highest qualified index.
9933     * @returns {number} Returns the index at which `value` should be inserted
9934     *  into `array`.
9935     */
9936    function baseSortedIndexBy(array, value, iteratee, retHighest) {
9937      var low = 0,
9938          high = array == null ? 0 : array.length;
9939      if (high === 0) {
9940        return 0;
9941      }
9942
9943      value = iteratee(value);
9944      var valIsNaN = value !== value,
9945          valIsNull = value === null,
9946          valIsSymbol = isSymbol(value),
9947          valIsUndefined = value === undefined;
9948
9949      while (low < high) {
9950        var mid = nativeFloor((low + high) / 2),
9951            computed = iteratee(array[mid]),
9952            othIsDefined = computed !== undefined,
9953            othIsNull = computed === null,
9954            othIsReflexive = computed === computed,
9955            othIsSymbol = isSymbol(computed);
9956
9957        if (valIsNaN) {
9958          var setLow = retHighest || othIsReflexive;
9959        } else if (valIsUndefined) {
9960          setLow = othIsReflexive && (retHighest || othIsDefined);
9961        } else if (valIsNull) {
9962          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
9963        } else if (valIsSymbol) {
9964          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
9965        } else if (othIsNull || othIsSymbol) {
9966          setLow = false;
9967        } else {
9968          setLow = retHighest ? (computed <= value) : (computed < value);
9969        }
9970        if (setLow) {
9971          low = mid + 1;
9972        } else {
9973          high = mid;
9974        }
9975      }
9976      return nativeMin(high, MAX_ARRAY_INDEX);
9977    }
9978
9979    /**
9980     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
9981     * support for iteratee shorthands.
9982     *
9983     * @private
9984     * @param {Array} array The array to inspect.
9985     * @param {Function} [iteratee] The iteratee invoked per element.
9986     * @returns {Array} Returns the new duplicate free array.
9987     */
9988    function baseSortedUniq(array, iteratee) {
9989      var index = -1,
9990          length = array.length,
9991          resIndex = 0,
9992          result = [];
9993
9994      while (++index < length) {
9995        var value = array[index],
9996            computed = iteratee ? iteratee(value) : value;
9997
9998        if (!index || !eq(computed, seen)) {
9999          var seen = computed;
10000          result[resIndex++] = value === 0 ? 0 : value;
10001        }
10002      }
10003      return result;
10004    }
10005
10006    /**
10007     * The base implementation of `_.toNumber` which doesn't ensure correct
10008     * conversions of binary, hexadecimal, or octal string values.
10009     *
10010     * @private
10011     * @param {*} value The value to process.
10012     * @returns {number} Returns the number.
10013     */
10014    function baseToNumber(value) {
10015      if (typeof value == 'number') {
10016        return value;
10017      }
10018      if (isSymbol(value)) {
10019        return NAN;
10020      }
10021      return +value;
10022    }
10023
10024    /**
10025     * The base implementation of `_.toString` which doesn't convert nullish
10026     * values to empty strings.
10027     *
10028     * @private
10029     * @param {*} value The value to process.
10030     * @returns {string} Returns the string.
10031     */
10032    function baseToString(value) {
10033      // Exit early for strings to avoid a performance hit in some environments.
10034      if (typeof value == 'string') {
10035        return value;
10036      }
10037      if (isArray(value)) {
10038        // Recursively convert values (susceptible to call stack limits).
10039        return arrayMap(value, baseToString) + '';
10040      }
10041      if (isSymbol(value)) {
10042        return symbolToString ? symbolToString.call(value) : '';
10043      }
10044      var result = (value + '');
10045      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
10046    }
10047
10048    /**
10049     * The base implementation of `_.uniqBy` without support for iteratee shorthands.
10050     *
10051     * @private
10052     * @param {Array} array The array to inspect.
10053     * @param {Function} [iteratee] The iteratee invoked per element.
10054     * @param {Function} [comparator] The comparator invoked per element.
10055     * @returns {Array} Returns the new duplicate free array.
10056     */
10057    function baseUniq(array, iteratee, comparator) {
10058      var index = -1,
10059          includes = arrayIncludes,
10060          length = array.length,
10061          isCommon = true,
10062          result = [],
10063          seen = result;
10064
10065      if (comparator) {
10066        isCommon = false;
10067        includes = arrayIncludesWith;
10068      }
10069      else if (length >= LARGE_ARRAY_SIZE) {
10070        var set = iteratee ? null : createSet(array);
10071        if (set) {
10072          return setToArray(set);
10073        }
10074        isCommon = false;
10075        includes = cacheHas;
10076        seen = new SetCache;
10077      }
10078      else {
10079        seen = iteratee ? [] : result;
10080      }
10081      outer:
10082      while (++index < length) {
10083        var value = array[index],
10084            computed = iteratee ? iteratee(value) : value;
10085
10086        value = (comparator || value !== 0) ? value : 0;
10087        if (isCommon && computed === computed) {
10088          var seenIndex = seen.length;
10089          while (seenIndex--) {
10090            if (seen[seenIndex] === computed) {
10091              continue outer;
10092            }
10093          }
10094          if (iteratee) {
10095            seen.push(computed);
10096          }
10097          result.push(value);
10098        }
10099        else if (!includes(seen, computed, comparator)) {
10100          if (seen !== result) {
10101            seen.push(computed);
10102          }
10103          result.push(value);
10104        }
10105      }
10106      return result;
10107    }
10108
10109    /**
10110     * The base implementation of `_.unset`.
10111     *
10112     * @private
10113     * @param {Object} object The object to modify.
10114     * @param {Array|string} path The property path to unset.
10115     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
10116     */
10117    function baseUnset(object, path) {
10118      path = castPath(path, object);
10119      object = parent(object, path);
10120      return object == null || delete object[toKey(last(path))];
10121    }
10122
10123    /**
10124     * The base implementation of `_.update`.
10125     *
10126     * @private
10127     * @param {Object} object The object to modify.
10128     * @param {Array|string} path The path of the property to update.
10129     * @param {Function} updater The function to produce the updated value.
10130     * @param {Function} [customizer] The function to customize path creation.
10131     * @returns {Object} Returns `object`.
10132     */
10133    function baseUpdate(object, path, updater, customizer) {
10134      return baseSet(object, path, updater(baseGet(object, path)), customizer);
10135    }
10136
10137    /**
10138     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
10139     * without support for iteratee shorthands.
10140     *
10141     * @private
10142     * @param {Array} array The array to query.
10143     * @param {Function} predicate The function invoked per iteration.
10144     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
10145     * @param {boolean} [fromRight] Specify iterating from right to left.
10146     * @returns {Array} Returns the slice of `array`.
10147     */
10148    function baseWhile(array, predicate, isDrop, fromRight) {
10149      var length = array.length,
10150          index = fromRight ? length : -1;
10151
10152      while ((fromRight ? index-- : ++index < length) &&
10153        predicate(array[index], index, array)) {}
10154
10155      return isDrop
10156        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
10157        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
10158    }
10159
10160    /**
10161     * The base implementation of `wrapperValue` which returns the result of
10162     * performing a sequence of actions on the unwrapped `value`, where each
10163     * successive action is supplied the return value of the previous.
10164     *
10165     * @private
10166     * @param {*} value The unwrapped value.
10167     * @param {Array} actions Actions to perform to resolve the unwrapped value.
10168     * @returns {*} Returns the resolved value.
10169     */
10170    function baseWrapperValue(value, actions) {
10171      var result = value;
10172      if (result instanceof LazyWrapper) {
10173        result = result.value();
10174      }
10175      return arrayReduce(actions, function(result, action) {
10176        return action.func.apply(action.thisArg, arrayPush([result], action.args));
10177      }, result);
10178    }
10179
10180    /**
10181     * The base implementation of methods like `_.xor`, without support for
10182     * iteratee shorthands, that accepts an array of arrays to inspect.
10183     *
10184     * @private
10185     * @param {Array} arrays The arrays to inspect.
10186     * @param {Function} [iteratee] The iteratee invoked per element.
10187     * @param {Function} [comparator] The comparator invoked per element.
10188     * @returns {Array} Returns the new array of values.
10189     */
10190    function baseXor(arrays, iteratee, comparator) {
10191      var length = arrays.length;
10192      if (length < 2) {
10193        return length ? baseUniq(arrays[0]) : [];
10194      }
10195      var index = -1,
10196          result = Array(length);
10197
10198      while (++index < length) {
10199        var array = arrays[index],
10200            othIndex = -1;
10201
10202        while (++othIndex < length) {
10203          if (othIndex != index) {
10204            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
10205          }
10206        }
10207      }
10208      return baseUniq(baseFlatten(result, 1), iteratee, comparator);
10209    }
10210
10211    /**
10212     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
10213     *
10214     * @private
10215     * @param {Array} props The property identifiers.
10216     * @param {Array} values The property values.
10217     * @param {Function} assignFunc The function to assign values.
10218     * @returns {Object} Returns the new object.
10219     */
10220    function baseZipObject(props, values, assignFunc) {
10221      var index = -1,
10222          length = props.length,
10223          valsLength = values.length,
10224          result = {};
10225
10226      while (++index < length) {
10227        var value = index < valsLength ? values[index] : undefined;
10228        assignFunc(result, props[index], value);
10229      }
10230      return result;
10231    }
10232
10233    /**
10234     * Casts `value` to an empty array if it's not an array like object.
10235     *
10236     * @private
10237     * @param {*} value The value to inspect.
10238     * @returns {Array|Object} Returns the cast array-like object.
10239     */
10240    function castArrayLikeObject(value) {
10241      return isArrayLikeObject(value) ? value : [];
10242    }
10243
10244    /**
10245     * Casts `value` to `identity` if it's not a function.
10246     *
10247     * @private
10248     * @param {*} value The value to inspect.
10249     * @returns {Function} Returns cast function.
10250     */
10251    function castFunction(value) {
10252      return typeof value == 'function' ? value : identity;
10253    }
10254
10255    /**
10256     * Casts `value` to a path array if it's not one.
10257     *
10258     * @private
10259     * @param {*} value The value to inspect.
10260     * @param {Object} [object] The object to query keys on.
10261     * @returns {Array} Returns the cast property path array.
10262     */
10263    function castPath(value, object) {
10264      if (isArray(value)) {
10265        return value;
10266      }
10267      return isKey(value, object) ? [value] : stringToPath(toString(value));
10268    }
10269
10270    /**
10271     * A `baseRest` alias which can be replaced with `identity` by module
10272     * replacement plugins.
10273     *
10274     * @private
10275     * @type {Function}
10276     * @param {Function} func The function to apply a rest parameter to.
10277     * @returns {Function} Returns the new function.
10278     */
10279    var castRest = baseRest;
10280
10281    /**
10282     * Casts `array` to a slice if it's needed.
10283     *
10284     * @private
10285     * @param {Array} array The array to inspect.
10286     * @param {number} start The start position.
10287     * @param {number} [end=array.length] The end position.
10288     * @returns {Array} Returns the cast slice.
10289     */
10290    function castSlice(array, start, end) {
10291      var length = array.length;
10292      end = end === undefined ? length : end;
10293      return (!start && end >= length) ? array : baseSlice(array, start, end);
10294    }
10295
10296    /**
10297     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
10298     *
10299     * @private
10300     * @param {number|Object} id The timer id or timeout object of the timer to clear.
10301     */
10302    var clearTimeout = ctxClearTimeout || function(id) {
10303      return root.clearTimeout(id);
10304    };
10305
10306    /**
10307     * Creates a clone of  `buffer`.
10308     *
10309     * @private
10310     * @param {Buffer} buffer The buffer to clone.
10311     * @param {boolean} [isDeep] Specify a deep clone.
10312     * @returns {Buffer} Returns the cloned buffer.
10313     */
10314    function cloneBuffer(buffer, isDeep) {
10315      if (isDeep) {
10316        return buffer.slice();
10317      }
10318      var length = buffer.length,
10319          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
10320
10321      buffer.copy(result);
10322      return result;
10323    }
10324
10325    /**
10326     * Creates a clone of `arrayBuffer`.
10327     *
10328     * @private
10329     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
10330     * @returns {ArrayBuffer} Returns the cloned array buffer.
10331     */
10332    function cloneArrayBuffer(arrayBuffer) {
10333      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
10334      new Uint8Array(result).set(new Uint8Array(arrayBuffer));
10335      return result;
10336    }
10337
10338    /**
10339     * Creates a clone of `dataView`.
10340     *
10341     * @private
10342     * @param {Object} dataView The data view to clone.
10343     * @param {boolean} [isDeep] Specify a deep clone.
10344     * @returns {Object} Returns the cloned data view.
10345     */
10346    function cloneDataView(dataView, isDeep) {
10347      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
10348      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
10349    }
10350
10351    /**
10352     * Creates a clone of `regexp`.
10353     *
10354     * @private
10355     * @param {Object} regexp The regexp to clone.
10356     * @returns {Object} Returns the cloned regexp.
10357     */
10358    function cloneRegExp(regexp) {
10359      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
10360      result.lastIndex = regexp.lastIndex;
10361      return result;
10362    }
10363
10364    /**
10365     * Creates a clone of the `symbol` object.
10366     *
10367     * @private
10368     * @param {Object} symbol The symbol object to clone.
10369     * @returns {Object} Returns the cloned symbol object.
10370     */
10371    function cloneSymbol(symbol) {
10372      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
10373    }
10374
10375    /**
10376     * Creates a clone of `typedArray`.
10377     *
10378     * @private
10379     * @param {Object} typedArray The typed array to clone.
10380     * @param {boolean} [isDeep] Specify a deep clone.
10381     * @returns {Object} Returns the cloned typed array.
10382     */
10383    function cloneTypedArray(typedArray, isDeep) {
10384      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
10385      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
10386    }
10387
10388    /**
10389     * Compares values to sort them in ascending order.
10390     *
10391     * @private
10392     * @param {*} value The value to compare.
10393     * @param {*} other The other value to compare.
10394     * @returns {number} Returns the sort order indicator for `value`.
10395     */
10396    function compareAscending(value, other) {
10397      if (value !== other) {
10398        var valIsDefined = value !== undefined,
10399            valIsNull = value === null,
10400            valIsReflexive = value === value,
10401            valIsSymbol = isSymbol(value);
10402
10403        var othIsDefined = other !== undefined,
10404            othIsNull = other === null,
10405            othIsReflexive = other === other,
10406            othIsSymbol = isSymbol(other);
10407
10408        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
10409            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
10410            (valIsNull && othIsDefined && othIsReflexive) ||
10411            (!valIsDefined && othIsReflexive) ||
10412            !valIsReflexive) {
10413          return 1;
10414        }
10415        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
10416            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
10417            (othIsNull && valIsDefined && valIsReflexive) ||
10418            (!othIsDefined && valIsReflexive) ||
10419            !othIsReflexive) {
10420          return -1;
10421        }
10422      }
10423      return 0;
10424    }
10425
10426    /**
10427     * Used by `_.orderBy` to compare multiple properties of a value to another
10428     * and stable sort them.
10429     *
10430     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
10431     * specify an order of "desc" for descending or "asc" for ascending sort order
10432     * of corresponding values.
10433     *
10434     * @private
10435     * @param {Object} object The object to compare.
10436     * @param {Object} other The other object to compare.
10437     * @param {boolean[]|string[]} orders The order to sort by for each property.
10438     * @returns {number} Returns the sort order indicator for `object`.
10439     */
10440    function compareMultiple(object, other, orders) {
10441      var index = -1,
10442          objCriteria = object.criteria,
10443          othCriteria = other.criteria,
10444          length = objCriteria.length,
10445          ordersLength = orders.length;
10446
10447      while (++index < length) {
10448        var result = compareAscending(objCriteria[index], othCriteria[index]);
10449        if (result) {
10450          if (index >= ordersLength) {
10451            return result;
10452          }
10453          var order = orders[index];
10454          return result * (order == 'desc' ? -1 : 1);
10455        }
10456      }
10457      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
10458      // that causes it, under certain circumstances, to provide the same value for
10459      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
10460      // for more details.
10461      //
10462      // This also ensures a stable sort in V8 and other engines.
10463      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
10464      return object.index - other.index;
10465    }
10466
10467    /**
10468     * Creates an array that is the composition of partially applied arguments,
10469     * placeholders, and provided arguments into a single array of arguments.
10470     *
10471     * @private
10472     * @param {Array} args The provided arguments.
10473     * @param {Array} partials The arguments to prepend to those provided.
10474     * @param {Array} holders The `partials` placeholder indexes.
10475     * @params {boolean} [isCurried] Specify composing for a curried function.
10476     * @returns {Array} Returns the new array of composed arguments.
10477     */
10478    function composeArgs(args, partials, holders, isCurried) {
10479      var argsIndex = -1,
10480          argsLength = args.length,
10481          holdersLength = holders.length,
10482          leftIndex = -1,
10483          leftLength = partials.length,
10484          rangeLength = nativeMax(argsLength - holdersLength, 0),
10485          result = Array(leftLength + rangeLength),
10486          isUncurried = !isCurried;
10487
10488      while (++leftIndex < leftLength) {
10489        result[leftIndex] = partials[leftIndex];
10490      }
10491      while (++argsIndex < holdersLength) {
10492        if (isUncurried || argsIndex < argsLength) {
10493          result[holders[argsIndex]] = args[argsIndex];
10494        }
10495      }
10496      while (rangeLength--) {
10497        result[leftIndex++] = args[argsIndex++];
10498      }
10499      return result;
10500    }
10501
10502    /**
10503     * This function is like `composeArgs` except that the arguments composition
10504     * is tailored for `_.partialRight`.
10505     *
10506     * @private
10507     * @param {Array} args The provided arguments.
10508     * @param {Array} partials The arguments to append to those provided.
10509     * @param {Array} holders The `partials` placeholder indexes.
10510     * @params {boolean} [isCurried] Specify composing for a curried function.
10511     * @returns {Array} Returns the new array of composed arguments.
10512     */
10513    function composeArgsRight(args, partials, holders, isCurried) {
10514      var argsIndex = -1,
10515          argsLength = args.length,
10516          holdersIndex = -1,
10517          holdersLength = holders.length,
10518          rightIndex = -1,
10519          rightLength = partials.length,
10520          rangeLength = nativeMax(argsLength - holdersLength, 0),
10521          result = Array(rangeLength + rightLength),
10522          isUncurried = !isCurried;
10523
10524      while (++argsIndex < rangeLength) {
10525        result[argsIndex] = args[argsIndex];
10526      }
10527      var offset = argsIndex;
10528      while (++rightIndex < rightLength) {
10529        result[offset + rightIndex] = partials[rightIndex];
10530      }
10531      while (++holdersIndex < holdersLength) {
10532        if (isUncurried || argsIndex < argsLength) {
10533          result[offset + holders[holdersIndex]] = args[argsIndex++];
10534        }
10535      }
10536      return result;
10537    }
10538
10539    /**
10540     * Copies the values of `source` to `array`.
10541     *
10542     * @private
10543     * @param {Array} source The array to copy values from.
10544     * @param {Array} [array=[]] The array to copy values to.
10545     * @returns {Array} Returns `array`.
10546     */
10547    function copyArray(source, array) {
10548      var index = -1,
10549          length = source.length;
10550
10551      array || (array = Array(length));
10552      while (++index < length) {
10553        array[index] = source[index];
10554      }
10555      return array;
10556    }
10557
10558    /**
10559     * Copies properties of `source` to `object`.
10560     *
10561     * @private
10562     * @param {Object} source The object to copy properties from.
10563     * @param {Array} props The property identifiers to copy.
10564     * @param {Object} [object={}] The object to copy properties to.
10565     * @param {Function} [customizer] The function to customize copied values.
10566     * @returns {Object} Returns `object`.
10567     */
10568    function copyObject(source, props, object, customizer) {
10569      var isNew = !object;
10570      object || (object = {});
10571
10572      var index = -1,
10573          length = props.length;
10574
10575      while (++index < length) {
10576        var key = props[index];
10577
10578        var newValue = customizer
10579          ? customizer(object[key], source[key], key, object, source)
10580          : undefined;
10581
10582        if (newValue === undefined) {
10583          newValue = source[key];
10584        }
10585        if (isNew) {
10586          baseAssignValue(object, key, newValue);
10587        } else {
10588          assignValue(object, key, newValue);
10589        }
10590      }
10591      return object;
10592    }
10593
10594    /**
10595     * Copies own symbols of `source` to `object`.
10596     *
10597     * @private
10598     * @param {Object} source The object to copy symbols from.
10599     * @param {Object} [object={}] The object to copy symbols to.
10600     * @returns {Object} Returns `object`.
10601     */
10602    function copySymbols(source, object) {
10603      return copyObject(source, getSymbols(source), object);
10604    }
10605
10606    /**
10607     * Copies own and inherited symbols of `source` to `object`.
10608     *
10609     * @private
10610     * @param {Object} source The object to copy symbols from.
10611     * @param {Object} [object={}] The object to copy symbols to.
10612     * @returns {Object} Returns `object`.
10613     */
10614    function copySymbolsIn(source, object) {
10615      return copyObject(source, getSymbolsIn(source), object);
10616    }
10617
10618    /**
10619     * Creates a function like `_.groupBy`.
10620     *
10621     * @private
10622     * @param {Function} setter The function to set accumulator values.
10623     * @param {Function} [initializer] The accumulator object initializer.
10624     * @returns {Function} Returns the new aggregator function.
10625     */
10626    function createAggregator(setter, initializer) {
10627      return function(collection, iteratee) {
10628        var func = isArray(collection) ? arrayAggregator : baseAggregator,
10629            accumulator = initializer ? initializer() : {};
10630
10631        return func(collection, setter, getIteratee(iteratee, 2), accumulator);
10632      };
10633    }
10634
10635    /**
10636     * Creates a function like `_.assign`.
10637     *
10638     * @private
10639     * @param {Function} assigner The function to assign values.
10640     * @returns {Function} Returns the new assigner function.
10641     */
10642    function createAssigner(assigner) {
10643      return baseRest(function(object, sources) {
10644        var index = -1,
10645            length = sources.length,
10646            customizer = length > 1 ? sources[length - 1] : undefined,
10647            guard = length > 2 ? sources[2] : undefined;
10648
10649        customizer = (assigner.length > 3 && typeof customizer == 'function')
10650          ? (length--, customizer)
10651          : undefined;
10652
10653        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
10654          customizer = length < 3 ? undefined : customizer;
10655          length = 1;
10656        }
10657        object = Object(object);
10658        while (++index < length) {
10659          var source = sources[index];
10660          if (source) {
10661            assigner(object, source, index, customizer);
10662          }
10663        }
10664        return object;
10665      });
10666    }
10667
10668    /**
10669     * Creates a `baseEach` or `baseEachRight` function.
10670     *
10671     * @private
10672     * @param {Function} eachFunc The function to iterate over a collection.
10673     * @param {boolean} [fromRight] Specify iterating from right to left.
10674     * @returns {Function} Returns the new base function.
10675     */
10676    function createBaseEach(eachFunc, fromRight) {
10677      return function(collection, iteratee) {
10678        if (collection == null) {
10679          return collection;
10680        }
10681        if (!isArrayLike(collection)) {
10682          return eachFunc(collection, iteratee);
10683        }
10684        var length = collection.length,
10685            index = fromRight ? length : -1,
10686            iterable = Object(collection);
10687
10688        while ((fromRight ? index-- : ++index < length)) {
10689          if (iteratee(iterable[index], index, iterable) === false) {
10690            break;
10691          }
10692        }
10693        return collection;
10694      };
10695    }
10696
10697    /**
10698     * Creates a base function for methods like `_.forIn` and `_.forOwn`.
10699     *
10700     * @private
10701     * @param {boolean} [fromRight] Specify iterating from right to left.
10702     * @returns {Function} Returns the new base function.
10703     */
10704    function createBaseFor(fromRight) {
10705      return function(object, iteratee, keysFunc) {
10706        var index = -1,
10707            iterable = Object(object),
10708            props = keysFunc(object),
10709            length = props.length;
10710
10711        while (length--) {
10712          var key = props[fromRight ? length : ++index];
10713          if (iteratee(iterable[key], key, iterable) === false) {
10714            break;
10715          }
10716        }
10717        return object;
10718      };
10719    }
10720
10721    /**
10722     * Creates a function that wraps `func` to invoke it with the optional `this`
10723     * binding of `thisArg`.
10724     *
10725     * @private
10726     * @param {Function} func The function to wrap.
10727     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
10728     * @param {*} [thisArg] The `this` binding of `func`.
10729     * @returns {Function} Returns the new wrapped function.
10730     */
10731    function createBind(func, bitmask, thisArg) {
10732      var isBind = bitmask & WRAP_BIND_FLAG,
10733          Ctor = createCtor(func);
10734
10735      function wrapper() {
10736        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10737        return fn.apply(isBind ? thisArg : this, arguments);
10738      }
10739      return wrapper;
10740    }
10741
10742    /**
10743     * Creates a function like `_.lowerFirst`.
10744     *
10745     * @private
10746     * @param {string} methodName The name of the `String` case method to use.
10747     * @returns {Function} Returns the new case function.
10748     */
10749    function createCaseFirst(methodName) {
10750      return function(string) {
10751        string = toString(string);
10752
10753        var strSymbols = hasUnicode(string)
10754          ? stringToArray(string)
10755          : undefined;
10756
10757        var chr = strSymbols
10758          ? strSymbols[0]
10759          : string.charAt(0);
10760
10761        var trailing = strSymbols
10762          ? castSlice(strSymbols, 1).join('')
10763          : string.slice(1);
10764
10765        return chr[methodName]() + trailing;
10766      };
10767    }
10768
10769    /**
10770     * Creates a function like `_.camelCase`.
10771     *
10772     * @private
10773     * @param {Function} callback The function to combine each word.
10774     * @returns {Function} Returns the new compounder function.
10775     */
10776    function createCompounder(callback) {
10777      return function(string) {
10778        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
10779      };
10780    }
10781
10782    /**
10783     * Creates a function that produces an instance of `Ctor` regardless of
10784     * whether it was invoked as part of a `new` expression or by `call` or `apply`.
10785     *
10786     * @private
10787     * @param {Function} Ctor The constructor to wrap.
10788     * @returns {Function} Returns the new wrapped function.
10789     */
10790    function createCtor(Ctor) {
10791      return function() {
10792        // Use a `switch` statement to work with class constructors. See
10793        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
10794        // for more details.
10795        var args = arguments;
10796        switch (args.length) {
10797          case 0: return new Ctor;
10798          case 1: return new Ctor(args[0]);
10799          case 2: return new Ctor(args[0], args[1]);
10800          case 3: return new Ctor(args[0], args[1], args[2]);
10801          case 4: return new Ctor(args[0], args[1], args[2], args[3]);
10802          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
10803          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
10804          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
10805        }
10806        var thisBinding = baseCreate(Ctor.prototype),
10807            result = Ctor.apply(thisBinding, args);
10808
10809        // Mimic the constructor's `return` behavior.
10810        // See https://es5.github.io/#x13.2.2 for more details.
10811        return isObject(result) ? result : thisBinding;
10812      };
10813    }
10814
10815    /**
10816     * Creates a function that wraps `func` to enable currying.
10817     *
10818     * @private
10819     * @param {Function} func The function to wrap.
10820     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
10821     * @param {number} arity The arity of `func`.
10822     * @returns {Function} Returns the new wrapped function.
10823     */
10824    function createCurry(func, bitmask, arity) {
10825      var Ctor = createCtor(func);
10826
10827      function wrapper() {
10828        var length = arguments.length,
10829            args = Array(length),
10830            index = length,
10831            placeholder = getHolder(wrapper);
10832
10833        while (index--) {
10834          args[index] = arguments[index];
10835        }
10836        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
10837          ? []
10838          : replaceHolders(args, placeholder);
10839
10840        length -= holders.length;
10841        if (length < arity) {
10842          return createRecurry(
10843            func, bitmask, createHybrid, wrapper.placeholder, undefined,
10844            args, holders, undefined, undefined, arity - length);
10845        }
10846        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10847        return apply(fn, this, args);
10848      }
10849      return wrapper;
10850    }
10851
10852    /**
10853     * Creates a `_.find` or `_.findLast` function.
10854     *
10855     * @private
10856     * @param {Function} findIndexFunc The function to find the collection index.
10857     * @returns {Function} Returns the new find function.
10858     */
10859    function createFind(findIndexFunc) {
10860      return function(collection, predicate, fromIndex) {
10861        var iterable = Object(collection);
10862        if (!isArrayLike(collection)) {
10863          var iteratee = getIteratee(predicate, 3);
10864          collection = keys(collection);
10865          predicate = function(key) { return iteratee(iterable[key], key, iterable); };
10866        }
10867        var index = findIndexFunc(collection, predicate, fromIndex);
10868        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
10869      };
10870    }
10871
10872    /**
10873     * Creates a `_.flow` or `_.flowRight` function.
10874     *
10875     * @private
10876     * @param {boolean} [fromRight] Specify iterating from right to left.
10877     * @returns {Function} Returns the new flow function.
10878     */
10879    function createFlow(fromRight) {
10880      return flatRest(function(funcs) {
10881        var length = funcs.length,
10882            index = length,
10883            prereq = LodashWrapper.prototype.thru;
10884
10885        if (fromRight) {
10886          funcs.reverse();
10887        }
10888        while (index--) {
10889          var func = funcs[index];
10890          if (typeof func != 'function') {
10891            throw new TypeError(FUNC_ERROR_TEXT);
10892          }
10893          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
10894            var wrapper = new LodashWrapper([], true);
10895          }
10896        }
10897        index = wrapper ? index : length;
10898        while (++index < length) {
10899          func = funcs[index];
10900
10901          var funcName = getFuncName(func),
10902              data = funcName == 'wrapper' ? getData(func) : undefined;
10903
10904          if (data && isLaziable(data[0]) &&
10905                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
10906                !data[4].length && data[9] == 1
10907              ) {
10908            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
10909          } else {
10910            wrapper = (func.length == 1 && isLaziable(func))
10911              ? wrapper[funcName]()
10912              : wrapper.thru(func);
10913          }
10914        }
10915        return function() {
10916          var args = arguments,
10917              value = args[0];
10918
10919          if (wrapper && args.length == 1 && isArray(value)) {
10920            return wrapper.plant(value).value();
10921          }
10922          var index = 0,
10923              result = length ? funcs[index].apply(this, args) : value;
10924
10925          while (++index < length) {
10926            result = funcs[index].call(this, result);
10927          }
10928          return result;
10929        };
10930      });
10931    }
10932
10933    /**
10934     * Creates a function that wraps `func` to invoke it with optional `this`
10935     * binding of `thisArg`, partial application, and currying.
10936     *
10937     * @private
10938     * @param {Function|string} func The function or method name to wrap.
10939     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
10940     * @param {*} [thisArg] The `this` binding of `func`.
10941     * @param {Array} [partials] The arguments to prepend to those provided to
10942     *  the new function.
10943     * @param {Array} [holders] The `partials` placeholder indexes.
10944     * @param {Array} [partialsRight] The arguments to append to those provided
10945     *  to the new function.
10946     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
10947     * @param {Array} [argPos] The argument positions of the new function.
10948     * @param {number} [ary] The arity cap of `func`.
10949     * @param {number} [arity] The arity of `func`.
10950     * @returns {Function} Returns the new wrapped function.
10951     */
10952    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
10953      var isAry = bitmask & WRAP_ARY_FLAG,
10954          isBind = bitmask & WRAP_BIND_FLAG,
10955          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
10956          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
10957          isFlip = bitmask & WRAP_FLIP_FLAG,
10958          Ctor = isBindKey ? undefined : createCtor(func);
10959
10960      function wrapper() {
10961        var length = arguments.length,
10962            args = Array(length),
10963            index = length;
10964
10965        while (index--) {
10966          args[index] = arguments[index];
10967        }
10968        if (isCurried) {
10969          var placeholder = getHolder(wrapper),
10970              holdersCount = countHolders(args, placeholder);
10971        }
10972        if (partials) {
10973          args = composeArgs(args, partials, holders, isCurried);
10974        }
10975        if (partialsRight) {
10976          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
10977        }
10978        length -= holdersCount;
10979        if (isCurried && length < arity) {
10980          var newHolders = replaceHolders(args, placeholder);
10981          return createRecurry(
10982            func, bitmask, createHybrid, wrapper.placeholder, thisArg,
10983            args, newHolders, argPos, ary, arity - length
10984          );
10985        }
10986        var thisBinding = isBind ? thisArg : this,
10987            fn = isBindKey ? thisBinding[func] : func;
10988
10989        length = args.length;
10990        if (argPos) {
10991          args = reorder(args, argPos);
10992        } else if (isFlip && length > 1) {
10993          args.reverse();
10994        }
10995        if (isAry && ary < length) {
10996          args.length = ary;
10997        }
10998        if (this && this !== root && this instanceof wrapper) {
10999          fn = Ctor || createCtor(fn);
11000        }
11001        return fn.apply(thisBinding, args);
11002      }
11003      return wrapper;
11004    }
11005
11006    /**
11007     * Creates a function like `_.invertBy`.
11008     *
11009     * @private
11010     * @param {Function} setter The function to set accumulator values.
11011     * @param {Function} toIteratee The function to resolve iteratees.
11012     * @returns {Function} Returns the new inverter function.
11013     */
11014    function createInverter(setter, toIteratee) {
11015      return function(object, iteratee) {
11016        return baseInverter(object, setter, toIteratee(iteratee), {});
11017      };
11018    }
11019
11020    /**
11021     * Creates a function that performs a mathematical operation on two values.
11022     *
11023     * @private
11024     * @param {Function} operator The function to perform the operation.
11025     * @param {number} [defaultValue] The value used for `undefined` arguments.
11026     * @returns {Function} Returns the new mathematical operation function.
11027     */
11028    function createMathOperation(operator, defaultValue) {
11029      return function(value, other) {
11030        var result;
11031        if (value === undefined && other === undefined) {
11032          return defaultValue;
11033        }
11034        if (value !== undefined) {
11035          result = value;
11036        }
11037        if (other !== undefined) {
11038          if (result === undefined) {
11039            return other;
11040          }
11041          if (typeof value == 'string' || typeof other == 'string') {
11042            value = baseToString(value);
11043            other = baseToString(other);
11044          } else {
11045            value = baseToNumber(value);
11046            other = baseToNumber(other);
11047          }
11048          result = operator(value, other);
11049        }
11050        return result;
11051      };
11052    }
11053
11054    /**
11055     * Creates a function like `_.over`.
11056     *
11057     * @private
11058     * @param {Function} arrayFunc The function to iterate over iteratees.
11059     * @returns {Function} Returns the new over function.
11060     */
11061    function createOver(arrayFunc) {
11062      return flatRest(function(iteratees) {
11063        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
11064        return baseRest(function(args) {
11065          var thisArg = this;
11066          return arrayFunc(iteratees, function(iteratee) {
11067            return apply(iteratee, thisArg, args);
11068          });
11069        });
11070      });
11071    }
11072
11073    /**
11074     * Creates the padding for `string` based on `length`. The `chars` string
11075     * is truncated if the number of characters exceeds `length`.
11076     *
11077     * @private
11078     * @param {number} length The padding length.
11079     * @param {string} [chars=' '] The string used as padding.
11080     * @returns {string} Returns the padding for `string`.
11081     */
11082    function createPadding(length, chars) {
11083      chars = chars === undefined ? ' ' : baseToString(chars);
11084
11085      var charsLength = chars.length;
11086      if (charsLength < 2) {
11087        return charsLength ? baseRepeat(chars, length) : chars;
11088      }
11089      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
11090      return hasUnicode(chars)
11091        ? castSlice(stringToArray(result), 0, length).join('')
11092        : result.slice(0, length);
11093    }
11094
11095    /**
11096     * Creates a function that wraps `func` to invoke it with the `this` binding
11097     * of `thisArg` and `partials` prepended to the arguments it receives.
11098     *
11099     * @private
11100     * @param {Function} func The function to wrap.
11101     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
11102     * @param {*} thisArg The `this` binding of `func`.
11103     * @param {Array} partials The arguments to prepend to those provided to
11104     *  the new function.
11105     * @returns {Function} Returns the new wrapped function.
11106     */
11107    function createPartial(func, bitmask, thisArg, partials) {
11108      var isBind = bitmask & WRAP_BIND_FLAG,
11109          Ctor = createCtor(func);
11110
11111      function wrapper() {
11112        var argsIndex = -1,
11113            argsLength = arguments.length,
11114            leftIndex = -1,
11115            leftLength = partials.length,
11116            args = Array(leftLength + argsLength),
11117            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
11118
11119        while (++leftIndex < leftLength) {
11120          args[leftIndex] = partials[leftIndex];
11121        }
11122        while (argsLength--) {
11123          args[leftIndex++] = arguments[++argsIndex];
11124        }
11125        return apply(fn, isBind ? thisArg : this, args);
11126      }
11127      return wrapper;
11128    }
11129
11130    /**
11131     * Creates a `_.range` or `_.rangeRight` function.
11132     *
11133     * @private
11134     * @param {boolean} [fromRight] Specify iterating from right to left.
11135     * @returns {Function} Returns the new range function.
11136     */
11137    function createRange(fromRight) {
11138      return function(start, end, step) {
11139        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
11140          end = step = undefined;
11141        }
11142        // Ensure the sign of `-0` is preserved.
11143        start = toFinite(start);
11144        if (end === undefined) {
11145          end = start;
11146          start = 0;
11147        } else {
11148          end = toFinite(end);
11149        }
11150        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
11151        return baseRange(start, end, step, fromRight);
11152      };
11153    }
11154
11155    /**
11156     * Creates a function that performs a relational operation on two values.
11157     *
11158     * @private
11159     * @param {Function} operator The function to perform the operation.
11160     * @returns {Function} Returns the new relational operation function.
11161     */
11162    function createRelationalOperation(operator) {
11163      return function(value, other) {
11164        if (!(typeof value == 'string' && typeof other == 'string')) {
11165          value = toNumber(value);
11166          other = toNumber(other);
11167        }
11168        return operator(value, other);
11169      };
11170    }
11171
11172    /**
11173     * Creates a function that wraps `func` to continue currying.
11174     *
11175     * @private
11176     * @param {Function} func The function to wrap.
11177     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
11178     * @param {Function} wrapFunc The function to create the `func` wrapper.
11179     * @param {*} placeholder The placeholder value.
11180     * @param {*} [thisArg] The `this` binding of `func`.
11181     * @param {Array} [partials] The arguments to prepend to those provided to
11182     *  the new function.
11183     * @param {Array} [holders] The `partials` placeholder indexes.
11184     * @param {Array} [argPos] The argument positions of the new function.
11185     * @param {number} [ary] The arity cap of `func`.
11186     * @param {number} [arity] The arity of `func`.
11187     * @returns {Function} Returns the new wrapped function.
11188     */
11189    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
11190      var isCurry = bitmask & WRAP_CURRY_FLAG,
11191          newHolders = isCurry ? holders : undefined,
11192          newHoldersRight = isCurry ? undefined : holders,
11193          newPartials = isCurry ? partials : undefined,
11194          newPartialsRight = isCurry ? undefined : partials;
11195
11196      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
11197      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
11198
11199      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
11200        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
11201      }
11202      var newData = [
11203        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
11204        newHoldersRight, argPos, ary, arity
11205      ];
11206
11207      var result = wrapFunc.apply(undefined, newData);
11208      if (isLaziable(func)) {
11209        setData(result, newData);
11210      }
11211      result.placeholder = placeholder;
11212      return setWrapToString(result, func, bitmask);
11213    }
11214
11215    /**
11216     * Creates a function like `_.round`.
11217     *
11218     * @private
11219     * @param {string} methodName The name of the `Math` method to use when rounding.
11220     * @returns {Function} Returns the new round function.
11221     */
11222    function createRound(methodName) {
11223      var func = Math[methodName];
11224      return function(number, precision) {
11225        number = toNumber(number);
11226        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
11227        if (precision && nativeIsFinite(number)) {
11228          // Shift with exponential notation to avoid floating-point issues.
11229          // See [MDN](https://mdn.io/round#Examples) for more details.
11230          var pair = (toString(number) + 'e').split('e'),
11231              value = func(pair[0] + 'e' + (+pair[1] + precision));
11232
11233          pair = (toString(value) + 'e').split('e');
11234          return +(pair[0] + 'e' + (+pair[1] - precision));
11235        }
11236        return func(number);
11237      };
11238    }
11239
11240    /**
11241     * Creates a set object of `values`.
11242     *
11243     * @private
11244     * @param {Array} values The values to add to the set.
11245     * @returns {Object} Returns the new set.
11246     */
11247    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
11248      return new Set(values);
11249    };
11250
11251    /**
11252     * Creates a `_.toPairs` or `_.toPairsIn` function.
11253     *
11254     * @private
11255     * @param {Function} keysFunc The function to get the keys of a given object.
11256     * @returns {Function} Returns the new pairs function.
11257     */
11258    function createToPairs(keysFunc) {
11259      return function(object) {
11260        var tag = getTag(object);
11261        if (tag == mapTag) {
11262          return mapToArray(object);
11263        }
11264        if (tag == setTag) {
11265          return setToPairs(object);
11266        }
11267        return baseToPairs(object, keysFunc(object));
11268      };
11269    }
11270
11271    /**
11272     * Creates a function that either curries or invokes `func` with optional
11273     * `this` binding and partially applied arguments.
11274     *
11275     * @private
11276     * @param {Function|string} func The function or method name to wrap.
11277     * @param {number} bitmask The bitmask flags.
11278     *    1 - `_.bind`
11279     *    2 - `_.bindKey`
11280     *    4 - `_.curry` or `_.curryRight` of a bound function
11281     *    8 - `_.curry`
11282     *   16 - `_.curryRight`
11283     *   32 - `_.partial`
11284     *   64 - `_.partialRight`
11285     *  128 - `_.rearg`
11286     *  256 - `_.ary`
11287     *  512 - `_.flip`
11288     * @param {*} [thisArg] The `this` binding of `func`.
11289     * @param {Array} [partials] The arguments to be partially applied.
11290     * @param {Array} [holders] The `partials` placeholder indexes.
11291     * @param {Array} [argPos] The argument positions of the new function.
11292     * @param {number} [ary] The arity cap of `func`.
11293     * @param {number} [arity] The arity of `func`.
11294     * @returns {Function} Returns the new wrapped function.
11295     */
11296    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
11297      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
11298      if (!isBindKey && typeof func != 'function') {
11299        throw new TypeError(FUNC_ERROR_TEXT);
11300      }
11301      var length = partials ? partials.length : 0;
11302      if (!length) {
11303        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
11304        partials = holders = undefined;
11305      }
11306      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
11307      arity = arity === undefined ? arity : toInteger(arity);
11308      length -= holders ? holders.length : 0;
11309
11310      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
11311        var partialsRight = partials,
11312            holdersRight = holders;
11313
11314        partials = holders = undefined;
11315      }
11316      var data = isBindKey ? undefined : getData(func);
11317
11318      var newData = [
11319        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
11320        argPos, ary, arity
11321      ];
11322
11323      if (data) {
11324        mergeData(newData, data);
11325      }
11326      func = newData[0];
11327      bitmask = newData[1];
11328      thisArg = newData[2];
11329      partials = newData[3];
11330      holders = newData[4];
11331      arity = newData[9] = newData[9] === undefined
11332        ? (isBindKey ? 0 : func.length)
11333        : nativeMax(newData[9] - length, 0);
11334
11335      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
11336        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
11337      }
11338      if (!bitmask || bitmask == WRAP_BIND_FLAG) {
11339        var result = createBind(func, bitmask, thisArg);
11340      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
11341        result = createCurry(func, bitmask, arity);
11342      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
11343        result = createPartial(func, bitmask, thisArg, partials);
11344      } else {
11345        result = createHybrid.apply(undefined, newData);
11346      }
11347      var setter = data ? baseSetData : setData;
11348      return setWrapToString(setter(result, newData), func, bitmask);
11349    }
11350
11351    /**
11352     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
11353     * of source objects to the destination object for all destination properties
11354     * that resolve to `undefined`.
11355     *
11356     * @private
11357     * @param {*} objValue The destination value.
11358     * @param {*} srcValue The source value.
11359     * @param {string} key The key of the property to assign.
11360     * @param {Object} object The parent object of `objValue`.
11361     * @returns {*} Returns the value to assign.
11362     */
11363    function customDefaultsAssignIn(objValue, srcValue, key, object) {
11364      if (objValue === undefined ||
11365          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
11366        return srcValue;
11367      }
11368      return objValue;
11369    }
11370
11371    /**
11372     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
11373     * objects into destination objects that are passed thru.
11374     *
11375     * @private
11376     * @param {*} objValue The destination value.
11377     * @param {*} srcValue The source value.
11378     * @param {string} key The key of the property to merge.
11379     * @param {Object} object The parent object of `objValue`.
11380     * @param {Object} source The parent object of `srcValue`.
11381     * @param {Object} [stack] Tracks traversed source values and their merged
11382     *  counterparts.
11383     * @returns {*} Returns the value to assign.
11384     */
11385    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
11386      if (isObject(objValue) && isObject(srcValue)) {
11387        // Recursively merge objects and arrays (susceptible to call stack limits).
11388        stack.set(srcValue, objValue);
11389        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
11390        stack['delete'](srcValue);
11391      }
11392      return objValue;
11393    }
11394
11395    /**
11396     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
11397     * objects.
11398     *
11399     * @private
11400     * @param {*} value The value to inspect.
11401     * @param {string} key The key of the property to inspect.
11402     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
11403     */
11404    function customOmitClone(value) {
11405      return isPlainObject(value) ? undefined : value;
11406    }
11407
11408    /**
11409     * A specialized version of `baseIsEqualDeep` for arrays with support for
11410     * partial deep comparisons.
11411     *
11412     * @private
11413     * @param {Array} array The array to compare.
11414     * @param {Array} other The other array to compare.
11415     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11416     * @param {Function} customizer The function to customize comparisons.
11417     * @param {Function} equalFunc The function to determine equivalents of values.
11418     * @param {Object} stack Tracks traversed `array` and `other` objects.
11419     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
11420     */
11421    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
11422      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
11423          arrLength = array.length,
11424          othLength = other.length;
11425
11426      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
11427        return false;
11428      }
11429      // Check that cyclic values are equal.
11430      var arrStacked = stack.get(array);
11431      var othStacked = stack.get(other);
11432      if (arrStacked && othStacked) {
11433        return arrStacked == other && othStacked == array;
11434      }
11435      var index = -1,
11436          result = true,
11437          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
11438
11439      stack.set(array, other);
11440      stack.set(other, array);
11441
11442      // Ignore non-index properties.
11443      while (++index < arrLength) {
11444        var arrValue = array[index],
11445            othValue = other[index];
11446
11447        if (customizer) {
11448          var compared = isPartial
11449            ? customizer(othValue, arrValue, index, other, array, stack)
11450            : customizer(arrValue, othValue, index, array, other, stack);
11451        }
11452        if (compared !== undefined) {
11453          if (compared) {
11454            continue;
11455          }
11456          result = false;
11457          break;
11458        }
11459        // Recursively compare arrays (susceptible to call stack limits).
11460        if (seen) {
11461          if (!arraySome(other, function(othValue, othIndex) {
11462                if (!cacheHas(seen, othIndex) &&
11463                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
11464                  return seen.push(othIndex);
11465                }
11466              })) {
11467            result = false;
vendor: 4,179 bytes, lines 11468-11579
11468            break;
11469          }
11470        } else if (!(
11471              arrValue === othValue ||
11472                equalFunc(arrValue, othValue, bitmask, customizer, stack)
11473            )) {
11474          result = false;
11475          break;
11476        }
11477      }
11478      stack['delete'](array);
11479      stack['delete'](other);
11480      return result;
11481    }
11482
11483    /**
11484     * A specialized version of `baseIsEqualDeep` for comparing objects of
11485     * the same `toStringTag`.
11486     *
11487     * **Note:** This function only supports comparing values with tags of
11488     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
11489     *
11490     * @private
11491     * @param {Object} object The object to compare.
11492     * @param {Object} other The other object to compare.
11493     * @param {string} tag The `toStringTag` of the objects to compare.
11494     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11495     * @param {Function} customizer The function to customize comparisons.
11496     * @param {Function} equalFunc The function to determine equivalents of values.
11497     * @param {Object} stack Tracks traversed `object` and `other` objects.
11498     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11499     */
11500    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
11501      switch (tag) {
11502        case dataViewTag:
11503          if ((object.byteLength != other.byteLength) ||
11504              (object.byteOffset != other.byteOffset)) {
11505            return false;
11506          }
11507          object = object.buffer;
11508          other = other.buffer;
11509
11510        case arrayBufferTag:
11511          if ((object.byteLength != other.byteLength) ||
11512              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
11513            return false;
11514          }
11515          return true;
11516
11517        case boolTag:
11518        case dateTag:
11519        case numberTag:
11520          // Coerce booleans to `1` or `0` and dates to milliseconds.
11521          // Invalid dates are coerced to `NaN`.
11522          return eq(+object, +other);
11523
11524        case errorTag:
11525          return object.name == other.name && object.message == other.message;
11526
11527        case regexpTag:
11528        case stringTag:
11529          // Coerce regexes to strings and treat strings, primitives and objects,
11530          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
11531          // for more details.
11532          return object == (other + '');
11533
11534        case mapTag:
11535          var convert = mapToArray;
11536
11537        case setTag:
11538          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
11539          convert || (convert = setToArray);
11540
11541          if (object.size != other.size && !isPartial) {
11542            return false;
11543          }
11544          // Assume cyclic values are equal.
11545          var stacked = stack.get(object);
11546          if (stacked) {
11547            return stacked == other;
11548          }
11549          bitmask |= COMPARE_UNORDERED_FLAG;
11550
11551          // Recursively compare objects (susceptible to call stack limits).
11552          stack.set(object, other);
11553          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
11554          stack['delete'](object);
11555          return result;
11556
11557        case symbolTag:
11558          if (symbolValueOf) {
11559            return symbolValueOf.call(object) == symbolValueOf.call(other);
11560          }
11561      }
11562      return false;
11563    }
11564
11565    /**
11566     * A specialized version of `baseIsEqualDeep` for objects with support for
11567     * partial deep comparisons.
11568     *
11569     * @private
11570     * @param {Object} object The object to compare.
11571     * @param {Object} other The other object to compare.
11572     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11573     * @param {Function} customizer The function to customize comparisons.
11574     * @param {Function} equalFunc The function to determine equivalents of values.
11575     * @param {Object} stack Tracks traversed `object` and `other` objects.
11576     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11577     */
11578    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
11579      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
vendor: 9,614 bytes, lines 11580-11887
11580          objProps = getAllKeys(object),
11581          objLength = objProps.length,
11582          othProps = getAllKeys(other),
11583          othLength = othProps.length;
11584
11585      if (objLength != othLength && !isPartial) {
11586        return false;
11587      }
11588      var index = objLength;
11589      while (index--) {
11590        var key = objProps[index];
11591        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
11592          return false;
11593        }
11594      }
11595      // Check that cyclic values are equal.
11596      var objStacked = stack.get(object);
11597      var othStacked = stack.get(other);
11598      if (objStacked && othStacked) {
11599        return objStacked == other && othStacked == object;
11600      }
11601      var result = true;
11602      stack.set(object, other);
11603      stack.set(other, object);
11604
11605      var skipCtor = isPartial;
11606      while (++index < objLength) {
11607        key = objProps[index];
11608        var objValue = object[key],
11609            othValue = other[key];
11610
11611        if (customizer) {
11612          var compared = isPartial
11613            ? customizer(othValue, objValue, key, other, object, stack)
11614            : customizer(objValue, othValue, key, object, other, stack);
11615        }
11616        // Recursively compare objects (susceptible to call stack limits).
11617        if (!(compared === undefined
11618              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
11619              : compared
11620            )) {
11621          result = false;
11622          break;
11623        }
11624        skipCtor || (skipCtor = key == 'constructor');
11625      }
11626      if (result && !skipCtor) {
11627        var objCtor = object.constructor,
11628            othCtor = other.constructor;
11629
11630        // Non `Object` object instances with different constructors are not equal.
11631        if (objCtor != othCtor &&
11632            ('constructor' in object && 'constructor' in other) &&
11633            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
11634              typeof othCtor == 'function' && othCtor instanceof othCtor)) {
11635          result = false;
11636        }
11637      }
11638      stack['delete'](object);
11639      stack['delete'](other);
11640      return result;
11641    }
11642
11643    /**
11644     * A specialized version of `baseRest` which flattens the rest array.
11645     *
11646     * @private
11647     * @param {Function} func The function to apply a rest parameter to.
11648     * @returns {Function} Returns the new function.
11649     */
11650    function flatRest(func) {
11651      return setToString(overRest(func, undefined, flatten), func + '');
11652    }
11653
11654    /**
11655     * Creates an array of own enumerable property names and symbols of `object`.
11656     *
11657     * @private
11658     * @param {Object} object The object to query.
11659     * @returns {Array} Returns the array of property names and symbols.
11660     */
11661    function getAllKeys(object) {
11662      return baseGetAllKeys(object, keys, getSymbols);
11663    }
11664
11665    /**
11666     * Creates an array of own and inherited enumerable property names and
11667     * symbols of `object`.
11668     *
11669     * @private
11670     * @param {Object} object The object to query.
11671     * @returns {Array} Returns the array of property names and symbols.
11672     */
11673    function getAllKeysIn(object) {
11674      return baseGetAllKeys(object, keysIn, getSymbolsIn);
11675    }
11676
11677    /**
11678     * Gets metadata for `func`.
11679     *
11680     * @private
11681     * @param {Function} func The function to query.
11682     * @returns {*} Returns the metadata for `func`.
11683     */
11684    var getData = !metaMap ? noop : function(func) {
11685      return metaMap.get(func);
11686    };
11687
11688    /**
11689     * Gets the name of `func`.
11690     *
11691     * @private
11692     * @param {Function} func The function to query.
11693     * @returns {string} Returns the function name.
11694     */
11695    function getFuncName(func) {
11696      var result = (func.name + ''),
11697          array = realNames[result],
11698          length = hasOwnProperty.call(realNames, result) ? array.length : 0;
11699
11700      while (length--) {
11701        var data = array[length],
11702            otherFunc = data.func;
11703        if (otherFunc == null || otherFunc == func) {
11704          return data.name;
11705        }
11706      }
11707      return result;
11708    }
11709
11710    /**
11711     * Gets the argument placeholder value for `func`.
11712     *
11713     * @private
11714     * @param {Function} func The function to inspect.
11715     * @returns {*} Returns the placeholder value.
11716     */
11717    function getHolder(func) {
11718      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
11719      return object.placeholder;
11720    }
11721
11722    /**
11723     * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
11724     * this function returns the custom method, otherwise it returns `baseIteratee`.
11725     * If arguments are provided, the chosen function is invoked with them and
11726     * its result is returned.
11727     *
11728     * @private
11729     * @param {*} [value] The value to convert to an iteratee.
11730     * @param {number} [arity] The arity of the created iteratee.
11731     * @returns {Function} Returns the chosen function or its result.
11732     */
11733    function getIteratee() {
11734      var result = lodash.iteratee || iteratee;
11735      result = result === iteratee ? baseIteratee : result;
11736      return arguments.length ? result(arguments[0], arguments[1]) : result;
11737    }
11738
11739    /**
11740     * Gets the data for `map`.
11741     *
11742     * @private
11743     * @param {Object} map The map to query.
11744     * @param {string} key The reference key.
11745     * @returns {*} Returns the map data.
11746     */
11747    function getMapData(map, key) {
11748      var data = map.__data__;
11749      return isKeyable(key)
11750        ? data[typeof key == 'string' ? 'string' : 'hash']
11751        : data.map;
11752    }
11753
11754    /**
11755     * Gets the property names, values, and compare flags of `object`.
11756     *
11757     * @private
11758     * @param {Object} object The object to query.
11759     * @returns {Array} Returns the match data of `object`.
11760     */
11761    function getMatchData(object) {
11762      var result = keys(object),
11763          length = result.length;
11764
11765      while (length--) {
11766        var key = result[length],
11767            value = object[key];
11768
11769        result[length] = [key, value, isStrictComparable(value)];
11770      }
11771      return result;
11772    }
11773
11774    /**
11775     * Gets the native function at `key` of `object`.
11776     *
11777     * @private
11778     * @param {Object} object The object to query.
11779     * @param {string} key The key of the method to get.
11780     * @returns {*} Returns the function if it's native, else `undefined`.
11781     */
11782    function getNative(object, key) {
11783      var value = getValue(object, key);
11784      return baseIsNative(value) ? value : undefined;
11785    }
11786
11787    /**
11788     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
11789     *
11790     * @private
11791     * @param {*} value The value to query.
11792     * @returns {string} Returns the raw `toStringTag`.
11793     */
11794    function getRawTag(value) {
11795      var isOwn = hasOwnProperty.call(value, symToStringTag),
11796          tag = value[symToStringTag];
11797
11798      try {
11799        value[symToStringTag] = undefined;
11800        var unmasked = true;
11801      } catch (e) {}
11802
11803      var result = nativeObjectToString.call(value);
11804      if (unmasked) {
11805        if (isOwn) {
11806          value[symToStringTag] = tag;
11807        } else {
11808          delete value[symToStringTag];
11809        }
11810      }
11811      return result;
11812    }
11813
11814    /**
11815     * Creates an array of the own enumerable symbols of `object`.
11816     *
11817     * @private
11818     * @param {Object} object The object to query.
11819     * @returns {Array} Returns the array of symbols.
11820     */
11821    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
11822      if (object == null) {
11823        return [];
11824      }
11825      object = Object(object);
11826      return arrayFilter(nativeGetSymbols(object), function(symbol) {
11827        return propertyIsEnumerable.call(object, symbol);
11828      });
11829    };
11830
11831    /**
11832     * Creates an array of the own and inherited enumerable symbols of `object`.
11833     *
11834     * @private
11835     * @param {Object} object The object to query.
11836     * @returns {Array} Returns the array of symbols.
11837     */
11838    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
11839      var result = [];
11840      while (object) {
11841        arrayPush(result, getSymbols(object));
11842        object = getPrototype(object);
11843      }
11844      return result;
11845    };
11846
11847    /**
11848     * Gets the `toStringTag` of `value`.
11849     *
11850     * @private
11851     * @param {*} value The value to query.
11852     * @returns {string} Returns the `toStringTag`.
11853     */
11854    var getTag = baseGetTag;
11855
11856    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
11857    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
11858        (Map && getTag(new Map) != mapTag) ||
11859        (Promise && getTag(Promise.resolve()) != promiseTag) ||
11860        (Set && getTag(new Set) != setTag) ||
11861        (WeakMap && getTag(new WeakMap) != weakMapTag)) {
11862      getTag = function(value) {
11863        var result = baseGetTag(value),
11864            Ctor = result == objectTag ? value.constructor : undefined,
11865            ctorString = Ctor ? toSource(Ctor) : '';
11866
11867        if (ctorString) {
11868          switch (ctorString) {
11869            case dataViewCtorString: return dataViewTag;
11870            case mapCtorString: return mapTag;
11871            case promiseCtorString: return promiseTag;
11872            case setCtorString: return setTag;
11873            case weakMapCtorString: return weakMapTag;
11874          }
11875        }
11876        return result;
11877      };
11878    }
11879
11880    /**
11881     * Gets the view, applying any `transforms` to the `start` and `end` positions.
11882     *
11883     * @private
11884     * @param {number} start The start of the view.
11885     * @param {number} end The end of the view.
11886     * @param {Array} transforms The transformations to apply to the view.
11887     * @returns {Object}
vendor: 6,432 bytes, lines 11887-12092
11887 Returns an object containing the `start` and `end`
11888     *  positions of the view.
11889     */
11890    function getView(start, end, transforms) {
11891      var index = -1,
11892          length = transforms.length;
11893
11894      while (++index < length) {
11895        var data = transforms[index],
11896            size = data.size;
11897
11898        switch (data.type) {
11899          case 'drop':      start += size; break;
11900          case 'dropRight': end -= size; break;
11901          case 'take':      end = nativeMin(end, start + size); break;
11902          case 'takeRight': start = nativeMax(start, end - size); break;
11903        }
11904      }
11905      return { 'start': start, 'end': end };
11906    }
11907
11908    /**
11909     * Extracts wrapper details from the `source` body comment.
11910     *
11911     * @private
11912     * @param {string} source The source to inspect.
11913     * @returns {Array} Returns the wrapper details.
11914     */
11915    function getWrapDetails(source) {
11916      var match = source.match(reWrapDetails);
11917      return match ? match[1].split(reSplitDetails) : [];
11918    }
11919
11920    /**
11921     * Checks if `path` exists on `object`.
11922     *
11923     * @private
11924     * @param {Object} object The object to query.
11925     * @param {Array|string} path The path to check.
11926     * @param {Function} hasFunc The function to check properties.
11927     * @returns {boolean} Returns `true` if `path` exists, else `false`.
11928     */
11929    function hasPath(object, path, hasFunc) {
11930      path = castPath(path, object);
11931
11932      var index = -1,
11933          length = path.length,
11934          result = false;
11935
11936      while (++index < length) {
11937        var key = toKey(path[index]);
11938        if (!(result = object != null && hasFunc(object, key))) {
11939          break;
11940        }
11941        object = object[key];
11942      }
11943      if (result || ++index != length) {
11944        return result;
11945      }
11946      length = object == null ? 0 : object.length;
11947      return !!length && isLength(length) && isIndex(key, length) &&
11948        (isArray(object) || isArguments(object));
11949    }
11950
11951    /**
11952     * Initializes an array clone.
11953     *
11954     * @private
11955     * @param {Array} array The array to clone.
11956     * @returns {Array} Returns the initialized clone.
11957     */
11958    function initCloneArray(array) {
11959      var length = array.length,
11960          result = new array.constructor(length);
11961
11962      // Add properties assigned by `RegExp#exec`.
11963      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
11964        result.index = array.index;
11965        result.input = array.input;
11966      }
11967      return result;
11968    }
11969
11970    /**
11971     * Initializes an object clone.
11972     *
11973     * @private
11974     * @param {Object} object The object to clone.
11975     * @returns {Object} Returns the initialized clone.
11976     */
11977    function initCloneObject(object) {
11978      return (typeof object.constructor == 'function' && !isPrototype(object))
11979        ? baseCreate(getPrototype(object))
11980        : {};
11981    }
11982
11983    /**
11984     * Initializes an object clone based on its `toStringTag`.
11985     *
11986     * **Note:** This function only supports cloning values with tags of
11987     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
11988     *
11989     * @private
11990     * @param {Object} object The object to clone.
11991     * @param {string} tag The `toStringTag` of the object to clone.
11992     * @param {boolean} [isDeep] Specify a deep clone.
11993     * @returns {Object} Returns the initialized clone.
11994     */
11995    function initCloneByTag(object, tag, isDeep) {
11996      var Ctor = object.constructor;
11997      switch (tag) {
11998        case arrayBufferTag:
11999          return cloneArrayBuffer(object);
12000
12001        case boolTag:
12002        case dateTag:
12003          return new Ctor(+object);
12004
12005        case dataViewTag:
12006          return cloneDataView(object, isDeep);
12007
12008        case float32Tag: case float64Tag:
12009        case int8Tag: case int16Tag: case int32Tag:
12010        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
12011          return cloneTypedArray(object, isDeep);
12012
12013        case mapTag:
12014          return new Ctor;
12015
12016        case numberTag:
12017        case stringTag:
12018          return new Ctor(object);
12019
12020        case regexpTag:
12021          return cloneRegExp(object);
12022
12023        case setTag:
12024          return new Ctor;
12025
12026        case symbolTag:
12027          return cloneSymbol(object);
12028      }
12029    }
12030
12031    /**
12032     * Inserts wrapper `details` in a comment at the top of the `source` body.
12033     *
12034     * @private
12035     * @param {string} source The source to modify.
12036     * @returns {Array} details The details to insert.
12037     * @returns {string} Returns the modified source.
12038     */
12039    function insertWrapDetails(source, details) {
12040      var length = details.length;
12041      if (!length) {
12042        return source;
12043      }
12044      var lastIndex = length - 1;
12045      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
12046      details = details.join(length > 2 ? ', ' : ' ');
12047      return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
12048    }
12049
12050    /**
12051     * Checks if `value` is a flattenable `arguments` object or array.
12052     *
12053     * @private
12054     * @param {*} value The value to check.
12055     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
12056     */
12057    function isFlattenable(value) {
12058      return isArray(value) || isArguments(value) ||
12059        !!(spreadableSymbol && value && value[spreadableSymbol]);
12060    }
12061
12062    /**
12063     * Checks if `value` is a valid array-like index.
12064     *
12065     * @private
12066     * @param {*} value The value to check.
12067     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
12068     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
12069     */
12070    function isIndex(value, length) {
12071      var type = typeof value;
12072      length = length == null ? MAX_SAFE_INTEGER : length;
12073
12074      return !!length &&
12075        (type == 'number' ||
12076          (type != 'symbol' && reIsUint.test(value))) &&
12077            (value > -1 && value % 1 == 0 && value < length);
12078    }
12079
12080    /**
12081     * Checks if the given arguments are from an iteratee call.
12082     *
12083     * @private
12084     * @param {*} value The potential iteratee value argument.
12085     * @param {*} index The potential iteratee index or key argument.
12086     * @param {*} object The potential iteratee object argument.
12087     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
12088     *  else `false`.
12089     */
12090    function isIterateeCall(value, index, object) {
12091      if (!isObject(object)) {
12092        return false;
vendor: 14,387 bytes, lines 12093-12539
12093      }
12094      var type = typeof index;
12095      if (type == 'number'
12096            ? (isArrayLike(object) && isIndex(index, object.length))
12097            : (type == 'string' && index in object)
12098          ) {
12099        return eq(object[index], value);
12100      }
12101      return false;
12102    }
12103
12104    /**
12105     * Checks if `value` is a property name and not a property path.
12106     *
12107     * @private
12108     * @param {*} value The value to check.
12109     * @param {Object} [object] The object to query keys on.
12110     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
12111     */
12112    function isKey(value, object) {
12113      if (isArray(value)) {
12114        return false;
12115      }
12116      var type = typeof value;
12117      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
12118          value == null || isSymbol(value)) {
12119        return true;
12120      }
12121      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
12122        (object != null && value in Object(object));
12123    }
12124
12125    /**
12126     * Checks if `value` is suitable for use as unique object key.
12127     *
12128     * @private
12129     * @param {*} value The value to check.
12130     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
12131     */
12132    function isKeyable(value) {
12133      var type = typeof value;
12134      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
12135        ? (value !== '__proto__')
12136        : (value === null);
12137    }
12138
12139    /**
12140     * Checks if `func` has a lazy counterpart.
12141     *
12142     * @private
12143     * @param {Function} func The function to check.
12144     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
12145     *  else `false`.
12146     */
12147    function isLaziable(func) {
12148      var funcName = getFuncName(func),
12149          other = lodash[funcName];
12150
12151      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
12152        return false;
12153      }
12154      if (func === other) {
12155        return true;
12156      }
12157      var data = getData(other);
12158      return !!data && func === data[0];
12159    }
12160
12161    /**
12162     * Checks if `func` has its source masked.
12163     *
12164     * @private
12165     * @param {Function} func The function to check.
12166     * @returns {boolean} Returns `true` if `func` is masked, else `false`.
12167     */
12168    function isMasked(func) {
12169      return !!maskSrcKey && (maskSrcKey in func);
12170    }
12171
12172    /**
12173     * Checks if `func` is capable of being masked.
12174     *
12175     * @private
12176     * @param {*} value The value to check.
12177     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
12178     */
12179    var isMaskable = coreJsData ? isFunction : stubFalse;
12180
12181    /**
12182     * Checks if `value` is likely a prototype object.
12183     *
12184     * @private
12185     * @param {*} value The value to check.
12186     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
12187     */
12188    function isPrototype(value) {
12189      var Ctor = value && value.constructor,
12190          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
12191
12192      return value === proto;
12193    }
12194
12195    /**
12196     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
12197     *
12198     * @private
12199     * @param {*} value The value to check.
12200     * @returns {boolean} Returns `true` if `value` if suitable for strict
12201     *  equality comparisons, else `false`.
12202     */
12203    function isStrictComparable(value) {
12204      return value === value && !isObject(value);
12205    }
12206
12207    /**
12208     * A specialized version of `matchesProperty` for source values suitable
12209     * for strict equality comparisons, i.e. `===`.
12210     *
12211     * @private
12212     * @param {string} key The key of the property to get.
12213     * @param {*} srcValue The value to match.
12214     * @returns {Function} Returns the new spec function.
12215     */
12216    function matchesStrictComparable(key, srcValue) {
12217      return function(object) {
12218        if (object == null) {
12219          return false;
12220        }
12221        return object[key] === srcValue &&
12222          (srcValue !== undefined || (key in Object(object)));
12223      };
12224    }
12225
12226    /**
12227     * A specialized version of `_.memoize` which clears the memoized function's
12228     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
12229     *
12230     * @private
12231     * @param {Function} func The function to have its output memoized.
12232     * @returns {Function} Returns the new memoized function.
12233     */
12234    function memoizeCapped(func) {
12235      var result = memoize(func, function(key) {
12236        if (cache.size === MAX_MEMOIZE_SIZE) {
12237          cache.clear();
12238        }
12239        return key;
12240      });
12241
12242      var cache = result.cache;
12243      return result;
12244    }
12245
12246    /**
12247     * Merges the function metadata of `source` into `data`.
12248     *
12249     * Merging metadata reduces the number of wrappers used to invoke a function.
12250     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
12251     * may be applied regardless of execution order. Methods like `_.ary` and
12252     * `_.rearg` modify function arguments, making the order in which they are
12253     * executed important, preventing the merging of metadata. However, we make
12254     * an exception for a safe combined case where curried functions have `_.ary`
12255     * and or `_.rearg` applied.
12256     *
12257     * @private
12258     * @param {Array} data The destination metadata.
12259     * @param {Array} source The source metadata.
12260     * @returns {Array} Returns `data`.
12261     */
12262    function mergeData(data, source) {
12263      var bitmask = data[1],
12264          srcBitmask = source[1],
12265          newBitmask = bitmask | srcBitmask,
12266          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
12267
12268      var isCombo =
12269        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
12270        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
12271        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
12272
12273      // Exit early if metadata can't be merged.
12274      if (!(isCommon || isCombo)) {
12275        return data;
12276      }
12277      // Use source `thisArg` if available.
12278      if (srcBitmask & WRAP_BIND_FLAG) {
12279        data[2] = source[2];
12280        // Set when currying a bound function.
12281        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
12282      }
12283      // Compose partial arguments.
12284      var value = source[3];
12285      if (value) {
12286        var partials = data[3];
12287        data[3] = partials ? composeArgs(partials, value, source[4]) : value;
12288        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
12289      }
12290      // Compose partial right arguments.
12291      value = source[5];
12292      if (value) {
12293        partials = data[5];
12294        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
12295        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
12296      }
12297      // Use source `argPos` if available.
12298      value = source[7];
12299      if (value) {
12300        data[7] = value;
12301      }
12302      // Use source `ary` if it's smaller.
12303      if (srcBitmask & WRAP_ARY_FLAG) {
12304        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
12305      }
12306      // Use source `arity` if one is not provided.
12307      if (data[9] == null) {
12308        data[9] = source[9];
12309      }
12310      // Use source `func` and merge bitmasks.
12311      data[0] = source[0];
12312      data[1] = newBitmask;
12313
12314      return data;
12315    }
12316
12317    /**
12318     * This function is like
12319     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
12320     * except that it includes inherited enumerable properties.
12321     *
12322     * @private
12323     * @param {Object} object The object to query.
12324     * @returns {Array} Returns the array of property names.
12325     */
12326    function nativeKeysIn(object) {
12327      var result = [];
12328      if (object != null) {
12329        for (var key in Object(object)) {
12330          result.push(key);
12331        }
12332      }
12333      return result;
12334    }
12335
12336    /**
12337     * Converts `value` to a string using `Object.prototype.toString`.
12338     *
12339     * @private
12340     * @param {*} value The value to convert.
12341     * @returns {string} Returns the converted string.
12342     */
12343    function objectToString(value) {
12344      return nativeObjectToString.call(value);
12345    }
12346
12347    /**
12348     * A specialized version of `baseRest` which transforms the rest array.
12349     *
12350     * @private
12351     * @param {Function} func The function to apply a rest parameter to.
12352     * @param {number} [start=func.length-1] The start position of the rest parameter.
12353     * @param {Function} transform The rest array transform.
12354     * @returns {Function} Returns the new function.
12355     */
12356    function overRest(func, start, transform) {
12357      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
12358      return function() {
12359        var args = arguments,
12360            index = -1,
12361            length = nativeMax(args.length - start, 0),
12362            array = Array(length);
12363
12364        while (++index < length) {
12365          array[index] = args[start + index];
12366        }
12367        index = -1;
12368        var otherArgs = Array(start + 1);
12369        while (++index < start) {
12370          otherArgs[index] = args[index];
12371        }
12372        otherArgs[start] = transform(array);
12373        return apply(func, this, otherArgs);
12374      };
12375    }
12376
12377    /**
12378     * Gets the parent value at `path` of `object`.
12379     *
12380     * @private
12381     * @param {Object} object The object to query.
12382     * @param {Array} path The path to get the parent value of.
12383     * @returns {*} Returns the parent value.
12384     */
12385    function parent(object, path) {
12386      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
12387    }
12388
12389    /**
12390     * Reorder `array` according to the specified indexes where the element at
12391     * the first index is assigned as the first element, the element at
12392     * the second index is assigned as the second element, and so on.
12393     *
12394     * @private
12395     * @param {Array} array The array to reorder.
12396     * @param {Array} indexes The arranged array indexes.
12397     * @returns {Array} Returns `array`.
12398     */
12399    function reorder(array, indexes) {
12400      var arrLength = array.length,
12401          length = nativeMin(indexes.length, arrLength),
12402          oldArray = copyArray(array);
12403
12404      while (length--) {
12405        var index = indexes[length];
12406        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
12407      }
12408      return array;
12409    }
12410
12411    /**
12412     * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
12413     *
12414     * @private
12415     * @param {Object} object The object to query.
12416     * @param {string} key The key of the property to get.
12417     * @returns {*} Returns the property value.
12418     */
12419    function safeGet(object, key) {
12420      if (key === 'constructor' && typeof object[key] === 'function') {
12421        return;
12422      }
12423
12424      if (key == '__proto__') {
12425        return;
12426      }
12427
12428      return object[key];
12429    }
12430
12431    /**
12432     * Sets metadata for `func`.
12433     *
12434     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
12435     * period of time, it will trip its breaker and transition to an identity
12436     * function to avoid garbage collection pauses in V8. See
12437     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
12438     * for more details.
12439     *
12440     * @private
12441     * @param {Function} func The function to associate metadata with.
12442     * @param {*} data The metadata.
12443     * @returns {Function} Returns `func`.
12444     */
12445    var setData = shortOut(baseSetData);
12446
12447    /**
12448     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
12449     *
12450     * @private
12451     * @param {Function} func The function to delay.
12452     * @param {number} wait The number of milliseconds to delay invocation.
12453     * @returns {number|Object} Returns the timer id or timeout object.
12454     */
12455    var setTimeout = ctxSetTimeout || function(func, wait) {
12456      return root.setTimeout(func, wait);
12457    };
12458
12459    /**
12460     * Sets the `toString` method of `func` to return `string`.
12461     *
12462     * @private
12463     * @param {Function} func The function to modify.
12464     * @param {Function} string The `toString` result.
12465     * @returns {Function} Returns `func`.
12466     */
12467    var setToString = shortOut(baseSetToString);
12468
12469    /**
12470     * Sets the `toString` method of `wrapper` to mimic the source of `reference`
12471     * with wrapper details in a comment at the top of the source body.
12472     *
12473     * @private
12474     * @param {Function} wrapper The function to modify.
12475     * @param {Function} reference The reference function.
12476     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
12477     * @returns {Function} Returns `wrapper`.
12478     */
12479    function setWrapToString(wrapper, reference, bitmask) {
12480      var source = (reference + '');
12481      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
12482    }
12483
12484    /**
12485     * Creates a function that'll short out and invoke `identity` instead
12486     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
12487     * milliseconds.
12488     *
12489     * @private
12490     * @param {Function} func The function to restrict.
12491     * @returns {Function} Returns the new shortable function.
12492     */
12493    function shortOut(func) {
12494      var count = 0,
12495          lastCalled = 0;
12496
12497      return function() {
12498        var stamp = nativeNow(),
12499            remaining = HOT_SPAN - (stamp - lastCalled);
12500
12501        lastCalled = stamp;
12502        if (remaining > 0) {
12503          if (++count >= HOT_COUNT) {
12504            return arguments[0];
12505          }
12506        } else {
12507          count = 0;
12508        }
12509        return func.apply(undefined, arguments);
12510      };
12511    }
12512
12513    /**
12514     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
12515     *
12516     * @private
12517     * @param {Array} array The array to shuffle.
12518     * @param {number} [size=array.length] The size of `array`.
12519     * @returns {Array} Returns `array`.
12520     */
12521    function shuffleSelf(array, size) {
12522      var index = -1,
12523          length = array.length,
12524          lastIndex = length - 1;
12525
12526      size = size === undefined ? length : size;
12527      while (++index < size) {
12528        var rand = baseRandom(index, lastIndex),
12529            value = array[rand];
12530
12531        array[rand] = array[index];
12532        array[index] = value;
12533      }
12534      array.length = size;
12535      return array;
12536    }
12537
12538    /**
12539     * Converts `string` to a property path array.
vendor: 1,775 bytes, lines 12540-12600
12540     *
12541     * @private
12542     * @param {string} string The string to convert.
12543     * @returns {Array} Returns the property path array.
12544     */
12545    var stringToPath = memoizeCapped(function(string) {
12546      var result = [];
12547      if (string.charCodeAt(0) === 46 /* . */) {
12548        result.push('');
12549      }
12550      string.replace(rePropName, function(match, number, quote, subString) {
12551        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
12552      });
12553      return result;
12554    });
12555
12556    /**
12557     * Converts `value` to a string key if it's not a string or symbol.
12558     *
12559     * @private
12560     * @param {*} value The value to inspect.
12561     * @returns {string|symbol} Returns the key.
12562     */
12563    function toKey(value) {
12564      if (typeof value == 'string' || isSymbol(value)) {
12565        return value;
12566      }
12567      var result = (value + '');
12568      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
12569    }
12570
12571    /**
12572     * Converts `func` to its source code.
12573     *
12574     * @private
12575     * @param {Function} func The function to convert.
12576     * @returns {string} Returns the source code.
12577     */
12578    function toSource(func) {
12579      if (func != null) {
12580        try {
12581          return funcToString.call(func);
12582        } catch (e) {}
12583        try {
12584          return (func + '');
12585        } catch (e) {}
12586      }
12587      return '';
12588    }
12589
12590    /**
12591     * Updates wrapper `details` based on `bitmask` flags.
12592     *
12593     * @private
12594     * @returns {Array} details The details to modify.
12595     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
12596     * @returns {Array} Returns `details`.
12597     */
12598    function updateWrapDetails(details, bitmask) {
12599      arrayEach(wrapFlags, function(pair) {
12600        var value = '_.' + pair[0];
vendor: 80,381 bytes, lines 12601-15184
12601        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
12602          details.push(value);
12603        }
12604      });
12605      return details.sort();
12606    }
12607
12608    /**
12609     * Creates a clone of `wrapper`.
12610     *
12611     * @private
12612     * @param {Object} wrapper The wrapper to clone.
12613     * @returns {Object} Returns the cloned wrapper.
12614     */
12615    function wrapperClone(wrapper) {
12616      if (wrapper instanceof LazyWrapper) {
12617        return wrapper.clone();
12618      }
12619      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
12620      result.__actions__ = copyArray(wrapper.__actions__);
12621      result.__index__  = wrapper.__index__;
12622      result.__values__ = wrapper.__values__;
12623      return result;
12624    }
12625
12626    /*------------------------------------------------------------------------*/
12627
12628    /**
12629     * Creates an array of elements split into groups the length of `size`.
12630     * If `array` can't be split evenly, the final chunk will be the remaining
12631     * elements.
12632     *
12633     * @static
12634     * @memberOf _
12635     * @since 3.0.0
12636     * @category Array
12637     * @param {Array} array The array to process.
12638     * @param {number} [size=1] The length of each chunk
12639     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
12640     * @returns {Array} Returns the new array of chunks.
12641     * @example
12642     *
12643     * _.chunk(['a', 'b', 'c', 'd'], 2);
12644     * // => [['a', 'b'], ['c', 'd']]
12645     *
12646     * _.chunk(['a', 'b', 'c', 'd'], 3);
12647     * // => [['a', 'b', 'c'], ['d']]
12648     */
12649    function chunk(array, size, guard) {
12650      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
12651        size = 1;
12652      } else {
12653        size = nativeMax(toInteger(size), 0);
12654      }
12655      var length = array == null ? 0 : array.length;
12656      if (!length || size < 1) {
12657        return [];
12658      }
12659      var index = 0,
12660          resIndex = 0,
12661          result = Array(nativeCeil(length / size));
12662
12663      while (index < length) {
12664        result[resIndex++] = baseSlice(array, index, (index += size));
12665      }
12666      return result;
12667    }
12668
12669    /**
12670     * Creates an array with all falsey values removed. The values `false`, `null`,
12671     * `0`, `""`, `undefined`, and `NaN` are falsey.
12672     *
12673     * @static
12674     * @memberOf _
12675     * @since 0.1.0
12676     * @category Array
12677     * @param {Array} array The array to compact.
12678     * @returns {Array} Returns the new array of filtered values.
12679     * @example
12680     *
12681     * _.compact([0, 1, false, 2, '', 3]);
12682     * // => [1, 2, 3]
12683     */
12684    function compact(array) {
12685      var index = -1,
12686          length = array == null ? 0 : array.length,
12687          resIndex = 0,
12688          result = [];
12689
12690      while (++index < length) {
12691        var value = array[index];
12692        if (value) {
12693          result[resIndex++] = value;
12694        }
12695      }
12696      return result;
12697    }
12698
12699    /**
12700     * Creates a new array concatenating `array` with any additional arrays
12701     * and/or values.
12702     *
12703     * @static
12704     * @memberOf _
12705     * @since 4.0.0
12706     * @category Array
12707     * @param {Array} array The array to concatenate.
12708     * @param {...*} [values] The values to concatenate.
12709     * @returns {Array} Returns the new concatenated array.
12710     * @example
12711     *
12712     * var array = [1];
12713     * var other = _.concat(array, 2, [3], [[4]]);
12714     *
12715     * console.log(other);
12716     * // => [1, 2, 3, [4]]
12717     *
12718     * console.log(array);
12719     * // => [1]
12720     */
12721    function concat() {
12722      var length = arguments.length;
12723      if (!length) {
12724        return [];
12725      }
12726      var args = Array(length - 1),
12727          array = arguments[0],
12728          index = length;
12729
12730      while (index--) {
12731        args[index - 1] = arguments[index];
12732      }
12733      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
12734    }
12735
12736    /**
12737     * Creates an array of `array` values not included in the other given arrays
12738     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
12739     * for equality comparisons. The order and references of result values are
12740     * determined by the first array.
12741     *
12742     * **Note:** Unlike `_.pullAll`, this method returns a new array.
12743     *
12744     * @static
12745     * @memberOf _
12746     * @since 0.1.0
12747     * @category Array
12748     * @param {Array} array The array to inspect.
12749     * @param {...Array} [values] The values to exclude.
12750     * @returns {Array} Returns the new array of filtered values.
12751     * @see _.without, _.xor
12752     * @example
12753     *
12754     * _.difference([2, 1], [2, 3]);
12755     * // => [1]
12756     */
12757    var difference = baseRest(function(array, values) {
12758      return isArrayLikeObject(array)
12759        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
12760        : [];
12761    });
12762
12763    /**
12764     * This method is like `_.difference` except that it accepts `iteratee` which
12765     * is invoked for each element of `array` and `values` to generate the criterion
12766     * by which they're compared. The order and references of result values are
12767     * determined by the first array. The iteratee is invoked with one argument:
12768     * (value).
12769     *
12770     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
12771     *
12772     * @static
12773     * @memberOf _
12774     * @since 4.0.0
12775     * @category Array
12776     * @param {Array} array The array to inspect.
12777     * @param {...Array} [values] The values to exclude.
12778     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
12779     * @returns {Array} Returns the new array of filtered values.
12780     * @example
12781     *
12782     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
12783     * // => [1.2]
12784     *
12785     * // The `_.property` iteratee shorthand.
12786     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
12787     * // => [{ 'x': 2 }]
12788     */
12789    var differenceBy = baseRest(function(array, values) {
12790      var iteratee = last(values);
12791      if (isArrayLikeObject(iteratee)) {
12792        iteratee = undefined;
12793      }
12794      return isArrayLikeObject(array)
12795        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
12796        : [];
12797    });
12798
12799    /**
12800     * This method is like `_.difference` except that it accepts `comparator`
12801     * which is invoked to compare elements of `array` to `values`. The order and
12802     * references of result values are determined by the first array. The comparator
12803     * is invoked with two arguments: (arrVal, othVal).
12804     *
12805     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
12806     *
12807     * @static
12808     * @memberOf _
12809     * @since 4.0.0
12810     * @category Array
12811     * @param {Array} array The array to inspect.
12812     * @param {...Array} [values] The values to exclude.
12813     * @param {Function} [comparator] The comparator invoked per element.
12814     * @returns {Array} Returns the new array of filtered values.
12815     * @example
12816     *
12817     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
12818     *
12819     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
12820     * // => [{ 'x': 2, 'y': 1 }]
12821     */
12822    var differenceWith = baseRest(function(array, values) {
12823      var comparator = last(values);
12824      if (isArrayLikeObject(comparator)) {
12825        comparator = undefined;
12826      }
12827      return isArrayLikeObject(array)
12828        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
12829        : [];
12830    });
12831
12832    /**
12833     * Creates a slice of `array` with `n` elements dropped from the beginning.
12834     *
12835     * @static
12836     * @memberOf _
12837     * @since 0.5.0
12838     * @category Array
12839     * @param {Array} array The array to query.
12840     * @param {number} [n=1] The number of elements to drop.
12841     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
12842     * @returns {Array} Returns the slice of `array`.
12843     * @example
12844     *
12845     * _.drop([1, 2, 3]);
12846     * // => [2, 3]
12847     *
12848     * _.drop([1, 2, 3], 2);
12849     * // => [3]
12850     *
12851     * _.drop([1, 2, 3], 5);
12852     * // => []
12853     *
12854     * _.drop([1, 2, 3], 0);
12855     * // => [1, 2, 3]
12856     */
12857    function drop(array, n, guard) {
12858      var length = array == null ? 0 : array.length;
12859      if (!length) {
12860        return [];
12861      }
12862      n = (guard || n === undefined) ? 1 : toInteger(n);
12863      return baseSlice(array, n < 0 ? 0 : n, length);
12864    }
12865
12866    /**
12867     * Creates a slice of `array` with `n` elements dropped from the end.
12868     *
12869     * @static
12870     * @memberOf _
12871     * @since 3.0.0
12872     * @category Array
12873     * @param {Array} array The array to query.
12874     * @param {number} [n=1] The number of elements to drop.
12875     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
12876     * @returns {Array} Returns the slice of `array`.
12877     * @example
12878     *
12879     * _.dropRight([1, 2, 3]);
12880     * // => [1, 2]
12881     *
12882     * _.dropRight([1, 2, 3], 2);
12883     * // => [1]
12884     *
12885     * _.dropRight([1, 2, 3], 5);
12886     * // => []
12887     *
12888     * _.dropRight([1, 2, 3], 0);
12889     * // => [1, 2, 3]
12890     */
12891    function dropRight(array, n, guard) {
12892      var length = array == null ? 0 : array.length;
12893      if (!length) {
12894        return [];
12895      }
12896      n = (guard || n === undefined) ? 1 : toInteger(n);
12897      n = length - n;
12898      return baseSlice(array, 0, n < 0 ? 0 : n);
12899    }
12900
12901    /**
12902     * Creates a slice of `array` excluding elements dropped from the end.
12903     * Elements are dropped until `predicate` returns falsey. The predicate is
12904     * invoked with three arguments: (value, index, array).
12905     *
12906     * @static
12907     * @memberOf _
12908     * @since 3.0.0
12909     * @category Array
12910     * @param {Array} array The array to query.
12911     * @param {Function} [predicate=_.identity] The function invoked per iteration.
12912     * @returns {Array} Returns the slice of `array`.
12913     * @example
12914     *
12915     * var users = [
12916     *   { 'user': 'barney',  'active': true },
12917     *   { 'user': 'fred',    'active': false },
12918     *   { 'user': 'pebbles', 'active': false }
12919     * ];
12920     *
12921     * _.dropRightWhile(users, function(o) { return !o.active; });
12922     * // => objects for ['barney']
12923     *
12924     * // The `_.matches` iteratee shorthand.
12925     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
12926     * // => objects for ['barney', 'fred']
12927     *
12928     * // The `_.matchesProperty` iteratee shorthand.
12929     * _.dropRightWhile(users, ['active', false]);
12930     * // => objects for ['barney']
12931     *
12932     * // The `_.property` iteratee shorthand.
12933     * _.dropRightWhile(users, 'active');
12934     * // => objects for ['barney', 'fred', 'pebbles']
12935     */
12936    function dropRightWhile(array, predicate) {
12937      return (array && array.length)
12938        ? baseWhile(array, getIteratee(predicate, 3), true, true)
12939        : [];
12940    }
12941
12942    /**
12943     * Creates a slice of `array` excluding elements dropped from the beginning.
12944     * Elements are dropped until `predicate` returns falsey. The predicate is
12945     * invoked with three arguments: (value, index, array).
12946     *
12947     * @static
12948     * @memberOf _
12949     * @since 3.0.0
12950     * @category Array
12951     * @param {Array} array The array to query.
12952     * @param {Function} [predicate=_.identity] The function invoked per iteration.
12953     * @returns {Array} Returns the slice of `array`.
12954     * @example
12955     *
12956     * var users = [
12957     *   { 'user': 'barney',  'active': false },
12958     *   { 'user': 'fred',    'active': false },
12959     *   { 'user': 'pebbles', 'active': true }
12960     * ];
12961     *
12962     * _.dropWhile(users, function(o) { return !o.active; });
12963     * // => objects for ['pebbles']
12964     *
12965     * // The `_.matches` iteratee shorthand.
12966     * _.dropWhile(users, { 'user': 'barney', 'active': false });
12967     * // => objects for ['fred', 'pebbles']
12968     *
12969     * // The `_.matchesProperty` iteratee shorthand.
12970     * _.dropWhile(users, ['active', false]);
12971     * // => objects for ['pebbles']
12972     *
12973     * // The `_.property` iteratee shorthand.
12974     * _.dropWhile(users, 'active');
12975     * // => objects for ['barney', 'fred', 'pebbles']
12976     */
12977    function dropWhile(array, predicate) {
12978      return (array && array.length)
12979        ? baseWhile(array, getIteratee(predicate, 3), true)
12980        : [];
12981    }
12982
12983    /**
12984     * Fills elements of `array` with `value` from `start` up to, but not
12985     * including, `end`.
12986     *
12987     * **Note:** This method mutates `array`.
12988     *
12989     * @static
12990     * @memberOf _
12991     * @since 3.2.0
12992     * @category Array
12993     * @param {Array} array The array to fill.
12994     * @param {*} value The value to fill `array` with.
12995     * @param {number} [start=0] The start position.
12996     * @param {number} [end=array.length] The end position.
12997     * @returns {Array} Returns `array`.
12998     * @example
12999     *
13000     * var array = [1, 2, 3];
13001     *
13002     * _.fill(array, 'a');
13003     * console.log(array);
13004     * // => ['a', 'a', 'a']
13005     *
13006     * _.fill(Array(3), 2);
13007     * // => [2, 2, 2]
13008     *
13009     * _.fill([4, 6, 8, 10], '*', 1, 3);
13010     * // => [4, '*', '*', 10]
13011     */
13012    function fill(array, value, start, end) {
13013      var length = array == null ? 0 : array.length;
13014      if (!length) {
13015        return [];
13016      }
13017      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
13018        start = 0;
13019        end = length;
13020      }
13021      return baseFill(array, value, start, end);
13022    }
13023
13024    /**
13025     * This method is like `_.find` except that it returns the index of the first
13026     * element `predicate` returns truthy for instead of the element itself.
13027     *
13028     * @static
13029     * @memberOf _
13030     * @since 1.1.0
13031     * @category Array
13032     * @param {Array} array The array to inspect.
13033     * @param {Function} [predicate=_.identity] The function invoked per iteration.
13034     * @param {number} [fromIndex=0] The index to search from.
13035     * @returns {number} Returns the index of the found element, else `-1`.
13036     * @example
13037     *
13038     * var users = [
13039     *   { 'user': 'barney',  'active': false },
13040     *   { 'user': 'fred',    'active': false },
13041     *   { 'user': 'pebbles', 'active': true }
13042     * ];
13043     *
13044     * _.findIndex(users, function(o) { return o.user == 'barney'; });
13045     * // => 0
13046     *
13047     * // The `_.matches` iteratee shorthand.
13048     * _.findIndex(users, { 'user': 'fred', 'active': false });
13049     * // => 1
13050     *
13051     * // The `_.matchesProperty` iteratee shorthand.
13052     * _.findIndex(users, ['active', false]);
13053     * // => 0
13054     *
13055     * // The `_.property` iteratee shorthand.
13056     * _.findIndex(users, 'active');
13057     * // => 2
13058     */
13059    function findIndex(array, predicate, fromIndex) {
13060      var length = array == null ? 0 : array.length;
13061      if (!length) {
13062        return -1;
13063      }
13064      var index = fromIndex == null ? 0 : toInteger(fromIndex);
13065      if (index < 0) {
13066        index = nativeMax(length + index, 0);
13067      }
13068      return baseFindIndex(array, getIteratee(predicate, 3), index);
13069    }
13070
13071    /**
13072     * This method is like `_.findIndex` except that it iterates over elements
13073     * of `collection` from right to left.
13074     *
13075     * @static
13076     * @memberOf _
13077     * @since 2.0.0
13078     * @category Array
13079     * @param {Array} array The array to inspect.
13080     * @param {Function} [predicate=_.identity] The function invoked per iteration.
13081     * @param {number} [fromIndex=array.length-1] The index to search from.
13082     * @returns {number} Returns the index of the found element, else `-1`.
13083     * @example
13084     *
13085     * var users = [
13086     *   { 'user': 'barney',  'active': true },
13087     *   { 'user': 'fred',    'active': false },
13088     *   { 'user': 'pebbles', 'active': false }
13089     * ];
13090     *
13091     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
13092     * // => 2
13093     *
13094     * // The `_.matches` iteratee shorthand.
13095     * _.findLastIndex(users, { 'user': 'barney', 'active': true });
13096     * // => 0
13097     *
13098     * // The `_.matchesProperty` iteratee shorthand.
13099     * _.findLastIndex(users, ['active', false]);
13100     * // => 2
13101     *
13102     * // The `_.property` iteratee shorthand.
13103     * _.findLastIndex(users, 'active');
13104     * // => 0
13105     */
13106    function findLastIndex(array, predicate, fromIndex) {
13107      var length = array == null ? 0 : array.length;
13108      if (!length) {
13109        return -1;
13110      }
13111      var index = length - 1;
13112      if (fromIndex !== undefined) {
13113        index = toInteger(fromIndex);
13114        index = fromIndex < 0
13115          ? nativeMax(length + index, 0)
13116          : nativeMin(index, length - 1);
13117      }
13118      return baseFindIndex(array, getIteratee(predicate, 3), index, true);
13119    }
13120
13121    /**
13122     * Flattens `array` a single level deep.
13123     *
13124     * @static
13125     * @memberOf _
13126     * @since 0.1.0
13127     * @category Array
13128     * @param {Array} array The array to flatten.
13129     * @returns {Array} Returns the new flattened array.
13130     * @example
13131     *
13132     * _.flatten([1, [2, [3, [4]], 5]]);
13133     * // => [1, 2, [3, [4]], 5]
13134     */
13135    function flatten(array) {
13136      var length = array == null ? 0 : array.length;
13137      return length ? baseFlatten(array, 1) : [];
13138    }
13139
13140    /**
13141     * Recursively flattens `array`.
13142     *
13143     * @static
13144     * @memberOf _
13145     * @since 3.0.0
13146     * @category Array
13147     * @param {Array} array The array to flatten.
13148     * @returns {Array} Returns the new flattened array.
13149     * @example
13150     *
13151     * _.flattenDeep([1, [2, [3, [4]], 5]]);
13152     * // => [1, 2, 3, 4, 5]
13153     */
13154    function flattenDeep(array) {
13155      var length = array == null ? 0 : array.length;
13156      return length ? baseFlatten(array, INFINITY) : [];
13157    }
13158
13159    /**
13160     * Recursively flatten `array` up to `depth` times.
13161     *
13162     * @static
13163     * @memberOf _
13164     * @since 4.4.0
13165     * @category Array
13166     * @param {Array} array The array to flatten.
13167     * @param {number} [depth=1] The maximum recursion depth.
13168     * @returns {Array} Returns the new flattened array.
13169     * @example
13170     *
13171     * var array = [1, [2, [3, [4]], 5]];
13172     *
13173     * _.flattenDepth(array, 1);
13174     * // => [1, 2, [3, [4]], 5]
13175     *
13176     * _.flattenDepth(array, 2);
13177     * // => [1, 2, 3, [4], 5]
13178     */
13179    function flattenDepth(array, depth) {
13180      var length = array == null ? 0 : array.length;
13181      if (!length) {
13182        return [];
13183      }
13184      depth = depth === undefined ? 1 : toInteger(depth);
13185      return baseFlatten(array, depth);
13186    }
13187
13188    /**
13189     * The inverse of `_.toPairs`; this method returns an object composed
13190     * from key-value `pairs`.
13191     *
13192     * @static
13193     * @memberOf _
13194     * @since 4.0.0
13195     * @category Array
13196     * @param {Array} pairs The key-value pairs.
13197     * @returns {Object} Returns the new object.
13198     * @example
13199     *
13200     * _.fromPairs([['a', 1], ['b', 2]]);
13201     * // => { 'a': 1, 'b': 2 }
13202     */
13203    function fromPairs(pairs) {
13204      var index = -1,
13205          length = pairs == null ? 0 : pairs.length,
13206          result = {};
13207
13208      while (++index < length) {
13209        var pair = pairs[index];
13210        result[pair[0]] = pair[1];
13211      }
13212      return result;
13213    }
13214
13215    /**
13216     * Gets the first element of `array`.
13217     *
13218     * @static
13219     * @memberOf _
13220     * @since 0.1.0
13221     * @alias first
13222     * @category Array
13223     * @param {Array} array The array to query.
13224     * @returns {*} Returns the first element of `array`.
13225     * @example
13226     *
13227     * _.head([1, 2, 3]);
13228     * // => 1
13229     *
13230     * _.head([]);
13231     * // => undefined
13232     */
13233    function head(array) {
13234      return (array && array.length) ? array[0] : undefined;
13235    }
13236
13237    /**
13238     * Gets the index at which the first occurrence of `value` is found in `array`
13239     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
13240     * for equality comparisons. If `fromIndex` is negative, it's used as the
13241     * offset from the end of `array`.
13242     *
13243     * @static
13244     * @memberOf _
13245     * @since 0.1.0
13246     * @category Array
13247     * @param {Array} array The array to inspect.
13248     * @param {*} value The value to search for.
13249     * @param {number} [fromIndex=0] The index to search from.
13250     * @returns {number} Returns the index of the matched value, else `-1`.
13251     * @example
13252     *
13253     * _.indexOf([1, 2, 1, 2], 2);
13254     * // => 1
13255     *
13256     * // Search from the `fromIndex`.
13257     * _.indexOf([1, 2, 1, 2], 2, 2);
13258     * // => 3
13259     */
13260    function indexOf(array, value, fromIndex) {
13261      var length = array == null ? 0 : array.length;
13262      if (!length) {
13263        return -1;
13264      }
13265      var index = fromIndex == null ? 0 : toInteger(fromIndex);
13266      if (index < 0) {
13267        index = nativeMax(length + index, 0);
13268      }
13269      return baseIndexOf(array, value, index);
13270    }
13271
13272    /**
13273     * Gets all but the last element of `array`.
13274     *
13275     * @static
13276     * @memberOf _
13277     * @since 0.1.0
13278     * @category Array
13279     * @param {Array} array The array to query.
13280     * @returns {Array} Returns the slice of `array`.
13281     * @example
13282     *
13283     * _.initial([1, 2, 3]);
13284     * // => [1, 2]
13285     */
13286    function initial(array) {
13287      var length = array == null ? 0 : array.length;
13288      return length ? baseSlice(array, 0, -1) : [];
13289    }
13290
13291    /**
13292     * Creates an array of unique values that are included in all given arrays
13293     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
13294     * for equality comparisons. The order and references of result values are
13295     * determined by the first array.
13296     *
13297     * @static
13298     * @memberOf _
13299     * @since 0.1.0
13300     * @category Array
13301     * @param {...Array} [arrays] The arrays to inspect.
13302     * @returns {Array} Returns the new array of intersecting values.
13303     * @example
13304     *
13305     * _.intersection([2, 1], [2, 3]);
13306     * // => [2]
13307     */
13308    var intersection = baseRest(function(arrays) {
13309      var mapped = arrayMap(arrays, castArrayLikeObject);
13310      return (mapped.length && mapped[0] === arrays[0])
13311        ? baseIntersection(mapped)
13312        : [];
13313    });
13314
13315    /**
13316     * This method is like `_.intersection` except that it accepts `iteratee`
13317     * which is invoked for each element of each `arrays` to generate the criterion
13318     * by which they're compared. The order and references of result values are
13319     * determined by the first array. The iteratee is invoked with one argument:
13320     * (value).
13321     *
13322     * @static
13323     * @memberOf _
13324     * @since 4.0.0
13325     * @category Array
13326     * @param {...Array} [arrays] The arrays to inspect.
13327     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13328     * @returns {Array} Returns the new array of intersecting values.
13329     * @example
13330     *
13331     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
13332     * // => [2.1]
13333     *
13334     * // The `_.property` iteratee shorthand.
13335     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
13336     * // => [{ 'x': 1 }]
13337     */
13338    var intersectionBy = baseRest(function(arrays) {
13339      var iteratee = last(arrays),
13340          mapped = arrayMap(arrays, castArrayLikeObject);
13341
13342      if (iteratee === last(mapped)) {
13343        iteratee = undefined;
13344      } else {
13345        mapped.pop();
13346      }
13347      return (mapped.length && mapped[0] === arrays[0])
13348        ? baseIntersection(mapped, getIteratee(iteratee, 2))
13349        : [];
13350    });
13351
13352    /**
13353     * This method is like `_.intersection` except that it accepts `comparator`
13354     * which is invoked to compare elements of `arrays`. The order and references
13355     * of result values are determined by the first array. The comparator is
13356     * invoked with two arguments: (arrVal, othVal).
13357     *
13358     * @static
13359     * @memberOf _
13360     * @since 4.0.0
13361     * @category Array
13362     * @param {...Array} [arrays] The arrays to inspect.
13363     * @param {Function} [comparator] The comparator invoked per element.
13364     * @returns {Array} Returns the new array of intersecting values.
13365     * @example
13366     *
13367     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
13368     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
13369     *
13370     * _.intersectionWith(objects, others, _.isEqual);
13371     * // => [{ 'x': 1, 'y': 2 }]
13372     */
13373    var intersectionWith = baseRest(function(arrays) {
13374      var comparator = last(arrays),
13375          mapped = arrayMap(arrays, castArrayLikeObject);
13376
13377      comparator = typeof comparator == 'function' ? comparator : undefined;
13378      if (comparator) {
13379        mapped.pop();
13380      }
13381      return (mapped.length && mapped[0] === arrays[0])
13382        ? baseIntersection(mapped, undefined, comparator)
13383        : [];
13384    });
13385
13386    /**
13387     * Converts all elements in `array` into a string separated by `separator`.
13388     *
13389     * @static
13390     * @memberOf _
13391     * @since 4.0.0
13392     * @category Array
13393     * @param {Array} array The array to convert.
13394     * @param {string} [separator=','] The element separator.
13395     * @returns {string} Returns the joined string.
13396     * @example
13397     *
13398     * _.join(['a', 'b', 'c'], '~');
13399     * // => 'a~b~c'
13400     */
13401    function join(array, separator) {
13402      return array == null ? '' : nativeJoin.call(array, separator);
13403    }
13404
13405    /**
13406     * Gets the last element of `array`.
13407     *
13408     * @static
13409     * @memberOf _
13410     * @since 0.1.0
13411     * @category Array
13412     * @param {Array} array The array to query.
13413     * @returns {*} Returns the last element of `array`.
13414     * @example
13415     *
13416     * _.last([1, 2, 3]);
13417     * // => 3
13418     */
13419    function last(array) {
13420      var length = array == null ? 0 : array.length;
13421      return length ? array[length - 1] : undefined;
13422    }
13423
13424    /**
13425     * This method is like `_.indexOf` except that it iterates over elements of
13426     * `array` from right to left.
13427     *
13428     * @static
13429     * @memberOf _
13430     * @since 0.1.0
13431     * @category Array
13432     * @param {Array} array The array to inspect.
13433     * @param {*} value The value to search for.
13434     * @param {number} [fromIndex=array.length-1] The index to search from.
13435     * @returns {number} Returns the index of the matched value, else `-1`.
13436     * @example
13437     *
13438     * _.lastIndexOf([1, 2, 1, 2], 2);
13439     * // => 3
13440     *
13441     * // Search from the `fromIndex`.
13442     * _.lastIndexOf([1, 2, 1, 2], 2, 2);
13443     * // => 1
13444     */
13445    function lastIndexOf(array, value, fromIndex) {
13446      var length = array == null ? 0 : array.length;
13447      if (!length) {
13448        return -1;
13449      }
13450      var index = length;
13451      if (fromIndex !== undefined) {
13452        index = toInteger(fromIndex);
13453        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
13454      }
13455      return value === value
13456        ? strictLastIndexOf(array, value, index)
13457        : baseFindIndex(array, baseIsNaN, index, true);
13458    }
13459
13460    /**
13461     * Gets the element at index `n` of `array`. If `n` is negative, the nth
13462     * element from the end is returned.
13463     *
13464     * @static
13465     * @memberOf _
13466     * @since 4.11.0
13467     * @category Array
13468     * @param {Array} array The array to query.
13469     * @param {number} [n=0] The index of the element to return.
13470     * @returns {*} Returns the nth element of `array`.
13471     * @example
13472     *
13473     * var array = ['a', 'b', 'c', 'd'];
13474     *
13475     * _.nth(array, 1);
13476     * // => 'b'
13477     *
13478     * _.nth(array, -2);
13479     * // => 'c';
13480     */
13481    function nth(array, n) {
13482      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
13483    }
13484
13485    /**
13486     * Removes all given values from `array` using
13487     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
13488     * for equality comparisons.
13489     *
13490     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
13491     * to remove elements from an array by predicate.
13492     *
13493     * @static
13494     * @memberOf _
13495     * @since 2.0.0
13496     * @category Array
13497     * @param {Array} array The array to modify.
13498     * @param {...*} [values] The values to remove.
13499     * @returns {Array} Returns `array`.
13500     * @example
13501     *
13502     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
13503     *
13504     * _.pull(array, 'a', 'c');
13505     * console.log(array);
13506     * // => ['b', 'b']
13507     */
13508    var pull = baseRest(pullAll);
13509
13510    /**
13511     * This method is like `_.pull` except that it accepts an array of values to remove.
13512     *
13513     * **Note:** Unlike `_.difference`, this method mutates `array`.
13514     *
13515     * @static
13516     * @memberOf _
13517     * @since 4.0.0
13518     * @category Array
13519     * @param {Array} array The array to modify.
13520     * @param {Array} values The values to remove.
13521     * @returns {Array} Returns `array`.
13522     * @example
13523     *
13524     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
13525     *
13526     * _.pullAll(array, ['a', 'c']);
13527     * console.log(array);
13528     * // => ['b', 'b']
13529     */
13530    function pullAll(array, values) {
13531      return (array && array.length && values && values.length)
13532        ? basePullAll(array, values)
13533        : array;
13534    }
13535
13536    /**
13537     * This method is like `_.pullAll` except that it accepts `iteratee` which is
13538     * invoked for each element of `array` and `values` to generate the criterion
13539     * by which they're compared. The iteratee is invoked with one argument: (value).
13540     *
13541     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
13542     *
13543     * @static
13544     * @memberOf _
13545     * @since 4.0.0
13546     * @category Array
13547     * @param {Array} array The array to modify.
13548     * @param {Array} values The values to remove.
13549     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13550     * @returns {Array} Returns `array`.
13551     * @example
13552     *
13553     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
13554     *
13555     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
13556     * console.log(array);
13557     * // => [{ 'x': 2 }]
13558     */
13559    function pullAllBy(array, values, iteratee) {
13560      return (array && array.length && values && values.length)
13561        ? basePullAll(array, values, getIteratee(iteratee, 2))
13562        : array;
13563    }
13564
13565    /**
13566     * This method is like `_.pullAll` except that it accepts `comparator` which
13567     * is invoked to compare elements of `array` to `values`. The comparator is
13568     * invoked with two arguments: (arrVal, othVal).
13569     *
13570     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
13571     *
13572     * @static
13573     * @memberOf _
13574     * @since 4.6.0
13575     * @category Array
13576     * @param {Array} array The array to modify.
13577     * @param {Array} values The values to remove.
13578     * @param {Function} [comparator] The comparator invoked per element.
13579     * @returns {Array} Returns `array`.
13580     * @example
13581     *
13582     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
13583     *
13584     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
13585     * console.log(array);
13586     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
13587     */
13588    function pullAllWith(array, values, comparator) {
13589      return (array && array.length && values && values.length)
13590        ? basePullAll(array, values, undefined, comparator)
13591        : array;
13592    }
13593
13594    /**
13595     * Removes elements from `array` corresponding to `indexes` and returns an
13596     * array of removed elements.
13597     *
13598     * **Note:** Unlike `_.at`, this method mutates `array`.
13599     *
13600     * @static
13601     * @memberOf _
13602     * @since 3.0.0
13603     * @category Array
13604     * @param {Array} array The array to modify.
13605     * @param {...(number|number[])} [indexes] The indexes of elements to remove.
13606     * @returns {Array} Returns the new array of removed elements.
13607     * @example
13608     *
13609     * var array = ['a', 'b', 'c', 'd'];
13610     * var pulled = _.pullAt(array, [1, 3]);
13611     *
13612     * console.log(array);
13613     * // => ['a', 'c']
13614     *
13615     * console.log(pulled);
13616     * // => ['b', 'd']
13617     */
13618    var pullAt = flatRest(function(array, indexes) {
13619      var length = array == null ? 0 : array.length,
13620          result = baseAt(array, indexes);
13621
13622      basePullAt(array, arrayMap(indexes, function(index) {
13623        return isIndex(index, length) ? +index : index;
13624      }).sort(compareAscending));
13625
13626      return result;
13627    });
13628
13629    /**
13630     * Removes all elements from `array` that `predicate` returns truthy for
13631     * and returns an array of the removed elements. The predicate is invoked
13632     * with three arguments: (value, index, array).
13633     *
13634     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
13635     * to pull elements from an array by value.
13636     *
13637     * @static
13638     * @memberOf _
13639     * @since 2.0.0
13640     * @category Array
13641     * @param {Array} array The array to modify.
13642     * @param {Function} [predicate=_.identity] The function invoked per iteration.
13643     * @returns {Array} Returns the new array of removed elements.
13644     * @example
13645     *
13646     * var array = [1, 2, 3, 4];
13647     * var evens = _.remove(array, function(n) {
13648     *   return n % 2 == 0;
13649     * });
13650     *
13651     * console.log(array);
13652     * // => [1, 3]
13653     *
13654     * console.log(evens);
13655     * // => [2, 4]
13656     */
13657    function remove(array, predicate) {
13658      var result = [];
13659      if (!(array && array.length)) {
13660        return result;
13661      }
13662      var index = -1,
13663          indexes = [],
13664          length = array.length;
13665
13666      predicate = getIteratee(predicate, 3);
13667      while (++index < length) {
13668        var value = array[index];
13669        if (predicate(value, index, array)) {
13670          result.push(value);
13671          indexes.push(index);
13672        }
13673      }
13674      basePullAt(array, indexes);
13675      return result;
13676    }
13677
13678    /**
13679     * Reverses `array` so that the first element becomes the last, the second
13680     * element becomes the second to last, and so on.
13681     *
13682     * **Note:** This method mutates `array` and is based on
13683     * [`Array#reverse`](https://mdn.io/Array/reverse).
13684     *
13685     * @static
13686     * @memberOf _
13687     * @since 4.0.0
13688     * @category Array
13689     * @param {Array} array The array to modify.
13690     * @returns {Array} Returns `array`.
13691     * @example
13692     *
13693     * var array = [1, 2, 3];
13694     *
13695     * _.reverse(array);
13696     * // => [3, 2, 1]
13697     *
13698     * console.log(array);
13699     * // => [3, 2, 1]
13700     */
13701    function reverse(array) {
13702      return array == null ? array : nativeReverse.call(array);
13703    }
13704
13705    /**
13706     * Creates a slice of `array` from `start` up to, but not including, `end`.
13707     *
13708     * **Note:** This method is used instead of
13709     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
13710     * returned.
13711     *
13712     * @static
13713     * @memberOf _
13714     * @since 3.0.0
13715     * @category Array
13716     * @param {Array} array The array to slice.
13717     * @param {number} [start=0] The start position.
13718     * @param {number} [end=array.length] The end position.
13719     * @returns {Array} Returns the slice of `array`.
13720     */
13721    function slice(array, start, end) {
13722      var length = array == null ? 0 : array.length;
13723      if (!length) {
13724        return [];
13725      }
13726      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
13727        start = 0;
13728        end = length;
13729      }
13730      else {
13731        start = start == null ? 0 : toInteger(start);
13732        end = end === undefined ? length : toInteger(end);
13733      }
13734      return baseSlice(array, start, end);
13735    }
13736
13737    /**
13738     * Uses a binary search to determine the lowest index at which `value`
13739     * should be inserted into `array` in order to maintain its sort order.
13740     *
13741     * @static
13742     * @memberOf _
13743     * @since 0.1.0
13744     * @category Array
13745     * @param {Array} array The sorted array to inspect.
13746     * @param {*} value The value to evaluate.
13747     * @returns {number} Returns the index at which `value` should be inserted
13748     *  into `array`.
13749     * @example
13750     *
13751     * _.sortedIndex([30, 50], 40);
13752     * // => 1
13753     */
13754    function sortedIndex(array, value) {
13755      return baseSortedIndex(array, value);
13756    }
13757
13758    /**
13759     * This method is like `_.sortedIndex` except that it accepts `iteratee`
13760     * which is invoked for `value` and each element of `array` to compute their
13761     * sort ranking. The iteratee is invoked with one argument: (value).
13762     *
13763     * @static
13764     * @memberOf _
13765     * @since 4.0.0
13766     * @category Array
13767     * @param {Array} array The sorted array to inspect.
13768     * @param {*} value The value to evaluate.
13769     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13770     * @returns {number} Returns the index at which `value` should be inserted
13771     *  into `array`.
13772     * @example
13773     *
13774     * var objects = [{ 'x': 4 }, { 'x': 5 }];
13775     *
13776     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
13777     * // => 0
13778     *
13779     * // The `_.property` iteratee shorthand.
13780     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
13781     * // => 0
13782     */
13783    function sortedIndexBy(array, value, iteratee) {
13784      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
13785    }
13786
13787    /**
13788     * This method is like `_.indexOf` except that it performs a binary
13789     * search on a sorted `array`.
13790     *
13791     * @static
13792     * @memberOf _
13793     * @since 4.0.0
13794     * @category Array
13795     * @param {Array} array The array to inspect.
13796     * @param {*} value The value to search for.
13797     * @returns {number} Returns the index of the matched value, else `-1`.
13798     * @example
13799     *
13800     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
13801     * // => 1
13802     */
13803    function sortedIndexOf(array, value) {
13804      var length = array == null ? 0 : array.length;
13805      if (length) {
13806        var index = baseSortedIndex(array, value);
13807        if (index < length && eq(array[index], value)) {
13808          return index;
13809        }
13810      }
13811      return -1;
13812    }
13813
13814    /**
13815     * This method is like `_.sortedIndex` except that it returns the highest
13816     * index at which `value` should be inserted into `array` in order to
13817     * maintain its sort order.
13818     *
13819     * @static
13820     * @memberOf _
13821     * @since 3.0.0
13822     * @category Array
13823     * @param {Array} array The sorted array to inspect.
13824     * @param {*} value The value to evaluate.
13825     * @returns {number} Returns the index at which `value` should be inserted
13826     *  into `array`.
13827     * @example
13828     *
13829     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
13830     * // => 4
13831     */
13832    function sortedLastIndex(array, value) {
13833      return baseSortedIndex(array, value, true);
13834    }
13835
13836    /**
13837     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
13838     * which is invoked for `value` and each element of `array` to compute their
13839     * sort ranking. The iteratee is invoked with one argument: (value).
13840     *
13841     * @static
13842     * @memberOf _
13843     * @since 4.0.0
13844     * @category Array
13845     * @param {Array} array The sorted array to inspect.
13846     * @param {*} value The value to evaluate.
13847     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13848     * @returns {number} Returns the index at which `value` should be inserted
13849     *  into `array`.
13850     * @example
13851     *
13852     * var objects = [{ 'x': 4 }, { 'x': 5 }];
13853     *
13854     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
13855     * // => 1
13856     *
13857     * // The `_.property` iteratee shorthand.
13858     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
13859     * // => 1
13860     */
13861    function sortedLastIndexBy(array, value, iteratee) {
13862      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
13863    }
13864
13865    /**
13866     * This method is like `_.lastIndexOf` except that it performs a binary
13867     * search on a sorted `array`.
13868     *
13869     * @static
13870     * @memberOf _
13871     * @since 4.0.0
13872     * @category Array
13873     * @param {Array} array The array to inspect.
13874     * @param {*} value The value to search for.
13875     * @returns {number} Returns the index of the matched value, else `-1`.
13876     * @example
13877     *
13878     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
13879     * // => 3
13880     */
13881    function sortedLastIndexOf(array, value) {
13882      var length = array == null ? 0 : array.length;
13883      if (length) {
13884        var index = baseSortedIndex(array, value, true) - 1;
13885        if (eq(array[index], value)) {
13886          return index;
13887        }
13888      }
13889      return -1;
13890    }
13891
13892    /**
13893     * This method is like `_.uniq` except that it's designed and optimized
13894     * for sorted arrays.
13895     *
13896     * @static
13897     * @memberOf _
13898     * @since 4.0.0
13899     * @category Array
13900     * @param {Array} array The array to inspect.
13901     * @returns {Array} Returns the new duplicate free array.
13902     * @example
13903     *
13904     * _.sortedUniq([1, 1, 2]);
13905     * // => [1, 2]
13906     */
13907    function sortedUniq(array) {
13908      return (array && array.length)
13909        ? baseSortedUniq(array)
13910        : [];
13911    }
13912
13913    /**
13914     * This method is like `_.uniqBy` except that it's designed and optimized
13915     * for sorted arrays.
13916     *
13917     * @static
13918     * @memberOf _
13919     * @since 4.0.0
13920     * @category Array
13921     * @param {Array} array The array to inspect.
13922     * @param {Function} [iteratee] The iteratee invoked per element.
13923     * @returns {Array} Returns the new duplicate free array.
13924     * @example
13925     *
13926     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
13927     * // => [1.1, 2.3]
13928     */
13929    function sortedUniqBy(array, iteratee) {
13930      return (array && array.length)
13931        ? baseSortedUniq(array, getIteratee(iteratee, 2))
13932        : [];
13933    }
13934
13935    /**
13936     * Gets all but the first element of `array`.
13937     *
13938     * @static
13939     * @memberOf _
13940     * @since 4.0.0
13941     * @category Array
13942     * @param {Array} array The array to query.
13943     * @returns {Array} Returns the slice of `array`.
13944     * @example
13945     *
13946     * _.tail([1, 2, 3]);
13947     * // => [2, 3]
13948     */
13949    function tail(array) {
13950      var length = array == null ? 0 : array.length;
13951      return length ? baseSlice(array, 1, length) : [];
13952    }
13953
13954    /**
13955     * Creates a slice of `array` with `n` elements taken from the beginning.
13956     *
13957     * @static
13958     * @memberOf _
13959     * @since 0.1.0
13960     * @category Array
13961     * @param {Array} array The array to query.
13962     * @param {number} [n=1] The number of elements to take.
13963     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
13964     * @returns {Array} Returns the slice of `array`.
13965     * @example
13966     *
13967     * _.take([1, 2, 3]);
13968     * // => [1]
13969     *
13970     * _.take([1, 2, 3], 2);
13971     * // => [1, 2]
13972     *
13973     * _.take([1, 2, 3], 5);
13974     * // => [1, 2, 3]
13975     *
13976     * _.take([1, 2, 3], 0);
13977     * // => []
13978     */
13979    function take(array, n, guard) {
13980      if (!(array && array.length)) {
13981        return [];
13982      }
13983      n = (guard || n === undefined) ? 1 : toInteger(n);
13984      return baseSlice(array, 0, n < 0 ? 0 : n);
13985    }
13986
13987    /**
13988     * Creates a slice of `array` with `n` elements taken from the end.
13989     *
13990     * @static
13991     * @memberOf _
13992     * @since 3.0.0
13993     * @category Array
13994     * @param {Array} array The array to query.
13995     * @param {number} [n=1] The number of elements to take.
13996     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
13997     * @returns {Array} Returns the slice of `array`.
13998     * @example
13999     *
14000     * _.takeRight([1, 2, 3]);
14001     * // => [3]
14002     *
14003     * _.takeRight([1, 2, 3], 2);
14004     * // => [2, 3]
14005     *
14006     * _.takeRight([1, 2, 3], 5);
14007     * // => [1, 2, 3]
14008     *
14009     * _.takeRight([1, 2, 3], 0);
14010     * // => []
14011     */
14012    function takeRight(array, n, guard) {
14013      var length = array == null ? 0 : array.length;
14014      if (!length) {
14015        return [];
14016      }
14017      n = (guard || n === undefined) ? 1 : toInteger(n);
14018      n = length - n;
14019      return baseSlice(array, n < 0 ? 0 : n, length);
14020    }
14021
14022    /**
14023     * Creates a slice of `array` with elements taken from the end. Elements are
14024     * taken until `predicate` returns falsey. The predicate is invoked with
14025     * three arguments: (value, index, array).
14026     *
14027     * @static
14028     * @memberOf _
14029     * @since 3.0.0
14030     * @category Array
14031     * @param {Array} array The array to query.
14032     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14033     * @returns {Array} Returns the slice of `array`.
14034     * @example
14035     *
14036     * var users = [
14037     *   { 'user': 'barney',  'active': true },
14038     *   { 'user': 'fred',    'active': false },
14039     *   { 'user': 'pebbles', 'active': false }
14040     * ];
14041     *
14042     * _.takeRightWhile(users, function(o) { return !o.active; });
14043     * // => objects for ['fred', 'pebbles']
14044     *
14045     * // The `_.matches` iteratee shorthand.
14046     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
14047     * // => objects for ['pebbles']
14048     *
14049     * // The `_.matchesProperty` iteratee shorthand.
14050     * _.takeRightWhile(users, ['active', false]);
14051     * // => objects for ['fred', 'pebbles']
14052     *
14053     * // The `_.property` iteratee shorthand.
14054     * _.takeRightWhile(users, 'active');
14055     * // => []
14056     */
14057    function takeRightWhile(array, predicate) {
14058      return (array && array.length)
14059        ? baseWhile(array, getIteratee(predicate, 3), false, true)
14060        : [];
14061    }
14062
14063    /**
14064     * Creates a slice of `array` with elements taken from the beginning. Elements
14065     * are taken until `predicate` returns falsey. The predicate is invoked with
14066     * three arguments: (value, index, array).
14067     *
14068     * @static
14069     * @memberOf _
14070     * @since 3.0.0
14071     * @category Array
14072     * @param {Array} array The array to query.
14073     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14074     * @returns {Array} Returns the slice of `array`.
14075     * @example
14076     *
14077     * var users = [
14078     *   { 'user': 'barney',  'active': false },
14079     *   { 'user': 'fred',    'active': false },
14080     *   { 'user': 'pebbles', 'active': true }
14081     * ];
14082     *
14083     * _.takeWhile(users, function(o) { return !o.active; });
14084     * // => objects for ['barney', 'fred']
14085     *
14086     * // The `_.matches` iteratee shorthand.
14087     * _.takeWhile(users, { 'user': 'barney', 'active': false });
14088     * // => objects for ['barney']
14089     *
14090     * // The `_.matchesProperty` iteratee shorthand.
14091     * _.takeWhile(users, ['active', false]);
14092     * // => objects for ['barney', 'fred']
14093     *
14094     * // The `_.property` iteratee shorthand.
14095     * _.takeWhile(users, 'active');
14096     * // => []
14097     */
14098    function takeWhile(array, predicate) {
14099      return (array && array.length)
14100        ? baseWhile(array, getIteratee(predicate, 3))
14101        : [];
14102    }
14103
14104    /**
14105     * Creates an array of unique values, in order, from all given arrays using
14106     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14107     * for equality comparisons.
14108     *
14109     * @static
14110     * @memberOf _
14111     * @since 0.1.0
14112     * @category Array
14113     * @param {...Array} [arrays] The arrays to inspect.
14114     * @returns {Array} Returns the new array of combined values.
14115     * @example
14116     *
14117     * _.union([2], [1, 2]);
14118     * // => [2, 1]
14119     */
14120    var union = baseRest(function(arrays) {
14121      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
14122    });
14123
14124    /**
14125     * This method is like `_.union` except that it accepts `iteratee` which is
14126     * invoked for each element of each `arrays` to generate the criterion by
14127     * which uniqueness is computed. Result values are chosen from the first
14128     * array in which the value occurs. The iteratee is invoked with one argument:
14129     * (value).
14130     *
14131     * @static
14132     * @memberOf _
14133     * @since 4.0.0
14134     * @category Array
14135     * @param {...Array} [arrays] The arrays to inspect.
14136     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
14137     * @returns {Array} Returns the new array of combined values.
14138     * @example
14139     *
14140     * _.unionBy([2.1], [1.2, 2.3], Math.floor);
14141     * // => [2.1, 1.2]
14142     *
14143     * // The `_.property` iteratee shorthand.
14144     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
14145     * // => [{ 'x': 1 }, { 'x': 2 }]
14146     */
14147    var unionBy = baseRest(function(arrays) {
14148      var iteratee = last(arrays);
14149      if (isArrayLikeObject(iteratee)) {
14150        iteratee = undefined;
14151      }
14152      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
14153    });
14154
14155    /**
14156     * This method is like `_.union` except that it accepts `comparator` which
14157     * is invoked to compare elements of `arrays`. Result values are chosen from
14158     * the first array in which the value occurs. The comparator is invoked
14159     * with two arguments: (arrVal, othVal).
14160     *
14161     * @static
14162     * @memberOf _
14163     * @since 4.0.0
14164     * @category Array
14165     * @param {...Array} [arrays] The arrays to inspect.
14166     * @param {Function} [comparator] The comparator invoked per element.
14167     * @returns {Array} Returns the new array of combined values.
14168     * @example
14169     *
14170     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
14171     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
14172     *
14173     * _.unionWith(objects, others, _.isEqual);
14174     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
14175     */
14176    var unionWith = baseRest(function(arrays) {
14177      var comparator = last(arrays);
14178      comparator = typeof comparator == 'function' ? comparator : undefined;
14179      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
14180    });
14181
14182    /**
14183     * Creates a duplicate-free version of an array, using
14184     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14185     * for equality comparisons, in which only the first occurrence of each element
14186     * is kept. The order of result values is determined by the order they occur
14187     * in the array.
14188     *
14189     * @static
14190     * @memberOf _
14191     * @since 0.1.0
14192     * @category Array
14193     * @param {Array} array The array to inspect.
14194     * @returns {Array} Returns the new duplicate free array.
14195     * @example
14196     *
14197     * _.uniq([2, 1, 2]);
14198     * // => [2, 1]
14199     */
14200    function uniq(array) {
14201      return (array && array.length) ? baseUniq(array) : [];
14202    }
14203
14204    /**
14205     * This method is like `_.uniq` except that it accepts `iteratee` which is
14206     * invoked for each element in `array` to generate the criterion by which
14207     * uniqueness is computed. The order of result values is determined by the
14208     * order they occur in the array. The iteratee is invoked with one argument:
14209     * (value).
14210     *
14211     * @static
14212     * @memberOf _
14213     * @since 4.0.0
14214     * @category Array
14215     * @param {Array} array The array to inspect.
14216     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
14217     * @returns {Array} Returns the new duplicate free array.
14218     * @example
14219     *
14220     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
14221     * // => [2.1, 1.2]
14222     *
14223     * // The `_.property` iteratee shorthand.
14224     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
14225     * // => [{ 'x': 1 }, { 'x': 2 }]
14226     */
14227    function uniqBy(array, iteratee) {
14228      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
14229    }
14230
14231    /**
14232     * This method is like `_.uniq` except that it accepts `comparator` which
14233     * is invoked to compare elements of `array`. The order of result values is
14234     * determined by the order they occur in the array.The comparator is invoked
14235     * with two arguments: (arrVal, othVal).
14236     *
14237     * @static
14238     * @memberOf _
14239     * @since 4.0.0
14240     * @category Array
14241     * @param {Array} array The array to inspect.
14242     * @param {Function} [comparator] The comparator invoked per element.
14243     * @returns {Array} Returns the new duplicate free array.
14244     * @example
14245     *
14246     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
14247     *
14248     * _.uniqWith(objects, _.isEqual);
14249     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
14250     */
14251    function uniqWith(array, comparator) {
14252      comparator = typeof comparator == 'function' ? comparator : undefined;
14253      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
14254    }
14255
14256    /**
14257     * This method is like `_.zip` except that it accepts an array of grouped
14258     * elements and creates an array regrouping the elements to their pre-zip
14259     * configuration.
14260     *
14261     * @static
14262     * @memberOf _
14263     * @since 1.2.0
14264     * @category Array
14265     * @param {Array} array The array of grouped elements to process.
14266     * @returns {Array} Returns the new array of regrouped elements.
14267     * @example
14268     *
14269     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
14270     * // => [['a', 1, true], ['b', 2, false]]
14271     *
14272     * _.unzip(zipped);
14273     * // => [['a', 'b'], [1, 2], [true, false]]
14274     */
14275    function unzip(array) {
14276      if (!(array && array.length)) {
14277        return [];
14278      }
14279      var length = 0;
14280      array = arrayFilter(array, function(group) {
14281        if (isArrayLikeObject(group)) {
14282          length = nativeMax(group.length, length);
14283          return true;
14284        }
14285      });
14286      return baseTimes(length, function(index) {
14287        return arrayMap(array, baseProperty(index));
14288      });
14289    }
14290
14291    /**
14292     * This method is like `_.unzip` except that it accepts `iteratee` to specify
14293     * how regrouped values should be combined. The iteratee is invoked with the
14294     * elements of each group: (...group).
14295     *
14296     * @static
14297     * @memberOf _
14298     * @since 3.8.0
14299     * @category Array
14300     * @param {Array} array The array of grouped elements to process.
14301     * @param {Function} [iteratee=_.identity] The function to combine
14302     *  regrouped values.
14303     * @returns {Array} Returns the new array of regrouped elements.
14304     * @example
14305     *
14306     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
14307     * // => [[1, 10, 100], [2, 20, 200]]
14308     *
14309     * _.unzipWith(zipped, _.add);
14310     * // => [3, 30, 300]
14311     */
14312    function unzipWith(array, iteratee) {
14313      if (!(array && array.length)) {
14314        return [];
14315      }
14316      var result = unzip(array);
14317      if (iteratee == null) {
14318        return result;
14319      }
14320      return arrayMap(result, function(group) {
14321        return apply(iteratee, undefined, group);
14322      });
14323    }
14324
14325    /**
14326     * Creates an array excluding all given values using
14327     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14328     * for equality comparisons.
14329     *
14330     * **Note:** Unlike `_.pull`, this method returns a new array.
14331     *
14332     * @static
14333     * @memberOf _
14334     * @since 0.1.0
14335     * @category Array
14336     * @param {Array} array The array to inspect.
14337     * @param {...*} [values] The values to exclude.
14338     * @returns {Array} Returns the new array of filtered values.
14339     * @see _.difference, _.xor
14340     * @example
14341     *
14342     * _.without([2, 1, 2, 3], 1, 2);
14343     * // => [3]
14344     */
14345    var without = baseRest(function(array, values) {
14346      return isArrayLikeObject(array)
14347        ? baseDifference(array, values)
14348        : [];
14349    });
14350
14351    /**
14352     * Creates an array of unique values that is the
14353     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
14354     * of the given arrays. The order of result values is determined by the order
14355     * they occur in the arrays.
14356     *
14357     * @static
14358     * @memberOf _
14359     * @since 2.4.0
14360     * @category Array
14361     * @param {...Array} [arrays] The arrays to inspect.
14362     * @returns {Array} Returns the new array of filtered values.
14363     * @see _.difference, _.without
14364     * @example
14365     *
14366     * _.xor([2, 1], [2, 3]);
14367     * // => [1, 3]
14368     */
14369    var xor = baseRest(function(arrays) {
14370      return baseXor(arrayFilter(arrays, isArrayLikeObject));
14371    });
14372
14373    /**
14374     * This method is like `_.xor` except that it accepts `iteratee` which is
14375     * invoked for each element of each `arrays` to generate the criterion by
14376     * which by which they're compared. The order of result values is determined
14377     * by the order they occur in the arrays. The iteratee is invoked with one
14378     * argument: (value).
14379     *
14380     * @static
14381     * @memberOf _
14382     * @since 4.0.0
14383     * @category Array
14384     * @param {...Array} [arrays] The arrays to inspect.
14385     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
14386     * @returns {Array} Returns the new array of filtered values.
14387     * @example
14388     *
14389     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
14390     * // => [1.2, 3.4]
14391     *
14392     * // The `_.property` iteratee shorthand.
14393     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
14394     * // => [{ 'x': 2 }]
14395     */
14396    var xorBy = baseRest(function(arrays) {
14397      var iteratee = last(arrays);
14398      if (isArrayLikeObject(iteratee)) {
14399        iteratee = undefined;
14400      }
14401      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
14402    });
14403
14404    /**
14405     * This method is like `_.xor` except that it accepts `comparator` which is
14406     * invoked to compare elements of `arrays`. The order of result values is
14407     * determined by the order they occur in the arrays. The comparator is invoked
14408     * with two arguments: (arrVal, othVal).
14409     *
14410     * @static
14411     * @memberOf _
14412     * @since 4.0.0
14413     * @category Array
14414     * @param {...Array} [arrays] The arrays to inspect.
14415     * @param {Function} [comparator] The comparator invoked per element.
14416     * @returns {Array} Returns the new array of filtered values.
14417     * @example
14418     *
14419     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
14420     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
14421     *
14422     * _.xorWith(objects, others, _.isEqual);
14423     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
14424     */
14425    var xorWith = baseRest(function(arrays) {
14426      var comparator = last(arrays);
14427      comparator = typeof comparator == 'function' ? comparator : undefined;
14428      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
14429    });
14430
14431    /**
14432     * Creates an array of grouped elements, the first of which contains the
14433     * first elements of the given arrays, the second of which contains the
14434     * second elements of the given arrays, and so on.
14435     *
14436     * @static
14437     * @memberOf _
14438     * @since 0.1.0
14439     * @category Array
14440     * @param {...Array} [arrays] The arrays to process.
14441     * @returns {Array} Returns the new array of grouped elements.
14442     * @example
14443     *
14444     * _.zip(['a', 'b'], [1, 2], [true, false]);
14445     * // => [['a', 1, true], ['b', 2, false]]
14446     */
14447    var zip = baseRest(unzip);
14448
14449    /**
14450     * This method is like `_.fromPairs` except that it accepts two arrays,
14451     * one of property identifiers and one of corresponding values.
14452     *
14453     * @static
14454     * @memberOf _
14455     * @since 0.4.0
14456     * @category Array
14457     * @param {Array} [props=[]] The property identifiers.
14458     * @param {Array} [values=[]] The property values.
14459     * @returns {Object} Returns the new object.
14460     * @example
14461     *
14462     * _.zipObject(['a', 'b'], [1, 2]);
14463     * // => { 'a': 1, 'b': 2 }
14464     */
14465    function zipObject(props, values) {
14466      return baseZipObject(props || [], values || [], assignValue);
14467    }
14468
14469    /**
14470     * This method is like `_.zipObject` except that it supports property paths.
14471     *
14472     * @static
14473     * @memberOf _
14474     * @since 4.1.0
14475     * @category Array
14476     * @param {Array} [props=[]] The property identifiers.
14477     * @param {Array} [values=[]] The property values.
14478     * @returns {Object} Returns the new object.
14479     * @example
14480     *
14481     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
14482     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
14483     */
14484    function zipObjectDeep(props, values) {
14485      return baseZipObject(props || [], values || [], baseSet);
14486    }
14487
14488    /**
14489     * This method is like `_.zip` except that it accepts `iteratee` to specify
14490     * how grouped values should be combined. The iteratee is invoked with the
14491     * elements of each group: (...group).
14492     *
14493     * @static
14494     * @memberOf _
14495     * @since 3.8.0
14496     * @category Array
14497     * @param {...Array} [arrays] The arrays to process.
14498     * @param {Function} [iteratee=_.identity] The function to combine
14499     *  grouped values.
14500     * @returns {Array} Returns the new array of grouped elements.
14501     * @example
14502     *
14503     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
14504     *   return a + b + c;
14505     * });
14506     * // => [111, 222]
14507     */
14508    var zipWith = baseRest(function(arrays) {
14509      var length = arrays.length,
14510          iteratee = length > 1 ? arrays[length - 1] : undefined;
14511
14512      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
14513      return unzipWith(arrays, iteratee);
14514    });
14515
14516    /*------------------------------------------------------------------------*/
14517
14518    /**
14519     * Creates a `lodash` wrapper instance that wraps `value` with explicit method
14520     * chain sequences enabled. The result of such sequences must be unwrapped
14521     * with `_#value`.
14522     *
14523     * @static
14524     * @memberOf _
14525     * @since 1.3.0
14526     * @category Seq
14527     * @param {*} value The value to wrap.
14528     * @returns {Object} Returns the new `lodash` wrapper instance.
14529     * @example
14530     *
14531     * var users = [
14532     *   { 'user': 'barney',  'age': 36 },
14533     *   { 'user': 'fred',    'age': 40 },
14534     *   { 'user': 'pebbles', 'age': 1 }
14535     * ];
14536     *
14537     * var youngest = _
14538     *   .chain(users)
14539     *   .sortBy('age')
14540     *   .map(function(o) {
14541     *     return o.user + ' is ' + o.age;
14542     *   })
14543     *   .head()
14544     *   .value();
14545     * // => 'pebbles is 1'
14546     */
14547    function chain(value) {
14548      var result = lodash(value);
14549      result.__chain__ = true;
14550      return result;
14551    }
14552
14553    /**
14554     * This method invokes `interceptor` and returns `value`. The interceptor
14555     * is invoked with one argument; (value). The purpose of this method is to
14556     * "tap into" a method chain sequence in order to modify intermediate results.
14557     *
14558     * @static
14559     * @memberOf _
14560     * @since 0.1.0
14561     * @category Seq
14562     * @param {*} value The value to provide to `interceptor`.
14563     * @param {Function} interceptor The function to invoke.
14564     * @returns {*} Returns `value`.
14565     * @example
14566     *
14567     * _([1, 2, 3])
14568     *  .tap(function(array) {
14569     *    // Mutate input array.
14570     *    array.pop();
14571     *  })
14572     *  .reverse()
14573     *  .value();
14574     * // => [2, 1]
14575     */
14576    function tap(value, interceptor) {
14577      interceptor(value);
14578      return value;
14579    }
14580
14581    /**
14582     * This method is like `_.tap` except that it returns the result of `interceptor`.
14583     * The purpose of this method is to "pass thru" values replacing intermediate
14584     * results in a method chain sequence.
14585     *
14586     * @static
14587     * @memberOf _
14588     * @since 3.0.0
14589     * @category Seq
14590     * @param {*} value The value to provide to `interceptor`.
14591     * @param {Function} interceptor The function to invoke.
14592     * @returns {*} Returns the result of `interceptor`.
14593     * @example
14594     *
14595     * _('  abc  ')
14596     *  .chain()
14597     *  .trim()
14598     *  .thru(function(value) {
14599     *    return [value];
14600     *  })
14601     *  .value();
14602     * // => ['abc']
14603     */
14604    function thru(value, interceptor) {
14605      return interceptor(value);
14606    }
14607
14608    /**
14609     * This method is the wrapper version of `_.at`.
14610     *
14611     * @name at
14612     * @memberOf _
14613     * @since 1.0.0
14614     * @category Seq
14615     * @param {...(string|string[])} [paths] The property paths to pick.
14616     * @returns {Object} Returns the new `lodash` wrapper instance.
14617     * @example
14618     *
14619     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
14620     *
14621     * _(object).at(['a[0].b.c', 'a[1]']).value();
14622     * // => [3, 4]
14623     */
14624    var wrapperAt = flatRest(function(paths) {
14625      var length = paths.length,
14626          start = length ? paths[0] : 0,
14627          value = this.__wrapped__,
14628          interceptor = function(object) { return baseAt(object, paths); };
14629
14630      if (length > 1 || this.__actions__.length ||
14631          !(value instanceof LazyWrapper) || !isIndex(start)) {
14632        return this.thru(interceptor);
14633      }
14634      value = value.slice(start, +start + (length ? 1 : 0));
14635      value.__actions__.push({
14636        'func': thru,
14637        'args': [interceptor],
14638        'thisArg': undefined
14639      });
14640      return new LodashWrapper(value, this.__chain__).thru(function(array) {
14641        if (length && !array.length) {
14642          array.push(undefined);
14643        }
14644        return array;
14645      });
14646    });
14647
14648    /**
14649     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
14650     *
14651     * @name chain
14652     * @memberOf _
14653     * @since 0.1.0
14654     * @category Seq
14655     * @returns {Object} Returns the new `lodash` wrapper instance.
14656     * @example
14657     *
14658     * var users = [
14659     *   { 'user': 'barney', 'age': 36 },
14660     *   { 'user': 'fred',   'age': 40 }
14661     * ];
14662     *
14663     * // A sequence without explicit chaining.
14664     * _(users).head();
14665     * // => { 'user': 'barney', 'age': 36 }
14666     *
14667     * // A sequence with explicit chaining.
14668     * _(users)
14669     *   .chain()
14670     *   .head()
14671     *   .pick('user')
14672     *   .value();
14673     * // => { 'user': 'barney' }
14674     */
14675    function wrapperChain() {
14676      return chain(this);
14677    }
14678
14679    /**
14680     * Executes the chain sequence and returns the wrapped result.
14681     *
14682     * @name commit
14683     * @memberOf _
14684     * @since 3.2.0
14685     * @category Seq
14686     * @returns {Object} Returns the new `lodash` wrapper instance.
14687     * @example
14688     *
14689     * var array = [1, 2];
14690     * var wrapped = _(array).push(3);
14691     *
14692     * console.log(array);
14693     * // => [1, 2]
14694     *
14695     * wrapped = wrapped.commit();
14696     * console.log(array);
14697     * // => [1, 2, 3]
14698     *
14699     * wrapped.last();
14700     * // => 3
14701     *
14702     * console.log(array);
14703     * // => [1, 2, 3]
14704     */
14705    function wrapperCommit() {
14706      return new LodashWrapper(this.value(), this.__chain__);
14707    }
14708
14709    /**
14710     * Gets the next value on a wrapped object following the
14711     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
14712     *
14713     * @name next
14714     * @memberOf _
14715     * @since 4.0.0
14716     * @category Seq
14717     * @returns {Object} Returns the next iterator value.
14718     * @example
14719     *
14720     * var wrapped = _([1, 2]);
14721     *
14722     * wrapped.next();
14723     * // => { 'done': false, 'value': 1 }
14724     *
14725     * wrapped.next();
14726     * // => { 'done': false, 'value': 2 }
14727     *
14728     * wrapped.next();
14729     * // => { 'done': true, 'value': undefined }
14730     */
14731    function wrapperNext() {
14732      if (this.__values__ === undefined) {
14733        this.__values__ = toArray(this.value());
14734      }
14735      var done = this.__index__ >= this.__values__.length,
14736          value = done ? undefined : this.__values__[this.__index__++];
14737
14738      return { 'done': done, 'value': value };
14739    }
14740
14741    /**
14742     * Enables the wrapper to be iterable.
14743     *
14744     * @name Symbol.iterator
14745     * @memberOf _
14746     * @since 4.0.0
14747     * @category Seq
14748     * @returns {Object} Returns the wrapper object.
14749     * @example
14750     *
14751     * var wrapped = _([1, 2]);
14752     *
14753     * wrapped[Symbol.iterator]() === wrapped;
14754     * // => true
14755     *
14756     * Array.from(wrapped);
14757     * // => [1, 2]
14758     */
14759    function wrapperToIterator() {
14760      return this;
14761    }
14762
14763    /**
14764     * Creates a clone of the chain sequence planting `value` as the wrapped value.
14765     *
14766     * @name plant
14767     * @memberOf _
14768     * @since 3.2.0
14769     * @category Seq
14770     * @param {*} value The value to plant.
14771     * @returns {Object} Returns the new `lodash` wrapper instance.
14772     * @example
14773     *
14774     * function square(n) {
14775     *   return n * n;
14776     * }
14777     *
14778     * var wrapped = _([1, 2]).map(square);
14779     * var other = wrapped.plant([3, 4]);
14780     *
14781     * other.value();
14782     * // => [9, 16]
14783     *
14784     * wrapped.value();
14785     * // => [1, 4]
14786     */
14787    function wrapperPlant(value) {
14788      var result,
14789          parent = this;
14790
14791      while (parent instanceof baseLodash) {
14792        var clone = wrapperClone(parent);
14793        clone.__index__ = 0;
14794        clone.__values__ = undefined;
14795        if (result) {
14796          previous.__wrapped__ = clone;
14797        } else {
14798          result = clone;
14799        }
14800        var previous = clone;
14801        parent = parent.__wrapped__;
14802      }
14803      previous.__wrapped__ = value;
14804      return result;
14805    }
14806
14807    /**
14808     * This method is the wrapper version of `_.reverse`.
14809     *
14810     * **Note:** This method mutates the wrapped array.
14811     *
14812     * @name reverse
14813     * @memberOf _
14814     * @since 0.1.0
14815     * @category Seq
14816     * @returns {Object} Returns the new `lodash` wrapper instance.
14817     * @example
14818     *
14819     * var array = [1, 2, 3];
14820     *
14821     * _(array).reverse().value()
14822     * // => [3, 2, 1]
14823     *
14824     * console.log(array);
14825     * // => [3, 2, 1]
14826     */
14827    function wrapperReverse() {
14828      var value = this.__wrapped__;
14829      if (value instanceof LazyWrapper) {
14830        var wrapped = value;
14831        if (this.__actions__.length) {
14832          wrapped = new LazyWrapper(this);
14833        }
14834        wrapped = wrapped.reverse();
14835        wrapped.__actions__.push({
14836          'func': thru,
14837          'args': [reverse],
14838          'thisArg': undefined
14839        });
14840        return new LodashWrapper(wrapped, this.__chain__);
14841      }
14842      return this.thru(reverse);
14843    }
14844
14845    /**
14846     * Executes the chain sequence to resolve the unwrapped value.
14847     *
14848     * @name value
14849     * @memberOf _
14850     * @since 0.1.0
14851     * @alias toJSON, valueOf
14852     * @category Seq
14853     * @returns {*} Returns the resolved unwrapped value.
14854     * @example
14855     *
14856     * _([1, 2, 3]).value();
14857     * // => [1, 2, 3]
14858     */
14859    function wrapperValue() {
14860      return baseWrapperValue(this.__wrapped__, this.__actions__);
14861    }
14862
14863    /*------------------------------------------------------------------------*/
14864
14865    /**
14866     * Creates an object composed of keys generated from the results of running
14867     * each element of `collection` thru `iteratee`. The corresponding value of
14868     * each key is the number of times the key was returned by `iteratee`. The
14869     * iteratee is invoked with one argument: (value).
14870     *
14871     * @static
14872     * @memberOf _
14873     * @since 0.5.0
14874     * @category Collection
14875     * @param {Array|Object} collection The collection to iterate over.
14876     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
14877     * @returns {Object} Returns the composed aggregate object.
14878     * @example
14879     *
14880     * _.countBy([6.1, 4.2, 6.3], Math.floor);
14881     * // => { '4': 1, '6': 2 }
14882     *
14883     * // The `_.property` iteratee shorthand.
14884     * _.countBy(['one', 'two', 'three'], 'length');
14885     * // => { '3': 2, '5': 1 }
14886     */
14887    var countBy = createAggregator(function(result, value, key) {
14888      if (hasOwnProperty.call(result, key)) {
14889        ++result[key];
14890      } else {
14891        baseAssignValue(result, key, 1);
14892      }
14893    });
14894
14895    /**
14896     * Checks if `predicate` returns truthy for **all** elements of `collection`.
14897     * Iteration is stopped once `predicate` returns falsey. The predicate is
14898     * invoked with three arguments: (value, index|key, collection).
14899     *
14900     * **Note:** This method returns `true` for
14901     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
14902     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
14903     * elements of empty collections.
14904     *
14905     * @static
14906     * @memberOf _
14907     * @since 0.1.0
14908     * @category Collection
14909     * @param {Array|Object} collection The collection to iterate over.
14910     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14911     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
14912     * @returns {boolean} Returns `true` if all elements pass the predicate check,
14913     *  else `false`.
14914     * @example
14915     *
14916     * _.every([true, 1, null, 'yes'], Boolean);
14917     * // => false
14918     *
14919     * var users = [
14920     *   { 'user': 'barney', 'age': 36, 'active': false },
14921     *   { 'user': 'fred',   'age': 40, 'active': false }
14922     * ];
14923     *
14924     * // The `_.matches` iteratee shorthand.
14925     * _.every(users, { 'user': 'barney', 'active': false });
14926     * // => false
14927     *
14928     * // The `_.matchesProperty` iteratee shorthand.
14929     * _.every(users, ['active', false]);
14930     * // => true
14931     *
14932     * // The `_.property` iteratee shorthand.
14933     * _.every(users, 'active');
14934     * // => false
14935     */
14936    function every(collection, predicate, guard) {
14937      var func = isArray(collection) ? arrayEvery : baseEvery;
14938      if (guard && isIterateeCall(collection, predicate, guard)) {
14939        predicate = undefined;
14940      }
14941      return func(collection, getIteratee(predicate, 3));
14942    }
14943
14944    /**
14945     * Iterates over elements of `collection`, returning an array of all elements
14946     * `predicate` returns truthy for. The predicate is invoked with three
14947     * arguments: (value, index|key, collection).
14948     *
14949     * **Note:** Unlike `_.remove`, this method returns a new array.
14950     *
14951     * @static
14952     * @memberOf _
14953     * @since 0.1.0
14954     * @category Collection
14955     * @param {Array|Object} collection The collection to iterate over.
14956     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14957     * @returns {Array} Returns the new filtered array.
14958     * @see _.reject
14959     * @example
14960     *
14961     * var users = [
14962     *   { 'user': 'barney', 'age': 36, 'active': true },
14963     *   { 'user': 'fred',   'age': 40, 'active': false }
14964     * ];
14965     *
14966     * _.filter(users, function(o) { return !o.active; });
14967     * // => objects for ['fred']
14968     *
14969     * // The `_.matches` iteratee shorthand.
14970     * _.filter(users, { 'age': 36, 'active': true });
14971     * // => objects for ['barney']
14972     *
14973     * // The `_.matchesProperty` iteratee shorthand.
14974     * _.filter(users, ['active', false]);
14975     * // => objects for ['fred']
14976     *
14977     * // The `_.property` iteratee shorthand.
14978     * _.filter(users, 'active');
14979     * // => objects for ['barney']
14980     *
14981     * // Combining several predicates using `_.overEvery` or `_.overSome`.
14982     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
14983     * // => objects for ['fred', 'barney']
14984     */
14985    function filter(collection, predicate) {
14986      var func = isArray(collection) ? arrayFilter : baseFilter;
14987      return func(collection, getIteratee(predicate, 3));
14988    }
14989
14990    /**
14991     * Iterates over elements of `collection`, returning the first element
14992     * `predicate` returns truthy for. The predicate is invoked with three
14993     * arguments: (value, index|key, collection).
14994     *
14995     * @static
14996     * @memberOf _
14997     * @since 0.1.0
14998     * @category Collection
14999     * @param {Array|Object} collection The collection to inspect.
15000     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15001     * @param {number} [fromIndex=0] The index to search from.
15002     * @returns {*} Returns the matched element, else `undefined`.
15003     * @example
15004     *
15005     * var users = [
15006     *   { 'user': 'barney',  'age': 36, 'active': true },
15007     *   { 'user': 'fred',    'age': 40, 'active': false },
15008     *   { 'user': 'pebbles', 'age': 1,  'active': true }
15009     * ];
15010     *
15011     * _.find(users, function(o) { return o.age < 40; });
15012     * // => object for 'barney'
15013     *
15014     * // The `_.matches` iteratee shorthand.
15015     * _.find(users, { 'age': 1, 'active': true });
15016     * // => object for 'pebbles'
15017     *
15018     * // The `_.matchesProperty` iteratee shorthand.
15019     * _.find(users, ['active', false]);
15020     * // => object for 'fred'
15021     *
15022     * // The `_.property` iteratee shorthand.
15023     * _.find(users, 'active');
15024     * // => object for 'barney'
15025     */
15026    var find = createFind(findIndex);
15027
15028    /**
15029     * This method is like `_.find` except that it iterates over elements of
15030     * `collection` from right to left.
15031     *
15032     * @static
15033     * @memberOf _
15034     * @since 2.0.0
15035     * @category Collection
15036     * @param {Array|Object} collection The collection to inspect.
15037     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15038     * @param {number} [fromIndex=collection.length-1] The index to search from.
15039     * @returns {*} Returns the matched element, else `undefined`.
15040     * @example
15041     *
15042     * _.findLast([1, 2, 3, 4], function(n) {
15043     *   return n % 2 == 1;
15044     * });
15045     * // => 3
15046     */
15047    var findLast = createFind(findLastIndex);
15048
15049    /**
15050     * Creates a flattened array of values by running each element in `collection`
15051     * thru `iteratee` and flattening the mapped results. The iteratee is invoked
15052     * with three arguments: (value, index|key, collection).
15053     *
15054     * @static
15055     * @memberOf _
15056     * @since 4.0.0
15057     * @category Collection
15058     * @param {Array|Object} collection The collection to iterate over.
15059     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15060     * @returns {Array} Returns the new flattened array.
15061     * @example
15062     *
15063     * function duplicate(n) {
15064     *   return [n, n];
15065     * }
15066     *
15067     * _.flatMap([1, 2], duplicate);
15068     * // => [1, 1, 2, 2]
15069     */
15070    function flatMap(collection, iteratee) {
15071      return baseFlatten(map(collection, iteratee), 1);
15072    }
15073
15074    /**
15075     * This method is like `_.flatMap` except that it recursively flattens the
15076     * mapped results.
15077     *
15078     * @static
15079     * @memberOf _
15080     * @since 4.7.0
15081     * @category Collection
15082     * @param {Array|Object} collection The collection to iterate over.
15083     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15084     * @returns {Array} Returns the new flattened array.
15085     * @example
15086     *
15087     * function duplicate(n) {
15088     *   return [[[n, n]]];
15089     * }
15090     *
15091     * _.flatMapDeep([1, 2], duplicate);
15092     * // => [1, 1, 2, 2]
15093     */
15094    function flatMapDeep(collection, iteratee) {
15095      return baseFlatten(map(collection, iteratee), INFINITY);
15096    }
15097
15098    /**
15099     * This method is like `_.flatMap` except that it recursively flattens the
15100     * mapped results up to `depth` times.
15101     *
15102     * @static
15103     * @memberOf _
15104     * @since 4.7.0
15105     * @category Collection
15106     * @param {Array|Object} collection The collection to iterate over.
15107     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15108     * @param {number} [depth=1] The maximum recursion depth.
15109     * @returns {Array} Returns the new flattened array.
15110     * @example
15111     *
15112     * function duplicate(n) {
15113     *   return [[[n, n]]];
15114     * }
15115     *
15116     * _.flatMapDepth([1, 2], duplicate, 2);
15117     * // => [[1, 1], [2, 2]]
15118     */
15119    function flatMapDepth(collection, iteratee, depth) {
15120      depth = depth === undefined ? 1 : toInteger(depth);
15121      return baseFlatten(map(collection, iteratee), depth);
15122    }
15123
15124    /**
15125     * Iterates over elements of `collection` and invokes `iteratee` for each element.
15126     * The iteratee is invoked with three arguments: (value, index|key, collection).
15127     * Iteratee functions may exit iteration early by explicitly returning `false`.
15128     *
15129     * **Note:** As with other "Collections" methods, objects with a "length"
15130     * property are iterated like arrays. To avoid this behavior use `_.forIn`
15131     * or `_.forOwn` for object iteration.
15132     *
15133     * @static
15134     * @memberOf _
15135     * @since 0.1.0
15136     * @alias each
15137     * @category Collection
15138     * @param {Array|Object} collection The collection to iterate over.
15139     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15140     * @returns {Array|Object} Returns `collection`.
15141     * @see _.forEachRight
15142     * @example
15143     *
15144     * _.forEach([1, 2], function(value) {
15145     *   console.log(value);
15146     * });
15147     * // => Logs `1` then `2`.
15148     *
15149     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
15150     *   console.log(key);
15151     * });
15152     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
15153     */
15154    function forEach(collection, iteratee) {
15155      var func = isArray(collection) ? arrayEach : baseEach;
15156      return func(collection, getIteratee(iteratee, 3));
15157    }
15158
15159    /**
15160     * This method is like `_.forEach` except that it iterates over elements of
15161     * `collection` from right to left.
15162     *
15163     * @static
15164     * @memberOf _
15165     * @since 2.0.0
15166     * @alias eachRight
15167     * @category Collection
15168     * @param {Array|Object} collection The collection to iterate over.
15169     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15170     * @returns {Array|Object} Returns `collection`.
15171     * @see _.forEach
15172     * @example
15173     *
15174     * _.forEachRight([1, 2], function(value) {
15175     *   console.log(value);
15176     * });
15177     * // => Logs `2` then `1`.
15178     */
15179    function forEachRight(collection, iteratee) {
15180      var func = isArray(collection) ? arrayEachRight : baseEachRight;
15181      return func(collection, getIteratee(iteratee, 3));
15182    }
15183
15184    /**
vendor: 4,136 bytes, lines 15185-15292
15185     * Creates an object composed of keys generated from the results of running
15186     * each element of `collection` thru `iteratee`. The order of grouped values
15187     * is determined by the order they occur in `collection`. The corresponding
15188     * value of each key is an array of elements responsible for generating the
15189     * key. The iteratee is invoked with one argument: (value).
15190     *
15191     * @static
15192     * @memberOf _
15193     * @since 0.1.0
15194     * @category Collection
15195     * @param {Array|Object} collection The collection to iterate over.
15196     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
15197     * @returns {Object} Returns the composed aggregate object.
15198     * @example
15199     *
15200     * _.groupBy([6.1, 4.2, 6.3], Math.floor);
15201     * // => { '4': [4.2], '6': [6.1, 6.3] }
15202     *
15203     * // The `_.property` iteratee shorthand.
15204     * _.groupBy(['one', 'two', 'three'], 'length');
15205     * // => { '3': ['one', 'two'], '5': ['three'] }
15206     */
15207    var groupBy = createAggregator(function(result, value, key) {
15208      if (hasOwnProperty.call(result, key)) {
15209        result[key].push(value);
15210      } else {
15211        baseAssignValue(result, key, [value]);
15212      }
15213    });
15214
15215    /**
15216     * Checks if `value` is in `collection`. If `collection` is a string, it's
15217     * checked for a substring of `value`, otherwise
15218     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
15219     * is used for equality comparisons. If `fromIndex` is negative, it's used as
15220     * the offset from the end of `collection`.
15221     *
15222     * @static
15223     * @memberOf _
15224     * @since 0.1.0
15225     * @category Collection
15226     * @param {Array|Object|string} collection The collection to inspect.
15227     * @param {*} value The value to search for.
15228     * @param {number} [fromIndex=0] The index to search from.
15229     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
15230     * @returns {boolean} Returns `true` if `value` is found, else `false`.
15231     * @example
15232     *
15233     * _.includes([1, 2, 3], 1);
15234     * // => true
15235     *
15236     * _.includes([1, 2, 3], 1, 2);
15237     * // => false
15238     *
15239     * _.includes({ 'a': 1, 'b': 2 }, 1);
15240     * // => true
15241     *
15242     * _.includes('abcd', 'bc');
15243     * // => true
15244     */
15245    function includes(collection, value, fromIndex, guard) {
15246      collection = isArrayLike(collection) ? collection : values(collection);
15247      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
15248
15249      var length = collection.length;
15250      if (fromIndex < 0) {
15251        fromIndex = nativeMax(length + fromIndex, 0);
15252      }
15253      return isString(collection)
15254        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
15255        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
15256    }
15257
15258    /**
15259     * Invokes the method at `path` of each element in `collection`, returning
15260     * an array of the results of each invoked method. Any additional arguments
15261     * are provided to each invoked method. If `path` is a function, it's invoked
15262     * for, and `this` bound to, each element in `collection`.
15263     *
15264     * @static
15265     * @memberOf _
15266     * @since 4.0.0
15267     * @category Collection
15268     * @param {Array|Object} collection The collection to iterate over.
15269     * @param {Array|Function|string} path The path of the method to invoke or
15270     *  the function invoked per iteration.
15271     * @param {...*} [args] The arguments to invoke each method with.
15272     * @returns {Array} Returns the array of results.
15273     * @example
15274     *
15275     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
15276     * // => [[1, 5, 7], [1, 2, 3]]
15277     *
15278     * _.invokeMap([123, 456], String.prototype.split, '');
15279     * // => [['1', '2', '3'], ['4', '5', '6']]
15280     */
15281    var invokeMap = baseRest(function(collection, path, args) {
15282      var index = -1,
15283          isFunc = typeof path == 'function',
15284          result = isArrayLike(collection) ? Array(collection.length) : [];
15285
15286      baseEach(collection, function(value) {
15287        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
15288      });
15289      return result;
15290    });
15291
15292    /**
vendor: 68,500 bytes, lines 15293-17407
15293     * Creates an object composed of keys generated from the results of running
15294     * each element of `collection` thru `iteratee`. The corresponding value of
15295     * each key is the last element responsible for generating the key. The
15296     * iteratee is invoked with one argument: (value).
15297     *
15298     * @static
15299     * @memberOf _
15300     * @since 4.0.0
15301     * @category Collection
15302     * @param {Array|Object} collection The collection to iterate over.
15303     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
15304     * @returns {Object} Returns the composed aggregate object.
15305     * @example
15306     *
15307     * var array = [
15308     *   { 'dir': 'left', 'code': 97 },
15309     *   { 'dir': 'right', 'code': 100 }
15310     * ];
15311     *
15312     * _.keyBy(array, function(o) {
15313     *   return String.fromCharCode(o.code);
15314     * });
15315     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
15316     *
15317     * _.keyBy(array, 'dir');
15318     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
15319     */
15320    var keyBy = createAggregator(function(result, value, key) {
15321      baseAssignValue(result, key, value);
15322    });
15323
15324    /**
15325     * Creates an array of values by running each element in `collection` thru
15326     * `iteratee`. The iteratee is invoked with three arguments:
15327     * (value, index|key, collection).
15328     *
15329     * Many lodash methods are guarded to work as iteratees for methods like
15330     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
15331     *
15332     * The guarded methods are:
15333     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
15334     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
15335     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
15336     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
15337     *
15338     * @static
15339     * @memberOf _
15340     * @since 0.1.0
15341     * @category Collection
15342     * @param {Array|Object} collection The collection to iterate over.
15343     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15344     * @returns {Array} Returns the new mapped array.
15345     * @example
15346     *
15347     * function square(n) {
15348     *   return n * n;
15349     * }
15350     *
15351     * _.map([4, 8], square);
15352     * // => [16, 64]
15353     *
15354     * _.map({ 'a': 4, 'b': 8 }, square);
15355     * // => [16, 64] (iteration order is not guaranteed)
15356     *
15357     * var users = [
15358     *   { 'user': 'barney' },
15359     *   { 'user': 'fred' }
15360     * ];
15361     *
15362     * // The `_.property` iteratee shorthand.
15363     * _.map(users, 'user');
15364     * // => ['barney', 'fred']
15365     */
15366    function map(collection, iteratee) {
15367      var func = isArray(collection) ? arrayMap : baseMap;
15368      return func(collection, getIteratee(iteratee, 3));
15369    }
15370
15371    /**
15372     * This method is like `_.sortBy` except that it allows specifying the sort
15373     * orders of the iteratees to sort by. If `orders` is unspecified, all values
15374     * are sorted in ascending order. Otherwise, specify an order of "desc" for
15375     * descending or "asc" for ascending sort order of corresponding values.
15376     *
15377     * @static
15378     * @memberOf _
15379     * @since 4.0.0
15380     * @category Collection
15381     * @param {Array|Object} collection The collection to iterate over.
15382     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
15383     *  The iteratees to sort by.
15384     * @param {string[]} [orders] The sort orders of `iteratees`.
15385     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
15386     * @returns {Array} Returns the new sorted array.
15387     * @example
15388     *
15389     * var users = [
15390     *   { 'user': 'fred',   'age': 48 },
15391     *   { 'user': 'barney', 'age': 34 },
15392     *   { 'user': 'fred',   'age': 40 },
15393     *   { 'user': 'barney', 'age': 36 }
15394     * ];
15395     *
15396     * // Sort by `user` in ascending order and by `age` in descending order.
15397     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
15398     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
15399     */
15400    function orderBy(collection, iteratees, orders, guard) {
15401      if (collection == null) {
15402        return [];
15403      }
15404      if (!isArray(iteratees)) {
15405        iteratees = iteratees == null ? [] : [iteratees];
15406      }
15407      orders = guard ? undefined : orders;
15408      if (!isArray(orders)) {
15409        orders = orders == null ? [] : [orders];
15410      }
15411      return baseOrderBy(collection, iteratees, orders);
15412    }
15413
15414    /**
15415     * Creates an array of elements split into two groups, the first of which
15416     * contains elements `predicate` returns truthy for, the second of which
15417     * contains elements `predicate` returns falsey for. The predicate is
15418     * invoked with one argument: (value).
15419     *
15420     * @static
15421     * @memberOf _
15422     * @since 3.0.0
15423     * @category Collection
15424     * @param {Array|Object} collection The collection to iterate over.
15425     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15426     * @returns {Array} Returns the array of grouped elements.
15427     * @example
15428     *
15429     * var users = [
15430     *   { 'user': 'barney',  'age': 36, 'active': false },
15431     *   { 'user': 'fred',    'age': 40, 'active': true },
15432     *   { 'user': 'pebbles', 'age': 1,  'active': false }
15433     * ];
15434     *
15435     * _.partition(users, function(o) { return o.active; });
15436     * // => objects for [['fred'], ['barney', 'pebbles']]
15437     *
15438     * // The `_.matches` iteratee shorthand.
15439     * _.partition(users, { 'age': 1, 'active': false });
15440     * // => objects for [['pebbles'], ['barney', 'fred']]
15441     *
15442     * // The `_.matchesProperty` iteratee shorthand.
15443     * _.partition(users, ['active', false]);
15444     * // => objects for [['barney', 'pebbles'], ['fred']]
15445     *
15446     * // The `_.property` iteratee shorthand.
15447     * _.partition(users, 'active');
15448     * // => objects for [['fred'], ['barney', 'pebbles']]
15449     */
15450    var partition = createAggregator(function(result, value, key) {
15451      result[key ? 0 : 1].push(value);
15452    }, function() { return [[], []]; });
15453
15454    /**
15455     * Reduces `collection` to a value which is the accumulated result of running
15456     * each element in `collection` thru `iteratee`, where each successive
15457     * invocation is supplied the return value of the previous. If `accumulator`
15458     * is not given, the first element of `collection` is used as the initial
15459     * value. The iteratee is invoked with four arguments:
15460     * (accumulator, value, index|key, collection).
15461     *
15462     * Many lodash methods are guarded to work as iteratees for methods like
15463     * `_.reduce`, `_.reduceRight`, and `_.transform`.
15464     *
15465     * The guarded methods are:
15466     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
15467     * and `sortBy`
15468     *
15469     * @static
15470     * @memberOf _
15471     * @since 0.1.0
15472     * @category Collection
15473     * @param {Array|Object} collection The collection to iterate over.
15474     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15475     * @param {*} [accumulator] The initial value.
15476     * @returns {*} Returns the accumulated value.
15477     * @see _.reduceRight
15478     * @example
15479     *
15480     * _.reduce([1, 2], function(sum, n) {
15481     *   return sum + n;
15482     * }, 0);
15483     * // => 3
15484     *
15485     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
15486     *   (result[value] || (result[value] = [])).push(key);
15487     *   return result;
15488     * }, {});
15489     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
15490     */
15491    function reduce(collection, iteratee, accumulator) {
15492      var func = isArray(collection) ? arrayReduce : baseReduce,
15493          initAccum = arguments.length < 3;
15494
15495      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
15496    }
15497
15498    /**
15499     * This method is like `_.reduce` except that it iterates over elements of
15500     * `collection` from right to left.
15501     *
15502     * @static
15503     * @memberOf _
15504     * @since 0.1.0
15505     * @category Collection
15506     * @param {Array|Object} collection The collection to iterate over.
15507     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15508     * @param {*} [accumulator] The initial value.
15509     * @returns {*} Returns the accumulated value.
15510     * @see _.reduce
15511     * @example
15512     *
15513     * var array = [[0, 1], [2, 3], [4, 5]];
15514     *
15515     * _.reduceRight(array, function(flattened, other) {
15516     *   return flattened.concat(other);
15517     * }, []);
15518     * // => [4, 5, 2, 3, 0, 1]
15519     */
15520    function reduceRight(collection, iteratee, accumulator) {
15521      var func = isArray(collection) ? arrayReduceRight : baseReduce,
15522          initAccum = arguments.length < 3;
15523
15524      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
15525    }
15526
15527    /**
15528     * The opposite of `_.filter`; this method returns the elements of `collection`
15529     * that `predicate` does **not** return truthy for.
15530     *
15531     * @static
15532     * @memberOf _
15533     * @since 0.1.0
15534     * @category Collection
15535     * @param {Array|Object} collection The collection to iterate over.
15536     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15537     * @returns {Array} Returns the new filtered array.
15538     * @see _.filter
15539     * @example
15540     *
15541     * var users = [
15542     *   { 'user': 'barney', 'age': 36, 'active': false },
15543     *   { 'user': 'fred',   'age': 40, 'active': true }
15544     * ];
15545     *
15546     * _.reject(users, function(o) { return !o.active; });
15547     * // => objects for ['fred']
15548     *
15549     * // The `_.matches` iteratee shorthand.
15550     * _.reject(users, { 'age': 40, 'active': true });
15551     * // => objects for ['barney']
15552     *
15553     * // The `_.matchesProperty` iteratee shorthand.
15554     * _.reject(users, ['active', false]);
15555     * // => objects for ['fred']
15556     *
15557     * // The `_.property` iteratee shorthand.
15558     * _.reject(users, 'active');
15559     * // => objects for ['barney']
15560     */
15561    function reject(collection, predicate) {
15562      var func = isArray(collection) ? arrayFilter : baseFilter;
15563      return func(collection, negate(getIteratee(predicate, 3)));
15564    }
15565
15566    /**
15567     * Gets a random element from `collection`.
15568     *
15569     * @static
15570     * @memberOf _
15571     * @since 2.0.0
15572     * @category Collection
15573     * @param {Array|Object} collection The collection to sample.
15574     * @returns {*} Returns the random element.
15575     * @example
15576     *
15577     * _.sample([1, 2, 3, 4]);
15578     * // => 2
15579     */
15580    function sample(collection) {
15581      var func = isArray(collection) ? arraySample : baseSample;
15582      return func(collection);
15583    }
15584
15585    /**
15586     * Gets `n` random elements at unique keys from `collection` up to the
15587     * size of `collection`.
15588     *
15589     * @static
15590     * @memberOf _
15591     * @since 4.0.0
15592     * @category Collection
15593     * @param {Array|Object} collection The collection to sample.
15594     * @param {number} [n=1] The number of elements to sample.
15595     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15596     * @returns {Array} Returns the random elements.
15597     * @example
15598     *
15599     * _.sampleSize([1, 2, 3], 2);
15600     * // => [3, 1]
15601     *
15602     * _.sampleSize([1, 2, 3], 4);
15603     * // => [2, 3, 1]
15604     */
15605    function sampleSize(collection, n, guard) {
15606      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
15607        n = 1;
15608      } else {
15609        n = toInteger(n);
15610      }
15611      var func = isArray(collection) ? arraySampleSize : baseSampleSize;
15612      return func(collection, n);
15613    }
15614
15615    /**
15616     * Creates an array of shuffled values, using a version of the
15617     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
15618     *
15619     * @static
15620     * @memberOf _
15621     * @since 0.1.0
15622     * @category Collection
15623     * @param {Array|Object} collection The collection to shuffle.
15624     * @returns {Array} Returns the new shuffled array.
15625     * @example
15626     *
15627     * _.shuffle([1, 2, 3, 4]);
15628     * // => [4, 1, 3, 2]
15629     */
15630    function shuffle(collection) {
15631      var func = isArray(collection) ? arrayShuffle : baseShuffle;
15632      return func(collection);
15633    }
15634
15635    /**
15636     * Gets the size of `collection` by returning its length for array-like
15637     * values or the number of own enumerable string keyed properties for objects.
15638     *
15639     * @static
15640     * @memberOf _
15641     * @since 0.1.0
15642     * @category Collection
15643     * @param {Array|Object|string} collection The collection to inspect.
15644     * @returns {number} Returns the collection size.
15645     * @example
15646     *
15647     * _.size([1, 2, 3]);
15648     * // => 3
15649     *
15650     * _.size({ 'a': 1, 'b': 2 });
15651     * // => 2
15652     *
15653     * _.size('pebbles');
15654     * // => 7
15655     */
15656    function size(collection) {
15657      if (collection == null) {
15658        return 0;
15659      }
15660      if (isArrayLike(collection)) {
15661        return isString(collection) ? stringSize(collection) : collection.length;
15662      }
15663      var tag = getTag(collection);
15664      if (tag == mapTag || tag == setTag) {
15665        return collection.size;
15666      }
15667      return baseKeys(collection).length;
15668    }
15669
15670    /**
15671     * Checks if `predicate` returns truthy for **any** element of `collection`.
15672     * Iteration is stopped once `predicate` returns truthy. The predicate is
15673     * invoked with three arguments: (value, index|key, collection).
15674     *
15675     * @static
15676     * @memberOf _
15677     * @since 0.1.0
15678     * @category Collection
15679     * @param {Array|Object} collection The collection to iterate over.
15680     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15681     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15682     * @returns {boolean} Returns `true` if any element passes the predicate check,
15683     *  else `false`.
15684     * @example
15685     *
15686     * _.some([null, 0, 'yes', false], Boolean);
15687     * // => true
15688     *
15689     * var users = [
15690     *   { 'user': 'barney', 'active': true },
15691     *   { 'user': 'fred',   'active': false }
15692     * ];
15693     *
15694     * // The `_.matches` iteratee shorthand.
15695     * _.some(users, { 'user': 'barney', 'active': false });
15696     * // => false
15697     *
15698     * // The `_.matchesProperty` iteratee shorthand.
15699     * _.some(users, ['active', false]);
15700     * // => true
15701     *
15702     * // The `_.property` iteratee shorthand.
15703     * _.some(users, 'active');
15704     * // => true
15705     */
15706    function some(collection, predicate, guard) {
15707      var func = isArray(collection) ? arraySome : baseSome;
15708      if (guard && isIterateeCall(collection, predicate, guard)) {
15709        predicate = undefined;
15710      }
15711      return func(collection, getIteratee(predicate, 3));
15712    }
15713
15714    /**
15715     * Creates an array of elements, sorted in ascending order by the results of
15716     * running each element in a collection thru each iteratee. This method
15717     * performs a stable sort, that is, it preserves the original sort order of
15718     * equal elements. The iteratees are invoked with one argument: (value).
15719     *
15720     * @static
15721     * @memberOf _
15722     * @since 0.1.0
15723     * @category Collection
15724     * @param {Array|Object} collection The collection to iterate over.
15725     * @param {...(Function|Function[])} [iteratees=[_.identity]]
15726     *  The iteratees to sort by.
15727     * @returns {Array} Returns the new sorted array.
15728     * @example
15729     *
15730     * var users = [
15731     *   { 'user': 'fred',   'age': 48 },
15732     *   { 'user': 'barney', 'age': 36 },
15733     *   { 'user': 'fred',   'age': 30 },
15734     *   { 'user': 'barney', 'age': 34 }
15735     * ];
15736     *
15737     * _.sortBy(users, [function(o) { return o.user; }]);
15738     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
15739     *
15740     * _.sortBy(users, ['user', 'age']);
15741     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
15742     */
15743    var sortBy = baseRest(function(collection, iteratees) {
15744      if (collection == null) {
15745        return [];
15746      }
15747      var length = iteratees.length;
15748      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
15749        iteratees = [];
15750      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
15751        iteratees = [iteratees[0]];
15752      }
15753      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
15754    });
15755
15756    /*------------------------------------------------------------------------*/
15757
15758    /**
15759     * Gets the timestamp of the number of milliseconds that have elapsed since
15760     * the Unix epoch (1 January 1970 00:00:00 UTC).
15761     *
15762     * @static
15763     * @memberOf _
15764     * @since 2.4.0
15765     * @category Date
15766     * @returns {number} Returns the timestamp.
15767     * @example
15768     *
15769     * _.defer(function(stamp) {
15770     *   console.log(_.now() - stamp);
15771     * }, _.now());
15772     * // => Logs the number of milliseconds it took for the deferred invocation.
15773     */
15774    var now = ctxNow || function() {
15775      return root.Date.now();
15776    };
15777
15778    /*------------------------------------------------------------------------*/
15779
15780    /**
15781     * The opposite of `_.before`; this method creates a function that invokes
15782     * `func` once it's called `n` or more times.
15783     *
15784     * @static
15785     * @memberOf _
15786     * @since 0.1.0
15787     * @category Function
15788     * @param {number} n The number of calls before `func` is invoked.
15789     * @param {Function} func The function to restrict.
15790     * @returns {Function} Returns the new restricted function.
15791     * @example
15792     *
15793     * var saves = ['profile', 'settings'];
15794     *
15795     * var done = _.after(saves.length, function() {
15796     *   console.log('done saving!');
15797     * });
15798     *
15799     * _.forEach(saves, function(type) {
15800     *   asyncSave({ 'type': type, 'complete': done });
15801     * });
15802     * // => Logs 'done saving!' after the two async saves have completed.
15803     */
15804    function after(n, func) {
15805      if (typeof func != 'function') {
15806        throw new TypeError(FUNC_ERROR_TEXT);
15807      }
15808      n = toInteger(n);
15809      return function() {
15810        if (--n < 1) {
15811          return func.apply(this, arguments);
15812        }
15813      };
15814    }
15815
15816    /**
15817     * Creates a function that invokes `func`, with up to `n` arguments,
15818     * ignoring any additional arguments.
15819     *
15820     * @static
15821     * @memberOf _
15822     * @since 3.0.0
15823     * @category Function
15824     * @param {Function} func The function to cap arguments for.
15825     * @param {number} [n=func.length] The arity cap.
15826     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15827     * @returns {Function} Returns the new capped function.
15828     * @example
15829     *
15830     * _.map(['6', '8', '10'], _.ary(parseInt, 1));
15831     * // => [6, 8, 10]
15832     */
15833    function ary(func, n, guard) {
15834      n = guard ? undefined : n;
15835      n = (func && n == null) ? func.length : n;
15836      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
15837    }
15838
15839    /**
15840     * Creates a function that invokes `func`, with the `this` binding and arguments
15841     * of the created function, while it's called less than `n` times. Subsequent
15842     * calls to the created function return the result of the last `func` invocation.
15843     *
15844     * @static
15845     * @memberOf _
15846     * @since 3.0.0
15847     * @category Function
15848     * @param {number} n The number of calls at which `func` is no longer invoked.
15849     * @param {Function} func The function to restrict.
15850     * @returns {Function} Returns the new restricted function.
15851     * @example
15852     *
15853     * jQuery(element).on('click', _.before(5, addContactToList));
15854     * // => Allows adding up to 4 contacts to the list.
15855     */
15856    function before(n, func) {
15857      var result;
15858      if (typeof func != 'function') {
15859        throw new TypeError(FUNC_ERROR_TEXT);
15860      }
15861      n = toInteger(n);
15862      return function() {
15863        if (--n > 0) {
15864          result = func.apply(this, arguments);
15865        }
15866        if (n <= 1) {
15867          func = undefined;
15868        }
15869        return result;
15870      };
15871    }
15872
15873    /**
15874     * Creates a function that invokes `func` with the `this` binding of `thisArg`
15875     * and `partials` prepended to the arguments it receives.
15876     *
15877     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
15878     * may be used as a placeholder for partially applied arguments.
15879     *
15880     * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
15881     * property of bound functions.
15882     *
15883     * @static
15884     * @memberOf _
15885     * @since 0.1.0
15886     * @category Function
15887     * @param {Function} func The function to bind.
15888     * @param {*} thisArg The `this` binding of `func`.
15889     * @param {...*} [partials] The arguments to be partially applied.
15890     * @returns {Function} Returns the new bound function.
15891     * @example
15892     *
15893     * function greet(greeting, punctuation) {
15894     *   return greeting + ' ' + this.user + punctuation;
15895     * }
15896     *
15897     * var object = { 'user': 'fred' };
15898     *
15899     * var bound = _.bind(greet, object, 'hi');
15900     * bound('!');
15901     * // => 'hi fred!'
15902     *
15903     * // Bound with placeholders.
15904     * var bound = _.bind(greet, object, _, '!');
15905     * bound('hi');
15906     * // => 'hi fred!'
15907     */
15908    var bind = baseRest(function(func, thisArg, partials) {
15909      var bitmask = WRAP_BIND_FLAG;
15910      if (partials.length) {
15911        var holders = replaceHolders(partials, getHolder(bind));
15912        bitmask |= WRAP_PARTIAL_FLAG;
15913      }
15914      return createWrap(func, bitmask, thisArg, partials, holders);
15915    });
15916
15917    /**
15918     * Creates a function that invokes the method at `object[key]` with `partials`
15919     * prepended to the arguments it receives.
15920     *
15921     * This method differs from `_.bind` by allowing bound functions to reference
15922     * methods that may be redefined or don't yet exist. See
15923     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
15924     * for more details.
15925     *
15926     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
15927     * builds, may be used as a placeholder for partially applied arguments.
15928     *
15929     * @static
15930     * @memberOf _
15931     * @since 0.10.0
15932     * @category Function
15933     * @param {Object} object The object to invoke the method on.
15934     * @param {string} key The key of the method.
15935     * @param {...*} [partials] The arguments to be partially applied.
15936     * @returns {Function} Returns the new bound function.
15937     * @example
15938     *
15939     * var object = {
15940     *   'user': 'fred',
15941     *   'greet': function(greeting, punctuation) {
15942     *     return greeting + ' ' + this.user + punctuation;
15943     *   }
15944     * };
15945     *
15946     * var bound = _.bindKey(object, 'greet', 'hi');
15947     * bound('!');
15948     * // => 'hi fred!'
15949     *
15950     * object.greet = function(greeting, punctuation) {
15951     *   return greeting + 'ya ' + this.user + punctuation;
15952     * };
15953     *
15954     * bound('!');
15955     * // => 'hiya fred!'
15956     *
15957     * // Bound with placeholders.
15958     * var bound = _.bindKey(object, 'greet', _, '!');
15959     * bound('hi');
15960     * // => 'hiya fred!'
15961     */
15962    var bindKey = baseRest(function(object, key, partials) {
15963      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
15964      if (partials.length) {
15965        var holders = replaceHolders(partials, getHolder(bindKey));
15966        bitmask |= WRAP_PARTIAL_FLAG;
15967      }
15968      return createWrap(key, bitmask, object, partials, holders);
15969    });
15970
15971    /**
15972     * Creates a function that accepts arguments of `func` and either invokes
15973     * `func` returning its result, if at least `arity` number of arguments have
15974     * been provided, or returns a function that accepts the remaining `func`
15975     * arguments, and so on. The arity of `func` may be specified if `func.length`
15976     * is not sufficient.
15977     *
15978     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
15979     * may be used as a placeholder for provided arguments.
15980     *
15981     * **Note:** This method doesn't set the "length" property of curried functions.
15982     *
15983     * @static
15984     * @memberOf _
15985     * @since 2.0.0
15986     * @category Function
15987     * @param {Function} func The function to curry.
15988     * @param {number} [arity=func.length] The arity of `func`.
15989     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15990     * @returns {Function} Returns the new curried function.
15991     * @example
15992     *
15993     * var abc = function(a, b, c) {
15994     *   return [a, b, c];
15995     * };
15996     *
15997     * var curried = _.curry(abc);
15998     *
15999     * curried(1)(2)(3);
16000     * // => [1, 2, 3]
16001     *
16002     * curried(1, 2)(3);
16003     * // => [1, 2, 3]
16004     *
16005     * curried(1, 2, 3);
16006     * // => [1, 2, 3]
16007     *
16008     * // Curried with placeholders.
16009     * curried(1)(_, 3)(2);
16010     * // => [1, 2, 3]
16011     */
16012    function curry(func, arity, guard) {
16013      arity = guard ? undefined : arity;
16014      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
16015      result.placeholder = curry.placeholder;
16016      return result;
16017    }
16018
16019    /**
16020     * This method is like `_.curry` except that arguments are applied to `func`
16021     * in the manner of `_.partialRight` instead of `_.partial`.
16022     *
16023     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
16024     * builds, may be used as a placeholder for provided arguments.
16025     *
16026     * **Note:** This method doesn't set the "length" property of curried functions.
16027     *
16028     * @static
16029     * @memberOf _
16030     * @since 3.0.0
16031     * @category Function
16032     * @param {Function} func The function to curry.
16033     * @param {number} [arity=func.length] The arity of `func`.
16034     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
16035     * @returns {Function} Returns the new curried function.
16036     * @example
16037     *
16038     * var abc = function(a, b, c) {
16039     *   return [a, b, c];
16040     * };
16041     *
16042     * var curried = _.curryRight(abc);
16043     *
16044     * curried(3)(2)(1);
16045     * // => [1, 2, 3]
16046     *
16047     * curried(2, 3)(1);
16048     * // => [1, 2, 3]
16049     *
16050     * curried(1, 2, 3);
16051     * // => [1, 2, 3]
16052     *
16053     * // Curried with placeholders.
16054     * curried(3)(1, _)(2);
16055     * // => [1, 2, 3]
16056     */
16057    function curryRight(func, arity, guard) {
16058      arity = guard ? undefined : arity;
16059      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
16060      result.placeholder = curryRight.placeholder;
16061      return result;
16062    }
16063
16064    /**
16065     * Creates a debounced function that delays invoking `func` until after `wait`
16066     * milliseconds have elapsed since the last time the debounced function was
16067     * invoked. The debounced function comes with a `cancel` method to cancel
16068     * delayed `func` invocations and a `flush` method to immediately invoke them.
16069     * Provide `options` to indicate whether `func` should be invoked on the
16070     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
16071     * with the last arguments provided to the debounced function. Subsequent
16072     * calls to the debounced function return the result of the last `func`
16073     * invocation.
16074     *
16075     * **Note:** If `leading` and `trailing` options are `true`, `func` is
16076     * invoked on the trailing edge of the timeout only if the debounced function
16077     * is invoked more than once during the `wait` timeout.
16078     *
16079     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16080     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16081     *
16082     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16083     * for details over the differences between `_.debounce` and `_.throttle`.
16084     *
16085     * @static
16086     * @memberOf _
16087     * @since 0.1.0
16088     * @category Function
16089     * @param {Function} func The function to debounce.
16090     * @param {number} [wait=0] The number of milliseconds to delay.
16091     * @param {Object} [options={}] The options object.
16092     * @param {boolean} [options.leading=false]
16093     *  Specify invoking on the leading edge of the timeout.
16094     * @param {number} [options.maxWait]
16095     *  The maximum time `func` is allowed to be delayed before it's invoked.
16096     * @param {boolean} [options.trailing=true]
16097     *  Specify invoking on the trailing edge of the timeout.
16098     * @returns {Function} Returns the new debounced function.
16099     * @example
16100     *
16101     * // Avoid costly calculations while the window size is in flux.
16102     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
16103     *
16104     * // Invoke `sendMail` when clicked, debouncing subsequent calls.
16105     * jQuery(element).on('click', _.debounce(sendMail, 300, {
16106     *   'leading': true,
16107     *   'trailing': false
16108     * }));
16109     *
16110     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
16111     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
16112     * var source = new EventSource('/stream');
16113     * jQuery(source).on('message', debounced);
16114     *
16115     * // Cancel the trailing debounced invocation.
16116     * jQuery(window).on('popstate', debounced.cancel);
16117     */
16118    function debounce(func, wait, options) {
16119      var lastArgs,
16120          lastThis,
16121          maxWait,
16122          result,
16123          timerId,
16124          lastCallTime,
16125          lastInvokeTime = 0,
16126          leading = false,
16127          maxing = false,
16128          trailing = true;
16129
16130      if (typeof func != 'function') {
16131        throw new TypeError(FUNC_ERROR_TEXT);
16132      }
16133      wait = toNumber(wait) || 0;
16134      if (isObject(options)) {
16135        leading = !!options.leading;
16136        maxing = 'maxWait' in options;
16137        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
16138        trailing = 'trailing' in options ? !!options.trailing : trailing;
16139      }
16140
16141      function invokeFunc(time) {
16142        var args = lastArgs,
16143            thisArg = lastThis;
16144
16145        lastArgs = lastThis = undefined;
16146        lastInvokeTime = time;
16147        result = func.apply(thisArg, args);
16148        return result;
16149      }
16150
16151      function leadingEdge(time) {
16152        // Reset any `maxWait` timer.
16153        lastInvokeTime = time;
16154        // Start the timer for the trailing edge.
16155        timerId = setTimeout(timerExpired, wait);
16156        // Invoke the leading edge.
16157        return leading ? invokeFunc(time) : result;
16158      }
16159
16160      function remainingWait(time) {
16161        var timeSinceLastCall = time - lastCallTime,
16162            timeSinceLastInvoke = time - lastInvokeTime,
16163            timeWaiting = wait - timeSinceLastCall;
16164
16165        return maxing
16166          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
16167          : timeWaiting;
16168      }
16169
16170      function shouldInvoke(time) {
16171        var timeSinceLastCall = time - lastCallTime,
16172            timeSinceLastInvoke = time - lastInvokeTime;
16173
16174        // Either this is the first call, activity has stopped and we're at the
16175        // trailing edge, the system time has gone backwards and we're treating
16176        // it as the trailing edge, or we've hit the `maxWait` limit.
16177        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
16178          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
16179      }
16180
16181      function timerExpired() {
16182        var time = now();
16183        if (shouldInvoke(time)) {
16184          return trailingEdge(time);
16185        }
16186        // Restart the timer.
16187        timerId = setTimeout(timerExpired, remainingWait(time));
16188      }
16189
16190      function trailingEdge(time) {
16191        timerId = undefined;
16192
16193        // Only invoke if we have `lastArgs` which means `func` has been
16194        // debounced at least once.
16195        if (trailing && lastArgs) {
16196          return invokeFunc(time);
16197        }
16198        lastArgs = lastThis = undefined;
16199        return result;
16200      }
16201
16202      function cancel() {
16203        if (timerId !== undefined) {
16204          clearTimeout(timerId);
16205        }
16206        lastInvokeTime = 0;
16207        lastArgs = lastCallTime = lastThis = timerId = undefined;
16208      }
16209
16210      function flush() {
16211        return timerId === undefined ? result : trailingEdge(now());
16212      }
16213
16214      function debounced() {
16215        var time = now(),
16216            isInvoking = shouldInvoke(time);
16217
16218        lastArgs = arguments;
16219        lastThis = this;
16220        lastCallTime = time;
16221
16222        if (isInvoking) {
16223          if (timerId === undefined) {
16224            return leadingEdge(lastCallTime);
16225          }
16226          if (maxing) {
16227            // Handle invocations in a tight loop.
16228            clearTimeout(timerId);
16229            timerId = setTimeout(timerExpired, wait);
16230            return invokeFunc(lastCallTime);
16231          }
16232        }
16233        if (timerId === undefined) {
16234          timerId = setTimeout(timerExpired, wait);
16235        }
16236        return result;
16237      }
16238      debounced.cancel = cancel;
16239      debounced.flush = flush;
16240      return debounced;
16241    }
16242
16243    /**
16244     * Defers invoking the `func` until the current call stack has cleared. Any
16245     * additional arguments are provided to `func` when it's invoked.
16246     *
16247     * @static
16248     * @memberOf _
16249     * @since 0.1.0
16250     * @category Function
16251     * @param {Function} func The function to defer.
16252     * @param {...*} [args] The arguments to invoke `func` with.
16253     * @returns {number} Returns the timer id.
16254     * @example
16255     *
16256     * _.defer(function(text) {
16257     *   console.log(text);
16258     * }, 'deferred');
16259     * // => Logs 'deferred' after one millisecond.
16260     */
16261    var defer = baseRest(function(func, args) {
16262      return baseDelay(func, 1, args);
16263    });
16264
16265    /**
16266     * Invokes `func` after `wait` milliseconds. Any additional arguments are
16267     * provided to `func` when it's invoked.
16268     *
16269     * @static
16270     * @memberOf _
16271     * @since 0.1.0
16272     * @category Function
16273     * @param {Function} func The function to delay.
16274     * @param {number} wait The number of milliseconds to delay invocation.
16275     * @param {...*} [args] The arguments to invoke `func` with.
16276     * @returns {number} Returns the timer id.
16277     * @example
16278     *
16279     * _.delay(function(text) {
16280     *   console.log(text);
16281     * }, 1000, 'later');
16282     * // => Logs 'later' after one second.
16283     */
16284    var delay = baseRest(function(func, wait, args) {
16285      return baseDelay(func, toNumber(wait) || 0, args);
16286    });
16287
16288    /**
16289     * Creates a function that invokes `func` with arguments reversed.
16290     *
16291     * @static
16292     * @memberOf _
16293     * @since 4.0.0
16294     * @category Function
16295     * @param {Function} func The function to flip arguments for.
16296     * @returns {Function} Returns the new flipped function.
16297     * @example
16298     *
16299     * var flipped = _.flip(function() {
16300     *   return _.toArray(arguments);
16301     * });
16302     *
16303     * flipped('a', 'b', 'c', 'd');
16304     * // => ['d', 'c', 'b', 'a']
16305     */
16306    function flip(func) {
16307      return createWrap(func, WRAP_FLIP_FLAG);
16308    }
16309
16310    /**
16311     * Creates a function that memoizes the result of `func`. If `resolver` is
16312     * provided, it determines the cache key for storing the result based on the
16313     * arguments provided to the memoized function. By default, the first argument
16314     * provided to the memoized function is used as the map cache key. The `func`
16315     * is invoked with the `this` binding of the memoized function.
16316     *
16317     * **Note:** The cache is exposed as the `cache` property on the memoized
16318     * function. Its creation may be customized by replacing the `_.memoize.Cache`
16319     * constructor with one whose instances implement the
16320     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
16321     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
16322     *
16323     * @static
16324     * @memberOf _
16325     * @since 0.1.0
16326     * @category Function
16327     * @param {Function} func The function to have its output memoized.
16328     * @param {Function} [resolver] The function to resolve the cache key.
16329     * @returns {Function} Returns the new memoized function.
16330     * @example
16331     *
16332     * var object = { 'a': 1, 'b': 2 };
16333     * var other = { 'c': 3, 'd': 4 };
16334     *
16335     * var values = _.memoize(_.values);
16336     * values(object);
16337     * // => [1, 2]
16338     *
16339     * values(other);
16340     * // => [3, 4]
16341     *
16342     * object.a = 2;
16343     * values(object);
16344     * // => [1, 2]
16345     *
16346     * // Modify the result cache.
16347     * values.cache.set(object, ['a', 'b']);
16348     * values(object);
16349     * // => ['a', 'b']
16350     *
16351     * // Replace `_.memoize.Cache`.
16352     * _.memoize.Cache = WeakMap;
16353     */
16354    function memoize(func, resolver) {
16355      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
16356        throw new TypeError(FUNC_ERROR_TEXT);
16357      }
16358      var memoized = function() {
16359        var args = arguments,
16360            key = resolver ? resolver.apply(this, args) : args[0],
16361            cache = memoized.cache;
16362
16363        if (cache.has(key)) {
16364          return cache.get(key);
16365        }
16366        var result = func.apply(this, args);
16367        memoized.cache = cache.set(key, result) || cache;
16368        return result;
16369      };
16370      memoized.cache = new (memoize.Cache || MapCache);
16371      return memoized;
16372    }
16373
16374    // Expose `MapCache`.
16375    memoize.Cache = MapCache;
16376
16377    /**
16378     * Creates a function that negates the result of the predicate `func`. The
16379     * `func` predicate is invoked with the `this` binding and arguments of the
16380     * created function.
16381     *
16382     * @static
16383     * @memberOf _
16384     * @since 3.0.0
16385     * @category Function
16386     * @param {Function} predicate The predicate to negate.
16387     * @returns {Function} Returns the new negated function.
16388     * @example
16389     *
16390     * function isEven(n) {
16391     *   return n % 2 == 0;
16392     * }
16393     *
16394     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
16395     * // => [1, 3, 5]
16396     */
16397    function negate(predicate) {
16398      if (typeof predicate != 'function') {
16399        throw new TypeError(FUNC_ERROR_TEXT);
16400      }
16401      return function() {
16402        var args = arguments;
16403        switch (args.length) {
16404          case 0: return !predicate.call(this);
16405          case 1: return !predicate.call(this, args[0]);
16406          case 2: return !predicate.call(this, args[0], args[1]);
16407          case 3: return !predicate.call(this, args[0], args[1], args[2]);
16408        }
16409        return !predicate.apply(this, args);
16410      };
16411    }
16412
16413    /**
16414     * Creates a function that is restricted to invoking `func` once. Repeat calls
16415     * to the function return the value of the first invocation. The `func` is
16416     * invoked with the `this` binding and arguments of the created function.
16417     *
16418     * @static
16419     * @memberOf _
16420     * @since 0.1.0
16421     * @category Function
16422     * @param {Function} func The function to restrict.
16423     * @returns {Function} Returns the new restricted function.
16424     * @example
16425     *
16426     * var initialize = _.once(createApplication);
16427     * initialize();
16428     * initialize();
16429     * // => `createApplication` is invoked once
16430     */
16431    function once(func) {
16432      return before(2, func);
16433    }
16434
16435    /**
16436     * Creates a function that invokes `func` with its arguments transformed.
16437     *
16438     * @static
16439     * @since 4.0.0
16440     * @memberOf _
16441     * @category Function
16442     * @param {Function} func The function to wrap.
16443     * @param {...(Function|Function[])} [transforms=[_.identity]]
16444     *  The argument transforms.
16445     * @returns {Function} Returns the new function.
16446     * @example
16447     *
16448     * function doubled(n) {
16449     *   return n * 2;
16450     * }
16451     *
16452     * function square(n) {
16453     *   return n * n;
16454     * }
16455     *
16456     * var func = _.overArgs(function(x, y) {
16457     *   return [x, y];
16458     * }, [square, doubled]);
16459     *
16460     * func(9, 3);
16461     * // => [81, 6]
16462     *
16463     * func(10, 5);
16464     * // => [100, 10]
16465     */
16466    var overArgs = castRest(function(func, transforms) {
16467      transforms = (transforms.length == 1 && isArray(transforms[0]))
16468        ? arrayMap(transforms[0], baseUnary(getIteratee()))
16469        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
16470
16471      var funcsLength = transforms.length;
16472      return baseRest(function(args) {
16473        var index = -1,
16474            length = nativeMin(args.length, funcsLength);
16475
16476        while (++index < length) {
16477          args[index] = transforms[index].call(this, args[index]);
16478        }
16479        return apply(func, this, args);
16480      });
16481    });
16482
16483    /**
16484     * Creates a function that invokes `func` with `partials` prepended to the
16485     * arguments it receives. This method is like `_.bind` except it does **not**
16486     * alter the `this` binding.
16487     *
16488     * The `_.partial.placeholder` value, which defaults to `_` in monolithic
16489     * builds, may be used as a placeholder for partially applied arguments.
16490     *
16491     * **Note:** This method doesn't set the "length" property of partially
16492     * applied functions.
16493     *
16494     * @static
16495     * @memberOf _
16496     * @since 0.2.0
16497     * @category Function
16498     * @param {Function} func The function to partially apply arguments to.
16499     * @param {...*} [partials] The arguments to be partially applied.
16500     * @returns {Function} Returns the new partially applied function.
16501     * @example
16502     *
16503     * function greet(greeting, name) {
16504     *   return greeting + ' ' + name;
16505     * }
16506     *
16507     * var sayHelloTo = _.partial(greet, 'hello');
16508     * sayHelloTo('fred');
16509     * // => 'hello fred'
16510     *
16511     * // Partially applied with placeholders.
16512     * var greetFred = _.partial(greet, _, 'fred');
16513     * greetFred('hi');
16514     * // => 'hi fred'
16515     */
16516    var partial = baseRest(function(func, partials) {
16517      var holders = replaceHolders(partials, getHolder(partial));
16518      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
16519    });
16520
16521    /**
16522     * This method is like `_.partial` except that partially applied arguments
16523     * are appended to the arguments it receives.
16524     *
16525     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
16526     * builds, may be used as a placeholder for partially applied arguments.
16527     *
16528     * **Note:** This method doesn't set the "length" property of partially
16529     * applied functions.
16530     *
16531     * @static
16532     * @memberOf _
16533     * @since 1.0.0
16534     * @category Function
16535     * @param {Function} func The function to partially apply arguments to.
16536     * @param {...*} [partials] The arguments to be partially applied.
16537     * @returns {Function} Returns the new partially applied function.
16538     * @example
16539     *
16540     * function greet(greeting, name) {
16541     *   return greeting + ' ' + name;
16542     * }
16543     *
16544     * var greetFred = _.partialRight(greet, 'fred');
16545     * greetFred('hi');
16546     * // => 'hi fred'
16547     *
16548     * // Partially applied with placeholders.
16549     * var sayHelloTo = _.partialRight(greet, 'hello', _);
16550     * sayHelloTo('fred');
16551     * // => 'hello fred'
16552     */
16553    var partialRight = baseRest(function(func, partials) {
16554      var holders = replaceHolders(partials, getHolder(partialRight));
16555      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
16556    });
16557
16558    /**
16559     * Creates a function that invokes `func` with arguments arranged according
16560     * to the specified `indexes` where the argument value at the first index is
16561     * provided as the first argument, the argument value at the second index is
16562     * provided as the second argument, and so on.
16563     *
16564     * @static
16565     * @memberOf _
16566     * @since 3.0.0
16567     * @category Function
16568     * @param {Function} func The function to rearrange arguments for.
16569     * @param {...(number|number[])} indexes The arranged argument indexes.
16570     * @returns {Function} Returns the new function.
16571     * @example
16572     *
16573     * var rearged = _.rearg(function(a, b, c) {
16574     *   return [a, b, c];
16575     * }, [2, 0, 1]);
16576     *
16577     * rearged('b', 'c', 'a')
16578     * // => ['a', 'b', 'c']
16579     */
16580    var rearg = flatRest(function(func, indexes) {
16581      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
16582    });
16583
16584    /**
16585     * Creates a function that invokes `func` with the `this` binding of the
16586     * created function and arguments from `start` and beyond provided as
16587     * an array.
16588     *
16589     * **Note:** This method is based on the
16590     * [rest parameter](https://mdn.io/rest_parameters).
16591     *
16592     * @static
16593     * @memberOf _
16594     * @since 4.0.0
16595     * @category Function
16596     * @param {Function} func The function to apply a rest parameter to.
16597     * @param {number} [start=func.length-1] The start position of the rest parameter.
16598     * @returns {Function} Returns the new function.
16599     * @example
16600     *
16601     * var say = _.rest(function(what, names) {
16602     *   return what + ' ' + _.initial(names).join(', ') +
16603     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
16604     * });
16605     *
16606     * say('hello', 'fred', 'barney', 'pebbles');
16607     * // => 'hello fred, barney, & pebbles'
16608     */
16609    function rest(func, start) {
16610      if (typeof func != 'function') {
16611        throw new TypeError(FUNC_ERROR_TEXT);
16612      }
16613      start = start === undefined ? start : toInteger(start);
16614      return baseRest(func, start);
16615    }
16616
16617    /**
16618     * Creates a function that invokes `func` with the `this` binding of the
16619     * create function and an array of arguments much like
16620     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
16621     *
16622     * **Note:** This method is based on the
16623     * [spread operator](https://mdn.io/spread_operator).
16624     *
16625     * @static
16626     * @memberOf _
16627     * @since 3.2.0
16628     * @category Function
16629     * @param {Function} func The function to spread arguments over.
16630     * @param {number} [start=0] The start position of the spread.
16631     * @returns {Function} Returns the new function.
16632     * @example
16633     *
16634     * var say = _.spread(function(who, what) {
16635     *   return who + ' says ' + what;
16636     * });
16637     *
16638     * say(['fred', 'hello']);
16639     * // => 'fred says hello'
16640     *
16641     * var numbers = Promise.all([
16642     *   Promise.resolve(40),
16643     *   Promise.resolve(36)
16644     * ]);
16645     *
16646     * numbers.then(_.spread(function(x, y) {
16647     *   return x + y;
16648     * }));
16649     * // => a Promise of 76
16650     */
16651    function spread(func, start) {
16652      if (typeof func != 'function') {
16653        throw new TypeError(FUNC_ERROR_TEXT);
16654      }
16655      start = start == null ? 0 : nativeMax(toInteger(start), 0);
16656      return baseRest(function(args) {
16657        var array = args[start],
16658            otherArgs = castSlice(args, 0, start);
16659
16660        if (array) {
16661          arrayPush(otherArgs, array);
16662        }
16663        return apply(func, this, otherArgs);
16664      });
16665    }
16666
16667    /**
16668     * Creates a throttled function that only invokes `func` at most once per
16669     * every `wait` milliseconds. The throttled function comes with a `cancel`
16670     * method to cancel delayed `func` invocations and a `flush` method to
16671     * immediately invoke them. Provide `options` to indicate whether `func`
16672     * should be invoked on the leading and/or trailing edge of the `wait`
16673     * timeout. The `func` is invoked with the last arguments provided to the
16674     * throttled function. Subsequent calls to the throttled function return the
16675     * result of the last `func` invocation.
16676     *
16677     * **Note:** If `leading` and `trailing` options are `true`, `func` is
16678     * invoked on the trailing edge of the timeout only if the throttled function
16679     * is invoked more than once during the `wait` timeout.
16680     *
16681     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16682     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16683     *
16684     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16685     * for details over the differences between `_.throttle` and `_.debounce`.
16686     *
16687     * @static
16688     * @memberOf _
16689     * @since 0.1.0
16690     * @category Function
16691     * @param {Function} func The function to throttle.
16692     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
16693     * @param {Object} [options={}] The options object.
16694     * @param {boolean} [options.leading=true]
16695     *  Specify invoking on the leading edge of the timeout.
16696     * @param {boolean} [options.trailing=true]
16697     *  Specify invoking on the trailing edge of the timeout.
16698     * @returns {Function} Returns the new throttled function.
16699     * @example
16700     *
16701     * // Avoid excessively updating the position while scrolling.
16702     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
16703     *
16704     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
16705     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
16706     * jQuery(element).on('click', throttled);
16707     *
16708     * // Cancel the trailing throttled invocation.
16709     * jQuery(window).on('popstate', throttled.cancel);
16710     */
16711    function throttle(func, wait, options) {
16712      var leading = true,
16713          trailing = true;
16714
16715      if (typeof func != 'function') {
16716        throw new TypeError(FUNC_ERROR_TEXT);
16717      }
16718      if (isObject(options)) {
16719        leading = 'leading' in options ? !!options.leading : leading;
16720        trailing = 'trailing' in options ? !!options.trailing : trailing;
16721      }
16722      return debounce(func, wait, {
16723        'leading': leading,
16724        'maxWait': wait,
16725        'trailing': trailing
16726      });
16727    }
16728
16729    /**
16730     * Creates a function that accepts up to one argument, ignoring any
16731     * additional arguments.
16732     *
16733     * @static
16734     * @memberOf _
16735     * @since 4.0.0
16736     * @category Function
16737     * @param {Function} func The function to cap arguments for.
16738     * @returns {Function} Returns the new capped function.
16739     * @example
16740     *
16741     * _.map(['6', '8', '10'], _.unary(parseInt));
16742     * // => [6, 8, 10]
16743     */
16744    function unary(func) {
16745      return ary(func, 1);
16746    }
16747
16748    /**
16749     * Creates a function that provides `value` to `wrapper` as its first
16750     * argument. Any additional arguments provided to the function are appended
16751     * to those provided to the `wrapper`. The wrapper is invoked with the `this`
16752     * binding of the created function.
16753     *
16754     * @static
16755     * @memberOf _
16756     * @since 0.1.0
16757     * @category Function
16758     * @param {*} value The value to wrap.
16759     * @param {Function} [wrapper=identity] The wrapper function.
16760     * @returns {Function} Returns the new function.
16761     * @example
16762     *
16763     * var p = _.wrap(_.escape, function(func, text) {
16764     *   return '<p>' + func(text) + '</p>';
16765     * });
16766     *
16767     * p('fred, barney, & pebbles');
16768     * // => '<p>fred, barney, &amp; pebbles</p>'
16769     */
16770    function wrap(value, wrapper) {
16771      return partial(castFunction(wrapper), value);
16772    }
16773
16774    /*------------------------------------------------------------------------*/
16775
16776    /**
16777     * Casts `value` as an array if it's not one.
16778     *
16779     * @static
16780     * @memberOf _
16781     * @since 4.4.0
16782     * @category Lang
16783     * @param {*} value The value to inspect.
16784     * @returns {Array} Returns the cast array.
16785     * @example
16786     *
16787     * _.castArray(1);
16788     * // => [1]
16789     *
16790     * _.castArray({ 'a': 1 });
16791     * // => [{ 'a': 1 }]
16792     *
16793     * _.castArray('abc');
16794     * // => ['abc']
16795     *
16796     * _.castArray(null);
16797     * // => [null]
16798     *
16799     * _.castArray(undefined);
16800     * // => [undefined]
16801     *
16802     * _.castArray();
16803     * // => []
16804     *
16805     * var array = [1, 2, 3];
16806     * console.log(_.castArray(array) === array);
16807     * // => true
16808     */
16809    function castArray() {
16810      if (!arguments.length) {
16811        return [];
16812      }
16813      var value = arguments[0];
16814      return isArray(value) ? value : [value];
16815    }
16816
16817    /**
16818     * Creates a shallow clone of `value`.
16819     *
16820     * **Note:** This method is loosely based on the
16821     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
16822     * and supports cloning arrays, array buffers, booleans, date objects, maps,
16823     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
16824     * arrays. The own enumerable properties of `arguments` objects are cloned
16825     * as plain objects. An empty object is returned for uncloneable values such
16826     * as error objects, functions, DOM nodes, and WeakMaps.
16827     *
16828     * @static
16829     * @memberOf _
16830     * @since 0.1.0
16831     * @category Lang
16832     * @param {*} value The value to clone.
16833     * @returns {*} Returns the cloned value.
16834     * @see _.cloneDeep
16835     * @example
16836     *
16837     * var objects = [{ 'a': 1 }, { 'b': 2 }];
16838     *
16839     * var shallow = _.clone(objects);
16840     * console.log(shallow[0] === objects[0]);
16841     * // => true
16842     */
16843    function clone(value) {
16844      return baseClone(value, CLONE_SYMBOLS_FLAG);
16845    }
16846
16847    /**
16848     * This method is like `_.clone` except that it accepts `customizer` which
16849     * is invoked to produce the cloned value. If `customizer` returns `undefined`,
16850     * cloning is handled by the method instead. The `customizer` is invoked with
16851     * up to four arguments; (value [, index|key, object, stack]).
16852     *
16853     * @static
16854     * @memberOf _
16855     * @since 4.0.0
16856     * @category Lang
16857     * @param {*} value The value to clone.
16858     * @param {Function} [customizer] The function to customize cloning.
16859     * @returns {*} Returns the cloned value.
16860     * @see _.cloneDeepWith
16861     * @example
16862     *
16863     * function customizer(value) {
16864     *   if (_.isElement(value)) {
16865     *     return value.cloneNode(false);
16866     *   }
16867     * }
16868     *
16869     * var el = _.cloneWith(document.body, customizer);
16870     *
16871     * console.log(el === document.body);
16872     * // => false
16873     * console.log(el.nodeName);
16874     * // => 'BODY'
16875     * console.log(el.childNodes.length);
16876     * // => 0
16877     */
16878    function cloneWith(value, customizer) {
16879      customizer = typeof customizer == 'function' ? customizer : undefined;
16880      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
16881    }
16882
16883    /**
16884     * This method is like `_.clone` except that it recursively clones `value`.
16885     *
16886     * @static
16887     * @memberOf _
16888     * @since 1.0.0
16889     * @category Lang
16890     * @param {*} value The value to recursively clone.
16891     * @returns {*} Returns the deep cloned value.
16892     * @see _.clone
16893     * @example
16894     *
16895     * var objects = [{ 'a': 1 }, { 'b': 2 }];
16896     *
16897     * var deep = _.cloneDeep(objects);
16898     * console.log(deep[0] === objects[0]);
16899     * // => false
16900     */
16901    function cloneDeep(value) {
16902      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
16903    }
16904
16905    /**
16906     * This method is like `_.cloneWith` except that it recursively clones `value`.
16907     *
16908     * @static
16909     * @memberOf _
16910     * @since 4.0.0
16911     * @category Lang
16912     * @param {*} value The value to recursively clone.
16913     * @param {Function} [customizer] The function to customize cloning.
16914     * @returns {*} Returns the deep cloned value.
16915     * @see _.cloneWith
16916     * @example
16917     *
16918     * function customizer(value) {
16919     *   if (_.isElement(value)) {
16920     *     return value.cloneNode(true);
16921     *   }
16922     * }
16923     *
16924     * var el = _.cloneDeepWith(document.body, customizer);
16925     *
16926     * console.log(el === document.body);
16927     * // => false
16928     * console.log(el.nodeName);
16929     * // => 'BODY'
16930     * console.log(el.childNodes.length);
16931     * // => 20
16932     */
16933    function cloneDeepWith(value, customizer) {
16934      customizer = typeof customizer == 'function' ? customizer : undefined;
16935      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
16936    }
16937
16938    /**
16939     * Checks if `object` conforms to `source` by invoking the predicate
16940     * properties of `source` with the corresponding property values of `object`.
16941     *
16942     * **Note:** This method is equivalent to `_.conforms` when `source` is
16943     * partially applied.
16944     *
16945     * @static
16946     * @memberOf _
16947     * @since 4.14.0
16948     * @category Lang
16949     * @param {Object} object The object to inspect.
16950     * @param {Object} source The object of property predicates to conform to.
16951     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
16952     * @example
16953     *
16954     * var object = { 'a': 1, 'b': 2 };
16955     *
16956     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
16957     * // => true
16958     *
16959     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
16960     * // => false
16961     */
16962    function conformsTo(object, source) {
16963      return source == null || baseConformsTo(object, source, keys(source));
16964    }
16965
16966    /**
16967     * Performs a
16968     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
16969     * comparison between two values to determine if they are equivalent.
16970     *
16971     * @static
16972     * @memberOf _
16973     * @since 4.0.0
16974     * @category Lang
16975     * @param {*} value The value to compare.
16976     * @param {*} other The other value to compare.
16977     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
16978     * @example
16979     *
16980     * var object = { 'a': 1 };
16981     * var other = { 'a': 1 };
16982     *
16983     * _.eq(object, object);
16984     * // => true
16985     *
16986     * _.eq(object, other);
16987     * // => false
16988     *
16989     * _.eq('a', 'a');
16990     * // => true
16991     *
16992     * _.eq('a', Object('a'));
16993     * // => false
16994     *
16995     * _.eq(NaN, NaN);
16996     * // => true
16997     */
16998    function eq(value, other) {
16999      return value === other || (value !== value && other !== other);
17000    }
17001
17002    /**
17003     * Checks if `value` is greater than `other`.
17004     *
17005     * @static
17006     * @memberOf _
17007     * @since 3.9.0
17008     * @category Lang
17009     * @param {*} value The value to compare.
17010     * @param {*} other The other value to compare.
17011     * @returns {boolean} Returns `true` if `value` is greater than `other`,
17012     *  else `false`.
17013     * @see _.lt
17014     * @example
17015     *
17016     * _.gt(3, 1);
17017     * // => true
17018     *
17019     * _.gt(3, 3);
17020     * // => false
17021     *
17022     * _.gt(1, 3);
17023     * // => false
17024     */
17025    var gt = createRelationalOperation(baseGt);
17026
17027    /**
17028     * Checks if `value` is greater than or equal to `other`.
17029     *
17030     * @static
17031     * @memberOf _
17032     * @since 3.9.0
17033     * @category Lang
17034     * @param {*} value The value to compare.
17035     * @param {*} other The other value to compare.
17036     * @returns {boolean} Returns `true` if `value` is greater than or equal to
17037     *  `other`, else `false`.
17038     * @see _.lte
17039     * @example
17040     *
17041     * _.gte(3, 1);
17042     * // => true
17043     *
17044     * _.gte(3, 3);
17045     * // => true
17046     *
17047     * _.gte(1, 3);
17048     * // => false
17049     */
17050    var gte = createRelationalOperation(function(value, other) {
17051      return value >= other;
17052    });
17053
17054    /**
17055     * Checks if `value` is likely an `arguments` object.
17056     *
17057     * @static
17058     * @memberOf _
17059     * @since 0.1.0
17060     * @category Lang
17061     * @param {*} value The value to check.
17062     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
17063     *  else `false`.
17064     * @example
17065     *
17066     * _.isArguments(function() { return arguments; }());
17067     * // => true
17068     *
17069     * _.isArguments([1, 2, 3]);
17070     * // => false
17071     */
17072    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
17073      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
17074        !propertyIsEnumerable.call(value, 'callee');
17075    };
17076
17077    /**
17078     * Checks if `value` is classified as an `Array` object.
17079     *
17080     * @static
17081     * @memberOf _
17082     * @since 0.1.0
17083     * @category Lang
17084     * @param {*} value The value to check.
17085     * @returns {boolean} Returns `true` if `value` is an array, else `false`.
17086     * @example
17087     *
17088     * _.isArray([1, 2, 3]);
17089     * // => true
17090     *
17091     * _.isArray(document.body.children);
17092     * // => false
17093     *
17094     * _.isArray('abc');
17095     * // => false
17096     *
17097     * _.isArray(_.noop);
17098     * // => false
17099     */
17100    var isArray = Array.isArray;
17101
17102    /**
17103     * Checks if `value` is classified as an `ArrayBuffer` object.
17104     *
17105     * @static
17106     * @memberOf _
17107     * @since 4.3.0
17108     * @category Lang
17109     * @param {*} value The value to check.
17110     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
17111     * @example
17112     *
17113     * _.isArrayBuffer(new ArrayBuffer(2));
17114     * // => true
17115     *
17116     * _.isArrayBuffer(new Array(2));
17117     * // => false
17118     */
17119    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
17120
17121    /**
17122     * Checks if `value` is array-like. A value is considered array-like if it's
17123     * not a function and has a `value.length` that's an integer greater than or
17124     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
17125     *
17126     * @static
17127     * @memberOf _
17128     * @since 4.0.0
17129     * @category Lang
17130     * @param {*} value The value to check.
17131     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
17132     * @example
17133     *
17134     * _.isArrayLike([1, 2, 3]);
17135     * // => true
17136     *
17137     * _.isArrayLike(document.body.children);
17138     * // => true
17139     *
17140     * _.isArrayLike('abc');
17141     * // => true
17142     *
17143     * _.isArrayLike(_.noop);
17144     * // => false
17145     */
17146    function isArrayLike(value) {
17147      return value != null && isLength(value.length) && !isFunction(value);
17148    }
17149
17150    /**
17151     * This method is like `_.isArrayLike` except that it also checks if `value`
17152     * is an object.
17153     *
17154     * @static
17155     * @memberOf _
17156     * @since 4.0.0
17157     * @category Lang
17158     * @param {*} value The value to check.
17159     * @returns {boolean} Returns `true` if `value` is an array-like object,
17160     *  else `false`.
17161     * @example
17162     *
17163     * _.isArrayLikeObject([1, 2, 3]);
17164     * // => true
17165     *
17166     * _.isArrayLikeObject(document.body.children);
17167     * // => true
17168     *
17169     * _.isArrayLikeObject('abc');
17170     * // => false
17171     *
17172     * _.isArrayLikeObject(_.noop);
17173     * // => false
17174     */
17175    function isArrayLikeObject(value) {
17176      return isObjectLike(value) && isArrayLike(value);
17177    }
17178
17179    /**
17180     * Checks if `value` is classified as a boolean primitive or object.
17181     *
17182     * @static
17183     * @memberOf _
17184     * @since 0.1.0
17185     * @category Lang
17186     * @param {*} value The value to check.
17187     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
17188     * @example
17189     *
17190     * _.isBoolean(false);
17191     * // => true
17192     *
17193     * _.isBoolean(null);
17194     * // => false
17195     */
17196    function isBoolean(value) {
17197      return value === true || value === false ||
17198        (isObjectLike(value) && baseGetTag(value) == boolTag);
17199    }
17200
17201    /**
17202     * Checks if `value` is a buffer.
17203     *
17204     * @static
17205     * @memberOf _
17206     * @since 4.3.0
17207     * @category Lang
17208     * @param {*} value The value to check.
17209     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
17210     * @example
17211     *
17212     * _.isBuffer(new Buffer(2));
17213     * // => true
17214     *
17215     * _.isBuffer(new Uint8Array(2));
17216     * // => false
17217     */
17218    var isBuffer = nativeIsBuffer || stubFalse;
17219
17220    /**
17221     * Checks if `value` is classified as a `Date` object.
17222     *
17223     * @static
17224     * @memberOf _
17225     * @since 0.1.0
17226     * @category Lang
17227     * @param {*} value The value to check.
17228     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
17229     * @example
17230     *
17231     * _.isDate(new Date);
17232     * // => true
17233     *
17234     * _.isDate('Mon April 23 2012');
17235     * // => false
17236     */
17237    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
17238
17239    /**
17240     * Checks if `value` is likely a DOM element.
17241     *
17242     * @static
17243     * @memberOf _
17244     * @since 0.1.0
17245     * @category Lang
17246     * @param {*} value The value to check.
17247     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
17248     * @example
17249     *
17250     * _.isElement(document.body);
17251     * // => true
17252     *
17253     * _.isElement('<body>');
17254     * // => false
17255     */
17256    function isElement(value) {
17257      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
17258    }
17259
17260    /**
17261     * Checks if `value` is an empty object, collection, map, or set.
17262     *
17263     * Objects are considered empty if they have no own enumerable string keyed
17264     * properties.
17265     *
17266     * Array-like values such as `arguments` objects, arrays, buffers, strings, or
17267     * jQuery-like collections are considered empty if they have a `length` of `0`.
17268     * Similarly, maps and sets are considered empty if they have a `size` of `0`.
17269     *
17270     * @static
17271     * @memberOf _
17272     * @since 0.1.0
17273     * @category Lang
17274     * @param {*} value The value to check.
17275     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
17276     * @example
17277     *
17278     * _.isEmpty(null);
17279     * // => true
17280     *
17281     * _.isEmpty(true);
17282     * // => true
17283     *
17284     * _.isEmpty(1);
17285     * // => true
17286     *
17287     * _.isEmpty([1, 2, 3]);
17288     * // => false
17289     *
17290     * _.isEmpty({ 'a': 1 });
17291     * // => false
17292     */
17293    function isEmpty(value) {
17294      if (value == null) {
17295        return true;
17296      }
17297      if (isArrayLike(value) &&
17298          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
17299            isBuffer(value) || isTypedArray(value) || isArguments(value))) {
17300        return !value.length;
17301      }
17302      var tag = getTag(value);
17303      if (tag == mapTag || tag == setTag) {
17304        return !value.size;
17305      }
17306      if (isPrototype(value)) {
17307        return !baseKeys(value).length;
17308      }
17309      for (var key in value) {
17310        if (hasOwnProperty.call(value, key)) {
17311          return false;
17312        }
17313      }
17314      return true;
17315    }
17316
17317    /**
17318     * Performs a deep comparison between two values to determine if they are
17319     * equivalent.
17320     *
17321     * **Note:** This method supports comparing arrays, array buffers, booleans,
17322     * date objects, error objects, maps, numbers, `Object` objects, regexes,
17323     * sets, strings, symbols, and typed arrays. `Object` objects are compared
17324     * by their own, not inherited, enumerable properties. Functions and DOM
17325     * nodes are compared by strict equality, i.e. `===`.
17326     *
17327     * @static
17328     * @memberOf _
17329     * @since 0.1.0
17330     * @category Lang
17331     * @param {*} value The value to compare.
17332     * @param {*} other The other value to compare.
17333     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
17334     * @example
17335     *
17336     * var object = { 'a': 1 };
17337     * var other = { 'a': 1 };
17338     *
17339     * _.isEqual(object, other);
17340     * // => true
17341     *
17342     * object === other;
17343     * // => false
17344     */
17345    function isEqual(value, other) {
17346      return baseIsEqual(value, other);
17347    }
17348
17349    /**
17350     * This method is like `_.isEqual` except that it accepts `customizer` which
17351     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
17352     * are handled by the method instead. The `customizer` is invoked with up to
17353     * six arguments: (objValue, othValue [, index|key, object, other, stack]).
17354     *
17355     * @static
17356     * @memberOf _
17357     * @since 4.0.0
17358     * @category Lang
17359     * @param {*} value The value to compare.
17360     * @param {*} other The other value to compare.
17361     * @param {Function} [customizer] The function to customize comparisons.
17362     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
17363     * @example
17364     *
17365     * function isGreeting(value) {
17366     *   return /^h(?:i|ello)$/.test(value);
17367     * }
17368     *
17369     * function customizer(objValue, othValue) {
17370     *   if (isGreeting(objValue) && isGreeting(othValue)) {
17371     *     return true;
17372     *   }
17373     * }
17374     *
17375     * var array = ['hello', 'goodbye'];
17376     * var other = ['hi', 'goodbye'];
17377     *
17378     * _.isEqualWith(array, other, customizer);
17379     * // => true
17380     */
17381    function isEqualWith(value, other, customizer) {
17382      customizer = typeof customizer == 'function' ? customizer : undefined;
17383      var result = customizer ? customizer(value, other) : undefined;
17384      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
17385    }
17386
17387    /**
17388     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
17389     * `SyntaxError`, `TypeError`, or `URIError` object.
17390     *
17391     * @static
17392     * @memberOf _
17393     * @since 3.0.0
17394     * @category Lang
17395     * @param {*} value The value to check.
17396     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
17397     * @example
17398     *
17399     * _.isError(new Error);
17400     * // => true
17401     *
17402     * _.isError(Error);
17403     * // => false
17404     */
17405    function isError(value) {
17406      if (!isObjectLike(value)) {
17407        return false;
vendor: 6,607 bytes, lines 17408-17645
17408      }
17409      var tag = baseGetTag(value);
17410      return tag == errorTag || tag == domExcTag ||
17411        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
17412    }
17413
17414    /**
17415     * Checks if `value` is a finite primitive number.
17416     *
17417     * **Note:** This method is based on
17418     * [`Number.isFinite`](https://mdn.io/Number/isFinite).
17419     *
17420     * @static
17421     * @memberOf _
17422     * @since 0.1.0
17423     * @category Lang
17424     * @param {*} value The value to check.
17425     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
17426     * @example
17427     *
17428     * _.isFinite(3);
17429     * // => true
17430     *
17431     * _.isFinite(Number.MIN_VALUE);
17432     * // => true
17433     *
17434     * _.isFinite(Infinity);
17435     * // => false
17436     *
17437     * _.isFinite('3');
17438     * // => false
17439     */
17440    function isFinite(value) {
17441      return typeof value == 'number' && nativeIsFinite(value);
17442    }
17443
17444    /**
17445     * Checks if `value` is classified as a `Function` object.
17446     *
17447     * @static
17448     * @memberOf _
17449     * @since 0.1.0
17450     * @category Lang
17451     * @param {*} value The value to check.
17452     * @returns {boolean} Returns `true` if `value` is a function, else `false`.
17453     * @example
17454     *
17455     * _.isFunction(_);
17456     * // => true
17457     *
17458     * _.isFunction(/abc/);
17459     * // => false
17460     */
17461    function isFunction(value) {
17462      if (!isObject(value)) {
17463        return false;
17464      }
17465      // The use of `Object#toString` avoids issues with the `typeof` operator
17466      // in Safari 9 which returns 'object' for typed arrays and other constructors.
17467      var tag = baseGetTag(value);
17468      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
17469    }
17470
17471    /**
17472     * Checks if `value` is an integer.
17473     *
17474     * **Note:** This method is based on
17475     * [`Number.isInteger`](https://mdn.io/Number/isInteger).
17476     *
17477     * @static
17478     * @memberOf _
17479     * @since 4.0.0
17480     * @category Lang
17481     * @param {*} value The value to check.
17482     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
17483     * @example
17484     *
17485     * _.isInteger(3);
17486     * // => true
17487     *
17488     * _.isInteger(Number.MIN_VALUE);
17489     * // => false
17490     *
17491     * _.isInteger(Infinity);
17492     * // => false
17493     *
17494     * _.isInteger('3');
17495     * // => false
17496     */
17497    function isInteger(value) {
17498      return typeof value == 'number' && value == toInteger(value);
17499    }
17500
17501    /**
17502     * Checks if `value` is a valid array-like length.
17503     *
17504     * **Note:** This method is loosely based on
17505     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
17506     *
17507     * @static
17508     * @memberOf _
17509     * @since 4.0.0
17510     * @category Lang
17511     * @param {*} value The value to check.
17512     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
17513     * @example
17514     *
17515     * _.isLength(3);
17516     * // => true
17517     *
17518     * _.isLength(Number.MIN_VALUE);
17519     * // => false
17520     *
17521     * _.isLength(Infinity);
17522     * // => false
17523     *
17524     * _.isLength('3');
17525     * // => false
17526     */
17527    function isLength(value) {
17528      return typeof value == 'number' &&
17529        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
17530    }
17531
17532    /**
17533     * Checks if `value` is the
17534     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
17535     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
17536     *
17537     * @static
17538     * @memberOf _
17539     * @since 0.1.0
17540     * @category Lang
17541     * @param {*} value The value to check.
17542     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
17543     * @example
17544     *
17545     * _.isObject({});
17546     * // => true
17547     *
17548     * _.isObject([1, 2, 3]);
17549     * // => true
17550     *
17551     * _.isObject(_.noop);
17552     * // => true
17553     *
17554     * _.isObject(null);
17555     * // => false
17556     */
17557    function isObject(value) {
17558      var type = typeof value;
17559      return value != null && (type == 'object' || type == 'function');
17560    }
17561
17562    /**
17563     * Checks if `value` is object-like. A value is object-like if it's not `null`
17564     * and has a `typeof` result of "object".
17565     *
17566     * @static
17567     * @memberOf _
17568     * @since 4.0.0
17569     * @category Lang
17570     * @param {*} value The value to check.
17571     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
17572     * @example
17573     *
17574     * _.isObjectLike({});
17575     * // => true
17576     *
17577     * _.isObjectLike([1, 2, 3]);
17578     * // => true
17579     *
17580     * _.isObjectLike(_.noop);
17581     * // => false
17582     *
17583     * _.isObjectLike(null);
17584     * // => false
17585     */
17586    function isObjectLike(value) {
17587      return value != null && typeof value == 'object';
17588    }
17589
17590    /**
17591     * Checks if `value` is classified as a `Map` object.
17592     *
17593     * @static
17594     * @memberOf _
17595     * @since 4.3.0
17596     * @category Lang
17597     * @param {*} value The value to check.
17598     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
17599     * @example
17600     *
17601     * _.isMap(new Map);
17602     * // => true
17603     *
17604     * _.isMap(new WeakMap);
17605     * // => false
17606     */
17607    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
17608
17609    /**
17610     * Performs a partial deep comparison between `object` and `source` to
17611     * determine if `object` contains equivalent property values.
17612     *
17613     * **Note:** This method is equivalent to `_.matches` when `source` is
17614     * partially applied.
17615     *
17616     * Partial comparisons will match empty array and empty object `source`
17617     * values against any array or object value, respectively. See `_.isEqual`
17618     * for a list of supported value comparisons.
17619     *
17620     * @static
17621     * @memberOf _
17622     * @since 3.0.0
17623     * @category Lang
17624     * @param {Object} object The object to inspect.
17625     * @param {Object} source The object of property values to match.
17626     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
17627     * @example
17628     *
17629     * var object = { 'a': 1, 'b': 2 };
17630     *
17631     * _.isMatch(object, { 'b': 2 });
17632     * // => true
17633     *
17634     * _.isMatch(object, { 'b': 1 });
17635     * // => false
17636     */
17637    function isMatch(object, source) {
17638      return object === source || baseIsMatch(object, source, getMatchData(source));
17639    }
17640
17641    /**
17642     * This method is like `_.isMatch` except that it accepts `customizer` which
17643     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
17644     * are handled by the method instead. The `customizer` is invoked with five
17645     * arguments: (objValue, srcValue, index|key, object, source).
vendor: 12,241 bytes, lines 17646-18111
17646     *
17647     * @static
17648     * @memberOf _
17649     * @since 4.0.0
17650     * @category Lang
17651     * @param {Object} object The object to inspect.
17652     * @param {Object} source The object of property values to match.
17653     * @param {Function} [customizer] The function to customize comparisons.
17654     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
17655     * @example
17656     *
17657     * function isGreeting(value) {
17658     *   return /^h(?:i|ello)$/.test(value);
17659     * }
17660     *
17661     * function customizer(objValue, srcValue) {
17662     *   if (isGreeting(objValue) && isGreeting(srcValue)) {
17663     *     return true;
17664     *   }
17665     * }
17666     *
17667     * var object = { 'greeting': 'hello' };
17668     * var source = { 'greeting': 'hi' };
17669     *
17670     * _.isMatchWith(object, source, customizer);
17671     * // => true
17672     */
17673    function isMatchWith(object, source, customizer) {
17674      customizer = typeof customizer == 'function' ? customizer : undefined;
17675      return baseIsMatch(object, source, getMatchData(source), customizer);
17676    }
17677
17678    /**
17679     * Checks if `value` is `NaN`.
17680     *
17681     * **Note:** This method is based on
17682     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
17683     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
17684     * `undefined` and other non-number values.
17685     *
17686     * @static
17687     * @memberOf _
17688     * @since 0.1.0
17689     * @category Lang
17690     * @param {*} value The value to check.
17691     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
17692     * @example
17693     *
17694     * _.isNaN(NaN);
17695     * // => true
17696     *
17697     * _.isNaN(new Number(NaN));
17698     * // => true
17699     *
17700     * isNaN(undefined);
17701     * // => true
17702     *
17703     * _.isNaN(undefined);
17704     * // => false
17705     */
17706    function isNaN(value) {
17707      // An `NaN` primitive is the only value that is not equal to itself.
17708      // Perform the `toStringTag` check first to avoid errors with some
17709      // ActiveX objects in IE.
17710      return isNumber(value) && value != +value;
17711    }
17712
17713    /**
17714     * Checks if `value` is a pristine native function.
17715     *
17716     * **Note:** This method can't reliably detect native functions in the presence
17717     * of the core-js package because core-js circumvents this kind of detection.
17718     * Despite multiple requests, the core-js maintainer has made it clear: any
17719     * attempt to fix the detection will be obstructed. As a result, we're left
17720     * with little choice but to throw an error. Unfortunately, this also affects
17721     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
17722     * which rely on core-js.
17723     *
17724     * @static
17725     * @memberOf _
17726     * @since 3.0.0
17727     * @category Lang
17728     * @param {*} value The value to check.
17729     * @returns {boolean} Returns `true` if `value` is a native function,
17730     *  else `false`.
17731     * @example
17732     *
17733     * _.isNative(Array.prototype.push);
17734     * // => true
17735     *
17736     * _.isNative(_);
17737     * // => false
17738     */
17739    function isNative(value) {
17740      if (isMaskable(value)) {
17741        throw new Error(CORE_ERROR_TEXT);
17742      }
17743      return baseIsNative(value);
17744    }
17745
17746    /**
17747     * Checks if `value` is `null`.
17748     *
17749     * @static
17750     * @memberOf _
17751     * @since 0.1.0
17752     * @category Lang
17753     * @param {*} value The value to check.
17754     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
17755     * @example
17756     *
17757     * _.isNull(null);
17758     * // => true
17759     *
17760     * _.isNull(void 0);
17761     * // => false
17762     */
17763    function isNull(value) {
17764      return value === null;
17765    }
17766
17767    /**
17768     * Checks if `value` is `null` or `undefined`.
17769     *
17770     * @static
17771     * @memberOf _
17772     * @since 4.0.0
17773     * @category Lang
17774     * @param {*} value The value to check.
17775     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
17776     * @example
17777     *
17778     * _.isNil(null);
17779     * // => true
17780     *
17781     * _.isNil(void 0);
17782     * // => true
17783     *
17784     * _.isNil(NaN);
17785     * // => false
17786     */
17787    function isNil(value) {
17788      return value == null;
17789    }
17790
17791    /**
17792     * Checks if `value` is classified as a `Number` primitive or object.
17793     *
17794     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
17795     * classified as numbers, use the `_.isFinite` method.
17796     *
17797     * @static
17798     * @memberOf _
17799     * @since 0.1.0
17800     * @category Lang
17801     * @param {*} value The value to check.
17802     * @returns {boolean} Returns `true` if `value` is a number, else `false`.
17803     * @example
17804     *
17805     * _.isNumber(3);
17806     * // => true
17807     *
17808     * _.isNumber(Number.MIN_VALUE);
17809     * // => true
17810     *
17811     * _.isNumber(Infinity);
17812     * // => true
17813     *
17814     * _.isNumber('3');
17815     * // => false
17816     */
17817    function isNumber(value) {
17818      return typeof value == 'number' ||
17819        (isObjectLike(value) && baseGetTag(value) == numberTag);
17820    }
17821
17822    /**
17823     * Checks if `value` is a plain object, that is, an object created by the
17824     * `Object` constructor or one with a `[[Prototype]]` of `null`.
17825     *
17826     * @static
17827     * @memberOf _
17828     * @since 0.8.0
17829     * @category Lang
17830     * @param {*} value The value to check.
17831     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
17832     * @example
17833     *
17834     * function Foo() {
17835     *   this.a = 1;
17836     * }
17837     *
17838     * _.isPlainObject(new Foo);
17839     * // => false
17840     *
17841     * _.isPlainObject([1, 2, 3]);
17842     * // => false
17843     *
17844     * _.isPlainObject({ 'x': 0, 'y': 0 });
17845     * // => true
17846     *
17847     * _.isPlainObject(Object.create(null));
17848     * // => true
17849     */
17850    function isPlainObject(value) {
17851      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
17852        return false;
17853      }
17854      var proto = getPrototype(value);
17855      if (proto === null) {
17856        return true;
17857      }
17858      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
17859      return typeof Ctor == 'function' && Ctor instanceof Ctor &&
17860        funcToString.call(Ctor) == objectCtorString;
17861    }
17862
17863    /**
17864     * Checks if `value` is classified as a `RegExp` object.
17865     *
17866     * @static
17867     * @memberOf _
17868     * @since 0.1.0
17869     * @category Lang
17870     * @param {*} value The value to check.
17871     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
17872     * @example
17873     *
17874     * _.isRegExp(/abc/);
17875     * // => true
17876     *
17877     * _.isRegExp('/abc/');
17878     * // => false
17879     */
17880    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
17881
17882    /**
17883     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
17884     * double precision number which isn't the result of a rounded unsafe integer.
17885     *
17886     * **Note:** This method is based on
17887     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
17888     *
17889     * @static
17890     * @memberOf _
17891     * @since 4.0.0
17892     * @category Lang
17893     * @param {*} value The value to check.
17894     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
17895     * @example
17896     *
17897     * _.isSafeInteger(3);
17898     * // => true
17899     *
17900     * _.isSafeInteger(Number.MIN_VALUE);
17901     * // => false
17902     *
17903     * _.isSafeInteger(Infinity);
17904     * // => false
17905     *
17906     * _.isSafeInteger('3');
17907     * // => false
17908     */
17909    function isSafeInteger(value) {
17910      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
17911    }
17912
17913    /**
17914     * Checks if `value` is classified as a `Set` object.
17915     *
17916     * @static
17917     * @memberOf _
17918     * @since 4.3.0
17919     * @category Lang
17920     * @param {*} value The value to check.
17921     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
17922     * @example
17923     *
17924     * _.isSet(new Set);
17925     * // => true
17926     *
17927     * _.isSet(new WeakSet);
17928     * // => false
17929     */
17930    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
17931
17932    /**
17933     * Checks if `value` is classified as a `String` primitive or object.
17934     *
17935     * @static
17936     * @since 0.1.0
17937     * @memberOf _
17938     * @category Lang
17939     * @param {*} value The value to check.
17940     * @returns {boolean} Returns `true` if `value` is a string, else `false`.
17941     * @example
17942     *
17943     * _.isString('abc');
17944     * // => true
17945     *
17946     * _.isString(1);
17947     * // => false
17948     */
17949    function isString(value) {
17950      return typeof value == 'string' ||
17951        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
17952    }
17953
17954    /**
17955     * Checks if `value` is classified as a `Symbol` primitive or object.
17956     *
17957     * @static
17958     * @memberOf _
17959     * @since 4.0.0
17960     * @category Lang
17961     * @param {*} value The value to check.
17962     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
17963     * @example
17964     *
17965     * _.isSymbol(Symbol.iterator);
17966     * // => true
17967     *
17968     * _.isSymbol('abc');
17969     * // => false
17970     */
17971    function isSymbol(value) {
17972      return typeof value == 'symbol' ||
17973        (isObjectLike(value) && baseGetTag(value) == symbolTag);
17974    }
17975
17976    /**
17977     * Checks if `value` is classified as a typed array.
17978     *
17979     * @static
17980     * @memberOf _
17981     * @since 3.0.0
17982     * @category Lang
17983     * @param {*} value The value to check.
17984     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
17985     * @example
17986     *
17987     * _.isTypedArray(new Uint8Array);
17988     * // => true
17989     *
17990     * _.isTypedArray([]);
17991     * // => false
17992     */
17993    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
17994
17995    /**
17996     * Checks if `value` is `undefined`.
17997     *
17998     * @static
17999     * @since 0.1.0
18000     * @memberOf _
18001     * @category Lang
18002     * @param {*} value The value to check.
18003     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
18004     * @example
18005     *
18006     * _.isUndefined(void 0);
18007     * // => true
18008     *
18009     * _.isUndefined(null);
18010     * // => false
18011     */
18012    function isUndefined(value) {
18013      return value === undefined;
18014    }
18015
18016    /**
18017     * Checks if `value` is classified as a `WeakMap` object.
18018     *
18019     * @static
18020     * @memberOf _
18021     * @since 4.3.0
18022     * @category Lang
18023     * @param {*} value The value to check.
18024     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
18025     * @example
18026     *
18027     * _.isWeakMap(new WeakMap);
18028     * // => true
18029     *
18030     * _.isWeakMap(new Map);
18031     * // => false
18032     */
18033    function isWeakMap(value) {
18034      return isObjectLike(value) && getTag(value) == weakMapTag;
18035    }
18036
18037    /**
18038     * Checks if `value` is classified as a `WeakSet` object.
18039     *
18040     * @static
18041     * @memberOf _
18042     * @since 4.3.0
18043     * @category Lang
18044     * @param {*} value The value to check.
18045     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
18046     * @example
18047     *
18048     * _.isWeakSet(new WeakSet);
18049     * // => true
18050     *
18051     * _.isWeakSet(new Set);
18052     * // => false
18053     */
18054    function isWeakSet(value) {
18055      return isObjectLike(value) && baseGetTag(value) == weakSetTag;
18056    }
18057
18058    /**
18059     * Checks if `value` is less than `other`.
18060     *
18061     * @static
18062     * @memberOf _
18063     * @since 3.9.0
18064     * @category Lang
18065     * @param {*} value The value to compare.
18066     * @param {*} other The other value to compare.
18067     * @returns {boolean} Returns `true` if `value` is less than `other`,
18068     *  else `false`.
18069     * @see _.gt
18070     * @example
18071     *
18072     * _.lt(1, 3);
18073     * // => true
18074     *
18075     * _.lt(3, 3);
18076     * // => false
18077     *
18078     * _.lt(3, 1);
18079     * // => false
18080     */
18081    var lt = createRelationalOperation(baseLt);
18082
18083    /**
18084     * Checks if `value` is less than or equal to `other`.
18085     *
18086     * @static
18087     * @memberOf _
18088     * @since 3.9.0
18089     * @category Lang
18090     * @param {*} value The value to compare.
18091     * @param {*} other The other value to compare.
18092     * @returns {boolean} Returns `true` if `value` is less than or equal to
18093     *  `other`, else `false`.
18094     * @see _.gte
18095     * @example
18096     *
18097     * _.lte(1, 3);
18098     * // => true
18099     *
18100     * _.lte(3, 3);
18101     * // => true
18102     *
18103     * _.lte(3, 1);
18104     * // => false
18105     */
18106    var lte = createRelationalOperation(function(value, other) {
18107      return value <= other;
18108    });
18109
18110    /**
18111     * Converts `value` to an array.
vendor: 11,756 bytes, lines 18112-18541
18112     *
18113     * @static
18114     * @since 0.1.0
18115     * @memberOf _
18116     * @category Lang
18117     * @param {*} value The value to convert.
18118     * @returns {Array} Returns the converted array.
18119     * @example
18120     *
18121     * _.toArray({ 'a': 1, 'b': 2 });
18122     * // => [1, 2]
18123     *
18124     * _.toArray('abc');
18125     * // => ['a', 'b', 'c']
18126     *
18127     * _.toArray(1);
18128     * // => []
18129     *
18130     * _.toArray(null);
18131     * // => []
18132     */
18133    function toArray(value) {
18134      if (!value) {
18135        return [];
18136      }
18137      if (isArrayLike(value)) {
18138        return isString(value) ? stringToArray(value) : copyArray(value);
18139      }
18140      if (symIterator && value[symIterator]) {
18141        return iteratorToArray(value[symIterator]());
18142      }
18143      var tag = getTag(value),
18144          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
18145
18146      return func(value);
18147    }
18148
18149    /**
18150     * Converts `value` to a finite number.
18151     *
18152     * @static
18153     * @memberOf _
18154     * @since 4.12.0
18155     * @category Lang
18156     * @param {*} value The value to convert.
18157     * @returns {number} Returns the converted number.
18158     * @example
18159     *
18160     * _.toFinite(3.2);
18161     * // => 3.2
18162     *
18163     * _.toFinite(Number.MIN_VALUE);
18164     * // => 5e-324
18165     *
18166     * _.toFinite(Infinity);
18167     * // => 1.7976931348623157e+308
18168     *
18169     * _.toFinite('3.2');
18170     * // => 3.2
18171     */
18172    function toFinite(value) {
18173      if (!value) {
18174        return value === 0 ? value : 0;
18175      }
18176      value = toNumber(value);
18177      if (value === INFINITY || value === -INFINITY) {
18178        var sign = (value < 0 ? -1 : 1);
18179        return sign * MAX_INTEGER;
18180      }
18181      return value === value ? value : 0;
18182    }
18183
18184    /**
18185     * Converts `value` to an integer.
18186     *
18187     * **Note:** This method is loosely based on
18188     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
18189     *
18190     * @static
18191     * @memberOf _
18192     * @since 4.0.0
18193     * @category Lang
18194     * @param {*} value The value to convert.
18195     * @returns {number} Returns the converted integer.
18196     * @example
18197     *
18198     * _.toInteger(3.2);
18199     * // => 3
18200     *
18201     * _.toInteger(Number.MIN_VALUE);
18202     * // => 0
18203     *
18204     * _.toInteger(Infinity);
18205     * // => 1.7976931348623157e+308
18206     *
18207     * _.toInteger('3.2');
18208     * // => 3
18209     */
18210    function toInteger(value) {
18211      var result = toFinite(value),
18212          remainder = result % 1;
18213
18214      return result === result ? (remainder ? result - remainder : result) : 0;
18215    }
18216
18217    /**
18218     * Converts `value` to an integer suitable for use as the length of an
18219     * array-like object.
18220     *
18221     * **Note:** This method is based on
18222     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
18223     *
18224     * @static
18225     * @memberOf _
18226     * @since 4.0.0
18227     * @category Lang
18228     * @param {*} value The value to convert.
18229     * @returns {number} Returns the converted integer.
18230     * @example
18231     *
18232     * _.toLength(3.2);
18233     * // => 3
18234     *
18235     * _.toLength(Number.MIN_VALUE);
18236     * // => 0
18237     *
18238     * _.toLength(Infinity);
18239     * // => 4294967295
18240     *
18241     * _.toLength('3.2');
18242     * // => 3
18243     */
18244    function toLength(value) {
18245      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
18246    }
18247
18248    /**
18249     * Converts `value` to a number.
18250     *
18251     * @static
18252     * @memberOf _
18253     * @since 4.0.0
18254     * @category Lang
18255     * @param {*} value The value to process.
18256     * @returns {number} Returns the number.
18257     * @example
18258     *
18259     * _.toNumber(3.2);
18260     * // => 3.2
18261     *
18262     * _.toNumber(Number.MIN_VALUE);
18263     * // => 5e-324
18264     *
18265     * _.toNumber(Infinity);
18266     * // => Infinity
18267     *
18268     * _.toNumber('3.2');
18269     * // => 3.2
18270     */
18271    function toNumber(value) {
18272      if (typeof value == 'number') {
18273        return value;
18274      }
18275      if (isSymbol(value)) {
18276        return NAN;
18277      }
18278      if (isObject(value)) {
18279        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
18280        value = isObject(other) ? (other + '') : other;
18281      }
18282      if (typeof value != 'string') {
18283        return value === 0 ? value : +value;
18284      }
18285      value = baseTrim(value);
18286      var isBinary = reIsBinary.test(value);
18287      return (isBinary || reIsOctal.test(value))
18288        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
18289        : (reIsBadHex.test(value) ? NAN : +value);
18290    }
18291
18292    /**
18293     * Converts `value` to a plain object flattening inherited enumerable string
18294     * keyed properties of `value` to own properties of the plain object.
18295     *
18296     * @static
18297     * @memberOf _
18298     * @since 3.0.0
18299     * @category Lang
18300     * @param {*} value The value to convert.
18301     * @returns {Object} Returns the converted plain object.
18302     * @example
18303     *
18304     * function Foo() {
18305     *   this.b = 2;
18306     * }
18307     *
18308     * Foo.prototype.c = 3;
18309     *
18310     * _.assign({ 'a': 1 }, new Foo);
18311     * // => { 'a': 1, 'b': 2 }
18312     *
18313     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
18314     * // => { 'a': 1, 'b': 2, 'c': 3 }
18315     */
18316    function toPlainObject(value) {
18317      return copyObject(value, keysIn(value));
18318    }
18319
18320    /**
18321     * Converts `value` to a safe integer. A safe integer can be compared and
18322     * represented correctly.
18323     *
18324     * @static
18325     * @memberOf _
18326     * @since 4.0.0
18327     * @category Lang
18328     * @param {*} value The value to convert.
18329     * @returns {number} Returns the converted integer.
18330     * @example
18331     *
18332     * _.toSafeInteger(3.2);
18333     * // => 3
18334     *
18335     * _.toSafeInteger(Number.MIN_VALUE);
18336     * // => 0
18337     *
18338     * _.toSafeInteger(Infinity);
18339     * // => 9007199254740991
18340     *
18341     * _.toSafeInteger('3.2');
18342     * // => 3
18343     */
18344    function toSafeInteger(value) {
18345      return value
18346        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
18347        : (value === 0 ? value : 0);
18348    }
18349
18350    /**
18351     * Converts `value` to a string. An empty string is returned for `null`
18352     * and `undefined` values. The sign of `-0` is preserved.
18353     *
18354     * @static
18355     * @memberOf _
18356     * @since 4.0.0
18357     * @category Lang
18358     * @param {*} value The value to convert.
18359     * @returns {string} Returns the converted string.
18360     * @example
18361     *
18362     * _.toString(null);
18363     * // => ''
18364     *
18365     * _.toString(-0);
18366     * // => '-0'
18367     *
18368     * _.toString([1, 2, 3]);
18369     * // => '1,2,3'
18370     */
18371    function toString(value) {
18372      return value == null ? '' : baseToString(value);
18373    }
18374
18375    /*------------------------------------------------------------------------*/
18376
18377    /**
18378     * Assigns own enumerable string keyed properties of source objects to the
18379     * destination object. Source objects are applied from left to right.
18380     * Subsequent sources overwrite property assignments of previous sources.
18381     *
18382     * **Note:** This method mutates `object` and is loosely based on
18383     * [`Object.assign`](https://mdn.io/Object/assign).
18384     *
18385     * @static
18386     * @memberOf _
18387     * @since 0.10.0
18388     * @category Object
18389     * @param {Object} object The destination object.
18390     * @param {...Object} [sources] The source objects.
18391     * @returns {Object} Returns `object`.
18392     * @see _.assignIn
18393     * @example
18394     *
18395     * function Foo() {
18396     *   this.a = 1;
18397     * }
18398     *
18399     * function Bar() {
18400     *   this.c = 3;
18401     * }
18402     *
18403     * Foo.prototype.b = 2;
18404     * Bar.prototype.d = 4;
18405     *
18406     * _.assign({ 'a': 0 }, new Foo, new Bar);
18407     * // => { 'a': 1, 'c': 3 }
18408     */
18409    var assign = createAssigner(function(object, source) {
18410      if (isPrototype(source) || isArrayLike(source)) {
18411        copyObject(source, keys(source), object);
18412        return;
18413      }
18414      for (var key in source) {
18415        if (hasOwnProperty.call(source, key)) {
18416          assignValue(object, key, source[key]);
18417        }
18418      }
18419    });
18420
18421    /**
18422     * This method is like `_.assign` except that it iterates over own and
18423     * inherited source properties.
18424     *
18425     * **Note:** This method mutates `object`.
18426     *
18427     * @static
18428     * @memberOf _
18429     * @since 4.0.0
18430     * @alias extend
18431     * @category Object
18432     * @param {Object} object The destination object.
18433     * @param {...Object} [sources] The source objects.
18434     * @returns {Object} Returns `object`.
18435     * @see _.assign
18436     * @example
18437     *
18438     * function Foo() {
18439     *   this.a = 1;
18440     * }
18441     *
18442     * function Bar() {
18443     *   this.c = 3;
18444     * }
18445     *
18446     * Foo.prototype.b = 2;
18447     * Bar.prototype.d = 4;
18448     *
18449     * _.assignIn({ 'a': 0 }, new Foo, new Bar);
18450     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
18451     */
18452    var assignIn = createAssigner(function(object, source) {
18453      copyObject(source, keysIn(source), object);
18454    });
18455
18456    /**
18457     * This method is like `_.assignIn` except that it accepts `customizer`
18458     * which is invoked to produce the assigned values. If `customizer` returns
18459     * `undefined`, assignment is handled by the method instead. The `customizer`
18460     * is invoked with five arguments: (objValue, srcValue, key, object, source).
18461     *
18462     * **Note:** This method mutates `object`.
18463     *
18464     * @static
18465     * @memberOf _
18466     * @since 4.0.0
18467     * @alias extendWith
18468     * @category Object
18469     * @param {Object} object The destination object.
18470     * @param {...Object} sources The source objects.
18471     * @param {Function} [customizer] The function to customize assigned values.
18472     * @returns {Object} Returns `object`.
18473     * @see _.assignWith
18474     * @example
18475     *
18476     * function customizer(objValue, srcValue) {
18477     *   return _.isUndefined(objValue) ? srcValue : objValue;
18478     * }
18479     *
18480     * var defaults = _.partialRight(_.assignInWith, customizer);
18481     *
18482     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
18483     * // => { 'a': 1, 'b': 2 }
18484     */
18485    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
18486      copyObject(source, keysIn(source), object, customizer);
18487    });
18488
18489    /**
18490     * This method is like `_.assign` except that it accepts `customizer`
18491     * which is invoked to produce the assigned values. If `customizer` returns
18492     * `undefined`, assignment is handled by the method instead. The `customizer`
18493     * is invoked with five arguments: (objValue, srcValue, key, object, source).
18494     *
18495     * **Note:** This method mutates `object`.
18496     *
18497     * @static
18498     * @memberOf _
18499     * @since 4.0.0
18500     * @category Object
18501     * @param {Object} object The destination object.
18502     * @param {...Object} sources The source objects.
18503     * @param {Function} [customizer] The function to customize assigned values.
18504     * @returns {Object} Returns `object`.
18505     * @see _.assignInWith
18506     * @example
18507     *
18508     * function customizer(objValue, srcValue) {
18509     *   return _.isUndefined(objValue) ? srcValue : objValue;
18510     * }
18511     *
18512     * var defaults = _.partialRight(_.assignWith, customizer);
18513     *
18514     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
18515     * // => { 'a': 1, 'b': 2 }
18516     */
18517    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
18518      copyObject(source, keys(source), object, customizer);
18519    });
18520
18521    /**
18522     * Creates an array of values corresponding to `paths` of `object`.
18523     *
18524     * @static
18525     * @memberOf _
18526     * @since 1.0.0
18527     * @category Object
18528     * @param {Object} object The object to iterate over.
18529     * @param {...(string|string[])} [paths] The property paths to pick.
18530     * @returns {Array} Returns the picked values.
18531     * @example
18532     *
18533     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
18534     *
18535     * _.at(object, ['a[0].b.c', 'a[1]']);
18536     * // => [3, 4]
18537     */
18538    var at = flatRest(baseAt);
18539
18540    /**
18541     * Creates an object that inherits from the `prototype` object. If a
vendor: 13,619 bytes, lines 18542-19006
18542     * `properties` object is given, its own enumerable string keyed properties
18543     * are assigned to the created object.
18544     *
18545     * @static
18546     * @memberOf _
18547     * @since 2.3.0
18548     * @category Object
18549     * @param {Object} prototype The object to inherit from.
18550     * @param {Object} [properties] The properties to assign to the object.
18551     * @returns {Object} Returns the new object.
18552     * @example
18553     *
18554     * function Shape() {
18555     *   this.x = 0;
18556     *   this.y = 0;
18557     * }
18558     *
18559     * function Circle() {
18560     *   Shape.call(this);
18561     * }
18562     *
18563     * Circle.prototype = _.create(Shape.prototype, {
18564     *   'constructor': Circle
18565     * });
18566     *
18567     * var circle = new Circle;
18568     * circle instanceof Circle;
18569     * // => true
18570     *
18571     * circle instanceof Shape;
18572     * // => true
18573     */
18574    function create(prototype, properties) {
18575      var result = baseCreate(prototype);
18576      return properties == null ? result : baseAssign(result, properties);
18577    }
18578
18579    /**
18580     * Assigns own and inherited enumerable string keyed properties of source
18581     * objects to the destination object for all destination properties that
18582     * resolve to `undefined`. Source objects are applied from left to right.
18583     * Once a property is set, additional values of the same property are ignored.
18584     *
18585     * **Note:** This method mutates `object`.
18586     *
18587     * @static
18588     * @since 0.1.0
18589     * @memberOf _
18590     * @category Object
18591     * @param {Object} object The destination object.
18592     * @param {...Object} [sources] The source objects.
18593     * @returns {Object} Returns `object`.
18594     * @see _.defaultsDeep
18595     * @example
18596     *
18597     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
18598     * // => { 'a': 1, 'b': 2 }
18599     */
18600    var defaults = baseRest(function(object, sources) {
18601      object = Object(object);
18602
18603      var index = -1;
18604      var length = sources.length;
18605      var guard = length > 2 ? sources[2] : undefined;
18606
18607      if (guard && isIterateeCall(sources[0], sources[1], guard)) {
18608        length = 1;
18609      }
18610
18611      while (++index < length) {
18612        var source = sources[index];
18613        var props = keysIn(source);
18614        var propsIndex = -1;
18615        var propsLength = props.length;
18616
18617        while (++propsIndex < propsLength) {
18618          var key = props[propsIndex];
18619          var value = object[key];
18620
18621          if (value === undefined ||
18622              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
18623            object[key] = source[key];
18624          }
18625        }
18626      }
18627
18628      return object;
18629    });
18630
18631    /**
18632     * This method is like `_.defaults` except that it recursively assigns
18633     * default properties.
18634     *
18635     * **Note:** This method mutates `object`.
18636     *
18637     * @static
18638     * @memberOf _
18639     * @since 3.10.0
18640     * @category Object
18641     * @param {Object} object The destination object.
18642     * @param {...Object} [sources] The source objects.
18643     * @returns {Object} Returns `object`.
18644     * @see _.defaults
18645     * @example
18646     *
18647     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
18648     * // => { 'a': { 'b': 2, 'c': 3 } }
18649     */
18650    var defaultsDeep = baseRest(function(args) {
18651      args.push(undefined, customDefaultsMerge);
18652      return apply(mergeWith, undefined, args);
18653    });
18654
18655    /**
18656     * This method is like `_.find` except that it returns the key of the first
18657     * element `predicate` returns truthy for instead of the element itself.
18658     *
18659     * @static
18660     * @memberOf _
18661     * @since 1.1.0
18662     * @category Object
18663     * @param {Object} object The object to inspect.
18664     * @param {Function} [predicate=_.identity] The function invoked per iteration.
18665     * @returns {string|undefined} Returns the key of the matched element,
18666     *  else `undefined`.
18667     * @example
18668     *
18669     * var users = {
18670     *   'barney':  { 'age': 36, 'active': true },
18671     *   'fred':    { 'age': 40, 'active': false },
18672     *   'pebbles': { 'age': 1,  'active': true }
18673     * };
18674     *
18675     * _.findKey(users, function(o) { return o.age < 40; });
18676     * // => 'barney' (iteration order is not guaranteed)
18677     *
18678     * // The `_.matches` iteratee shorthand.
18679     * _.findKey(users, { 'age': 1, 'active': true });
18680     * // => 'pebbles'
18681     *
18682     * // The `_.matchesProperty` iteratee shorthand.
18683     * _.findKey(users, ['active', false]);
18684     * // => 'fred'
18685     *
18686     * // The `_.property` iteratee shorthand.
18687     * _.findKey(users, 'active');
18688     * // => 'barney'
18689     */
18690    function findKey(object, predicate) {
18691      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
18692    }
18693
18694    /**
18695     * This method is like `_.findKey` except that it iterates over elements of
18696     * a collection in the opposite order.
18697     *
18698     * @static
18699     * @memberOf _
18700     * @since 2.0.0
18701     * @category Object
18702     * @param {Object} object The object to inspect.
18703     * @param {Function} [predicate=_.identity] The function invoked per iteration.
18704     * @returns {string|undefined} Returns the key of the matched element,
18705     *  else `undefined`.
18706     * @example
18707     *
18708     * var users = {
18709     *   'barney':  { 'age': 36, 'active': true },
18710     *   'fred':    { 'age': 40, 'active': false },
18711     *   'pebbles': { 'age': 1,  'active': true }
18712     * };
18713     *
18714     * _.findLastKey(users, function(o) { return o.age < 40; });
18715     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
18716     *
18717     * // The `_.matches` iteratee shorthand.
18718     * _.findLastKey(users, { 'age': 36, 'active': true });
18719     * // => 'barney'
18720     *
18721     * // The `_.matchesProperty` iteratee shorthand.
18722     * _.findLastKey(users, ['active', false]);
18723     * // => 'fred'
18724     *
18725     * // The `_.property` iteratee shorthand.
18726     * _.findLastKey(users, 'active');
18727     * // => 'pebbles'
18728     */
18729    function findLastKey(object, predicate) {
18730      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
18731    }
18732
18733    /**
18734     * Iterates over own and inherited enumerable string keyed properties of an
18735     * object and invokes `iteratee` for each property. The iteratee is invoked
18736     * with three arguments: (value, key, object). Iteratee functions may exit
18737     * iteration early by explicitly returning `false`.
18738     *
18739     * @static
18740     * @memberOf _
18741     * @since 0.3.0
18742     * @category Object
18743     * @param {Object} object The object to iterate over.
18744     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18745     * @returns {Object} Returns `object`.
18746     * @see _.forInRight
18747     * @example
18748     *
18749     * function Foo() {
18750     *   this.a = 1;
18751     *   this.b = 2;
18752     * }
18753     *
18754     * Foo.prototype.c = 3;
18755     *
18756     * _.forIn(new Foo, function(value, key) {
18757     *   console.log(key);
18758     * });
18759     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
18760     */
18761    function forIn(object, iteratee) {
18762      return object == null
18763        ? object
18764        : baseFor(object, getIteratee(iteratee, 3), keysIn);
18765    }
18766
18767    /**
18768     * This method is like `_.forIn` except that it iterates over properties of
18769     * `object` in the opposite order.
18770     *
18771     * @static
18772     * @memberOf _
18773     * @since 2.0.0
18774     * @category Object
18775     * @param {Object} object The object to iterate over.
18776     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18777     * @returns {Object} Returns `object`.
18778     * @see _.forIn
18779     * @example
18780     *
18781     * function Foo() {
18782     *   this.a = 1;
18783     *   this.b = 2;
18784     * }
18785     *
18786     * Foo.prototype.c = 3;
18787     *
18788     * _.forInRight(new Foo, function(value, key) {
18789     *   console.log(key);
18790     * });
18791     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
18792     */
18793    function forInRight(object, iteratee) {
18794      return object == null
18795        ? object
18796        : baseForRight(object, getIteratee(iteratee, 3), keysIn);
18797    }
18798
18799    /**
18800     * Iterates over own enumerable string keyed properties of an object and
18801     * invokes `iteratee` for each property. The iteratee is invoked with three
18802     * arguments: (value, key, object). Iteratee functions may exit iteration
18803     * early by explicitly returning `false`.
18804     *
18805     * @static
18806     * @memberOf _
18807     * @since 0.3.0
18808     * @category Object
18809     * @param {Object} object The object to iterate over.
18810     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18811     * @returns {Object} Returns `object`.
18812     * @see _.forOwnRight
18813     * @example
18814     *
18815     * function Foo() {
18816     *   this.a = 1;
18817     *   this.b = 2;
18818     * }
18819     *
18820     * Foo.prototype.c = 3;
18821     *
18822     * _.forOwn(new Foo, function(value, key) {
18823     *   console.log(key);
18824     * });
18825     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
18826     */
18827    function forOwn(object, iteratee) {
18828      return object && baseForOwn(object, getIteratee(iteratee, 3));
18829    }
18830
18831    /**
18832     * This method is like `_.forOwn` except that it iterates over properties of
18833     * `object` in the opposite order.
18834     *
18835     * @static
18836     * @memberOf _
18837     * @since 2.0.0
18838     * @category Object
18839     * @param {Object} object The object to iterate over.
18840     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18841     * @returns {Object} Returns `object`.
18842     * @see _.forOwn
18843     * @example
18844     *
18845     * function Foo() {
18846     *   this.a = 1;
18847     *   this.b = 2;
18848     * }
18849     *
18850     * Foo.prototype.c = 3;
18851     *
18852     * _.forOwnRight(new Foo, function(value, key) {
18853     *   console.log(key);
18854     * });
18855     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
18856     */
18857    function forOwnRight(object, iteratee) {
18858      return object && baseForOwnRight(object, getIteratee(iteratee, 3));
18859    }
18860
18861    /**
18862     * Creates an array of function property names from own enumerable properties
18863     * of `object`.
18864     *
18865     * @static
18866     * @since 0.1.0
18867     * @memberOf _
18868     * @category Object
18869     * @param {Object} object The object to inspect.
18870     * @returns {Array} Returns the function names.
18871     * @see _.functionsIn
18872     * @example
18873     *
18874     * function Foo() {
18875     *   this.a = _.constant('a');
18876     *   this.b = _.constant('b');
18877     * }
18878     *
18879     * Foo.prototype.c = _.constant('c');
18880     *
18881     * _.functions(new Foo);
18882     * // => ['a', 'b']
18883     */
18884    function functions(object) {
18885      return object == null ? [] : baseFunctions(object, keys(object));
18886    }
18887
18888    /**
18889     * Creates an array of function property names from own and inherited
18890     * enumerable properties of `object`.
18891     *
18892     * @static
18893     * @memberOf _
18894     * @since 4.0.0
18895     * @category Object
18896     * @param {Object} object The object to inspect.
18897     * @returns {Array} Returns the function names.
18898     * @see _.functions
18899     * @example
18900     *
18901     * function Foo() {
18902     *   this.a = _.constant('a');
18903     *   this.b = _.constant('b');
18904     * }
18905     *
18906     * Foo.prototype.c = _.constant('c');
18907     *
18908     * _.functionsIn(new Foo);
18909     * // => ['a', 'b', 'c']
18910     */
18911    function functionsIn(object) {
18912      return object == null ? [] : baseFunctions(object, keysIn(object));
18913    }
18914
18915    /**
18916     * Gets the value at `path` of `object`. If the resolved value is
18917     * `undefined`, the `defaultValue` is returned in its place.
18918     *
18919     * @static
18920     * @memberOf _
18921     * @since 3.7.0
18922     * @category Object
18923     * @param {Object} object The object to query.
18924     * @param {Array|string} path The path of the property to get.
18925     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
18926     * @returns {*} Returns the resolved value.
18927     * @example
18928     *
18929     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
18930     *
18931     * _.get(object, 'a[0].b.c');
18932     * // => 3
18933     *
18934     * _.get(object, ['a', '0', 'b', 'c']);
18935     * // => 3
18936     *
18937     * _.get(object, 'a.b.c', 'default');
18938     * // => 'default'
18939     */
18940    function get(object, path, defaultValue) {
18941      var result = object == null ? undefined : baseGet(object, path);
18942      return result === undefined ? defaultValue : result;
18943    }
18944
18945    /**
18946     * Checks if `path` is a direct property of `object`.
18947     *
18948     * @static
18949     * @since 0.1.0
18950     * @memberOf _
18951     * @category Object
18952     * @param {Object} object The object to query.
18953     * @param {Array|string} path The path to check.
18954     * @returns {boolean} Returns `true` if `path` exists, else `false`.
18955     * @example
18956     *
18957     * var object = { 'a': { 'b': 2 } };
18958     * var other = _.create({ 'a': _.create({ 'b': 2 }) });
18959     *
18960     * _.has(object, 'a');
18961     * // => true
18962     *
18963     * _.has(object, 'a.b');
18964     * // => true
18965     *
18966     * _.has(object, ['a', 'b']);
18967     * // => true
18968     *
18969     * _.has(other, 'a');
18970     * // => false
18971     */
18972    function has(object, path) {
18973      return object != null && hasPath(object, path, baseHas);
18974    }
18975
18976    /**
18977     * Checks if `path` is a direct or inherited property of `object`.
18978     *
18979     * @static
18980     * @memberOf _
18981     * @since 4.0.0
18982     * @category Object
18983     * @param {Object} object The object to query.
18984     * @param {Array|string} path The path to check.
18985     * @returns {boolean} Returns `true` if `path` exists, else `false`.
18986     * @example
18987     *
18988     * var object = _.create({ 'a': _.create({ 'b': 2 }) });
18989     *
18990     * _.hasIn(object, 'a');
18991     * // => true
18992     *
18993     * _.hasIn(object, 'a.b');
18994     * // => true
18995     *
18996     * _.hasIn(object, ['a', 'b']);
18997     * // => true
18998     *
18999     * _.hasIn(object, 'b');
19000     * // => false
19001     */
19002    function hasIn(object, path) {
19003      return object != null && hasPath(object, path, baseHasIn);
19004    }
19005
19006    /**
vendor: 11,848 bytes, lines 19007-19377
19007     * Creates an object composed of the inverted keys and values of `object`.
19008     * If `object` contains duplicate values, subsequent values overwrite
19009     * property assignments of previous values.
19010     *
19011     * @static
19012     * @memberOf _
19013     * @since 0.7.0
19014     * @category Object
19015     * @param {Object} object The object to invert.
19016     * @returns {Object} Returns the new inverted object.
19017     * @example
19018     *
19019     * var object = { 'a': 1, 'b': 2, 'c': 1 };
19020     *
19021     * _.invert(object);
19022     * // => { '1': 'c', '2': 'b' }
19023     */
19024    var invert = createInverter(function(result, value, key) {
19025      if (value != null &&
19026          typeof value.toString != 'function') {
19027        value = nativeObjectToString.call(value);
19028      }
19029
19030      result[value] = key;
19031    }, constant(identity));
19032
19033    /**
19034     * This method is like `_.invert` except that the inverted object is generated
19035     * from the results of running each element of `object` thru `iteratee`. The
19036     * corresponding inverted value of each inverted key is an array of keys
19037     * responsible for generating the inverted value. The iteratee is invoked
19038     * with one argument: (value).
19039     *
19040     * @static
19041     * @memberOf _
19042     * @since 4.1.0
19043     * @category Object
19044     * @param {Object} object The object to invert.
19045     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
19046     * @returns {Object} Returns the new inverted object.
19047     * @example
19048     *
19049     * var object = { 'a': 1, 'b': 2, 'c': 1 };
19050     *
19051     * _.invertBy(object);
19052     * // => { '1': ['a', 'c'], '2': ['b'] }
19053     *
19054     * _.invertBy(object, function(value) {
19055     *   return 'group' + value;
19056     * });
19057     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
19058     */
19059    var invertBy = createInverter(function(result, value, key) {
19060      if (value != null &&
19061          typeof value.toString != 'function') {
19062        value = nativeObjectToString.call(value);
19063      }
19064
19065      if (hasOwnProperty.call(result, value)) {
19066        result[value].push(key);
19067      } else {
19068        result[value] = [key];
19069      }
19070    }, getIteratee);
19071
19072    /**
19073     * Invokes the method at `path` of `object`.
19074     *
19075     * @static
19076     * @memberOf _
19077     * @since 4.0.0
19078     * @category Object
19079     * @param {Object} object The object to query.
19080     * @param {Array|string} path The path of the method to invoke.
19081     * @param {...*} [args] The arguments to invoke the method with.
19082     * @returns {*} Returns the result of the invoked method.
19083     * @example
19084     *
19085     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
19086     *
19087     * _.invoke(object, 'a[0].b.c.slice', 1, 3);
19088     * // => [2, 3]
19089     */
19090    var invoke = baseRest(baseInvoke);
19091
19092    /**
19093     * Creates an array of the own enumerable property names of `object`.
19094     *
19095     * **Note:** Non-object values are coerced to objects. See the
19096     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
19097     * for more details.
19098     *
19099     * @static
19100     * @since 0.1.0
19101     * @memberOf _
19102     * @category Object
19103     * @param {Object} object The object to query.
19104     * @returns {Array} Returns the array of property names.
19105     * @example
19106     *
19107     * function Foo() {
19108     *   this.a = 1;
19109     *   this.b = 2;
19110     * }
19111     *
19112     * Foo.prototype.c = 3;
19113     *
19114     * _.keys(new Foo);
19115     * // => ['a', 'b'] (iteration order is not guaranteed)
19116     *
19117     * _.keys('hi');
19118     * // => ['0', '1']
19119     */
19120    function keys(object) {
19121      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
19122    }
19123
19124    /**
19125     * Creates an array of the own and inherited enumerable property names of `object`.
19126     *
19127     * **Note:** Non-object values are coerced to objects.
19128     *
19129     * @static
19130     * @memberOf _
19131     * @since 3.0.0
19132     * @category Object
19133     * @param {Object} object The object to query.
19134     * @returns {Array} Returns the array of property names.
19135     * @example
19136     *
19137     * function Foo() {
19138     *   this.a = 1;
19139     *   this.b = 2;
19140     * }
19141     *
19142     * Foo.prototype.c = 3;
19143     *
19144     * _.keysIn(new Foo);
19145     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
19146     */
19147    function keysIn(object) {
19148      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
19149    }
19150
19151    /**
19152     * The opposite of `_.mapValues`; this method creates an object with the
19153     * same values as `object` and keys generated by running each own enumerable
19154     * string keyed property of `object` thru `iteratee`. The iteratee is invoked
19155     * with three arguments: (value, key, object).
19156     *
19157     * @static
19158     * @memberOf _
19159     * @since 3.8.0
19160     * @category Object
19161     * @param {Object} object The object to iterate over.
19162     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
19163     * @returns {Object} Returns the new mapped object.
19164     * @see _.mapValues
19165     * @example
19166     *
19167     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
19168     *   return key + value;
19169     * });
19170     * // => { 'a1': 1, 'b2': 2 }
19171     */
19172    function mapKeys(object, iteratee) {
19173      var result = {};
19174      iteratee = getIteratee(iteratee, 3);
19175
19176      baseForOwn(object, function(value, key, object) {
19177        baseAssignValue(result, iteratee(value, key, object), value);
19178      });
19179      return result;
19180    }
19181
19182    /**
19183     * Creates an object with the same keys as `object` and values generated
19184     * by running each own enumerable string keyed property of `object` thru
19185     * `iteratee`. The iteratee is invoked with three arguments:
19186     * (value, key, object).
19187     *
19188     * @static
19189     * @memberOf _
19190     * @since 2.4.0
19191     * @category Object
19192     * @param {Object} object The object to iterate over.
19193     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
19194     * @returns {Object} Returns the new mapped object.
19195     * @see _.mapKeys
19196     * @example
19197     *
19198     * var users = {
19199     *   'fred':    { 'user': 'fred',    'age': 40 },
19200     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
19201     * };
19202     *
19203     * _.mapValues(users, function(o) { return o.age; });
19204     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
19205     *
19206     * // The `_.property` iteratee shorthand.
19207     * _.mapValues(users, 'age');
19208     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
19209     */
19210    function mapValues(object, iteratee) {
19211      var result = {};
19212      iteratee = getIteratee(iteratee, 3);
19213
19214      baseForOwn(object, function(value, key, object) {
19215        baseAssignValue(result, key, iteratee(value, key, object));
19216      });
19217      return result;
19218    }
19219
19220    /**
19221     * This method is like `_.assign` except that it recursively merges own and
19222     * inherited enumerable string keyed properties of source objects into the
19223     * destination object. Source properties that resolve to `undefined` are
19224     * skipped if a destination value exists. Array and plain object properties
19225     * are merged recursively. Other objects and value types are overridden by
19226     * assignment. Source objects are applied from left to right. Subsequent
19227     * sources overwrite property assignments of previous sources.
19228     *
19229     * **Note:** This method mutates `object`.
19230     *
19231     * @static
19232     * @memberOf _
19233     * @since 0.5.0
19234     * @category Object
19235     * @param {Object} object The destination object.
19236     * @param {...Object} [sources] The source objects.
19237     * @returns {Object} Returns `object`.
19238     * @example
19239     *
19240     * var object = {
19241     *   'a': [{ 'b': 2 }, { 'd': 4 }]
19242     * };
19243     *
19244     * var other = {
19245     *   'a': [{ 'c': 3 }, { 'e': 5 }]
19246     * };
19247     *
19248     * _.merge(object, other);
19249     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
19250     */
19251    var merge = createAssigner(function(object, source, srcIndex) {
19252      baseMerge(object, source, srcIndex);
19253    });
19254
19255    /**
19256     * This method is like `_.merge` except that it accepts `customizer` which
19257     * is invoked to produce the merged values of the destination and source
19258     * properties. If `customizer` returns `undefined`, merging is handled by the
19259     * method instead. The `customizer` is invoked with six arguments:
19260     * (objValue, srcValue, key, object, source, stack).
19261     *
19262     * **Note:** This method mutates `object`.
19263     *
19264     * @static
19265     * @memberOf _
19266     * @since 4.0.0
19267     * @category Object
19268     * @param {Object} object The destination object.
19269     * @param {...Object} sources The source objects.
19270     * @param {Function} customizer The function to customize assigned values.
19271     * @returns {Object} Returns `object`.
19272     * @example
19273     *
19274     * function customizer(objValue, srcValue) {
19275     *   if (_.isArray(objValue)) {
19276     *     return objValue.concat(srcValue);
19277     *   }
19278     * }
19279     *
19280     * var object = { 'a': [1], 'b': [2] };
19281     * var other = { 'a': [3], 'b': [4] };
19282     *
19283     * _.mergeWith(object, other, customizer);
19284     * // => { 'a': [1, 3], 'b': [2, 4] }
19285     */
19286    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
19287      baseMerge(object, source, srcIndex, customizer);
19288    });
19289
19290    /**
19291     * The opposite of `_.pick`; this method creates an object composed of the
19292     * own and inherited enumerable property paths of `object` that are not omitted.
19293     *
19294     * **Note:** This method is considerably slower than `_.pick`.
19295     *
19296     * @static
19297     * @since 0.1.0
19298     * @memberOf _
19299     * @category Object
19300     * @param {Object} object The source object.
19301     * @param {...(string|string[])} [paths] The property paths to omit.
19302     * @returns {Object} Returns the new object.
19303     * @example
19304     *
19305     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19306     *
19307     * _.omit(object, ['a', 'c']);
19308     * // => { 'b': '2' }
19309     */
19310    var omit = flatRest(function(object, paths) {
19311      var result = {};
19312      if (object == null) {
19313        return result;
19314      }
19315      var isDeep = false;
19316      paths = arrayMap(paths, function(path) {
19317        path = castPath(path, object);
19318        isDeep || (isDeep = path.length > 1);
19319        return path;
19320      });
19321      copyObject(object, getAllKeysIn(object), result);
19322      if (isDeep) {
19323        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
19324      }
19325      var length = paths.length;
19326      while (length--) {
19327        baseUnset(result, paths[length]);
19328      }
19329      return result;
19330    });
19331
19332    /**
19333     * The opposite of `_.pickBy`; this method creates an object composed of
19334     * the own and inherited enumerable string keyed properties of `object` that
19335     * `predicate` doesn't return truthy for. The predicate is invoked with two
19336     * arguments: (value, key).
19337     *
19338     * @static
19339     * @memberOf _
19340     * @since 4.0.0
19341     * @category Object
19342     * @param {Object} object The source object.
19343     * @param {Function} [predicate=_.identity] The function invoked per property.
19344     * @returns {Object} Returns the new object.
19345     * @example
19346     *
19347     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19348     *
19349     * _.omitBy(object, _.isNumber);
19350     * // => { 'b': '2' }
19351     */
19352    function omitBy(object, predicate) {
19353      return pickBy(object, negate(getIteratee(predicate)));
19354    }
19355
19356    /**
19357     * Creates an object composed of the picked `object` properties.
19358     *
19359     * @static
19360     * @since 0.1.0
19361     * @memberOf _
19362     * @category Object
19363     * @param {Object} object The source object.
19364     * @param {...(string|string[])} [paths] The property paths to pick.
19365     * @returns {Object} Returns the new object.
19366     * @example
19367     *
19368     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19369     *
19370     * _.pick(object, ['a', 'c']);
19371     * // => { 'a': 1, 'c': 3 }
19372     */
19373    var pick = flatRest(function(object, paths) {
19374      return object == null ? {} : basePick(object, paths);
19375    });
19376
19377    /**
vendor: 11,160 bytes, lines 19378-19716
19378     * Creates an object composed of the `object` properties `predicate` returns
19379     * truthy for. The predicate is invoked with two arguments: (value, key).
19380     *
19381     * @static
19382     * @memberOf _
19383     * @since 4.0.0
19384     * @category Object
19385     * @param {Object} object The source object.
19386     * @param {Function} [predicate=_.identity] The function invoked per property.
19387     * @returns {Object} Returns the new object.
19388     * @example
19389     *
19390     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19391     *
19392     * _.pickBy(object, _.isNumber);
19393     * // => { 'a': 1, 'c': 3 }
19394     */
19395    function pickBy(object, predicate) {
19396      if (object == null) {
19397        return {};
19398      }
19399      var props = arrayMap(getAllKeysIn(object), function(prop) {
19400        return [prop];
19401      });
19402      predicate = getIteratee(predicate);
19403      return basePickBy(object, props, function(value, path) {
19404        return predicate(value, path[0]);
19405      });
19406    }
19407
19408    /**
19409     * This method is like `_.get` except that if the resolved value is a
19410     * function it's invoked with the `this` binding of its parent object and
19411     * its result is returned.
19412     *
19413     * @static
19414     * @since 0.1.0
19415     * @memberOf _
19416     * @category Object
19417     * @param {Object} object The object to query.
19418     * @param {Array|string} path The path of the property to resolve.
19419     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
19420     * @returns {*} Returns the resolved value.
19421     * @example
19422     *
19423     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
19424     *
19425     * _.result(object, 'a[0].b.c1');
19426     * // => 3
19427     *
19428     * _.result(object, 'a[0].b.c2');
19429     * // => 4
19430     *
19431     * _.result(object, 'a[0].b.c3', 'default');
19432     * // => 'default'
19433     *
19434     * _.result(object, 'a[0].b.c3', _.constant('default'));
19435     * // => 'default'
19436     */
19437    function result(object, path, defaultValue) {
19438      path = castPath(path, object);
19439
19440      var index = -1,
19441          length = path.length;
19442
19443      // Ensure the loop is entered when path is empty.
19444      if (!length) {
19445        length = 1;
19446        object = undefined;
19447      }
19448      while (++index < length) {
19449        var value = object == null ? undefined : object[toKey(path[index])];
19450        if (value === undefined) {
19451          index = length;
19452          value = defaultValue;
19453        }
19454        object = isFunction(value) ? value.call(object) : value;
19455      }
19456      return object;
19457    }
19458
19459    /**
19460     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
19461     * it's created. Arrays are created for missing index properties while objects
19462     * are created for all other missing properties. Use `_.setWith` to customize
19463     * `path` creation.
19464     *
19465     * **Note:** This method mutates `object`.
19466     *
19467     * @static
19468     * @memberOf _
19469     * @since 3.7.0
19470     * @category Object
19471     * @param {Object} object The object to modify.
19472     * @param {Array|string} path The path of the property to set.
19473     * @param {*} value The value to set.
19474     * @returns {Object} Returns `object`.
19475     * @example
19476     *
19477     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
19478     *
19479     * _.set(object, 'a[0].b.c', 4);
19480     * console.log(object.a[0].b.c);
19481     * // => 4
19482     *
19483     * _.set(object, ['x', '0', 'y', 'z'], 5);
19484     * console.log(object.x[0].y.z);
19485     * // => 5
19486     */
19487    function set(object, path, value) {
19488      return object == null ? object : baseSet(object, path, value);
19489    }
19490
19491    /**
19492     * This method is like `_.set` except that it accepts `customizer` which is
19493     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
19494     * path creation is handled by the method instead. The `customizer` is invoked
19495     * with three arguments: (nsValue, key, nsObject).
19496     *
19497     * **Note:** This method mutates `object`.
19498     *
19499     * @static
19500     * @memberOf _
19501     * @since 4.0.0
19502     * @category Object
19503     * @param {Object} object The object to modify.
19504     * @param {Array|string} path The path of the property to set.
19505     * @param {*} value The value to set.
19506     * @param {Function} [customizer] The function to customize assigned values.
19507     * @returns {Object} Returns `object`.
19508     * @example
19509     *
19510     * var object = {};
19511     *
19512     * _.setWith(object, '[0][1]', 'a', Object);
19513     * // => { '0': { '1': 'a' } }
19514     */
19515    function setWith(object, path, value, customizer) {
19516      customizer = typeof customizer == 'function' ? customizer : undefined;
19517      return object == null ? object : baseSet(object, path, value, customizer);
19518    }
19519
19520    /**
19521     * Creates an array of own enumerable string keyed-value pairs for `object`
19522     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
19523     * entries are returned.
19524     *
19525     * @static
19526     * @memberOf _
19527     * @since 4.0.0
19528     * @alias entries
19529     * @category Object
19530     * @param {Object} object The object to query.
19531     * @returns {Array} Returns the key-value pairs.
19532     * @example
19533     *
19534     * function Foo() {
19535     *   this.a = 1;
19536     *   this.b = 2;
19537     * }
19538     *
19539     * Foo.prototype.c = 3;
19540     *
19541     * _.toPairs(new Foo);
19542     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
19543     */
19544    var toPairs = createToPairs(keys);
19545
19546    /**
19547     * Creates an array of own and inherited enumerable string keyed-value pairs
19548     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
19549     * or set, its entries are returned.
19550     *
19551     * @static
19552     * @memberOf _
19553     * @since 4.0.0
19554     * @alias entriesIn
19555     * @category Object
19556     * @param {Object} object The object to query.
19557     * @returns {Array} Returns the key-value pairs.
19558     * @example
19559     *
19560     * function Foo() {
19561     *   this.a = 1;
19562     *   this.b = 2;
19563     * }
19564     *
19565     * Foo.prototype.c = 3;
19566     *
19567     * _.toPairsIn(new Foo);
19568     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
19569     */
19570    var toPairsIn = createToPairs(keysIn);
19571
19572    /**
19573     * An alternative to `_.reduce`; this method transforms `object` to a new
19574     * `accumulator` object which is the result of running each of its own
19575     * enumerable string keyed properties thru `iteratee`, with each invocation
19576     * potentially mutating the `accumulator` object. If `accumulator` is not
19577     * provided, a new object with the same `[[Prototype]]` will be used. The
19578     * iteratee is invoked with four arguments: (accumulator, value, key, object).
19579     * Iteratee functions may exit iteration early by explicitly returning `false`.
19580     *
19581     * @static
19582     * @memberOf _
19583     * @since 1.3.0
19584     * @category Object
19585     * @param {Object} object The object to iterate over.
19586     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
19587     * @param {*} [accumulator] The custom accumulator value.
19588     * @returns {*} Returns the accumulated value.
19589     * @example
19590     *
19591     * _.transform([2, 3, 4], function(result, n) {
19592     *   result.push(n *= n);
19593     *   return n % 2 == 0;
19594     * }, []);
19595     * // => [4, 9]
19596     *
19597     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
19598     *   (result[value] || (result[value] = [])).push(key);
19599     * }, {});
19600     * // => { '1': ['a', 'c'], '2': ['b'] }
19601     */
19602    function transform(object, iteratee, accumulator) {
19603      var isArr = isArray(object),
19604          isArrLike = isArr || isBuffer(object) || isTypedArray(object);
19605
19606      iteratee = getIteratee(iteratee, 4);
19607      if (accumulator == null) {
19608        var Ctor = object && object.constructor;
19609        if (isArrLike) {
19610          accumulator = isArr ? new Ctor : [];
19611        }
19612        else if (isObject(object)) {
19613          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
19614        }
19615        else {
19616          accumulator = {};
19617        }
19618      }
19619      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
19620        return iteratee(accumulator, value, index, object);
19621      });
19622      return accumulator;
19623    }
19624
19625    /**
19626     * Removes the property at `path` of `object`.
19627     *
19628     * **Note:** This method mutates `object`.
19629     *
19630     * @static
19631     * @memberOf _
19632     * @since 4.0.0
19633     * @category Object
19634     * @param {Object} object The object to modify.
19635     * @param {Array|string} path The path of the property to unset.
19636     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
19637     * @example
19638     *
19639     * var object = { 'a': [{ 'b': { 'c': 7 } }] };
19640     * _.unset(object, 'a[0].b.c');
19641     * // => true
19642     *
19643     * console.log(object);
19644     * // => { 'a': [{ 'b': {} }] };
19645     *
19646     * _.unset(object, ['a', '0', 'b', 'c']);
19647     * // => true
19648     *
19649     * console.log(object);
19650     * // => { 'a': [{ 'b': {} }] };
19651     */
19652    function unset(object, path) {
19653      return object == null ? true : baseUnset(object, path);
19654    }
19655
19656    /**
19657     * This method is like `_.set` except that accepts `updater` to produce the
19658     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
19659     * is invoked with one argument: (value).
19660     *
19661     * **Note:** This method mutates `object`.
19662     *
19663     * @static
19664     * @memberOf _
19665     * @since 4.6.0
19666     * @category Object
19667     * @param {Object} object The object to modify.
19668     * @param {Array|string} path The path of the property to set.
19669     * @param {Function} updater The function to produce the updated value.
19670     * @returns {Object} Returns `object`.
19671     * @example
19672     *
19673     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
19674     *
19675     * _.update(object, 'a[0].b.c', function(n) { return n * n; });
19676     * console.log(object.a[0].b.c);
19677     * // => 9
19678     *
19679     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
19680     * console.log(object.x[0].y.z);
19681     * // => 0
19682     */
19683    function update(object, path, updater) {
19684      return object == null ? object : baseUpdate(object, path, castFunction(updater));
19685    }
19686
19687    /**
19688     * This method is like `_.update` except that it accepts `customizer` which is
19689     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
19690     * path creation is handled by the method instead. The `customizer` is invoked
19691     * with three arguments: (nsValue, key, nsObject).
19692     *
19693     * **Note:** This method mutates `object`.
19694     *
19695     * @static
19696     * @memberOf _
19697     * @since 4.6.0
19698     * @category Object
19699     * @param {Object} object The object to modify.
19700     * @param {Array|string} path The path of the property to set.
19701     * @param {Function} updater The function to produce the updated value.
19702     * @param {Function} [customizer] The function to customize assigned values.
19703     * @returns {Object} Returns `object`.
19704     * @example
19705     *
19706     * var object = {};
19707     *
19708     * _.updateWith(object, '[0][1]', _.constant('a'), Object);
19709     * // => { '0': { '1': 'a' } }
19710     */
19711    function updateWith(object, path, updater, customizer) {
19712      customizer = typeof customizer == 'function' ? customizer : undefined;
19713      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
19714    }
19715
19716    /**
vendor: 1,263 bytes, lines 19717-19766
19717     * Creates an array of the own enumerable string keyed property values of `object`.
19718     *
19719     * **Note:** Non-object values are coerced to objects.
19720     *
19721     * @static
19722     * @since 0.1.0
19723     * @memberOf _
19724     * @category Object
19725     * @param {Object} object The object to query.
19726     * @returns {Array} Returns the array of property values.
19727     * @example
19728     *
19729     * function Foo() {
19730     *   this.a = 1;
19731     *   this.b = 2;
19732     * }
19733     *
19734     * Foo.prototype.c = 3;
19735     *
19736     * _.values(new Foo);
19737     * // => [1, 2] (iteration order is not guaranteed)
19738     *
19739     * _.values('hi');
19740     * // => ['h', 'i']
19741     */
19742    function values(object) {
19743      return object == null ? [] : baseValues(object, keys(object));
19744    }
19745
19746    /**
19747     * Creates an array of the own and inherited enumerable string keyed property
19748     * values of `object`.
19749     *
19750     * **Note:** Non-object values are coerced to objects.
19751     *
19752     * @static
19753     * @memberOf _
19754     * @since 3.0.0
19755     * @category Object
19756     * @param {Object} object The object to query.
19757     * @returns {Array} Returns the array of property values.
19758     * @example
19759     *
19760     * function Foo() {
19761     *   this.a = 1;
19762     *   this.b = 2;
19763     * }
19764     *
19765     * Foo.prototype.c = 3;
19766     *
vendor: 9,679 bytes, lines 19767-20087
19767     * _.valuesIn(new Foo);
19768     * // => [1, 2, 3] (iteration order is not guaranteed)
19769     */
19770    function valuesIn(object) {
19771      return object == null ? [] : baseValues(object, keysIn(object));
19772    }
19773
19774    /*------------------------------------------------------------------------*/
19775
19776    /**
19777     * Clamps `number` within the inclusive `lower` and `upper` bounds.
19778     *
19779     * @static
19780     * @memberOf _
19781     * @since 4.0.0
19782     * @category Number
19783     * @param {number} number The number to clamp.
19784     * @param {number} [lower] The lower bound.
19785     * @param {number} upper The upper bound.
19786     * @returns {number} Returns the clamped number.
19787     * @example
19788     *
19789     * _.clamp(-10, -5, 5);
19790     * // => -5
19791     *
19792     * _.clamp(10, -5, 5);
19793     * // => 5
19794     */
19795    function clamp(number, lower, upper) {
19796      if (upper === undefined) {
19797        upper = lower;
19798        lower = undefined;
19799      }
19800      if (upper !== undefined) {
19801        upper = toNumber(upper);
19802        upper = upper === upper ? upper : 0;
19803      }
19804      if (lower !== undefined) {
19805        lower = toNumber(lower);
19806        lower = lower === lower ? lower : 0;
19807      }
19808      return baseClamp(toNumber(number), lower, upper);
19809    }
19810
19811    /**
19812     * Checks if `n` is between `start` and up to, but not including, `end`. If
19813     * `end` is not specified, it's set to `start` with `start` then set to `0`.
19814     * If `start` is greater than `end` the params are swapped to support
19815     * negative ranges.
19816     *
19817     * @static
19818     * @memberOf _
19819     * @since 3.3.0
19820     * @category Number
19821     * @param {number} number The number to check.
19822     * @param {number} [start=0] The start of the range.
19823     * @param {number} end The end of the range.
19824     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
19825     * @see _.range, _.rangeRight
19826     * @example
19827     *
19828     * _.inRange(3, 2, 4);
19829     * // => true
19830     *
19831     * _.inRange(4, 8);
19832     * // => true
19833     *
19834     * _.inRange(4, 2);
19835     * // => false
19836     *
19837     * _.inRange(2, 2);
19838     * // => false
19839     *
19840     * _.inRange(1.2, 2);
19841     * // => true
19842     *
19843     * _.inRange(5.2, 4);
19844     * // => false
19845     *
19846     * _.inRange(-3, -2, -6);
19847     * // => true
19848     */
19849    function inRange(number, start, end) {
19850      start = toFinite(start);
19851      if (end === undefined) {
19852        end = start;
19853        start = 0;
19854      } else {
19855        end = toFinite(end);
19856      }
19857      number = toNumber(number);
19858      return baseInRange(number, start, end);
19859    }
19860
19861    /**
19862     * Produces a random number between the inclusive `lower` and `upper` bounds.
19863     * If only one argument is provided a number between `0` and the given number
19864     * is returned. If `floating` is `true`, or either `lower` or `upper` are
19865     * floats, a floating-point number is returned instead of an integer.
19866     *
19867     * **Note:** JavaScript follows the IEEE-754 standard for resolving
19868     * floating-point values which can produce unexpected results.
19869     *
19870     * @static
19871     * @memberOf _
19872     * @since 0.7.0
19873     * @category Number
19874     * @param {number} [lower=0] The lower bound.
19875     * @param {number} [upper=1] The upper bound.
19876     * @param {boolean} [floating] Specify returning a floating-point number.
19877     * @returns {number} Returns the random number.
19878     * @example
19879     *
19880     * _.random(0, 5);
19881     * // => an integer between 0 and 5
19882     *
19883     * _.random(5);
19884     * // => also an integer between 0 and 5
19885     *
19886     * _.random(5, true);
19887     * // => a floating-point number between 0 and 5
19888     *
19889     * _.random(1.2, 5.2);
19890     * // => a floating-point number between 1.2 and 5.2
19891     */
19892    function random(lower, upper, floating) {
19893      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
19894        upper = floating = undefined;
19895      }
19896      if (floating === undefined) {
19897        if (typeof upper == 'boolean') {
19898          floating = upper;
19899          upper = undefined;
19900        }
19901        else if (typeof lower == 'boolean') {
19902          floating = lower;
19903          lower = undefined;
19904        }
19905      }
19906      if (lower === undefined && upper === undefined) {
19907        lower = 0;
19908        upper = 1;
19909      }
19910      else {
19911        lower = toFinite(lower);
19912        if (upper === undefined) {
19913          upper = lower;
19914          lower = 0;
19915        } else {
19916          upper = toFinite(upper);
19917        }
19918      }
19919      if (lower > upper) {
19920        var temp = lower;
19921        lower = upper;
19922        upper = temp;
19923      }
19924      if (floating || lower % 1 || upper % 1) {
19925        var rand = nativeRandom();
19926        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
19927      }
19928      return baseRandom(lower, upper);
19929    }
19930
19931    /*------------------------------------------------------------------------*/
19932
19933    /**
19934     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
19935     *
19936     * @static
19937     * @memberOf _
19938     * @since 3.0.0
19939     * @category String
19940     * @param {string} [string=''] The string to convert.
19941     * @returns {string} Returns the camel cased string.
19942     * @example
19943     *
19944     * _.camelCase('Foo Bar');
19945     * // => 'fooBar'
19946     *
19947     * _.camelCase('--foo-bar--');
19948     * // => 'fooBar'
19949     *
19950     * _.camelCase('__FOO_BAR__');
19951     * // => 'fooBar'
19952     */
19953    var camelCase = createCompounder(function(result, word, index) {
19954      word = word.toLowerCase();
19955      return result + (index ? capitalize(word) : word);
19956    });
19957
19958    /**
19959     * Converts the first character of `string` to upper case and the remaining
19960     * to lower case.
19961     *
19962     * @static
19963     * @memberOf _
19964     * @since 3.0.0
19965     * @category String
19966     * @param {string} [string=''] The string to capitalize.
19967     * @returns {string} Returns the capitalized string.
19968     * @example
19969     *
19970     * _.capitalize('FRED');
19971     * // => 'Fred'
19972     */
19973    function capitalize(string) {
19974      return upperFirst(toString(string).toLowerCase());
19975    }
19976
19977    /**
19978     * Deburrs `string` by converting
19979     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
19980     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
19981     * letters to basic Latin letters and removing
19982     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
19983     *
19984     * @static
19985     * @memberOf _
19986     * @since 3.0.0
19987     * @category String
19988     * @param {string} [string=''] The string to deburr.
19989     * @returns {string} Returns the deburred string.
19990     * @example
19991     *
19992     * _.deburr('déjà vu');
19993     * // => 'deja vu'
19994     */
19995    function deburr(string) {
19996      string = toString(string);
19997      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
19998    }
19999
20000    /**
20001     * Checks if `string` ends with the given target string.
20002     *
20003     * @static
20004     * @memberOf _
20005     * @since 3.0.0
20006     * @category String
20007     * @param {string} [string=''] The string to inspect.
20008     * @param {string} [target] The string to search for.
20009     * @param {number} [position=string.length] The position to search up to.
20010     * @returns {boolean} Returns `true` if `string` ends with `target`,
20011     *  else `false`.
20012     * @example
20013     *
20014     * _.endsWith('abc', 'c');
20015     * // => true
20016     *
20017     * _.endsWith('abc', 'b');
20018     * // => false
20019     *
20020     * _.endsWith('abc', 'b', 2);
20021     * // => true
20022     */
20023    function endsWith(string, target, position) {
20024      string = toString(string);
20025      target = baseToString(target);
20026
20027      var length = string.length;
20028      position = position === undefined
20029        ? length
20030        : baseClamp(toInteger(position), 0, length);
20031
20032      var end = position;
20033      position -= target.length;
20034      return position >= 0 && string.slice(position, end) == target;
20035    }
20036
20037    /**
20038     * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
20039     * corresponding HTML entities.
20040     *
20041     * **Note:** No other characters are escaped. To escape additional
20042     * characters use a third-party library like [_he_](https://mths.be/he).
20043     *
20044     * Though the ">" character is escaped for symmetry, characters like
20045     * ">" and "/" don't need escaping in HTML and have no special meaning
20046     * unless they're part of a tag or unquoted attribute value. See
20047     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
20048     * (under "semi-related fun fact") for more details.
20049     *
20050     * When working with HTML you should always
20051     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
20052     * XSS vectors.
20053     *
20054     * @static
20055     * @since 0.1.0
20056     * @memberOf _
20057     * @category String
20058     * @param {string} [string=''] The string to escape.
20059     * @returns {string} Returns the escaped string.
20060     * @example
20061     *
20062     * _.escape('fred, barney, & pebbles');
20063     * // => 'fred, barney, &amp; pebbles'
20064     */
20065    function escape(string) {
20066      string = toString(string);
20067      return (string && reHasUnescapedHtml.test(string))
20068        ? string.replace(reUnescapedHtml, escapeHtmlChar)
20069        : string;
20070    }
20071
20072    /**
20073     * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
20074     * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
20075     *
20076     * @static
20077     * @memberOf _
20078     * @since 3.0.0
20079     * @category String
20080     * @param {string} [string=''] The string to escape.
20081     * @returns {string} Returns the escaped string.
20082     * @example
20083     *
20084     * _.escapeRegExp('[lodash](https://lodash.com/)');
20085     * // => '\[lodash\]\(https://lodash\.com/\)'
20086     */
20087    function escapeRegExp(string) {
vendor: 4,658 bytes, lines 20088-20257
20088      string = toString(string);
20089      return (string && reHasRegExpChar.test(string))
20090        ? string.replace(reRegExpChar, '\\$&')
20091        : string;
20092    }
20093
20094    /**
20095     * Converts `string` to
20096     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
20097     *
20098     * @static
20099     * @memberOf _
20100     * @since 3.0.0
20101     * @category String
20102     * @param {string} [string=''] The string to convert.
20103     * @returns {string} Returns the kebab cased string.
20104     * @example
20105     *
20106     * _.kebabCase('Foo Bar');
20107     * // => 'foo-bar'
20108     *
20109     * _.kebabCase('fooBar');
20110     * // => 'foo-bar'
20111     *
20112     * _.kebabCase('__FOO_BAR__');
20113     * // => 'foo-bar'
20114     */
20115    var kebabCase = createCompounder(function(result, word, index) {
20116      return result + (index ? '-' : '') + word.toLowerCase();
20117    });
20118
20119    /**
20120     * Converts `string`, as space separated words, to lower case.
20121     *
20122     * @static
20123     * @memberOf _
20124     * @since 4.0.0
20125     * @category String
20126     * @param {string} [string=''] The string to convert.
20127     * @returns {string} Returns the lower cased string.
20128     * @example
20129     *
20130     * _.lowerCase('--Foo-Bar--');
20131     * // => 'foo bar'
20132     *
20133     * _.lowerCase('fooBar');
20134     * // => 'foo bar'
20135     *
20136     * _.lowerCase('__FOO_BAR__');
20137     * // => 'foo bar'
20138     */
20139    var lowerCase = createCompounder(function(result, word, index) {
20140      return result + (index ? ' ' : '') + word.toLowerCase();
20141    });
20142
20143    /**
20144     * Converts the first character of `string` to lower case.
20145     *
20146     * @static
20147     * @memberOf _
20148     * @since 4.0.0
20149     * @category String
20150     * @param {string} [string=''] The string to convert.
20151     * @returns {string} Returns the converted string.
20152     * @example
20153     *
20154     * _.lowerFirst('Fred');
20155     * // => 'fred'
20156     *
20157     * _.lowerFirst('FRED');
20158     * // => 'fRED'
20159     */
20160    var lowerFirst = createCaseFirst('toLowerCase');
20161
20162    /**
20163     * Pads `string` on the left and right sides if it's shorter than `length`.
20164     * Padding characters are truncated if they can't be evenly divided by `length`.
20165     *
20166     * @static
20167     * @memberOf _
20168     * @since 3.0.0
20169     * @category String
20170     * @param {string} [string=''] The string to pad.
20171     * @param {number} [length=0] The padding length.
20172     * @param {string} [chars=' '] The string used as padding.
20173     * @returns {string} Returns the padded string.
20174     * @example
20175     *
20176     * _.pad('abc', 8);
20177     * // => '  abc   '
20178     *
20179     * _.pad('abc', 8, '_-');
20180     * // => '_-abc_-_'
20181     *
20182     * _.pad('abc', 3);
20183     * // => 'abc'
20184     */
20185    function pad(string, length, chars) {
20186      string = toString(string);
20187      length = toInteger(length);
20188
20189      var strLength = length ? stringSize(string) : 0;
20190      if (!length || strLength >= length) {
20191        return string;
20192      }
20193      var mid = (length - strLength) / 2;
20194      return (
20195        createPadding(nativeFloor(mid), chars) +
20196        string +
20197        createPadding(nativeCeil(mid), chars)
20198      );
20199    }
20200
20201    /**
20202     * Pads `string` on the right side if it's shorter than `length`. Padding
20203     * characters are truncated if they exceed `length`.
20204     *
20205     * @static
20206     * @memberOf _
20207     * @since 4.0.0
20208     * @category String
20209     * @param {string} [string=''] The string to pad.
20210     * @param {number} [length=0] The padding length.
20211     * @param {string} [chars=' '] The string used as padding.
20212     * @returns {string} Returns the padded string.
20213     * @example
20214     *
20215     * _.padEnd('abc', 6);
20216     * // => 'abc   '
20217     *
20218     * _.padEnd('abc', 6, '_-');
20219     * // => 'abc_-_'
20220     *
20221     * _.padEnd('abc', 3);
20222     * // => 'abc'
20223     */
20224    function padEnd(string, length, chars) {
20225      string = toString(string);
20226      length = toInteger(length);
20227
20228      var strLength = length ? stringSize(string) : 0;
20229      return (length && strLength < length)
20230        ? (string + createPadding(length - strLength, chars))
20231        : string;
20232    }
20233
20234    /**
20235     * Pads `string` on the left side if it's shorter than `length`. Padding
20236     * characters are truncated if they exceed `length`.
20237     *
20238     * @static
20239     * @memberOf _
20240     * @since 4.0.0
20241     * @category String
20242     * @param {string} [string=''] The string to pad.
20243     * @param {number} [length=0] The padding length.
20244     * @param {string} [chars=' '] The string used as padding.
20245     * @returns {string} Returns the padded string.
20246     * @example
20247     *
20248     * _.padStart('abc', 6);
20249     * // => '   abc'
20250     *
20251     * _.padStart('abc', 6, '_-');
20252     * // => '_-_abc'
20253     *
20254     * _.padStart('abc', 3);
20255     * // => 'abc'
20256     */
20257    function padStart(string, length, chars) {
vendor: 29,827 bytes, lines 20258-21155
20258      string = toString(string);
20259      length = toInteger(length);
20260
20261      var strLength = length ? stringSize(string) : 0;
20262      return (length && strLength < length)
20263        ? (createPadding(length - strLength, chars) + string)
20264        : string;
20265    }
20266
20267    /**
20268     * Converts `string` to an integer of the specified radix. If `radix` is
20269     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
20270     * hexadecimal, in which case a `radix` of `16` is used.
20271     *
20272     * **Note:** This method aligns with the
20273     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
20274     *
20275     * @static
20276     * @memberOf _
20277     * @since 1.1.0
20278     * @category String
20279     * @param {string} string The string to convert.
20280     * @param {number} [radix=10] The radix to interpret `value` by.
20281     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20282     * @returns {number} Returns the converted integer.
20283     * @example
20284     *
20285     * _.parseInt('08');
20286     * // => 8
20287     *
20288     * _.map(['6', '08', '10'], _.parseInt);
20289     * // => [6, 8, 10]
20290     */
20291    function parseInt(string, radix, guard) {
20292      if (guard || radix == null) {
20293        radix = 0;
20294      } else if (radix) {
20295        radix = +radix;
20296      }
20297      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
20298    }
20299
20300    /**
20301     * Repeats the given string `n` times.
20302     *
20303     * @static
20304     * @memberOf _
20305     * @since 3.0.0
20306     * @category String
20307     * @param {string} [string=''] The string to repeat.
20308     * @param {number} [n=1] The number of times to repeat the string.
20309     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20310     * @returns {string} Returns the repeated string.
20311     * @example
20312     *
20313     * _.repeat('*', 3);
20314     * // => '***'
20315     *
20316     * _.repeat('abc', 2);
20317     * // => 'abcabc'
20318     *
20319     * _.repeat('abc', 0);
20320     * // => ''
20321     */
20322    function repeat(string, n, guard) {
20323      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
20324        n = 1;
20325      } else {
20326        n = toInteger(n);
20327      }
20328      return baseRepeat(toString(string), n);
20329    }
20330
20331    /**
20332     * Replaces matches for `pattern` in `string` with `replacement`.
20333     *
20334     * **Note:** This method is based on
20335     * [`String#replace`](https://mdn.io/String/replace).
20336     *
20337     * @static
20338     * @memberOf _
20339     * @since 4.0.0
20340     * @category String
20341     * @param {string} [string=''] The string to modify.
20342     * @param {RegExp|string} pattern The pattern to replace.
20343     * @param {Function|string} replacement The match replacement.
20344     * @returns {string} Returns the modified string.
20345     * @example
20346     *
20347     * _.replace('Hi Fred', 'Fred', 'Barney');
20348     * // => 'Hi Barney'
20349     */
20350    function replace() {
20351      var args = arguments,
20352          string = toString(args[0]);
20353
20354      return args.length < 3 ? string : string.replace(args[1], args[2]);
20355    }
20356
20357    /**
20358     * Converts `string` to
20359     * [snake case](https://en.wikipedia.org/wiki/Snake_case).
20360     *
20361     * @static
20362     * @memberOf _
20363     * @since 3.0.0
20364     * @category String
20365     * @param {string} [string=''] The string to convert.
20366     * @returns {string} Returns the snake cased string.
20367     * @example
20368     *
20369     * _.snakeCase('Foo Bar');
20370     * // => 'foo_bar'
20371     *
20372     * _.snakeCase('fooBar');
20373     * // => 'foo_bar'
20374     *
20375     * _.snakeCase('--FOO-BAR--');
20376     * // => 'foo_bar'
20377     */
20378    var snakeCase = createCompounder(function(result, word, index) {
20379      return result + (index ? '_' : '') + word.toLowerCase();
20380    });
20381
20382    /**
20383     * Splits `string` by `separator`.
20384     *
20385     * **Note:** This method is based on
20386     * [`String#split`](https://mdn.io/String/split).
20387     *
20388     * @static
20389     * @memberOf _
20390     * @since 4.0.0
20391     * @category String
20392     * @param {string} [string=''] The string to split.
20393     * @param {RegExp|string} separator The separator pattern to split by.
20394     * @param {number} [limit] The length to truncate results to.
20395     * @returns {Array} Returns the string segments.
20396     * @example
20397     *
20398     * _.split('a-b-c', '-', 2);
20399     * // => ['a', 'b']
20400     */
20401    function split(string, separator, limit) {
20402      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
20403        separator = limit = undefined;
20404      }
20405      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
20406      if (!limit) {
20407        return [];
20408      }
20409      string = toString(string);
20410      if (string && (
20411            typeof separator == 'string' ||
20412            (separator != null && !isRegExp(separator))
20413          )) {
20414        separator = baseToString(separator);
20415        if (!separator && hasUnicode(string)) {
20416          return castSlice(stringToArray(string), 0, limit);
20417        }
20418      }
20419      return string.split(separator, limit);
20420    }
20421
20422    /**
20423     * Converts `string` to
20424     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
20425     *
20426     * @static
20427     * @memberOf _
20428     * @since 3.1.0
20429     * @category String
20430     * @param {string} [string=''] The string to convert.
20431     * @returns {string} Returns the start cased string.
20432     * @example
20433     *
20434     * _.startCase('--foo-bar--');
20435     * // => 'Foo Bar'
20436     *
20437     * _.startCase('fooBar');
20438     * // => 'Foo Bar'
20439     *
20440     * _.startCase('__FOO_BAR__');
20441     * // => 'FOO BAR'
20442     */
20443    var startCase = createCompounder(function(result, word, index) {
20444      return result + (index ? ' ' : '') + upperFirst(word);
20445    });
20446
20447    /**
20448     * Checks if `string` starts with the given target string.
20449     *
20450     * @static
20451     * @memberOf _
20452     * @since 3.0.0
20453     * @category String
20454     * @param {string} [string=''] The string to inspect.
20455     * @param {string} [target] The string to search for.
20456     * @param {number} [position=0] The position to search from.
20457     * @returns {boolean} Returns `true` if `string` starts with `target`,
20458     *  else `false`.
20459     * @example
20460     *
20461     * _.startsWith('abc', 'a');
20462     * // => true
20463     *
20464     * _.startsWith('abc', 'b');
20465     * // => false
20466     *
20467     * _.startsWith('abc', 'b', 1);
20468     * // => true
20469     */
20470    function startsWith(string, target, position) {
20471      string = toString(string);
20472      position = position == null
20473        ? 0
20474        : baseClamp(toInteger(position), 0, string.length);
20475
20476      target = baseToString(target);
20477      return string.slice(position, position + target.length) == target;
20478    }
20479
20480    /**
20481     * Creates a compiled template function that can interpolate data properties
20482     * in "interpolate" delimiters, HTML-escape interpolated data properties in
20483     * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
20484     * properties may be accessed as free variables in the template. If a setting
20485     * object is given, it takes precedence over `_.templateSettings` values.
20486     *
20487     * **Note:** In the development build `_.template` utilizes
20488     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
20489     * for easier debugging.
20490     *
20491     * For more information on precompiling templates see
20492     * [lodash's custom builds documentation](https://lodash.com/custom-builds).
20493     *
20494     * For more information on Chrome extension sandboxes see
20495     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
20496     *
20497     * @static
20498     * @since 0.1.0
20499     * @memberOf _
20500     * @category String
20501     * @param {string} [string=''] The template string.
20502     * @param {Object} [options={}] The options object.
20503     * @param {RegExp} [options.escape=_.templateSettings.escape]
20504     *  The HTML "escape" delimiter.
20505     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
20506     *  The "evaluate" delimiter.
20507     * @param {Object} [options.imports=_.templateSettings.imports]
20508     *  An object to import into the template as free variables.
20509     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
20510     *  The "interpolate" delimiter.
20511     * @param {string} [options.sourceURL='lodash.templateSources[n]']
20512     *  The sourceURL of the compiled template.
20513     * @param {string} [options.variable='obj']
20514     *  The data object variable name.
20515     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20516     * @returns {Function} Returns the compiled template function.
20517     * @example
20518     *
20519     * // Use the "interpolate" delimiter to create a compiled template.
20520     * var compiled = _.template('hello <%= user %>!');
20521     * compiled({ 'user': 'fred' });
20522     * // => 'hello fred!'
20523     *
20524     * // Use the HTML "escape" delimiter to escape data property values.
20525     * var compiled = _.template('<b><%- value %></b>');
20526     * compiled({ 'value': '<script>' });
20527     * // => '<b>&lt;script&gt;</b>'
20528     *
20529     * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
20530     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
20531     * compiled({ 'users': ['fred', 'barney'] });
20532     * // => '<li>fred</li><li>barney</li>'
20533     *
20534     * // Use the internal `print` function in "evaluate" delimiters.
20535     * var compiled = _.template('<% print("hello " + user); %>!');
20536     * compiled({ 'user': 'barney' });
20537     * // => 'hello barney!'
20538     *
20539     * // Use the ES template literal delimiter as an "interpolate" delimiter.
20540     * // Disable support by replacing the "interpolate" delimiter.
20541     * var compiled = _.template('hello ${ user }!');
20542     * compiled({ 'user': 'pebbles' });
20543     * // => 'hello pebbles!'
20544     *
20545     * // Use backslashes to treat delimiters as plain text.
20546     * var compiled = _.template('<%= "\\<%- value %\\>" %>');
20547     * compiled({ 'value': 'ignored' });
20548     * // => '<%- value %>'
20549     *
20550     * // Use the `imports` option to import `jQuery` as `jq`.
20551     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
20552     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
20553     * compiled({ 'users': ['fred', 'barney'] });
20554     * // => '<li>fred</li><li>barney</li>'
20555     *
20556     * // Use the `sourceURL` option to specify a custom sourceURL for the template.
20557     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
20558     * compiled(data);
20559     * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
20560     *
20561     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
20562     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
20563     * compiled.source;
20564     * // => function(data) {
20565     * //   var __t, __p = '';
20566     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
20567     * //   return __p;
20568     * // }
20569     *
20570     * // Use custom template delimiters.
20571     * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
20572     * var compiled = _.template('hello {{ user }}!');
20573     * compiled({ 'user': 'mustache' });
20574     * // => 'hello mustache!'
20575     *
20576     * // Use the `source` property to inline compiled templates for meaningful
20577     * // line numbers in error messages and stack traces.
20578     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
20579     *   var JST = {\
20580     *     "main": ' + _.template(mainText).source + '\
20581     *   };\
20582     * ');
20583     */
20584    function template(string, options, guard) {
20585      // Based on John Resig's `tmpl` implementation
20586      // (http://ejohn.org/blog/javascript-micro-templating/)
20587      // and Laura Doktorova's doT.js (https://github.com/olado/doT).
20588      var settings = lodash.templateSettings;
20589
20590      if (guard && isIterateeCall(string, options, guard)) {
20591        options = undefined;
20592      }
20593      string = toString(string);
20594      options = assignInWith({}, options, settings, customDefaultsAssignIn);
20595
20596      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
20597          importsKeys = keys(imports),
20598          importsValues = baseValues(imports, importsKeys);
20599
20600      var isEscaping,
20601          isEvaluating,
20602          index = 0,
20603          interpolate = options.interpolate || reNoMatch,
20604          source = "__p += '";
20605
20606      // Compile the regexp to match each delimiter.
20607      var reDelimiters = RegExp(
20608        (options.escape || reNoMatch).source + '|' +
20609        interpolate.source + '|' +
20610        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
20611        (options.evaluate || reNoMatch).source + '|$'
20612      , 'g');
20613
20614      // Use a sourceURL for easier debugging.
20615      // The sourceURL gets injected into the source that's eval-ed, so be careful
20616      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
20617      // and escape the comment, thus injecting code that gets evaled.
20618      var sourceURL = '//# sourceURL=' +
20619        (hasOwnProperty.call(options, 'sourceURL')
20620          ? (options.sourceURL + '').replace(/\s/g, ' ')
20621          : ('lodash.templateSources[' + (++templateCounter) + ']')
20622        ) + '\n';
20623
20624      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
20625        interpolateValue || (interpolateValue = esTemplateValue);
20626
20627        // Escape characters that can't be included in string literals.
20628        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
20629
20630        // Replace delimiters with snippets.
20631        if (escapeValue) {
20632          isEscaping = true;
20633          source += "' +\n__e(" + escapeValue + ") +\n'";
20634        }
20635        if (evaluateValue) {
20636          isEvaluating = true;
20637          source += "';\n" + evaluateValue + ";\n__p += '";
20638        }
20639        if (interpolateValue) {
20640          source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
20641        }
20642        index = offset + match.length;
20643
20644        // The JS engine embedded in Adobe products needs `match` returned in
20645        // order to produce the correct `offset` value.
20646        return match;
20647      });
20648
20649      source += "';\n";
20650
20651      // If `variable` is not specified wrap a with-statement around the generated
20652      // code to add the data object to the top of the scope chain.
20653      var variable = hasOwnProperty.call(options, 'variable') && options.variable;
20654      if (!variable) {
20655        source = 'with (obj) {\n' + source + '\n}\n';
20656      }
20657      // Throw an error if a forbidden character was found in `variable`, to prevent
20658      // potential command injection attacks.
20659      else if (reForbiddenIdentifierChars.test(variable)) {
20660        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
20661      }
20662
20663      // Cleanup code by stripping empty strings.
20664      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
20665        .replace(reEmptyStringMiddle, '$1')
20666        .replace(reEmptyStringTrailing, '$1;');
20667
20668      // Frame code as the function body.
20669      source = 'function(' + (variable || 'obj') + ') {\n' +
20670        (variable
20671          ? ''
20672          : 'obj || (obj = {});\n'
20673        ) +
20674        "var __t, __p = ''" +
20675        (isEscaping
20676           ? ', __e = _.escape'
20677           : ''
20678        ) +
20679        (isEvaluating
20680          ? ', __j = Array.prototype.join;\n' +
20681            "function print() { __p += __j.call(arguments, '') }\n"
20682          : ';\n'
20683        ) +
20684        source +
20685        'return __p\n}';
20686
20687      var result = attempt(function() {
20688        return Function(importsKeys, sourceURL + 'return ' + source)
20689          .apply(undefined, importsValues);
20690      });
20691
20692      // Provide the compiled function's source by its `toString` method or
20693      // the `source` property as a convenience for inlining compiled templates.
20694      result.source = source;
20695      if (isError(result)) {
20696        throw result;
20697      }
20698      return result;
20699    }
20700
20701    /**
20702     * Converts `string`, as a whole, to lower case just like
20703     * [String#toLowerCase](https://mdn.io/toLowerCase).
20704     *
20705     * @static
20706     * @memberOf _
20707     * @since 4.0.0
20708     * @category String
20709     * @param {string} [string=''] The string to convert.
20710     * @returns {string} Returns the lower cased string.
20711     * @example
20712     *
20713     * _.toLower('--Foo-Bar--');
20714     * // => '--foo-bar--'
20715     *
20716     * _.toLower('fooBar');
20717     * // => 'foobar'
20718     *
20719     * _.toLower('__FOO_BAR__');
20720     * // => '__foo_bar__'
20721     */
20722    function toLower(value) {
20723      return toString(value).toLowerCase();
20724    }
20725
20726    /**
20727     * Converts `string`, as a whole, to upper case just like
20728     * [String#toUpperCase](https://mdn.io/toUpperCase).
20729     *
20730     * @static
20731     * @memberOf _
20732     * @since 4.0.0
20733     * @category String
20734     * @param {string} [string=''] The string to convert.
20735     * @returns {string} Returns the upper cased string.
20736     * @example
20737     *
20738     * _.toUpper('--foo-bar--');
20739     * // => '--FOO-BAR--'
20740     *
20741     * _.toUpper('fooBar');
20742     * // => 'FOOBAR'
20743     *
20744     * _.toUpper('__foo_bar__');
20745     * // => '__FOO_BAR__'
20746     */
20747    function toUpper(value) {
20748      return toString(value).toUpperCase();
20749    }
20750
20751    /**
20752     * Removes leading and trailing whitespace or specified characters from `string`.
20753     *
20754     * @static
20755     * @memberOf _
20756     * @since 3.0.0
20757     * @category String
20758     * @param {string} [string=''] The string to trim.
20759     * @param {string} [chars=whitespace] The characters to trim.
20760     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20761     * @returns {string} Returns the trimmed string.
20762     * @example
20763     *
20764     * _.trim('  abc  ');
20765     * // => 'abc'
20766     *
20767     * _.trim('-_-abc-_-', '_-');
20768     * // => 'abc'
20769     *
20770     * _.map(['  foo  ', '  bar  '], _.trim);
20771     * // => ['foo', 'bar']
20772     */
20773    function trim(string, chars, guard) {
20774      string = toString(string);
20775      if (string && (guard || chars === undefined)) {
20776        return baseTrim(string);
20777      }
20778      if (!string || !(chars = baseToString(chars))) {
20779        return string;
20780      }
20781      var strSymbols = stringToArray(string),
20782          chrSymbols = stringToArray(chars),
20783          start = charsStartIndex(strSymbols, chrSymbols),
20784          end = charsEndIndex(strSymbols, chrSymbols) + 1;
20785
20786      return castSlice(strSymbols, start, end).join('');
20787    }
20788
20789    /**
20790     * Removes trailing whitespace or specified characters from `string`.
20791     *
20792     * @static
20793     * @memberOf _
20794     * @since 4.0.0
20795     * @category String
20796     * @param {string} [string=''] The string to trim.
20797     * @param {string} [chars=whitespace] The characters to trim.
20798     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20799     * @returns {string} Returns the trimmed string.
20800     * @example
20801     *
20802     * _.trimEnd('  abc  ');
20803     * // => '  abc'
20804     *
20805     * _.trimEnd('-_-abc-_-', '_-');
20806     * // => '-_-abc'
20807     */
20808    function trimEnd(string, chars, guard) {
20809      string = toString(string);
20810      if (string && (guard || chars === undefined)) {
20811        return string.slice(0, trimmedEndIndex(string) + 1);
20812      }
20813      if (!string || !(chars = baseToString(chars))) {
20814        return string;
20815      }
20816      var strSymbols = stringToArray(string),
20817          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
20818
20819      return castSlice(strSymbols, 0, end).join('');
20820    }
20821
20822    /**
20823     * Removes leading whitespace or specified characters from `string`.
20824     *
20825     * @static
20826     * @memberOf _
20827     * @since 4.0.0
20828     * @category String
20829     * @param {string} [string=''] The string to trim.
20830     * @param {string} [chars=whitespace] The characters to trim.
20831     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20832     * @returns {string} Returns the trimmed string.
20833     * @example
20834     *
20835     * _.trimStart('  abc  ');
20836     * // => 'abc  '
20837     *
20838     * _.trimStart('-_-abc-_-', '_-');
20839     * // => 'abc-_-'
20840     */
20841    function trimStart(string, chars, guard) {
20842      string = toString(string);
20843      if (string && (guard || chars === undefined)) {
20844        return string.replace(reTrimStart, '');
20845      }
20846      if (!string || !(chars = baseToString(chars))) {
20847        return string;
20848      }
20849      var strSymbols = stringToArray(string),
20850          start = charsStartIndex(strSymbols, stringToArray(chars));
20851
20852      return castSlice(strSymbols, start).join('');
20853    }
20854
20855    /**
20856     * Truncates `string` if it's longer than the given maximum string length.
20857     * The last characters of the truncated string are replaced with the omission
20858     * string which defaults to "...".
20859     *
20860     * @static
20861     * @memberOf _
20862     * @since 4.0.0
20863     * @category String
20864     * @param {string} [string=''] The string to truncate.
20865     * @param {Object} [options={}] The options object.
20866     * @param {number} [options.length=30] The maximum string length.
20867     * @param {string} [options.omission='...'] The string to indicate text is omitted.
20868     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
20869     * @returns {string} Returns the truncated string.
20870     * @example
20871     *
20872     * _.truncate('hi-diddly-ho there, neighborino');
20873     * // => 'hi-diddly-ho there, neighbo...'
20874     *
20875     * _.truncate('hi-diddly-ho there, neighborino', {
20876     *   'length': 24,
20877     *   'separator': ' '
20878     * });
20879     * // => 'hi-diddly-ho there,...'
20880     *
20881     * _.truncate('hi-diddly-ho there, neighborino', {
20882     *   'length': 24,
20883     *   'separator': /,? +/
20884     * });
20885     * // => 'hi-diddly-ho there...'
20886     *
20887     * _.truncate('hi-diddly-ho there, neighborino', {
20888     *   'omission': ' [...]'
20889     * });
20890     * // => 'hi-diddly-ho there, neig [...]'
20891     */
20892    function truncate(string, options) {
20893      var length = DEFAULT_TRUNC_LENGTH,
20894          omission = DEFAULT_TRUNC_OMISSION;
20895
20896      if (isObject(options)) {
20897        var separator = 'separator' in options ? options.separator : separator;
20898        length = 'length' in options ? toInteger(options.length) : length;
20899        omission = 'omission' in options ? baseToString(options.omission) : omission;
20900      }
20901      string = toString(string);
20902
20903      var strLength = string.length;
20904      if (hasUnicode(string)) {
20905        var strSymbols = stringToArray(string);
20906        strLength = strSymbols.length;
20907      }
20908      if (length >= strLength) {
20909        return string;
20910      }
20911      var end = length - stringSize(omission);
20912      if (end < 1) {
20913        return omission;
20914      }
20915      var result = strSymbols
20916        ? castSlice(strSymbols, 0, end).join('')
20917        : string.slice(0, end);
20918
20919      if (separator === undefined) {
20920        return result + omission;
20921      }
20922      if (strSymbols) {
20923        end += (result.length - end);
20924      }
20925      if (isRegExp(separator)) {
20926        if (string.slice(end).search(separator)) {
20927          var match,
20928              substring = result;
20929
20930          if (!separator.global) {
20931            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
20932          }
20933          separator.lastIndex = 0;
20934          while ((match = separator.exec(substring))) {
20935            var newEnd = match.index;
20936          }
20937          result = result.slice(0, newEnd === undefined ? end : newEnd);
20938        }
20939      } else if (string.indexOf(baseToString(separator), end) != end) {
20940        var index = result.lastIndexOf(separator);
20941        if (index > -1) {
20942          result = result.slice(0, index);
20943        }
20944      }
20945      return result + omission;
20946    }
20947
20948    /**
20949     * The inverse of `_.escape`; this method converts the HTML entities
20950     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
20951     * their corresponding characters.
20952     *
20953     * **Note:** No other HTML entities are unescaped. To unescape additional
20954     * HTML entities use a third-party library like [_he_](https://mths.be/he).
20955     *
20956     * @static
20957     * @memberOf _
20958     * @since 0.6.0
20959     * @category String
20960     * @param {string} [string=''] The string to unescape.
20961     * @returns {string} Returns the unescaped string.
20962     * @example
20963     *
20964     * _.unescape('fred, barney, &amp; pebbles');
20965     * // => 'fred, barney, & pebbles'
20966     */
20967    function unescape(string) {
20968      string = toString(string);
20969      return (string && reHasEscapedHtml.test(string))
20970        ? string.replace(reEscapedHtml, unescapeHtmlChar)
20971        : string;
20972    }
20973
20974    /**
20975     * Converts `string`, as space separated words, to upper case.
20976     *
20977     * @static
20978     * @memberOf _
20979     * @since 4.0.0
20980     * @category String
20981     * @param {string} [string=''] The string to convert.
20982     * @returns {string} Returns the upper cased string.
20983     * @example
20984     *
20985     * _.upperCase('--foo-bar');
20986     * // => 'FOO BAR'
20987     *
20988     * _.upperCase('fooBar');
20989     * // => 'FOO BAR'
20990     *
20991     * _.upperCase('__foo_bar__');
20992     * // => 'FOO BAR'
20993     */
20994    var upperCase = createCompounder(function(result, word, index) {
20995      return result + (index ? ' ' : '') + word.toUpperCase();
20996    });
20997
20998    /**
20999     * Converts the first character of `string` to upper case.
21000     *
21001     * @static
21002     * @memberOf _
21003     * @since 4.0.0
21004     * @category String
21005     * @param {string} [string=''] The string to convert.
21006     * @returns {string} Returns the converted string.
21007     * @example
21008     *
21009     * _.upperFirst('fred');
21010     * // => 'Fred'
21011     *
21012     * _.upperFirst('FRED');
21013     * // => 'FRED'
21014     */
21015    var upperFirst = createCaseFirst('toUpperCase');
21016
21017    /**
21018     * Splits `string` into an array of its words.
21019     *
21020     * @static
21021     * @memberOf _
21022     * @since 3.0.0
21023     * @category String
21024     * @param {string} [string=''] The string to inspect.
21025     * @param {RegExp|string} [pattern] The pattern to match words.
21026     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
21027     * @returns {Array} Returns the words of `string`.
21028     * @example
21029     *
21030     * _.words('fred, barney, & pebbles');
21031     * // => ['fred', 'barney', 'pebbles']
21032     *
21033     * _.words('fred, barney, & pebbles', /[^, ]+/g);
21034     * // => ['fred', 'barney', '&', 'pebbles']
21035     */
21036    function words(string, pattern, guard) {
21037      string = toString(string);
21038      pattern = guard ? undefined : pattern;
21039
21040      if (pattern === undefined) {
21041        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
21042      }
21043      return string.match(pattern) || [];
21044    }
21045
21046    /*------------------------------------------------------------------------*/
21047
21048    /**
21049     * Attempts to invoke `func`, returning either the result or the caught error
21050     * object. Any additional arguments are provided to `func` when it's invoked.
21051     *
21052     * @static
21053     * @memberOf _
21054     * @since 3.0.0
21055     * @category Util
21056     * @param {Function} func The function to attempt.
21057     * @param {...*} [args] The arguments to invoke `func` with.
21058     * @returns {*} Returns the `func` result or error object.
21059     * @example
21060     *
21061     * // Avoid throwing errors for invalid selectors.
21062     * var elements = _.attempt(function(selector) {
21063     *   return document.querySelectorAll(selector);
21064     * }, '>_>');
21065     *
21066     * if (_.isError(elements)) {
21067     *   elements = [];
21068     * }
21069     */
21070    var attempt = baseRest(function(func, args) {
21071      try {
21072        return apply(func, undefined, args);
21073      } catch (e) {
21074        return isError(e) ? e : new Error(e);
21075      }
21076    });
21077
21078    /**
21079     * Binds methods of an object to the object itself, overwriting the existing
21080     * method.
21081     *
21082     * **Note:** This method doesn't set the "length" property of bound functions.
21083     *
21084     * @static
21085     * @since 0.1.0
21086     * @memberOf _
21087     * @category Util
21088     * @param {Object} object The object to bind and assign the bound methods to.
21089     * @param {...(string|string[])} methodNames The object method names to bind.
21090     * @returns {Object} Returns `object`.
21091     * @example
21092     *
21093     * var view = {
21094     *   'label': 'docs',
21095     *   'click': function() {
21096     *     console.log('clicked ' + this.label);
21097     *   }
21098     * };
21099     *
21100     * _.bindAll(view, ['click']);
21101     * jQuery(element).on('click', view.click);
21102     * // => Logs 'clicked docs' when clicked.
21103     */
21104    var bindAll = flatRest(function(object, methodNames) {
21105      arrayEach(methodNames, function(key) {
21106        key = toKey(key);
21107        baseAssignValue(object, key, bind(object[key], object));
21108      });
21109      return object;
21110    });
21111
21112    /**
21113     * Creates a function that iterates over `pairs` and invokes the corresponding
21114     * function of the first predicate to return truthy. The predicate-function
21115     * pairs are invoked with the `this` binding and arguments of the created
21116     * function.
21117     *
21118     * @static
21119     * @memberOf _
21120     * @since 4.0.0
21121     * @category Util
21122     * @param {Array} pairs The predicate-function pairs.
21123     * @returns {Function} Returns the new composite function.
21124     * @example
21125     *
21126     * var func = _.cond([
21127     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
21128     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
21129     *   [_.stubTrue,                      _.constant('no match')]
21130     * ]);
21131     *
21132     * func({ 'a': 1, 'b': 2 });
21133     * // => 'matches A'
21134     *
21135     * func({ 'a': 0, 'b': 1 });
21136     * // => 'matches B'
21137     *
21138     * func({ 'a': '1', 'b': '2' });
21139     * // => 'no match'
21140     */
21141    function cond(pairs) {
21142      var length = pairs == null ? 0 : pairs.length,
21143          toIteratee = getIteratee();
21144
21145      pairs = !length ? [] : arrayMap(pairs, function(pair) {
21146        if (typeof pair[1] != 'function') {
21147          throw new TypeError(FUNC_ERROR_TEXT);
21148        }
21149        return [toIteratee(pair[0]), pair[1]];
21150      });
21151
21152      return baseRest(function(args) {
21153        var index = -1;
21154        while (++index < length) {
21155          var pair = pairs[index];
vendor: 10,296 bytes, lines 21156-21488
21156          if (apply(pair[0], this, args)) {
21157            return apply(pair[1], this, args);
21158          }
21159        }
21160      });
21161    }
21162
21163    /**
21164     * Creates a function that invokes the predicate properties of `source` with
21165     * the corresponding property values of a given object, returning `true` if
21166     * all predicates return truthy, else `false`.
21167     *
21168     * **Note:** The created function is equivalent to `_.conformsTo` with
21169     * `source` partially applied.
21170     *
21171     * @static
21172     * @memberOf _
21173     * @since 4.0.0
21174     * @category Util
21175     * @param {Object} source The object of property predicates to conform to.
21176     * @returns {Function} Returns the new spec function.
21177     * @example
21178     *
21179     * var objects = [
21180     *   { 'a': 2, 'b': 1 },
21181     *   { 'a': 1, 'b': 2 }
21182     * ];
21183     *
21184     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
21185     * // => [{ 'a': 1, 'b': 2 }]
21186     */
21187    function conforms(source) {
21188      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
21189    }
21190
21191    /**
21192     * Creates a function that returns `value`.
21193     *
21194     * @static
21195     * @memberOf _
21196     * @since 2.4.0
21197     * @category Util
21198     * @param {*} value The value to return from the new function.
21199     * @returns {Function} Returns the new constant function.
21200     * @example
21201     *
21202     * var objects = _.times(2, _.constant({ 'a': 1 }));
21203     *
21204     * console.log(objects);
21205     * // => [{ 'a': 1 }, { 'a': 1 }]
21206     *
21207     * console.log(objects[0] === objects[1]);
21208     * // => true
21209     */
21210    function constant(value) {
21211      return function() {
21212        return value;
21213      };
21214    }
21215
21216    /**
21217     * Checks `value` to determine whether a default value should be returned in
21218     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
21219     * or `undefined`.
21220     *
21221     * @static
21222     * @memberOf _
21223     * @since 4.14.0
21224     * @category Util
21225     * @param {*} value The value to check.
21226     * @param {*} defaultValue The default value.
21227     * @returns {*} Returns the resolved value.
21228     * @example
21229     *
21230     * _.defaultTo(1, 10);
21231     * // => 1
21232     *
21233     * _.defaultTo(undefined, 10);
21234     * // => 10
21235     */
21236    function defaultTo(value, defaultValue) {
21237      return (value == null || value !== value) ? defaultValue : value;
21238    }
21239
21240    /**
21241     * Creates a function that returns the result of invoking the given functions
21242     * with the `this` binding of the created function, where each successive
21243     * invocation is supplied the return value of the previous.
21244     *
21245     * @static
21246     * @memberOf _
21247     * @since 3.0.0
21248     * @category Util
21249     * @param {...(Function|Function[])} [funcs] The functions to invoke.
21250     * @returns {Function} Returns the new composite function.
21251     * @see _.flowRight
21252     * @example
21253     *
21254     * function square(n) {
21255     *   return n * n;
21256     * }
21257     *
21258     * var addSquare = _.flow([_.add, square]);
21259     * addSquare(1, 2);
21260     * // => 9
21261     */
21262    var flow = createFlow();
21263
21264    /**
21265     * This method is like `_.flow` except that it creates a function that
21266     * invokes the given functions from right to left.
21267     *
21268     * @static
21269     * @since 3.0.0
21270     * @memberOf _
21271     * @category Util
21272     * @param {...(Function|Function[])} [funcs] The functions to invoke.
21273     * @returns {Function} Returns the new composite function.
21274     * @see _.flow
21275     * @example
21276     *
21277     * function square(n) {
21278     *   return n * n;
21279     * }
21280     *
21281     * var addSquare = _.flowRight([square, _.add]);
21282     * addSquare(1, 2);
21283     * // => 9
21284     */
21285    var flowRight = createFlow(true);
21286
21287    /**
21288     * This method returns the first argument it receives.
21289     *
21290     * @static
21291     * @since 0.1.0
21292     * @memberOf _
21293     * @category Util
21294     * @param {*} value Any value.
21295     * @returns {*} Returns `value`.
21296     * @example
21297     *
21298     * var object = { 'a': 1 };
21299     *
21300     * console.log(_.identity(object) === object);
21301     * // => true
21302     */
21303    function identity(value) {
21304      return value;
21305    }
21306
21307    /**
21308     * Creates a function that invokes `func` with the arguments of the created
21309     * function. If `func` is a property name, the created function returns the
21310     * property value for a given element. If `func` is an array or object, the
21311     * created function returns `true` for elements that contain the equivalent
21312     * source properties, otherwise it returns `false`.
21313     *
21314     * @static
21315     * @since 4.0.0
21316     * @memberOf _
21317     * @category Util
21318     * @param {*} [func=_.identity] The value to convert to a callback.
21319     * @returns {Function} Returns the callback.
21320     * @example
21321     *
21322     * var users = [
21323     *   { 'user': 'barney', 'age': 36, 'active': true },
21324     *   { 'user': 'fred',   'age': 40, 'active': false }
21325     * ];
21326     *
21327     * // The `_.matches` iteratee shorthand.
21328     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
21329     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
21330     *
21331     * // The `_.matchesProperty` iteratee shorthand.
21332     * _.filter(users, _.iteratee(['user', 'fred']));
21333     * // => [{ 'user': 'fred', 'age': 40 }]
21334     *
21335     * // The `_.property` iteratee shorthand.
21336     * _.map(users, _.iteratee('user'));
21337     * // => ['barney', 'fred']
21338     *
21339     * // Create custom iteratee shorthands.
21340     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
21341     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
21342     *     return func.test(string);
21343     *   };
21344     * });
21345     *
21346     * _.filter(['abc', 'def'], /ef/);
21347     * // => ['def']
21348     */
21349    function iteratee(func) {
21350      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
21351    }
21352
21353    /**
21354     * Creates a function that performs a partial deep comparison between a given
21355     * object and `source`, returning `true` if the given object has equivalent
21356     * property values, else `false`.
21357     *
21358     * **Note:** The created function is equivalent to `_.isMatch` with `source`
21359     * partially applied.
21360     *
21361     * Partial comparisons will match empty array and empty object `source`
21362     * values against any array or object value, respectively. See `_.isEqual`
21363     * for a list of supported value comparisons.
21364     *
21365     * **Note:** Multiple values can be checked by combining several matchers
21366     * using `_.overSome`
21367     *
21368     * @static
21369     * @memberOf _
21370     * @since 3.0.0
21371     * @category Util
21372     * @param {Object} source The object of property values to match.
21373     * @returns {Function} Returns the new spec function.
21374     * @example
21375     *
21376     * var objects = [
21377     *   { 'a': 1, 'b': 2, 'c': 3 },
21378     *   { 'a': 4, 'b': 5, 'c': 6 }
21379     * ];
21380     *
21381     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
21382     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
21383     *
21384     * // Checking for several possible values
21385     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
21386     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
21387     */
21388    function matches(source) {
21389      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
21390    }
21391
21392    /**
21393     * Creates a function that performs a partial deep comparison between the
21394     * value at `path` of a given object to `srcValue`, returning `true` if the
21395     * object value is equivalent, else `false`.
21396     *
21397     * **Note:** Partial comparisons will match empty array and empty object
21398     * `srcValue` values against any array or object value, respectively. See
21399     * `_.isEqual` for a list of supported value comparisons.
21400     *
21401     * **Note:** Multiple values can be checked by combining several matchers
21402     * using `_.overSome`
21403     *
21404     * @static
21405     * @memberOf _
21406     * @since 3.2.0
21407     * @category Util
21408     * @param {Array|string} path The path of the property to get.
21409     * @param {*} srcValue The value to match.
21410     * @returns {Function} Returns the new spec function.
21411     * @example
21412     *
21413     * var objects = [
21414     *   { 'a': 1, 'b': 2, 'c': 3 },
21415     *   { 'a': 4, 'b': 5, 'c': 6 }
21416     * ];
21417     *
21418     * _.find(objects, _.matchesProperty('a', 4));
21419     * // => { 'a': 4, 'b': 5, 'c': 6 }
21420     *
21421     * // Checking for several possible values
21422     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
21423     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
21424     */
21425    function matchesProperty(path, srcValue) {
21426      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
21427    }
21428
21429    /**
21430     * Creates a function that invokes the method at `path` of a given object.
21431     * Any additional arguments are provided to the invoked method.
21432     *
21433     * @static
21434     * @memberOf _
21435     * @since 3.7.0
21436     * @category Util
21437     * @param {Array|string} path The path of the method to invoke.
21438     * @param {...*} [args] The arguments to invoke the method with.
21439     * @returns {Function} Returns the new invoker function.
21440     * @example
21441     *
21442     * var objects = [
21443     *   { 'a': { 'b': _.constant(2) } },
21444     *   { 'a': { 'b': _.constant(1) } }
21445     * ];
21446     *
21447     * _.map(objects, _.method('a.b'));
21448     * // => [2, 1]
21449     *
21450     * _.map(objects, _.method(['a', 'b']));
21451     * // => [2, 1]
21452     */
21453    var method = baseRest(function(path, args) {
21454      return function(object) {
21455        return baseInvoke(object, path, args);
21456      };
21457    });
21458
21459    /**
21460     * The opposite of `_.method`; this method creates a function that invokes
21461     * the method at a given path of `object`. Any additional arguments are
21462     * provided to the invoked method.
21463     *
21464     * @static
21465     * @memberOf _
21466     * @since 3.7.0
21467     * @category Util
21468     * @param {Object} object The object to query.
21469     * @param {...*} [args] The arguments to invoke the method with.
21470     * @returns {Function} Returns the new invoker function.
21471     * @example
21472     *
21473     * var array = _.times(3, _.constant),
21474     *     object = { 'a': array, 'b': array, 'c': array };
21475     *
21476     * _.map(['a[2]', 'c[0]'], _.methodOf(object));
21477     * // => [2, 0]
21478     *
21479     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
21480     * // => [2, 0]
21481     */
21482    var methodOf = baseRest(function(object, args) {
21483      return function(path) {
21484        return baseInvoke(object, path, args);
21485      };
21486    });
21487
21488    /**
vendor: 10,734 bytes, lines 21489-21876
21489     * Adds all own enumerable string keyed function properties of a source
21490     * object to the destination object. If `object` is a function, then methods
21491     * are added to its prototype as well.
21492     *
21493     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
21494     * avoid conflicts caused by modifying the original.
21495     *
21496     * @static
21497     * @since 0.1.0
21498     * @memberOf _
21499     * @category Util
21500     * @param {Function|Object} [object=lodash] The destination object.
21501     * @param {Object} source The object of functions to add.
21502     * @param {Object} [options={}] The options object.
21503     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
21504     * @returns {Function|Object} Returns `object`.
21505     * @example
21506     *
21507     * function vowels(string) {
21508     *   return _.filter(string, function(v) {
21509     *     return /[aeiou]/i.test(v);
21510     *   });
21511     * }
21512     *
21513     * _.mixin({ 'vowels': vowels });
21514     * _.vowels('fred');
21515     * // => ['e']
21516     *
21517     * _('fred').vowels().value();
21518     * // => ['e']
21519     *
21520     * _.mixin({ 'vowels': vowels }, { 'chain': false });
21521     * _('fred').vowels();
21522     * // => ['e']
21523     */
21524    function mixin(object, source, options) {
21525      var props = keys(source),
21526          methodNames = baseFunctions(source, props);
21527
21528      if (options == null &&
21529          !(isObject(source) && (methodNames.length || !props.length))) {
21530        options = source;
21531        source = object;
21532        object = this;
21533        methodNames = baseFunctions(source, keys(source));
21534      }
21535      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
21536          isFunc = isFunction(object);
21537
21538      arrayEach(methodNames, function(methodName) {
21539        var func = source[methodName];
21540        object[methodName] = func;
21541        if (isFunc) {
21542          object.prototype[methodName] = function() {
21543            var chainAll = this.__chain__;
21544            if (chain || chainAll) {
21545              var result = object(this.__wrapped__),
21546                  actions = result.__actions__ = copyArray(this.__actions__);
21547
21548              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
21549              result.__chain__ = chainAll;
21550              return result;
21551            }
21552            return func.apply(object, arrayPush([this.value()], arguments));
21553          };
21554        }
21555      });
21556
21557      return object;
21558    }
21559
21560    /**
21561     * Reverts the `_` variable to its previous value and returns a reference to
21562     * the `lodash` function.
21563     *
21564     * @static
21565     * @since 0.1.0
21566     * @memberOf _
21567     * @category Util
21568     * @returns {Function} Returns the `lodash` function.
21569     * @example
21570     *
21571     * var lodash = _.noConflict();
21572     */
21573    function noConflict() {
21574      if (root._ === this) {
21575        root._ = oldDash;
21576      }
21577      return this;
21578    }
21579
21580    /**
21581     * This method returns `undefined`.
21582     *
21583     * @static
21584     * @memberOf _
21585     * @since 2.3.0
21586     * @category Util
21587     * @example
21588     *
21589     * _.times(2, _.noop);
21590     * // => [undefined, undefined]
21591     */
21592    function noop() {
21593      // No operation performed.
21594    }
21595
21596    /**
21597     * Creates a function that gets the argument at index `n`. If `n` is negative,
21598     * the nth argument from the end is returned.
21599     *
21600     * @static
21601     * @memberOf _
21602     * @since 4.0.0
21603     * @category Util
21604     * @param {number} [n=0] The index of the argument to return.
21605     * @returns {Function} Returns the new pass-thru function.
21606     * @example
21607     *
21608     * var func = _.nthArg(1);
21609     * func('a', 'b', 'c', 'd');
21610     * // => 'b'
21611     *
21612     * var func = _.nthArg(-2);
21613     * func('a', 'b', 'c', 'd');
21614     * // => 'c'
21615     */
21616    function nthArg(n) {
21617      n = toInteger(n);
21618      return baseRest(function(args) {
21619        return baseNth(args, n);
21620      });
21621    }
21622
21623    /**
21624     * Creates a function that invokes `iteratees` with the arguments it receives
21625     * and returns their results.
21626     *
21627     * @static
21628     * @memberOf _
21629     * @since 4.0.0
21630     * @category Util
21631     * @param {...(Function|Function[])} [iteratees=[_.identity]]
21632     *  The iteratees to invoke.
21633     * @returns {Function} Returns the new function.
21634     * @example
21635     *
21636     * var func = _.over([Math.max, Math.min]);
21637     *
21638     * func(1, 2, 3, 4);
21639     * // => [4, 1]
21640     */
21641    var over = createOver(arrayMap);
21642
21643    /**
21644     * Creates a function that checks if **all** of the `predicates` return
21645     * truthy when invoked with the arguments it receives.
21646     *
21647     * Following shorthands are possible for providing predicates.
21648     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
21649     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
21650     *
21651     * @static
21652     * @memberOf _
21653     * @since 4.0.0
21654     * @category Util
21655     * @param {...(Function|Function[])} [predicates=[_.identity]]
21656     *  The predicates to check.
21657     * @returns {Function} Returns the new function.
21658     * @example
21659     *
21660     * var func = _.overEvery([Boolean, isFinite]);
21661     *
21662     * func('1');
21663     * // => true
21664     *
21665     * func(null);
21666     * // => false
21667     *
21668     * func(NaN);
21669     * // => false
21670     */
21671    var overEvery = createOver(arrayEvery);
21672
21673    /**
21674     * Creates a function that checks if **any** of the `predicates` return
21675     * truthy when invoked with the arguments it receives.
21676     *
21677     * Following shorthands are possible for providing predicates.
21678     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
21679     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
21680     *
21681     * @static
21682     * @memberOf _
21683     * @since 4.0.0
21684     * @category Util
21685     * @param {...(Function|Function[])} [predicates=[_.identity]]
21686     *  The predicates to check.
21687     * @returns {Function} Returns the new function.
21688     * @example
21689     *
21690     * var func = _.overSome([Boolean, isFinite]);
21691     *
21692     * func('1');
21693     * // => true
21694     *
21695     * func(null);
21696     * // => true
21697     *
21698     * func(NaN);
21699     * // => false
21700     *
21701     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
21702     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
21703     */
21704    var overSome = createOver(arraySome);
21705
21706    /**
21707     * Creates a function that returns the value at `path` of a given object.
21708     *
21709     * @static
21710     * @memberOf _
21711     * @since 2.4.0
21712     * @category Util
21713     * @param {Array|string} path The path of the property to get.
21714     * @returns {Function} Returns the new accessor function.
21715     * @example
21716     *
21717     * var objects = [
21718     *   { 'a': { 'b': 2 } },
21719     *   { 'a': { 'b': 1 } }
21720     * ];
21721     *
21722     * _.map(objects, _.property('a.b'));
21723     * // => [2, 1]
21724     *
21725     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
21726     * // => [1, 2]
21727     */
21728    function property(path) {
21729      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
21730    }
21731
21732    /**
21733     * The opposite of `_.property`; this method creates a function that returns
21734     * the value at a given path of `object`.
21735     *
21736     * @static
21737     * @memberOf _
21738     * @since 3.0.0
21739     * @category Util
21740     * @param {Object} object The object to query.
21741     * @returns {Function} Returns the new accessor function.
21742     * @example
21743     *
21744     * var array = [0, 1, 2],
21745     *     object = { 'a': array, 'b': array, 'c': array };
21746     *
21747     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
21748     * // => [2, 0]
21749     *
21750     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
21751     * // => [2, 0]
21752     */
21753    function propertyOf(object) {
21754      return function(path) {
21755        return object == null ? undefined : baseGet(object, path);
21756      };
21757    }
21758
21759    /**
21760     * Creates an array of numbers (positive and/or negative) progressing from
21761     * `start` up to, but not including, `end`. A step of `-1` is used if a negative
21762     * `start` is specified without an `end` or `step`. If `end` is not specified,
21763     * it's set to `start` with `start` then set to `0`.
21764     *
21765     * **Note:** JavaScript follows the IEEE-754 standard for resolving
21766     * floating-point values which can produce unexpected results.
21767     *
21768     * @static
21769     * @since 0.1.0
21770     * @memberOf _
21771     * @category Util
21772     * @param {number} [start=0] The start of the range.
21773     * @param {number} end The end of the range.
21774     * @param {number} [step=1] The value to increment or decrement by.
21775     * @returns {Array} Returns the range of numbers.
21776     * @see _.inRange, _.rangeRight
21777     * @example
21778     *
21779     * _.range(4);
21780     * // => [0, 1, 2, 3]
21781     *
21782     * _.range(-4);
21783     * // => [0, -1, -2, -3]
21784     *
21785     * _.range(1, 5);
21786     * // => [1, 2, 3, 4]
21787     *
21788     * _.range(0, 20, 5);
21789     * // => [0, 5, 10, 15]
21790     *
21791     * _.range(0, -4, -1);
21792     * // => [0, -1, -2, -3]
21793     *
21794     * _.range(1, 4, 0);
21795     * // => [1, 1, 1]
21796     *
21797     * _.range(0);
21798     * // => []
21799     */
21800    var range = createRange();
21801
21802    /**
21803     * This method is like `_.range` except that it populates values in
21804     * descending order.
21805     *
21806     * @static
21807     * @memberOf _
21808     * @since 4.0.0
21809     * @category Util
21810     * @param {number} [start=0] The start of the range.
21811     * @param {number} end The end of the range.
21812     * @param {number} [step=1] The value to increment or decrement by.
21813     * @returns {Array} Returns the range of numbers.
21814     * @see _.inRange, _.range
21815     * @example
21816     *
21817     * _.rangeRight(4);
21818     * // => [3, 2, 1, 0]
21819     *
21820     * _.rangeRight(-4);
21821     * // => [-3, -2, -1, 0]
21822     *
21823     * _.rangeRight(1, 5);
21824     * // => [4, 3, 2, 1]
21825     *
21826     * _.rangeRight(0, 20, 5);
21827     * // => [15, 10, 5, 0]
21828     *
21829     * _.rangeRight(0, -4, -1);
21830     * // => [-3, -2, -1, 0]
21831     *
21832     * _.rangeRight(1, 4, 0);
21833     * // => [1, 1, 1]
21834     *
21835     * _.rangeRight(0);
21836     * // => []
21837     */
21838    var rangeRight = createRange(true);
21839
21840    /**
21841     * This method returns a new empty array.
21842     *
21843     * @static
21844     * @memberOf _
21845     * @since 4.13.0
21846     * @category Util
21847     * @returns {Array} Returns the new empty array.
21848     * @example
21849     *
21850     * var arrays = _.times(2, _.stubArray);
21851     *
21852     * console.log(arrays);
21853     * // => [[], []]
21854     *
21855     * console.log(arrays[0] === arrays[1]);
21856     * // => false
21857     */
21858    function stubArray() {
21859      return [];
21860    }
21861
21862    /**
21863     * This method returns `false`.
21864     *
21865     * @static
21866     * @memberOf _
21867     * @since 4.13.0
21868     * @category Util
21869     * @returns {boolean} Returns `false`.
21870     * @example
21871     *
21872     * _.times(2, _.stubFalse);
21873     * // => [false, false]
21874     */
21875    function stubFalse() {
21876      return false;
vendor: 1,044 bytes, lines 21877-21930
21877    }
21878
21879    /**
21880     * This method returns a new empty object.
21881     *
21882     * @static
21883     * @memberOf _
21884     * @since 4.13.0
21885     * @category Util
21886     * @returns {Object} Returns the new empty object.
21887     * @example
21888     *
21889     * var objects = _.times(2, _.stubObject);
21890     *
21891     * console.log(objects);
21892     * // => [{}, {}]
21893     *
21894     * console.log(objects[0] === objects[1]);
21895     * // => false
21896     */
21897    function stubObject() {
21898      return {};
21899    }
21900
21901    /**
21902     * This method returns an empty string.
21903     *
21904     * @static
21905     * @memberOf _
21906     * @since 4.13.0
21907     * @category Util
21908     * @returns {string} Returns the empty string.
21909     * @example
21910     *
21911     * _.times(2, _.stubString);
21912     * // => ['', '']
21913     */
21914    function stubString() {
21915      return '';
21916    }
21917
21918    /**
21919     * This method returns `true`.
21920     *
21921     * @static
21922     * @memberOf _
21923     * @since 4.13.0
21924     * @category Util
21925     * @returns {boolean} Returns `true`.
21926     * @example
21927     *
21928     * _.times(2, _.stubTrue);
21929     * // => [true, true]
21930     */
vendor: 9,081 bytes, lines 21931-22274
21931    function stubTrue() {
21932      return true;
21933    }
21934
21935    /**
21936     * Invokes the iteratee `n` times, returning an array of the results of
21937     * each invocation. The iteratee is invoked with one argument; (index).
21938     *
21939     * @static
21940     * @since 0.1.0
21941     * @memberOf _
21942     * @category Util
21943     * @param {number} n The number of times to invoke `iteratee`.
21944     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
21945     * @returns {Array} Returns the array of results.
21946     * @example
21947     *
21948     * _.times(3, String);
21949     * // => ['0', '1', '2']
21950     *
21951     *  _.times(4, _.constant(0));
21952     * // => [0, 0, 0, 0]
21953     */
21954    function times(n, iteratee) {
21955      n = toInteger(n);
21956      if (n < 1 || n > MAX_SAFE_INTEGER) {
21957        return [];
21958      }
21959      var index = MAX_ARRAY_LENGTH,
21960          length = nativeMin(n, MAX_ARRAY_LENGTH);
21961
21962      iteratee = getIteratee(iteratee);
21963      n -= MAX_ARRAY_LENGTH;
21964
21965      var result = baseTimes(length, iteratee);
21966      while (++index < n) {
21967        iteratee(index);
21968      }
21969      return result;
21970    }
21971
21972    /**
21973     * Converts `value` to a property path array.
21974     *
21975     * @static
21976     * @memberOf _
21977     * @since 4.0.0
21978     * @category Util
21979     * @param {*} value The value to convert.
21980     * @returns {Array} Returns the new property path array.
21981     * @example
21982     *
21983     * _.toPath('a.b.c');
21984     * // => ['a', 'b', 'c']
21985     *
21986     * _.toPath('a[0].b.c');
21987     * // => ['a', '0', 'b', 'c']
21988     */
21989    function toPath(value) {
21990      if (isArray(value)) {
21991        return arrayMap(value, toKey);
21992      }
21993      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
21994    }
21995
21996    /**
21997     * Generates a unique ID. If `prefix` is given, the ID is appended to it.
21998     *
21999     * @static
22000     * @since 0.1.0
22001     * @memberOf _
22002     * @category Util
22003     * @param {string} [prefix=''] The value to prefix the ID with.
22004     * @returns {string} Returns the unique ID.
22005     * @example
22006     *
22007     * _.uniqueId('contact_');
22008     * // => 'contact_104'
22009     *
22010     * _.uniqueId();
22011     * // => '105'
22012     */
22013    function uniqueId(prefix) {
22014      var id = ++idCounter;
22015      return toString(prefix) + id;
22016    }
22017
22018    /*------------------------------------------------------------------------*/
22019
22020    /**
22021     * Adds two numbers.
22022     *
22023     * @static
22024     * @memberOf _
22025     * @since 3.4.0
22026     * @category Math
22027     * @param {number} augend The first number in an addition.
22028     * @param {number} addend The second number in an addition.
22029     * @returns {number} Returns the total.
22030     * @example
22031     *
22032     * _.add(6, 4);
22033     * // => 10
22034     */
22035    var add = createMathOperation(function(augend, addend) {
22036      return augend + addend;
22037    }, 0);
22038
22039    /**
22040     * Computes `number` rounded up to `precision`.
22041     *
22042     * @static
22043     * @memberOf _
22044     * @since 3.10.0
22045     * @category Math
22046     * @param {number} number The number to round up.
22047     * @param {number} [precision=0] The precision to round up to.
22048     * @returns {number} Returns the rounded up number.
22049     * @example
22050     *
22051     * _.ceil(4.006);
22052     * // => 5
22053     *
22054     * _.ceil(6.004, 2);
22055     * // => 6.01
22056     *
22057     * _.ceil(6040, -2);
22058     * // => 6100
22059     */
22060    var ceil = createRound('ceil');
22061
22062    /**
22063     * Divide two numbers.
22064     *
22065     * @static
22066     * @memberOf _
22067     * @since 4.7.0
22068     * @category Math
22069     * @param {number} dividend The first number in a division.
22070     * @param {number} divisor The second number in a division.
22071     * @returns {number} Returns the quotient.
22072     * @example
22073     *
22074     * _.divide(6, 4);
22075     * // => 1.5
22076     */
22077    var divide = createMathOperation(function(dividend, divisor) {
22078      return dividend / divisor;
22079    }, 1);
22080
22081    /**
22082     * Computes `number` rounded down to `precision`.
22083     *
22084     * @static
22085     * @memberOf _
22086     * @since 3.10.0
22087     * @category Math
22088     * @param {number} number The number to round down.
22089     * @param {number} [precision=0] The precision to round down to.
22090     * @returns {number} Returns the rounded down number.
22091     * @example
22092     *
22093     * _.floor(4.006);
22094     * // => 4
22095     *
22096     * _.floor(0.046, 2);
22097     * // => 0.04
22098     *
22099     * _.floor(4060, -2);
22100     * // => 4000
22101     */
22102    var floor = createRound('floor');
22103
22104    /**
22105     * Computes the maximum value of `array`. If `array` is empty or falsey,
22106     * `undefined` is returned.
22107     *
22108     * @static
22109     * @since 0.1.0
22110     * @memberOf _
22111     * @category Math
22112     * @param {Array} array The array to iterate over.
22113     * @returns {*} Returns the maximum value.
22114     * @example
22115     *
22116     * _.max([4, 2, 8, 6]);
22117     * // => 8
22118     *
22119     * _.max([]);
22120     * // => undefined
22121     */
22122    function max(array) {
22123      return (array && array.length)
22124        ? baseExtremum(array, identity, baseGt)
22125        : undefined;
22126    }
22127
22128    /**
22129     * This method is like `_.max` except that it accepts `iteratee` which is
22130     * invoked for each element in `array` to generate the criterion by which
22131     * the value is ranked. The iteratee is invoked with one argument: (value).
22132     *
22133     * @static
22134     * @memberOf _
22135     * @since 4.0.0
22136     * @category Math
22137     * @param {Array} array The array to iterate over.
22138     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22139     * @returns {*} Returns the maximum value.
22140     * @example
22141     *
22142     * var objects = [{ 'n': 1 }, { 'n': 2 }];
22143     *
22144     * _.maxBy(objects, function(o) { return o.n; });
22145     * // => { 'n': 2 }
22146     *
22147     * // The `_.property` iteratee shorthand.
22148     * _.maxBy(objects, 'n');
22149     * // => { 'n': 2 }
22150     */
22151    function maxBy(array, iteratee) {
22152      return (array && array.length)
22153        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
22154        : undefined;
22155    }
22156
22157    /**
22158     * Computes the mean of the values in `array`.
22159     *
22160     * @static
22161     * @memberOf _
22162     * @since 4.0.0
22163     * @category Math
22164     * @param {Array} array The array to iterate over.
22165     * @returns {number} Returns the mean.
22166     * @example
22167     *
22168     * _.mean([4, 2, 8, 6]);
22169     * // => 5
22170     */
22171    function mean(array) {
22172      return baseMean(array, identity);
22173    }
22174
22175    /**
22176     * This method is like `_.mean` except that it accepts `iteratee` which is
22177     * invoked for each element in `array` to generate the value to be averaged.
22178     * The iteratee is invoked with one argument: (value).
22179     *
22180     * @static
22181     * @memberOf _
22182     * @since 4.7.0
22183     * @category Math
22184     * @param {Array} array The array to iterate over.
22185     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22186     * @returns {number} Returns the mean.
22187     * @example
22188     *
22189     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
22190     *
22191     * _.meanBy(objects, function(o) { return o.n; });
22192     * // => 5
22193     *
22194     * // The `_.property` iteratee shorthand.
22195     * _.meanBy(objects, 'n');
22196     * // => 5
22197     */
22198    function meanBy(array, iteratee) {
22199      return baseMean(array, getIteratee(iteratee, 2));
22200    }
22201
22202    /**
22203     * Computes the minimum value of `array`. If `array` is empty or falsey,
22204     * `undefined` is returned.
22205     *
22206     * @static
22207     * @since 0.1.0
22208     * @memberOf _
22209     * @category Math
22210     * @param {Array} array The array to iterate over.
22211     * @returns {*} Returns the minimum value.
22212     * @example
22213     *
22214     * _.min([4, 2, 8, 6]);
22215     * // => 2
22216     *
22217     * _.min([]);
22218     * // => undefined
22219     */
22220    function min(array) {
22221      return (array && array.length)
22222        ? baseExtremum(array, identity, baseLt)
22223        : undefined;
22224    }
22225
22226    /**
22227     * This method is like `_.min` except that it accepts `iteratee` which is
22228     * invoked for each element in `array` to generate the criterion by which
22229     * the value is ranked. The iteratee is invoked with one argument: (value).
22230     *
22231     * @static
22232     * @memberOf _
22233     * @since 4.0.0
22234     * @category Math
22235     * @param {Array} array The array to iterate over.
22236     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22237     * @returns {*} Returns the minimum value.
22238     * @example
22239     *
22240     * var objects = [{ 'n': 1 }, { 'n': 2 }];
22241     *
22242     * _.minBy(objects, function(o) { return o.n; });
22243     * // => { 'n': 1 }
22244     *
22245     * // The `_.property` iteratee shorthand.
22246     * _.minBy(objects, 'n');
22247     * // => { 'n': 1 }
22248     */
22249    function minBy(array, iteratee) {
22250      return (array && array.length)
22251        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
22252        : undefined;
22253    }
22254
22255    /**
22256     * Multiply two numbers.
22257     *
22258     * @static
22259     * @memberOf _
22260     * @since 4.7.0
22261     * @category Math
22262     * @param {number} multiplier The first number in a multiplication.
22263     * @param {number} multiplicand The second number in a multiplication.
22264     * @returns {number} Returns the product.
22265     * @example
22266     *
22267     * _.multiply(6, 4);
22268     * // => 24
22269     */
22270    var multiply = createMathOperation(function(multiplier, multiplicand) {
22271      return multiplier * multiplicand;
22272    }, 1);
22273
22274    /**
vendor: 13,137 bytes, lines 22275-22713
22275     * Computes `number` rounded to `precision`.
22276     *
22277     * @static
22278     * @memberOf _
22279     * @since 3.10.0
22280     * @category Math
22281     * @param {number} number The number to round.
22282     * @param {number} [precision=0] The precision to round to.
22283     * @returns {number} Returns the rounded number.
22284     * @example
22285     *
22286     * _.round(4.006);
22287     * // => 4
22288     *
22289     * _.round(4.006, 2);
22290     * // => 4.01
22291     *
22292     * _.round(4060, -2);
22293     * // => 4100
22294     */
22295    var round = createRound('round');
22296
22297    /**
22298     * Subtract two numbers.
22299     *
22300     * @static
22301     * @memberOf _
22302     * @since 4.0.0
22303     * @category Math
22304     * @param {number} minuend The first number in a subtraction.
22305     * @param {number} subtrahend The second number in a subtraction.
22306     * @returns {number} Returns the difference.
22307     * @example
22308     *
22309     * _.subtract(6, 4);
22310     * // => 2
22311     */
22312    var subtract = createMathOperation(function(minuend, subtrahend) {
22313      return minuend - subtrahend;
22314    }, 0);
22315
22316    /**
22317     * Computes the sum of the values in `array`.
22318     *
22319     * @static
22320     * @memberOf _
22321     * @since 3.4.0
22322     * @category Math
22323     * @param {Array} array The array to iterate over.
22324     * @returns {number} Returns the sum.
22325     * @example
22326     *
22327     * _.sum([4, 2, 8, 6]);
22328     * // => 20
22329     */
22330    function sum(array) {
22331      return (array && array.length)
22332        ? baseSum(array, identity)
22333        : 0;
22334    }
22335
22336    /**
22337     * This method is like `_.sum` except that it accepts `iteratee` which is
22338     * invoked for each element in `array` to generate the value to be summed.
22339     * The iteratee is invoked with one argument: (value).
22340     *
22341     * @static
22342     * @memberOf _
22343     * @since 4.0.0
22344     * @category Math
22345     * @param {Array} array The array to iterate over.
22346     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22347     * @returns {number} Returns the sum.
22348     * @example
22349     *
22350     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
22351     *
22352     * _.sumBy(objects, function(o) { return o.n; });
22353     * // => 20
22354     *
22355     * // The `_.property` iteratee shorthand.
22356     * _.sumBy(objects, 'n');
22357     * // => 20
22358     */
22359    function sumBy(array, iteratee) {
22360      return (array && array.length)
22361        ? baseSum(array, getIteratee(iteratee, 2))
22362        : 0;
22363    }
22364
22365    /*------------------------------------------------------------------------*/
22366
22367    // Add methods that return wrapped values in chain sequences.
22368    lodash.after = after;
22369    lodash.ary = ary;
22370    lodash.assign = assign;
22371    lodash.assignIn = assignIn;
22372    lodash.assignInWith = assignInWith;
22373    lodash.assignWith = assignWith;
22374    lodash.at = at;
22375    lodash.before = before;
22376    lodash.bind = bind;
22377    lodash.bindAll = bindAll;
22378    lodash.bindKey = bindKey;
22379    lodash.castArray = castArray;
22380    lodash.chain = chain;
22381    lodash.chunk = chunk;
22382    lodash.compact = compact;
22383    lodash.concat = concat;
22384    lodash.cond = cond;
22385    lodash.conforms = conforms;
22386    lodash.constant = constant;
22387    lodash.countBy = countBy;
22388    lodash.create = create;
22389    lodash.curry = curry;
22390    lodash.curryRight = curryRight;
22391    lodash.debounce = debounce;
22392    lodash.defaults = defaults;
22393    lodash.defaultsDeep = defaultsDeep;
22394    lodash.defer = defer;
22395    lodash.delay = delay;
22396    lodash.difference = difference;
22397    lodash.differenceBy = differenceBy;
22398    lodash.differenceWith = differenceWith;
22399    lodash.drop = drop;
22400    lodash.dropRight = dropRight;
22401    lodash.dropRightWhile = dropRightWhile;
22402    lodash.dropWhile = dropWhile;
22403    lodash.fill = fill;
22404    lodash.filter = filter;
22405    lodash.flatMap = flatMap;
22406    lodash.flatMapDeep = flatMapDeep;
22407    lodash.flatMapDepth = flatMapDepth;
22408    lodash.flatten = flatten;
22409    lodash.flattenDeep = flattenDeep;
22410    lodash.flattenDepth = flattenDepth;
22411    lodash.flip = flip;
22412    lodash.flow = flow;
22413    lodash.flowRight = flowRight;
22414    lodash.fromPairs = fromPairs;
22415    lodash.functions = functions;
22416    lodash.functionsIn = functionsIn;
22417    lodash.groupBy = groupBy;
22418    lodash.initial = initial;
22419    lodash.intersection = intersection;
22420    lodash.intersectionBy = intersectionBy;
22421    lodash.intersectionWith = intersectionWith;
22422    lodash.invert = invert;
22423    lodash.invertBy = invertBy;
22424    lodash.invokeMap = invokeMap;
22425    lodash.iteratee = iteratee;
22426    lodash.keyBy = keyBy;
22427    lodash.keys = keys;
22428    lodash.keysIn = keysIn;
22429    lodash.map = map;
22430    lodash.mapKeys = mapKeys;
22431    lodash.mapValues = mapValues;
22432    lodash.matches = matches;
22433    lodash.matchesProperty = matchesProperty;
22434    lodash.memoize = memoize;
22435    lodash.merge = merge;
22436    lodash.mergeWith = mergeWith;
22437    lodash.method = method;
22438    lodash.methodOf = methodOf;
22439    lodash.mixin = mixin;
22440    lodash.negate = negate;
22441    lodash.nthArg = nthArg;
22442    lodash.omit = omit;
22443    lodash.omitBy = omitBy;
22444    lodash.once = once;
22445    lodash.orderBy = orderBy;
22446    lodash.over = over;
22447    lodash.overArgs = overArgs;
22448    lodash.overEvery = overEvery;
22449    lodash.overSome = overSome;
22450    lodash.partial = partial;
22451    lodash.partialRight = partialRight;
22452    lodash.partition = partition;
22453    lodash.pick = pick;
22454    lodash.pickBy = pickBy;
22455    lodash.property = property;
22456    lodash.propertyOf = propertyOf;
22457    lodash.pull = pull;
22458    lodash.pullAll = pullAll;
22459    lodash.pullAllBy = pullAllBy;
22460    lodash.pullAllWith = pullAllWith;
22461    lodash.pullAt = pullAt;
22462    lodash.range = range;
22463    lodash.rangeRight = rangeRight;
22464    lodash.rearg = rearg;
22465    lodash.reject = reject;
22466    lodash.remove = remove;
22467    lodash.rest = rest;
22468    lodash.reverse = reverse;
22469    lodash.sampleSize = sampleSize;
22470    lodash.set = set;
22471    lodash.setWith = setWith;
22472    lodash.shuffle = shuffle;
22473    lodash.slice = slice;
22474    lodash.sortBy = sortBy;
22475    lodash.sortedUniq = sortedUniq;
22476    lodash.sortedUniqBy = sortedUniqBy;
22477    lodash.split = split;
22478    lodash.spread = spread;
22479    lodash.tail = tail;
22480    lodash.take = take;
22481    lodash.takeRight = takeRight;
22482    lodash.takeRightWhile = takeRightWhile;
22483    lodash.takeWhile = takeWhile;
22484    lodash.tap = tap;
22485    lodash.throttle = throttle;
22486    lodash.thru = thru;
22487    lodash.toArray = toArray;
22488    lodash.toPairs = toPairs;
22489    lodash.toPairsIn = toPairsIn;
22490    lodash.toPath = toPath;
22491    lodash.toPlainObject = toPlainObject;
22492    lodash.transform = transform;
22493    lodash.unary = unary;
22494    lodash.union = union;
22495    lodash.unionBy = unionBy;
22496    lodash.unionWith = unionWith;
22497    lodash.uniq = uniq;
22498    lodash.uniqBy = uniqBy;
22499    lodash.uniqWith = uniqWith;
22500    lodash.unset = unset;
22501    lodash.unzip = unzip;
22502    lodash.unzipWith = unzipWith;
22503    lodash.update = update;
22504    lodash.updateWith = updateWith;
22505    lodash.values = values;
22506    lodash.valuesIn = valuesIn;
22507    lodash.without = without;
22508    lodash.words = words;
22509    lodash.wrap = wrap;
22510    lodash.xor = xor;
22511    lodash.xorBy = xorBy;
22512    lodash.xorWith = xorWith;
22513    lodash.zip = zip;
22514    lodash.zipObject = zipObject;
22515    lodash.zipObjectDeep = zipObjectDeep;
22516    lodash.zipWith = zipWith;
22517
22518    // Add aliases.
22519    lodash.entries = toPairs;
22520    lodash.entriesIn = toPairsIn;
22521    lodash.extend = assignIn;
22522    lodash.extendWith = assignInWith;
22523
22524    // Add methods to `lodash.prototype`.
22525    mixin(lodash, lodash);
22526
22527    /*------------------------------------------------------------------------*/
22528
22529    // Add methods that return unwrapped values in chain sequences.
22530    lodash.add = add;
22531    lodash.attempt = attempt;
22532    lodash.camelCase = camelCase;
22533    lodash.capitalize = capitalize;
22534    lodash.ceil = ceil;
22535    lodash.clamp = clamp;
22536    lodash.clone = clone;
22537    lodash.cloneDeep = cloneDeep;
22538    lodash.cloneDeepWith = cloneDeepWith;
22539    lodash.cloneWith = cloneWith;
22540    lodash.conformsTo = conformsTo;
22541    lodash.deburr = deburr;
22542    lodash.defaultTo = defaultTo;
22543    lodash.divide = divide;
22544    lodash.endsWith = endsWith;
22545    lodash.eq = eq;
22546    lodash.escape = escape;
22547    lodash.escapeRegExp = escapeRegExp;
22548    lodash.every = every;
22549    lodash.find = find;
22550    lodash.findIndex = findIndex;
22551    lodash.findKey = findKey;
22552    lodash.findLast = findLast;
22553    lodash.findLastIndex = findLastIndex;
22554    lodash.findLastKey = findLastKey;
22555    lodash.floor = floor;
22556    lodash.forEach = forEach;
22557    lodash.forEachRight = forEachRight;
22558    lodash.forIn = forIn;
22559    lodash.forInRight = forInRight;
22560    lodash.forOwn = forOwn;
22561    lodash.forOwnRight = forOwnRight;
22562    lodash.get = get;
22563    lodash.gt = gt;
22564    lodash.gte = gte;
22565    lodash.has = has;
22566    lodash.hasIn = hasIn;
22567    lodash.head = head;
22568    lodash.identity = identity;
22569    lodash.includes = includes;
22570    lodash.indexOf = indexOf;
22571    lodash.inRange = inRange;
22572    lodash.invoke = invoke;
22573    lodash.isArguments = isArguments;
22574    lodash.isArray = isArray;
22575    lodash.isArrayBuffer = isArrayBuffer;
22576    lodash.isArrayLike = isArrayLike;
22577    lodash.isArrayLikeObject = isArrayLikeObject;
22578    lodash.isBoolean = isBoolean;
22579    lodash.isBuffer = isBuffer;
22580    lodash.isDate = isDate;
22581    lodash.isElement = isElement;
22582    lodash.isEmpty = isEmpty;
22583    lodash.isEqual = isEqual;
22584    lodash.isEqualWith = isEqualWith;
22585    lodash.isError = isError;
22586    lodash.isFinite = isFinite;
22587    lodash.isFunction = isFunction;
22588    lodash.isInteger = isInteger;
22589    lodash.isLength = isLength;
22590    lodash.isMap = isMap;
22591    lodash.isMatch = isMatch;
22592    lodash.isMatchWith = isMatchWith;
22593    lodash.isNaN = isNaN;
22594    lodash.isNative = isNative;
22595    lodash.isNil = isNil;
22596    lodash.isNull = isNull;
22597    lodash.isNumber = isNumber;
22598    lodash.isObject = isObject;
22599    lodash.isObjectLike = isObjectLike;
22600    lodash.isPlainObject = isPlainObject;
22601    lodash.isRegExp = isRegExp;
22602    lodash.isSafeInteger = isSafeInteger;
22603    lodash.isSet = isSet;
22604    lodash.isString = isString;
22605    lodash.isSymbol = isSymbol;
22606    lodash.isTypedArray = isTypedArray;
22607    lodash.isUndefined = isUndefined;
22608    lodash.isWeakMap = isWeakMap;
22609    lodash.isWeakSet = isWeakSet;
22610    lodash.join = join;
22611    lodash.kebabCase = kebabCase;
22612    lodash.last = last;
22613    lodash.lastIndexOf = lastIndexOf;
22614    lodash.lowerCase = lowerCase;
22615    lodash.lowerFirst = lowerFirst;
22616    lodash.lt = lt;
22617    lodash.lte = lte;
22618    lodash.max = max;
22619    lodash.maxBy = maxBy;
22620    lodash.mean = mean;
22621    lodash.meanBy = meanBy;
22622    lodash.min = min;
22623    lodash.minBy = minBy;
22624    lodash.stubArray = stubArray;
22625    lodash.stubFalse = stubFalse;
22626    lodash.stubObject = stubObject;
22627    lodash.stubString = stubString;
22628    lodash.stubTrue = stubTrue;
22629    lodash.multiply = multiply;
22630    lodash.nth = nth;
22631    lodash.noConflict = noConflict;
22632    lodash.noop = noop;
22633    lodash.now = now;
22634    lodash.pad = pad;
22635    lodash.padEnd = padEnd;
22636    lodash.padStart = padStart;
22637    lodash.parseInt = parseInt;
22638    lodash.random = random;
22639    lodash.reduce = reduce;
22640    lodash.reduceRight = reduceRight;
22641    lodash.repeat = repeat;
22642    lodash.replace = replace;
22643    lodash.result = result;
22644    lodash.round = round;
22645    lodash.runInContext = runInContext;
22646    lodash.sample = sample;
22647    lodash.size = size;
22648    lodash.snakeCase = snakeCase;
22649    lodash.some = some;
22650    lodash.sortedIndex = sortedIndex;
22651    lodash.sortedIndexBy = sortedIndexBy;
22652    lodash.sortedIndexOf = sortedIndexOf;
22653    lodash.sortedLastIndex = sortedLastIndex;
22654    lodash.sortedLastIndexBy = sortedLastIndexBy;
22655    lodash.sortedLastIndexOf = sortedLastIndexOf;
22656    lodash.startCase = startCase;
22657    lodash.startsWith = startsWith;
22658    lodash.subtract = subtract;
22659    lodash.sum = sum;
22660    lodash.sumBy = sumBy;
22661    lodash.template = template;
22662    lodash.times = times;
22663    lodash.toFinite = toFinite;
22664    lodash.toInteger = toInteger;
22665    lodash.toLength = toLength;
22666    lodash.toLower = toLower;
22667    lodash.toNumber = toNumber;
22668    lodash.toSafeInteger = toSafeInteger;
22669    lodash.toString = toString;
22670    lodash.toUpper = toUpper;
22671    lodash.trim = trim;
22672    lodash.trimEnd = trimEnd;
22673    lodash.trimStart = trimStart;
22674    lodash.truncate = truncate;
22675    lodash.unescape = unescape;
22676    lodash.uniqueId = uniqueId;
22677    lodash.upperCase = upperCase;
22678    lodash.upperFirst = upperFirst;
22679
22680    // Add aliases.
22681    lodash.each = forEach;
22682    lodash.eachRight = forEachRight;
22683    lodash.first = head;
22684
22685    mixin(lodash, (function() {
22686      var source = {};
22687      baseForOwn(lodash, function(func, methodName) {
22688        if (!hasOwnProperty.call(lodash.prototype, methodName)) {
22689          source[methodName] = func;
22690        }
22691      });
22692      return source;
22693    }()), { 'chain': false });
22694
22695    /*------------------------------------------------------------------------*/
22696
22697    /**
22698     * The semantic version number.
22699     *
22700     * @static
22701     * @memberOf _
22702     * @type {string}
22703     */
22704    lodash.VERSION = VERSION;
22705
22706    // Assign default placeholders.
22707    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
22708      lodash[methodName].placeholder = lodash;
22709    });
22710
22711    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
22712    arrayEach(['drop', 'take'], function(methodName, index) {
22713      LazyWrapper.prototype[methodName] = function(n) {
vendor: 8,463 bytes, lines 22714-22958
22714        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
22715
22716        var result = (this.__filtered__ && !index)
22717          ? new LazyWrapper(this)
22718          : this.clone();
22719
22720        if (result.__filtered__) {
22721          result.__takeCount__ = nativeMin(n, result.__takeCount__);
22722        } else {
22723          result.__views__.push({
22724            'size': nativeMin(n, MAX_ARRAY_LENGTH),
22725            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
22726          });
22727        }
22728        return result;
22729      };
22730
22731      LazyWrapper.prototype[methodName + 'Right'] = function(n) {
22732        return this.reverse()[methodName](n).reverse();
22733      };
22734    });
22735
22736    // Add `LazyWrapper` methods that accept an `iteratee` value.
22737    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
22738      var type = index + 1,
22739          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
22740
22741      LazyWrapper.prototype[methodName] = function(iteratee) {
22742        var result = this.clone();
22743        result.__iteratees__.push({
22744          'iteratee': getIteratee(iteratee, 3),
22745          'type': type
22746        });
22747        result.__filtered__ = result.__filtered__ || isFilter;
22748        return result;
22749      };
22750    });
22751
22752    // Add `LazyWrapper` methods for `_.head` and `_.last`.
22753    arrayEach(['head', 'last'], function(methodName, index) {
22754      var takeName = 'take' + (index ? 'Right' : '');
22755
22756      LazyWrapper.prototype[methodName] = function() {
22757        return this[takeName](1).value()[0];
22758      };
22759    });
22760
22761    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
22762    arrayEach(['initial', 'tail'], function(methodName, index) {
22763      var dropName = 'drop' + (index ? '' : 'Right');
22764
22765      LazyWrapper.prototype[methodName] = function() {
22766        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
22767      };
22768    });
22769
22770    LazyWrapper.prototype.compact = function() {
22771      return this.filter(identity);
22772    };
22773
22774    LazyWrapper.prototype.find = function(predicate) {
22775      return this.filter(predicate).head();
22776    };
22777
22778    LazyWrapper.prototype.findLast = function(predicate) {
22779      return this.reverse().find(predicate);
22780    };
22781
22782    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
22783      if (typeof path == 'function') {
22784        return new LazyWrapper(this);
22785      }
22786      return this.map(function(value) {
22787        return baseInvoke(value, path, args);
22788      });
22789    });
22790
22791    LazyWrapper.prototype.reject = function(predicate) {
22792      return this.filter(negate(getIteratee(predicate)));
22793    };
22794
22795    LazyWrapper.prototype.slice = function(start, end) {
22796      start = toInteger(start);
22797
22798      var result = this;
22799      if (result.__filtered__ && (start > 0 || end < 0)) {
22800        return new LazyWrapper(result);
22801      }
22802      if (start < 0) {
22803        result = result.takeRight(-start);
22804      } else if (start) {
22805        result = result.drop(start);
22806      }
22807      if (end !== undefined) {
22808        end = toInteger(end);
22809        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
22810      }
22811      return result;
22812    };
22813
22814    LazyWrapper.prototype.takeRightWhile = function(predicate) {
22815      return this.reverse().takeWhile(predicate).reverse();
22816    };
22817
22818    LazyWrapper.prototype.toArray = function() {
22819      return this.take(MAX_ARRAY_LENGTH);
22820    };
22821
22822    // Add `LazyWrapper` methods to `lodash.prototype`.
22823    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
22824      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
22825          isTaker = /^(?:head|last)$/.test(methodName),
22826          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
22827          retUnwrapped = isTaker || /^find/.test(methodName);
22828
22829      if (!lodashFunc) {
22830        return;
22831      }
22832      lodash.prototype[methodName] = function() {
22833        var value = this.__wrapped__,
22834            args = isTaker ? [1] : arguments,
22835            isLazy = value instanceof LazyWrapper,
22836            iteratee = args[0],
22837            useLazy = isLazy || isArray(value);
22838
22839        var interceptor = function(value) {
22840          var result = lodashFunc.apply(lodash, arrayPush([value], args));
22841          return (isTaker && chainAll) ? result[0] : result;
22842        };
22843
22844        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
22845          // Avoid lazy use if the iteratee has a "length" value other than `1`.
22846          isLazy = useLazy = false;
22847        }
22848        var chainAll = this.__chain__,
22849            isHybrid = !!this.__actions__.length,
22850            isUnwrapped = retUnwrapped && !chainAll,
22851            onlyLazy = isLazy && !isHybrid;
22852
22853        if (!retUnwrapped && useLazy) {
22854          value = onlyLazy ? value : new LazyWrapper(this);
22855          var result = func.apply(value, args);
22856          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
22857          return new LodashWrapper(result, chainAll);
22858        }
22859        if (isUnwrapped && onlyLazy) {
22860          return func.apply(this, args);
22861        }
22862        result = this.thru(interceptor);
22863        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
22864      };
22865    });
22866
22867    // Add `Array` methods to `lodash.prototype`.
22868    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
22869      var func = arrayProto[methodName],
22870          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
22871          retUnwrapped = /^(?:pop|shift)$/.test(methodName);
22872
22873      lodash.prototype[methodName] = function() {
22874        var args = arguments;
22875        if (retUnwrapped && !this.__chain__) {
22876          var value = this.value();
22877          return func.apply(isArray(value) ? value : [], args);
22878        }
22879        return this[chainName](function(value) {
22880          return func.apply(isArray(value) ? value : [], args);
22881        });
22882      };
22883    });
22884
22885    // Map minified method names to their real names.
22886    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
22887      var lodashFunc = lodash[methodName];
22888      if (lodashFunc) {
22889        var key = lodashFunc.name + '';
22890        if (!hasOwnProperty.call(realNames, key)) {
22891          realNames[key] = [];
22892        }
22893        realNames[key].push({ 'name': methodName, 'func': lodashFunc });
22894      }
22895    });
22896
22897    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
22898      'name': 'wrapper',
22899      'func': undefined
22900    }];
22901
22902    // Add methods to `LazyWrapper`.
22903    LazyWrapper.prototype.clone = lazyClone;
22904    LazyWrapper.prototype.reverse = lazyReverse;
22905    LazyWrapper.prototype.value = lazyValue;
22906
22907    // Add chain sequence methods to the `lodash` wrapper.
22908    lodash.prototype.at = wrapperAt;
22909    lodash.prototype.chain = wrapperChain;
22910    lodash.prototype.commit = wrapperCommit;
22911    lodash.prototype.next = wrapperNext;
22912    lodash.prototype.plant = wrapperPlant;
22913    lodash.prototype.reverse = wrapperReverse;
22914    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
22915
22916    // Add lazy aliases.
22917    lodash.prototype.first = lodash.prototype.head;
22918
22919    if (symIterator) {
22920      lodash.prototype[symIterator] = wrapperToIterator;
22921    }
22922    return lodash;
22923  });
22924
22925  /*--------------------------------------------------------------------------*/
22926
22927  // Export lodash.
22928  var _ = runInContext();
22929
22930  // Some AMD build optimizers, like r.js, check for condition patterns like:
22931  if (true) {
22932    // Expose Lodash on the global object to prevent errors when Lodash is
22933    // loaded by a script tag in the presence of an AMD loader.
22934    // See http://requirejs.org/docs/errors.html#mismatch for more details.
22935    // Use `_.noConflict` to remove Lodash from the global object.
22936    root._ = _;
22937
22938    // Define as an anonymous module so, through path mapping, it can be
22939    // referenced as the "underscore" module.
22940    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
22941      return _;
22942    }).call(exports, __webpack_require__, exports, module),
22943				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
22944  }
22945  // Check for `exports` after `define` in case a build optimizer adds it.
22946  else if (freeModule) {
22947    // Export for Node.js.
22948    (freeModule.exports = _)._ = _;
22949    // Export for CommonJS support.
22950    freeExports._ = _;
22951  }
22952  else {
22953    // Export to the global object.
22954    root._ = _;
22955  }
22956}.call(this));
22957
22958/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(
22958143), __webpack_require__(3)(module)))
22959
22960/***/ }),
22961/* 2 */
22962/***/ (function(module, __webpack_exports__, __webpack_require__) {
22963
22964"use strict";
22965/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return serialize; });
22966/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return throttleAnimationFrame; });
22967/* harmony export (immutable) */ __webpack_exports__["a"] = isMobileDevice;
22968var serialize = function serialize(obj) {
22969    var str = [];
22970    for (var p in obj) {
22971        if (obj.hasOwnProperty(p)) {
22972            str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));
22973        }
22974    }return str.join('&');
22975};
22976
22977/**
22978 * Since resize events can fire at a high rate, the event handler shouldn't execute computationally expensive operations such as DOM modifications. Instead, it is recommended to throttle the event using requestAnimationFrame, setTimeout or customEvent*, as follows:
22979 * IMPORTANT: Please note that IE11 needs the customEvent polyfill to function correctly.
22980 * https://developer.mozilla.org/en-US/docs/Web/Events/resize
22981 * @param {*} type - event type. e.g. "resize"
22982 * @param {*} name - name of the event to fire instead. e.g. "optimizedResize"
22983 * @param {*} obj - object to dispatch the event from. e.g. window
22984 */
22985var throttleAnimationFrame = function throttleAnimationFrame(type, name, obj) {
22986    customEventPolyfill();
22987    obj = obj || window;
22988    var running = false;
22989    var func = function func() {
22990        if (running) {
22991            return;
22992        }
22993        running = true;
22994        requestAnimationFrame(function () {
22995            obj.dispatchEvent(new CustomEvent(name));
22996            running = false;
22997        });
22998    };
22999    obj.addEventListener(type, func);
23000};
23001
23002function customEventPolyfill() {
23003    if (typeof window.CustomEvent === 'function') return false;
23004
23005    function CustomEvent(event, params) {
23006        params = params || { bubbles: false, cancelable: false, detail: undefined };
23007        var evt = document.createEvent('CustomEvent');
23008        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
23009        return evt;
23010    }
23011
23012    CustomEvent.prototype = window.Event.prototype;
23013
23014    window.CustomEvent = CustomEvent;
23015}
23016
23017function isMobileDevice() {
23018    try {
23019        // 767px matches our $screen-md-max
23020        return window.matchMedia('(max-width: 767px)').matches;
23021    } catch (e) {
23022        return false;
23023    }
23024}
23025
23026/***/ }),
23027/* 3 */
23028/***/ (function(module, exports) {
23029
23030module.exports = function(module) {
23031	if(!module.webpackPolyfill) {
23032		module.deprecate = function() {};
23033		module.paths = [];
23034		// module.parent = undefined by default
23035		if(!module.children) module.children = [];
23036		Object.defineProperty(module, "loaded", {
23037			enumerable: true,
23038			get: function() {
23039				return module.l;
23040			}
23041		});
23042		Object.defineProperty(module, "id", {
23043			enumerable: true,
23044			get: function() {
23045				return module.i;
23046			}
23047		});
23048		module.webpackPolyfill = 1;
23049	}
23050	return module;
23051};
23052
23053
23054/***/ }),
23055/* 4 */
23056/***/ (function(module, exports, __webpack_require__) {
23057
23058//! moment.js locale configuration
23059//! locale : Afrikaans [af]
23060//! author : Werner Mollentze : https://github.com/wernerm
23061
23062;(function (global, factory) {
23063    true ? factory(__webpack_require__(0)) :
23064   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23065   factory(global.moment)
23066}(this, (function (moment) { 'use strict';
23067
23068    //! moment.js locale configuration
23069
23070    var af = moment.defineLocale('af', {
23071        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
23072            '_'
23073        ),
23074        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
23075        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
23076            '_'
23077        ),
23078        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
23079        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
23080        meridiemParse: /vm|nm/i,
23081        isPM: function (input) {
23082            return /^nm$/i.test(input);
23083        },
23084        meridiem: function (hours, minutes, isLower) {
23085            if (hours < 12) {
23086                return isLower ? 'vm' : 'VM';
23087            } else {
23088                return isLower ? 'nm' : 'NM';
23089            }
23090        },
23091        longDateFormat: {
23092            LT: 'HH:mm',
23093            LTS: 'HH:mm:ss',
23094            L: 'DD/MM/YYYY',
23095            LL: 'D MMMM YYYY',
23096            LLL: 'D MMMM YYYY HH:mm',
23097            LLLL: 'dddd, D MMMM YYYY HH:mm',
23098        },
23099        calendar: {
23100            sameDay: '[Vandag om] LT',
23101            nextDay: '[Môre om] LT',
23102            nextWeek: 'dddd [om] LT',
23103            lastDay: '[Gister om] LT',
23104            lastWeek: '[Laas] dddd [om] LT',
23105            sameElse: 'L',
23106        },
23107        relativeTime: {
23108            future: 'oor %s',
23109            past: '%s gelede',
23110            s: "'n paar sekondes",
23111            ss: '%d sekondes',
23112            m: "'n minuut",
23113            mm: '%d minute',
23114            h: "'n uur",
23115            hh: '%d ure',
23116            d: "'n dag",
23117            dd: '%d dae',
23118            M: "'n maand",
23119            MM: '%d maande',
23120            y: "'n jaar",
23121            yy: '%d jaar',
23122        },
23123        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
23124        ordinal: function (number) {
23125            return (
23126                number +
23127                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
23128            ); // Thanks to Joris Röling : https://github.com/jjupiter
23129        },
23130        week: {
23131            dow: 1, // Maandag is die eerste dag van die week.
23132            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
23133        },
23134    });
23135
23136    return af;
23137
23138})));
23139
23140
23141/***/ }),
23142/* 5 */
23143/***/ (function(module, exports, __webpack_require__) {
23144
23145//! moment.js locale configuration
23146//! locale : Arabic [ar]
23147//! author : Abdel Said: https://github.com/abdelsaid
23148//! author : Ahmed Elkhatib
23149//! author : forabi https://github.com/forabi
23150
23151;(function (global, factory) {
23152    true ? factory(__webpack_require__(0)) :
23153   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23154   factory(global.moment)
23155}(this, (function (moment) { 'use strict';
23156
23157    //! moment.js locale configuration
23158
23159    var symbolMap = {
23160            1: 'Ù¡',
23161            2: 'Ù¢',
23162            3: 'Ù£',
23163            4: 'Ù¤',
23164            5: 'Ù¥',
23165            6: 'Ù¦',
23166            7: 'Ù§',
23167            8: 'Ù¨',
23168            9: 'Ù©',
23169            0: 'Ù ',
23170        },
23171        numberMap = {
23172            'Ù¡': '1',
23173            'Ù¢': '2',
23174            'Ù£': '3',
23175            'Ù¤': '4',
23176            'Ù¥': '5',
23177            'Ù¦': '6',
23178            'Ù§': '7',
23179            'Ù¨': '8',
23180            'Ù©': '9',
23181            'Ù ': '0',
23182        },
23183        pluralForm = function (n) {
23184            return n === 0
23185                ? 0
23186                : n === 1
23187                ? 1
23188                : n === 2
23189                ? 2
23190                : n % 100 >= 3 && n % 100 <= 10
23191                ? 3
23192                : n % 100 >= 11
23193                ? 4
23194                : 5;
23195        },
23196        plurals = {
23197            s: [
23198                'أقل من ثانية',
23199                'ثانية واحدة',
23200                ['ثانيتان', 'ثانيتين'],
23201                '%d ثوان',
23202                '%d ثانية',
23203                '%d ثانية',
23204            ],
23205            m: [
23206                'أقل من دقيقة',
23207                'دقيقة واحدة',
23208                ['دقيقتان', 'دقيقتين'],
23209                '%d دقائق',
23210                '%d دقيقة',
23211                '%d دقيقة',
23212            ],
23213            h: [
23214                'أقل من ساعة',
23215                'ساعة واحدة',
23216                ['ساعتان', 'ساعتين'],
23217                '%d ساعات',
23218                '%d ساعة',
23219                '%d ساعة',
23220            ],
23221            d: [
23222                'أقل من يوم',
23223                'يوم واحد',
23224                ['يومان', 'يومين'],
23225                '%d أيام',
23226                '%d يومًا',
23227                '%d يوم',
23228            ],
23229            M: [
23230                'أقل من شهر',
23231                'شهر واحد',
23232                ['شهران', 'شهرين'],
23233                '%d أشهر',
23234                '%d شهرا',
23235                '%d شهر',
23236            ],
23237            y: [
23238                'أقل من عام',
23239                'عام واحد',
23240                ['عامان', 'عامين'],
23241                '%d أعوام',
23242                '%d عامًا',
23243                '%d عام',
23244            ],
23245        },
23246        pluralize = function (u) {
23247            return function (number, withoutSuffix, string, isFuture) {
23248                var f = pluralForm(number),
23249                    str = plurals[u][pluralForm(number)];
23250                if (f === 2) {
23251                    str = str[withoutSuffix ? 0 : 1];
23252                }
23253                return str.replace(/%d/i, number);
23254            };
23255        },
23256        months = [
23257            'يناير',
23258            'فبراير',
23259            'مارس',
23260            'أبريل',
23261            'مايو',
23262            'يونيو',
23263            'يوليو',
23264            'أغسطس',
23265            'سبتمبر',
23266            'أكتوبر',
23267            'نوفمبر',
23268            'ديسمبر',
23269        ];
23270
23271    var ar = moment.defineLocale('ar', {
23272        months: months,
23273        monthsShort: months,
23274        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23275        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23276        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23277        weekdaysParseExact: true,
23278        longDateFormat: {
23279            LT: 'HH:mm',
23280            LTS: 'HH:mm:ss',
23281            L: 'D/\u200FM/\u200FYYYY',
23282            LL: 'D MMMM YYYY',
23283            LLL: 'D MMMM YYYY HH:mm',
23284            LLLL: 'dddd D MMMM YYYY HH:mm',
23285        },
23286        meridiemParse: /ص|م/,
23287        isPM: function (input) {
23288            return 'م' === input;
23289        },
23290        meridiem: function (hour, minute, isLower) {
23291            if (hour < 12) {
23292                return 'ص';
23293            } else {
23294                return 'م';
23295            }
23296        },
23297        calendar: {
23298            sameDay: '[اليوم عند الساعة] LT',
23299            nextDay: '[غدًا عند الساعة] LT',
23300            nextWeek: 'dddd [عند الساعة] LT',
23301            lastDay: '[أمس عند الساعة] LT',
23302            lastWeek: 'dddd [عند الساعة] LT',
23303            sameElse: 'L',
23304        },
23305        relativeTime: {
23306            future: 'بعد %s',
23307            past: 'منذ %s',
23308            s: pluralize('s'),
23309            ss: pluralize('s'),
23310            m: pluralize('m'),
23311            mm: pluralize('m'),
23312            h: pluralize('h'),
23313            hh: pluralize('h'),
23314            d: pluralize('d'),
23315            dd: pluralize('d'),
23316            M: pluralize('M'),
23317            MM: pluralize('M'),
23318            y: pluralize('y'),
23319            yy: pluralize('y'),
23320        },
23321        preparse: function (string) {
23322            return string
23323                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
23324                    return numberMap[match];
23325                })
23326                .replace(/،/g, ',');
23327        },
23328        postformat: function (string) {
23329            return string
23330                .replace(/\d/g, function (match) {
23331                    return symbolMap[match];
23332                })
23333                .replace(/,/g, '،');
23334        },
23335        week: {
23336            dow: 6, // Saturday is the first day of the week.
23337            doy: 12, // The week that contains Jan 12th is the first week of the year.
23338        },
23339    });
23340
23341    return ar;
23342
23343})));
23344
23345
23346/***/ }),
23347/* 6 */
23348/***/ (function(module, exports, __webpack_require__) {
23349
23350//! moment.js locale configuration
23351//! locale : Arabic (Algeria) [ar-dz]
23352//! author : Amine Roukh: https://github.com/Amine27
23353//! author : Abdel Said: https://github.com/abdelsaid
23354//! author : Ahmed Elkhatib
23355//! author : forabi https://github.com/forabi
23356//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
23357
23358;(function (global, factory) {
23359    true ? factory(__webpack_require__(0)) :
23360   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23361   factory(global.moment)
23362}(this, (function (moment) { 'use strict';
23363
23364    //! moment.js locale configuration
23365
23366    var pluralForm = function (n) {
23367            return n === 0
23368                ? 0
23369                : n === 1
23370                ? 1
23371                : n === 2
23372                ? 2
23373                : n % 100 >= 3 && n % 100 <= 10
23374                ? 3
23375                : n % 100 >= 11
23376                ? 4
23377                : 5;
23378        },
23379        plurals = {
23380            s: [
23381                'أقل من ثانية',
23382                'ثانية واحدة',
23383                ['ثانيتان', 'ثانيتين'],
23384                '%d ثوان',
23385                '%d ثانية',
23386                '%d ثانية',
23387            ],
23388            m: [
23389                'أقل من دقيقة',
23390                'دقيقة واحدة',
23391                ['دقيقتان', 'دقيقتين'],
23392                '%d دقائق',
23393                '%d دقيقة',
23394                '%d دقيقة',
23395            ],
23396            h: [
23397                'أقل من ساعة',
23398                'ساعة واحدة',
23399                ['ساعتان', 'ساعتين'],
23400                '%d ساعات',
23401                '%d ساعة',
23402                '%d ساعة',
23403            ],
23404            d: [
23405                'أقل من يوم',
23406                'يوم واحد',
23407                ['يومان', 'يومين'],
23408                '%d أيام',
23409                '%d يومًا',
23410                '%d يوم',
23411            ],
23412            M: [
23413                'أقل من شهر',
23414                'شهر واحد',
23415                ['شهران', 'شهرين'],
23416                '%d أشهر',
23417                '%d شهرا',
23418                '%d شهر',
23419            ],
23420            y: [
23421                'أقل من عام',
23422                'عام واحد',
23423                ['عامان', 'عامين'],
23424                '%d أعوام',
23425                '%d عامًا',
23426                '%d عام',
23427            ],
23428        },
23429        pluralize = function (u) {
23430            return function (number, withoutSuffix, string, isFuture) {
23431                var f = pluralForm(number),
23432                    str = plurals[u][pluralForm(number)];
23433                if (f === 2) {
23434                    str = str[withoutSuffix ? 0 : 1];
23435                }
23436                return str.replace(/%d/i, number);
23437            };
23438        },
23439        months = [
23440            'جانفي',
23441            'فيفري',
23442            'مارس',
23443            'أفريل',
23444            'ماي',
23445            'جوان',
23446            'جويلية',
23447            'أوت',
23448            'سبتمبر',
23449            'أكتوبر',
23450            'نوفمبر',
23451            'ديسمبر',
23452        ];
23453
23454    var arDz = moment.defineLocale('ar-dz', {
23455        months: months,
23456        monthsShort: months,
23457        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23458        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23459        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23460        weekdaysParseExact: true,
23461        longDateFormat: {
23462            LT: 'HH:mm',
23463            LTS: 'HH:mm:ss',
23464            L: 'D/\u200FM/\u200FYYYY',
23465            LL: 'D MMMM YYYY',
23466            LLL: 'D MMMM YYYY HH:mm',
23467            LLLL: 'dddd D MMMM YYYY HH:mm',
23468        },
23469        meridiemParse: /ص|م/,
23470        isPM: function (input) {
23471            return 'م' === input;
23472        },
23473        meridiem: function (hour, minute, isLower) {
23474            if (hour < 12) {
23475                return 'ص';
23476            } else {
23477                return 'م';
23478            }
23479        },
23480        calendar: {
23481            sameDay: '[اليوم عند الساعة] LT',
23482            nextDay: '[غدًا عند الساعة] LT',
23483            nextWeek: 'dddd [عند الساعة] LT',
23484            lastDay: '[أمس عند الساعة] LT',
23485            lastWeek: 'dddd [عند الساعة] LT',
23486            sameElse: 'L',
23487        },
23488        relativeTime: {
23489            future: 'بعد %s',
23490            past: 'منذ %s',
23491            s: pluralize('s'),
23492            ss: pluralize('s'),
23493            m: pluralize('m'),
23494            mm: pluralize('m'),
23495            h: pluralize('h'),
23496            hh: pluralize('h'),
23497            d: pluralize('d'),
23498            dd: pluralize('d'),
23499            M: pluralize('M'),
23500            MM: pluralize('M'),
23501            y: pluralize('y'),
23502            yy: pluralize('y'),
23503        },
23504        postformat: function (string) {
23505            return string.replace(/,/g, '،');
23506        },
23507        week: {
23508            dow: 0, // Sunday is the first day of the week.
23509            doy: 4, // The week that contains Jan 4th is the first week of the year.
23510        },
23511    });
23512
23513    return arDz;
23514
23515})));
23516
23517
23518/***/ }),
23519/* 7 */
23520/***/ (function(module, exports, __webpack_require__) {
23521
23522//! moment.js locale configuration
23523//! locale : Arabic (Kuwait) [ar-kw]
23524//! author : Nusret Parlak: https://github.com/nusretparlak
23525
23526;(function (global, factory) {
23527    true ? factory(__webpack_require__(0)) :
23528   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23529   factory(global.moment)
23530}(this, (function (moment) { 'use strict';
23531
23532    //! moment.js locale configuration
23533
23534    var arKw = moment.defineLocale('ar-kw', {
23535        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_
vendor: 16,384 bytes, lines 23535-24045
23535غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23536            '_'
23537        ),
23538        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23539            '_'
23540        ),
23541        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23542        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
23543        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23544        weekdaysParseExact: true,
23545        longDateFormat: {
23546            LT: 'HH:mm',
23547            LTS: 'HH:mm:ss',
23548            L: 'DD/MM/YYYY',
23549            LL: 'D MMMM YYYY',
23550            LLL: 'D MMMM YYYY HH:mm',
23551            LLLL: 'dddd D MMMM YYYY HH:mm',
23552        },
23553        calendar: {
23554            sameDay: '[اليوم على الساعة] LT',
23555            nextDay: '[غدا على الساعة] LT',
23556            nextWeek: 'dddd [على الساعة] LT',
23557            lastDay: '[أمس على الساعة] LT',
23558            lastWeek: 'dddd [على الساعة] LT',
23559            sameElse: 'L',
23560        },
23561        relativeTime: {
23562            future: 'في %s',
23563            past: 'منذ %s',
23564            s: 'ثوان',
23565            ss: '%d ثانية',
23566            m: 'دقيقة',
23567            mm: '%d دقائق',
23568            h: 'ساعة',
23569            hh: '%d ساعات',
23570            d: 'يوم',
23571            dd: '%d أيام',
23572            M: 'شهر',
23573            MM: '%d أشهر',
23574            y: 'سنة',
23575            yy: '%d سنوات',
23576        },
23577        week: {
23578            dow: 0, // Sunday is the first day of the week.
23579            doy: 12, // The week that contains Jan 12th is the first week of the year.
23580        },
23581    });
23582
23583    return arKw;
23584
23585})));
23586
23587
23588/***/ }),
23589/* 8 */
23590/***/ (function(module, exports, __webpack_require__) {
23591
23592//! moment.js locale configuration
23593//! locale : Arabic (Lybia) [ar-ly]
23594//! author : Ali Hmer: https://github.com/kikoanis
23595
23596;(function (global, factory) {
23597    true ? factory(__webpack_require__(0)) :
23598   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23599   factory(global.moment)
23600}(this, (function (moment) { 'use strict';
23601
23602    //! moment.js locale configuration
23603
23604    var symbolMap = {
23605            1: '1',
23606            2: '2',
23607            3: '3',
23608            4: '4',
23609            5: '5',
23610            6: '6',
23611            7: '7',
23612            8: '8',
23613            9: '9',
23614            0: '0',
23615        },
23616        pluralForm = function (n) {
23617            return n === 0
23618                ? 0
23619                : n === 1
23620                ? 1
23621                : n === 2
23622                ? 2
23623                : n % 100 >= 3 && n % 100 <= 10
23624                ? 3
23625                : n % 100 >= 11
23626                ? 4
23627                : 5;
23628        },
23629        plurals = {
23630            s: [
23631                'أقل من ثانية',
23632                'ثانية واحدة',
23633                ['ثانيتان', 'ثانيتين'],
23634                '%d ثوان',
23635                '%d ثانية',
23636                '%d ثانية',
23637            ],
23638            m: [
23639                'أقل من دقيقة',
23640                'دقيقة واحدة',
23641                ['دقيقتان', 'دقيقتين'],
23642                '%d دقائق',
23643                '%d دقيقة',
23644                '%d دقيقة',
23645            ],
23646            h: [
23647                'أقل من ساعة',
23648                'ساعة واحدة',
23649                ['ساعتان', 'ساعتين'],
23650                '%d ساعات',
23651                '%d ساعة',
23652                '%d ساعة',
23653            ],
23654            d: [
23655                'أقل من يوم',
23656                'يوم واحد',
23657                ['يومان', 'يومين'],
23658                '%d أيام',
23659                '%d يومًا',
23660                '%d يوم',
23661            ],
23662            M: [
23663                'أقل من شهر',
23664                'شهر واحد',
23665                ['شهران', 'شهرين'],
23666                '%d أشهر',
23667                '%d شهرا',
23668                '%d شهر',
23669            ],
23670            y: [
23671                'أقل من عام',
23672                'عام واحد',
23673                ['عامان', 'عامين'],
23674                '%d أعوام',
23675                '%d عامًا',
23676                '%d عام',
23677            ],
23678        },
23679        pluralize = function (u) {
23680            return function (number, withoutSuffix, string, isFuture) {
23681                var f = pluralForm(number),
23682                    str = plurals[u][pluralForm(number)];
23683                if (f === 2) {
23684                    str = str[withoutSuffix ? 0 : 1];
23685                }
23686                return str.replace(/%d/i, number);
23687            };
23688        },
23689        months = [
23690            'يناير',
23691            'فبراير',
23692            'مارس',
23693            'أبريل',
23694            'مايو',
23695            'يونيو',
23696            'يوليو',
23697            'أغسطس',
23698            'سبتمبر',
23699            'أكتوبر',
23700            'نوفمبر',
23701            'ديسمبر',
23702        ];
23703
23704    var arLy = moment.defineLocale('ar-ly', {
23705        months: months,
23706        monthsShort: months,
23707        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23708        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23709        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23710        weekdaysParseExact: true,
23711        longDateFormat: {
23712            LT: 'HH:mm',
23713            LTS: 'HH:mm:ss',
23714            L: 'D/\u200FM/\u200FYYYY',
23715            LL: 'D MMMM YYYY',
23716            LLL: 'D MMMM YYYY HH:mm',
23717            LLLL: 'dddd D MMMM YYYY HH:mm',
23718        },
23719        meridiemParse: /ص|م/,
23720        isPM: function (input) {
23721            return 'م' === input;
23722        },
23723        meridiem: function (hour, minute, isLower) {
23724            if (hour < 12) {
23725                return 'ص';
23726            } else {
23727                return 'م';
23728            }
23729        },
23730        calendar: {
23731            sameDay: '[اليوم عند الساعة] LT',
23732            nextDay: '[غدًا عند الساعة] LT',
23733            nextWeek: 'dddd [عند الساعة] LT',
23734            lastDay: '[أمس عند الساعة] LT',
23735            lastWeek: 'dddd [عند الساعة] LT',
23736            sameElse: 'L',
23737        },
23738        relativeTime: {
23739            future: 'بعد %s',
23740            past: 'منذ %s',
23741            s: pluralize('s'),
23742            ss: pluralize('s'),
23743            m: pluralize('m'),
23744            mm: pluralize('m'),
23745            h: pluralize('h'),
23746            hh: pluralize('h'),
23747            d: pluralize('d'),
23748            dd: pluralize('d'),
23749            M: pluralize('M'),
23750            MM: pluralize('M'),
23751            y: pluralize('y'),
23752            yy: pluralize('y'),
23753        },
23754        preparse: function (string) {
23755            return string.replace(/،/g, ',');
23756        },
23757        postformat: function (string) {
23758            return string
23759                .replace(/\d/g, function (match) {
23760                    return symbolMap[match];
23761                })
23762                .replace(/,/g, '،');
23763        },
23764        week: {
23765            dow: 6, // Saturday is the first day of the week.
23766            doy: 12, // The week that contains Jan 12th is the first week of the year.
23767        },
23768    });
23769
23770    return arLy;
23771
23772})));
23773
23774
23775/***/ }),
23776/* 9 */
23777/***/ (function(module, exports, __webpack_require__) {
23778
23779//! moment.js locale configuration
23780//! locale : Arabic (Morocco) [ar-ma]
23781//! author : ElFadili Yassine : https://github.com/ElFadiliY
23782//! author : Abdel Said : https://github.com/abdelsaid
23783
23784;(function (global, factory) {
23785    true ? factory(__webpack_require__(0)) :
23786   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23787   factory(global.moment)
23788}(this, (function (moment) { 'use strict';
23789
23790    //! moment.js locale configuration
23791
23792    var arMa = moment.defineLocale('ar-ma', {
23793        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23794            '_'
23795        ),
23796        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23797            '_'
23798        ),
23799        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23800        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
23801        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23802        weekdaysParseExact: true,
23803        longDateFormat: {
23804            LT: 'HH:mm',
23805            LTS: 'HH:mm:ss',
23806            L: 'DD/MM/YYYY',
23807            LL: 'D MMMM YYYY',
23808            LLL: 'D MMMM YYYY HH:mm',
23809            LLLL: 'dddd D MMMM YYYY HH:mm',
23810        },
23811        calendar: {
23812            sameDay: '[اليوم على الساعة] LT',
23813            nextDay: '[غدا على الساعة] LT',
23814            nextWeek: 'dddd [على الساعة] LT',
23815            lastDay: '[أمس على الساعة] LT',
23816            lastWeek: 'dddd [على الساعة] LT',
23817            sameElse: 'L',
23818        },
23819        relativeTime: {
23820            future: 'في %s',
23821            past: 'منذ %s',
23822            s: 'ثوان',
23823            ss: '%d ثانية',
23824            m: 'دقيقة',
23825            mm: '%d دقائق',
23826            h: 'ساعة',
23827            hh: '%d ساعات',
23828            d: 'يوم',
23829            dd: '%d أيام',
23830            M: 'شهر',
23831            MM: '%d أشهر',
23832            y: 'سنة',
23833            yy: '%d سنوات',
23834        },
23835        week: {
23836            dow: 1, // Monday is the first day of the week.
23837            doy: 4, // The week that contains Jan 4th is the first week of the year.
23838        },
23839    });
23840
23841    return arMa;
23842
23843})));
23844
23845
23846/***/ }),
23847/* 10 */
23848/***/ (function(module, exports, __webpack_require__) {
23849
23850//! moment.js locale configuration
23851//! locale : Arabic (Saudi Arabia) [ar-sa]
23852//! author : Suhail Alkowaileet : https://github.com/xsoh
23853
23854;(function (global, factory) {
23855    true ? factory(__webpack_require__(0)) :
23856   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23857   factory(global.moment)
23858}(this, (function (moment) { 'use strict';
23859
23860    //! moment.js locale configuration
23861
23862    var symbolMap = {
23863            1: 'Ù¡',
23864            2: 'Ù¢',
23865            3: 'Ù£',
23866            4: 'Ù¤',
23867            5: 'Ù¥',
23868            6: 'Ù¦',
23869            7: 'Ù§',
23870            8: 'Ù¨',
23871            9: 'Ù©',
23872            0: 'Ù ',
23873        },
23874        numberMap = {
23875            'Ù¡': '1',
23876            'Ù¢': '2',
23877            'Ù£': '3',
23878            'Ù¤': '4',
23879            'Ù¥': '5',
23880            'Ù¦': '6',
23881            'Ù§': '7',
23882            'Ù¨': '8',
23883            'Ù©': '9',
23884            'Ù ': '0',
23885        };
23886
23887    var arSa = moment.defineLocale('ar-sa', {
23888        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23889            '_'
23890        ),
23891        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23892            '_'
23893        ),
23894        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23895        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23896        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23897        weekdaysParseExact: true,
23898        longDateFormat: {
23899            LT: 'HH:mm',
23900            LTS: 'HH:mm:ss',
23901            L: 'DD/MM/YYYY',
23902            LL: 'D MMMM YYYY',
23903            LLL: 'D MMMM YYYY HH:mm',
23904            LLLL: 'dddd D MMMM YYYY HH:mm',
23905        },
23906        meridiemParse: /ص|م/,
23907        isPM: function (input) {
23908            return 'م' === input;
23909        },
23910        meridiem: function (hour, minute, isLower) {
23911            if (hour < 12) {
23912                return 'ص';
23913            } else {
23914                return 'م';
23915            }
23916        },
23917        calendar: {
23918            sameDay: '[اليوم على الساعة] LT',
23919            nextDay: '[غدا على الساعة] LT',
23920            nextWeek: 'dddd [على الساعة] LT',
23921            lastDay: '[أمس على الساعة] LT',
23922            lastWeek: 'dddd [على الساعة] LT',
23923            sameElse: 'L',
23924        },
23925        relativeTime: {
23926            future: 'في %s',
23927            past: 'منذ %s',
23928            s: 'ثوان',
23929            ss: '%d ثانية',
23930            m: 'دقيقة',
23931            mm: '%d دقائق',
23932            h: 'ساعة',
23933            hh: '%d ساعات',
23934            d: 'يوم',
23935            dd: '%d أيام',
23936            M: 'شهر',
23937            MM: '%d أشهر',
23938            y: 'سنة',
23939            yy: '%d سنوات',
23940        },
23941        preparse: function (string) {
23942            return string
23943                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
23944                    return numberMap[match];
23945                })
23946                .replace(/،/g, ',');
23947        },
23948        postformat: function (string) {
23949            return string
23950                .replace(/\d/g, function (match) {
23951                    return symbolMap[match];
23952                })
23953                .replace(/,/g, '،');
23954        },
23955        week: {
23956            dow: 0, // Sunday is the first day of the week.
23957            doy: 6, // The week that contains Jan 6th is the first week of the year.
23958        },
23959    });
23960
23961    return arSa;
23962
23963})));
23964
23965
23966/***/ }),
23967/* 11 */
23968/***/ (function(module, exports, __webpack_require__) {
23969
23970//! moment.js locale configuration
23971//! locale  :  Arabic (Tunisia) [ar-tn]
23972//! author : Nader Toukabri : https://github.com/naderio
23973
23974;(function (global, factory) {
23975    true ? factory(__webpack_require__(0)) :
23976   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23977   factory(global.moment)
23978}(this, (function (moment) { 'use strict';
23979
23980    //! moment.js locale configuration
23981
23982    var arTn = moment.defineLocale('ar-tn', {
23983        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23984            '_'
23985        ),
23986        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23987            '_'
23988        ),
23989        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23990        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23991        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23992        weekdaysParseExact: true,
23993        longDateFormat: {
23994            LT: 'HH:mm',
23995            LTS: 'HH:mm:ss',
23996            L: 'DD/MM/YYYY',
23997            LL: 'D MMMM YYYY',
23998            LLL: 'D MMMM YYYY HH:mm',
23999            LLLL: 'dddd D MMMM YYYY HH:mm',
24000        },
24001        calendar: {
24002            sameDay: '[اليوم على الساعة] LT',
24003            nextDay: '[غدا على الساعة] LT',
24004            nextWeek: 'dddd [على الساعة] LT',
24005            lastDay: '[أمس على الساعة] LT',
24006            lastWeek: 'dddd [على الساعة] LT',
24007            sameElse: 'L',
24008        },
24009        relativeTime: {
24010            future: 'في %s',
24011            past: 'منذ %s',
24012            s: 'ثوان',
24013            ss: '%d ثانية',
24014            m: 'دقيقة',
24015            mm: '%d دقائق',
24016            h: 'ساعة',
24017            hh: '%d ساعات',
24018            d: 'يوم',
24019            dd: '%d أيام',
24020            M: 'شهر',
24021            MM: '%d أشهر',
24022            y: 'سنة',
24023            yy: '%d سنوات',
24024        },
24025        week: {
24026            dow: 1, // Monday is the first day of the week.
24027            doy: 4, // The week that contains Jan 4th is the first week of the year.
24028        },
24029    });
24030
24031    return arTn;
24032
24033})));
24034
24035
24036/***/ }),
24037/* 12 */
24038/***/ (function(module, exports, __webpack_require__) {
24039
24040//! moment.js locale configuration
24041//! locale : Azerbaijani [az]
24042//! author : topchiyev : https://github.com/topchiyev
24043
24044;(function (global, factory) {
24045   
24045 true ? factory(__webpack_require__(0)) :
24046   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24047   factory(global.moment)
24048}(this, (function (moment) { 'use strict';
24049
24050    //! moment.js locale configuration
24051
24052    var suffixes = {
24053        1: '-inci',
24054        5: '-inci',
24055        8: '-inci',
24056        70: '-inci',
24057        80: '-inci',
24058        2: '-nci',
24059        7: '-nci',
24060        20: '-nci',
24061        50: '-nci',
24062        3: '-üncü',
24063        4: '-üncü',
24064        100: '-üncü',
24065        6: '-ncı',
24066        9: '-uncu',
24067        10: '-uncu',
24068        30: '-uncu',
24069        60: '-ıncı',
24070        90: '-ıncı',
24071    };
24072
24073    var az = moment.defineLocale('az', {
24074        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
24075            '_'
24076        ),
24077        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
24078        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
24079            '_'
24080        ),
24081        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
24082        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
24083        weekdaysParseExact: true,
24084        longDateFormat: {
24085            LT: 'HH:mm',
24086            LTS: 'HH:mm:ss',
24087            L: 'DD.MM.YYYY',
24088            LL: 'D MMMM YYYY',
24089            LLL: 'D MMMM YYYY HH:mm',
24090            LLLL: 'dddd, D MMMM YYYY HH:mm',
24091        },
24092        calendar: {
24093            sameDay: '[bugün saat] LT',
24094            nextDay: '[sabah saat] LT',
24095            nextWeek: '[gələn həftə] dddd [saat] LT',
24096            lastDay: '[dünən] LT',
24097            lastWeek: '[keçən həftə] dddd [saat] LT',
24098            sameElse: 'L',
24099        },
24100        relativeTime: {
24101            future: '%s sonra',
24102            past: '%s əvvəl',
24103            s: 'bir neçə saniyə',
24104            ss: '%d saniyə',
24105            m: 'bir dəqiqə',
24106            mm: '%d dəqiqə',
24107            h: 'bir saat',
24108            hh: '%d saat',
24109            d: 'bir gün',
24110            dd: '%d gün',
24111            M: 'bir ay',
24112            MM: '%d ay',
24113            y: 'bir il',
24114            yy: '%d il',
24115        },
24116        meridiemParse: /gecə|səhər|gündüz|axşam/,
24117        isPM: function (input) {
24118            return /^(gündüz|axşam)$/.test(input);
24119        },
24120        meridiem: function (hour, minute, isLower) {
24121            if (hour < 4) {
24122                return 'gecə';
24123            } else if (hour < 12) {
24124                return 'səhər';
24125            } else if (hour < 17) {
24126                return 'gündüz';
24127            } else {
24128                return 'axşam';
24129            }
24130        },
24131        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
24132        ordinal: function (number) {
24133            if (number === 0) {
24134                // special case for zero
24135                return number + '-ıncı';
24136            }
24137            var a = number % 10,
24138                b = (number % 100) - a,
24139                c = number >= 100 ? 100 : null;
24140            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
24141        },
24142        week: {
24143            dow: 1, // Monday is the first day of the week.
24144            doy: 7, // The week that contains Jan 7th is the first week of the year.
24145        },
24146    });
24147
24148    return az;
24149
24150})));
24151
24152
24153/***/ }),
24154/* 13 */
24155/***/ (function(module, exports, __webpack_require__) {
24156
24157//! moment.js locale configuration
24158//! locale : Belarusian [be]
24159//! author : Dmitry Demidov : https://github.com/demidov91
24160//! author: Praleska: http://praleska.pro/
24161//! Author : Menelion Elensúle : https://github.com/Oire
24162
24163;(function (global, factory) {
24164    true ? factory(__webpack_require__(0)) :
24165   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24166   factory(global.moment)
24167}(this, (function (moment) { 'use strict';
24168
24169    //! moment.js locale configuration
24170
24171    function plural(word, num) {
24172        var forms = word.split('_');
24173        return num % 10 === 1 && num % 100 !== 11
24174            ? forms[0]
24175            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
24176            ? forms[1]
24177            : forms[2];
24178    }
24179    function relativeTimeWithPlural(number, withoutSuffix, key) {
24180        var format = {
24181            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
24182            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
24183            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
24184            dd: 'дзень_дні_дзён',
24185            MM: 'месяц_месяцы_месяцаў',
24186            yy: 'год_гады_гадоў',
24187        };
24188        if (key === 'm') {
24189            return withoutSuffix ? 'хвіліна' : 'хвіліну';
24190        } else if (key === 'h') {
24191            return withoutSuffix ? 'гадзіна' : 'гадзіну';
24192        } else {
vendor: 14,874 bytes, lines 24193-24618
24193            return number + ' ' + plural(format[key], +number);
24194        }
24195    }
24196
24197    var be = moment.defineLocale('be', {
24198        months: {
24199            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
24200                '_'
24201            ),
24202            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
24203                '_'
24204            ),
24205        },
24206        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(
24207            '_'
24208        ),
24209        weekdays: {
24210            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
24211                '_'
24212            ),
24213            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
24214                '_'
24215            ),
24216            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
24217        },
24218        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
24219        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
24220        longDateFormat: {
24221            LT: 'HH:mm',
24222            LTS: 'HH:mm:ss',
24223            L: 'DD.MM.YYYY',
24224            LL: 'D MMMM YYYY г.',
24225            LLL: 'D MMMM YYYY г., HH:mm',
24226            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
24227        },
24228        calendar: {
24229            sameDay: '[Сёння ў] LT',
24230            nextDay: '[Заўтра ў] LT',
24231            lastDay: '[Учора ў] LT',
24232            nextWeek: function () {
24233                return '[У] dddd [ў] LT';
24234            },
24235            lastWeek: function () {
24236                switch (this.day()) {
24237                    case 0:
24238                    case 3:
24239                    case 5:
24240                    case 6:
24241                        return '[У мінулую] dddd [ў] LT';
24242                    case 1:
24243                    case 2:
24244                    case 4:
24245                        return '[У мінулы] dddd [ў] LT';
24246                }
24247            },
24248            sameElse: 'L',
24249        },
24250        relativeTime: {
24251            future: 'праз %s',
24252            past: '%s таму',
24253            s: 'некалькі секунд',
24254            m: relativeTimeWithPlural,
24255            mm: relativeTimeWithPlural,
24256            h: relativeTimeWithPlural,
24257            hh: relativeTimeWithPlural,
24258            d: 'дзень',
24259            dd: relativeTimeWithPlural,
24260            M: 'месяц',
24261            MM: relativeTimeWithPlural,
24262            y: 'год',
24263            yy: relativeTimeWithPlural,
24264        },
24265        meridiemParse: /ночы|раніцы|дня|вечара/,
24266        isPM: function (input) {
24267            return /^(дня|вечара)$/.test(input);
24268        },
24269        meridiem: function (hour, minute, isLower) {
24270            if (hour < 4) {
24271                return 'ночы';
24272            } else if (hour < 12) {
24273                return 'раніцы';
24274            } else if (hour < 17) {
24275                return 'дня';
24276            } else {
24277                return 'вечара';
24278            }
24279        },
24280        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
24281        ordinal: function (number, period) {
24282            switch (period) {
24283                case 'M':
24284                case 'd':
24285                case 'DDD':
24286                case 'w':
24287                case 'W':
24288                    return (number % 10 === 2 || number % 10 === 3) &&
24289                        number % 100 !== 12 &&
24290                        number % 100 !== 13
24291                        ? number + '-і'
24292                        : number + '-ы';
24293                case 'D':
24294                    return number + '-га';
24295                default:
24296                    return number;
24297            }
24298        },
24299        week: {
24300            dow: 1, // Monday is the first day of the week.
24301            doy: 7, // The week that contains Jan 7th is the first week of the year.
24302        },
24303    });
24304
24305    return be;
24306
24307})));
24308
24309
24310/***/ }),
24311/* 14 */
24312/***/ (function(module, exports, __webpack_require__) {
24313
24314//! moment.js locale configuration
24315//! locale : Bulgarian [bg]
24316//! author : Krasen Borisov : https://github.com/kraz
24317
24318;(function (global, factory) {
24319    true ? factory(__webpack_require__(0)) :
24320   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24321   factory(global.moment)
24322}(this, (function (moment) { 'use strict';
24323
24324    //! moment.js locale configuration
24325
24326    var bg = moment.defineLocale('bg', {
24327        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
24328            '_'
24329        ),
24330        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
24331        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
24332            '_'
24333        ),
24334        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
24335        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
24336        longDateFormat: {
24337            LT: 'H:mm',
24338            LTS: 'H:mm:ss',
24339            L: 'D.MM.YYYY',
24340            LL: 'D MMMM YYYY',
24341            LLL: 'D MMMM YYYY H:mm',
24342            LLLL: 'dddd, D MMMM YYYY H:mm',
24343        },
24344        calendar: {
24345            sameDay: '[Днес в] LT',
24346            nextDay: '[Утре в] LT',
24347            nextWeek: 'dddd [в] LT',
24348            lastDay: '[Вчера в] LT',
24349            lastWeek: function () {
24350                switch (this.day()) {
24351                    case 0:
24352                    case 3:
24353                    case 6:
24354                        return '[Миналата] dddd [в] LT';
24355                    case 1:
24356                    case 2:
24357                    case 4:
24358                    case 5:
24359                        return '[Миналия] dddd [в] LT';
24360                }
24361            },
24362            sameElse: 'L',
24363        },
24364        relativeTime: {
24365            future: 'след %s',
24366            past: 'преди %s',
24367            s: 'няколко секунди',
24368            ss: '%d секунди',
24369            m: 'минута',
24370            mm: '%d минути',
24371            h: 'час',
24372            hh: '%d часа',
24373            d: 'ден',
24374            dd: '%d дена',
24375            w: 'седмица',
24376            ww: '%d седмици',
24377            M: 'месец',
24378            MM: '%d месеца',
24379            y: 'година',
24380            yy: '%d години',
24381        },
24382        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
24383        ordinal: function (number) {
24384            var lastDigit = number % 10,
24385                last2Digits = number % 100;
24386            if (number === 0) {
24387                return number + '-ев';
24388            } else if (last2Digits === 0) {
24389                return number + '-ен';
24390            } else if (last2Digits > 10 && last2Digits < 20) {
24391                return number + '-ти';
24392            } else if (lastDigit === 1) {
24393                return number + '-ви';
24394            } else if (lastDigit === 2) {
24395                return number + '-ри';
24396            } else if (lastDigit === 7 || lastDigit === 8) {
24397                return number + '-ми';
24398            } else {
24399                return number + '-ти';
24400            }
24401        },
24402        week: {
24403            dow: 1, // Monday is the first day of the week.
24404            doy: 7, // The week that contains Jan 7th is the first week of the year.
24405        },
24406    });
24407
24408    return bg;
24409
24410})));
24411
24412
24413/***/ }),
24414/* 15 */
24415/***/ (function(module, exports, __webpack_require__) {
24416
24417//! moment.js locale configuration
24418//! locale : Bambara [bm]
24419//! author : Estelle Comment : https://github.com/estellecomment
24420
24421;(function (global, factory) {
24422    true ? factory(__webpack_require__(0)) :
24423   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24424   factory(global.moment)
24425}(this, (function (moment) { 'use strict';
24426
24427    //! moment.js locale configuration
24428
24429    var bm = moment.defineLocale('bm', {
24430        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
24431            '_'
24432        ),
24433        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
24434        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
24435        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
24436        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
24437        longDateFormat: {
24438            LT: 'HH:mm',
24439            LTS: 'HH:mm:ss',
24440            L: 'DD/MM/YYYY',
24441            LL: 'MMMM [tile] D [san] YYYY',
24442            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
24443            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
24444        },
24445        calendar: {
24446            sameDay: '[Bi lɛrɛ] LT',
24447            nextDay: '[Sini lɛrɛ] LT',
24448            nextWeek: 'dddd [don lɛrɛ] LT',
24449            lastDay: '[Kunu lɛrɛ] LT',
24450            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
24451            sameElse: 'L',
24452        },
24453        relativeTime: {
24454            future: '%s kɔnɔ',
24455            past: 'a bɛ %s bɔ',
24456            s: 'sanga dama dama',
24457            ss: 'sekondi %d',
24458            m: 'miniti kelen',
24459            mm: 'miniti %d',
24460            h: 'lɛrɛ kelen',
24461            hh: 'lɛrɛ %d',
24462            d: 'tile kelen',
24463            dd: 'tile %d',
24464            M: 'kalo kelen',
24465            MM: 'kalo %d',
24466            y: 'san kelen',
24467            yy: 'san %d',
24468        },
24469        week: {
24470            dow: 1, // Monday is the first day of the week.
24471            doy: 4, // The week that contains Jan 4th is the first week of the year.
24472        },
24473    });
24474
24475    return bm;
24476
24477})));
24478
24479
24480/***/ }),
24481/* 16 */
24482/***/ (function(module, exports, __webpack_require__) {
24483
24484//! moment.js locale configuration
24485//! locale : Bengali [bn]
24486//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
24487
24488;(function (global, factory) {
24489    true ? factory(__webpack_require__(0)) :
24490   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24491   factory(global.moment)
24492}(this, (function (moment) { 'use strict';
24493
24494    //! moment.js locale configuration
24495
24496    var symbolMap = {
24497            1: 'à§§',
24498            2: '২',
24499            3: 'à§©',
24500            4: '৪',
24501            5: 'à§«',
24502            6: '৬',
24503            7: 'à§­',
24504            8: 'à§®',
24505            9: '৯',
24506            0: '০',
24507        },
24508        numberMap = {
24509            'à§§': '1',
24510            '২': '2',
24511            'à§©': '3',
24512            '৪': '4',
24513            'à§«': '5',
24514            '৬': '6',
24515            'à§­': '7',
24516            'à§®': '8',
24517            '৯': '9',
24518            '০': '0',
24519        };
24520
24521    var bn = moment.defineLocale('bn', {
24522        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
24523            '_'
24524        ),
24525        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
24526            '_'
24527        ),
24528        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
24529            '_'
24530        ),
24531        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
24532        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
24533        longDateFormat: {
24534            LT: 'A h:mm সময়',
24535            LTS: 'A h:mm:ss সময়',
24536            L: 'DD/MM/YYYY',
24537            LL: 'D MMMM YYYY',
24538            LLL: 'D MMMM YYYY, A h:mm সময়',
24539            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
24540        },
24541        calendar: {
24542            sameDay: '[আজ] LT',
24543            nextDay: '[আগামীকাল] LT',
24544            nextWeek: 'dddd, LT',
24545            lastDay: '[গতকাল] LT',
24546            lastWeek: '[গত] dddd, LT',
24547            sameElse: 'L',
24548        },
24549        relativeTime: {
24550            future: '%s পরে',
24551            past: '%s আগে',
24552            s: 'কয়েক সেকেন্ড',
24553            ss: '%d সেকেন্ড',
24554            m: 'এক মিনিট',
24555            mm: '%d মিনিট',
24556            h: 'এক ঘন্টা',
24557            hh: '%d ঘন্টা',
24558            d: 'এক দিন',
24559            dd: '%d দিন',
24560            M: 'এক মাস',
24561            MM: '%d মাস',
24562            y: 'এক বছর',
24563            yy: '%d বছর',
24564        },
24565        preparse: function (string) {
24566            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
24567                return numberMap[match];
24568            });
24569        },
24570        postformat: function (string) {
24571            return string.replace(/\d/g, function (match) {
24572                return symbolMap[match];
24573            });
24574        },
24575        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
24576        meridiemHour: function (hour, meridiem) {
24577            if (hour === 12) {
24578                hour = 0;
24579            }
24580            if (
24581                (meridiem === 'রাত' && hour >= 4) ||
24582                (meridiem === 'দুপুর' && hour < 5) ||
24583                meridiem === 'বিকাল'
24584            ) {
24585                return hour + 12;
24586            } else {
24587                return hour;
24588            }
24589        },
24590        meridiem: function (hour, minute, isLower) {
24591            if (hour < 4) {
24592                return 'রাত';
24593            } else if (hour < 10) {
24594                return 'সকাল';
24595            } else if (hour < 17) {
24596                return 'দুপুর';
24597            } else if (hour < 20) {
24598                return 'বিকাল';
24599            } else {
24600                return 'রাত';
24601            }
24602        },
24603        week: {
24604            dow: 0, // Sunday is the first day of the week.
24605            doy: 6, // The week that contains Jan 6th is the first week of the year.
24606        },
24607    });
24608
24609    return bn;
24610
24611})));
24612
24613
24614/***/ }),
24615/* 17 */
24616/***/ (function(module, exports, __webpack_require__) {
24617
24618//! moment.js locale configuration
24619//! locale : Bengali (Bangladesh) [bn-bd]
24620//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
24621
24622;(function (global, factory) {
24623    true ? factory(__webpack_require__(0)) :
24624   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24625   factory(global.moment)
24626}(this, (function (moment) { 'use strict';
24627
24628    //! moment.js locale configuration
24629
24630    var symbolMap = {
24631            1: 'à§§',
24632            2: '২',
24633            3: 'à§©',
24634            4: '৪',
24635            5: 'à§«',
24636            6: '৬',
24637            7: 'à§­',
24638            8: 'à§®',
24639            9: '৯',
24640            0: '০',
24641        },
24642        numberMap = {
24643            'à§§': '1',
24644            '২': '2',
24645            'à§©': '3',
24646            '৪': '4',
24647            'à§«': '5',
24648            '৬': '6',
24649            'à§­': '7',
24650            'à§®': '8',
24651            '৯': '9',
24652            '০': '0',
24653        };
24654
24655    var bnBd = moment.defineLocale('bn-bd', {
24656        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
24657            '_'
24658        ),
24659        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
24660            '_'
24661        ),
24662        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
24663            '_'
24664        ),
24665        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
24666        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
24667        longDateFormat: {
24668            LT: 'A h:mm সময়',
24669            LTS: 'A h:mm:ss সময়',
24670            L: 'DD/MM/YYYY',
24671            LL: 'D MMMM YYYY',
24672            LLL: 'D MMMM YYYY, A h:mm সময়',
24673            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
24674        },
24675        calendar: {
24676            sameDay: '[আজ] LT',
24677            nextDay: '[আগামীকাল] LT',
24678            nextWeek: 'dddd, LT',
24679            lastDay: '[গতকাল] LT',
24680            lastWeek: '[গত] dddd, LT',
24681            sameElse: 'L',
24682        },
24683        relativeTime: {
24684            future: '%s পরে',
24685            past: '%s আগে',
24686            s: 'কয়েক সেকেন্ড',
24687            ss: '%d সেকেন্ড',
24688            m: 'এক মিনিট',
24689            mm: '%d মিনিট',
24690            h: 'এক ঘন্টা',
24691            hh: '%d ঘন্টা',
24692            d: 'এক দিন',
24693            dd: '%d দিন',
24694            M: 'এক মাস',
24695            MM: '%d মাস',
24696            y: 'এক বছর',
24697            yy: '%d বছর',
24698        },
24699        preparse: function (string) {
24700            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
24701                return numberMap[match];
24702            });
24703        },
24704        postformat: function (string) {
24705            return string.replace(/\d/g, function (match) {
24706                return symbolMap[match];
24707            });
24708        },
24709
24710        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
24711        meridiemHour: function (hour, meridiem) {
24712            if (hour === 12) {
24713                hour = 0;
24714            }
24715            if (meridiem === 'রাত') {
24716                return hour < 4 ? hour : hour + 12;
24717            } else if (meridiem === 'ভোর') {
24718                return hour;
24719            } else if (meridiem === 'সকাল') {
24720                return hour;
24721            } else if (meridiem === 'দুপুর') {
24722                return hour >= 3 ? hour : hour + 12;
24723            } else if (meridiem === 'বিকাল') {
24724                return hour + 12;
24725            } else if (meridiem === 'সন্ধ্যা') {
24726                return hour + 12;
24727            }
24728        },
24729
24730        meridiem: function (hour, minute, isLower) {
24731            if (hour < 4) {
24732                return 'রাত';
24733            } else if (hour < 6) {
24734                return 'ভোর';
24735            } else if (hour < 12) {
24736                return 'সকাল';
24737            } else if (hour < 15) {
24738                return 'দুপুর';
24739            } else if (hour < 18) {
24740                return 'বিকাল';
24741            } else if (hour < 20) {
24742                return 'সন্ধ্যা';
24743            } else {
24744                return 'রাত';
24745            }
24746        },
24747        week: {
24748            dow: 0, // Sunday is the first day of the week.
24749            doy: 6, // The week that contains Jan 6th is the first week of the year.
24750        },
24751    });
24752
24753    return bnBd;
24754
24755})));
24756
24757
24758/***/ }),
24759/* 18 */
24760/***/ (function(module, exports, __webpack_require__) {
24761
24762//! moment.js locale configuration
24763//! locale : Tibetan [bo]
24764//! author : Thupten N. Chakrishar : https://github.com/vajradog
24765
24766;(function (global, factory) {
24767    true ? factory(__webpack_require__(0)) :
24768   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24769   factory(global.moment)
24770}(this, (function (moment) { 'use strict';
24771
24772    //! moment.js locale configuration
24773
24774    var symbolMap = {
24775            1: '༡',
24776            2: '༢',
24777            3: '༣',
24778            4: '༤',
24779            5: '༥',
24780            6: '༦',
24781            7: '༧',
24782            8: '༨',
24783            9: '༩',
24784            0: '༠',
24785        },
24786        numberMap = {
24787            '༡': '1',
24788            '༢': '2',
24789            '༣': '3',
24790            '༤': '4',
24791            '༥': '5',
24792            '༦': '6',
24793            '༧': '7',
24794            '༨': '8',
24795            '༩': '9',
24796            '༠': '0',
24797        };
24798
24799    var bo = moment.defineLocale('bo', {
24800        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
24801            '_'
24802        ),
24803        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
24804            '_'
24805        ),
24806        monthsShortRegex: /^(ཟླ་\d{1,2})/,
24807        monthsParseExact: true,
24808        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
24809            '_'
24810        ),
24811        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
24812            '_'
24813        ),
24814        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
24815        longDateFormat: {
24816            LT: 'A h:mm',
24817            LTS: 'A h:mm:ss',
24818            L: 'DD/MM/YYYY',
24819            LL: 'D MMMM YYYY',
24820            LLL: 'D MMMM YYYY, A h:mm',
24821            LLLL: 'dddd, D MMMM YYYY, A h:mm',
24822        },
24823        calendar: {
24824            sameDay: '[དི་རིང] LT',
24825            nextDay: '[སང་ཉིན] LT',
24826            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
24827            lastDay: '[ཁ་སང] LT',
24828            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
24829            sameElse: 'L',
24830        },
24831        relativeTime: {
24832            future: '%s ལ་',
24833            past: '%s སྔན་ལ',
24834            s: 'ལམ་སང',
24835            ss: '%d སྐར་ཆ།',
24836            m: 'སྐར་མ་གཅིག',
24837            mm: '%d སྐར་མ',
24838            h: 'ཆུ་ཚོད་གཅིག',
24839            hh: '%d ཆུ་ཚོད',
24840            d: 'ཉིན་གཅིག',
24841            dd: '%d ཉིན་',
24842            M: 'ཟླ་བ་གཅིག',
24843            MM: '%d ཟླ་བ',
24844            y: 'ལོ་གཅིག',
24845            yy: '%d ལོ',
24846        },
24847        preparse: function (string) {
24848            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
24849                return numberMap[match];
24850            });
24851        },
24852        postformat: function (string) {
24853            return string.replace(/\d/g, function (match) {
24854                return symbolMap[match];
24855            });
24856        },
24857        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
24858        meridiemHour: function (hour, meridiem) {
24859            if (hour === 12) {
24860                hour = 0;
24861            }
24862            if (
24863                (meridiem === 'མཚན་མོ' && hour >= 4) ||
24864                (meridiem === 'ཉིན་གུང' && hour < 5) ||
24865                meridiem === 'དགོང་དག'
24866            ) {
24867                return hour + 12;
24868            } else {
24869                return hour;
24870            }
24871        },
24872        meridiem: function (hour, minute, isLower) {
24873            if (hour < 4) {
24874                return 'མཚན་མོ';
24875            } else if (hour < 10) {
24876                return 'ཞོགས་ཀས';
24877            } else if (hour < 17) {
24878                return 'ཉིན་གུང';
24879            } else if (hour < 20) {
24880                return 'དགོང་དག';
24881            } else {
24882                return 'མཚན་མོ';
24883            }
24884        },
24885        week: {
24886            dow: 0, // Sunday is the first day of the week.
24887            doy: 6, // The week that contains Jan 6th is the first week of the year.
24888        },
24889    });
24890
24891    return bo;
24892
24893})));
24894
24895
24896/***/ }),
24897/* 19 */
24898/***/ (function(module, exports, __webpack_require__) {
24899
24900//! moment.js locale configuration
24901//! locale : Breton [br]
24902//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
24903
24904;(function (global, factory) {
24905    true ? factory(__webpack_require__(0)) :
24906   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24907   factory(global.moment)
24908}(this, (function (moment) { 'use strict';
24909
24910    //! moment.js locale configuration
24911
24912    function relativeTimeWithMutation(number, withoutSuffix, key) {
24913        var format = {
24914            mm: 'munutenn',
24915            MM: 'miz',
24916            dd: 'devezh',
24917        };
24918        return number + ' ' + mutation(format[key], number);
24919    }
24920    function specialMutationForYears(number) {
24921        switch (lastNumber(number)) {
24922            case 1:
24923            case 3:
24924            case 4:
24925            case 5:
24926            case 9:
24927                return number + ' bloaz';
24928            default:
24929                return number + ' vloaz';
24930        }
24931    }
24932    function lastNumber(number) {
24933        if (number > 9) {
24934            return lastNumber(number % 10);
24935        }
24936        return number;
24937    }
24938    function mutation(text, number) {
24939        if (number === 2) {
24940            return softMutation(text);
24941        }
24942        return text;
24943    }
24944    function softMutation(text) {
24945        var mutationTable = {
24946            m: 'v',
24947            b: 'v',
24948            d: 'z',
24949        };
24950        if (mutationTable[text.charAt(0)] === undefined) {
24951            return text;
24952        }
24953        return mutationTable[text.charAt(0)] + text.substring(1);
24954    }
24955
24956    var monthsParse = [
24957            /^gen/i,
24958            /^c[ʼ\']hwe/i,
24959            /^meu/i,
24960            /^ebr/i,
24961            /^mae/i,
24962            /^(mez|eve)/i,
24963            /^gou/i,
24964            /^eos/i,
24965            /^gwe/i,
24966            /^her/i,
24967            /^du/i,
24968            /^ker/i,
24969        ],
24970        monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
24971        monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
24972        monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
24973        fullWeekdaysParse = [
24974            /^sul/i,
24975            /^lun/i,
24976            /^meurzh/i,
24977            /^merc[ʼ\']her/i,
24978            /^yaou/i,
24979            /^gwener/i,
24980            /^sadorn/i,
24981        ],
24982        shortWeekdaysParse = [
24983            /^Sul/i,
24984            /^Lun/i,
24985            /^Meu/i,
24986            /^Mer/i,
24987            /^Yao/i,
24988            /^Gwe/i,
24989            /^Sad/i,
24990        ],
24991        minWeekdaysParse = [
24992            /^Su/i,
24993            /^Lu/i,
24994            /^Me([^r]|$)/i,
24995            /^Mer/i,
24996            /^Ya/i,
24997            /^Gw/i,
24998            /^Sa/i,
24999        ];
25000
25001    var br = moment.defineLocale('br', {
25002        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
25003            '_'
25004        ),
25005        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
25006        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
25007        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
25008        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
25009        weekdaysParse: minWeekdaysParse,
25010        fullWeekdaysParse: fullWeekdaysParse,
25011        shortWeekdaysParse: shortWeekdaysParse,
25012        minWeekdaysParse: minWeekdaysParse,
25013
25014        monthsRegex: monthsRegex,
25015        monthsShortRegex: monthsRegex,
25016        monthsStrictRegex: monthsStrictRegex,
25017        monthsShortStrictRegex: monthsShortStrictRegex,
25018        monthsParse: monthsParse,
25019        longMonthsParse: monthsParse,
25020        shortMonthsParse: monthsParse,
25021
25022        longDateFormat: {
25023            LT: 'HH:mm',
25024            LTS: 'HH:mm:ss',
25025            L: 'DD/MM/YYYY',
25026            LL: 'D [a viz] MMMM YYYY',
25027            LLL: 'D [a viz] MMMM YYYY HH:mm',
25028            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
25029        },
25030        calendar: {
25031            sameDay: '[Hiziv da] LT',
25032            nextDay: '[Warcʼhoazh da] LT',
25033            nextWeek: 'dddd [da] LT',
25034            lastDay: '[Decʼh da] LT',
25035            lastWeek: 'dddd [paset da] LT',
25036            sameElse: 'L',
25037        },
25038        relativeTime: {
25039            future: 'a-benn %s',
25040            past: '%s ʼzo',
25041            s: 'un nebeud segondennoù',
25042            ss: '%d eilenn',
25043            m: 'ur vunutenn',
25044            mm: relativeTimeWithMutation,
25045            h: 'un eur',
25046            hh: '%d eur',
25047            d: 'un devezh',
25048            dd: relativeTimeWithMutation,
25049            M: 'ur miz',
25050            MM: relativeTimeWithMutation,
25051            y: 'ur bloaz',
25052            yy: specialMutationForYears,
25053        },
25054        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
25055        ordinal: function (number) {
25056            var output = number === 1 ? 'añ' : 'vet';
25057            return number + output;
25058        },
25059        week: {
25060            dow: 1, // Monday is the first day of the week.
25061            doy: 4, // The week that contains Jan 4th is the first week of the year.
25062        },
25063        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
25064        isPM: function (token) {
25065            return token === 'g.m.';
25066        },
25067        meridiem: function (hour, minute, isLower) {
25068            return hour < 12 ? 'a.m.' : 'g.m.';
25069        },
25070    });
25071
25072    return br;
25073
25074})));
25075
25076
25077/***/ }),
25078/* 20 */
25079/***/ (function(module, exports, __webpack_require__) {
25080
25081//! moment.js locale configuration
25082//! locale : Bosnian [bs]
25083//! author : Nedim Cholich : https://github.com/frontyard
25084//! based on (hr) translation by Bojan Marković
25085
25086;(function (global, factory) {
25087    true ? factory(__webpack_require__(0)) :
25088   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25089   factory(global.moment)
25090}(this, (function (moment) { 'use strict';
25091
25092    //! moment.js locale configuration
25093
25094    function translate(number, withoutSuffix, key) {
25095        var result = number + ' ';
25096        switch (key) {
25097            case 'ss':
25098                if (number === 1) {
25099                    result += 'sekunda';
25100                } else if (number === 2 || number === 3 || number === 4) {
25101                    result += 'sekunde';
25102                } else {
25103                    result += 'sekundi';
25104                }
25105                return result;
25106            case 'm':
25107                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
25108            case 'mm':
25109                if (number === 1) {
25110                    result += 'minuta';
25111                } else if (number === 2 || number === 3 || number === 4) {
25112                    result += 'minute';
25113                } else {
25114                    result += 'minuta';
25115                }
25116                return result;
25117            case 'h':
25118                return withoutSuffix ? 'jedan sat' : 'jednog sata';
25119            case 'hh':
25120                if (number === 1) {
25121                    result += 'sat';
25122                } else if (number === 2 || number === 3 || number === 4) {
25123                    result += 'sata';
25124                } else {
25125                    result += 'sati';
25126                }
25127                return result;
25128            case 'dd':
25129                if (number === 1) {
25130                    result += 'dan';
25131                } else {
25132                    result += 'dana';
25133                }
25134                return result;
25135            case 'MM':
25136                if (number === 1) {
25137                    result += 'mjesec';
25138                } else if (number === 2 || number === 3 || number === 4) {
25139                    result += 'mjeseca';
25140                } else {
25141                    result += 'mjeseci';
25142                }
25143                return result;
25144            case 'yy':
25145                if (number === 1) {
25146                    result += 'godina';
25147                } else if (number === 2 || number === 3 || number === 4) {
25148                    result += 'godine';
25149                } else {
25150                    result += 'godina';
25151                }
25152                return result;
25153        }
25154    }
25155
25156    var bs = moment.defineLocale('bs', {
25157        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
25158            '_'
25159        ),
25160        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
25161            '_'
25162        ),
25163        monthsParseExact: true,
25164        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
25165            '_'
25166        ),
25167        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
25168        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
25169        weekdaysParseExact: true,
25170        longDateFormat: {
25171            LT: 'H:mm',
25172            LTS: 'H:mm:ss',
25173            L: 'DD.MM.YYYY',
25174            LL: 'D. MMMM YYYY',
25175            LLL: 'D. MMMM YYYY H:mm',
25176            LLLL: 'dddd, D. MMMM YYYY H:mm',
25177        },
25178        calendar: {
25179            sameDay: '[danas u] LT',
25180            nextDay: '[sutra u] LT',
25181            nextWeek: function () {
25182                switch (this.day()) {
25183                    case 0:
25184                        return '[u] [nedjelju] [u] LT';
25185                    case 3:
25186                        return '[u] [srijedu] [u] LT';
25187                    case 6:
25188                        return '[u] [subotu] [u] LT';
25189                    case 1:
25190                    case 2:
25191                    case 4:
25192                    case 5:
25193                        return '[u] dddd [u] LT';
25194                }
25195            },
25196            lastDay: '[jučer u] LT',
25197            lastWeek: function () {
25198                switch (this.day()) {
25199                    case 0:
25200                    case 3:
25201                        return '[prošlu] dddd [u] LT';
25202                    case 6:
25203                        return '[prošle] [subote] [u] LT';
25204                    case 1:
25205                    case 2:
25206                    case 4:
25207                    case 5:
25208                        return '[prošli] dddd [u] LT';
25209                }
25210            },
25211            sameElse: 'L',
25212        },
25213        relativeTime: {
25214            future: 'za %s',
25215            past: 'prije %s',
25216            s: 'par sekundi',
25217            ss: translate,
25218            m: translate,
25219            mm: translate,
25220            h: translate,
25221            hh: translate,
25222            d: 'dan',
25223            dd: translate,
25224            M: 'mjesec',
25225            MM: translate,
25226            y: 'godinu',
25227            yy: translate,
25228        },
25229        dayOfMonthOrdinalParse: /\d{1,2}\./,
25230        ordinal: '%d.',
25231        week: {
25232            dow: 1, // Monday is the first day of the week.
25233            doy: 7, // The week that contains Jan 7th is the first week of the year.
25234        },
25235    });
25236
25237    return bs;
25238
25239})));
25240
25241
25242/***/ }),
25243/* 21 */
25244/***/ (function(module, exports, __webpack_require__) {
25245
25246//! moment.js locale configuration
25247//! locale : Catalan [ca]
25248//! author : Juan G. Hurtado : https://github.com/juanghurtado
25249
25250;(function (global, factory) {
25251    true ? factory(__webpack_require__(0)) :
25252   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25253   factory(global.moment)
25254}(this, (function (moment) { 'use strict';
25255
25256    //! moment.js locale configuration
25257
25258    var ca = moment.defineLocale('ca', {
25259        months: {
25260            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
25261                '_'
25262            ),
25263            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
25264                '_'
25265            ),
25266            isFormat: /D[oD]?(\s)+MMMM/,
25267        },
25268        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
25269            '_'
25270        ),
25271        monthsParseExact: true,
25272        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
25273            '_'
25274        ),
25275        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
25276        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
25277        weekdaysParseExact: true,
25278        longDateFormat: {
25279            LT: 'H:mm',
25280            LTS: 'H:mm:ss',
25281            L: 'DD/MM/YYYY',
25282            LL: 'D MMMM [de] YYYY',
25283            ll: 'D MMM YYYY',
25284            LLL: 'D MMMM [de] YYYY [a les] H:mm',
25285            lll: 'D MMM YYYY, H:mm',
25286            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
25287            llll: 'ddd D MMM YYYY, H:mm',
25288        },
25289        calendar: {
25290            sameDay: function () {
25291                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25292            },
25293            nextDay: function () {
25294                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25295            },
25296            nextWeek: function () {
25297                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25298            },
25299            lastDay: function () {
25300                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25301            },
25302            lastWeek: function () {
25303                return (
25304                    '[el] dddd [passat a ' +
25305                    (this.hours() !== 1 ? 'les' : 'la') +
25306                    '] LT'
25307                );
25308            },
25309            sameElse: 'L',
25310        },
25311        relativeTime: {
25312            future: "d'aquí %s",
25313            past: 'fa %s',
25314            s: 'uns segons',
25315            ss: '%d segons',
25316            m: 'un minut',
25317            mm: '%d minuts',
25318            h: 'una hora',
25319            hh: '%d hores',
25320            d: 'un dia',
25321            dd: '%d dies',
25322            M: 'un mes',
25323            MM: '%d mesos',
25324            y: 'un any',
25325            yy: '%d anys',
25326        },
25327        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
25328        ordinal: function (number, period) {
25329            var output =
25330                number === 1
25331                    ? 'r'
25332                    : number === 2
25333                    ? 'n'
25334                    : number === 3
25335                    ? 'r'
25336                    : number === 4
25337                    ? 't'
25338                    : 'è';
25339            if (period === 'w' || period === 'W') {
25340                output = 'a';
25341            }
25342            return number + output;
25343        },
25344        week: {
25345            dow: 1, // Monday is the first day of the week.
25346            doy: 4, // The week that contains Jan 4th is the first week of the year.
25347        },
25348    });
25349
25350    return ca;
25351
25352})));
25353
25354
25355/***/ }),
25356/* 22 */
25357/***/ (function(module, exports, __webpack_require__) {
25358
25359//! moment.js locale configuration
25360//! locale : Czech [cs]
25361//! author : petrbela : https://github.com/petrbela
25362
25363;(function (global, factory) {
25364    true ? factory(__webpack_require__(0)) :
25365   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25366   factory(global.moment)
25367}(this, (function (moment) { 'use strict';
25368
25369    //! moment.js locale configuration
25370
25371    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.
25371split(
25372            '_'
25373        ),
25374        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
25375        monthsParse = [
25376            /^led/i,
25377            /^úno/i,
25378            /^bře/i,
25379            /^dub/i,
25380            /^kvě/i,
25381            /^(čvn|červen$|června)/i,
25382            /^(čvc|červenec|července)/i,
25383            /^srp/i,
25384            /^zář/i,
25385            /^říj/i,
25386            /^lis/i,
25387            /^pro/i,
25388        ],
25389        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
25390        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
25391        monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
25392
25393    function plural(n) {
25394        return n > 1 && n < 5 && ~~(n / 10) !== 1;
25395    }
25396    function translate(number, withoutSuffix, key, isFuture) {
25397        var result = number + ' ';
25398        switch (key) {
25399            case 's': // a few seconds / in a few seconds / a few seconds ago
25400                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
25401            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
25402                if (withoutSuffix || isFuture) {
25403                    return result + (plural(number) ? 'sekundy' : 'sekund');
25404                } else {
25405                    return result + 'sekundami';
25406                }
25407            case 'm': // a minute / in a minute / a minute ago
25408                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
25409            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
25410                if (withoutSuffix || isFuture) {
25411                    return result + (plural(number) ? 'minuty' : 'minut');
25412                } else {
25413                    return result + 'minutami';
25414                }
25415            case 'h': // an hour / in an hour / an hour ago
25416                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
25417            case 'hh': // 9 hours / in 9 hours / 9 hours ago
25418                if (withoutSuffix || isFuture) {
25419                    return result + (plural(number) ? 'hodiny' : 'hodin');
25420                } else {
25421                    return result + 'hodinami';
25422                }
25423            case 'd': // a day / in a day / a day ago
25424                return withoutSuffix || isFuture ? 'den' : 'dnem';
25425            case 'dd': // 9 days / in 9 days / 9 days ago
25426                if (withoutSuffix || isFuture) {
25427                    return result + (plural(number) ? 'dny' : 'dní');
25428                } else {
25429                    return result + 'dny';
25430                }
25431            case 'M': // a month / in a month / a month ago
25432                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
25433            case 'MM': // 9 months / in 9 months / 9 months ago
25434                if (withoutSuffix || isFuture) {
25435                    return result + (plural(number) ? 'měsíce' : 'měsíců');
25436                } else {
25437                    return result + 'měsíci';
25438                }
25439            case 'y': // a year / in a year / a year ago
25440                return withoutSuffix || isFuture ? 'rok' : 'rokem';
25441            case 'yy': // 9 years / in 9 years / 9 years ago
25442                if (withoutSuffix || isFuture) {
25443                    return result + (plural(number) ? 'roky' : 'let');
25444                } else {
25445                    return result + 'lety';
25446                }
25447        }
25448    }
25449
25450    var cs = moment.defineLocale('cs', {
25451        months: months,
25452        monthsShort: monthsShort,
25453        monthsRegex: monthsRegex,
25454        monthsShortRegex: monthsRegex,
25455        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
25456        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
25457        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
25458        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
25459        monthsParse: monthsParse,
25460        longMonthsParse: monthsParse,
25461        shortMonthsParse: monthsParse,
25462        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
25463        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
25464        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
25465        longDateFormat: {
25466            LT: 'H:mm',
25467            LTS: 'H:mm:ss',
25468            L: 'DD.MM.YYYY',
25469            LL: 'D. MMMM YYYY',
25470            LLL: 'D. MMMM YYYY H:mm',
25471            LLLL: 'dddd D. MMMM YYYY H:mm',
25472            l: 'D. M. YYYY',
25473        },
25474        calendar: {
25475            sameDay: '[dnes v] LT',
25476            nextDay: '[zítra v] LT',
25477            nextWeek: function () {
25478                switch (this.day()) {
25479                    case 0:
25480                        return '[v neděli v] LT';
25481                    case 1:
25482                    case 2:
25483                        return '[v] dddd [v] LT';
25484                    case 3:
25485                        return '[ve středu v] LT';
25486                    case 4:
25487                        return '[ve čtvrtek v] LT';
25488                    case 5:
25489                        return '[v pátek v] LT';
25490                    case 6:
25491                        return '[v sobotu v] LT';
25492                }
25493            },
25494            lastDay: '[včera v] LT',
25495            lastWeek: function () {
25496                switch (this.day()) {
25497                    case 0:
25498                        return '[minulou neděli v] LT';
25499                    case 1:
25500                    case 2:
25501                        return '[minulé] dddd [v] LT';
25502                    case 3:
25503                        return '[minulou středu v] LT';
25504                    case 4:
25505                    case 5:
25506                        return '[minulý] dddd [v] LT';
25507                    case 6:
25508                        return '[minulou sobotu v] LT';
25509                }
25510            },
25511            sameElse: 'L',
25512        },
25513        relativeTime: {
25514            future: 'za %s',
25515            past: 'před %s',
25516            s: translate,
25517            ss: translate,
25518            m: translate,
25519            mm: translate,
25520            h: translate,
25521            hh: translate,
25522            d: translate,
25523            dd: translate,
25524            M: translate,
25525            MM: translate,
25526            y: translate,
25527            yy: translate,
25528        },
25529        dayOfMonthOrdinalParse: /\d{1,2}\./,
25530        ordinal: '%d.',
25531        week: {
25532            dow: 1, // Monday is the first day of the week.
25533            doy: 4, // The week that contains Jan 4th is the first week of the year.
25534        },
25535    });
25536
25537    return cs;
25538
25539})));
25540
25541
25542/***/ }),
25543/* 23 */
25544/***/ (function(module, exports, __webpack_require__) {
25545
25546//! moment.js locale configuration
25547//! locale : Chuvash [cv]
25548//! author : Anatoly Mironov : https://github.com/mirontoli
25549
25550;(function (global, factory) {
25551    true ? factory(__webpack_require__(0)) :
25552   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25553   factory(global.moment)
25554}(this, (function (moment) { 'use strict';
25555
25556    //! moment.js locale configuration
25557
25558    var cv = moment.defineLocale('cv', {
25559        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
25560            '_'
25561        ),
25562        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
25563        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
25564            '_'
25565        ),
25566        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
25567        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
25568        longDateFormat: {
25569            LT: 'HH:mm',
25570            LTS: 'HH:mm:ss',
25571            L: 'DD-MM-YYYY',
25572            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
25573            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
25574            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
25575        },
25576        calendar: {
25577            sameDay: '[Паян] LT [сехетре]',
25578            nextDay: '[Ыран] LT [сехетре]',
25579            lastDay: '[Ӗнер] LT [сехетре]',
25580            nextWeek: '[Ҫитес] dddd LT [сехетре]',
25581            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
25582            sameElse: 'L',
25583        },
25584        relativeTime: {
25585            future: function (output) {
25586                var affix = /сехет$/i.exec(output)
25587                    ? 'рен'
25588                    : /ҫул$/i.exec(output)
25589                    ? 'тан'
25590                    : 'ран';
25591                return output + affix;
25592            },
25593            past: '%s каялла',
25594            s: 'пӗр-ик ҫеккунт',
25595            ss: '%d ҫеккунт',
25596            m: 'пӗр минут',
25597            mm: '%d минут',
25598            h: 'пӗр сехет',
25599            hh: '%d сехет',
25600            d: 'пӗр кун',
25601            dd: '%d кун',
25602            M: 'пӗр уйӑх',
25603            MM: '%d уйӑх',
25604            y: 'пӗр ҫул',
25605            yy: '%d ҫул',
25606        },
25607        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
25608        ordinal: '%d-мӗш',
25609        week: {
25610            dow: 1, // Monday is the first day of the week.
25611            doy: 7, // The week that contains Jan 7th is the first week of the year.
25612        },
25613    });
25614
25615    return cv;
25616
25617})));
25618
25619
25620/***/ }),
25621/* 24 */
25622/***/ (function(module, exports, __webpack_require__) {
25623
25624//! moment.js locale configuration
25625//! locale : Welsh [cy]
25626//! author : Robert Allen : https://github.com/robgallen
25627//! author : https://github.com/ryangreaves
25628
25629;(function (global, factory) {
25630    true ? factory(__webpack_require__(0)) :
25631   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25632   factory(global.moment)
25633}(this, (function (moment) { 'use strict';
25634
25635    //! moment.js locale configuration
25636
25637    var cy = moment.defineLocale('cy', {
25638        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
25639            '_'
25640        ),
25641        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
25642            '_'
25643        ),
25644        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
25645            '_'
25646        ),
25647        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
25648        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
25649        weekdaysParseExact: true,
25650        // time formats are the same as en-gb
25651        longDateFormat: {
25652            LT: 'HH:mm',
25653            LTS: 'HH:mm:ss',
25654            L: 'DD/MM/YYYY',
25655            LL: 'D MMMM YYYY',
25656            LLL: 'D MMMM YYYY HH:mm',
25657            LLLL: 'dddd, D MMMM YYYY HH:mm',
25658        },
25659        calendar: {
25660            sameDay: '[Heddiw am] LT',
25661            nextDay: '[Yfory am] LT',
25662            nextWeek: 'dddd [am] LT',
25663            lastDay: '[Ddoe am] LT',
25664            lastWeek: 'dddd [diwethaf am] LT',
25665            sameElse: 'L',
25666        },
25667        relativeTime: {
25668            future: 'mewn %s',
25669            past: '%s yn ôl',
25670            s: 'ychydig eiliadau',
25671            ss: '%d eiliad',
25672            m: 'munud',
25673            mm: '%d munud',
25674            h: 'awr',
25675            hh: '%d awr',
25676            d: 'diwrnod',
25677            dd: '%d diwrnod',
25678            M: 'mis',
25679            MM: '%d mis',
25680            y: 'blwyddyn',
25681            yy: '%d flynedd',
25682        },
25683        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
25684        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
25685        ordinal: function (number) {
25686            var b = number,
25687                output = '',
25688                lookup = [
25689                    '',
25690                    'af',
25691                    'il',
25692                    'ydd',
25693                    'ydd',
25694                    'ed',
25695                    'ed',
25696                    'ed',
25697                    'fed',
25698                    'fed',
25699                    'fed', // 1af to 10fed
25700                    'eg',
25701                    'fed',
25702                    'eg',
25703                    'eg',
25704                    'fed',
25705                    'eg',
25706                    'eg',
25707                    'fed',
25708                    'eg',
25709                    'fed', // 11eg to 20fed
25710                ];
25711            if (b > 20) {
25712                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
25713                    output = 'fed'; // not 30ain, 70ain or 90ain
25714                } else {
25715                    output = 'ain';
25716                }
25717            } else if (b > 0) {
25718                output = lookup[b];
25719            }
25720            return number + output;
25721        },
25722        week: {
25723            dow: 1, // Monday is the first day of the week.
25724            doy: 4, // The week that contains Jan 4th is the first week of the year.
25725        },
25726    });
25727
25728    return cy;
25729
25730})));
25731
25732
25733/***/ }),
25734/* 25 */
25735/***/ (function(module, exports, __webpack_require__) {
25736
25737//! moment.js locale configuration
25738//! locale : Danish [da]
25739//! author : Ulrik Nielsen : https://github.com/mrbase
25740
25741;(function (global, factory) {
25742    true ? factory(__webpack_require__(0)) :
25743   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25744   factory(global.moment)
25745}(this, (function (moment) { 'use strict';
25746
25747    //! moment.js locale configuration
25748
25749    var da = moment.defineLocale('da', {
25750        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
25751            '_'
25752        ),
25753        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
25754        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
25755        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
25756        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
25757        longDateFormat: {
25758            LT: 'HH:mm',
25759            LTS: 'HH:mm:ss',
25760            L: 'DD.MM.YYYY',
25761            LL: 'D. MMMM YYYY',
25762            LLL: 'D. MMMM YYYY HH:mm',
25763            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
25764        },
25765        calendar: {
25766            sameDay: '[i dag kl.] LT',
25767            nextDay: '[i morgen kl.] LT',
25768            nextWeek: 'på dddd [kl.] LT',
25769            lastDay: '[i går kl.] LT',
25770            lastWeek: '[i] dddd[s kl.] LT',
25771            sameElse: 'L',
25772        },
25773        relativeTime: {
25774            future: 'om %s',
25775            past: '%s siden',
25776            s: 'få sekunder',
25777            ss: '%d sekunder',
25778            m: 'et minut',
25779            mm: '%d minutter',
25780            h: 'en time',
25781            hh: '%d timer',
25782            d: 'en dag',
25783            dd: '%d dage',
25784            M: 'en måned',
25785            MM: '%d måneder',
25786            y: 'et år',
25787            yy: '%d år',
25788        },
25789        dayOfMonthOrdinalParse: /\d{1,2}\./,
25790        ordinal: '%d.',
25791        week: {
25792            dow: 1, // Monday is the first day of the week.
25793            doy: 4, // The week that contains Jan 4th is the first week of the year.
25794        },
25795    });
25796
25797    return da;
25798
25799})));
25800
25801
25802/***/ }),
25803/* 26 */
25804/***/ (function(module, exports, __webpack_require__) {
25805
25806//! moment.js locale configuration
25807//! locale : German [de]
25808//! author : lluchs : https://github.com/lluchs
25809//! author: Menelion Elensúle: https://github.com/Oire
25810//! author : Mikolaj Dadela : https://github.com/mik01aj
25811
25812;(function (global, factory) {
25813    true ? factory(__webpack_require__(0)) :
25814   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25815   factory(global.moment)
25816}(this, (function (moment) { 'use strict';
25817
25818    //! moment.js locale configuration
25819
25820    function processRelativeTime(number, withoutSuffix, key, isFuture) {
25821        var format = {
25822            m: ['eine Minute', 'einer Minute'],
25823            h: ['eine Stunde', 'einer Stunde'],
25824            d: ['ein Tag', 'einem Tag'],
25825            dd: [number + ' Tage', number + ' Tagen'],
25826            w: ['eine Woche', 'einer Woche'],
25827            M: ['ein Monat', 'einem Monat'],
25828            MM: [number + ' Monate', number + ' Monaten'],
25829            y: ['ein Jahr', 'einem Jahr'],
25830            yy: [number + ' Jahre', number + ' Jahren'],
25831        };
25832        return withoutSuffix ? format[key][0] : format[key][1];
25833    }
25834
25835    var de = moment.defineLocale('de', {
25836        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
25837            '_'
25838        ),
25839        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
25840            '_'
25841        ),
25842        monthsParseExact: true,
25843        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
25844            '_'
25845        ),
25846        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
25847        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
25848        weekdaysParseExact: true,
25849        longDateFormat: {
25850            LT: 'HH:mm',
25851            LTS: 'HH:mm:ss',
25852            L: 'DD.MM.YYYY',
25853            LL: 'D. MMMM YYYY',
25854            LLL: 'D. MMMM YYYY HH:mm',
25855            LLLL: 'dddd, D. MMMM YYYY HH:mm',
25856        },
25857        calendar: {
25858            sameDay: '[heute um] LT [Uhr]',
25859            sameElse: 'L',
25860            nextDay: '[morgen um] LT [Uhr]',
25861            nextWeek: 'dddd [um] LT [Uhr]',
25862            lastDay: '[gestern um] LT [Uhr]',
25863            lastWeek: '[letzten] dddd [um] LT [Uhr]',
25864        },
25865        relativeTime: {
25866            future: 'in %s',
25867            past: 'vor %s',
25868            s: 'ein paar Sekunden',
25869            ss: '%d Sekunden',
25870            m: processRelativeTime,
25871            mm: '%d Minuten',
25872            h: processRelativeTime,
25873            hh: '%d Stunden',
25874            d: processRelativeTime,
25875            dd: processRelativeTime,
25876            w: processRelativeTime,
25877            ww: '%d Wochen',
25878            M: processRelativeTime,
25879            MM: processRelativeTime,
25880            y: processRelativeTime,
25881            yy: processRelativeTime,
25882        },
25883        dayOfMonthOrdinalParse: /\d{1,2}\./,
25884        ordinal: '%d.',
25885        week: {
25886            dow: 1, // Monday is the first day of the week.
25887            doy: 4, // The week that contains Jan 4th is the first week of the year.
25888        },
25889    });
25890
25891    return de;
25892
25893})));
25894
25895
25896/***/ }),
25897/* 27 */
25898/***/ (function(module, exports, __webpack_require__) {
25899
25900//! moment.js locale configuration
25901//! locale : German (Austria) [de-at]
25902//! author : lluchs : https://github.com/lluchs
25903//! author: Menelion Elensúle: https://github.com/Oire
25904//! author : Martin Groller : https://github.com/MadMG
25905//! author : Mikolaj Dadela : https://github.com/mik01aj
25906
25907;(function (global, factory) {
25908    true ? factory(__webpack_require__(0)) :
25909   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25910   factory(global.moment)
25911}(this, (function (moment) { 'use strict';
25912
25913    //! moment.js locale configuration
25914
25915    function processRelativeTime(number, withoutSuffix, key, isFuture) {
25916        var format = {
25917            m: ['eine Minute', 'einer Minute'],
25918            h: ['eine Stunde', 'einer Stunde'],
25919            d: ['ein Tag', 'einem Tag'],
25920            dd: [number + ' Tage', number + ' Tagen'],
25921            w: ['eine Woche', 'einer Woche'],
25922            M: ['ein Monat', 'einem Monat'],
25923            MM: [number + ' Monate', number + ' Monaten'],
25924            y: ['ein Jahr', 'einem Jahr'],
25925            yy: [number + ' Jahre', number + ' Jahren'],
25926        };
25927        return withoutSuffix ? format[key][0] : format[key][1];
25928    }
25929
25930    var deAt = moment.defineLocale('de-at', {
25931        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
25932            '_'
25933        ),
25934        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
25935            '_'
25936        ),
25937        monthsParseExact: true,
25938        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
25939            '_'
25940        ),
25941        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
25942        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
25943        weekdaysParseExact: true,
25944        longDateFormat: {
25945            LT: 'HH:mm',
25946            LTS: 'HH:mm:ss',
25947            L: 'DD.MM.YYYY',
25948            LL: 'D. MMMM YYYY',
25949            LLL: 'D. MMMM YYYY HH:mm',
25950            LLLL: 'dddd, D. MMMM YYYY HH:mm',
25951        },
25952        calendar: {
25953            sameDay: '[heute um] LT [Uhr]',
25954            sameElse: 'L',
25955            nextDay: '[morgen um] LT [Uhr]',
25956            nextWeek: 'dddd [um] LT [Uhr]',
25957            lastDay: '[gestern um] LT [Uhr]',
25958            lastWeek: '[letzten] dddd [um] LT [Uhr]',
25959        },
25960        relativeTime: {
25961            future: 'in %s',
25962            past: 'vor %s',
25963            s: 'ein paar Sekunden',
25964            ss: '%d Sekunden',
25965            m: processRelativeTime,
25966            mm: '%d Minuten',
25967            h: processRelativeTime,
25968            hh: '%d Stunden',
25969            d: processRelativeTime,
25970            dd: processRelativeTime,
25971            w: processRelativeTime,
25972            ww: '%d Wochen',
25973            M: processRelativeTime,
25974            MM: processRelativeTime,
25975            y: processRelativeTime,
25976            yy: processRelativeTime,
25977        },
25978        dayOfMonthOrdinalParse: /\d{1,2}\./,
25979        ordinal: '%d.',
25980        week: {
25981            dow: 1, // Monday is the first day of the week.
25982            doy: 4, // The week that contains Jan 4th is the first week of the year.
25983        },
25984    });
25985
25986    return deAt;
25987
25988})));
25989
25990
25991/***/ }),
25992/* 28 */
25993/***/ (function(module, exports, __webpack_require__) {
25994
25995//! moment.js locale configuration
25996//! locale : German (Switzerland) [de-ch]
25997//! author : sschueller : https://github.com/sschueller
25998
25999;(function (global, factory) {
26000    true ? factory(__webpack_require__(0)) :
26001   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26002   factory(global.moment)
26003}(this, (function (moment) { 'use strict';
26004
26005    //! moment.js locale configuration
26006
26007    function processRelativeTime(number, withoutSuffix, key, isFuture) {
26008        var format = {
26009            m: ['eine Minute', 'einer Minute'],
26010            h: ['eine Stunde', 'einer Stunde'],
26011            d: ['ein Tag', 'einem Tag'],
26012            dd: [number + ' Tage', number + ' Tagen'],
26013            w: ['eine Woche', 'einer Woche'],
26014            M: ['ein Monat', 'einem Monat'],
26015            MM: [number + ' Monate', number + ' Monaten'],
26016            y: ['ein Jahr', 'einem Jahr'],
26017            yy: [number + ' Jahre', number + ' Jahren'],
26018        };
26019        return withoutSuffix ? format[key][0] : format[key][1];
26020    }
26021
26022    var deCh = moment.defineLocale('de-ch', {
26023        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
26024            '_'
26025        ),
26026        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
26027            '_'
26028        ),
26029        monthsParseExact: true,
26030        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
26031            '_'
26032        ),
26033        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
26034        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
26035        weekdaysParseExact: true,
26036        longDateFormat: {
26037            LT: 'HH:mm',
26038            LTS: 'HH:mm:ss',
26039            L: 'DD.MM.YYYY',
26040            LL: 'D. MMMM YYYY',
26041            LLL: 'D. MMMM YYYY HH:mm',
26042            LLLL: 'dddd, D. MMMM YYYY HH:mm',
26043        },
26044        calendar: {
26045            sameDay: '[heute um] LT [Uhr]',
26046            sameElse: 'L',
26047            nextDay: '[morgen um] LT [Uhr]',
26048            nextWeek: 'dddd [um] LT [Uhr]',
26049            lastDay: '[gestern um] LT [Uhr]',
26050            lastWeek: '[letzten] dddd [um] LT [Uhr]',
26051        },
26052        relativeTime: {
26053            future: 'in %s',
26054            past: 'vor %s',
26055            s: 'ein paar Sekunden',
26056            ss: '%d Sekunden',
26057            m: processRelativeTime,
26058            mm: '%d Minuten',
26059            h: processRelativeTime,
26060            hh: '%d Stunden',
26061            d: processRelativeTime,
26062            dd: processRelativeTime,
26063            w: processRelativeTime,
26064            ww: '%d Wochen',
26065            M: processRelativeTime,
26066            MM: processRelativeTime,
26067            y: processRelativeTime,
26068            yy: processRelativeTime,
26069        },
26070        dayOfMonthOrdinalParse: /\d{1,2}\./,
26071        ordinal: '%d.',
26072        week: {
26073            dow: 1, // Monday is the first day of the week.
26074            doy: 4, // The week that contains Jan 4th is the first week of the year.
26075        },
26076    });
26077
26078    return deCh;
26079
26080})));
26081
26082
26083/***/ }),
26084/* 29 */
26085/***/ (function(module, exports, __webpack_require__) {
26086
26087//! moment.js locale configuration
26088//! locale : Maldivian [dv]
26089//! author : Jawish Hameed : https://github.com/jawish
26090
26091;(function (global, factory) {
26092    true ? factory(__webpack_require__(0)) :
26093   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26094   factory(global.moment)
26095}(this, (function (moment) { 'use strict';
26096
26097    //! moment.js locale configuration
26098
26099    var months = [
26100            'ޖެނުއަރީ',
26101            'ފެބްރުއަރީ',
26102            'މާރިޗު',
26103            'އޭޕްރީލު',
26104            'މޭ',
26105            'ޖޫން',
26106            'ޖުލައި',
26107            'އޯގަސްޓު',
26108            'ސެޕްޓެމްބަރު',
26109            'އޮކްޓޯބަރު',
26110            'ނޮވެމްބަރު',
26111            'ޑިސެމްބަރު',
26112        ],
26113        weekdays = [
26114            'އާދިއްތަ',
26115            'ހޯމަ',
26116            'އަންގާރަ',
26117            'ބުދަ',
26118            'ބުރާސްފަތި',
26119            'ހުކުރު',
26120            'ހޮނިހިރު',
26121        ];
26122
26123    var dv = moment.defineLocale('dv', {
26124        months: months,
26125        monthsShort: months,
26126        weekdays: weekdays,
26127        weekdaysShort: weekdays,
26128        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
26129        longDateFormat: {
26130            LT: 'HH:mm',
26131            LTS: 'HH:mm:ss',
26132            L: 'D/M/YYYY',
26133            LL: 'D MMMM YYYY',
26134            LLL: 'D MMMM YYYY HH:mm',
26135            LLLL: 'dddd D MMMM YYYY HH:mm',
26136        },
26137        meridiemParse: /މކ|މފ/,
26138        isPM: function (input) {
26139            return 'މފ' === input;
26140        },
26141        meridiem: function (hour, minute, isLower) {
26142            if (hour < 12) {
26143                return 'މކ';
26144            } else {
26145                return 'މފ';
26146            }
26147        },
26148        calendar: {
26149            sameDay: '[މިއަދު] LT',
26150            nextDay: '[މާދަމާ] LT',
26151            nextWeek: 'dddd LT',
26152            lastDay: '[އިއްޔެ] LT',
26153            lastWeek: '[ފާއިތުވި] dddd LT',
26154            sameElse: 'L',
26155        },
26156        relativeTime: {
26157            future: 'ތެރޭގައި %s',
26158            past: 'ކުރިން %s',
26159            s: 'ސިކުންތުކޮޅެއް',
26160            ss: 'd% ސިކުންތު',
26161            m: 'މިނިޓެއް',
26162            mm: 'މިނިޓު %d',
26163            h: 'ގަޑިއިރެއް',
26164            hh: 'ގަޑިއިރު %d',
26165            d: 'ދުވަހެއް',
26166            dd: 'ދުވަސް %d',
26167            M: 'މަހެއް',
26168            MM: 'މަސް %d',
26169            y: 'އަހަރެއް',
26170            yy: 'އަހަރު %d',
26171        },
26172        preparse: function (string) {
26173            return string.replace(/،/g, ',');
26174        },
26175        postformat: function (string) {
26176            return string.replace(/,/g, '،');
26177        },
26178        week: {
26179            dow: 7, // Sunday is the first day of the week.
26180            doy: 12, // The week that contains Jan 12th is the first week of the year.
26181        },
26182    });
26183
26184    return dv;
26185
26186})));
26187
26188
26189/***/ }),
26190/* 30 */
26191/***/ (function(module, exports, __webpack_require__) {
26192
26193//! moment.js locale configuration
26194//! locale : Greek [el]
26195//! author : Aggelos Karalias : https://github.com/mehiel
26196
26197;(function (global, factory) {
26198    true ? factory(__webpack_require__(0)) :
26199   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26200   factory(global.moment)
26201}(this, (function (moment) { 'use strict';
26202
26203    //! moment.js locale configuration
26204
26205    function isFunction(input) {
26206        return (
26207            (typeof Function !== 'undefined' && input instanceof Function) ||
26208            Object.prototype.toString.call(input) === '[object Function]'
26209        );
26210    }
26211
26212    var el = moment.defineLocale('el', {
26213        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
26214            '_'
26215        ),
26216        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
26217            '_'
26218        ),
26219        months: function (momentToFormat, format) {
26220            if (!momentToFormat) {
26221                return this._monthsNominativeEl;
26222            } else if (
26223                typeof format === 'string' &&
26224                /D/.test(format.substring(0, format.indexOf('MMMM')))
26225            ) {
26226                // if there is a day number before 'MMMM'
26227                return this._monthsGenitiveEl[momentToFormat.month()];
26228            } else {
26229                return this._monthsNominativeEl[momentToFormat.month()];
26230            }
26231        },
26232        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
26233        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
26234            '_'
26235        ),
26236        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
26237        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
26238        meridiem: function (hours, minutes, isLower) {
26239            if (hours > 11) {
26240                return isLower ? 'μμ' : 'ΜΜ';
26241            } else {
26242                return isLower ? 'πμ' : 'ΠΜ';
26243            }
26244        },
26245        isPM: function (input) {
26246            return (input + '').toLowerCase()[0] === 'μ';
26247        },
26248        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
26249        longDateFormat: {
26250            LT: 'h:mm A',
26251            LTS: 'h:mm:ss A',
26252            L: 'DD/MM/YYYY',
26253            LL: 'D MMMM YYYY',
26254            LLL: 'D MMMM YYYY h:mm A',
26255            LLLL: 'dddd, D MMMM YYYY h:mm A',
26256        },
26257        calendarEl: {
26258            sameDay: '[Σήμερα {}] LT',
26259            nextDay: '[Αύριο {}] LT',
26260            nextWeek: 'dddd [{}] LT',
26261            lastDay: '[Χθες {}] LT',
26262            lastWeek: function () {
26263                switch (this.day()) {
26264                    case 6:
26265                        return '[το προηγούμενο] dddd [{}] LT';
26266                    default:
26267                        return '[την προηγούμενη] dddd [{}] LT';
26268                }
26269            },
26270            sameElse: 'L',
26271        },
26272        calendar: function (key, mom) {
26273            var output = this._calendarEl[key],
26274                hours = mom && mom.hours();
26275            if (isFunction(output)) {
26276                output = output.apply(mom);
26277            }
26278            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
26279        },
26280        relativeTime: {
26281            future: 'σε %s',
26282            past: '%s πριν',
26283            s: 'λίγα δευτερόλεπτα',
26284            ss: '%d δευτερόλεπτα',
26285            m: 'ένα λεπτό',
26286            mm: '%d λεπτά',
26287            h: 'μία ώρα',
26288            hh: '%d ώρες',
26289            d: 'μία μέρα',
26290            dd: '%d μέρες',
26291            M: 'ένας μήνας',
26292            MM: '%d μήνες',
26293            y: 'ένας χρόνος',
26294            yy: '%d χρόνια',
26295        },
26296        dayOfMonthOrdinalParse: /\d{1,2}η/,
26297        ordinal: '%dη',
26298        week: {
26299            dow: 1, // Monday is the first day of the week.
26300            doy: 4, // The week that contains Jan 4st is the first week of the year.
26301        },
26302    });
26303
26304    return el;
26305
26306})));
26307
26308
26309/***/ }),
26310/* 31 */
26311/***/ (function(module, exports, __webpack_require__) {
26312
26313//! moment.js locale configuration
26314//! locale : English (Australia) [en-au]
26315//! author : Jared Morse : https://github.com/jarcoal
26316
26317;(function (global, factory) {
26318    true ? factory(__webpack_require__(0)) :
26319   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26320   factory(global.moment)
26321}(this, (function (moment) { 'use strict';
26322
26323    //! moment.js locale configuration
26324
26325    var enAu = moment.defineLocale('en-au', {
26326        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26327            '_'
26328        ),
26329        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26330        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26331            '_'
26332        ),
26333        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26334        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26335        longDateFormat: {
26336            LT: 'h:mm A',
26337            LTS: 'h:mm:ss A',
26338            L: 'DD/MM/YYYY',
26339            LL: 'D MMMM YYYY',
26340            LLL: 'D MMMM YYYY h:mm A',
26341            LLLL: 'dddd, D MMMM YYYY h:mm A',
26342        },
26343        calendar: {
26344            sameDay: '[Today at] LT',
26345            nextDay: '[Tomorrow at] LT',
26346            nextWeek: 'dddd [at] LT',
26347            lastDay: '[Yesterday at] LT',
26348            lastWeek: '[Last] dddd [at] LT',
26349            sameElse: 'L',
26350        },
26351        relativeTime: {
26352            future: 'in %s',
26353            past: '%s ago',
26354            s: 'a few seconds',
26355            ss: '%d seconds',
26356            m: 'a minute',
26357            mm: '%d minutes',
26358            h: 'an hour',
26359            hh: '%d hours',
26360            d: 'a day',
26361            dd: '%d days',
26362            M: 'a month',
26363            MM: '%d months',
26364            y: 'a year',
26365            yy: '%d years',
26366        },
26367        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26368        ordinal: function (number) {
26369            var b = number % 10,
26370                output =
26371                    ~~((number % 100) / 10) === 1
26372                        ? 'th'
26373                        : b === 1
26374                        ? 'st'
26375                        : b === 2
26376                        ? 'nd'
26377                        : b === 3
26378                        ? 'rd'
26379                        : 'th';
26380            return number + output;
26381        },
26382        week: {
26383            dow: 0, // Sunday is the first day of the week.
26384            doy: 4, // The week that contains Jan 4th is the first week of the year.
26385        },
26386    });
26387
26388    return enAu;
26389
26390})));
26391
26392
26393/***/ }),
26394/* 32 */
26395/***/ (function(module, exports, __webpack_require__) {
26396
26397//! moment.js locale configuration
26398//! locale : English (Canada) [en-ca]
26399//! author : Jonathan Abourbih : https://github.com/jonbca
26400
26401;(function (global, factory) {
26402    true ? factory(__webpack_require__(0)) :
26403   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26404   factory(global.moment)
26405}(this, (function (moment) { 'use strict';
26406
26407    //! moment.js locale configuration
26408
26409    var enCa = moment.defineLocale('en-ca', {
26410        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26411            '_'
26412        ),
26413        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26414        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26415            '_'
26416        ),
26417        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26418        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26419        longDateFormat: {
26420            LT: 'h:mm A',
26421            LTS: 'h:mm:ss A',
26422            L: 'YYYY-MM-DD',
26423            LL: 'MMMM D, YYYY',
26424            LLL: 'MMMM D, YYYY h:mm A',
26425            LLLL: 'dddd, MMMM D, YYYY h:mm A',
26426        },
26427        calendar: {
26428            sameDay: '[Today at] LT',
26429            nextDay: '[Tomorrow at] LT',
26430            nextWeek: 'dddd [at] LT',
26431            lastDay: '[Yesterday at] LT',
26432            lastWeek: '[Last] dddd [at] LT',
26433            sameElse: 'L',
26434        },
26435        relativeTime: {
26436            future: 'in %s',
26437            past: '%s ago',
26438            s: 'a few seconds',
26439            ss: '%d seconds',
26440            m: 'a minute',
26441            mm: '%d minutes',
26442            h: 'an hour',
26443            hh: '%d hours',
26444            d: 'a day',
26445            dd: '%d days',
26446            M: 'a month',
26447            MM: '%d months',
26448            y: 'a year',
26449            yy: '%d years',
26450        },
26451        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26452        ordinal: function (number) {
26453            var b = number % 10,
26454                output =
26455                    ~~((number % 100) / 10) === 1
26456                        ? 'th'
26457                        : b === 1
26458                        ? 'st'
26459                        : b === 2
26460                        ? 'nd'
26461                        : b === 3
26462                        ? 'rd'
26463                        : 'th';
26464            return number + output;
26465        },
26466    });
26467
26468    return enCa;
26469
26470})));
26471
26472
26473/***/ }),
26474/* 33 */
26475/***/ (function(module, exports, __webpack_require__) {
26476
26477//! moment.js locale configuration
26478//! locale : English (United Kingdom) [en-gb]
26479//! author : Chris Gedrim : https://github.com/chrisgedrim
26480
26481;(function (global, factory) {
26482    true ? factory(__webpack_require__(0)) :
26483   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26484   factory(global.moment)
26485}(this, (function (moment) { 'use strict';
26486
26487    //! moment.js locale configuration
26488
26489    var enGb = moment.defineLocale('en-gb', {
26490        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26491            '_'
26492        ),
26493        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26494        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26495            '_'
26496        ),
26497        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26498        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26499        longDateFormat: {
26500            LT: 'HH:mm',
26501            LTS: 'HH:mm:ss',
26502            L: 'DD/MM/YYYY',
26503            LL: 'D MMMM YYYY',
26504            LLL: 'D MMMM YYYY HH:mm',
26505            LLLL: 'dddd, D MMMM YYYY HH:mm',
26506        },
26507        calendar: {
26508            sameDay: '[Today at] LT',
26509            nextDay: '[Tomorrow at] LT',
26510            nextWeek: 'dddd [at] LT',
26511            lastDay: '[Yesterday at] LT',
26512            lastWeek: '[Last] dddd [at] LT',
26513            sameElse: 'L',
26514        },
26515        relativeTime: {
26516            future: 'in %s',
26517            past: '%s ago',
26518            s: 'a few seconds',
26519            ss: '%d seconds',
26520            m: 'a minute',
26521            mm: '%d minutes',
26522            h: 'an hour',
26523            hh: '%d hours',
26524            d: 'a day',
26525            dd: '%d days',
26526            M: 'a month',
26527            MM: '%d months',
26528            y: 'a year',
26529            yy: '%d years',
26530        },
26531        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26532        ordinal: function (number) {
26533            var b = number % 10,
26534                output =
26535                    ~~((number % 100) / 10) === 1
26536                        ? 'th'
26537                        : b === 1
26538                        ? 'st'
26539                        : b === 2
26540                        ? 'nd'
26541                        : b === 3
26542                        ? 'rd'
26543                        : 'th';
26544            return number + output;
26545        },
26546        week: {
26547            dow: 1, // Monday is the first day of the week.
26548            doy: 4, // The week that contains Jan 4th is the first week of the year.
26549        },
26550    });
26551
26552    return enGb;
26553
26554})));
26555
26556
26557/***/ }),
26558/* 34 */
26559/***/ (function(module, exports, __webpack_require__) {
26560
26561//! moment.js locale configuration
26562//! locale : English (Ireland) [en-ie]
26563//! author : Chris Cartlidge : https://github.com/chriscartlidge
26564
26565;(function (global, factory) {
26566    true ? factory(__webpack_require__(0)) :
26567   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26568   factory(global.moment)
26569}(this, (function (moment) { 'use strict';
26570
26571    //! moment.js locale configuration
26572
26573    var enIe = moment.defineLocale('en-ie', {
26574        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26575            '_'
26576        ),
26577        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26578        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26579            '_'
26580        ),
26581        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26582        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26583        longDateFormat: {
26584            LT: 'HH:mm',
26585            LTS: 'HH:mm:ss',
26586            L: 'DD/MM/YYYY',
26587            LL: 'D MMMM YYYY',
26588            LLL: 'D MMMM YYYY HH:mm',
26589            LLLL: 'dddd D MMMM YYYY HH:mm',
26590        },
26591        calendar: {
26592            sameDay: '[Today at] LT',
26593            nextDay: '[Tomorrow at] LT',
26594            nextWeek: 'dddd [at] LT',
26595            lastDay: '[Yesterday at] LT',
26596            lastWeek: '[Last] dddd [at] LT',
26597            sameElse: 'L',
26598        },
26599        relativeTime: {
26600            future: 'in %s',
26601            past: '%s ago',
26602            s: 'a few seconds',
26603            ss: '%d seconds',
26604            m: 'a minute',
26605            mm: '%d minutes',
26606            h: 'an hour',
26607            hh: '%d hours',
26608            d: 'a day',
26609            dd: '%d days',
26610            M: 'a month',
26611            MM: '%d months',
26612            y: 'a year',
26613            yy: '%d years',
26614        },
26615        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26616        ordinal: function (number) {
26617            var b = number % 10,
26618                output =
26619                    ~~((number % 100) / 10) === 1
26620                        ? 'th'
26621                        : b === 1
26622                        ? 'st'
26623                        : b === 2
26624                        ? 'nd'
26625                        : b === 3
26626                        ? 'rd'
26627                        : 'th';
26628            return number + output;
26629        },
26630        week: {
26631            dow: 1, // Monday is the first day of the week.
26632            doy: 4, // The week that contains Jan 4th is the first week of the year.
26633        },
26634    });
26635
26636    return enIe;
26637
26638})));
26639
26640
26641/***/ }),
26642/* 35 */
26643/***/ (function(module, exports, __webpack_require__) {
26644
26645//! moment.js locale configuration
26646//! locale : English (Israel) [en-il]
26647//! author : Chris Gedrim : https://github.com/chrisgedrim
26648
26649;(function (global, factory) {
26650    true ? factory(__webpack_require__(0)) :
26651   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26652   factory(global.moment)
26653}(this, (function (moment) { 'use strict';
26654
26655    //! moment.js locale configuration
26656
26657    var enIl = moment.defineLocale('en-il', {
26658        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26659            '_'
26660        ),
26661        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26662        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26663            '_'
26664        ),
26665        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26666        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26667        longDateFormat: {
26668            LT: 'HH:mm',
26669            LTS: 'HH:mm:ss',
26670            L: 'DD/MM/YYYY',
26671            LL: 'D MMMM YYYY',
26672            LLL: 'D MMMM YYYY HH:mm',
26673            LLLL: 'dddd, D MMMM YYYY HH:mm',
26674        },
26675        calendar: {
26676            sameDay: '[Today at] LT',
26677            nextDay: '[Tomorrow at] LT',
26678            nextWeek: 'dddd [at] LT',
26679            lastDay: '[Yesterday at] LT',
26680            lastWeek: '[Last] dddd [at] LT',
26681            sameElse: 'L',
26682        },
26683        relativeTime: {
26684            future: 'in %s',
26685            past: '%s ago',
26686            s: 'a few seconds',
26687            ss: '%d seconds',
26688            m: 'a minute',
26689            mm: '%d minutes',
26690            h: 'an hour',
26691            hh: '%d hours',
26692            d: 'a day',
26693            dd: '%d days',
26694            M: 'a month',
26695            MM: '%d months',
26696            y: 'a year',
26697            yy: '%d years',
26698        },
26699        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26700        ordinal: function (number) {
26701            var b = number % 10,
26702                output =
26703                    ~~((number % 100) / 10) === 1
26704                        ? 'th'
26705                        : b === 1
26706                        ? 'st'
26707                        : b === 2
26708                        ? 'nd'
26709                        : b === 3
26710                        ? 'rd'
26711                        : 'th';
26712            return number + output;
26713        },
26714    });
26715
26716    return enIl;
26717
26718})));
26719
26720
26721/***/ }),
26722/* 36 */
26723/***/ (function(module, exports, __webpack_require__) {
26724
26725//! moment.js locale configuration
26726//! locale : English (India) [en-in]
26727//! author : Jatin Agrawal : https://github.com/jatinag22
26728
26729;(function (global, factory) {
26730    true ? factory(__webpack_require__(0)) :
26731   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26732   factory(global.moment)
26733}(this, (function (moment) { 'use strict';
26734
26735    //! moment.js locale configuration
26736
26737    var enIn = moment.defineLocale('en-in', {
26738        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26739            '_'
26740        ),
26741        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26742        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26743            '_'
26744        ),
26745        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26746        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26747        longDateFormat: {
26748            LT: 'h:mm A',
26749            LTS: 'h:mm:ss A',
26750            L: 'DD/MM/YYYY',
26751            LL: 'D MMMM YYYY',
26752            LLL: 'D MMMM YYYY h:mm A',
26753            LLLL: 'dddd, D MMMM YYYY h:mm A',
26754        },
26755        calendar: {
26756            sameDay: '[Today at] LT',
26757            nextDay: '[Tomorrow at] LT',
26758            nextWeek: 'dddd [at] LT',
26759            lastDay: '[Yesterday at] LT',
26760            lastWeek: '[Last] dddd [at] LT',
26761            sameElse: 'L',
26762        },
26763        relativeTime: {
26764            future: 'in %s',
26765            past: '%s ago',
26766            s: 'a few seconds',
26767            ss: '%d seconds',
26768            m: 'a minute',
26769            mm: '%d minutes',
26770            h: 'an hour',
26771            hh: '%d hours',
26772            d: 'a day',
26773            dd: '%d days',
26774            M: 'a month',
26775            MM: '%d months',
26776            y: 'a year',
26777            yy: '%d years',
26778        },
26779        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26780        ordinal: function (number) {
26781            var b = number % 10,
26782                output =
26783                    ~~((number % 100) / 10) === 1
26784                        ? 'th'
26785                        : b === 1
26786                        ? 'st'
26787                        : b === 2
26788                        ? 'nd'
26789                        : b === 3
26790                        ? 'rd'
26791                        : 'th';
26792            return number + output;
26793        },
26794        week: {
26795            dow: 0, // Sunday is the first day of the week.
26796            doy: 6, // The week that contains Jan 1st is the first week of the year.
26797        },
26798    });
26799
26800    return enIn;
26801
26802})));
26803
26804
26805/***/ }),
26806/* 37 */
26807/***/ (function(module, exports, __webpack_require__) {
26808
26809//! moment.js locale configuration
26810//! locale : English (New Zealand) [en-nz]
26811//! author : Luke McGregor : https://github.com/lukemcgregor
26812
26813;(function (global, factory) {
26814    true ? factory(__webpack_require__(0)) :
26815   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26816   factory(global.moment)
26817}(this, (function (moment) { 'use strict';
26818
26819    //! moment.js locale configuration
26820
26821    var enNz = moment.defineLocale('en-nz', {
26822        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26823            '_'
26824        ),
26825        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26826        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26827            '_'
26828        ),
26829        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26830        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26831        longDateFormat: {
26832            LT: 'h:mm A',
26833            LTS: 'h:mm:ss A',
26834            L: 'DD/MM/YYYY',
26835            LL: 'D MMMM YYYY',
26836            LLL: 'D MMMM YYYY h:mm A',
26837            LLLL: 'dddd, D MMMM YYYY h:mm A',
26838        },
26839        calendar: {
26840            sameDay: '[Today at] LT',
26841            nextDay: '[Tomorrow at] LT',
26842            nextWeek: 'dddd [at] LT',
26843            lastDay: '[Yesterday at] LT',
26844            lastWeek: '[Last] dddd [at] LT',
26845            sameElse: 'L',
26846        },
26847        relativeTime: {
26848            future: 'in %s',
26849            past: '%s ago',
26850            s: 'a few seconds',
26851            ss: '%d seconds',
26852            m: 'a minute',
26853            mm: '%d minutes',
26854            h: 'an hour',
26855            hh: '%d hours',
26856            d: 'a day',
26857            dd: '%d days',
26858            M: 'a month',
26859            MM: '%d months',
26860            y: 'a year',
26861            yy: '%d years',
26862        },
26863        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26864        ordinal: function (number) {
26865            var b = number % 10,
26866                output =
26867                    ~~((number % 100) / 10) === 1
26868                        ? 'th'
26869                        : b === 1
26870                        ? 'st'
26871                        : b === 2
26872                        ? 'nd'
26873                        : b === 3
26874                        ? 'rd'
26875                        : 'th';
26876            return number + output;
26877        },
26878        week: {
26879            dow: 1, // Monday is the first day of the week.
26880            doy: 4, // The week that contains Jan 4th is the first week of the year.
26881        },
26882    });
26883
26884    return enNz;
26885
26886})));
26887
26888
26889/***/ }),
26890/* 38 */
26891/***/ (function(module, exports, __webpack_require__) {
26892
26893//! moment.js locale configuration
26894//! locale : English (Singapore) [en-sg]
26895//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
26896
26897;(function (global, factory) {
26898    true ? factory(__webpack_require__(0)) :
26899   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26900   factory(global.moment)
26901}(this, (function (moment) { 'use strict';
26902
26903    //! moment.js locale configuration
26904
26905    var enSg = moment.defineLocale('en-sg', {
26906        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26907            '_'
26908        ),
26909        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26910        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26911            '_'
26912        ),
26913        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26914        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26915        longDateFormat: {
26916            LT: 'HH:mm',
26917            LTS: 'HH:mm:ss',
26918            L: 'DD/MM/YYYY',
26919            LL: 'D MMMM YYYY',
26920            LLL: 'D MMMM YYYY HH:mm',
26921            LLLL: 'dddd, D MMMM YYYY HH:mm',
26922        },
26923        calendar: {
26924            sameDay: '[Today at] LT',
26925            nextDay: '[Tomorrow at] LT',
26926            nextWeek: 'dddd [at] LT',
26927            lastDay: '[Yesterday at] LT',
26928            lastWeek: '[Last] dddd [at] LT',
26929            sameElse: 'L',
26930        },
26931        relativeTime: {
26932            future: 'in %s',
26933            past: '%s ago',
26934            s: 'a few seconds',
26935            ss: '%d seconds',
26936            m: 'a minute',
26937            mm: '%d minutes',
26938            h: 'an hour',
26939            hh: '%d hours',
26940            d: 'a day',
26941            dd: '%d days',
26942            M: 'a month',
26943            MM: '%d months',
26944            y: 'a year',
26945            yy: '%d years',
26946        },
26947        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26948        ordinal: function (number) {
26949            var b = number % 10,
26950                output =
26951                    ~~((number % 100) / 10) === 1
26952                        ? 'th'
26953                        : b === 1
26954                        ? 'st'
26955                        : b === 2
26956                        ? 'nd'
26957                        : b === 3
26958                        ? 'rd'
26959                        : 'th';
26960            return number + output;
26961        },
26962        week: {
26963            dow: 1, // Monday is the first day of the week.
26964            doy: 4, // The week that contains Jan 4th is the first week of the year.
26965        },
26966    });
26967
26968    return enSg;
26969
26970})));
26971
26972
26973/***/ }),
26974/* 39 */
26975/***/ (function(module, exports, __webpack_require__) {
26976
26977//! moment.js locale configuration
26978//! locale : Esperanto [eo]
26979//! author : Colin Dean : https://github.com/colindean
26980//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
26981//! comment : miestasmia corrected the translation by colindean
26982//! comment : Vivakvo corrected the translation by colindean and miestasmia
26983
26984;(function (global, factory) {
26985    true ? factory(__webpack_require__(0)) :
26986   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26987   factory(global.moment)
26988}(this, (function (moment) { 'use strict';
26989
26990    //! moment.js locale configuration
26991
26992    var eo = moment.defineLocale('eo', {
26993        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split(
26994            '_'
26995        ),
26996        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅ­g_sept_okt_nov_dec'.split('_'),
26997        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
26998        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
26999        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
27000        longDateFormat: {
27001            LT: 'HH:mm',
27002            LTS: 'HH:mm:ss',
27003            L: 'YYYY-MM-DD',
27004            LL: '[la] D[-an de] MMMM, YYYY',
27005            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
27006            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
27007            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
27008        },
27009        meridiemParse: /[ap]\.t\.m/i,
27010        isPM: function (input) {
27011            return input.charAt(0).toLowerCase() === 'p';
27012        },
27013        meridiem: function (hours, minutes, isLower) {
27014            if (hours > 11) {
27015                return isLower ? 'p.t.m.' : 'P.T.M.';
27016            } else {
27017                return isLower ? 'a.t.m.' : 'A.T.M.';
27018            }
27019        },
27020        calendar: {
27021            sameDay: '[HodiaÅ­ je] LT',
27022            nextDay: '[MorgaÅ­ je] LT',
27023            nextWeek: 'dddd[n je] LT',
27024            lastDay: '[HieraÅ­ je] LT',
27025            lastWeek: '[pasintan] dddd[n je] LT',
27026            sameElse: 'L',
27027        },
27028        relativeTime: {
27029            future: 'post %s',
27030            past: 'antaÅ­ %s',
27031            s: 'kelkaj sekundoj',
27032            ss: '%d sekundoj',
27033            m: 'unu minuto',
27034            mm: '%d minutoj',
27035            h: 'unu horo',
27036            hh: '%d horoj',
27037            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
27038            dd: '%d tagoj',
27039            M: 'unu monato',
27040            MM: '%d monatoj',
27041            y: 'unu jaro',
27042            yy: '%d jaroj',
27043        },
27044        dayOfMonthOrdinalParse: /\d{1,2}a/,
27045        ordinal: '%da',
27046        week: {
27047            dow: 1, // Monday is the first day of the week.
27048            doy: 7, // The week that contains Jan 7th is the first week of the year.
27049        },
27050    });
27051
27052    return eo;
27053
27054})));
27055
27056
27057/***/ }),
27058/* 40 */
27059/***/ (function(module, exports, __webpack_require__) {
27060
27061//! moment.js locale configuration
27062//! locale : Spanish [es]
27063//! author : Julio Napurí : https://github.com/julionc
27064
27065;(function (global, factory) {
27066    true ? factory(__webpack_require__(0)) :
27067   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27068   factory(global.moment)
27069}(this, (function (moment) { 'use strict';
27070
27071    //! moment.js locale configuration
27072
27073    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27074          
vendor: 16,304 bytes, lines 27074-27548
27074  '_'
27075        ),
27076        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27077        monthsParse = [
27078            /^ene/i,
27079            /^feb/i,
27080            /^mar/i,
27081            /^abr/i,
27082            /^may/i,
27083            /^jun/i,
27084            /^jul/i,
27085            /^ago/i,
27086            /^sep/i,
27087            /^oct/i,
27088            /^nov/i,
27089            /^dic/i,
27090        ],
27091        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
27092
27093    var es = moment.defineLocale('es', {
27094        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27095            '_'
27096        ),
27097        monthsShort: function (m, format) {
27098            if (!m) {
27099                return monthsShortDot;
27100            } else if (/-MMM-/.test(format)) {
27101                return monthsShort[m.month()];
27102            } else {
27103                return monthsShortDot[m.month()];
27104            }
27105        },
27106        monthsRegex: monthsRegex,
27107        monthsShortRegex: monthsRegex,
27108        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27109        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27110        monthsParse: monthsParse,
27111        longMonthsParse: monthsParse,
27112        shortMonthsParse: monthsParse,
27113        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27114        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27115        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27116        weekdaysParseExact: true,
27117        longDateFormat: {
27118            LT: 'H:mm',
27119            LTS: 'H:mm:ss',
27120            L: 'DD/MM/YYYY',
27121            LL: 'D [de] MMMM [de] YYYY',
27122            LLL: 'D [de] MMMM [de] YYYY H:mm',
27123            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
27124        },
27125        calendar: {
27126            sameDay: function () {
27127                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27128            },
27129            nextDay: function () {
27130                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27131            },
27132            nextWeek: function () {
27133                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27134            },
27135            lastDay: function () {
27136                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27137            },
27138            lastWeek: function () {
27139                return (
27140                    '[el] dddd [pasado a la' +
27141                    (this.hours() !== 1 ? 's' : '') +
27142                    '] LT'
27143                );
27144            },
27145            sameElse: 'L',
27146        },
27147        relativeTime: {
27148            future: 'en %s',
27149            past: 'hace %s',
27150            s: 'unos segundos',
27151            ss: '%d segundos',
27152            m: 'un minuto',
27153            mm: '%d minutos',
27154            h: 'una hora',
27155            hh: '%d horas',
27156            d: 'un día',
27157            dd: '%d días',
27158            w: 'una semana',
27159            ww: '%d semanas',
27160            M: 'un mes',
27161            MM: '%d meses',
27162            y: 'un año',
27163            yy: '%d años',
27164        },
27165        dayOfMonthOrdinalParse: /\d{1,2}º/,
27166        ordinal: '%dº',
27167        week: {
27168            dow: 1, // Monday is the first day of the week.
27169            doy: 4, // The week that contains Jan 4th is the first week of the year.
27170        },
27171        invalidDate: 'Fecha inválida',
27172    });
27173
27174    return es;
27175
27176})));
27177
27178
27179/***/ }),
27180/* 41 */
27181/***/ (function(module, exports, __webpack_require__) {
27182
27183//! moment.js locale configuration
27184//! locale : Spanish (Dominican Republic) [es-do]
27185
27186;(function (global, factory) {
27187    true ? factory(__webpack_require__(0)) :
27188   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27189   factory(global.moment)
27190}(this, (function (moment) { 'use strict';
27191
27192    //! moment.js locale configuration
27193
27194    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27195            '_'
27196        ),
27197        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27198        monthsParse = [
27199            /^ene/i,
27200            /^feb/i,
27201            /^mar/i,
27202            /^abr/i,
27203            /^may/i,
27204            /^jun/i,
27205            /^jul/i,
27206            /^ago/i,
27207            /^sep/i,
27208            /^oct/i,
27209            /^nov/i,
27210            /^dic/i,
27211        ],
27212        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
27213
27214    var esDo = moment.defineLocale('es-do', {
27215        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27216            '_'
27217        ),
27218        monthsShort: function (m, format) {
27219            if (!m) {
27220                return monthsShortDot;
27221            } else if (/-MMM-/.test(format)) {
27222                return monthsShort[m.month()];
27223            } else {
27224                return monthsShortDot[m.month()];
27225            }
27226        },
27227        monthsRegex: monthsRegex,
27228        monthsShortRegex: monthsRegex,
27229        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27230        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27231        monthsParse: monthsParse,
27232        longMonthsParse: monthsParse,
27233        shortMonthsParse: monthsParse,
27234        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27235        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27236        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27237        weekdaysParseExact: true,
27238        longDateFormat: {
27239            LT: 'h:mm A',
27240            LTS: 'h:mm:ss A',
27241            L: 'DD/MM/YYYY',
27242            LL: 'D [de] MMMM [de] YYYY',
27243            LLL: 'D [de] MMMM [de] YYYY h:mm A',
27244            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
27245        },
27246        calendar: {
27247            sameDay: function () {
27248                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27249            },
27250            nextDay: function () {
27251                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27252            },
27253            nextWeek: function () {
27254                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27255            },
27256            lastDay: function () {
27257                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27258            },
27259            lastWeek: function () {
27260                return (
27261                    '[el] dddd [pasado a la' +
27262                    (this.hours() !== 1 ? 's' : '') +
27263                    '] LT'
27264                );
27265            },
27266            sameElse: 'L',
27267        },
27268        relativeTime: {
27269            future: 'en %s',
27270            past: 'hace %s',
27271            s: 'unos segundos',
27272            ss: '%d segundos',
27273            m: 'un minuto',
27274            mm: '%d minutos',
27275            h: 'una hora',
27276            hh: '%d horas',
27277            d: 'un día',
27278            dd: '%d días',
27279            w: 'una semana',
27280            ww: '%d semanas',
27281            M: 'un mes',
27282            MM: '%d meses',
27283            y: 'un año',
27284            yy: '%d años',
27285        },
27286        dayOfMonthOrdinalParse: /\d{1,2}º/,
27287        ordinal: '%dº',
27288        week: {
27289            dow: 1, // Monday is the first day of the week.
27290            doy: 4, // The week that contains Jan 4th is the first week of the year.
27291        },
27292    });
27293
27294    return esDo;
27295
27296})));
27297
27298
27299/***/ }),
27300/* 42 */
27301/***/ (function(module, exports, __webpack_require__) {
27302
27303//! moment.js locale configuration
27304//! locale : Spanish (Mexico) [es-mx]
27305//! author : JC Franco : https://github.com/jcfranco
27306
27307;(function (global, factory) {
27308    true ? factory(__webpack_require__(0)) :
27309   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27310   factory(global.moment)
27311}(this, (function (moment) { 'use strict';
27312
27313    //! moment.js locale configuration
27314
27315    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27316            '_'
27317        ),
27318        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27319        monthsParse = [
27320            /^ene/i,
27321            /^feb/i,
27322            /^mar/i,
27323            /^abr/i,
27324            /^may/i,
27325            /^jun/i,
27326            /^jul/i,
27327            /^ago/i,
27328            /^sep/i,
27329            /^oct/i,
27330            /^nov/i,
27331            /^dic/i,
27332        ],
27333        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
27334
27335    var esMx = moment.defineLocale('es-mx', {
27336        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27337            '_'
27338        ),
27339        monthsShort: function (m, format) {
27340            if (!m) {
27341                return monthsShortDot;
27342            } else if (/-MMM-/.test(format)) {
27343                return monthsShort[m.month()];
27344            } else {
27345                return monthsShortDot[m.month()];
27346            }
27347        },
27348        monthsRegex: monthsRegex,
27349        monthsShortRegex: monthsRegex,
27350        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27351        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27352        monthsParse: monthsParse,
27353        longMonthsParse: monthsParse,
27354        shortMonthsParse: monthsParse,
27355        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27356        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27357        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27358        weekdaysParseExact: true,
27359        longDateFormat: {
27360            LT: 'H:mm',
27361            LTS: 'H:mm:ss',
27362            L: 'DD/MM/YYYY',
27363            LL: 'D [de] MMMM [de] YYYY',
27364            LLL: 'D [de] MMMM [de] YYYY H:mm',
27365            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
27366        },
27367        calendar: {
27368            sameDay: function () {
27369                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27370            },
27371            nextDay: function () {
27372                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27373            },
27374            nextWeek: function () {
27375                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27376            },
27377            lastDay: function () {
27378                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27379            },
27380            lastWeek: function () {
27381                return (
27382                    '[el] dddd [pasado a la' +
27383                    (this.hours() !== 1 ? 's' : '') +
27384                    '] LT'
27385                );
27386            },
27387            sameElse: 'L',
27388        },
27389        relativeTime: {
27390            future: 'en %s',
27391            past: 'hace %s',
27392            s: 'unos segundos',
27393            ss: '%d segundos',
27394            m: 'un minuto',
27395            mm: '%d minutos',
27396            h: 'una hora',
27397            hh: '%d horas',
27398            d: 'un día',
27399            dd: '%d días',
27400            w: 'una semana',
27401            ww: '%d semanas',
27402            M: 'un mes',
27403            MM: '%d meses',
27404            y: 'un año',
27405            yy: '%d años',
27406        },
27407        dayOfMonthOrdinalParse: /\d{1,2}º/,
27408        ordinal: '%dº',
27409        week: {
27410            dow: 0, // Sunday is the first day of the week.
27411            doy: 4, // The week that contains Jan 4th is the first week of the year.
27412        },
27413        invalidDate: 'Fecha inválida',
27414    });
27415
27416    return esMx;
27417
27418})));
27419
27420
27421/***/ }),
27422/* 43 */
27423/***/ (function(module, exports, __webpack_require__) {
27424
27425//! moment.js locale configuration
27426//! locale : Spanish (United States) [es-us]
27427//! author : bustta : https://github.com/bustta
27428//! author : chrisrodz : https://github.com/chrisrodz
27429
27430;(function (global, factory) {
27431    true ? factory(__webpack_require__(0)) :
27432   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27433   factory(global.moment)
27434}(this, (function (moment) { 'use strict';
27435
27436    //! moment.js locale configuration
27437
27438    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27439            '_'
27440        ),
27441        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27442        monthsParse = [
27443            /^ene/i,
27444            /^feb/i,
27445            /^mar/i,
27446            /^abr/i,
27447            /^may/i,
27448            /^jun/i,
27449            /^jul/i,
27450            /^ago/i,
27451            /^sep/i,
27452            /^oct/i,
27453            /^nov/i,
27454            /^dic/i,
27455        ],
27456        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
27457
27458    var esUs = moment.defineLocale('es-us', {
27459        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27460            '_'
27461        ),
27462        monthsShort: function (m, format) {
27463            if (!m) {
27464                return monthsShortDot;
27465            } else if (/-MMM-/.test(format)) {
27466                return monthsShort[m.month()];
27467            } else {
27468                return monthsShortDot[m.month()];
27469            }
27470        },
27471        monthsRegex: monthsRegex,
27472        monthsShortRegex: monthsRegex,
27473        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27474        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27475        monthsParse: monthsParse,
27476        longMonthsParse: monthsParse,
27477        shortMonthsParse: monthsParse,
27478        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27479        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27480        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27481        weekdaysParseExact: true,
27482        longDateFormat: {
27483            LT: 'h:mm A',
27484            LTS: 'h:mm:ss A',
27485            L: 'MM/DD/YYYY',
27486            LL: 'D [de] MMMM [de] YYYY',
27487            LLL: 'D [de] MMMM [de] YYYY h:mm A',
27488            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
27489        },
27490        calendar: {
27491            sameDay: function () {
27492                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27493            },
27494            nextDay: function () {
27495                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27496            },
27497            nextWeek: function () {
27498                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27499            },
27500            lastDay: function () {
27501                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27502            },
27503            lastWeek: function () {
27504                return (
27505                    '[el] dddd [pasado a la' +
27506                    (this.hours() !== 1 ? 's' : '') +
27507                    '] LT'
27508                );
27509            },
27510            sameElse: 'L',
27511        },
27512        relativeTime: {
27513            future: 'en %s',
27514            past: 'hace %s',
27515            s: 'unos segundos',
27516            ss: '%d segundos',
27517            m: 'un minuto',
27518            mm: '%d minutos',
27519            h: 'una hora',
27520            hh: '%d horas',
27521            d: 'un día',
27522            dd: '%d días',
27523            w: 'una semana',
27524            ww: '%d semanas',
27525            M: 'un mes',
27526            MM: '%d meses',
27527            y: 'un año',
27528            yy: '%d años',
27529        },
27530        dayOfMonthOrdinalParse: /\d{1,2}º/,
27531        ordinal: '%dº',
27532        week: {
27533            dow: 0, // Sunday is the first day of the week.
27534            doy: 6, // The week that contains Jan 6th is the first week of the year.
27535        },
27536    });
27537
27538    return esUs;
27539
27540})));
27541
27542
27543/***/ }),
27544/* 44 */
27545/***/ (function(module, exports, __webpack_require__) {
27546
27547//! moment.js locale configuration
27548//! locale : Estonian [et]
27549//! author : Henry Kehlmann : https://github.com/madhenry
27550//! improvements : Illimar Tambek : https://github.com/ragulka
27551
27552;(function (global, factory) {
27553    true ? factory(__webpack_require__(0)) :
27554   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27555   factory(global.moment)
27556}(this, (function (moment) { 'use strict';
27557
27558    //! moment.js locale configuration
27559
27560    function processRelativeTime(number, withoutSuffix, key, isFuture) {
27561        var format = {
27562            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
27563            ss: [number + 'sekundi', number + 'sekundit'],
27564            m: ['ühe minuti', 'üks minut'],
27565            mm: [number + ' minuti', number + ' minutit'],
27566            h: ['ühe tunni', 'tund aega', 'üks tund'],
27567            hh: [number + ' tunni', number + ' tundi'],
27568            d: ['ühe päeva', 'üks päev'],
27569            M: ['kuu aja', 'kuu aega', 'üks kuu'],
27570            MM: [number + ' kuu', number + ' kuud'],
27571            y: ['ühe aasta', 'aasta', 'üks aasta'],
27572            yy: [number + ' aasta', number + ' aastat'],
27573        };
27574        if (withoutSuffix) {
27575            return format[key][2] ? format[key][2] : format[key][1];
27576        }
27577        return isFuture ? format[key][0] : format[key][1];
27578    }
27579
27580    var et = moment.defineLocale('et', {
27581        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
27582            '_'
27583        ),
27584        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(
27585            '_'
27586        ),
27587        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
27588            '_'
27589        ),
27590        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
27591        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
27592        longDateFormat: {
27593            LT: 'H:mm',
27594            LTS: 'H:mm:ss',
27595            L: 'DD.MM.YYYY',
27596            LL: 'D. MMMM YYYY',
27597            LLL: 'D. MMMM YYYY H:mm',
27598            LLLL: 'dddd, D. MMMM YYYY H:mm',
27599        },
27600        calendar: {
27601            sameDay: '[Täna,] LT',
27602            nextDay: '[Homme,] LT',
27603            nextWeek: '[Järgmine] dddd LT',
27604            lastDay: '[Eile,] LT',
27605            lastWeek: '[Eelmine] dddd LT',
27606            sameElse: 'L',
27607        },
27608        relativeTime: {
27609            future: '%s pärast',
27610            past: '%s tagasi',
27611            s: processRelativeTime,
27612            ss: processRelativeTime,
27613            m: processRelativeTime,
27614            mm: processRelativeTime,
27615            h: processRelativeTime,
27616            hh: processRelativeTime,
27617            d: processRelativeTime,
27618            dd: '%d päeva',
27619            M: processRelativeTime,
27620            MM: processRelativeTime,
27621            y: processRelativeTime,
27622            yy: processRelativeTime,
27623        },
27624        dayOfMonthOrdinalParse: /\d{1,2}\./,
27625        ordinal: '%d.',
27626        week: {
27627            dow: 1, // Monday is the first day of the week.
27628            doy: 4, // The week that contains Jan 4th is the first week of the year.
27629        },
27630    });
27631
27632    return et;
27633
27634})));
27635
27636
27637/***/ }),
27638/* 45 */
27639/***/ (function(module, exports, __webpack_require__) {
27640
27641//! moment.js locale configuration
27642//! locale : Basque [eu]
27643//! author : Eneko Illarramendi : https://github.com/eillarra
27644
27645;(function (global, factory) {
27646    true ? factory(__webpack_require__(0)) :
27647   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27648   factory(global.moment)
27649}(this, (function (moment) { 'use strict';
27650
27651    //! moment.js locale configuration
27652
27653    var eu = moment.defineLocale('eu', {
27654        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
27655            '_'
27656        ),
27657        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
27658            '_'
27659        ),
27660        monthsParseExact: true,
27661        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
27662            '_'
27663        ),
27664        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
27665        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
27666        weekdaysParseExact: true,
27667        longDateFormat: {
27668            LT: 'HH:mm',
27669            LTS: 'HH:mm:ss',
27670            L: 'YYYY-MM-DD',
27671            LL: 'YYYY[ko] MMMM[ren] D[a]',
27672            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
27673            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
27674            l: 'YYYY-M-D',
27675            ll: 'YYYY[ko] MMM D[a]',
27676            lll: 'YYYY[ko] MMM D[a] HH:mm',
27677            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
27678        },
27679        calendar: {
27680            sameDay: '[gaur] LT[etan]',
27681            nextDay: '[bihar] LT[etan]',
27682            nextWeek: 'dddd LT[etan]',
27683            lastDay: '[atzo] LT[etan]',
27684            lastWeek: '[aurreko] dddd LT[etan]',
27685            sameElse: 'L',
27686        },
27687        relativeTime: {
27688            future: '%s barru',
27689            past: 'duela %s',
27690            s: 'segundo batzuk',
27691            ss: '%d segundo',
27692            m: 'minutu bat',
27693            mm: '%d minutu',
27694            h: 'ordu bat',
27695            hh: '%d ordu',
27696            d: 'egun bat',
27697            dd: '%d egun',
27698            M: 'hilabete bat',
27699            MM: '%d hilabete',
27700            y: 'urte bat',
27701            yy: '%d urte',
27702        },
27703        dayOfMonthOrdinalParse: /\d{1,2}\./,
27704        ordinal: '%d.',
27705        week: {
27706            dow: 1, // Monday is the first day of the week.
27707            doy: 7, // The week that contains Jan 7th is the first week of the year.
27708        },
27709    });
27710
27711    return eu;
27712
27713})));
27714
27715
27716/***/ }),
27717/* 46 */
27718/***/ (function(module, exports, __webpack_require__) {
27719
27720//! moment.js locale configuration
27721//! locale : Persian [fa]
27722//! author : Ebrahim Byagowi : https://github.com/ebraminio
27723
27724;(function (global, factory) {
27725    true ? factory(__webpack_require__(0)) :
27726   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27727   factory(global.moment)
27728}(this, (function (moment) { 'use strict';
27729
27730    //! moment.js locale configuration
27731
27732    var symbolMap = {
27733            1: 'Û±',
27734            2: 'Û²',
27735            3: 'Û³',
27736            4: 'Û´',
27737            5: 'Ûµ',
27738            6: 'Û¶',
27739            7: 'Û·',
27740            8: 'Û¸',
27741            9: 'Û¹',
27742            0: 'Û°',
27743        },
27744        numberMap = {
27745            'Û±': '1',
27746            'Û²': '2',
27747            'Û³': '3',
27748            'Û´': '4',
27749            'Ûµ': '5',
27750            'Û¶': '6',
27751            'Û·': '7',
27752            'Û¸': '8',
27753            'Û¹': '9',
27754            'Û°': '0',
27755        };
27756
27757    var fa = moment.defineLocale('fa', {
27758        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
27759            '_'
27760        ),
27761        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
27762            '_'
27763        ),
27764        weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
27765            '_'
27766        ),
27767        weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
27768            '_'
27769        ),
27770        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
27771        weekdaysParseExact: true,
27772        longDateFormat: {
27773            LT: 'HH:mm',
27774            LTS: 'HH:mm:ss',
27775            L: 'DD/MM/YYYY',
27776            LL: 'D MMMM YYYY',
27777            LLL: 'D MMMM YYYY HH:mm',
27778            LLLL: 'dddd, D MMMM YYYY HH:mm',
27779        },
27780        meridiemParse: /قبل از ظهر|بعد از ظهر/,
27781        isPM: function (input) {
27782            return /بعد از ظهر/.test(input);
27783        },
27784        meridiem: function (hour, minute, isLower) {
27785            if (hour < 12) {
27786                return 'قبل از ظهر';
27787            } else {
27788                return 'بعد از ظهر';
27789            }
27790        },
27791        calendar: {
27792            sameDay: '[امروز ساعت] LT',
27793            nextDay: '[فردا ساعت] LT',
27794            nextWeek: 'dddd [ساعت] LT',
27795            lastDay: '[دیروز ساعت] LT',
27796            lastWeek: 'dddd [پیش] [ساعت] LT',
27797            sameElse: 'L',
27798        },
27799        relativeTime: {
27800            future: 'در %s',
27801            past: '%s پیش',
27802            s: 'چند ثانیه',
27803            ss: '%d ثانیه',
27804            m: 'یک دقیقه',
27805            mm: '%d دقیقه',
27806            h: 'یک ساعت',
27807            hh: '%d ساعت',
27808            d: 'یک روز',
27809            dd: '%d روز',
27810            M: 'یک ماه',
27811            MM: '%d ماه',
27812            y: 'یک سال',
27813            yy: '%d سال',
27814        },
27815        preparse: function (string) {
27816            return string
27817                .replace(/[Û°-Û¹]/g, function (match) {
27818                    return numberMap[match];
27819                })
27820                .replace(/،/g, ',');
27821        },
27822        postformat: function (string) {
27823            return string
27824                .replace(/\d/g, function (match) {
27825                    return symbolMap[match];
27826                })
27827                .replace(/,/g, '،');
27828        },
27829        dayOfMonthOrdinalParse: /\d{1,2}م/,
27830        ordinal: '%dم',
27831        week: {
27832            dow: 6, // Saturday is the first day of the week.
27833            doy: 12, // The week that contains Jan 12th is the first week of the year.
27834        },
27835    });
27836
27837    return fa;
27838
27839})));
27840
27841
27842/***/ }),
27843/* 47 */
27844/***/ (function(module, exports, __webpack_require__) {
27845
27846//! moment.js locale configuration
27847//! locale : Finnish [fi]
27848//! author : Tarmo Aidantausta : https://github.com/bleadof
27849
27850;(function (global, factory) {
27851    true ? factory(__webpack_require__(0)) :
27852   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27853   factory(global.moment)
27854}(this, (function (moment) { 'use strict';
27855
27856    //! moment.js locale configuration
27857
27858    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
27859            ' '
27860        ),
27861        numbersFuture = [
27862            'nolla',
27863            'yhden',
27864            'kahden',
27865            'kolmen',
27866            'neljän',
27867            'viiden',
27868            'kuuden',
27869            numbersPast[7],
27870            numbersPast[8],
27871            numbersPast[9],
27872        ];
27873    function translate(number, withoutSuffix, key, isFuture) {
27874        var result = '';
27875        switch (key) {
27876            case 's':
27877                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
27878            case 'ss':
27879                result = isFuture ? 'sekunnin' : 'sekuntia';
27880                break;
27881            case 'm':
27882                return isFuture ? 'minuutin' : 'minuutti';
27883            case 'mm':
27884                result = isFuture ? 'minuutin' : 'minuuttia';
27885                break;
27886            case 'h':
27887                return isFuture ? 'tunnin' : 'tunti';
27888            case 'hh':
27889                result = isFuture ? 'tunnin' : 'tuntia';
27890                break;
27891            case 'd':
27892                return isFuture ? 'päivän' : 'päivä';
27893            case 'dd':
27894                result = isFuture ? 'päivän' : 'päivää';
27895                break;
27896            case 'M':
27897                return isFuture ? 'kuukauden' : 'kuukausi';
27898            case 'MM':
27899                result = isFuture ? 'kuukauden' : 'kuukautta';
27900                break;
27901            case 'y':
27902                return isFuture ? 'vuoden' : 'vuosi';
27903            case 'yy':
27904                result = isFuture ? 'vuoden' : 'vuotta';
27905                break;
27906        }
27907        result = verbalNumber(number, isFuture) + ' ' + result;
27908        return result;
27909    }
27910    function verbalNumber(number, isFuture) {
27911        return number < 10
27912            ? isFuture
27913                ? numbersFuture[number]
27914                : numbersPast[number]
27915            : number;
27916    }
27917
27918    var fi = moment.defineLocale('fi', {
27919        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
27920            '_'
27921        ),
27922        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
27923            '_'
27924        ),
27925        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
27926            '_'
27927        ),
27928        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
27929        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
27930        longDateFormat: {
27931            LT: 'HH.mm',
27932            LTS: 'HH.mm.ss',
27933            L: 'DD.MM.YYYY',
27934            LL: 'Do MMMM[ta] YYYY',
27935            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
27936            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
27937            l: 'D.M.YYYY',
27938            ll: 'Do MMM YYYY',
27939            lll: 'Do MMM YYYY, [klo] HH.mm',
27940            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
27941        },
27942        calendar: {
27943            sameDay: '[tänään] [klo] LT',
27944            nextDay: '[huomenna] [klo] LT',
27945            nextWeek: 'dddd [klo] LT',
27946            lastDay: '[eilen] [klo] LT',
27947            lastWeek: '[viime] dddd[na] [klo] LT',
27948            sameElse: 'L',
27949        },
27950        relativeTime: {
27951            future: '%s päästä',
27952            past: '%s sitten',
27953            s: translate,
27954            ss: translate,
27955            m: translate,
27956            mm: translate,
27957            h: translate,
27958            hh: translate,
27959            d: translate,
27960            dd: translate,
27961            M: translate,
27962            MM: translate,
27963            y: translate,
27964            yy: translate,
27965        },
27966        dayOfMonthOrdinalParse: /\d{1,2}\./,
27967        ordinal: '%d.',
27968        week: {
27969            dow: 1, // Monday is the first day of the week.
27970            doy: 4, // The week that contains Jan 4th is the first week of the year.
27971        },
27972    });
27973
27974    return fi;
27975
27976}
27976)));
27977
27978
27979/***/ }),
27980/* 48 */
27981/***/ (function(module, exports, __webpack_require__) {
27982
27983//! moment.js locale configuration
27984//! locale : Filipino [fil]
27985//! author : Dan Hagman : https://github.com/hagmandan
27986//! author : Matthew Co : https://github.com/matthewdeeco
27987
27988;(function (global, factory) {
27989    true ? factory(__webpack_require__(0)) :
27990   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27991   factory(global.moment)
27992}(this, (function (moment) { 'use strict';
27993
27994    //! moment.js locale configuration
27995
27996    var fil = moment.defineLocale('fil', {
27997        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
27998            '_'
27999        ),
28000        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
28001        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
28002            '_'
28003        ),
28004        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
28005        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
28006        longDateFormat: {
28007            LT: 'HH:mm',
28008            LTS: 'HH:mm:ss',
28009            L: 'MM/D/YYYY',
28010            LL: 'MMMM D, YYYY',
28011            LLL: 'MMMM D, YYYY HH:mm',
28012            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
28013        },
28014        calendar: {
28015            sameDay: 'LT [ngayong araw]',
28016            nextDay: '[Bukas ng] LT',
28017            nextWeek: 'LT [sa susunod na] dddd',
28018            lastDay: 'LT [kahapon]',
28019            lastWeek: 'LT [noong nakaraang] dddd',
28020            sameElse: 'L',
28021        },
28022        relativeTime: {
28023            future: 'sa loob ng %s',
28024            past: '%s ang nakalipas',
28025            s: 'ilang segundo',
28026            ss: '%d segundo',
28027            m: 'isang minuto',
28028            mm: '%d minuto',
28029            h: 'isang oras',
28030            hh: '%d oras',
28031            d: 'isang araw',
28032            dd: '%d araw',
28033            M: 'isang buwan',
28034            MM: '%d buwan',
28035            y: 'isang taon',
28036            yy: '%d taon',
28037        },
28038        dayOfMonthOrdinalParse: /\d{1,2}/,
28039        ordinal: function (number) {
28040            return number;
28041        },
28042        week: {
28043            dow: 1, // Monday is the first day of the week.
28044            doy: 4, // The week that contains Jan 4th is the first week of the year.
28045        },
28046    });
28047
28048    return fil;
28049
28050})));
28051
28052
28053/***/ }),
28054/* 49 */
28055/***/ (function(module, exports, __webpack_require__) {
28056
28057//! moment.js locale configuration
28058//! locale : Faroese [fo]
28059//! author : Ragnar Johannesen : https://github.com/ragnar123
28060//! author : Kristian Sakarisson : https://github.com/sakarisson
28061
28062;(function (global, factory) {
28063    true ? factory(__webpack_require__(0)) :
28064   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28065   factory(global.moment)
28066}(this, (function (moment) { 'use strict';
28067
28068    //! moment.js locale configuration
28069
28070    var fo = moment.defineLocale('fo', {
28071        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
28072            '_'
28073        ),
28074        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
28075        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
28076            '_'
28077        ),
28078        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
28079        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
28080        longDateFormat: {
28081            LT: 'HH:mm',
28082            LTS: 'HH:mm:ss',
28083            L: 'DD/MM/YYYY',
28084            LL: 'D MMMM YYYY',
28085            LLL: 'D MMMM YYYY HH:mm',
28086            LLLL: 'dddd D. MMMM, YYYY HH:mm',
28087        },
28088        calendar: {
28089            sameDay: '[Í dag kl.] LT',
28090            nextDay: '[Í morgin kl.] LT',
28091            nextWeek: 'dddd [kl.] LT',
28092            lastDay: '[Í gjár kl.] LT',
28093            lastWeek: '[síðstu] dddd [kl] LT',
28094            sameElse: 'L',
28095        },
28096        relativeTime: {
28097            future: 'um %s',
28098            past: '%s síðani',
28099            s: 'fá sekund',
28100            ss: '%d sekundir',
28101            m: 'ein minuttur',
28102            mm: '%d minuttir',
28103            h: 'ein tími',
28104            hh: '%d tímar',
28105            d: 'ein dagur',
28106            dd: '%d dagar',
28107            M: 'ein mánaður',
28108            MM: '%d mánaðir',
28109            y: 'eitt ár',
28110            yy: '%d ár',
28111        },
28112        dayOfMonthOrdinalParse: /\d{1,2}\./,
28113        ordinal: '%d.',
28114        week: {
28115            dow: 1, // Monday is the first day of the week.
28116            doy: 4, // The week that contains Jan 4th is the first week of the year.
28117        },
28118    });
28119
28120    return fo;
28121
28122})));
28123
28124
28125/***/ }),
28126/* 50 */
28127/***/ (function(module, exports, __webpack_require__) {
28128
28129//! moment.js locale configuration
28130//! locale : French [fr]
28131//! author : John Fischer : https://github.com/jfroffice
28132
28133;(function (global, factory) {
28134    true ? factory(__webpack_require__(0)) :
28135   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28136   factory(global.moment)
28137}(this, (function (moment) { 'use strict';
28138
28139    //! moment.js locale configuration
28140
28141    var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
28142        monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
vendor: 11,274 bytes, lines 28143-28488
28143        monthsRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
28144        monthsParse = [
28145            /^janv/i,
28146            /^févr/i,
28147            /^mars/i,
28148            /^avr/i,
28149            /^mai/i,
28150            /^juin/i,
28151            /^juil/i,
28152            /^août/i,
28153            /^sept/i,
28154            /^oct/i,
28155            /^nov/i,
28156            /^déc/i,
28157        ];
28158
28159    var fr = moment.defineLocale('fr', {
28160        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
28161            '_'
28162        ),
28163        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
28164            '_'
28165        ),
28166        monthsRegex: monthsRegex,
28167        monthsShortRegex: monthsRegex,
28168        monthsStrictRegex: monthsStrictRegex,
28169        monthsShortStrictRegex: monthsShortStrictRegex,
28170        monthsParse: monthsParse,
28171        longMonthsParse: monthsParse,
28172        shortMonthsParse: monthsParse,
28173        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
28174        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
28175        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
28176        weekdaysParseExact: true,
28177        longDateFormat: {
28178            LT: 'HH:mm',
28179            LTS: 'HH:mm:ss',
28180            L: 'DD/MM/YYYY',
28181            LL: 'D MMMM YYYY',
28182            LLL: 'D MMMM YYYY HH:mm',
28183            LLLL: 'dddd D MMMM YYYY HH:mm',
28184        },
28185        calendar: {
28186            sameDay: '[Aujourd’hui à] LT',
28187            nextDay: '[Demain à] LT',
28188            nextWeek: 'dddd [à] LT',
28189            lastDay: '[Hier à] LT',
28190            lastWeek: 'dddd [dernier à] LT',
28191            sameElse: 'L',
28192        },
28193        relativeTime: {
28194            future: 'dans %s',
28195            past: 'il y a %s',
28196            s: 'quelques secondes',
28197            ss: '%d secondes',
28198            m: 'une minute',
28199            mm: '%d minutes',
28200            h: 'une heure',
28201            hh: '%d heures',
28202            d: 'un jour',
28203            dd: '%d jours',
28204            w: 'une semaine',
28205            ww: '%d semaines',
28206            M: 'un mois',
28207            MM: '%d mois',
28208            y: 'un an',
28209            yy: '%d ans',
28210        },
28211        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
28212        ordinal: function (number, period) {
28213            switch (period) {
28214                // TODO: Return 'e' when day of month > 1. Move this case inside
28215                // block for masculine words below.
28216                // See https://github.com/moment/moment/issues/3375
28217                case 'D':
28218                    return number + (number === 1 ? 'er' : '');
28219
28220                // Words with masculine grammatical gender: mois, trimestre, jour
28221                default:
28222                case 'M':
28223                case 'Q':
28224                case 'DDD':
28225                case 'd':
28226                    return number + (number === 1 ? 'er' : 'e');
28227
28228                // Words with feminine grammatical gender: semaine
28229                case 'w':
28230                case 'W':
28231                    return number + (number === 1 ? 're' : 'e');
28232            }
28233        },
28234        week: {
28235            dow: 1, // Monday is the first day of the week.
28236            doy: 4, // The week that contains Jan 4th is the first week of the year.
28237        },
28238    });
28239
28240    return fr;
28241
28242})));
28243
28244
28245/***/ }),
28246/* 51 */
28247/***/ (function(module, exports, __webpack_require__) {
28248
28249//! moment.js locale configuration
28250//! locale : French (Canada) [fr-ca]
28251//! author : Jonathan Abourbih : https://github.com/jonbca
28252
28253;(function (global, factory) {
28254    true ? factory(__webpack_require__(0)) :
28255   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28256   factory(global.moment)
28257}(this, (function (moment) { 'use strict';
28258
28259    //! moment.js locale configuration
28260
28261    var frCa = moment.defineLocale('fr-ca', {
28262        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
28263            '_'
28264        ),
28265        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
28266            '_'
28267        ),
28268        monthsParseExact: true,
28269        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
28270        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
28271        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
28272        weekdaysParseExact: true,
28273        longDateFormat: {
28274            LT: 'HH:mm',
28275            LTS: 'HH:mm:ss',
28276            L: 'YYYY-MM-DD',
28277            LL: 'D MMMM YYYY',
28278            LLL: 'D MMMM YYYY HH:mm',
28279            LLLL: 'dddd D MMMM YYYY HH:mm',
28280        },
28281        calendar: {
28282            sameDay: '[Aujourd’hui à] LT',
28283            nextDay: '[Demain à] LT',
28284            nextWeek: 'dddd [à] LT',
28285            lastDay: '[Hier à] LT',
28286            lastWeek: 'dddd [dernier à] LT',
28287            sameElse: 'L',
28288        },
28289        relativeTime: {
28290            future: 'dans %s',
28291            past: 'il y a %s',
28292            s: 'quelques secondes',
28293            ss: '%d secondes',
28294            m: 'une minute',
28295            mm: '%d minutes',
28296            h: 'une heure',
28297            hh: '%d heures',
28298            d: 'un jour',
28299            dd: '%d jours',
28300            M: 'un mois',
28301            MM: '%d mois',
28302            y: 'un an',
28303            yy: '%d ans',
28304        },
28305        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
28306        ordinal: function (number, period) {
28307            switch (period) {
28308                // Words with masculine grammatical gender: mois, trimestre, jour
28309                default:
28310                case 'M':
28311                case 'Q':
28312                case 'D':
28313                case 'DDD':
28314                case 'd':
28315                    return number + (number === 1 ? 'er' : 'e');
28316
28317                // Words with feminine grammatical gender: semaine
28318                case 'w':
28319                case 'W':
28320                    return number + (number === 1 ? 're' : 'e');
28321            }
28322        },
28323    });
28324
28325    return frCa;
28326
28327})));
28328
28329
28330/***/ }),
28331/* 52 */
28332/***/ (function(module, exports, __webpack_require__) {
28333
28334//! moment.js locale configuration
28335//! locale : French (Switzerland) [fr-ch]
28336//! author : Gaspard Bucher : https://github.com/gaspard
28337
28338;(function (global, factory) {
28339    true ? factory(__webpack_require__(0)) :
28340   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28341   factory(global.moment)
28342}(this, (function (moment) { 'use strict';
28343
28344    //! moment.js locale configuration
28345
28346    var frCh = moment.defineLocale('fr-ch', {
28347        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
28348            '_'
28349        ),
28350        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
28351            '_'
28352        ),
28353        monthsParseExact: true,
28354        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
28355        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
28356        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
28357        weekdaysParseExact: true,
28358        longDateFormat: {
28359            LT: 'HH:mm',
28360            LTS: 'HH:mm:ss',
28361            L: 'DD.MM.YYYY',
28362            LL: 'D MMMM YYYY',
28363            LLL: 'D MMMM YYYY HH:mm',
28364            LLLL: 'dddd D MMMM YYYY HH:mm',
28365        },
28366        calendar: {
28367            sameDay: '[Aujourd’hui à] LT',
28368            nextDay: '[Demain à] LT',
28369            nextWeek: 'dddd [à] LT',
28370            lastDay: '[Hier à] LT',
28371            lastWeek: 'dddd [dernier à] LT',
28372            sameElse: 'L',
28373        },
28374        relativeTime: {
28375            future: 'dans %s',
28376            past: 'il y a %s',
28377            s: 'quelques secondes',
28378            ss: '%d secondes',
28379            m: 'une minute',
28380            mm: '%d minutes',
28381            h: 'une heure',
28382            hh: '%d heures',
28383            d: 'un jour',
28384            dd: '%d jours',
28385            M: 'un mois',
28386            MM: '%d mois',
28387            y: 'un an',
28388            yy: '%d ans',
28389        },
28390        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
28391        ordinal: function (number, period) {
28392            switch (period) {
28393                // Words with masculine grammatical gender: mois, trimestre, jour
28394                default:
28395                case 'M':
28396                case 'Q':
28397                case 'D':
28398                case 'DDD':
28399                case 'd':
28400                    return number + (number === 1 ? 'er' : 'e');
28401
28402                // Words with feminine grammatical gender: semaine
28403                case 'w':
28404                case 'W':
28405                    return number + (number === 1 ? 're' : 'e');
28406            }
28407        },
28408        week: {
28409            dow: 1, // Monday is the first day of the week.
28410            doy: 4, // The week that contains Jan 4th is the first week of the year.
28411        },
28412    });
28413
28414    return frCh;
28415
28416})));
28417
28418
28419/***/ }),
28420/* 53 */
28421/***/ (function(module, exports, __webpack_require__) {
28422
28423//! moment.js locale configuration
28424//! locale : Frisian [fy]
28425//! author : Robin van der Vliet : https://github.com/robin0van0der0v
28426
28427;(function (global, factory) {
28428    true ? factory(__webpack_require__(0)) :
28429   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28430   factory(global.moment)
28431}(this, (function (moment) { 'use strict';
28432
28433    //! moment.js locale configuration
28434
28435    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(
28436            '_'
28437        ),
28438        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(
28439            '_'
28440        );
28441
28442    var fy = moment.defineLocale('fy', {
28443        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
28444            '_'
28445        ),
28446        monthsShort: function (m, format) {
28447            if (!m) {
28448                return monthsShortWithDots;
28449            } else if (/-MMM-/.test(format)) {
28450                return monthsShortWithoutDots[m.month()];
28451            } else {
28452                return monthsShortWithDots[m.month()];
28453            }
28454        },
28455        monthsParseExact: true,
28456        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
28457            '_'
28458        ),
28459        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
28460        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
28461        weekdaysParseExact: true,
28462        longDateFormat: {
28463            LT: 'HH:mm',
28464            LTS: 'HH:mm:ss',
28465            L: 'DD-MM-YYYY',
28466            LL: 'D MMMM YYYY',
28467            LLL: 'D MMMM YYYY HH:mm',
28468            LLLL: 'dddd D MMMM YYYY HH:mm',
28469        },
28470        calendar: {
28471            sameDay: '[hjoed om] LT',
28472            nextDay: '[moarn om] LT',
28473            nextWeek: 'dddd [om] LT',
28474            lastDay: '[juster om] LT',
28475            lastWeek: '[ôfrûne] dddd [om] LT',
28476            sameElse: 'L',
28477        },
28478        relativeTime: {
28479            future: 'oer %s',
28480            past: '%s lyn',
28481            s: 'in pear sekonden',
28482            ss: '%d sekonden',
28483            m: 'ien minút',
28484            mm: '%d minuten',
28485            h: 'ien oere',
28486            hh: '%d oeren',
28487            d: 'ien dei',
28488            dd: '%d dagen',
28489            M: 'ien moanne',
28490            MM: '%d moannen',
28491            y: 'ien jier',
28492            yy: '%d jierren',
28493        },
28494        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
28495        ordinal: function (number) {
28496            return (
28497                number +
28498                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
28499            );
28500        },
28501        week: {
28502            dow: 1, // Monday is the first day of the week.
28503            doy: 4, // The week that contains Jan 4th is the first week of the year.
28504        },
28505    });
28506
28507    return fy;
28508
28509})));
28510
28511
28512/***/ }),
28513/* 54 */
28514/***/ (function(module, exports, __webpack_require__) {
28515
28516//! moment.js locale configuration
28517//! locale : Irish or Irish Gaelic [ga]
28518//! author : André Silva : https://github.com/askpt
28519
28520;(function (global, factory) {
28521    true ? factory(__webpack_require__(0)) :
28522   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28523   factory(global.moment)
28524}(this, (function (moment) { 'use strict';
28525
28526    //! moment.js locale configuration
28527
28528    var months = [
28529            'Eanáir',
28530            'Feabhra',
28531            'Márta',
28532            'Aibreán',
28533            'Bealtaine',
28534            'Meitheamh',
28535            'Iúil',
28536            'Lúnasa',
28537            'Meán Fómhair',
28538            'Deireadh Fómhair',
28539            'Samhain',
28540            'Nollaig',
28541        ],
28542        monthsShort = [
28543            'Ean',
28544            'Feabh',
28545            'Márt',
28546            'Aib',
28547            'Beal',
28548            'Meith',
28549            'Iúil',
28550            'Lún',
28551            'M.F.',
28552            'D.F.',
28553            'Samh',
28554            'Noll',
28555        ],
28556        weekdays = [
28557            'Dé Domhnaigh',
28558            'Dé Luain',
28559            'Dé Máirt',
28560            'Dé Céadaoin',
28561            'Déardaoin',
28562            'Dé hAoine',
28563            'Dé Sathairn',
28564        ],
28565        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
28566        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
28567
28568    var ga = moment.defineLocale('ga', {
28569        months: months,
28570        monthsShort: monthsShort,
28571        monthsParseExact: true,
28572        weekdays: weekdays,
28573        weekdaysShort: weekdaysShort,
28574        weekdaysMin: weekdaysMin,
28575        longDateFormat: {
28576            LT: 'HH:mm',
28577            LTS: 'HH:mm:ss',
28578            L: 'DD/MM/YYYY',
28579            LL: 'D MMMM YYYY',
28580            LLL: 'D MMMM YYYY HH:mm',
28581            LLLL: 'dddd, D MMMM YYYY HH:mm',
28582        },
28583        calendar: {
28584            sameDay: '[Inniu ag] LT',
28585            nextDay: '[Amárach ag] LT',
28586            nextWeek: 'dddd [ag] LT',
28587            lastDay: '[Inné ag] LT',
28588            lastWeek: 'dddd [seo caite] [ag] LT',
28589            sameElse: 'L',
28590        },
28591        relativeTime: {
28592            future: 'i %s',
28593            past: '%s ó shin',
28594            s: 'cúpla soicind',
28595            ss: '%d soicind',
28596            m: 'nóiméad',
28597            mm: '%d nóiméad',
28598            h: 'uair an chloig',
28599            hh: '%d uair an chloig',
28600            d: 'lá',
28601            dd: '%d lá',
28602            M: 'mí',
28603            MM: '%d míonna',
28604            y: 'bliain',
28605            yy: '%d bliain',
28606        },
28607        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
28608        ordinal: function (number) {
28609            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
28610            return number + output;
28611        },
28612        week: {
28613            dow: 1, // Monday is the first day of the week.
28614            doy: 4, // The week that contains Jan 4th is the first week of the year.
28615        },
28616    });
28617
28618    return ga;
28619
28620})));
28621
28622
28623/***/ }),
28624/* 55 */
28625/***/ (function(module, exports, __webpack_require__) {
28626
28627//! moment.js locale configuration
28628//! locale : Scottish Gaelic [gd]
28629//! author : Jon Ashdown : https://github.com/jonashdown
28630
28631;(function (global, factory) {
28632    true ? factory(__webpack_require__(0)) :
28633   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28634   factory(global.moment)
28635}(this, (function (moment) { 'use strict';
28636
28637    //! moment.js locale configuration
28638
28639    var months = [
28640            'Am Faoilleach',
28641            'An Gearran',
28642            'Am Màrt',
28643            'An Giblean',
28644            'An Cèitean',
28645            'An t-Ògmhios',
28646            'An t-Iuchar',
28647            'An Lùnastal',
28648            'An t-Sultain',
28649            'An Dàmhair',
28650            'An t-Samhain',
28651            'An Dùbhlachd',
28652        ],
28653        monthsShort = [
28654            'Faoi',
28655            'Gear',
28656            'Màrt',
28657            'Gibl',
28658            'Cèit',
28659            'Ògmh',
28660            'Iuch',
28661            'Lùn',
28662            'Sult',
28663            'Dàmh',
28664            'Samh',
28665            'Dùbh',
28666        ],
28667        weekdays = [
28668            'Didòmhnaich',
28669            'Diluain',
28670            'Dimàirt',
28671            'Diciadain',
28672            'Diardaoin',
28673            'Dihaoine',
28674            'Disathairne',
28675        ],
28676        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
28677        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
28678
28679    var gd = moment.defineLocale('gd', {
28680        months: months,
28681        monthsShort: monthsShort,
28682        monthsParseExact: true,
28683        weekdays: weekdays,
28684        weekdaysShort: weekdaysShort,
28685        weekdaysMin: weekdaysMin,
28686        longDateFormat: {
28687            LT: 'HH:mm',
28688            LTS: 'HH:mm:ss',
28689            L: 'DD/MM/YYYY',
28690            LL: 'D MMMM YYYY',
28691            LLL: 'D MMMM YYYY HH:mm',
28692            LLLL: 'dddd, D MMMM YYYY HH:mm',
28693        },
28694        calendar: {
28695            sameDay: '[An-diugh aig] LT',
28696            nextDay: '[A-màireach aig] LT',
28697            nextWeek: 'dddd [aig] LT',
28698            lastDay: '[An-dè aig] LT',
28699            lastWeek: 'dddd [seo chaidh] [aig] LT',
28700            sameElse: 'L',
28701        },
28702        relativeTime: {
28703            future: 'ann an %s',
28704            past: 'bho chionn %s',
28705            s: 'beagan diogan',
28706            ss: '%d diogan',
28707            m: 'mionaid',
28708            mm: '%d mionaidean',
28709            h: 'uair',
28710            hh: '%d uairean',
28711            d: 'latha',
28712            dd: '%d latha',
28713            M: 'mìos',
28714            MM: '%d mìosan',
28715            y: 'bliadhna',
28716            yy: '%d bliadhna',
28717        },
28718        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
28719        ordinal: function (number) {
28720            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
28721            return number + output;
28722        },
28723        week: {
28724            dow: 1, // Monday is the first day of the week.
28725            doy: 4, // The week that contains Jan 4th is the first week of the year.
28726        },
28727    });
28728
28729    return gd;
28730
28731})));
28732
28733
28734/***/ }),
28735/* 56 */
28736/***/ (function(module, exports, __webpack_require__) {
28737
28738//! moment.js locale configuration
28739//! locale : Galician [gl]
28740//! author : Juan G. Hurtado : https://github.com/juanghurtado
28741
28742;(function (global, factory) {
28743    true ? factory(__webpack_require__(0)) :
28744   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28745   factory(global.moment)
28746}(this, (function (moment) { 'use strict';
28747
28748    //! moment.js locale configuration
28749
28750    var gl = moment.defineLocale('gl', {
28751        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
28752            '_'
28753        ),
28754        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
28755            '_'
28756        ),
28757        monthsParseExact: true,
28758        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
28759        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
28760        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
28761        weekdaysParseExact: true,
28762        longDateFormat: {
28763            LT: 'H:mm',
28764            LTS: 'H:mm:ss',
28765            L: 'DD/MM/YYYY',
28766            LL: 'D [de] MMMM [de] YYYY',
28767            LLL: 'D [de] MMMM [de] YYYY H:mm',
28768            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
28769        },
28770        calendar: {
28771            sameDay: function () {
28772                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
28773            },
28774            nextDay: function () {
28775                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
28776            },
28777            nextWeek: function () {
28778                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
28779            },
28780            lastDay: function () {
28781                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
28782            },
28783            lastWeek: function () {
28784                return (
28785                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
28786                );
28787            },
28788            sameElse: 'L',
28789        },
28790        relativeTime: {
28791            future: function (str) {
28792                if (str.indexOf('un') === 0) {
28793                    return 'n' + str;
28794                }
28795                return 'en ' + str;
28796            },
28797            past: 'hai %s',
28798            s: 'uns segundos',
28799            ss: '%d segundos',
28800            m: 'un minuto',
28801            mm: '%d minutos',
28802            h: 'unha hora',
28803            hh: '%d horas',
28804            d: 'un día',
28805            dd: '%d días',
28806            M: 'un mes',
28807            MM: '%d meses',
28808            y: 'un ano',
28809            yy: '%d anos',
28810        },
28811        dayOfMonthOrdinalParse: /\d{1,2}º/,
28812        ordinal: '%dº',
28813        week: {
28814            dow: 1, // Monday is the first day of the week.
28815            doy: 4, // The week that contains Jan 4th is the first week of the year.
28816        },
28817    });
28818
28819    return gl;
28820
28821})));
28822
28823
28824/***/ }),
28825/* 57 */
28826/***/ (function(module, exports, __webpack_require__) {
28827
28828//! moment.js locale configuration
28829//! locale : Konkani Devanagari script [gom-deva]
28830//! author : The Discoverer : https://github.com/WikiDiscoverer
28831
28832;(function (global, factory) {
28833    true ? factory(__webpack_require__(0)) :
28834   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28835   factory(global.moment)
28836}(this, (function (moment) { 'use strict';
28837
28838    //! moment.js locale configuration
28839
28840    function processRelativeTime(number, withoutSuffix, key, isFuture) {
28841        var format = {
28842            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
28843            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
28844            m: ['एका मिणटान', 'एक मिनूट'],
28845            mm: [number + ' मिणटांनी', number + ' मिणटां'],
28846            h: ['एका वरान', 'एक वर'],
28847            hh: [number + ' वरांनी', number + ' वरां'],
28848            d: ['एका दिसान', 'एक दीस'],
28849            dd: [number + ' दिसांनी', number + ' दीस'],
28850            M: ['एका म्हयन्यान', 'एक म्हयनो'],
28851            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
28852            y: ['एका वर्सान', 'एक वर्स'],
28853            yy: [number + ' वर्सांनी', number + ' वर्सां'],
28854        };
28855        return isFuture ? format[key][0] : format[key][1];
28856    }
28857
28858    var gomDeva = moment.defineLocale('gom-deva', {
28859        months: {
28860            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
28861                '_'
28862            ),
28863            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
28864                '_'
28865            ),
28866            isFormat: /MMMM(\s)+D[oD]?/,
28867        },
28868        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
28869            '_'
28870        ),
28871        monthsParseExact: true,
28872        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्राà
28872¤°_शेनवार'.split('_'),
28873        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
28874        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
28875        weekdaysParseExact: true,
28876        longDateFormat: {
28877            LT: 'A h:mm [वाजतां]',
28878            LTS: 'A h:mm:ss [वाजतां]',
28879            L: 'DD-MM-YYYY',
28880            LL: 'D MMMM YYYY',
28881            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
28882            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
28883            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
28884        },
28885        calendar: {
28886            sameDay: '[आयज] LT',
28887            nextDay: '[फाल्यां] LT',
28888            nextWeek: '[फुडलो] dddd[,] LT',
28889            lastDay: '[काल] LT',
28890            lastWeek: '[फाटलो] dddd[,] LT',
28891            sameElse: 'L',
28892        },
28893        relativeTime: {
28894            future: '%s',
28895            past: '%s आदीं',
28896            s: processRelativeTime,
28897            ss: processRelativeTime,
28898            m: processRelativeTime,
28899            mm: processRelativeTime,
28900            h: processRelativeTime,
28901            hh: processRelativeTime,
28902            d: processRelativeTime,
28903            dd: processRelativeTime,
28904            M: processRelativeTime,
28905            MM: processRelativeTime,
28906            y: processRelativeTime,
28907            yy: processRelativeTime,
28908        },
28909        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
28910        ordinal: function (number, period) {
28911            switch (period) {
28912                // the ordinal 'वेर' only applies to day of the month
28913                case 'D':
28914                    return number + 'वेर';
28915                default:
28916                case 'M':
28917                case 'Q':
28918                case 'DDD':
28919                case 'd':
28920                case 'w':
28921                case 'W':
28922                    return number;
28923            }
28924        },
28925        week: {
28926            dow: 0, // Sunday is the first day of the week
28927            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
28928        },
28929        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
28930        meridiemHour: function (hour, meridiem) {
28931            if (hour === 12) {
28932                hour = 0;
28933            }
28934            if (meridiem === 'राती') {
28935                return hour < 4 ? hour : hour + 12;
28936            } else if (meridiem === 'सकाळीं') {
28937                return hour;
28938            } else if (meridiem === 'दनपारां') {
28939                return hour > 12 ? hour : hour + 12;
28940            } else if (meridiem === 'सांजे') {
28941                return hour + 12;
28942            }
28943        },
28944        meridiem: function (hour, minute, isLower) {
28945            if (hour < 4) {
28946                return 'राती';
28947            } else if (hour < 12) {
28948                return 'सकाळीं';
28949            } else if (hour < 16) {
28950                return 'दनपारां';
28951            } else if (hour < 20) {
28952                return 'सांजे';
28953            } else {
28954                return 'राती';
28955            }
28956        },
28957    });
28958
28959    return gomDeva;
28960
28961})));
28962
28963
28964/***/ }),
28965/* 58 */
28966/***/ (function(module, exports, __webpack_require__) {
28967
28968//! moment.js locale configuration
28969//! locale : Konkani Latin script [gom-latn]
28970//! author : The Discoverer : https://github.com/WikiDiscoverer
28971
28972;(function (global, factory) {
28973    true ? factory(__webpack_require__(0)) :
28974   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28975   factory(global.moment)
28976}(this, (function (moment) { 'use strict';
28977
28978    //! moment.js locale configuration
28979
28980    function processRelativeTime(number, withoutSuffix, key, isFuture) {
28981        var format = {
28982            s: ['thoddea sekondamni', 'thodde sekond'],
28983            ss: [number + ' sekondamni', number + ' sekond'],
28984            m: ['eka mintan', 'ek minut'],
28985            mm: [number + ' mintamni', number + ' mintam'],
28986            h: ['eka voran', 'ek vor'],
28987            hh: [number + ' voramni', number + ' voram'],
28988            d: ['eka disan', 'ek dis'],
28989            dd: [number + ' disamni', number + ' dis'],
28990            M: ['eka mhoinean', 'ek mhoino'],
28991            MM: [number + ' mhoineamni', number + ' mhoine'],
28992            y: ['eka vorsan', 'ek voros'],
28993            yy: [number + ' vorsamni', number + ' vorsam'],
28994        };
28995        return isFuture ? format[key][0] : format[key][1];
28996    }
28997
28998    var gomLatn = moment.defineLocale('gom-latn', {
28999        months: {
29000            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
29001                '_'
29002            ),
29003            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
29004                '_'
29005            ),
29006            isFormat: /MMMM(\s)+D[oD]?/,
29007        },
29008        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(
29009            '_'
29010        ),
29011        monthsParseExact: true,
29012        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
29013        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
29014        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
29015        weekdaysParseExact: true,
29016        longDateFormat: {
29017            LT: 'A h:mm [vazta]',
29018            LTS: 'A h:mm:ss [vazta]',
29019            L: 'DD-MM-YYYY',
29020            LL: 'D MMMM YYYY',
29021            LLL: 'D MMMM YYYY A h:mm [vazta]',
29022            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
29023            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
29024        },
29025        calendar: {
29026            sameDay: '[Aiz] LT',
29027            nextDay: '[Faleam] LT',
29028            nextWeek: '[Fuddlo] dddd[,] LT',
29029            lastDay: '[Kal] LT',
29030            lastWeek: '[Fattlo] dddd[,] LT',
29031            sameElse: 'L',
29032        },
29033        relativeTime: {
29034            future: '%s',
29035            past: '%s adim',
29036            s: processRelativeTime,
29037            ss: processRelativeTime,
29038            m: processRelativeTime,
29039            mm: processRelativeTime,
29040            h: processRelativeTime,
29041            hh: processRelativeTime,
29042            d: processRelativeTime,
29043            dd: processRelativeTime,
29044            M: processRelativeTime,
29045            MM: processRelativeTime,
29046            y: processRelativeTime,
29047            yy: processRelativeTime,
29048        },
29049        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
29050        ordinal: function (number, period) {
29051            switch (period) {
29052                // the ordinal 'er' only applies to day of the month
29053                case 'D':
29054                    return number + 'er';
29055                default:
29056                case 'M':
29057                case 'Q':
29058                case 'DDD':
29059                case 'd':
29060                case 'w':
29061                case 'W':
29062                    return number;
29063            }
29064        },
29065        week: {
29066            dow: 0, // Sunday is the first day of the week
29067            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
29068        },
29069        meridiemParse: /rati|sokallim|donparam|sanje/,
29070        meridiemHour: function (hour, meridiem) {
29071            if (hour === 12) {
29072                hour = 0;
29073            }
29074            if (meridiem === 'rati') {
29075                return hour < 4 ? hour : hour + 12;
29076            } else if (meridiem === 'sokallim') {
29077                return hour;
29078            } else if (meridiem === 'donparam') {
29079                return hour > 12 ? hour : hour + 12;
29080            } else if (meridiem === 'sanje') {
29081                return hour + 12;
29082            }
29083        },
29084        meridiem: function (hour, minute, isLower) {
29085            if (hour < 4) {
29086                return 'rati';
29087            } else if (hour < 12) {
29088                return 'sokallim';
29089            } else if (hour < 16) {
29090                return 'donparam';
29091            } else if (hour < 20) {
29092                return 'sanje';
29093            } else {
29094                return 'rati';
29095            }
29096        },
29097    });
29098
29099    return gomLatn;
29100
29101})));
29102
29103
29104/***/ }),
29105/* 59 */
29106/***/ (function(module, exports, __webpack_require__) {
29107
29108//! moment.js locale configuration
29109//! locale : Gujarati [gu]
29110//! author : Kaushik Thanki : https://github.com/Kaushik1987
29111
29112;(function (global, factory) {
29113    true ? factory(__webpack_require__(0)) :
29114   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29115   factory(global.moment)
29116}(this, (function (moment) { 'use strict';
29117
29118    //! moment.js locale configuration
29119
29120    var symbolMap = {
29121            1: 'à«§',
29122            2: '૨',
29123            3: 'à«©',
29124            4: '૪',
29125            5: 'à««',
29126            6: '૬',
29127            7: 'à«­',
29128            8: 'à«®',
29129            9: '૯',
29130            0: '૦',
29131        },
29132        numberMap = {
29133            'à«§': '1',
29134            '૨': '2',
29135            'à«©': '3',
29136            '૪': '4',
29137            'à««': '5',
29138            '૬': '6',
29139            'à«­': '7',
29140            'à«®': '8',
29141            '૯': '9',
29142            '૦': '0',
29143        };
29144
29145    var gu = moment.defineLocale('gu', {
29146        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
29147            '_'
29148        ),
29149        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડà
vendor: 7,387 bytes, lines 29149-29355
29149ª¿àª¸à«‡.'.split(
29150            '_'
29151        ),
29152        monthsParseExact: true,
29153        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
29154            '_'
29155        ),
29156        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
29157        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
29158        longDateFormat: {
29159            LT: 'A h:mm વાગ્યે',
29160            LTS: 'A h:mm:ss વાગ્યે',
29161            L: 'DD/MM/YYYY',
29162            LL: 'D MMMM YYYY',
29163            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
29164            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
29165        },
29166        calendar: {
29167            sameDay: '[આજ] LT',
29168            nextDay: '[કાલે] LT',
29169            nextWeek: 'dddd, LT',
29170            lastDay: '[ગઇકાલે] LT',
29171            lastWeek: '[પાછલા] dddd, LT',
29172            sameElse: 'L',
29173        },
29174        relativeTime: {
29175            future: '%s મા',
29176            past: '%s પહેલા',
29177            s: 'અમુક પળો',
29178            ss: '%d સેકંડ',
29179            m: 'એક મિનિટ',
29180            mm: '%d મિનિટ',
29181            h: 'એક કલાક',
29182            hh: '%d કલાક',
29183            d: 'એક દિવસ',
29184            dd: '%d દિવસ',
29185            M: 'એક મહિનો',
29186            MM: '%d મહિનો',
29187            y: 'એક વર્ષ',
29188            yy: '%d વર્ષ',
29189        },
29190        preparse: function (string) {
29191            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
29192                return numberMap[match];
29193            });
29194        },
29195        postformat: function (string) {
29196            return string.replace(/\d/g, function (match) {
29197                return symbolMap[match];
29198            });
29199        },
29200        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
29201        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
29202        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
29203        meridiemHour: function (hour, meridiem) {
29204            if (hour === 12) {
29205                hour = 0;
29206            }
29207            if (meridiem === 'રાત') {
29208                return hour < 4 ? hour : hour + 12;
29209            } else if (meridiem === 'સવાર') {
29210                return hour;
29211            } else if (meridiem === 'બપોર') {
29212                return hour >= 10 ? hour : hour + 12;
29213            } else if (meridiem === 'સાંજ') {
29214                return hour + 12;
29215            }
29216        },
29217        meridiem: function (hour, minute, isLower) {
29218            if (hour < 4) {
29219                return 'રાત';
29220            } else if (hour < 10) {
29221                return 'સવાર';
29222            } else if (hour < 17) {
29223                return 'બપોર';
29224            } else if (hour < 20) {
29225                return 'સાંજ';
29226            } else {
29227                return 'રાત';
29228            }
29229        },
29230        week: {
29231            dow: 0, // Sunday is the first day of the week.
29232            doy: 6, // The week that contains Jan 6th is the first week of the year.
29233        },
29234    });
29235
29236    return gu;
29237
29238})));
29239
29240
29241/***/ }),
29242/* 60 */
29243/***/ (function(module, exports, __webpack_require__) {
29244
29245//! moment.js locale configuration
29246//! locale : Hebrew [he]
29247//! author : Tomer Cohen : https://github.com/tomer
29248//! author : Moshe Simantov : https://github.com/DevelopmentIL
29249//! author : Tal Ater : https://github.com/TalAter
29250
29251;(function (global, factory) {
29252    true ? factory(__webpack_require__(0)) :
29253   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29254   factory(global.moment)
29255}(this, (function (moment) { 'use strict';
29256
29257    //! moment.js locale configuration
29258
29259    var he = moment.defineLocale('he', {
29260        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
29261            '_'
29262        ),
29263        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(
29264            '_'
29265        ),
29266        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
29267        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
29268        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
29269        longDateFormat: {
29270            LT: 'HH:mm',
29271            LTS: 'HH:mm:ss',
29272            L: 'DD/MM/YYYY',
29273            LL: 'D [ב]MMMM YYYY',
29274            LLL: 'D [ב]MMMM YYYY HH:mm',
29275            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
29276            l: 'D/M/YYYY',
29277            ll: 'D MMM YYYY',
29278            lll: 'D MMM YYYY HH:mm',
29279            llll: 'ddd, D MMM YYYY HH:mm',
29280        },
29281        calendar: {
29282            sameDay: '[היום ב־]LT',
29283            nextDay: '[מחר ב־]LT',
29284            nextWeek: 'dddd [בשעה] LT',
29285            lastDay: '[אתמול ב־]LT',
29286            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
29287            sameElse: 'L',
29288        },
29289        relativeTime: {
29290            future: 'בעוד %s',
29291            past: 'לפני %s',
29292            s: 'מספר שניות',
29293            ss: '%d שניות',
29294            m: 'דקה',
29295            mm: '%d דקות',
29296            h: 'שעה',
29297            hh: function (number) {
29298                if (number === 2) {
29299                    return 'שעתיים';
29300                }
29301                return number + ' שעות';
29302            },
29303            d: 'יום',
29304            dd: function (number) {
29305                if (number === 2) {
29306                    return 'יומיים';
29307                }
29308                return number + ' ימים';
29309            },
29310            M: 'חודש',
29311            MM: function (number) {
29312                if (number === 2) {
29313                    return 'חודשיים';
29314                }
29315                return number + ' חודשים';
29316            },
29317            y: 'שנה',
29318            yy: function (number) {
29319                if (number === 2) {
29320                    return 'שנתיים';
29321                } else if (number % 10 === 0 && number !== 10) {
29322                    return number + ' שנה';
29323                }
29324                return number + ' שנים';
29325            },
29326        },
29327        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
29328        isPM: function (input) {
29329            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
29330        },
29331        meridiem: function (hour, minute, isLower) {
29332            if (hour < 5) {
29333                return 'לפנות בוקר';
29334            } else if (hour < 10) {
29335                return 'בבוקר';
29336            } else if (hour < 12) {
29337                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
29338            } else if (hour < 18) {
29339                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
29340            } else {
29341                return 'בערב';
29342            }
29343        },
29344    });
29345
29346    return he;
29347
29348})));
29349
29350
29351/***/ }),
29352/* 61 */
29353/***/ (function(module, exports, __webpack_require__) {
29354
29355//! moment.js locale configuration
29356//! locale : Hindi [hi]
29357//! author : Mayank Singhal : https://github.com/mayanksinghal
29358
29359;(function (global, factory) {
29360    true ? factory(__webpack_require__(0)) :
29361   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29362   factory(global.moment)
29363}(this, (function (moment) { 'use strict';
29364
29365    //! moment.js locale configuration
29366
29367    var symbolMap = {
29368            1: '१',
29369            2: '२',
29370            3: '३',
29371            4: '४',
29372            5: '५',
29373            6: '६',
29374            7: '७',
29375            8: '८',
29376            9: '९',
29377            0: '०',
29378        },
29379        numberMap = {
29380            '१': '1',
29381            '२': '2',
29382            '३': '3',
29383            '४': '4',
29384            '५': '5',
29385            '६': '6',
29386            '७': '7',
29387            '८': '8',
29388            '९': '9',
29389            '०': '0',
29390        },
29391        monthsParse = [
29392            /^जन/i,
29393            /^फ़र|फर/i,
29394            /^मार्च/i,
29395            /^अप्रै/i,
29396            /^मई/i,
29397            /^जून/i,
29398            /^जुल/i,
29399            /^अग/i,
29400            /^सितं|सित/i,
29401            /^अक्टू/i,
29402            /^नव|नवं/i,
29403            /^दिसं|दिस/i,
29404        ],
29405        shortMonthsParse = [
29406            /^जन/i,
29407            /^फ़र/i,
29408            /^मार्च/i,
29409            /^अप्रै/i,
29410            /^मई/i,
29411            /^जून/i,
29412            /^जुल/i,
29413            /^अग/i,
29414            /^सित/i,
29415            /^अक्टू/i,
29416            /^नव/i,
29417            /^दिस/i,
29418        ];
29419
29420    var hi = moment.defineLocale('hi', {
29421        months: {
29422            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
29423                '_'
29424            ),
29425            standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
29426                '_'
29427            ),
29428        },
29429        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(
29430            '_'
29431        ),
29432        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
29433        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
29434        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
29435        longDateFormat: {
29436            LT: 'A h:mm बजे',
29437            LTS: 'A h:mm:ss बजे',
29438            L: 'DD/MM/YYYY',
29439            LL: 'D MMMM YYYY',
29440            LLL: 'D MMMM YYYY, A h:mm बजे',
29441            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
29442        },
29443
29444        monthsParse: monthsParse,
29445        longMonthsParse: monthsParse,
29446        shortMonthsParse: shortMonthsParse,
29447
29448        monthsRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
29449
29450        monthsShortRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
29451
29452        monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अ
vendor: 15,535 bytes, lines 29452-29896
29452क्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
29453
29454        monthsShortStrictRegex: /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
29455
29456        calendar: {
29457            sameDay: '[आज] LT',
29458            nextDay: '[कल] LT',
29459            nextWeek: 'dddd, LT',
29460            lastDay: '[कल] LT',
29461            lastWeek: '[पिछले] dddd, LT',
29462            sameElse: 'L',
29463        },
29464        relativeTime: {
29465            future: '%s में',
29466            past: '%s पहले',
29467            s: 'कुछ ही क्षण',
29468            ss: '%d सेकंड',
29469            m: 'एक मिनट',
29470            mm: '%d मिनट',
29471            h: 'एक घंटा',
29472            hh: '%d घंटे',
29473            d: 'एक दिन',
29474            dd: '%d दिन',
29475            M: 'एक महीने',
29476            MM: '%d महीने',
29477            y: 'एक वर्ष',
29478            yy: '%d वर्ष',
29479        },
29480        preparse: function (string) {
29481            return string.replace(/[१२३४५६७८९०]/g, function (match) {
29482                return numberMap[match];
29483            });
29484        },
29485        postformat: function (string) {
29486            return string.replace(/\d/g, function (match) {
29487                return symbolMap[match];
29488            });
29489        },
29490        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
29491        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
29492        meridiemParse: /रात|सुबह|दोपहर|शाम/,
29493        meridiemHour: function (hour, meridiem) {
29494            if (hour === 12) {
29495                hour = 0;
29496            }
29497            if (meridiem === 'रात') {
29498                return hour < 4 ? hour : hour + 12;
29499            } else if (meridiem === 'सुबह') {
29500                return hour;
29501            } else if (meridiem === 'दोपहर') {
29502                return hour >= 10 ? hour : hour + 12;
29503            } else if (meridiem === 'शाम') {
29504                return hour + 12;
29505            }
29506        },
29507        meridiem: function (hour, minute, isLower) {
29508            if (hour < 4) {
29509                return 'रात';
29510            } else if (hour < 10) {
29511                return 'सुबह';
29512            } else if (hour < 17) {
29513                return 'दोपहर';
29514            } else if (hour < 20) {
29515                return 'शाम';
29516            } else {
29517                return 'रात';
29518            }
29519        },
29520        week: {
29521            dow: 0, // Sunday is the first day of the week.
29522            doy: 6, // The week that contains Jan 6th is the first week of the year.
29523        },
29524    });
29525
29526    return hi;
29527
29528})));
29529
29530
29531/***/ }),
29532/* 62 */
29533/***/ (function(module, exports, __webpack_require__) {
29534
29535//! moment.js locale configuration
29536//! locale : Croatian [hr]
29537//! author : Bojan Marković : https://github.com/bmarkovic
29538
29539;(function (global, factory) {
29540    true ? factory(__webpack_require__(0)) :
29541   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29542   factory(global.moment)
29543}(this, (function (moment) { 'use strict';
29544
29545    //! moment.js locale configuration
29546
29547    function translate(number, withoutSuffix, key) {
29548        var result = number + ' ';
29549        switch (key) {
29550            case 'ss':
29551                if (number === 1) {
29552                    result += 'sekunda';
29553                } else if (number === 2 || number === 3 || number === 4) {
29554                    result += 'sekunde';
29555                } else {
29556                    result += 'sekundi';
29557                }
29558                return result;
29559            case 'm':
29560                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
29561            case 'mm':
29562                if (number === 1) {
29563                    result += 'minuta';
29564                } else if (number === 2 || number === 3 || number === 4) {
29565                    result += 'minute';
29566                } else {
29567                    result += 'minuta';
29568                }
29569                return result;
29570            case 'h':
29571                return withoutSuffix ? 'jedan sat' : 'jednog sata';
29572            case 'hh':
29573                if (number === 1) {
29574                    result += 'sat';
29575                } else if (number === 2 || number === 3 || number === 4) {
29576                    result += 'sata';
29577                } else {
29578                    result += 'sati';
29579                }
29580                return result;
29581            case 'dd':
29582                if (number === 1) {
29583                    result += 'dan';
29584                } else {
29585                    result += 'dana';
29586                }
29587                return result;
29588            case 'MM':
29589                if (number === 1) {
29590                    result += 'mjesec';
29591                } else if (number === 2 || number === 3 || number === 4) {
29592                    result += 'mjeseca';
29593                } else {
29594                    result += 'mjeseci';
29595                }
29596                return result;
29597            case 'yy':
29598                if (number === 1) {
29599                    result += 'godina';
29600                } else if (number === 2 || number === 3 || number === 4) {
29601                    result += 'godine';
29602                } else {
29603                    result += 'godina';
29604                }
29605                return result;
29606        }
29607    }
29608
29609    var hr = moment.defineLocale('hr', {
29610        months: {
29611            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
29612                '_'
29613            ),
29614            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
29615                '_'
29616            ),
29617        },
29618        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
29619            '_'
29620        ),
29621        monthsParseExact: true,
29622        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
29623            '_'
29624        ),
29625        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
29626        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
29627        weekdaysParseExact: true,
29628        longDateFormat: {
29629            LT: 'H:mm',
29630            LTS: 'H:mm:ss',
29631            L: 'DD.MM.YYYY',
29632            LL: 'Do MMMM YYYY',
29633            LLL: 'Do MMMM YYYY H:mm',
29634            LLLL: 'dddd, Do MMMM YYYY H:mm',
29635        },
29636        calendar: {
29637            sameDay: '[danas u] LT',
29638            nextDay: '[sutra u] LT',
29639            nextWeek: function () {
29640                switch (this.day()) {
29641                    case 0:
29642                        return '[u] [nedjelju] [u] LT';
29643                    case 3:
29644                        return '[u] [srijedu] [u] LT';
29645                    case 6:
29646                        return '[u] [subotu] [u] LT';
29647                    case 1:
29648                    case 2:
29649                    case 4:
29650                    case 5:
29651                        return '[u] dddd [u] LT';
29652                }
29653            },
29654            lastDay: '[jučer u] LT',
29655            lastWeek: function () {
29656                switch (this.day()) {
29657                    case 0:
29658                        return '[prošlu] [nedjelju] [u] LT';
29659                    case 3:
29660                        return '[prošlu] [srijedu] [u] LT';
29661                    case 6:
29662                        return '[prošle] [subote] [u] LT';
29663                    case 1:
29664                    case 2:
29665                    case 4:
29666                    case 5:
29667                        return '[prošli] dddd [u] LT';
29668                }
29669            },
29670            sameElse: 'L',
29671        },
29672        relativeTime: {
29673            future: 'za %s',
29674            past: 'prije %s',
29675            s: 'par sekundi',
29676            ss: translate,
29677            m: translate,
29678            mm: translate,
29679            h: translate,
29680            hh: translate,
29681            d: 'dan',
29682            dd: translate,
29683            M: 'mjesec',
29684            MM: translate,
29685            y: 'godinu',
29686            yy: translate,
29687        },
29688        dayOfMonthOrdinalParse: /\d{1,2}\./,
29689        ordinal: '%d.',
29690        week: {
29691            dow: 1, // Monday is the first day of the week.
29692            doy: 7, // The week that contains Jan 7th is the first week of the year.
29693        },
29694    });
29695
29696    return hr;
29697
29698})));
29699
29700
29701/***/ }),
29702/* 63 */
29703/***/ (function(module, exports, __webpack_require__) {
29704
29705//! moment.js locale configuration
29706//! locale : Hungarian [hu]
29707//! author : Adam Brunner : https://github.com/adambrunner
29708//! author : Peter Viszt  : https://github.com/passatgt
29709
29710;(function (global, factory) {
29711    true ? factory(__webpack_require__(0)) :
29712   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29713   factory(global.moment)
29714}(this, (function (moment) { 'use strict';
29715
29716    //! moment.js locale configuration
29717
29718    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(
29719        ' '
29720    );
29721    function translate(number, withoutSuffix, key, isFuture) {
29722        var num = number;
29723        switch (key) {
29724            case 's':
29725                return isFuture || withoutSuffix
29726                    ? 'néhány másodperc'
29727                    : 'néhány másodperce';
29728            case 'ss':
29729                return num + (isFuture || withoutSuffix)
29730                    ? ' másodperc'
29731                    : ' másodperce';
29732            case 'm':
29733                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
29734            case 'mm':
29735                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
29736            case 'h':
29737                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
29738            case 'hh':
29739                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
29740            case 'd':
29741                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
29742            case 'dd':
29743                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
29744            case 'M':
29745                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
29746            case 'MM':
29747                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
29748            case 'y':
29749                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
29750            case 'yy':
29751                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
29752        }
29753        return '';
29754    }
29755    function week(isFuture) {
29756        return (
29757            (isFuture ? '' : '[múlt] ') +
29758            '[' +
29759            weekEndings[this.day()] +
29760            '] LT[-kor]'
29761        );
29762    }
29763
29764    var hu = moment.defineLocale('hu', {
29765        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
29766            '_'
29767        ),
29768        monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
29769            '_'
29770        ),
29771        monthsParseExact: true,
29772        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
29773        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
29774        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
29775        longDateFormat: {
29776            LT: 'H:mm',
29777            LTS: 'H:mm:ss',
29778            L: 'YYYY.MM.DD.',
29779            LL: 'YYYY. MMMM D.',
29780            LLL: 'YYYY. MMMM D. H:mm',
29781            LLLL: 'YYYY. MMMM D., dddd H:mm',
29782        },
29783        meridiemParse: /de|du/i,
29784        isPM: function (input) {
29785            return input.charAt(1).toLowerCase() === 'u';
29786        },
29787        meridiem: function (hours, minutes, isLower) {
29788            if (hours < 12) {
29789                return isLower === true ? 'de' : 'DE';
29790            } else {
29791                return isLower === true ? 'du' : 'DU';
29792            }
29793        },
29794        calendar: {
29795            sameDay: '[ma] LT[-kor]',
29796            nextDay: '[holnap] LT[-kor]',
29797            nextWeek: function () {
29798                return week.call(this, true);
29799            },
29800            lastDay: '[tegnap] LT[-kor]',
29801            lastWeek: function () {
29802                return week.call(this, false);
29803            },
29804            sameElse: 'L',
29805        },
29806        relativeTime: {
29807            future: '%s múlva',
29808            past: '%s',
29809            s: translate,
29810            ss: translate,
29811            m: translate,
29812            mm: translate,
29813            h: translate,
29814            hh: translate,
29815            d: translate,
29816            dd: translate,
29817            M: translate,
29818            MM: translate,
29819            y: translate,
29820            yy: translate,
29821        },
29822        dayOfMonthOrdinalParse: /\d{1,2}\./,
29823        ordinal: '%d.',
29824        week: {
29825            dow: 1, // Monday is the first day of the week.
29826            doy: 4, // The week that contains Jan 4th is the first week of the year.
29827        },
29828    });
29829
29830    return hu;
29831
29832})));
29833
29834
29835/***/ }),
29836/* 64 */
29837/***/ (function(module, exports, __webpack_require__) {
29838
29839//! moment.js locale configuration
29840//! locale : Armenian [hy-am]
29841//! author : Armendarabyan : https://github.com/armendarabyan
29842
29843;(function (global, factory) {
29844    true ? factory(__webpack_require__(0)) :
29845   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29846   factory(global.moment)
29847}(this, (function (moment) { 'use strict';
29848
29849    //! moment.js locale configuration
29850
29851    var hyAm = moment.defineLocale('hy-am', {
29852        months: {
29853            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
29854                '_'
29855            ),
29856            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
29857                '_'
29858            ),
29859        },
29860        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
29861        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
29862            '_'
29863        ),
29864        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
29865        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
29866        longDateFormat: {
29867            LT: 'HH:mm',
29868            LTS: 'HH:mm:ss',
29869            L: 'DD.MM.YYYY',
29870            LL: 'D MMMM YYYY Õ©.',
29871            LLL: 'D MMMM YYYY Õ©., HH:mm',
29872            LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm',
29873        },
29874        calendar: {
29875            sameDay: '[այսօր] LT',
29876            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
29877            lastDay: '[երեկ] LT',
29878            nextWeek: function () {
29879                return 'dddd [օրը ժամը] LT';
29880            },
29881            lastWeek: function () {
29882                return '[անցած] dddd [օրը ժամը] LT';
29883            },
29884            sameElse: 'L',
29885        },
29886        relativeTime: {
29887            future: '%s Õ°Õ¥Õ¿Õ¸',
29888            past: '%s Õ¡Õ¼Õ¡Õ»',
29889            s: 'մի քանի վայրկյան',
29890            ss: '%d վայրկյան',
29891            m: 'րոպե',
29892            mm: '%d րոպե',
29893            h: 'ÕªÕ¡Õ´',
29894            hh: '%d ÕªÕ¡Õ´',
29895            d: 'օր',
29896            dd: '%d օր',
29897            M: 'Õ¡Õ´Õ«Õ½',
29898            MM: '%d Õ¡Õ´Õ«Õ½',
29899            y: 'տարի',
29900            yy: '%d տարի',
29901        },
29902        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
29903        isPM: function (input) {
29904            return /^(ցերեկվա|երեկոյան)$/.test(input);
29905        },
29906        meridiem: function (hour) {
29907            if (hour < 4) {
29908                return 'գիշերվա';
29909            } else if (hour < 12) {
29910                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
29911            } else if (hour < 17) {
29912                return 'ցերեկվա';
29913            } else {
29914                return 'երեկոյան';
29915            }
29916        },
29917        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
29918        ordinal: function (number, period) {
29919            switch (period) {
29920                case 'DDD':
29921                case 'w':
29922                case 'W':
29923                case 'DDDo':
29924                    if (number === 1) {
29925                        return number + '-Õ«Õ¶';
29926                    }
29927                    return number + '-րդ';
29928                default:
29929                    return number;
29930            }
29931        },
29932        week: {
29933            dow: 1, // Monday is the first day of the week.
29934            doy: 7, // The week that contains Jan 7th is the first week of the year.
29935        },
29936    });
29937
29938    return hyAm;
29939
29940})));
29941
29942
29943/***/ }),
29944/* 65 */
29945/***/ (function(module, exports, __webpack_require__) {
29946
29947//! moment.js locale configuration
29948//! locale : Indonesian [id]
29949//! author : Mohammad Satrio Utomo : https://github.com/tyok
29950//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
29951
29952;(function (global, factory) {
29953    true ? factory(__webpack_require__(0)) :
29954   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29955   factory(global.moment)
29956}(this, (function (moment) { 'use strict';
29957
29958    //! moment.js locale configuration
29959
29960    var id = moment.defineLocale('id', {
29961        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
29962            '_'
29963        ),
29964        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
29965        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
29966        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
29967        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
29968        longDateFormat: {
29969            LT: 'HH.mm',
29970            LTS: 'HH.mm.ss',
29971            L: 'DD/MM/YYYY',
29972            LL: 'D MMMM YYYY',
29973            LLL: 'D MMMM YYYY [pukul] HH.mm',
29974            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
29975        },
29976        meridiemParse: /pagi|siang|sore|malam/,
29977        meridiemHour: function (hour, meridiem) {
29978            if (hour === 12) {
29979                hour = 0;
29980            }
29981            if (meridiem === 'pagi') {
29982                return hour;
29983            } else if (meridiem === 'siang') {
29984                return hour >= 11 ? hour : hour + 12;
29985            } else if (meridiem === 'sore' || meridiem === 'malam') {
29986                return hour + 12;
29987            }
29988        },
29989        meridiem: function (hours, minutes, isLower) {
29990            if (hours < 11) {
29991                return 'pagi';
29992            } else if (hours < 15) {
29993                return 'siang';
29994            } else if (hours < 19) {
29995                return 'sore';
29996            } else {
29997                return 'malam';
29998            }
29999        },
30000        calendar: {
30001            sameDay: '[Hari ini pukul] LT',
30002            nextDay: '[Besok pukul] LT',
30003            nextWeek: 'dddd [pukul] LT',
30004            lastDay: '[Kemarin pukul] LT',
30005            lastWeek: 'dddd [lalu pukul] LT',
30006            sameElse: 'L',
30007        },
30008        relativeTime: {
30009            future: 'dalam %s',
30010            past: '%s yang lalu',
30011            s: 'beberapa detik',
30012            ss: '%d detik',
30013            m: 'semenit',
30014            mm: '%d menit',
30015            h: 'sejam',
30016            hh: '%d jam',
30017            d: 'sehari',
30018            dd: '%d hari',
30019            M: 'sebulan',
30020            MM: '%d bulan',
30021            y: 'setahun',
30022            yy: '%d tahun',
30023        },
30024        week: {
30025            dow: 0, // Sunday is the first day of the week.
30026            doy: 6, // The week that contains Jan 6th is the first week of the year.
30027        },
30028    });
30029
30030    return id;
30031
30032})));
30033
30034
30035/***/ }),
30036/* 66 */
30037/***/ (function(module, exports, __webpack_require__) {
30038
30039//! moment.js locale configuration
30040//! locale : Icelandic [is]
30041//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
30042
30043;(function (global, factory) {
30044    true ? factory(__webpack_require__(0)) :
30045   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30046   factory(global.moment)
30047}(this, (function (moment) { 'use strict';
30048
30049    //! moment.js locale configuration
30050
30051    function plural(n) {
30052        if (n % 100 === 11) {
30053            return true;
30054        } else if (n % 10 === 1) {
30055            return false;
vendor: 4,823 bytes, lines 30056-30195
30056        }
30057        return true;
30058    }
30059    function translate(number, withoutSuffix, key, isFuture) {
30060        var result = number + ' ';
30061        switch (key) {
30062            case 's':
30063                return withoutSuffix || isFuture
30064                    ? 'nokkrar sekúndur'
30065                    : 'nokkrum sekúndum';
30066            case 'ss':
30067                if (plural(number)) {
30068                    return (
30069                        result +
30070                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
30071                    );
30072                }
30073                return result + 'sekúnda';
30074            case 'm':
30075                return withoutSuffix ? 'mínúta' : 'mínútu';
30076            case 'mm':
30077                if (plural(number)) {
30078                    return (
30079                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
30080                    );
30081                } else if (withoutSuffix) {
30082                    return result + 'mínúta';
30083                }
30084                return result + 'mínútu';
30085            case 'hh':
30086                if (plural(number)) {
30087                    return (
30088                        result +
30089                        (withoutSuffix || isFuture
30090                            ? 'klukkustundir'
30091                            : 'klukkustundum')
30092                    );
30093                }
30094                return result + 'klukkustund';
30095            case 'd':
30096                if (withoutSuffix) {
30097                    return 'dagur';
30098                }
30099                return isFuture ? 'dag' : 'degi';
30100            case 'dd':
30101                if (plural(number)) {
30102                    if (withoutSuffix) {
30103                        return result + 'dagar';
30104                    }
30105                    return result + (isFuture ? 'daga' : 'dögum');
30106                } else if (withoutSuffix) {
30107                    return result + 'dagur';
30108                }
30109                return result + (isFuture ? 'dag' : 'degi');
30110            case 'M':
30111                if (withoutSuffix) {
30112                    return 'mánuður';
30113                }
30114                return isFuture ? 'mánuð' : 'mánuði';
30115            case 'MM':
30116                if (plural(number)) {
30117                    if (withoutSuffix) {
30118                        return result + 'mánuðir';
30119                    }
30120                    return result + (isFuture ? 'mánuði' : 'mánuðum');
30121                } else if (withoutSuffix) {
30122                    return result + 'mánuður';
30123                }
30124                return result + (isFuture ? 'mánuð' : 'mánuði');
30125            case 'y':
30126                return withoutSuffix || isFuture ? 'ár' : 'ári';
30127            case 'yy':
30128                if (plural(number)) {
30129                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
30130                }
30131                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
30132        }
30133    }
30134
30135    var is = moment.defineLocale('is', {
30136        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
30137            '_'
30138        ),
30139        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
30140        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
30141            '_'
30142        ),
30143        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
30144        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
30145        longDateFormat: {
30146            LT: 'H:mm',
30147            LTS: 'H:mm:ss',
30148            L: 'DD.MM.YYYY',
30149            LL: 'D. MMMM YYYY',
30150            LLL: 'D. MMMM YYYY [kl.] H:mm',
30151            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
30152        },
30153        calendar: {
30154            sameDay: '[í dag kl.] LT',
30155            nextDay: '[á morgun kl.] LT',
30156            nextWeek: 'dddd [kl.] LT',
30157            lastDay: '[í gær kl.] LT',
30158            lastWeek: '[síðasta] dddd [kl.] LT',
30159            sameElse: 'L',
30160        },
30161        relativeTime: {
30162            future: 'eftir %s',
30163            past: 'fyrir %s síðan',
30164            s: translate,
30165            ss: translate,
30166            m: translate,
30167            mm: translate,
30168            h: 'klukkustund',
30169            hh: translate,
30170            d: translate,
30171            dd: translate,
30172            M: translate,
30173            MM: translate,
30174            y: translate,
30175            yy: translate,
30176        },
30177        dayOfMonthOrdinalParse: /\d{1,2}\./,
30178        ordinal: '%d.',
30179        week: {
30180            dow: 1, // Monday is the first day of the week.
30181            doy: 4, // The week that contains Jan 4th is the first week of the year.
30182        },
30183    });
30184
30185    return is;
30186
30187})));
30188
30189
30190/***/ }),
30191/* 67 */
30192/***/ (function(module, exports, __webpack_require__) {
30193
30194//! moment.js locale configuration
30195//! locale : Italian [it]
30196//! author : Lorenzo : https://github.com/aliem
30197//! author: Mattia Larentis: https://github.com/nostalgiaz
30198//! author: Marco : https://github.com/Manfre98
30199
30200;(function (global, factory) {
30201    true ? factory(__webpack_require__(0)) :
30202   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30203   factory(global.moment)
30204}(this, (function (moment) { 'use strict';
30205
30206    //! moment.js locale configuration
30207
30208    var it = moment.defineLocale('it', {
30209        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
30210            '_'
30211        ),
30212        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
30213        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
30214            '_'
30215        ),
30216        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
30217        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
30218        longDateFormat: {
30219            LT: 'HH:mm',
30220            LTS: 'HH:mm:ss',
30221            L: 'DD/MM/YYYY',
30222            LL: 'D MMMM YYYY',
30223            LLL: 'D MMMM YYYY HH:mm',
30224            LLLL: 'dddd D MMMM YYYY HH:mm',
30225        },
30226        calendar: {
30227            sameDay: function () {
30228                return (
30229                    '[Oggi a' +
30230                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30231                    ']LT'
30232                );
30233            },
30234            nextDay: function () {
30235                return (
30236                    '[Domani a' +
30237                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30238                    ']LT'
30239                );
30240            },
30241            nextWeek: function () {
30242                return (
30243                    'dddd [a' +
30244                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30245                    ']LT'
30246                );
30247            },
30248            lastDay: function () {
30249                return (
30250                    '[Ieri a' +
30251                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30252                    ']LT'
30253                );
30254            },
30255            lastWeek: function () {
30256                switch (this.day()) {
30257                    case 0:
30258                        return (
30259                            '[La scorsa] dddd [a' +
30260                            (this.hours() > 1
30261                                ? 'lle '
30262                                : this.hours() === 0
30263                                ? ' '
30264                                : "ll'") +
30265                            ']LT'
30266                        );
30267                    default:
30268                        return (
30269                            '[Lo scorso] dddd [a' +
30270                            (this.hours() > 1
30271                                ? 'lle '
30272                                : this.hours() === 0
30273                                ? ' '
30274                                : "ll'") +
30275                            ']LT'
30276                        );
30277                }
30278            },
30279            sameElse: 'L',
30280        },
30281        relativeTime: {
30282            future: 'tra %s',
30283            past: '%s fa',
30284            s: 'alcuni secondi',
30285            ss: '%d secondi',
30286            m: 'un minuto',
30287            mm: '%d minuti',
30288            h: "un'ora",
30289            hh: '%d ore',
30290            d: 'un giorno',
30291            dd: '%d giorni',
30292            w: 'una settimana',
30293            ww: '%d settimane',
30294            M: 'un mese',
30295            MM: '%d mesi',
30296            y: 'un anno',
30297            yy: '%d anni',
30298        },
30299        dayOfMonthOrdinalParse: /\d{1,2}º/,
30300        ordinal: '%dº',
30301        week: {
30302            dow: 1, // Monday is the first day of the week.
30303            doy: 4, // The week that contains Jan 4th is the first week of the year.
30304        },
30305    });
30306
30307    return it;
30308
30309})));
30310
30311
30312/***/ }),
30313/* 68 */
30314/***/ (function(module, exports, __webpack_require__) {
30315
30316//! moment.js locale configuration
30317//! locale : Italian (Switzerland) [it-ch]
30318//! author : xfh : https://github.com/xfh
30319
30320;(function (global, factory) {
30321    true ? factory(__webpack_require__(0)) :
30322   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30323   factory(global.moment)
30324}(this, (function (moment) { 'use strict';
30325
30326    //! moment.js locale configuration
30327
30328    var itCh = moment.defineLocale('it-ch', {
30329        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
30330            '_'
30331        ),
30332        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
30333        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
30334            '_'
30335        ),
30336        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
30337        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
30338        longDateFormat: {
30339            LT: 'HH:mm',
30340            LTS: 'HH:mm:ss',
30341            L: 'DD.MM.YYYY',
30342            LL: 'D MMMM YYYY',
30343            LLL: 'D MMMM YYYY HH:mm',
30344            LLLL: 'dddd D MMMM YYYY HH:mm',
30345        },
30346        calendar: {
30347            sameDay: '[Oggi alle] LT',
30348            nextDay: '[Domani alle] LT',
30349            nextWeek: 'dddd [alle] LT',
30350            lastDay: '[Ieri alle] LT',
30351            lastWeek: function () {
30352                switch (this.day()) {
30353                    case 0:
30354                        return '[la scorsa] dddd [alle] LT';
30355                    default:
30356                        return '[lo scorso] dddd [alle] LT';
30357                }
30358            },
30359            sameElse: 'L',
30360        },
30361        relativeTime: {
30362            future: function (s) {
30363                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
30364            },
30365            past: '%s fa',
30366            s: 'alcuni secondi',
30367            ss: '%d secondi',
30368            m: 'un minuto',
30369            mm: '%d minuti',
30370            h: "un'ora",
30371            hh: '%d ore',
30372            d: 'un giorno',
30373            dd: '%d giorni',
30374            M: 'un mese',
30375            MM: '%d mesi',
30376            y: 'un anno',
30377            yy: '%d anni',
30378        },
30379        dayOfMonthOrdinalParse: /\d{1,2}º/,
30380        ordinal: '%dº',
30381        week: {
30382            dow: 1, // Monday is the first day of the week.
30383            doy: 4, // The week that contains Jan 4th is the first week of the year.
30384        },
30385    });
30386
30387    return itCh;
30388
30389})));
30390
30391
30392/***/ }),
30393/* 69 */
30394/***/ (function(module, exports, __webpack_require__) {
30395
30396//! moment.js locale configuration
vendor: 4,468 bytes, lines 30397-30538
30397//! locale : Japanese [ja]
30398//! author : LI Long : https://github.com/baryon
30399
30400;(function (global, factory) {
30401    true ? factory(__webpack_require__(0)) :
30402   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30403   factory(global.moment)
30404}(this, (function (moment) { 'use strict';
30405
30406    //! moment.js locale configuration
30407
30408    var ja = moment.defineLocale('ja', {
30409        eras: [
30410            {
30411                since: '2019-05-01',
30412                offset: 1,
30413                name: '令和',
30414                narrow: '㋿',
30415                abbr: 'R',
30416            },
30417            {
30418                since: '1989-01-08',
30419                until: '2019-04-30',
30420                offset: 1,
30421                name: '平成',
30422                narrow: '㍻',
30423                abbr: 'H',
30424            },
30425            {
30426                since: '1926-12-25',
30427                until: '1989-01-07',
30428                offset: 1,
30429                name: '昭和',
30430                narrow: '㍼',
30431                abbr: 'S',
30432            },
30433            {
30434                since: '1912-07-30',
30435                until: '1926-12-24',
30436                offset: 1,
30437                name: '大正',
30438                narrow: '㍽',
30439                abbr: 'T',
30440            },
30441            {
30442                since: '1873-01-01',
30443                until: '1912-07-29',
30444                offset: 6,
30445                name: '明治',
30446                narrow: '㍾',
30447                abbr: 'M',
30448            },
30449            {
30450                since: '0001-01-01',
30451                until: '1873-12-31',
30452                offset: 1,
30453                name: '西暦',
30454                narrow: 'AD',
30455                abbr: 'AD',
30456            },
30457            {
30458                since: '0000-12-31',
30459                until: -Infinity,
30460                offset: 1,
30461                name: '紀元前',
30462                narrow: 'BC',
30463                abbr: 'BC',
30464            },
30465        ],
30466        eraYearOrdinalRegex: /(元|\d+)年/,
30467        eraYearOrdinalParse: function (input, match) {
30468            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
30469        },
30470        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
30471        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
30472            '_'
30473        ),
30474        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
30475        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
30476        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
30477        longDateFormat: {
30478            LT: 'HH:mm',
30479            LTS: 'HH:mm:ss',
30480            L: 'YYYY/MM/DD',
30481            LL: 'YYYY年M月D日',
30482            LLL: 'YYYY年M月D日 HH:mm',
30483            LLLL: 'YYYY年M月D日 dddd HH:mm',
30484            l: 'YYYY/MM/DD',
30485            ll: 'YYYY年M月D日',
30486            lll: 'YYYY年M月D日 HH:mm',
30487            llll: 'YYYY年M月D日(ddd) HH:mm',
30488        },
30489        meridiemParse: /午前|午後/i,
30490        isPM: function (input) {
30491            return input === '午後';
30492        },
30493        meridiem: function (hour, minute, isLower) {
30494            if (hour < 12) {
30495                return '午前';
30496            } else {
30497                return '午後';
30498            }
30499        },
30500        calendar: {
30501            sameDay: '[今日] LT',
30502            nextDay: '[明日] LT',
30503            nextWeek: function (now) {
30504                if (now.week() !== this.week()) {
30505                    return '[来週]dddd LT';
30506                } else {
30507                    return 'dddd LT';
30508                }
30509            },
30510            lastDay: '[昨日] LT',
30511            lastWeek: function (now) {
30512                if (this.week() !== now.week()) {
30513                    return '[先週]dddd LT';
30514                } else {
30515                    return 'dddd LT';
30516                }
30517            },
30518            sameElse: 'L',
30519        },
30520        dayOfMonthOrdinalParse: /\d{1,2}日/,
30521        ordinal: function (number, period) {
30522            switch (period) {
30523                case 'y':
30524                    return number === 1 ? '元年' : number + '年';
30525                case 'd':
30526                case 'D':
30527                case 'DDD':
30528                    return number + '日';
30529                default:
30530                    return number;
30531            }
30532        },
30533        relativeTime: {
30534            future: '%s後',
30535            past: '%s前',
30536            s: '数秒',
30537            ss: '%d秒',
30538            m: '1分',
30539            mm: '%d分',
30540            h: '1時間',
30541            hh: '%d時間',
30542            d: '1日',
30543            dd: '%d日',
30544            M: '1ヶ月',
30545            MM: '%dヶ月',
30546            y: '1å¹´',
30547            yy: '%då¹´',
30548        },
30549    });
30550
30551    return ja;
30552
30553})));
30554
30555
30556/***/ }),
30557/* 70 */
30558/***/ (function(module, exports, __webpack_require__) {
30559
30560//! moment.js locale configuration
30561//! locale : Javanese [jv]
30562//! author : Rony Lantip : https://github.com/lantip
30563//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
30564
30565;(function (global, factory) {
30566    true ? factory(__webpack_require__(0)) :
30567   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30568   factory(global.moment)
30569}(this, (function (moment) { 'use strict';
30570
30571    //! moment.js locale configuration
30572
30573    var jv = moment.defineLocale('jv', {
30574        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
30575            '_'
30576        ),
30577        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
30578        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
30579        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
30580        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
30581        longDateFormat: {
30582            LT: 'HH.mm',
30583            LTS: 'HH.mm.ss',
30584            L: 'DD/MM/YYYY',
30585            LL: 'D MMMM YYYY',
30586            LLL: 'D MMMM YYYY [pukul] HH.mm',
30587            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
30588        },
30589        meridiemParse: /enjing|siyang|sonten|ndalu/,
30590        meridiemHour: function (hour, meridiem) {
30591            if (hour === 12) {
30592                hour = 0;
30593            }
30594            if (meridiem === 'enjing') {
30595                return hour;
30596            } else if (meridiem === 'siyang') {
30597                return hour >= 11 ? hour : hour + 12;
30598            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
30599                return hour + 12;
30600            }
30601        },
30602        meridiem: function (hours, minutes, isLower) {
30603            if (hours < 11) {
30604                return 'enjing';
30605            } else if (hours < 15) {
30606                return 'siyang';
30607            } else if (hours < 19) {
30608                return 'sonten';
30609            } else {
30610                return 'ndalu';
30611            }
30612        },
30613        calendar: {
30614            sameDay: '[Dinten puniko pukul] LT',
30615            nextDay: '[Mbenjang pukul] LT',
30616            nextWeek: 'dddd [pukul] LT',
30617            lastDay: '[Kala wingi pukul] LT',
30618            lastWeek: 'dddd [kepengker pukul] LT',
30619            sameElse: 'L',
30620        },
30621        relativeTime: {
30622            future: 'wonten ing %s',
30623            past: '%s ingkang kepengker',
30624            s: 'sawetawis detik',
30625            ss: '%d detik',
30626            m: 'setunggal menit',
30627            mm: '%d menit',
30628            h: 'setunggal jam',
30629            hh: '%d jam',
30630            d: 'sedinten',
30631            dd: '%d dinten',
30632            M: 'sewulan',
30633            MM: '%d wulan',
30634            y: 'setaun',
30635            yy: '%d taun',
30636        },
30637        week: {
30638            dow: 1, // Monday is the first day of the week.
30639            doy: 7, // The week that contains Jan 7th is the first week of the year.
30640        },
30641    });
30642
30643    return jv;
30644
30645})));
30646
30647
30648/***/ }),
30649/* 71 */
30650/***/ (function(module, exports, __webpack_require__) {
30651
30652//! moment.js locale configuration
30653//! locale : Georgian [ka]
30654//! author : Irakli Janiashvili : https://github.com/IrakliJani
30655
30656;(function (global, factory) {
30657    true ? factory(__webpack_require__(0)) :
30658   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30659   factory(global.moment)
30660}(this, (function (moment) { 'use strict';
30661
30662    //! moment.js locale configuration
30663
30664    var ka = moment.defineLocale('ka', {
30665        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
30666            '_'
30667        ),
30668        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
30669        weekdays: {
30670            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.
30670split(
30671                '_'
30672            ),
30673            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
30674                '_'
30675            ),
30676            isFormat: /(წინა|შემდეგ)/,
30677        },
30678        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
30679        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
30680        longDateFormat: {
30681            LT: 'HH:mm',
30682            LTS: 'HH:mm:ss',
30683            L: 'DD/MM/YYYY',
30684            LL: 'D MMMM YYYY',
30685            LLL: 'D MMMM YYYY HH:mm',
30686            LLLL: 'dddd, D MMMM YYYY HH:mm',
30687        },
30688        calendar: {
30689            sameDay: '[დღეს] LT[-ზე]',
30690            nextDay: '[ხვალ] LT[-ზე]',
30691            lastDay: '[გუშინ] LT[-ზე]',
30692            nextWeek: '[შემდეგ] dddd LT[-ზე]',
30693            lastWeek: '[წინა] dddd LT-ზე',
30694            sameElse: 'L',
30695        },
30696        relativeTime: {
30697            future: function (s) {
30698                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (
30699                    $0,
30700                    $1,
30701                    $2
30702                ) {
30703                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
30704                });
30705            },
30706            past: function (s) {
30707                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
30708                    return s.replace(/(ი|ე)$/, 'ის წინ');
30709                }
30710                if (/წელი/.test(s)) {
30711                    return s.replace(/წელი$/, 'წლის წინ');
30712                }
30713                return s;
30714            },
30715            s: 'რამდენიმე წამი',
30716            ss: '%d წამი',
30717            m: 'წუთი',
30718            mm: '%d წუთი',
30719            h: 'საათი',
30720            hh: '%d საათი',
30721            d: 'დღე',
30722            dd: '%d დღე',
30723            M: 'თვე',
30724            MM: '%d თვე',
30725            y: 'წელი',
30726            yy: '%d წელი',
30727        },
30728        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
30729        ordinal: function (number) {
30730            if (number === 0) {
30731                return number;
30732            }
30733            if (number === 1) {
30734                return number + '-ლი';
30735            }
30736            if (
30737                number < 20 ||
30738                (number <= 100 && number % 20 === 0) ||
30739                number % 100 === 0
30740            ) {
30741                return 'მე-' + number;
30742            }
30743            return number + '-ე';
30744        },
30745        week: {
30746            dow: 1,
30747            doy: 7,
30748        },
30749    });
30750
30751    return ka;
30752
30753})));
30754
30755
30756/***/ }),
30757/* 72 */
30758/***/ (function(module, exports, __webpack_require__) {
30759
30760//! moment.js locale configuration
30761//! locale : Kazakh [kk]
30762//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
30763
30764;(function (global, factory) {
30765    true ? factory(__webpack_require__(0)) :
30766   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30767   factory(global.moment)
30768}(this, (function (moment) { 'use strict';
30769
30770    //! moment.js locale configuration
30771
30772    var suffixes = {
30773        0: '-ші',
30774        1: '-ші',
30775        2: '-ші',
30776        3: '-ші',
30777        4: '-ші',
30778        5: '-ші',
30779        6: '-шы',
30780        7: '-ші',
30781        8: '-ші',
30782        9: '-шы',
30783        10: '-шы',
30784        20: '-шы',
30785        30: '-шы',
30786        40: '-шы',
30787        50: '-ші',
30788        60: '-шы',
30789        70: '-ші',
30790        80: '-ші',
30791        90: '-шы',
30792        100: '-ші',
30793    };
30794
30795    var kk = moment.defineLocale('kk', {
30796        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
30797            '_'
30798        ),
30799        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
30800        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
30801            '_'
30802        ),
30803        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
30804        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
30805        longDateFormat: {
30806            LT: 'HH:mm',
30807            LTS: 'HH:mm:ss',
30808            L: 'DD.MM.YYYY',
30809            LL: 'D MMMM YYYY',
30810            LLL: 'D MMMM YYYY HH:mm',
30811            LLLL: 'dddd, D MMMM YYYY HH:mm',
30812        },
30813        calendar: {
30814            sameDay: '[Бүгін сағат] LT',
30815            nextDay: '[Ертең сағат] LT',
30816            nextWeek: 'dddd [сағат] LT',
30817            lastDay: '[Кеше сағат] LT',
30818            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
30819            sameElse: 'L',
30820        },
30821        relativeTime: {
30822            future: '%s ішінде',
30823            past: '%s бұрын',
30824            s: 'бірнеше секунд',
30825            ss: '%d секунд',
30826            m: 'бір минут',
30827            mm: '%d минут',
30828            h: 'бір сағат',
30829            hh: '%d сағат',
30830            d: 'бір күн',
30831            dd: '%d күн',
30832            M: 'бір ай',
30833            MM: '%d ай',
30834            y: 'бір жыл',
30835            yy: '%d жыл',
30836        },
30837        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
30838        ordinal: function (number) {
30839            var a = number % 10,
30840                b = number >= 100 ? 100 : null;
30841            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
30842        },
30843        week: {
30844            dow: 1, // Monday is the first day of the week.
30845            doy: 7, // The week that contains Jan 7th is the first week of the year.
30846        },
30847    });
30848
30849    return kk;
30850
30851})));
30852
30853
30854/***/ }),
30855/* 73 */
30856/***/ (function(module, exports, __webpack_require__) {
30857
30858//! moment.js locale configuration
30859//! locale : Cambodian [km]
30860//! author : Kruy Vanna : https://github.com/kruyvanna
30861
30862;(function (global, factory) {
30863    true ? factory(__webpack_require__(0)) :
30864   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30865   factory(global.moment)
30866}(this, (function (moment) { 'use strict';
30867
30868    //! moment.js locale configuration
30869
30870    var symbolMap = {
30871            1: '១',
30872            2: '២',
30873            3: '៣',
30874            4: '៤',
30875            5: '៥',
30876            6: '៦',
30877            7: '៧',
30878            8: '៨',
30879            9: '៩',
30880            0: '០',
30881        },
30882        numberMap = {
30883            '១': '1',
30884            '២': '2',
30885            '៣': '3',
30886            '៤': '4',
30887            '៥': '5',
30888            '៦': '6',
30889            '៧': '7',
30890            '៨': '8',
30891            '៩': '9',
30892            '០': '0',
30893        };
30894
30895    var km = moment.defineLocale('km', {
30896        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
30897            '_'
30898        ),
30899        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
30900            '_'
30901        ),
30902        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
30903        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
30904        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
30905        weekdaysParseExact: true,
30906        longDateFormat: {
30907            LT: 'HH:mm',
30908            LTS: 'HH:mm:ss',
30909            L: 'DD/MM/YYYY',
30910            LL: 'D MMMM YYYY',
30911            LLL: 'D MMMM YYYY HH:mm',
30912            LLLL: 'dddd, D MMMM YYYY HH:mm',
30913        },
30914        meridiemParse: /ព្រឹក|ល្ងាច/,
30915        isPM: function (input) {
30916            return input === 'ល្ងាច';
30917        },
30918        meridiem: function (hour, minute, isLower) {
30919            if (hour < 12) {
vendor: 20,729 bytes, lines 30920-31547
30920                return 'ព្រឹក';
30921            } else {
30922                return 'ល្ងាច';
30923            }
30924        },
30925        calendar: {
30926            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
30927            nextDay: '[ស្អែក ម៉ោង] LT',
30928            nextWeek: 'dddd [ម៉ោង] LT',
30929            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
30930            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
30931            sameElse: 'L',
30932        },
30933        relativeTime: {
30934            future: '%sទៀត',
30935            past: '%sមុន',
30936            s: 'ប៉ុន្មានវិនាទី',
30937            ss: '%d វិនាទី',
30938            m: 'មួយនាទី',
30939            mm: '%d នាទី',
30940            h: 'មួយម៉ោង',
30941            hh: '%d ម៉ោង',
30942            d: 'មួយថ្ងៃ',
30943            dd: '%d ថ្ងៃ',
30944            M: 'មួយខែ',
30945            MM: '%d ខែ',
30946            y: 'មួយឆ្នាំ',
30947            yy: '%d ឆ្នាំ',
30948        },
30949        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
30950        ordinal: 'ទី%d',
30951        preparse: function (string) {
30952            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
30953                return numberMap[match];
30954            });
30955        },
30956        postformat: function (string) {
30957            return string.replace(/\d/g, function (match) {
30958                return symbolMap[match];
30959            });
30960        },
30961        week: {
30962            dow: 1, // Monday is the first day of the week.
30963            doy: 4, // The week that contains Jan 4th is the first week of the year.
30964        },
30965    });
30966
30967    return km;
30968
30969})));
30970
30971
30972/***/ }),
30973/* 74 */
30974/***/ (function(module, exports, __webpack_require__) {
30975
30976//! moment.js locale configuration
30977//! locale : Kannada [kn]
30978//! author : Rajeev Naik : https://github.com/rajeevnaikte
30979
30980;(function (global, factory) {
30981    true ? factory(__webpack_require__(0)) :
30982   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30983   factory(global.moment)
30984}(this, (function (moment) { 'use strict';
30985
30986    //! moment.js locale configuration
30987
30988    var symbolMap = {
30989            1: 'à³§',
30990            2: '೨',
30991            3: '೩',
30992            4: '೪',
30993            5: '೫',
30994            6: '೬',
30995            7: 'à³­',
30996            8: 'à³®',
30997            9: '೯',
30998            0: '೦',
30999        },
31000        numberMap = {
31001            'à³§': '1',
31002            '೨': '2',
31003            '೩': '3',
31004            '೪': '4',
31005            '೫': '5',
31006            '೬': '6',
31007            'à³­': '7',
31008            'à³®': '8',
31009            '೯': '9',
31010            '೦': '0',
31011        };
31012
31013    var kn = moment.defineLocale('kn', {
31014        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
31015            '_'
31016        ),
31017        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
31018            '_'
31019        ),
31020        monthsParseExact: true,
31021        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
31022            '_'
31023        ),
31024        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
31025        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
31026        longDateFormat: {
31027            LT: 'A h:mm',
31028            LTS: 'A h:mm:ss',
31029            L: 'DD/MM/YYYY',
31030            LL: 'D MMMM YYYY',
31031            LLL: 'D MMMM YYYY, A h:mm',
31032            LLLL: 'dddd, D MMMM YYYY, A h:mm',
31033        },
31034        calendar: {
31035            sameDay: '[ಇಂದು] LT',
31036            nextDay: '[ನಾಳೆ] LT',
31037            nextWeek: 'dddd, LT',
31038            lastDay: '[ನಿನ್ನೆ] LT',
31039            lastWeek: '[ಕೊನೆಯ] dddd, LT',
31040            sameElse: 'L',
31041        },
31042        relativeTime: {
31043            future: '%s ನಂತರ',
31044            past: '%s ಹಿಂದೆ',
31045            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
31046            ss: '%d ಸೆಕೆಂಡುಗಳು',
31047            m: 'ಒಂದು ನಿಮಿಷ',
31048            mm: '%d ನಿಮಿಷ',
31049            h: 'ಒಂದು ಗಂಟೆ',
31050            hh: '%d ಗಂಟೆ',
31051            d: 'ಒಂದು ದಿನ',
31052            dd: '%d ದಿನ',
31053            M: 'ಒಂದು ತಿಂಗಳು',
31054            MM: '%d ತಿಂಗಳು',
31055            y: 'ಒಂದು ವರ್ಷ',
31056            yy: '%d ವರ್ಷ',
31057        },
31058        preparse: function (string) {
31059            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
31060                return numberMap[match];
31061            });
31062        },
31063        postformat: function (string) {
31064            return string.replace(/\d/g, function (match) {
31065                return symbolMap[match];
31066            });
31067        },
31068        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
31069        meridiemHour: function (hour, meridiem) {
31070            if (hour === 12) {
31071                hour = 0;
31072            }
31073            if (meridiem === 'ರಾತ್ರಿ') {
31074                return hour < 4 ? hour : hour + 12;
31075            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
31076                return hour;
31077            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
31078                return hour >= 10 ? hour : hour + 12;
31079            } else if (meridiem === 'ಸಂಜೆ') {
31080                return hour + 12;
31081            }
31082        },
31083        meridiem: function (hour, minute, isLower) {
31084            if (hour < 4) {
31085                return 'ರಾತ್ರಿ';
31086            } else if (hour < 10) {
31087                return 'ಬೆಳಿಗ್ಗೆ';
31088            } else if (hour < 17) {
31089                return 'ಮಧ್ಯಾಹ್ನ';
31090            } else if (hour < 20) {
31091                return 'ಸಂಜೆ';
31092            } else {
31093                return 'ರಾತ್ರಿ';
31094            }
31095        },
31096        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
31097        ordinal: function (number) {
31098            return number + 'ನೇ';
31099        },
31100        week: {
31101            dow: 0, // Sunday is the first day of the week.
31102            doy: 6, // The week that contains Jan 6th is the first week of the year.
31103        },
31104    });
31105
31106    return kn;
31107
31108})));
31109
31110
31111/***/ }),
31112/* 75 */
31113/***/ (function(module, exports, __webpack_require__) {
31114
31115//! moment.js locale configuration
31116//! locale : Korean [ko]
31117//! author : Kyungwook, Park : https://github.com/kyungw00k
31118//! author : Jeeeyul Lee <[email protected]>
31119
31120;(function (global, factory) {
31121    true ? factory(__webpack_require__(0)) :
31122   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31123   factory(global.moment)
31124}(this, (function (moment) { 'use strict';
31125
31126    //! moment.js locale configuration
31127
31128    var ko = moment.defineLocale('ko', {
31129        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
31130        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
31131            '_'
31132        ),
31133        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
31134        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
31135        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
31136        longDateFormat: {
31137            LT: 'A h:mm',
31138            LTS: 'A h:mm:ss',
31139            L: 'YYYY.MM.DD.',
31140            LL: 'YYYY년 MMMM D일',
31141            LLL: 'YYYY년 MMMM D일 A h:mm',
31142            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
31143            l: 'YYYY.MM.DD.',
31144            ll: 'YYYY년 MMMM D일',
31145            lll: 'YYYY년 MMMM D일 A h:mm',
31146            llll: 'YYYY년 MMMM D일 dddd A h:mm',
31147        },
31148        calendar: {
31149            sameDay: '오늘 LT',
31150            nextDay: '내일 LT',
31151            nextWeek: 'dddd LT',
31152            lastDay: '어제 LT',
31153            lastWeek: '지난주 dddd LT',
31154            sameElse: 'L',
31155        },
31156        relativeTime: {
31157            future: '%s 후',
31158            past: '%s 전',
31159            s: '몇 초',
31160            ss: '%d초',
31161            m: '1분',
31162            mm: '%d분',
31163            h: '한 시간',
31164            hh: '%d시간',
31165            d: '하루',
31166            dd: '%d일',
31167            M: '한 달',
31168            MM: '%d달',
31169            y: '일 년',
31170            yy: '%d년',
31171        },
31172        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
31173        ordinal: function (number, period) {
31174            switch (period) {
31175                case 'd':
31176                case 'D':
31177                case 'DDD':
31178                    return number + '일';
31179                case 'M':
31180                    return number + '월';
31181                case 'w':
31182                case 'W':
31183                    return number + '주';
31184                default:
31185                    return number;
31186            }
31187        },
31188        meridiemParse: /오전|오후/,
31189        isPM: function (token) {
31190            return token === '오후';
31191        },
31192        meridiem: function (hour, minute, isUpper) {
31193            return hour < 12 ? '오전' : '오후';
31194        },
31195    });
31196
31197    return ko;
31198
31199})));
31200
31201
31202/***/ }),
31203/* 76 */
31204/***/ (function(module, exports, __webpack_require__) {
31205
31206//! moment.js locale configuration
31207//! locale : Kurdish [ku]
31208//! author : Shahram Mebashar : https://github.com/ShahramMebashar
31209
31210;(function (global, factory) {
31211    true ? factory(__webpack_require__(0)) :
31212   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31213   factory(global.moment)
31214}(this, (function (moment) { 'use strict';
31215
31216    //! moment.js locale configuration
31217
31218    var symbolMap = {
31219            1: 'Ù¡',
31220            2: 'Ù¢',
31221            3: 'Ù£',
31222            4: 'Ù¤',
31223            5: 'Ù¥',
31224            6: 'Ù¦',
31225            7: 'Ù§',
31226            8: 'Ù¨',
31227            9: 'Ù©',
31228            0: 'Ù ',
31229        },
31230        numberMap = {
31231            'Ù¡': '1',
31232            'Ù¢': '2',
31233            'Ù£': '3',
31234            'Ù¤': '4',
31235            'Ù¥': '5',
31236            'Ù¦': '6',
31237            'Ù§': '7',
31238            'Ù¨': '8',
31239            'Ù©': '9',
31240            'Ù ': '0',
31241        },
31242        months = [
31243            'کانونی دووەم',
31244            'شوبات',
31245            'ئازار',
31246            'نیسان',
31247            'ئایار',
31248            'حوزەیران',
31249            'تەمموز',
31250            'ئاب',
31251            'ئەیلوول',
31252            'تشرینی یەكەم',
31253            'تشرینی دووەم',
31254            'كانونی یەکەم',
31255        ];
31256
31257    var ku = moment.defineLocale('ku', {
31258        months: months,
31259        monthsShort: months,
31260        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
31261            '_'
31262        ),
31263        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(
31264            '_'
31265        ),
31266        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
31267        weekdaysParseExact: true,
31268        longDateFormat: {
31269            LT: 'HH:mm',
31270            LTS: 'HH:mm:ss',
31271            L: 'DD/MM/YYYY',
31272            LL: 'D MMMM YYYY',
31273            LLL: 'D MMMM YYYY HH:mm',
31274            LLLL: 'dddd, D MMMM YYYY HH:mm',
31275        },
31276        meridiemParse: /ئێواره‌|به‌یانی/,
31277        isPM: function (input) {
31278            return /ئێواره‌/.test(input);
31279        },
31280        meridiem: function (hour, minute, isLower) {
31281            if (hour < 12) {
31282                return 'به‌یانی';
31283            } else {
31284                return 'ئێواره‌';
31285            }
31286        },
31287        calendar: {
31288            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
31289            nextDay: '[به‌یانی كاتژمێر] LT',
31290            nextWeek: 'dddd [كاتژمێر] LT',
31291            lastDay: '[دوێنێ كاتژمێر] LT',
31292            lastWeek: 'dddd [كاتژمێر] LT',
31293            sameElse: 'L',
31294        },
31295        relativeTime: {
31296            future: 'له‌ %s',
31297            past: '%s',
31298            s: 'چه‌ند چركه‌یه‌ك',
31299            ss: 'چركه‌ %d',
31300            m: 'یه‌ك خوله‌ك',
31301            mm: '%d خوله‌ك',
31302            h: 'یه‌ك كاتژمێر',
31303            hh: '%d كاتژمێر',
31304            d: 'یه‌ك ڕۆژ',
31305            dd: '%d ڕۆژ',
31306            M: 'یه‌ك مانگ',
31307            MM: '%d مانگ',
31308            y: 'یه‌ك ساڵ',
31309            yy: '%d ساڵ',
31310        },
31311        preparse: function (string) {
31312            return string
31313                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
31314                    return numberMap[match];
31315                })
31316                .replace(/،/g, ',');
31317        },
31318        postformat: function (string) {
31319            return string
31320                .replace(/\d/g, function (match) {
31321                    return symbolMap[match];
31322                })
31323                .replace(/,/g, '،');
31324        },
31325        week: {
31326            dow: 6, // Saturday is the first day of the week.
31327            doy: 12, // The week that contains Jan 12th is the first week of the year.
31328        },
31329    });
31330
31331    return ku;
31332
31333})));
31334
31335
31336/***/ }),
31337/* 77 */
31338/***/ (function(module, exports, __webpack_require__) {
31339
31340//! moment.js locale configuration
31341//! locale : Kyrgyz [ky]
31342//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
31343
31344;(function (global, factory) {
31345    true ? factory(__webpack_require__(0)) :
31346   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31347   factory(global.moment)
31348}(this, (function (moment) { 'use strict';
31349
31350    //! moment.js locale configuration
31351
31352    var suffixes = {
31353        0: '-чү',
31354        1: '-чи',
31355        2: '-чи',
31356        3: '-чү',
31357        4: '-чү',
31358        5: '-чи',
31359        6: '-чы',
31360        7: '-чи',
31361        8: '-чи',
31362        9: '-чу',
31363        10: '-чу',
31364        20: '-чы',
31365        30: '-чу',
31366        40: '-чы',
31367        50: '-чү',
31368        60: '-чы',
31369        70: '-чи',
31370        80: '-чи',
31371        90: '-чу',
31372        100: '-чү',
31373    };
31374
31375    var ky = moment.defineLocale('ky', {
31376        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
31377            '_'
31378        ),
31379        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
31380            '_'
31381        ),
31382        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
31383            '_'
31384        ),
31385        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
31386        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
31387        longDateFormat: {
31388            LT: 'HH:mm',
31389            LTS: 'HH:mm:ss',
31390            L: 'DD.MM.YYYY',
31391            LL: 'D MMMM YYYY',
31392            LLL: 'D MMMM YYYY HH:mm',
31393            LLLL: 'dddd, D MMMM YYYY HH:mm',
31394        },
31395        calendar: {
31396            sameDay: '[Бүгүн саат] LT',
31397            nextDay: '[Эртең саат] LT',
31398            nextWeek: 'dddd [саат] LT',
31399            lastDay: '[Кечээ саат] LT',
31400            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
31401            sameElse: 'L',
31402        },
31403        relativeTime: {
31404            future: '%s ичинде',
31405            past: '%s мурун',
31406            s: 'бирнече секунд',
31407            ss: '%d секунд',
31408            m: 'бир мүнөт',
31409            mm: '%d мүнөт',
31410            h: 'бир саат',
31411            hh: '%d саат',
31412            d: 'бир күн',
31413            dd: '%d күн',
31414            M: 'бир ай',
31415            MM: '%d ай',
31416            y: 'бир жыл',
31417            yy: '%d жыл',
31418        },
31419        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
31420        ordinal: function (number) {
31421            var a = number % 10,
31422                b = number >= 100 ? 100 : null;
31423            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
31424        },
31425        week: {
31426            dow: 1, // Monday is the first day of the week.
31427            doy: 7, // The week that contains Jan 7th is the first week of the year.
31428        },
31429    });
31430
31431    return ky;
31432
31433})));
31434
31435
31436/***/ }),
31437/* 78 */
31438/***/ (function(module, exports, __webpack_require__) {
31439
31440//! moment.js locale configuration
31441//! locale : Luxembourgish [lb]
31442//! author : mweimerskirch : https://github.com/mweimerskirch
31443//! author : David Raison : https://github.com/kwisatz
31444
31445;(function (global, factory) {
31446    true ? factory(__webpack_require__(0)) :
31447   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31448   factory(global.moment)
31449}(this, (function (moment) { 'use strict';
31450
31451    //! moment.js locale configuration
31452
31453    function processRelativeTime(number, withoutSuffix, key, isFuture) {
31454        var format = {
31455            m: ['eng Minutt', 'enger Minutt'],
31456            h: ['eng Stonn', 'enger Stonn'],
31457            d: ['een Dag', 'engem Dag'],
31458            M: ['ee Mount', 'engem Mount'],
31459            y: ['ee Joer', 'engem Joer'],
31460        };
31461        return withoutSuffix ? format[key][0] : format[key][1];
31462    }
31463    function processFutureTime(string) {
31464        var number = string.substr(0, string.indexOf(' '));
31465        if (eifelerRegelAppliesToNumber(number)) {
31466            return 'a ' + string;
31467        }
31468        return 'an ' + string;
31469    }
31470    function processPastTime(string) {
31471        var number = string.substr(0, string.indexOf(' '));
31472        if (eifelerRegelAppliesToNumber(number)) {
31473            return 'viru ' + string;
31474        }
31475        return 'virun ' + string;
31476    }
31477    /**
31478     * Returns true if the word before the given number loses the '-n' ending.
31479     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
31480     *
31481     * @param number {integer}
31482     * @returns {boolean}
31483     */
31484    function eifelerRegelAppliesToNumber(number) {
31485        number = parseInt(number, 10);
31486        if (isNaN(number)) {
31487            return false;
31488        }
31489        if (number < 0) {
31490            // Negative Number --> always true
31491            return true;
31492        } else if (number < 10) {
31493            // Only 1 digit
31494            if (4 <= number && number <= 7) {
31495                return true;
31496            }
31497            return false;
31498        } else if (number < 100) {
31499            // 2 digits
31500            var lastDigit = number % 10,
31501                firstDigit = number / 10;
31502            if (lastDigit === 0) {
31503                return eifelerRegelAppliesToNumber(firstDigit);
31504            }
31505            return eifelerRegelAppliesToNumber(lastDigit);
31506        } else if (number < 10000) {
31507            // 3 or 4 digits --> recursively check first digit
31508            while (number >= 10) {
31509                number = number / 10;
31510            }
31511            return eifelerRegelAppliesToNumber(number);
31512        } else {
31513            // Anything larger than 4 digits: recursively check first n-3 digits
31514            number = number / 1000;
31515            return eifelerRegelAppliesToNumber(number);
31516        }
31517    }
31518
31519    var lb = moment.defineLocale('lb', {
31520        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
31521            '_'
31522        ),
31523        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
31524            '_'
31525        ),
31526        monthsParseExact: true,
31527        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
31528            '_'
31529        ),
31530        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
31531        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
31532        weekdaysParseExact: true,
31533        longDateFormat: {
31534            LT: 'H:mm [Auer]',
31535            LTS: 'H:mm:ss [Auer]',
31536            L: 'DD.MM.YYYY',
31537            LL: 'D. MMMM YYYY',
31538            LLL: 'D. MMMM YYYY H:mm [Auer]',
31539            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
31540        },
31541        calendar: {
31542            sameDay: '[Haut um] LT',
31543            sameElse: 'L',
31544            nextDay: '[Muer um] LT',
31545            nextWeek: 'dddd [um] LT',
31546            lastDay: '[Gëschter um] LT',
31547            lastWeek: function () {
31548                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
31549                switch (this.day()) {
31550                    case 2:
31551                    case 4:
31552                        return '[Leschten] dddd [um] LT';
31553                    default:
31554                        return '[Leschte] dddd [um] LT';
31555                }
31556            },
31557        },
31558        relativeTime: {
31559            future: processFutureTime,
31560            past: processPastTime,
31561            s: 'e puer Sekonnen',
31562            ss: '%d Sekonnen',
31563            m: processRelativeTime,
31564            mm: '%d Minutten',
31565            h: processRelativeTime,
31566            hh: '%d Stonnen',
31567            d: processRelativeTime,
31568            dd: '%d Deeg',
31569            M: processRelativeTime,
31570            MM: '%d Méint',
31571            y: processRelativeTime,
31572            yy: '%d Joer',
31573        },
31574        dayOfMonthOrdinalParse: /\d{1,2}\./,
31575        ordinal: '%d.',
31576        week: {
31577            dow: 1, // Monday is the first day of the week.
31578            doy: 4, // The week that contains Jan 4th is the first week of the year.
31579        },
31580    });
31581
31582    return lb;
31583
31584})));
31585
31586
31587/***/ }),
31588/* 79 */
31589/***/ (function(module, exports, __webpack_require__) {
31590
31591//! moment.js locale configuration
31592//! locale : Lao [lo]
31593//! author : Ryan Hart : https://github.com/ryanhart2
31594
31595;(function (global, factory) {
31596    true ? factory(__webpack_require__(0)) :
31597   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31598   factory(global.moment)
31599}(this, (function (moment) { 'use strict';
31600
31601    //! moment.js locale configuration
31602
31603    var lo = moment.defineLocale('lo', {
31604        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
31605            '_'
31606        ),
31607        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
31608            '_'
31609        ),
31610        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
31611        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
31612        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
31613        weekdaysParseExact: true,
31614        longDateFormat: {
31615            LT: 'HH:mm',
31616            LTS: 'HH:mm:ss',
31617            L: 'DD/MM/YYYY',
31618            LL: 'D MMMM YYYY',
31619            LLL: 'D MMMM YYYY HH:mm',
31620            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
31621        },
31622        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
31623        isPM: function (input) {
31624            return input === 'ຕອນແລງ';
31625        },
31626        meridiem: function (hour, minute, isLower) {
31627            if (hour < 12) {
31628                return 'ຕອນເຊົ້າ';
31629            } else {
31630                return 'ຕອນແລງ';
31631            }
31632        },
31633        calendar: {
31634            sameDay: '[ມື້ນີ້ເວລາ] LT',
31635            nextDay: '[ມື້ອື່ນເວລາ] LT',
31636            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
31637            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
31638            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
31639            sameElse: 'L',
31640        },
31641        relativeTime: {
31642            future: 'ອີກ %s',
31643            past: '%sຜ່ານມາ',
31644            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
31645            ss: '%d ວິນາທີ',
31646            m: '1 ນາທີ',
31647            mm: '%d ນາທີ',
31648            h: '1 ຊົ່ວໂມງ',
31649            hh: '%d ຊົ່ວໂມງ',
31650            d: '1 ມື້',
31651            dd: '%d ມື້',
31652            M: '1 ເດືອນ',
31653            MM: '%d ເດືອນ',
31654            y: '1 ປີ',
31655            yy: '%d ປີ',
31656        },
31657        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
31658        ordinal: function (number) {
31659            return 'ທີ່' + number;
31660        },
31661    });
31662
31663    return lo;
31664
31665})));
31666
31667
31668/***/ }),
31669/* 80 */
31670/***/ (function(module, exports, __webpack_require__) {
31671
31672//! moment.js locale configuration
31673//! locale : Lithuanian [lt]
31674//! author : Mindaugas Mozūras : https://github.com/mmozuras
31675
31676;(function (global, factory) {
31677    true ? factory(__webpack_require__(0)) :
31678   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31679   factory(global.moment)
31680}(this, (function (moment) { 'use strict';
31681
31682    //! moment.js locale configuration
31683
31684    var units = {
31685        ss: 'sekundė_sekundžių_sekundes',
31686        m: 'minutė_minutės_minutę',
31687        mm: 'minutės_minučių_minutes',
31688        h: 'valanda_valandos_valandą',
31689        hh: 'valandos_valandų_valandas',
vendor: 4,203 bytes, lines 31690-31812
31690        d: 'diena_dienos_dieną',
31691        dd: 'dienos_dienų_dienas',
31692        M: 'mėnuo_mėnesio_mėnesį',
31693        MM: 'mėnesiai_mėnesių_mėnesius',
31694        y: 'metai_metų_metus',
31695        yy: 'metai_metų_metus',
31696    };
31697    function translateSeconds(number, withoutSuffix, key, isFuture) {
31698        if (withoutSuffix) {
31699            return 'kelios sekundės';
31700        } else {
31701            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
31702        }
31703    }
31704    function translateSingular(number, withoutSuffix, key, isFuture) {
31705        return withoutSuffix
31706            ? forms(key)[0]
31707            : isFuture
31708            ? forms(key)[1]
31709            : forms(key)[2];
31710    }
31711    function special(number) {
31712        return number % 10 === 0 || (number > 10 && number < 20);
31713    }
31714    function forms(key) {
31715        return units[key].split('_');
31716    }
31717    function translate(number, withoutSuffix, key, isFuture) {
31718        var result = number + ' ';
31719        if (number === 1) {
31720            return (
31721                result + translateSingular(number, withoutSuffix, key[0], isFuture)
31722            );
31723        } else if (withoutSuffix) {
31724            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
31725        } else {
31726            if (isFuture) {
31727                return result + forms(key)[1];
31728            } else {
31729                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
31730            }
31731        }
31732    }
31733    var lt = moment.defineLocale('lt', {
31734        months: {
31735            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
31736                '_'
31737            ),
31738            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
31739                '_'
31740            ),
31741            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
31742        },
31743        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
31744        weekdays: {
31745            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
31746                '_'
31747            ),
31748            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
31749                '_'
31750            ),
31751            isFormat: /dddd HH:mm/,
31752        },
31753        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
31754        weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
31755        weekdaysParseExact: true,
31756        longDateFormat: {
31757            LT: 'HH:mm',
31758            LTS: 'HH:mm:ss',
31759            L: 'YYYY-MM-DD',
31760            LL: 'YYYY [m.] MMMM D [d.]',
31761            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
31762            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
31763            l: 'YYYY-MM-DD',
31764            ll: 'YYYY [m.] MMMM D [d.]',
31765            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
31766            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
31767        },
31768        calendar: {
31769            sameDay: '[Å iandien] LT',
31770            nextDay: '[Rytoj] LT',
31771            nextWeek: 'dddd LT',
31772            lastDay: '[Vakar] LT',
31773            lastWeek: '[Praėjusį] dddd LT',
31774            sameElse: 'L',
31775        },
31776        relativeTime: {
31777            future: 'po %s',
31778            past: 'prieš %s',
31779            s: translateSeconds,
31780            ss: translate,
31781            m: translateSingular,
31782            mm: translate,
31783            h: translateSingular,
31784            hh: translate,
31785            d: translateSingular,
31786            dd: translate,
31787            M: translateSingular,
31788            MM: translate,
31789            y: translateSingular,
31790            yy: translate,
31791        },
31792        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
31793        ordinal: function (number) {
31794            return number + '-oji';
31795        },
31796        week: {
31797            dow: 1, // Monday is the first day of the week.
31798            doy: 4, // The week that contains Jan 4th is the first week of the year.
31799        },
31800    });
31801
31802    return lt;
31803
31804})));
31805
31806
31807/***/ }),
31808/* 81 */
31809/***/ (function(module, exports, __webpack_require__) {
31810
31811//! moment.js locale configuration
31812//! locale : Latvian [lv]
31813//! author : Kristaps Karlsons : https://github.com/skakri
31814//! author : Jānis Elmeris : https://github.com/JanisE
31815
31816;(function (global, factory) {
31817    true ? factory(__webpack_require__(0)) :
31818   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31819   factory(global.moment)
31820}(this, (function (moment) { 'use strict';
31821
31822    //! moment.js locale configuration
31823
31824    var units = {
31825        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
31826        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
31827        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
31828        h: 'stundas_stundām_stunda_stundas'.split('_'),
31829        hh: 'stundas_stundām_stunda_stundas'.split('_'),
31830        d: 'dienas_dienām_diena_dienas'.split('_'),
31831        dd: 'dienas_dienām_diena_dienas'.split('_'),
31832        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
31833        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
31834        y: 'gada_gadiem_gads_gadi'.split('_'),
31835        yy: 'gada_gadiem_gads_gadi'.split('_'),
31836    };
31837    /**
31838     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
31839     */
31840    function format(forms, number, withoutSuffix) {
31841        if (withoutSuffix) {
31842            // E.g. "21 minūte", "3 minūtes".
31843            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
31844        } else {
31845            // E.g. "21 minūtes" as in "pēc 21 minūtes".
31846            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
31847            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
31848        }
31849    }
31850    function relativeTimeWithPlural(number, withoutSuffix, key) {
31851        return number + ' ' + format(units[key], number, withoutSuffix);
31852    }
31853    function relativeTimeWithSingular(number, withoutSuffix, key) {
31854        return format(units[key], number, withoutSuffix);
31855    }
31856    function relativeSeconds(number, withoutSuffix) {
31857        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
31858    }
31859
31860    var lv = moment.defineLocale('lv', {
31861        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
31862            '_'
31863        ),
31864        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
31865        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
31866            '_'
31867        ),
31868        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
31869        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
31870        weekdaysParseExact: true,
31871        longDateFormat: {
31872            LT: 'HH:mm',
31873            LTS: 'HH:mm:ss',
31874            L: 'DD.MM.YYYY.',
31875            LL: 'YYYY. [gada] D. MMMM',
31876            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
31877            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
31878        },
31879        calendar: {
31880            sameDay: '[Å odien pulksten] LT',
31881            nextDay: '[Rīt pulksten] LT',
31882            nextWeek: 'dddd [pulksten] LT',
31883            lastDay: '[Vakar pulksten] LT',
31884            lastWeek: '[Pagājušā] dddd [pulksten] LT',
31885            sameElse: 'L',
31886        },
31887        relativeTime: {
31888            future: 'pēc %s',
31889            past: 'pirms %s',
31890            s: relativeSeconds,
31891            ss: relativeTimeWithPlural,
31892            m: relativeTimeWithSingular,
31893            mm: relativeTimeWithPlural,
31894            h: relativeTimeWithSingular,
31895            hh: relativeTimeWithPlural,
31896            d: relativeTimeWithSingular,
31897            dd: relativeTimeWithPlural,
31898            M: relativeTimeWithSingular,
31899            MM: relativeTimeWithPlural,
31900            y: relativeTimeWithSingular,
31901            yy: relativeTimeWithPlural,
31902        },
31903        dayOfMonthOrdinalParse: /\d{1,2}\./,
31904        ordinal: '%d.',
31905        week: {
31906            dow: 1, // Monday is the first day of the week.
31907            doy: 4, // The week that contains Jan 4th is the first week of the year.
31908        },
31909    });
31910
31911    return lv;
31912
31913})));
31914
31915
31916/***/ }),
31917/* 82 */
31918/***/ (function(module, exports, __webpack_require__) {
31919
31920//! moment.js locale configuration
31921//! locale : Montenegrin [me]
31922//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
31923
31924;(function (global, factory) {
31925    true ? factory(__webpack_require__(0)) :
31926   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31927   factory(global.moment)
31928}(this, (function (moment) { 'use strict';
31929
31930    //! moment.js locale configuration
31931
31932    var translator = {
31933        words: {
31934            //Different grammatical cases
31935            ss: ['sekund', 'sekunda', 'sekundi'],
31936            m: ['jedan minut', 'jednog minuta'],
31937            mm: ['minut', 'minuta', 'minuta'],
31938            h: ['jedan sat', 'jednog sata'],
31939            hh: ['sat', 'sata', 'sati'],
31940            dd: ['dan', 'dana', 'dana'],
31941            MM: ['mjesec', 'mjeseca', 'mjeseci'],
31942            yy: ['godina', 'godine', 'godina'],
31943        },
31944        correctGrammaticalCase: function (number, wordKey) {
31945            return number === 1
31946                ? wordKey[0]
31947                : number >= 2 && number <= 4
31948                ? wordKey[1]
31949                : wordKey[2];
31950        },
31951        translate: function (number, withoutSuffix, key) {
31952            var wordKey = translator.words[key];
31953            if (key.length === 1) {
31954                return withoutSuffix ? wordKey[0] : wordKey[1];
31955            } else {
31956                return (
31957                    number +
31958                    ' ' +
31959                    translator.correctGrammaticalCase(number, wordKey)
31960                );
31961            }
31962        },
31963    };
31964
31965    var me = moment.defineLocale('me', {
31966        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
31967            '_'
31968        ),
31969        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
31970            '_'
31971        ),
31972        monthsParseExact: true,
31973        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
31974            '_'
31975        ),
31976        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
31977        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
31978        weekdaysParseExact: true,
31979        longDateFormat: {
31980            LT: 'H:mm',
31981            LTS: 'H:mm:ss',
31982            L: 'DD.MM.YYYY',
31983            LL: 'D. MMMM YYYY',
31984            LLL: 'D. MMMM YYYY H:mm',
31985            LLLL: 'dddd, D. MMMM YYYY H:mm',
31986        },
31987        calendar: {
31988            sameDay: '[danas u] LT',
31989            nextDay: '[sjutra u] LT',
31990
31991            nextWeek: function () {
31992                switch (this.day()) {
31993                    case 0:
31994                        return '[u] [nedjelju] [u] LT';
31995                    case 3:
31996                        return '[u] [srijedu] [u] LT';
31997                    case 6:
31998                        return '[u] [subotu] [u] LT';
31999                    case 1:
32000                    case 2:
32001                    case 4:
32002                    case 5:
32003                        return '[u] dddd [u] LT';
32004                }
32005            },
32006            lastDay: '[juče u] LT',
32007            lastWeek: function () {
32008                var lastWeekDays = [
32009                    '[prošle] [nedjelje] [u] LT',
32010                    '[prošlog] [ponedjeljka] [u] LT',
32011                    '[prošlog] [utorka] [u] LT',
32012                    '[prošle] [srijede] [u] LT',
32013                    '[prošlog] [četvrtka] [u] LT',
32014                    '[prošlog] [petka] [u] LT',
32015                    '[prošle] [subote] [u] LT',
32016                ];
32017                return lastWeekDays[this.day()];
32018            },
32019            sameElse: 'L',
32020        },
32021        relativeTime: {
32022            future: 'za %s',
32023            past: 'prije %s',
32024            s: 'nekoliko sekundi',
32025            ss: translator.translate,
32026            m: translator.translate,
32027            mm: translator.translate,
32028            h: translator.translate,
32029            hh: translator.translate,
32030            d: 'dan',
32031            dd: translator.translate,
32032            M: 'mjesec',
32033            MM: translator.translate,
32034            y: 'godinu',
32035            yy: translator.translate,
32036        },
32037        dayOfMonthOrdinalParse: /\d{1,2}\./,
32038        ordinal: '%d.',
32039        week: {
32040            dow: 1, // Monday is the first day of the week.
32041            doy: 7, // The week that contains Jan 7th is the first week of the year.
32042        },
32043    });
32044
32045    return me;
32046
32047})));
32048
32049
32050/***/ }),
32051/* 83 */
32052/***/ (function(module, exports, __webpack_require__) {
32053
32054//! moment.js locale configuration
32055//! locale : Maori [mi]
32056//! author : John Corrigan <[email protected]> : https://github.com/johnideal
32057
32058;(function (global, factory) {
32059    true ? factory(__webpack_require__(0)) :
32060   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32061   factory(global.moment)
32062}(this, (function (moment) { 'use strict';
32063
32064    //! moment.js locale configuration
32065
32066    var mi = moment.defineLocale('mi', {
32067        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
32068            '_'
32069        ),
32070        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
32071            '_'
32072        ),
32073        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
32074        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
32075        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
32076        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
32077        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
32078        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
32079        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
32080        longDateFormat: {
32081            LT: 'HH:mm',
32082            LTS: 'HH:mm:ss',
32083            L: 'DD/MM/YYYY',
32084            LL: 'D MMMM YYYY',
32085            LLL: 'D MMMM YYYY [i] HH:mm',
32086            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
32087        },
32088        calendar: {
32089            sameDay: '[i teie mahana, i] LT',
32090            nextDay: '[apopo i] LT',
32091            nextWeek: 'dddd [i] LT',
32092            lastDay: '[inanahi i] LT',
32093            lastWeek: 'dddd [whakamutunga i] LT',
32094            sameElse: 'L',
32095        },
32096        relativeTime: {
32097            future: 'i roto i %s',
32098            past: '%s i mua',
32099            s: 'te hēkona ruarua',
32100            ss: '%d hēkona',
32101            m: 'he meneti',
32102            mm: '%d meneti',
32103            h: 'te haora',
32104            hh: '%d haora',
32105            d: 'he ra',
32106            dd: '%d ra',
32107            M: 'he marama',
32108            MM: '%d marama',
32109            y: 'he tau',
32110            yy: '%d tau',
32111        },
32112        dayOfMonthOrdinalParse: /\d{1,2}º/,
32113        ordinal: '%dº',
32114        week: {
32115            dow: 1, // Monday is the first day of the week.
32116            doy: 4, // The week that contains Jan 4th is the first week of the year.
32117        },
32118    });
32119
32120    return mi;
32121
32122})));
32123
32124
32125/***/ }),
32126/* 84 */
32127/***/ (function(module, exports, __webpack_require__) {
32128
32129//! moment.js locale configuration
32130//! locale : Macedonian [mk]
32131//! author : Borislav Mickov : https://github.com/B0k0
32132//! author : Sashko Todorov : https://github.com/bkyceh
32133
32134;(function (global, factory) {
32135    true ? factory(__webpack_require__(0)) :
32136   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32137   factory(global.moment)
32138}(this, (function (moment) { 'use strict';
32139
32140    //! moment.js locale configuration
32141
32142    var mk = moment.defineLocale('mk', {
32143        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
32144            '_'
32145        ),
32146        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
32147        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
32148            '_'
32149        ),
32150        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
32151        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
32152        longDateFormat: {
32153            LT: 'H:mm',
32154            LTS: 'H:mm:ss',
32155            L: 'D.MM.YYYY',
32156            LL: 'D MMMM YYYY',
32157            LLL: 'D MMMM YYYY H:mm',
32158            LLLL: 'dddd, D MMMM YYYY H:mm',
32159        },
32160        calendar: {
32161            sameDay: '[Денес во] LT',
32162            nextDay: '[Утре во] LT',
32163            nextWeek: '[Во] dddd [во] LT',
32164            lastDay: '[Вчера во] LT',
32165            lastWeek: function () {
32166                switch (this.day()) {
32167                    case 0:
32168                    case 3:
32169                    case 6:
32170                        return '[Изминатата] dddd [во] LT';
32171                    case 1:
32172                    case 2:
32173                    case 4:
32174                    case 5:
32175                        return '[Изминатиот] dddd [во] LT';
32176                }
32177            },
32178            sameElse: 'L',
32179        },
32180        relativeTime: {
32181            future: 'за %s',
32182            past: 'пред %s',
32183            s: 'неколку секунди',
32184            ss: '%d секунди',
32185            m: 'една минута',
32186            mm: '%d минути',
32187            h: 'еден час',
32188            hh: '%d часа',
32189            d: 'еден ден',
32190            dd: '%d дена',
32191            M: 'еден месец',
32192            MM: '%d месеци',
32193            y: 'една година',
32194            yy: '%d години',
32195        },
32196        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
32197        ordinal: function (number) {
32198            var lastDigit = number % 10,
32199                last2Digits = number % 100;
32200            if (number === 0) {
32201                return number + '-ев';
32202            } else if (last2Digits === 0) {
32203                return number + '-ен';
32204            } else if (last2Digits > 10 && last2Digits < 20) {
32205                return number + '-ти';
32206            } else if (lastDigit === 1) {
32207                return number + '-ви';
32208            } else if (lastDigit === 2) {
32209                return number + '-ри';
32210            } else if (lastDigit === 7 || lastDigit === 8) {
32211                return number + '-ми';
32212            } else {
32213                return number + '-ти';
32214            }
32215        },
32216        week: {
32217            dow: 1, // Monday is the first day of the week.
32218            doy: 7, // The week that contains Jan 7th is the first week of the year.
32219        },
32220    });
32221
32222    return mk;
32223
32224})));
32225
32226
32227/***/ }),
32228/* 85 */
32229/***/ (function(module, exports, __webpack_require__) {
32230
32231//! moment.js locale configuration
32232//! locale : Malayalam [ml]
32233//! author : Floyd Pink : https://github.com/floydpink
32234
32235;(function (global, factory) {
32236    true ? factory(__webpack_require__(0)) :
32237   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32238   factory(global.moment)
32239}(this, (function (moment) { 'use strict';
32240
32241    //! moment.js locale configuration
32242
32243    var ml = moment.defineLocale('ml', {
32244        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ചà
32244µ_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
32245            '_'
32246        ),
32247        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
32248            '_'
32249        ),
32250        monthsParseExact: true,
32251        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
32252            '_'
32253        ),
32254        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
32255        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
32256        longDateFormat: {
32257            LT: 'A h:mm -നു',
32258            LTS: 'A h:mm:ss -നു',
32259            L: 'DD/MM/YYYY',
32260            LL: 'D MMMM YYYY',
32261            LLL: 'D MMMM YYYY, A h:mm -നു',
32262            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
32263        },
32264        calendar: {
32265            sameDay: '[ഇന്ന്] LT',
32266            nextDay: '[നാളെ] LT',
32267            nextWeek: 'dddd, LT',
32268            lastDay: '[ഇന്നലെ] LT',
32269            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
32270            sameElse: 'L',
32271        },
32272        relativeTime: {
32273            future: '%s കഴിഞ്ഞ്',
32274            past: '%s മുൻപ്',
32275            s: 'അൽപ നിമിഷങ്ങൾ',
32276            ss: '%d സെക്കൻഡ്',
32277            m: 'ഒരു മിനിറ്റ്',
32278            mm: '%d മിനിറ്റ്',
32279            h: 'ഒരു മണിക്കൂർ',
32280            hh: '%d മണിക്കൂർ',
32281            d: 'ഒരു ദിവസം',
32282            dd: '%d ദിവസം',
32283            M: 'ഒരു മാസം',
32284            MM: '%d മാസം',
32285            y: 'ഒരു വർഷം',
32286            yy: '%d വർഷം',
32287        },
32288        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
32289        meridiemHour: function (hour, meridiem) {
32290            if (hour === 12) {
32291                hour = 0;
32292            }
32293            if (
32294                (meridiem === 'രാത്രി' && hour >= 4) ||
32295                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
32296                meridiem === 'വൈകുന്നേരം'
32297            ) {
32298                return hour + 12;
32299            } else {
32300                return hour;
32301            }
32302        },
32303        meridiem: function (hour, minute, isLower) {
32304            if (hour < 4) {
32305                return 'രാത്രി';
32306            } else if (hour < 12) {
32307                return 'രാവിലെ';
32308            } else if (hour < 17) {
32309                return 'ഉച്ച കഴിഞ്ഞ്';
32310            } else if (hour < 20) {
32311                return 'വൈകുന്നേരം';
32312            } else {
32313                return 'രാത്രി';
32314            }
32315        },
32316    });
32317
32318    return ml;
32319
32320})));
32321
32322
32323/***/ }),
32324/* 86 */
32325/***/ (function(module, exports, __webpack_require__) {
32326
32327//! moment.js locale configuration
32328//! locale : Mongolian [mn]
32329//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
32330
32331;(function (global, factory) {
32332    true ? factory(__webpack_require__(0)) :
32333   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32334   factory(global.moment)
32335}(this, (function (moment) { 'use strict';
32336
32337    //! moment.js locale configuration
32338
32339    function translate(number, withoutSuffix, key, isFuture) {
32340        switch (key) {
32341            case 's':
32342                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
32343            case 'ss':
32344                return number + (withoutSuffix ? ' секунд' : ' секундын');
32345            case 'm':
32346            case 'mm':
32347                return number + (withoutSuffix ? ' минут' : ' минутын');
32348            case 'h':
32349            case 'hh':
32350                return number + (withoutSuffix ? ' цаг' : ' цагийн');
32351            case 'd':
32352            case 'dd':
32353                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
32354            case 'M':
32355            case 'MM':
32356                return number + (withoutSuffix ? ' сар' : ' сарын');
32357            case 'y':
32358            case 'yy':
32359                return number + (withoutSuffix ? ' жил' : ' жилийн');
32360            default:
32361                return number;
32362        }
32363    }
32364
32365    var mn = moment.defineLocale('mn', {
32366        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
32367            '_'
32368        ),
32369        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
32370            '_'
32371        ),
32372        monthsParseExact: true,
32373        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
32374        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
32375        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
32376        weekdaysParseExact: true,
32377        longDateFormat: {
32378            LT: 'HH:mm',
32379            LTS: 'HH:mm:ss',
32380            L: 'YYYY-MM-DD',
32381            LL: 'YYYY оны MMMMын D',
32382            LLL: 'YYYY оны MMMMын D HH:mm',
32383            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
32384        },
32385        meridiemParse: /ҮӨ|ҮХ/i,
32386        isPM: function (input) {
32387            return input === 'ҮХ';
32388        },
32389        meridiem: function (hour, minute, isLower) {
32390            if (hour < 12) {
32391                return 'Ò®Ó¨';
32392            } else {
32393                return 'ҮХ';
32394            }
32395        },
32396        calendar: {
32397            sameDay: '[Өнөөдөр] LT',
32398            nextDay: '[Маргааш] LT',
32399            nextWeek: '[Ирэх] dddd LT',
32400            lastDay: '[Өчигдөр] LT',
32401            lastWeek: '[Өнгөрсөн] dddd LT',
32402            sameElse: 'L',
32403        },
32404        relativeTime: {
32405            future: '%s дараа',
32406            past: '%s өмнө',
32407            s: translate,
32408            ss: translate,
32409            m: translate,
32410            mm: translate,
32411            h: translate,
32412            hh: translate,
32413            d: translate,
32414            dd: translate,
32415            M: translate,
32416            MM: translate,
32417            y: translate,
32418            yy: translate,
32419        },
32420        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
32421        ordinal: function (number, period) {
32422            switch (period) {
32423                case 'd':
32424                case 'D':
32425                case 'DDD':
32426                    return number + ' өдөр';
32427                default:
32428                    return number;
32429            }
32430        },
32431    });
32432
32433    return mn;
32434
32435})));
32436
32437
32438/***/ }),
32439/* 87 */
32440/***/ (function(module, exports, __webpack_require__) {
32441
32442//! moment.js locale configuration
32443//! locale : Marathi [mr]
32444//! author : Harshad Kale : https://github.com/kalehv
32445//! author : Vivek Athalye : https://github.com/vnathalye
32446
32447;(function (global, factory) {
32448    true ? factory(__webpack_require__(0)) :
32449   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32450   factory(global.moment)
32451}(this, (function (moment) { 'use strict';
32452
32453    //! moment.js locale configuration
32454
32455    var symbolMap = {
32456            1: '१',
32457            2: '२',
32458            3: '३',
32459            4: '४',
32460            5: '५',
32461            6: '६',
32462            7: '७',
32463            8: '८',
32464            9: '९',
32465            0: '०',
32466        },
32467        numberMap = {
32468            '१': '1',
32469            '२': '2',
32470            '३': '3',
32471            '४': '4',
32472            '५': '5',
32473            '६': '6',
32474            '७': '7',
32475            '८': '8',
32476            '९': '9',
32477            '०': '0',
32478        };
32479
32480    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
32481        var output = '';
32482        if (withoutSuffix) {
32483            switch (string) {
32484                case 's':
32485                    output = 'काही सेकंद';
32486                    break;
32487                case 'ss':
32488                    output = '%d सेकंद';
32489                    break;
32490                case 'm':
32491                    output = 'एक मिनिट';
32492                    break;
32493                case 'mm':
32494                    output = '%d मिनिटे';
32495                    break;
32496                case 'h':
32497                    output = 'एक तास';
32498                    break;
32499                case 'hh':
32500                    output = '%d तास';
32501                    break;
32502                case 'd':
32503                    output = 'एक दिवस';
32504                    break;
32505                case 'dd':
32506                    output = '%d दिवस';
32507                    break;
32508                case 'M':
32509                    output = 'एक महिना';
32510                    break;
32511                case 'MM':
32512                    output = '%d महिने';
32513                    break;
32514                case 'y':
32515                    output = 'एक वर्ष';
32516                    break;
32517                case 'yy':
32518                    output = '%d वर्षे';
32519                    break;
32520            }
32521        } else {
32522            switch (string) {
32523                case 's':
32524                    output = 'काही सेकंदां';
32525                    break;
32526                case 'ss':
32527                    output = '%d सेकंदां';
32528                    break;
32529                case 'm':
32530                    output = 'एका मिनिटा';
32531                    break;
32532                case 'mm':
32533                    output = '%d मिनिटां';
32534                    break;
32535                case 'h':
32536                    output = 'एका तासा';
32537                    break;
32538                case 'hh':
32539                    output = '%d तासां';
32540                    break;
32541                case 'd':
32542                    output = 'एका दिवसा';
32543                    break;
32544                case 'dd':
32545                    output = '%d दिवसां';
32546                    break;
32547                case 'M':
32548                    output = 'एका महिन्या';
32549                    break;
32550                case 'MM':
32551                    output = '%d महिन्यां';
32552                    break;
32553                case 'y':
32554                    output = 'एका वर्षा';
32555                    break;
32556                case 'yy':
32557                    output = '%d वर्षां';
32558                    break;
32559            }
32560        }
32561        return output.replace(/%d/i, number);
32562    }
32563
32564    var mr = moment.defineLocale('mr', {
32565        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
32566            '_'
32567        ),
32568        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
32569            '_'
32570        ),
32571        monthsParseExact: true,
32572        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
32573        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
32574        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
32575        longDateFormat: {
32576            LT: 'A h:mm वाजता',
32577            LTS: 'A h:mm:ss वाजता',
32578            L: 'DD/MM/YYYY',
32579            LL: 'D MMMM YYYY',
32580            LLL: 'D MMMM YYYY, A h:mm वाजता',
32581            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
32582        },
32583        calendar: {
32584            sameDay: '[आज] LT',
32585            nextDay: '[उद्या] LT',
32586            nextWeek: 'dddd, LT',
32587            lastDay: '[काल] LT',
32588            lastWeek: '[मागील] dddd, LT',
32589            sameElse: 'L',
32590        },
32591        relativeTime: {
32592            future: '%sमध्ये',
32593            past: '%sपूर्वी',
32594            s: relativeTimeMr,
32595            ss: relativeTimeMr,
32596            m: relativeTimeMr,
32597            mm: relativeTimeMr,
32598            h: relativeTimeMr,
32599            hh: relativeTimeMr,
32600            d: relativeTimeMr,
32601            dd: relativeTimeMr,
32602            M: relativeTimeMr,
32603            MM: relativeTimeMr,
32604            y: relativeTimeMr,
32605            yy: relativeTimeMr,
32606        },
32607        preparse: function (string) {
32608            return string.replace(/[१२३४५६७८९०]/g, function (match) {
32609                return numberMap[match];
32610            });
32611        },
32612        postformat: function (string) {
32613            return string.replace(/\d/g, function (match) {
32614                return symbolMap[match];
32615            });
32616        },
32617        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
32618        meridiemHour: function (hour, meridiem) {
32619            if (hour === 12) {
32620                hour = 0;
32621            }
32622            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
32623                return hour;
32624            } else if (
32625                meridiem === 'दुपारी' ||
32626                meridiem === 'सायंकाळी' ||
32627                meridiem === 'रात्री'
32628            ) {
32629                return hour >= 12 ? hour : hour + 12;
32630            }
32631        },
32632        meridiem: function (hour, minute, isLower) {
32633            if (hour >= 0 && hour < 6) {
32634                return 'पहाटे';
32635            } else if (hour < 12) {
32636                return 'सकाळी';
32637            } else if (hour < 17) {
32638                return 'दुपारी';
32639            } else if (hour < 20) {
32640                return 'सायंकाळी';
32641            } else {
32642                return 'रात्री';
32643            }
32644        },
32645        week: {
32646            dow: 0, // Sunday is the first day of the week.
32647            doy: 6, // The week that contains Jan 6th is the first week of the year.
32648        },
32649    });
32650
32651    return mr;
32652
32653})));
32654
32655
32656/***/ }),
32657/* 88 */
32658/***/ (function(module, exports, __webpack_require__) {
32659
32660//! moment.js locale configuration
32661//! locale : Malay [ms]
32662//! author : Weldan Jamili : https://github.com/weldan
32663
32664;(function (global, factory) {
32665    true ? factory(__webpack_require__(0)) :
32666   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32667   factory(global.moment)
32668}(this, (function (moment) { 'use strict';
32669
32670    //! moment.js locale configuration
32671
32672    var ms = moment.defineLocale('ms', {
32673        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
32674            '_'
32675        ),
32676        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
32677        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
32678        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
32679        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
32680        longDateFormat: {
32681            LT: 'HH.mm',
32682            LTS: 'HH.mm.ss',
32683            L: 'DD/MM/YYYY',
32684            LL: 'D MMMM YYYY',
32685            LLL: 'D MMMM YYYY [pukul] HH.mm',
32686            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
32687        },
32688        meridiemParse: /pagi|tengahari|petang|malam/,
32689        meridiemHour: function (hour, meridiem) {
32690            if (hour === 12) {
32691                hour = 0;
32692            }
32693            if (meridiem === 'pagi') {
32694                return hour;
32695            } else if (meridiem === 'tengahari') {
32696                return hour >= 11 ? hour : hour + 12;
32697            } else if (meridiem === 'petang' || meridiem === 'malam') {
32698                return hour + 12;
32699            }
32700        },
32701        meridiem: function (hours, minutes, isLower) {
32702            if (hours < 11) {
32703                return 'pagi';
32704            } else if (hours < 15) {
32705                return 'tengahari';
32706            } else if (hours < 19) {
32707                return 'petang';
32708            } else {
32709                return 'malam';
32710            }
32711        },
32712        calendar: {
32713            sameDay: '[Hari ini pukul] LT',
32714            nextDay: '[Esok pukul] LT',
32715            nextWeek: 'dddd [pukul] LT',
32716            lastDay: '[Kelmarin pukul] LT',
32717            lastWeek: 'dddd [lepas pukul] LT',
32718            sameElse: 'L',
32719        },
32720        relativeTime: {
32721            future: 'dalam %s',
32722            past: '%s yang lepas',
32723            s: 'beberapa saat',
32724            ss: '%d saat',
32725            m: 'seminit',
32726            mm: '%d minit',
32727            h: 'sejam',
32728            hh: '%d jam',
32729            d: 'sehari',
32730            dd: '%d hari',
32731            M: 'sebulan',
32732            MM: '%d bulan',
32733            y: 'setahun',
32734            yy: '%d tahun',
32735        },
32736        week: {
32737            dow: 1, // Monday is the first day of the week.
32738            doy: 7, // The week that contains Jan 7th is the first week of the year.
32739        },
32740    });
32741
32742    return ms;
32743
32744})));
32745
32746
32747/***/ }),
32748/* 89 */
32749/***/ (function(module, exports, __webpack_require__) {
32750
32751//! moment.js locale configuration
32752//! locale : Malay [ms-my]
32753//! note : DEPRECATED, the correct one is [ms]
32754//! author : Weldan Jamili : https://github.com/weldan
32755
32756;(function (global, factory) {
32757    true ? factory(__webpack_require__(0)) :
32758   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32759   factory(global.moment)
32760}(this, (function (moment) { 'use strict';
32761
32762    //! moment.js locale configuration
32763
32764    var msMy = moment.defineLocale('ms-my', {
32765        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
32766            '_'
32767        ),
32768        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
32769        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
32770        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
32771        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
32772        longDateFormat: {
32773            LT: 'HH.mm',
32774            LTS: 'HH.mm.ss',
32775            L: 'DD/MM/YYYY',
32776            LL: 'D MMMM YYYY',
32777            LLL: 'D MMMM YYYY [pukul] HH.mm',
32778            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
32779        },
32780        meridiemParse: /pagi|tengahari|petang|malam/,
32781        meridiemHour: function (hour, meridiem) {
32782            if (hour === 12) {
32783                hour = 0;
32784            }
32785            if (meridiem === 'pagi') {
32786                return hour;
32787            } else if (meridiem === 'tengahari') {
32788                return hour >= 11 ? hour : hour + 12;
32789            } else if (meridiem === 'petang' || meridiem === 'malam') {
32790                return hour + 12;
32791            }
32792        },
32793        meridiem: function (hours, minutes, isLower) {
32794            if (hours < 11) {
32795                return 'pagi';
32796            } else if (hours < 15) {
32797                return 'tengahari';
32798            } else if (hours < 19) {
32799                return 'petang';
32800            } else {
32801                return 'malam';
32802            }
32803        },
32804        calendar: {
32805            sameDay: '[Hari ini pukul] LT',
32806            nextDay: '[Esok pukul] LT',
32807            nextWeek: 'dddd [pukul] LT',
32808            lastDay: '[Kelmarin pukul] LT',
32809            lastWeek: 'dddd [lepas pukul] LT',
32810            sameElse: 'L',
32811        },
32812        relativeTime: {
32813            future: 'dalam %s',
32814            past: '%s yang lepas',
32815            s: 'beberapa saat',
32816            ss: '%d saat',
32817            m: 'seminit',
32818            mm: '%d minit',
32819            h: 'sejam',
32820            hh: '%d jam',
32821            d: 'sehari',
32822            dd: '%d hari',
32823            M: 'sebulan',
32824            MM: '%d bulan',
32825            y: 'setahun',
32826            yy: '%d tahun',
32827        },
32828        week: {
32829            dow: 1, // Monday is the first day of the week.
32830            doy: 7, // The week that contains Jan 7th is the first week of the year.
32831        },
32832    });
32833
32834    return msMy;
32835
32836})));
32837
32838
32839/***/ }),
32840/* 90 */
32841/***/ (function(module, exports, __webpack_require__) {
32842
32843//! moment.js locale configuration
32844//! locale : Maltese (Malta) [mt]
32845//! author : Alessandro Maruccia : https://github.com/alesma
32846
32847;(function (global, factory) {
32848    true ? factory(__webpack_require__(0)) :
32849   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32850   factory(global.moment)
32851}(this, (function (moment) { 'use strict';
32852
32853    //! moment.js locale configuration
32854
32855    var mt = moment.defineLocale('mt', {
32856        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
32857            '_'
32858        ),
32859        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
32860        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
32861            '_'
32862        ),
32863        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
32864        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
32865        longDateFormat: {
32866            LT: 'HH:mm',
32867            LTS: 'HH:mm:ss',
32868            L: 'DD/MM/YYYY',
32869            LL: 'D MMMM YYYY',
32870            LLL: 'D MMMM YYYY HH:mm',
32871            LLLL: 'dddd, D MMMM YYYY HH:mm',
32872        },
32873        calendar: {
32874            sameDay: '[Illum fil-]LT',
32875            nextDay: '[Għada fil-]LT',
32876            nextWeek: 'dddd [fil-]LT',
32877            lastDay: '[Il-bieraħ fil-]LT',
32878            lastWeek: 'dddd [li għadda] [fil-]LT',
32879            sameElse: 'L',
32880        },
32881        relativeTime: {
32882            future: 'f’ %s',
32883            past: '%s ilu',
32884            s: 'ftit sekondi',
32885            ss: '%d sekondi',
32886            m: 'minuta',
32887            mm: '%d minuti',
32888            h: 'siegħa',
32889            hh: '%d siegħat',
32890            d: 'ġurnata',
32891            dd: '%d ġranet',
32892            M: 'xahar',
32893            MM: '%d xhur',
32894            y: 'sena',
32895            yy: '%d sni',
32896        },
32897        dayOfMonthOrdinalParse: /\d{1,2}º/,
32898        ordinal: '%dº',
32899        week: {
32900            dow: 1, // Monday is the first day of the week.
32901            doy: 4, // The week that contains Jan 4th is the first week of the year.
32902        },
32903    });
32904
32905    return mt;
32906
32907})));
32908
32909
32910/***/ }),
32911/* 91 */
32912/***/ (function(module, exports, __webpack_require__) {
32913
32914//! moment.js locale configuration
32915//! locale : Burmese [my]
32916//! author : Squar team, mysquar.com
32917//! author : David Rossellat : https://github.com/gholadr
32918//! author : Tin Aung Lin : https://github.com/thanyawzinmin
32919
32920;(function (global, factory) {
32921    true ? factory(__webpack_require__(0)) :
32922   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32923   factory(global.moment)
32924}(this, (function (moment) { 'use strict';
32925
32926    //! moment.js locale configuration
32927
32928    var symbolMap = {
32929            1: '၁',
32930            2: '၂',
32931            3: '၃',
32932            4: '၄',
32933            5: '၅',
32934            6: '၆',
32935            7: '၇',
32936            8: '၈',
32937            9: '၉',
32938            0: '၀',
32939        },
32940        numberMap = {
32941            '၁': '1',
32942            '၂': '2',
32943            '၃': '3',
32944            '၄': '4',
32945            '၅': '5',
32946            '၆': '6',
32947            '၇': '7',
32948            '၈': '8',
32949            '၉': '9',
32950            '၀': '0',
32951        };
32952
32953    var my = moment.defineLocale('my', {
32954        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
32955            '_'
32956        ),
32957        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
32958        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
32959            '_'
32960        ),
32961        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
32962        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
32963
32964        longDateFormat: {
32965            LT: 'HH:mm',
32966            LTS: 'HH:mm:ss',
32967            L: 'DD/MM/YYYY',
32968            LL: 'D MMMM YYYY',
32969            LLL: 'D MMMM YYYY HH:mm',
32970            LLLL: 'dddd D MMMM YYYY HH:mm',
32971        },
32972        calendar: {
32973            sameDay: '[ယနေ.] LT [မှာ]',
32974            nextDay: '[မနက်ဖြန်] LT [မှာ]',
32975            nextWeek: 'dddd LT [မှာ]',
32976            lastDay: '[မနေ.က] LT [မှာ]',
32977            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
32978            sameElse: 'L',
32979        },
32980        relativeTime: {
32981            future: 'လာမည့် %s မှာ',
32982            past: 'လွန်ခဲ့သော %s က',
32983            s: 'စက္ကန်.အနည်းငယ်',
32984            ss: '%d စက္ကန့်',
32985            m: 'တစ်မိနစ်',
32986            mm: '%d မိနစ်',
32987            h: 'တစ်နာရီ',
32988            hh: '%d နာရီ',
32989            d: 'တစ်ရက်',
32990            dd: '%d ရက်',
32991            M: 'တစ်လ',
32992            MM: '%d လ',
32993            y: 'တစ်နှစ်',
32994            yy: '%d နှစ်',
32995        },
32996        preparse: function (string) {
32997            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
32998                return numberMap[match];
32999            });
33000        },
33001        postformat: function (string) {
33002            return string.replace(/\d/g, function (match) {
33003                return symbolMap[match];
33004            });
33005        },
33006        week: {
33007            dow: 1, // Monday is the first day of the week.
33008            doy: 4, // The week that contains Jan 4th is the first week of the year.
33009        },
33010    });
33011
33012    return my;
33013
33014})));
33015
33016
33017/***/ }),
33018/* 92 */
33019/***/ (function(module, exports, __webpack_require__) {
33020
33021//! moment.js locale configuration
33022//! locale : Norwegian Bokmål [nb]
33023//! authors : Espen Hovlandsdal : https://github.com/rexxars
33024//!           Sigurd Gartmann : https://github.com/sigurdga
33025//!           Stephen Ramthun : https://github.com/stephenramthun
33026
33027;(function (global, factory) {
33028    true ? factory(__webpack_require__(0)) :
33029   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33030   factory(global.moment)
33031}(this, (function (moment) { 'use strict';
33032
33033    //! moment.js locale configuration
33034
33035    var nb = moment.defineLocale('nb', {
33036        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
33037            '_'
33038        ),
33039        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
33040            '_'
33041        ),
33042        monthsParseExact: true,
33043        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
33044        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
33045        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
33046        weekdaysParseExact: true,
33047        longDateFormat: {
33048            LT: 'HH:mm',
33049            LTS: 'HH:mm:ss',
33050            L: 'DD.MM.YYYY',
33051            LL: 'D. MMMM YYYY',
33052            LLL: 'D. MMMM YYYY [kl.] HH:mm',
33053            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
33054        },
33055        calendar: {
33056            sameDay: '[i dag kl.] LT',
33057            nextDay: '[i morgen kl.] LT',
33058            nextWeek: 'dddd [kl.] LT',
33059            lastDay: '[i går kl.] LT',
33060            lastWeek: '[forrige] dddd [kl.] LT',
33061            sameElse: 'L',
33062        },
33063        relativeTime: {
33064            future: 'om %s',
33065            past: '%s siden',
33066            s: 'noen sekunder',
33067            ss: '%d sekunder',
33068            m: 'ett minutt',
33069            mm: '%d minutter',
33070            h: 'en time',
33071            hh: '%d timer',
33072            d: 'en dag',
33073            dd: '%d dager',
33074            w: 'en uke',
33075            ww: '%d uker',
33076            M: 'en måned',
33077            MM: '%d måneder',
33078            y: 'ett år',
33079            yy: '%d år',
33080        },
33081        dayOfMonthOrdinalParse: /\d{1,2}\./,
33082        ordinal: '%d.',
33083        week: {
33084            dow: 1, // Monday is the first day of the week.
33085            doy: 4, // The week that contains Jan 4th is the first week of the year.
33086        },
33087    });
33088
33089    return nb;
33090
33091})));
33092
33093
33094/***/ }),
33095/* 93 */
33096/***/ (function(module, exports, __webpack_require__) {
33097
33098//! moment.js locale configuration
33099//! locale : Nepalese [ne]
33100//! author : suvash : https://github.com/suvash
33101
33102;(function (global, factory) {
33103    true ? factory(__webpack_require__(0)) :
33104   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33105   factory(global.moment)
33106}(this, (function (moment) { 'use strict';
33107
33108    //! moment.js locale configuration
33109
33110    var symbolMap = {
33111            1: '१',
33112            2: '२',
33113            3: '३',
33114            4: '४',
33115            5: '५',
33116            6: '६',
33117            7: '७',
33118            8: '८',
33119            9: '९',
33120            0: '०',
33121        },
33122        numberMap = {
33123            '१': '1',
33124            '२': '2',
33125            '३': '3',
33126            '४': '4',
33127            '५': '5',
33128            '६': '6',
33129            '७': '7',
33130            '८': '8',
33131            '९': '9',
33132            '०': '0',
33133        };
33134
33135    var ne = moment.defineLocale('ne', {
33136        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
33137            '_'
33138        ),
33139        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
33140            '_'
33141        ),
33142        monthsParseExact: true,
33143        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
33144            '_'
33145        ),
33146        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
33147        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
33148        weekdaysParseExact: true,
33149        longDateFormat: {
33150            LT: 'Aको h:mm बजे',
33151            LTS: 'Aको h:mm:ss बजे',
33152            L: 'DD/MM/YYYY',
33153            LL: 'D MMMM YYYY',
33154            LLL: 'D MMMM YYYY, Aको h:mm बजे',
33155            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
33156        },
33157        preparse: function (string) {
33158            return string.replace(/[१२३४५६७८९०]/g, function (match) {
33159                return numberMap[match];
33160            });
33161        },
33162        postformat: function (string) {
33163            return string.replace(/\d/g, function (match) {
33164                return symbolMap[match];
33165            });
33166        },
33167        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
33168        meridiemHour: function (hour, meridiem) {
33169            if (hour === 12) {
33170                hour = 0;
33171            }
33172            if (meridiem === 'राति') {
33173                return hour < 4 ? hour : hour + 12;
33174            } else if (meridiem === 'बिहान') {
33175                return hour;
33176            } else if (meridiem === 'दिउँसो') {
33177                return hour >= 10 ? hour : hour + 12;
33178            } else if (meridiem === 'साँझ') {
33179                return hour + 12;
33180            }
33181        },
33182        meridiem: function (hour, minute, isLower) {
33183            if (hour < 3) {
33184                return 'राति';
33185            } else if (hour < 12) {
33186                return 'बिहान';
33187            } else if (hour < 16) {
33188                return 'दिउँसो';
33189            } else if (hour < 20) {
33190                return 'साँझ';
33191            } else {
33192                return 'राति';
33193            }
33194        },
33195        calendar: {
33196            sameDay: '[आज] LT',
33197            nextDay: '[भोलि] LT',
33198            nextWeek: '[आउँदो] dddd[,] LT',
33199            lastDay: '[हिजो] LT',
33200            lastWeek: '[गएको] dddd[,] LT',
33201            sameElse: 'L',
33202        },
33203        relativeTime: {
33204            future: '%sमा',
33205            past: '%s अगाडि',
33206            s: 'केही क्षण',
33207            ss: '%d सेकेण्ड',
33208            m: 'एक मिनेट',
33209            mm: '%d मिनेट',
33210            h: 'एक घण्टा',
33211            hh: '%d घण्टा',
33212            d: 'एक दिन',
33213            dd: '%d दिन',
33214            M: 'एक महिना',
33215            MM: '%d महिना',
33216            y: 'एक बर्ष',
33217            yy: '%d बर्ष',
33218        },
33219        week: {
33220            dow: 0, // Sunday is the first day of the week.
33221            doy: 6, // The week that contains Jan 6th is the first week of the year.
33222        },
33223    });
33224
33225    return ne;
33226
33227})));
33228
33229
33230/***/ }),
33231/* 94 */
33232/***/ (function(module, exports, __webpack_require__) {
33233
33234//! moment.js locale configuration
33235//! locale : Dutch [nl]
33236//! author : Joris Röling : https://github.com/jorisroling
33237//! author : Jacob Middag : https://github.com/middagj
33238
33239;(function (global, factory) {
33240    true ? factory(__webpack_require__(0)) :
33241   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33242   factory(global.moment)
33243}(this, (function (moment) { 'use strict';
33244
33245    //! moment.js locale configuration
33246
33247    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
33248            '_'
33249        ),
33250        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
33251            '_'
33252        ),
33253        monthsParse = [
33254            /^jan/i,
33255            /^feb/i,
33256            /^maart|mrt.?$/i,
33257            /^apr/i,
33258            /^mei$/i,
33259            /^jun[i.]?$/i,
33260            /^jul[i.]?$/i,
33261            /^aug/i,
33262            /^sep/i,
33263            /^okt/i,
33264            /^nov/i,
33265            /^dec/i,
33266        ],
33267        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
33268
33269    var nl = moment.defineLocale('nl', {
33270        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
33271            '_'
33272        ),
33273        monthsShort: function (m, format) {
33274            if (!m) {
33275                return monthsShortWithDots;
33276            } else if (/-MMM-/.test(format)) {
33277                return monthsShortWithoutDots[m.month()];
33278            } else {
33279                return monthsShortWithDots[m.month()];
33280            }
33281        },
33282
33283        monthsRegex: monthsRegex,
33284        monthsShortRegex: monthsRegex,
33285        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
33286        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
vendor: 5,180 bytes, lines 33287-33446
33287
33288        monthsParse: monthsParse,
33289        longMonthsParse: monthsParse,
33290        shortMonthsParse: monthsParse,
33291
33292        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
33293            '_'
33294        ),
33295        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
33296        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
33297        weekdaysParseExact: true,
33298        longDateFormat: {
33299            LT: 'HH:mm',
33300            LTS: 'HH:mm:ss',
33301            L: 'DD-MM-YYYY',
33302            LL: 'D MMMM YYYY',
33303            LLL: 'D MMMM YYYY HH:mm',
33304            LLLL: 'dddd D MMMM YYYY HH:mm',
33305        },
33306        calendar: {
33307            sameDay: '[vandaag om] LT',
33308            nextDay: '[morgen om] LT',
33309            nextWeek: 'dddd [om] LT',
33310            lastDay: '[gisteren om] LT',
33311            lastWeek: '[afgelopen] dddd [om] LT',
33312            sameElse: 'L',
33313        },
33314        relativeTime: {
33315            future: 'over %s',
33316            past: '%s geleden',
33317            s: 'een paar seconden',
33318            ss: '%d seconden',
33319            m: 'één minuut',
33320            mm: '%d minuten',
33321            h: 'één uur',
33322            hh: '%d uur',
33323            d: 'één dag',
33324            dd: '%d dagen',
33325            w: 'één week',
33326            ww: '%d weken',
33327            M: 'één maand',
33328            MM: '%d maanden',
33329            y: 'één jaar',
33330            yy: '%d jaar',
33331        },
33332        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
33333        ordinal: function (number) {
33334            return (
33335                number +
33336                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
33337            );
33338        },
33339        week: {
33340            dow: 1, // Monday is the first day of the week.
33341            doy: 4, // The week that contains Jan 4th is the first week of the year.
33342        },
33343    });
33344
33345    return nl;
33346
33347})));
33348
33349
33350/***/ }),
33351/* 95 */
33352/***/ (function(module, exports, __webpack_require__) {
33353
33354//! moment.js locale configuration
33355//! locale : Dutch (Belgium) [nl-be]
33356//! author : Joris Röling : https://github.com/jorisroling
33357//! author : Jacob Middag : https://github.com/middagj
33358
33359;(function (global, factory) {
33360    true ? factory(__webpack_require__(0)) :
33361   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33362   factory(global.moment)
33363}(this, (function (moment) { 'use strict';
33364
33365    //! moment.js locale configuration
33366
33367    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
33368            '_'
33369        ),
33370        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
33371            '_'
33372        ),
33373        monthsParse = [
33374            /^jan/i,
33375            /^feb/i,
33376            /^maart|mrt.?$/i,
33377            /^apr/i,
33378            /^mei$/i,
33379            /^jun[i.]?$/i,
33380            /^jul[i.]?$/i,
33381            /^aug/i,
33382            /^sep/i,
33383            /^okt/i,
33384            /^nov/i,
33385            /^dec/i,
33386        ],
33387        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
33388
33389    var nlBe = moment.defineLocale('nl-be', {
33390        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
33391            '_'
33392        ),
33393        monthsShort: function (m, format) {
33394            if (!m) {
33395                return monthsShortWithDots;
33396            } else if (/-MMM-/.test(format)) {
33397                return monthsShortWithoutDots[m.month()];
33398            } else {
33399                return monthsShortWithDots[m.month()];
33400            }
33401        },
33402
33403        monthsRegex: monthsRegex,
33404        monthsShortRegex: monthsRegex,
33405        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
33406        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
33407
33408        monthsParse: monthsParse,
33409        longMonthsParse: monthsParse,
33410        shortMonthsParse: monthsParse,
33411
33412        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
33413            '_'
33414        ),
33415        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
33416        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
33417        weekdaysParseExact: true,
33418        longDateFormat: {
33419            LT: 'HH:mm',
33420            LTS: 'HH:mm:ss',
33421            L: 'DD/MM/YYYY',
33422            LL: 'D MMMM YYYY',
33423            LLL: 'D MMMM YYYY HH:mm',
33424            LLLL: 'dddd D MMMM YYYY HH:mm',
33425        },
33426        calendar: {
33427            sameDay: '[vandaag om] LT',
33428            nextDay: '[morgen om] LT',
33429            nextWeek: 'dddd [om] LT',
33430            lastDay: '[gisteren om] LT',
33431            lastWeek: '[afgelopen] dddd [om] LT',
33432            sameElse: 'L',
33433        },
33434        relativeTime: {
33435            future: 'over %s',
33436            past: '%s geleden',
33437            s: 'een paar seconden',
33438            ss: '%d seconden',
33439            m: 'één minuut',
33440            mm: '%d minuten',
33441            h: 'één uur',
33442            hh: '%d uur',
33443            d: 'één dag',
33444            dd: '%d dagen',
33445            M: 'één maand',
33446            MM: '%d maanden',
33447            y: 'één jaar',
33448            yy: '%d jaar',
33449        },
33450        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
33451        ordinal: function (number) {
33452            return (
33453                number +
33454                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
33455            );
33456        },
33457        week: {
33458            dow: 1, // Monday is the first day of the week.
33459            doy: 4, // The week that contains Jan 4th is the first week of the year.
33460        },
33461    });
33462
33463    return nlBe;
33464
33465})));
33466
33467
33468/***/ }),
33469/* 96 */
33470/***/ (function(module, exports, __webpack_require__) {
33471
33472//! moment.js locale configuration
33473//! locale : Nynorsk [nn]
33474//! authors : https://github.com/mechuwind
33475//!           Stephen Ramthun : https://github.com/stephenramthun
33476
33477;(function (global, factory) {
33478    true ? factory(__webpack_require__(0)) :
33479   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33480   factory(global.moment)
33481}(this, (function (moment) { 'use strict';
33482
33483    //! moment.js locale configuration
33484
33485    var nn = moment.defineLocale('nn', {
33486        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
33487            '_'
33488        ),
33489        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
33490            '_'
33491        ),
33492        monthsParseExact: true,
33493        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
33494        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
33495        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
33496        weekdaysParseExact: true,
33497        longDateFormat: {
33498            LT: 'HH:mm',
33499            LTS: 'HH:mm:ss',
33500            L: 'DD.MM.YYYY',
33501            LL: 'D. MMMM YYYY',
33502            LLL: 'D. MMMM YYYY [kl.] H:mm',
33503            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
33504        },
33505        calendar: {
33506            sameDay: '[I dag klokka] LT',
33507            nextDay: '[I morgon klokka] LT',
33508            nextWeek: 'dddd [klokka] LT',
33509            lastDay: '[I går klokka] LT',
33510            lastWeek: '[Føregåande] dddd [klokka] LT',
33511            sameElse: 'L',
33512        },
33513        relativeTime: {
33514            future: 'om %s',
33515            past: '%s sidan',
33516            s: 'nokre sekund',
33517            ss: '%d sekund',
33518            m: 'eit minutt',
33519            mm: '%d minutt',
33520            h: 'ein time',
33521            hh: '%d timar',
33522            d: 'ein dag',
33523            dd: '%d dagar',
33524            w: 'ei veke',
33525            ww: '%d veker',
33526            M: 'ein månad',
33527            MM: '%d månader',
33528            y: 'eit år',
33529            yy: '%d år',
33530        },
33531        dayOfMonthOrdinalParse: /\d{1,2}\./,
33532        ordinal: '%d.',
33533        week: {
33534            dow: 1, // Monday is the first day of the week.
33535            doy: 4, // The week that contains Jan 4th is the first week of the year.
33536        },
33537    });
33538
33539    return nn;
33540
33541})));
33542
33543
33544/***/ }),
33545/* 97 */
33546/***/ (function(module, exports, __webpack_require__) {
33547
33548//! moment.js locale configuration
33549//! locale : Occitan, lengadocian dialecte [oc-lnc]
33550//! author : Quentin PAGÈS : https://github.com/Quenty31
33551
33552;(function (global, factory) {
33553    true ? factory(__webpack_require__(0)) :
33554   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33555   factory(global.moment)
33556}(this, (function (moment) { 'use strict';
33557
33558    //! moment.js locale configuration
33559
33560    var ocLnc = moment.defineLocale('oc-lnc', {
33561        months: {
33562            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
33563                '_'
33564            ),
33565            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
33566                '_'
33567            ),
33568            isFormat: /D[oD]?(\s)+MMMM/,
33569        },
33570        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
33571            '_'
33572        ),
33573        monthsParseExact: true,
33574        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
33575            '_'
33576        ),
33577        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
33578        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
33579        weekdaysParseExact: true,
33580        longDateFormat: {
33581            LT: 'H:mm',
33582            LTS: 'H:mm:ss',
33583            L: 'DD/MM/YYYY',
33584            LL: 'D MMMM [de] YYYY',
33585            ll: 'D MMM YYYY',
33586            LLL: 'D MMMM [de] YYYY [a] H:mm',
33587            lll: 'D MMM YYYY, H:mm',
33588            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
33589            llll: 'ddd D MMM YYYY, H:mm',
33590        },
33591        calendar: {
33592            sameDay: '[uèi a] LT',
33593            nextDay: '[deman a] LT',
33594            nextWeek: 'dddd [a] LT',
33595            lastDay: '[ièr a] LT',
33596            lastWeek: 'dddd [passat a] LT',
33597            sameElse: 'L',
33598        },
33599        relativeTime: {
33600            future: "d'aquí %s",
33601            past: 'fa %s',
33602            s: 'unas segondas',
33603            ss: '%d segondas',
33604            m: 'una minuta',
33605            mm: '%d minutas',
33606            h: 'una ora',
33607            hh: '%d oras',
33608            d: 'un jorn',
33609            dd: '%d jorns',
33610            M: 'un mes',
33611            MM: '%d meses',
33612            y: 'un an',
33613            yy: '%d ans',
33614        },
33615        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
33616        ordinal: function (number, period) {
33617            var output =
33618                number === 1
33619                    ? 'r'
33620                    : number === 2
33621                    ? 'n'
33622                    : number === 3
33623                    ? 'r'
33624                    : number === 4
33625                    ? 't'
33626                    : 'è';
33627            if (period === 'w' || period === 'W') {
33628                output = 'a';
33629            }
33630            return number + output;
33631        },
33632        week: {
33633            dow: 1, // Monday is the first day of the week.
33634            doy: 4,
33635        },
33636    });
33637
33638    return ocLnc;
33639
33640})));
33641
33642
33643/***/ }),
33644/* 98 */
33645/***/ (function(module, exports, __webpack_require__) {
33646
33647//! moment.js locale configuration
33648//! locale : Punjabi (India) [pa-in]
33649//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
33650
33651;(function (global, factory) {
33652    true ? factory(__webpack_require__(0)) :
33653   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33654   factory(global.moment)
33655}(this, (function (moment) { 'use strict';
33656
33657    //! moment.js locale configuration
33658
33659    var symbolMap = {
33660            1: 'à©§',
33661            2: '੨',
33662            3: 'à©©',
33663            4: '੪',
33664            5: 'à©«',
33665            6: '੬',
33666            7: 'à©­',
33667            8: 'à©®',
33668            9: '੯',
33669            0: '੦',
33670        },
33671        numberMap = {
33672            'à©§': '1',
33673            '੨': '2',
33674            'à©©': '3',
33675            '੪': '4',
33676            'à©«': '5',
33677            '੬': '6',
33678            'à©­': '7',
33679            'à©®': '8',
33680            '੯': '9',
33681            '੦': '0',
33682        };
33683
33684    var paIn = moment.defineLocale('pa-in', {
33685        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
33686        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
33687            '_'
33688        ),
33689        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
33690            '_'
33691        ),
33692        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
33693            '_'
33694        ),
33695        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
33696        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
33697        longDateFormat: {
33698            LT: 'A h:mm ਵਜੇ',
33699            LTS: 'A h:mm:ss ਵਜੇ',
33700            L: 'DD/MM/YYYY',
33701            LL: 'D MMMM YYYY',
33702            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
33703            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
33704        },
33705        calendar: {
33706            sameDay: '[ਅਜ] LT',
33707            nextDay: '[ਕਲ] LT',
33708            nextWeek: '[ਅਗਲਾ] dddd, LT',
33709            lastDay: '[ਕਲ] LT',
33710            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
33711            sameElse: 'L',
33712        },
33713        relativeTime: {
33714            future: '%s ਵਿੱਚ',
33715            past: '%s ਪਿਛਲੇ',
33716            s: 'ਕੁਝ ਸਕਿੰਟ',
33717            ss: '%d ਸਕਿੰਟ',
33718            m: 'ਇਕ ਮਿੰਟ',
33719            mm: '%d ਮਿੰਟ',
33720            h: 'ਇੱਕ ਘੰਟਾ',
33721            hh: '%d ਘੰਟੇ',
33722            d: 'ਇੱਕ ਦਿਨ',
33723            dd: '%d ਦਿਨ',
33724            M: 'ਇੱਕ ਮਹੀਨਾ',
33725            MM: '%d ਮਹੀਨੇ',
33726            y: 'ਇੱਕ ਸਾਲ',
33727            yy: '%d ਸਾਲ',
33728        },
33729        preparse: function (string) {
33730            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
33731                return numberMap[match];
33732            });
33733        },
33734        postformat: function (string) {
33735            return string.replace(/\d/g, function (match) {
33736                return symbolMap[match];
33737            });
33738        },
33739        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
33740        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
33741        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
33742        meridiemHour: function (hour, meridiem) {
33743            if (hour === 12) {
33744                hour = 0;
33745            }
33746            if (meridiem === 'ਰਾਤ') {
33747                return hour < 4 ? hour : hour + 12;
33748            } else if (meridiem === 'ਸਵੇਰ') {
33749                return hour;
33750            } else if (meridiem === 'ਦੁਪਹਿਰ') {
33751                return hour >= 10 ? hour : hour + 12;
33752            } else if (meridiem === 'ਸ਼ਾਮ') {
33753                return hour + 12;
33754            }
33755        },
33756        meridiem: function (hour, minute, isLower) {
33757            if (hour < 4) {
33758                return 'ਰਾਤ';
33759            } else if (hour < 10) {
33760                return 'ਸਵੇਰ';
33761            } else if (hour < 17) {
33762                return 'ਦੁਪਹਿਰ';
33763            } else if (hour < 20) {
33764                return 'ਸ਼ਾਮ';
33765            } else {
33766                return 'ਰਾਤ';
33767            }
33768        },
33769        week: {
33770            dow: 0, // Sunday is the first day of the week.
33771            doy: 6, // The week that contains Jan 6th is the first week of the year.
33772        },
33773    });
33774
33775    return paIn;
33776
33777})));
33778
33779
33780/***/ }),
33781/* 99 */
33782/***/ (function(module, exports, __webpack_require__) {
33783
33784//! moment.js locale configuration
33785//! locale : Polish [pl]
33786//! author : Rafal Hirsz : https://github.com/evoL
33787
33788;(function (global, factory) {
33789    true ? factory(__webpack_require__(0)) :
33790   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33791   factory(global.moment)
33792}(this, (function (moment) { 'use strict';
33793
33794    //! moment.js locale configuration
33795
vendor: 27,360 bytes, lines 33796-34584
33796    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
33797            '_'
33798        ),
33799        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
33800            '_'
33801        ),
33802        monthsParse = [
33803            /^sty/i,
33804            /^lut/i,
33805            /^mar/i,
33806            /^kwi/i,
33807            /^maj/i,
33808            /^cze/i,
33809            /^lip/i,
33810            /^sie/i,
33811            /^wrz/i,
33812            /^paź/i,
33813            /^lis/i,
33814            /^gru/i,
33815        ];
33816    function plural(n) {
33817        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
33818    }
33819    function translate(number, withoutSuffix, key) {
33820        var result = number + ' ';
33821        switch (key) {
33822            case 'ss':
33823                return result + (plural(number) ? 'sekundy' : 'sekund');
33824            case 'm':
33825                return withoutSuffix ? 'minuta' : 'minutę';
33826            case 'mm':
33827                return result + (plural(number) ? 'minuty' : 'minut');
33828            case 'h':
33829                return withoutSuffix ? 'godzina' : 'godzinę';
33830            case 'hh':
33831                return result + (plural(number) ? 'godziny' : 'godzin');
33832            case 'ww':
33833                return result + (plural(number) ? 'tygodnie' : 'tygodni');
33834            case 'MM':
33835                return result + (plural(number) ? 'miesiące' : 'miesięcy');
33836            case 'yy':
33837                return result + (plural(number) ? 'lata' : 'lat');
33838        }
33839    }
33840
33841    var pl = moment.defineLocale('pl', {
33842        months: function (momentToFormat, format) {
33843            if (!momentToFormat) {
33844                return monthsNominative;
33845            } else if (/D MMMM/.test(format)) {
33846                return monthsSubjective[momentToFormat.month()];
33847            } else {
33848                return monthsNominative[momentToFormat.month()];
33849            }
33850        },
33851        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
33852        monthsParse: monthsParse,
33853        longMonthsParse: monthsParse,
33854        shortMonthsParse: monthsParse,
33855        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(
33856            '_'
33857        ),
33858        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
33859        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
33860        longDateFormat: {
33861            LT: 'HH:mm',
33862            LTS: 'HH:mm:ss',
33863            L: 'DD.MM.YYYY',
33864            LL: 'D MMMM YYYY',
33865            LLL: 'D MMMM YYYY HH:mm',
33866            LLLL: 'dddd, D MMMM YYYY HH:mm',
33867        },
33868        calendar: {
33869            sameDay: '[Dziś o] LT',
33870            nextDay: '[Jutro o] LT',
33871            nextWeek: function () {
33872                switch (this.day()) {
33873                    case 0:
33874                        return '[W niedzielę o] LT';
33875
33876                    case 2:
33877                        return '[We wtorek o] LT';
33878
33879                    case 3:
33880                        return '[W środę o] LT';
33881
33882                    case 6:
33883                        return '[W sobotę o] LT';
33884
33885                    default:
33886                        return '[W] dddd [o] LT';
33887                }
33888            },
33889            lastDay: '[Wczoraj o] LT',
33890            lastWeek: function () {
33891                switch (this.day()) {
33892                    case 0:
33893                        return '[W zeszłą niedzielę o] LT';
33894                    case 3:
33895                        return '[W zeszłą środę o] LT';
33896                    case 6:
33897                        return '[W zeszłą sobotę o] LT';
33898                    default:
33899                        return '[W zeszły] dddd [o] LT';
33900                }
33901            },
33902            sameElse: 'L',
33903        },
33904        relativeTime: {
33905            future: 'za %s',
33906            past: '%s temu',
33907            s: 'kilka sekund',
33908            ss: translate,
33909            m: translate,
33910            mm: translate,
33911            h: translate,
33912            hh: translate,
33913            d: '1 dzień',
33914            dd: '%d dni',
33915            w: 'tydzień',
33916            ww: translate,
33917            M: 'miesiąc',
33918            MM: translate,
33919            y: 'rok',
33920            yy: translate,
33921        },
33922        dayOfMonthOrdinalParse: /\d{1,2}\./,
33923        ordinal: '%d.',
33924        week: {
33925            dow: 1, // Monday is the first day of the week.
33926            doy: 4, // The week that contains Jan 4th is the first week of the year.
33927        },
33928    });
33929
33930    return pl;
33931
33932})));
33933
33934
33935/***/ }),
33936/* 100 */
33937/***/ (function(module, exports, __webpack_require__) {
33938
33939//! moment.js locale configuration
33940//! locale : Portuguese [pt]
33941//! author : Jefferson : https://github.com/jalex79
33942
33943;(function (global, factory) {
33944    true ? factory(__webpack_require__(0)) :
33945   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33946   factory(global.moment)
33947}(this, (function (moment) { 'use strict';
33948
33949    //! moment.js locale configuration
33950
33951    var pt = moment.defineLocale('pt', {
33952        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
33953            '_'
33954        ),
33955        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
33956        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
33957            '_'
33958        ),
33959        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
33960        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
33961        weekdaysParseExact: true,
33962        longDateFormat: {
33963            LT: 'HH:mm',
33964            LTS: 'HH:mm:ss',
33965            L: 'DD/MM/YYYY',
33966            LL: 'D [de] MMMM [de] YYYY',
33967            LLL: 'D [de] MMMM [de] YYYY HH:mm',
33968            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
33969        },
33970        calendar: {
33971            sameDay: '[Hoje às] LT',
33972            nextDay: '[Amanhã às] LT',
33973            nextWeek: 'dddd [às] LT',
33974            lastDay: '[Ontem às] LT',
33975            lastWeek: function () {
33976                return this.day() === 0 || this.day() === 6
33977                    ? '[Último] dddd [às] LT' // Saturday + Sunday
33978                    : '[Última] dddd [às] LT'; // Monday - Friday
33979            },
33980            sameElse: 'L',
33981        },
33982        relativeTime: {
33983            future: 'em %s',
33984            past: 'há %s',
33985            s: 'segundos',
33986            ss: '%d segundos',
33987            m: 'um minuto',
33988            mm: '%d minutos',
33989            h: 'uma hora',
33990            hh: '%d horas',
33991            d: 'um dia',
33992            dd: '%d dias',
33993            w: 'uma semana',
33994            ww: '%d semanas',
33995            M: 'um mês',
33996            MM: '%d meses',
33997            y: 'um ano',
33998            yy: '%d anos',
33999        },
34000        dayOfMonthOrdinalParse: /\d{1,2}º/,
34001        ordinal: '%dº',
34002        week: {
34003            dow: 1, // Monday is the first day of the week.
34004            doy: 4, // The week that contains Jan 4th is the first week of the year.
34005        },
34006    });
34007
34008    return pt;
34009
34010})));
34011
34012
34013/***/ }),
34014/* 101 */
34015/***/ (function(module, exports, __webpack_require__) {
34016
34017//! moment.js locale configuration
34018//! locale : Portuguese (Brazil) [pt-br]
34019//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
34020
34021;(function (global, factory) {
34022    true ? factory(__webpack_require__(0)) :
34023   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34024   factory(global.moment)
34025}(this, (function (moment) { 'use strict';
34026
34027    //! moment.js locale configuration
34028
34029    var ptBr = moment.defineLocale('pt-br', {
34030        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
34031            '_'
34032        ),
34033        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
34034        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
34035            '_'
34036        ),
34037        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
34038        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
34039        weekdaysParseExact: true,
34040        longDateFormat: {
34041            LT: 'HH:mm',
34042            LTS: 'HH:mm:ss',
34043            L: 'DD/MM/YYYY',
34044            LL: 'D [de] MMMM [de] YYYY',
34045            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
34046            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
34047        },
34048        calendar: {
34049            sameDay: '[Hoje às] LT',
34050            nextDay: '[Amanhã às] LT',
34051            nextWeek: 'dddd [às] LT',
34052            lastDay: '[Ontem às] LT',
34053            lastWeek: function () {
34054                return this.day() === 0 || this.day() === 6
34055                    ? '[Último] dddd [às] LT' // Saturday + Sunday
34056                    : '[Última] dddd [às] LT'; // Monday - Friday
34057            },
34058            sameElse: 'L',
34059        },
34060        relativeTime: {
34061            future: 'em %s',
34062            past: 'há %s',
34063            s: 'poucos segundos',
34064            ss: '%d segundos',
34065            m: 'um minuto',
34066            mm: '%d minutos',
34067            h: 'uma hora',
34068            hh: '%d horas',
34069            d: 'um dia',
34070            dd: '%d dias',
34071            M: 'um mês',
34072            MM: '%d meses',
34073            y: 'um ano',
34074            yy: '%d anos',
34075        },
34076        dayOfMonthOrdinalParse: /\d{1,2}º/,
34077        ordinal: '%dº',
34078        invalidDate: 'Data inválida',
34079    });
34080
34081    return ptBr;
34082
34083})));
34084
34085
34086/***/ }),
34087/* 102 */
34088/***/ (function(module, exports, __webpack_require__) {
34089
34090//! moment.js locale configuration
34091//! locale : Romanian [ro]
34092//! author : Vlad Gurdiga : https://github.com/gurdiga
34093//! author : Valentin Agachi : https://github.com/avaly
34094//! author : Emanuel Cepoi : https://github.com/cepem
34095
34096;(function (global, factory) {
34097    true ? factory(__webpack_require__(0)) :
34098   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34099   factory(global.moment)
34100}(this, (function (moment) { 'use strict';
34101
34102    //! moment.js locale configuration
34103
34104    function relativeTimeWithPlural(number, withoutSuffix, key) {
34105        var format = {
34106                ss: 'secunde',
34107                mm: 'minute',
34108                hh: 'ore',
34109                dd: 'zile',
34110                ww: 'săptămâni',
34111                MM: 'luni',
34112                yy: 'ani',
34113            },
34114            separator = ' ';
34115        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
34116            separator = ' de ';
34117        }
34118        return number + separator + format[key];
34119    }
34120
34121    var ro = moment.defineLocale('ro', {
34122        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
34123            '_'
34124        ),
34125        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
34126            '_'
34127        ),
34128        monthsParseExact: true,
34129        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
34130        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
34131        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
34132        longDateFormat: {
34133            LT: 'H:mm',
34134            LTS: 'H:mm:ss',
34135            L: 'DD.MM.YYYY',
34136            LL: 'D MMMM YYYY',
34137            LLL: 'D MMMM YYYY H:mm',
34138            LLLL: 'dddd, D MMMM YYYY H:mm',
34139        },
34140        calendar: {
34141            sameDay: '[azi la] LT',
34142            nextDay: '[mâine la] LT',
34143            nextWeek: 'dddd [la] LT',
34144            lastDay: '[ieri la] LT',
34145            lastWeek: '[fosta] dddd [la] LT',
34146            sameElse: 'L',
34147        },
34148        relativeTime: {
34149            future: 'peste %s',
34150            past: '%s în urmă',
34151            s: 'câteva secunde',
34152            ss: relativeTimeWithPlural,
34153            m: 'un minut',
34154            mm: relativeTimeWithPlural,
34155            h: 'o oră',
34156            hh: relativeTimeWithPlural,
34157            d: 'o zi',
34158            dd: relativeTimeWithPlural,
34159            w: 'o săptămână',
34160            ww: relativeTimeWithPlural,
34161            M: 'o lună',
34162            MM: relativeTimeWithPlural,
34163            y: 'un an',
34164            yy: relativeTimeWithPlural,
34165        },
34166        week: {
34167            dow: 1, // Monday is the first day of the week.
34168            doy: 7, // The week that contains Jan 7th is the first week of the year.
34169        },
34170    });
34171
34172    return ro;
34173
34174})));
34175
34176
34177/***/ }),
34178/* 103 */
34179/***/ (function(module, exports, __webpack_require__) {
34180
34181//! moment.js locale configuration
34182//! locale : Russian [ru]
34183//! author : Viktorminator : https://github.com/Viktorminator
34184//! author : Menelion Elensúle : https://github.com/Oire
34185//! author : Коренберг Марк : https://github.com/socketpair
34186
34187;(function (global, factory) {
34188    true ? factory(__webpack_require__(0)) :
34189   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34190   factory(global.moment)
34191}(this, (function (moment) { 'use strict';
34192
34193    //! moment.js locale configuration
34194
34195    function plural(word, num) {
34196        var forms = word.split('_');
34197        return num % 10 === 1 && num % 100 !== 11
34198            ? forms[0]
34199            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
34200            ? forms[1]
34201            : forms[2];
34202    }
34203    function relativeTimeWithPlural(number, withoutSuffix, key) {
34204        var format = {
34205            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
34206            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
34207            hh: 'час_часа_часов',
34208            dd: 'день_дня_дней',
34209            ww: 'неделя_недели_недель',
34210            MM: 'месяц_месяца_месяцев',
34211            yy: 'год_года_лет',
34212        };
34213        if (key === 'm') {
34214            return withoutSuffix ? 'минута' : 'минуту';
34215        } else {
34216            return number + ' ' + plural(format[key], +number);
34217        }
34218    }
34219    var monthsParse = [
34220        /^янв/i,
34221        /^фев/i,
34222        /^мар/i,
34223        /^апр/i,
34224        /^ма[йя]/i,
34225        /^июн/i,
34226        /^июл/i,
34227        /^авг/i,
34228        /^сен/i,
34229        /^окт/i,
34230        /^ноя/i,
34231        /^дек/i,
34232    ];
34233
34234    // http://new.gramota.ru/spravka/rules/139-prop : § 103
34235    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
34236    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
34237    var ru = moment.defineLocale('ru', {
34238        months: {
34239            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
34240                '_'
34241            ),
34242            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
34243                '_'
34244            ),
34245        },
34246        monthsShort: {
34247            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
34248            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
34249                '_'
34250            ),
34251            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
34252                '_'
34253            ),
34254        },
34255        weekdays: {
34256            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
34257                '_'
34258            ),
34259            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
34260                '_'
34261            ),
34262            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
34263        },
34264        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
34265        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
34266        monthsParse: monthsParse,
34267        longMonthsParse: monthsParse,
34268        shortMonthsParse: monthsParse,
34269
34270        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
34271        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
34272
34273        // копия предыдущего
34274        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
34275
34276        // полные названия с падежами
34277        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
34278
34279        // Выражение, которое соответствует только сокращённым формам
34280        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
34281        longDateFormat: {
34282            LT: 'H:mm',
34283            LTS: 'H:mm:ss',
34284            L: 'DD.MM.YYYY',
34285            LL: 'D MMMM YYYY г.',
34286            LLL: 'D MMMM YYYY г., H:mm',
34287            LLLL: 'dddd, D MMMM YYYY г., H:mm',
34288        },
34289        calendar: {
34290            sameDay: '[Сегодня, в] LT',
34291            nextDay: '[Завтра, в] LT',
34292            lastDay: '[Вчера, в] LT',
34293            nextWeek: function (now) {
34294                if (now.week() !== this.week()) {
34295                    switch (this.day()) {
34296                        case 0:
34297                            return '[В следующее] dddd, [в] LT';
34298                        case 1:
34299                        case 2:
34300                        case 4:
34301                            return '[В следующий] dddd, [в] LT';
34302                        case 3:
34303                        case 5:
34304                        case 6:
34305                            return '[В следующую] dddd, [в] LT';
34306                    }
34307                } else {
34308                    if (this.day() === 2) {
34309                        return '[Во] dddd, [в] LT';
34310                    } else {
34311                        return '[В] dddd, [в] LT';
34312                    }
34313                }
34314            },
34315            lastWeek: function (now) {
34316                if (now.week() !== this.week()) {
34317                    switch (this.day()) {
34318                        case 0:
34319                            return '[В прошлое] dddd, [в] LT';
34320                        case 1:
34321                        case 2:
34322                        case 4:
34323                            return '[В прошлый] dddd, [в] LT';
34324                        case 3:
34325                        case 5:
34326                        case 6:
34327                            return '[В прошлую] dddd, [в] LT';
34328                    }
34329                } else {
34330                    if (this.day() === 2) {
34331                        return '[Во] dddd, [в] LT';
34332                    } else {
34333                        return '[В] dddd, [в] LT';
34334                    }
34335                }
34336            },
34337            sameElse: 'L',
34338        },
34339        relativeTime: {
34340            future: 'через %s',
34341            past: '%s назад',
34342            s: 'несколько секунд',
34343            ss: relativeTimeWithPlural,
34344            m: relativeTimeWithPlural,
34345            mm: relativeTimeWithPlural,
34346            h: 'час',
34347            hh: relativeTimeWithPlural,
34348            d: 'день',
34349            dd: relativeTimeWithPlural,
34350            w: 'неделя',
34351            ww: relativeTimeWithPlural,
34352            M: 'месяц',
34353            MM: relativeTimeWithPlural,
34354            y: 'год',
34355            yy: relativeTimeWithPlural,
34356        },
34357        meridiemParse: /ночи|утра|дня|вечера/i,
34358        isPM: function (input) {
34359            return /^(дня|вечера)$/.test(input);
34360        },
34361        meridiem: function (hour, minute, isLower) {
34362            if (hour < 4) {
34363                return 'ночи';
34364            } else if (hour < 12) {
34365                return 'утра';
34366            } else if (hour < 17) {
34367                return 'дня';
34368            } else {
34369                return 'вечера';
34370            }
34371        },
34372        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
34373        ordinal: function (number, period) {
34374            switch (period) {
34375                case 'M':
34376                case 'd':
34377                case 'DDD':
34378                    return number + '-й';
34379                case 'D':
34380                    return number + '-го';
34381                case 'w':
34382                case 'W':
34383                    return number + '-я';
34384                default:
34385                    return number;
34386            }
34387        },
34388        week: {
34389            dow: 1, // Monday is the first day of the week.
34390            doy: 4, // The week that contains Jan 4th is the first week of the year.
34391        },
34392    });
34393
34394    return ru;
34395
34396})));
34397
34398
34399/***/ }),
34400/* 104 */
34401/***/ (function(module, exports, __webpack_require__) {
34402
34403//! moment.js locale configuration
34404//! locale : Sindhi [sd]
34405//! author : Narain Sagar : https://github.com/narainsagar
34406
34407;(function (global, factory) {
34408    true ? factory(__webpack_require__(0)) :
34409   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34410   factory(global.moment)
34411}(this, (function (moment) { 'use strict';
34412
34413    //! moment.js locale configuration
34414
34415    var months = [
34416            'جنوري',
34417            'فيبروري',
34418            'مارچ',
34419            'اپريل',
34420            'مئي',
34421            'جون',
34422            'جولاءِ',
34423            'آگسٽ',
34424            'سيپٽمبر',
34425            'آڪٽوبر',
34426            'نومبر',
34427            'ڊسمبر',
34428        ],
34429        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
34430
34431    var sd = moment.defineLocale('sd', {
34432        months: months,
34433        monthsShort: months,
34434        weekdays: days,
34435        weekdaysShort: days,
34436        weekdaysMin: days,
34437        longDateFormat: {
34438            LT: 'HH:mm',
34439            LTS: 'HH:mm:ss',
34440            L: 'DD/MM/YYYY',
34441            LL: 'D MMMM YYYY',
34442            LLL: 'D MMMM YYYY HH:mm',
34443            LLLL: 'dddd، D MMMM YYYY HH:mm',
34444        },
34445        meridiemParse: /صبح|شام/,
34446        isPM: function (input) {
34447            return 'شام' === input;
34448        },
34449        meridiem: function (hour, minute, isLower) {
34450            if (hour < 12) {
34451                return 'صبح';
34452            }
34453            return 'شام';
34454        },
34455        calendar: {
34456            sameDay: '[اڄ] LT',
34457            nextDay: '[سڀاڻي] LT',
34458            nextWeek: 'dddd [اڳين هفتي تي] LT',
34459            lastDay: '[ڪالهه] LT',
34460            lastWeek: '[گزريل هفتي] dddd [تي] LT',
34461            sameElse: 'L',
34462        },
34463        relativeTime: {
34464            future: '%s پوء',
34465            past: '%s اڳ',
34466            s: 'چند سيڪنڊ',
34467            ss: '%d سيڪنڊ',
34468            m: 'هڪ منٽ',
34469            mm: '%d منٽ',
34470            h: 'هڪ ڪلاڪ',
34471            hh: '%d ڪلاڪ',
34472            d: 'هڪ ڏينهن',
34473            dd: '%d ڏينهن',
34474            M: 'هڪ مهينو',
34475            MM: '%d مهينا',
34476            y: 'هڪ سال',
34477            yy: '%d سال',
34478        },
34479        preparse: function (string) {
34480            return string.replace(/،/g, ',');
34481        },
34482        postformat: function (string) {
34483            return string.replace(/,/g, '،');
34484        },
34485        week: {
34486            dow: 1, // Monday is the first day of the week.
34487            doy: 4, // The week that contains Jan 4th is the first week of the year.
34488        },
34489    });
34490
34491    return sd;
34492
34493})));
34494
34495
34496/***/ }),
34497/* 105 */
34498/***/ (function(module, exports, __webpack_require__) {
34499
34500//! moment.js locale configuration
34501//! locale : Northern Sami [se]
34502//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
34503
34504;(function (global, factory) {
34505    true ? factory(__webpack_require__(0)) :
34506   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34507   factory(global.moment)
34508}(this, (function (moment) { 'use strict';
34509
34510    //! moment.js locale configuration
34511
34512    var se = moment.defineLocale('se', {
34513        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
34514            '_'
34515        ),
34516        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(
34517            '_'
34518        ),
34519        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
34520            '_'
34521        ),
34522        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
34523        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
34524        longDateFormat: {
34525            LT: 'HH:mm',
34526            LTS: 'HH:mm:ss',
34527            L: 'DD.MM.YYYY',
34528            LL: 'MMMM D. [b.] YYYY',
34529            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
34530            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
34531        },
34532        calendar: {
34533            sameDay: '[otne ti] LT',
34534            nextDay: '[ihttin ti] LT',
34535            nextWeek: 'dddd [ti] LT',
34536            lastDay: '[ikte ti] LT',
34537            lastWeek: '[ovddit] dddd [ti] LT',
34538            sameElse: 'L',
34539        },
34540        relativeTime: {
34541            future: '%s geažes',
34542            past: 'maŋit %s',
34543            s: 'moadde sekunddat',
34544            ss: '%d sekunddat',
34545            m: 'okta minuhta',
34546            mm: '%d minuhtat',
34547            h: 'okta diimmu',
34548            hh: '%d diimmut',
34549            d: 'okta beaivi',
34550            dd: '%d beaivvit',
34551            M: 'okta mánnu',
34552            MM: '%d mánut',
34553            y: 'okta jahki',
34554            yy: '%d jagit',
34555        },
34556        dayOfMonthOrdinalParse: /\d{1,2}\./,
34557        ordinal: '%d.',
34558        week: {
34559            dow: 1, // Monday is the first day of the week.
34560            doy: 4, // The week that contains Jan 4th is the first week of the year.
34561        },
34562    });
34563
34564    return se;
34565
34566})));
34567
34568
34569/***/ }),
34570/* 106 */
34571/***/ (function(module, exports, __webpack_require__) {
34572
34573//! moment.js locale configuration
34574//! locale : Sinhalese [si]
34575//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
34576
34577;(function (global, factory) {
34578    true ? factory(__webpack_require__(0)) :
34579   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34580   factory(global.moment)
34581}(this, (function (moment) { 'use strict';
34582
34583    //! moment.js locale configuration
34584
vendor: 16,384 bytes, lines 34585-35013
34585    /*jshint -W100*/
34586    var si = moment.defineLocale('si', {
34587        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
34588            '_'
34589        ),
34590        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
34591            '_'
34592        ),
34593        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
34594            '_'
34595        ),
34596        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
34597        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
34598        weekdaysParseExact: true,
34599        longDateFormat: {
34600            LT: 'a h:mm',
34601            LTS: 'a h:mm:ss',
34602            L: 'YYYY/MM/DD',
34603            LL: 'YYYY MMMM D',
34604            LLL: 'YYYY MMMM D, a h:mm',
34605            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
34606        },
34607        calendar: {
34608            sameDay: '[අද] LT[ට]',
34609            nextDay: '[හෙට] LT[ට]',
34610            nextWeek: 'dddd LT[à¶§]',
34611            lastDay: '[ඊයේ] LT[ට]',
34612            lastWeek: '[පසුගිය] dddd LT[ට]',
34613            sameElse: 'L',
34614        },
34615        relativeTime: {
34616            future: '%sකින්',
34617            past: '%sකට පෙර',
34618            s: 'තත්පර කිහිපය',
34619            ss: 'තත්පර %d',
34620            m: 'මිනිත්තුව',
34621            mm: 'මිනිත්තු %d',
34622            h: 'පැය',
34623            hh: 'පැය %d',
34624            d: 'දිනය',
34625            dd: 'දින %d',
34626            M: 'මාසය',
34627            MM: 'මාස %d',
34628            y: 'වසර',
34629            yy: 'වසර %d',
34630        },
34631        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
34632        ordinal: function (number) {
34633            return number + ' වැනි';
34634        },
34635        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
34636        isPM: function (input) {
34637            return input === 'ප.ව.' || input === 'පස් වරු';
34638        },
34639        meridiem: function (hours, minutes, isLower) {
34640            if (hours > 11) {
34641                return isLower ? 'ප.ව.' : 'පස් වරු';
34642            } else {
34643                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
34644            }
34645        },
34646    });
34647
34648    return si;
34649
34650})));
34651
34652
34653/***/ }),
34654/* 107 */
34655/***/ (function(module, exports, __webpack_require__) {
34656
34657//! moment.js locale configuration
34658//! locale : Slovak [sk]
34659//! author : Martin Minka : https://github.com/k2s
34660//! based on work of petrbela : https://github.com/petrbela
34661
34662;(function (global, factory) {
34663    true ? factory(__webpack_require__(0)) :
34664   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34665   factory(global.moment)
34666}(this, (function (moment) { 'use strict';
34667
34668    //! moment.js locale configuration
34669
34670    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
34671            '_'
34672        ),
34673        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
34674    function plural(n) {
34675        return n > 1 && n < 5;
34676    }
34677    function translate(number, withoutSuffix, key, isFuture) {
34678        var result = number + ' ';
34679        switch (key) {
34680            case 's': // a few seconds / in a few seconds / a few seconds ago
34681                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
34682            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
34683                if (withoutSuffix || isFuture) {
34684                    return result + (plural(number) ? 'sekundy' : 'sekúnd');
34685                } else {
34686                    return result + 'sekundami';
34687                }
34688            case 'm': // a minute / in a minute / a minute ago
34689                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
34690            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
34691                if (withoutSuffix || isFuture) {
34692                    return result + (plural(number) ? 'minúty' : 'minút');
34693                } else {
34694                    return result + 'minútami';
34695                }
34696            case 'h': // an hour / in an hour / an hour ago
34697                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
34698            case 'hh': // 9 hours / in 9 hours / 9 hours ago
34699                if (withoutSuffix || isFuture) {
34700                    return result + (plural(number) ? 'hodiny' : 'hodín');
34701                } else {
34702                    return result + 'hodinami';
34703                }
34704            case 'd': // a day / in a day / a day ago
34705                return withoutSuffix || isFuture ? 'deň' : 'dňom';
34706            case 'dd': // 9 days / in 9 days / 9 days ago
34707                if (withoutSuffix || isFuture) {
34708                    return result + (plural(number) ? 'dni' : 'dní');
34709                } else {
34710                    return result + 'dňami';
34711                }
34712            case 'M': // a month / in a month / a month ago
34713                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
34714            case 'MM': // 9 months / in 9 months / 9 months ago
34715                if (withoutSuffix || isFuture) {
34716                    return result + (plural(number) ? 'mesiace' : 'mesiacov');
34717                } else {
34718                    return result + 'mesiacmi';
34719                }
34720            case 'y': // a year / in a year / a year ago
34721                return withoutSuffix || isFuture ? 'rok' : 'rokom';
34722            case 'yy': // 9 years / in 9 years / 9 years ago
34723                if (withoutSuffix || isFuture) {
34724                    return result + (plural(number) ? 'roky' : 'rokov');
34725                } else {
34726                    return result + 'rokmi';
34727                }
34728        }
34729    }
34730
34731    var sk = moment.defineLocale('sk', {
34732        months: months,
34733        monthsShort: monthsShort,
34734        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
34735        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
34736        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
34737        longDateFormat: {
34738            LT: 'H:mm',
34739            LTS: 'H:mm:ss',
34740            L: 'DD.MM.YYYY',
34741            LL: 'D. MMMM YYYY',
34742            LLL: 'D. MMMM YYYY H:mm',
34743            LLLL: 'dddd D. MMMM YYYY H:mm',
34744        },
34745        calendar: {
34746            sameDay: '[dnes o] LT',
34747            nextDay: '[zajtra o] LT',
34748            nextWeek: function () {
34749                switch (this.day()) {
34750                    case 0:
34751                        return '[v nedeľu o] LT';
34752                    case 1:
34753                    case 2:
34754                        return '[v] dddd [o] LT';
34755                    case 3:
34756                        return '[v stredu o] LT';
34757                    case 4:
34758                        return '[vo štvrtok o] LT';
34759                    case 5:
34760                        return '[v piatok o] LT';
34761                    case 6:
34762                        return '[v sobotu o] LT';
34763                }
34764            },
34765            lastDay: '[včera o] LT',
34766            lastWeek: function () {
34767                switch (this.day()) {
34768                    case 0:
34769                        return '[minulú nedeľu o] LT';
34770                    case 1:
34771                    case 2:
34772                        return '[minulý] dddd [o] LT';
34773                    case 3:
34774                        return '[minulú stredu o] LT';
34775                    case 4:
34776                    case 5:
34777                        return '[minulý] dddd [o] LT';
34778                    case 6:
34779                        return '[minulú sobotu o] LT';
34780                }
34781            },
34782            sameElse: 'L',
34783        },
34784        relativeTime: {
34785            future: 'za %s',
34786            past: 'pred %s',
34787            s: translate,
34788            ss: translate,
34789            m: translate,
34790            mm: translate,
34791            h: translate,
34792            hh: translate,
34793            d: translate,
34794            dd: translate,
34795            M: translate,
34796            MM: translate,
34797            y: translate,
34798            yy: translate,
34799        },
34800        dayOfMonthOrdinalParse: /\d{1,2}\./,
34801        ordinal: '%d.',
34802        week: {
34803            dow: 1, // Monday is the first day of the week.
34804            doy: 4, // The week that contains Jan 4th is the first week of the year.
34805        },
34806    });
34807
34808    return sk;
34809
34810})));
34811
34812
34813/***/ }),
34814/* 108 */
34815/***/ (function(module, exports, __webpack_require__) {
34816
34817//! moment.js locale configuration
34818//! locale : Slovenian [sl]
34819//! author : Robert Sedovšek : https://github.com/sedovsek
34820
34821;(function (global, factory) {
34822    true ? factory(__webpack_require__(0)) :
34823   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34824   factory(global.moment)
34825}(this, (function (moment) { 'use strict';
34826
34827    //! moment.js locale configuration
34828
34829    function processRelativeTime(number, withoutSuffix, key, isFuture) {
34830        var result = number + ' ';
34831        switch (key) {
34832            case 's':
34833                return withoutSuffix || isFuture
34834                    ? 'nekaj sekund'
34835                    : 'nekaj sekundami';
34836            case 'ss':
34837                if (number === 1) {
34838                    result += withoutSuffix ? 'sekundo' : 'sekundi';
34839                } else if (number === 2) {
34840                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
34841                } else if (number < 5) {
34842                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
34843                } else {
34844                    result += 'sekund';
34845                }
34846                return result;
34847            case 'm':
34848                return withoutSuffix ? 'ena minuta' : 'eno minuto';
34849            case 'mm':
34850                if (number === 1) {
34851                    result += withoutSuffix ? 'minuta' : 'minuto';
34852                } else if (number === 2) {
34853                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
34854                } else if (number < 5) {
34855                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
34856                } else {
34857                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
34858                }
34859                return result;
34860            case 'h':
34861                return withoutSuffix ? 'ena ura' : 'eno uro';
34862            case 'hh':
34863                if (number === 1) {
34864                    result += withoutSuffix ? 'ura' : 'uro';
34865                } else if (number === 2) {
34866                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
34867                } else if (number < 5) {
34868                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
34869                } else {
34870                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
34871                }
34872                return result;
34873            case 'd':
34874                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
34875            case 'dd':
34876                if (number === 1) {
34877                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
34878                } else if (number === 2) {
34879                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
34880                } else {
34881                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
34882                }
34883                return result;
34884            case 'M':
34885                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
34886            case 'MM':
34887                if (number === 1) {
34888                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
34889                } else if (number === 2) {
34890                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
34891                } else if (number < 5) {
34892                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
34893                } else {
34894                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
34895                }
34896                return result;
34897            case 'y':
34898                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
34899            case 'yy':
34900                if (number === 1) {
34901                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
34902                } else if (number === 2) {
34903                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
34904                } else if (number < 5) {
34905                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
34906                } else {
34907                    result += withoutSuffix || isFuture ? 'let' : 'leti';
34908                }
34909                return result;
34910        }
34911    }
34912
34913    var sl = moment.defineLocale('sl', {
34914        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
34915            '_'
34916        ),
34917        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
34918            '_'
34919        ),
34920        monthsParseExact: true,
34921        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
34922        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
34923        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
34924        weekdaysParseExact: true,
34925        longDateFormat: {
34926            LT: 'H:mm',
34927            LTS: 'H:mm:ss',
34928            L: 'DD. MM. YYYY',
34929            LL: 'D. MMMM YYYY',
34930            LLL: 'D. MMMM YYYY H:mm',
34931            LLLL: 'dddd, D. MMMM YYYY H:mm',
34932        },
34933        calendar: {
34934            sameDay: '[danes ob] LT',
34935            nextDay: '[jutri ob] LT',
34936
34937            nextWeek: function () {
34938                switch (this.day()) {
34939                    case 0:
34940                        return '[v] [nedeljo] [ob] LT';
34941                    case 3:
34942                        return '[v] [sredo] [ob] LT';
34943                    case 6:
34944                        return '[v] [soboto] [ob] LT';
34945                    case 1:
34946                    case 2:
34947                    case 4:
34948                    case 5:
34949                        return '[v] dddd [ob] LT';
34950                }
34951            },
34952            lastDay: '[včeraj ob] LT',
34953            lastWeek: function () {
34954                switch (this.day()) {
34955                    case 0:
34956                        return '[prejšnjo] [nedeljo] [ob] LT';
34957                    case 3:
34958                        return '[prejšnjo] [sredo] [ob] LT';
34959                    case 6:
34960                        return '[prejšnjo] [soboto] [ob] LT';
34961                    case 1:
34962                    case 2:
34963                    case 4:
34964                    case 5:
34965                        return '[prejšnji] dddd [ob] LT';
34966                }
34967            },
34968            sameElse: 'L',
34969        },
34970        relativeTime: {
34971            future: 'čez %s',
34972            past: 'pred %s',
34973            s: processRelativeTime,
34974            ss: processRelativeTime,
34975            m: processRelativeTime,
34976            mm: processRelativeTime,
34977            h: processRelativeTime,
34978            hh: processRelativeTime,
34979            d: processRelativeTime,
34980            dd: processRelativeTime,
34981            M: processRelativeTime,
34982            MM: processRelativeTime,
34983            y: processRelativeTime,
34984            yy: processRelativeTime,
34985        },
34986        dayOfMonthOrdinalParse: /\d{1,2}\./,
34987        ordinal: '%d.',
34988        week: {
34989            dow: 1, // Monday is the first day of the week.
34990            doy: 7, // The week that contains Jan 7th is the first week of the year.
34991        },
34992    });
34993
34994    return sl;
34995
34996})));
34997
34998
34999/***/ }),
35000/* 109 */
35001/***/ (function(module, exports, __webpack_require__) {
35002
35003//! moment.js locale configuration
35004//! locale : Albanian [sq]
35005//! author : Flakërim Ismani : https://github.com/flakerimi
35006//! author : Menelion Elensúle : https://github.com/Oire
35007//! author : Oerd Cukalla : https://github.com/oerd
35008
35009;(function (global, factory) {
35010    true ? factory(__webpack_require__(0)) :
35011   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35012   factory(global.moment)
35013}(this, (funct
35013ion (moment) { 'use strict';
35014
35015    //! moment.js locale configuration
35016
35017    var sq = moment.defineLocale('sq', {
35018        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
35019            '_'
35020        ),
35021        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
35022        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
35023            '_'
35024        ),
35025        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
35026        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
35027        weekdaysParseExact: true,
35028        meridiemParse: /PD|MD/,
35029        isPM: function (input) {
35030            return input.charAt(0) === 'M';
35031        },
35032        meridiem: function (hours, minutes, isLower) {
35033            return hours < 12 ? 'PD' : 'MD';
35034        },
35035        longDateFormat: {
35036            LT: 'HH:mm',
35037            LTS: 'HH:mm:ss',
35038            L: 'DD/MM/YYYY',
35039            LL: 'D MMMM YYYY',
35040            LLL: 'D MMMM YYYY HH:mm',
35041            LLLL: 'dddd, D MMMM YYYY HH:mm',
35042        },
35043        calendar: {
35044            sameDay: '[Sot në] LT',
35045            nextDay: '[Nesër në] LT',
35046            nextWeek: 'dddd [në] LT',
35047            lastDay: '[Dje në] LT',
35048            lastWeek: 'dddd [e kaluar në] LT',
35049            sameElse: 'L',
35050        },
35051        relativeTime: {
35052            future: 'në %s',
35053            past: '%s më parë',
35054            s: 'disa sekonda',
35055            ss: '%d sekonda',
35056            m: 'një minutë',
35057            mm: '%d minuta',
35058            h: 'një orë',
35059            hh: '%d orë',
35060            d: 'një ditë',
35061            dd: '%d ditë',
35062            M: 'një muaj',
35063            MM: '%d muaj',
35064            y: 'një vit',
35065            yy: '%d vite',
35066        },
35067        dayOfMonthOrdinalParse: /\d{1,2}\./,
35068        ordinal: '%d.',
35069        week: {
35070            dow: 1, // Monday is the first day of the week.
35071            doy: 4, // The week that contains Jan 4th is the first week of the year.
35072        },
35073    });
35074
35075    return sq;
35076
35077})));
35078
35079
35080/***/ }),
35081/* 110 */
35082/***/ (function(module, exports, __webpack_require__) {
35083
35084//! moment.js locale configuration
35085//! locale : Serbian [sr]
35086//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
35087//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
35088
35089;(function (global, factory) {
35090    true ? factory(__webpack_require__(0)) :
35091   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35092   factory(global.moment)
35093}(this, (function (moment) { 'use strict';
35094
35095    //! moment.js locale configuration
35096
35097    var translator = {
35098        words: {
35099            //Different grammatical cases
35100            ss: ['sekunda', 'sekunde', 'sekundi'],
35101            m: ['jedan minut', 'jedne minute'],
35102            mm: ['minut', 'minute', 'minuta'],
35103            h: ['jedan sat', 'jednog sata'],
35104            hh: ['sat', 'sata', 'sati'],
35105            dd: ['dan', 'dana', 'dana'],
35106            MM: ['mesec', 'meseca', 'meseci'],
35107            yy: ['godina', 'godine', 'godina'],
35108        },
35109        correctGrammaticalCase: function (number, wordKey) {
35110            return number === 1
35111                ? wordKey[0]
35112                : number >= 2 && number <= 4
35113                ? wordKey[1]
35114                : wordKey[2];
35115        },
35116        translate: function (number, withoutSuffix, key) {
35117            var wordKey = translator.words[key];
35118            if (key.length === 1) {
35119                return withoutSuffix ? wordKey[0] : wordKey[1];
35120            } else {
35121                return (
35122                    number +
35123                    ' ' +
35124                    translator.correctGrammaticalCase(number, wordKey)
35125                );
35126            }
35127        },
35128    };
35129
35130    var sr = moment.defineLocale('sr', {
35131        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
35132            '_'
35133        ),
35134        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
35135            '_'
35136        ),
35137        monthsParseExact: true,
35138        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
35139            '_'
35140        ),
35141        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
35142        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
35143        weekdaysParseExact: true,
35144        longDateFormat: {
35145            LT: 'H:mm',
35146            LTS: 'H:mm:ss',
35147            L: 'D. M. YYYY.',
35148            LL: 'D. MMMM YYYY.',
35149            LLL: 'D. MMMM YYYY. H:mm',
35150            LLLL: 'dddd, D. MMMM YYYY. H:mm',
35151        },
35152        calendar: {
35153            sameDay: '[danas u] LT',
35154            nextDay: '[sutra u] LT',
35155            nextWeek: function () {
35156                switch (this.day()) {
35157                    case 0:
35158                        return '[u] [nedelju] [u] LT';
35159                    case 3:
35160                        return '[u] [sredu] [u] LT';
35161                    case 6:
35162                        return '[u] [subotu] [u] LT';
35163                    case 1:
35164                    case 2:
35165                    case 4:
35166                    case 5:
35167                        return '[u] dddd [u] LT';
35168                }
35169            },
35170            lastDay: '[juče u] LT',
35171            lastWeek: function () {
35172                var lastWeekDays = [
35173                    '[prošle] [nedelje] [u] LT',
35174                    '[prošlog] [ponedeljka] [u] LT',
35175                    '[prošlog] [utorka] [u] LT',
35176                    '[prošle] [srede] [u] LT',
35177                    '[prošlog] [četvrtka] [u] LT',
35178                    '[prošlog] [petka] [u] LT',
35179                    '[prošle] [subote] [u] LT',
35180                ];
35181                return lastWeekDays[this.day()];
35182            },
35183            sameElse: 'L',
35184        },
35185        relativeTime: {
35186            future: 'za %s',
35187            past: 'pre %s',
35188            s: 'nekoliko sekundi',
35189            ss: translator.translate,
35190            m: translator.translate,
35191            mm: translator.translate,
35192            h: translator.translate,
35193            hh: translator.translate,
35194            d: 'dan',
35195            dd: translator.translate,
35196            M: 'mesec',
35197            MM: translator.translate,
35198            y: 'godinu',
35199            yy: translator.translate,
35200        },
35201        dayOfMonthOrdinalParse: /\d{1,2}\./,
35202        ordinal: '%d.',
35203        week: {
35204            dow: 1, // Monday is the first day of the week.
35205            doy: 7, // The week that contains Jan 7th is the first week of the year.
35206        },
35207    });
35208
35209    return sr;
35210
35211})));
35212
35213
35214/***/ }),
35215/* 111 */
35216/***/ (function(module, exports, __webpack_require__) {
35217
35218//! moment.js locale configuration
35219//! locale : Serbian Cyrillic [sr-cyrl]
35220//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
35221//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
35222
35223;(function (global, factory) {
35224    true ? factory(__webpack_require__(0)) :
35225   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35226   factory(global.moment)
35227}(this, (function (moment) { 'use strict';
35228
35229    //! moment.js locale configuration
35230
35231    var translator = {
35232        words: {
35233            //Different grammatical cases
35234            ss: ['секунда', 'секунде', 'секунди'],
35235            m: ['један минут', 'једне минуте'],
35236            mm: ['минут', 'минуте', 'минута'],
35237            h: ['један сат', 'једног сата'],
35238            hh: ['сат', 'сата', 'сати'],
35239            dd: ['дан', 'дана', 'дана'],
35240            MM: ['месец', 'месеца', 'месеци'],
35241            yy: ['година', 'године', 'година'],
35242        },
35243        correctGrammaticalCase: function (number, wordKey) {
35244            return number === 1
35245                ? wordKey[0]
35246                : number >= 2 && number <= 4
35247                ? wordKey[1]
35248                : wordKey[2];
35249        },
35250        translate: function (number, withoutSuffix, key) {
35251            var wordKey = translator.words[key];
35252            if (key.length === 1) {
35253                return withoutSuffix ? wordKey[0] : wordKey[1];
35254            } else {
35255                return (
35256                    number +
35257                    ' ' +
35258                    translator.correctGrammaticalCase(number, wordKey)
35259                );
35260            }
35261        },
35262    };
35263
35264    var srCyrl = moment.defineLocale('sr-cyrl', {
35265        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_ок
35265тобар_новембар_децембар'.split(
35266            '_'
35267        ),
35268        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(
35269            '_'
35270        ),
35271        monthsParseExact: true,
35272        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
35273        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
35274        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
35275        weekdaysParseExact: true,
35276        longDateFormat: {
35277            LT: 'H:mm',
35278            LTS: 'H:mm:ss',
35279            L: 'D. M. YYYY.',
35280            LL: 'D. MMMM YYYY.',
35281            LLL: 'D. MMMM YYYY. H:mm',
35282            LLLL: 'dddd, D. MMMM YYYY. H:mm',
35283        },
35284        calendar: {
35285            sameDay: '[данас у] LT',
35286            nextDay: '[сутра у] LT',
35287            nextWeek: function () {
35288                switch (this.day()) {
35289                    case 0:
35290                        return '[у] [недељу] [у] LT';
35291                    case 3:
35292                        return '[у] [среду] [у] LT';
35293                    case 6:
35294                        return '[у] [суботу] [у] LT';
35295                    case 1:
35296                    case 2:
35297                    case 4:
35298                    case 5:
35299                        return '[у] dddd [у] LT';
35300                }
35301            },
35302            lastDay: '[јуче у] LT',
35303            lastWeek: function () {
35304                var lastWeekDays = [
35305                    '[прошле] [недеље] [у] LT',
35306                    '[прошлог] [понедељка] [у] LT',
35307                    '[прошлог] [уторка] [у] LT',
35308                    '[прошле] [среде] [у] LT',
35309                    '[прошлог] [четвртка] [у] LT',
35310                    '[прошлог] [петка] [у] LT',
35311                    '[прошле] [суботе] [у] LT',
35312                ];
35313                return lastWeekDays[this.day()];
35314            },
35315            sameElse: 'L',
35316        },
35317        relativeTime: {
35318            future: 'за %s',
35319            past: 'пре %s',
35320            s: 'неколико секунди',
35321            ss: translator.translate,
35322            m: translator.translate,
35323            mm: translator.translate,
35324            h: translator.translate,
35325            hh: translator.translate,
35326            d: 'дан',
35327            dd: translator.translate,
35328            M: 'месец',
35329            MM: translator.translate,
35330            y: 'годину',
35331            yy: translator.translate,
35332        },
35333        dayOfMonthOrdinalParse: /\d{1,2}\./,
35334        ordinal: '%d.',
35335        week: {
35336            dow: 1, // Monday is the first day of the week.
35337            doy: 7, // The week that contains Jan 1st is the first week of the year.
35338        },
35339    });
35340
35341    return srCyrl;
35342
35343})));
35344
35345
35346/***/ }),
35347/* 112 */
35348/***/ (function(module, exports, __webpack_require__) {
35349
35350//! moment.js locale configuration
35351//! locale : siSwati [ss]
35352//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
35353
35354;(function (global, factory) {
35355    true ? factory(__webpack_require__(0)) :
35356   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35357   factory(global.moment)
35358}(this, (function (moment) { 'use strict';
35359
35360    //! moment.js locale configuration
35361
35362    var ss = moment.defineLocale('ss', {
35363        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
35364            '_'
35365        ),
35366        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
35367        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
35368            '_'
35369        ),
35370        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
35371        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
35372        weekdaysParseExact: true,
35373        longDateFormat: {
35374            LT: 'h:mm A',
35375            LTS: 'h:mm:ss A',
35376            L: 'DD/MM/YYYY',
35377            LL: 'D MMMM YYYY',
35378            LLL: 'D MMMM YYYY h:mm A',
35379            LLLL: 'dddd, D MMMM YYYY h:mm A',
35380        },
35381        calendar: {
35382            sameDay: '[Namuhla nga] LT',
35383            nextDay: '[Kusasa nga] LT',
35384            nextWeek: 'dddd [nga] LT',
35385            lastDay: '[Itolo nga] LT',
35386            lastWeek: 'dddd [leliphelile] [nga] LT',
35387            sameElse: 'L',
35388        },
35389        relativeTime: {
35390            future: 'nga %s',
35391            past: 'wenteka nga %s',
35392            s: 'emizuzwana lomcane',
35393            ss: '%d mzuzwana',
35394            m: 'umzuzu',
35395            mm: '%d emizuzu',
35396            h: 'lihora',
35397            hh: '%d emahora',
35398            d: 'lilanga',
35399            dd: '%d emalanga',
35400            M: 'inyanga',
35401            MM: '%d tinyanga',
35402            y: 'umnyaka',
35403            yy: '%d iminyaka',
35404        },
35405        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
35406        meridiem: function (hours, minutes, isLower) {
35407            if (hours < 11) {
35408                return 'ekuseni';
35409            } else if (hours < 15) {
35410                return 'emini';
35411            } else if (hours < 19) {
35412                return 'entsambama';
35413            } else {
35414                return 'ebusuku';
35415            }
35416        },
35417        meridiemHour: function (hour, meridiem) {
35418            if (hour === 12) {
35419                hour = 0;
35420            }
35421            if (meridiem === 'ekuseni') {
35422                return hour;
35423            } else if (meridiem === 'emini') {
35424                return hour >= 11 ? hour : hour + 12;
35425            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
35426                if (hour === 0) {
35427                    return 0;
35428                }
35429                return hour + 12;
35430            }
35431        },
35432        dayOfMonthOrdinalParse: /\d{1,2}/,
35433        ordinal: '%d',
35434        week: {
35435            dow: 1, // Monday is the first day of the week.
35436            doy: 4, // The week that contains Jan 4th is the first week of the year.
35437        },
35438    });
35439
35440    return ss;
35441
35442})));
35443
35444
35445/***/ }),
35446/* 113 */
35447/***/ (function(module, exports, __webpack_require__) {
35448
35449//! moment.js locale configuration
35450//! locale : Swedish [sv]
35451//! author : Jens Alm : https://github.com/ulmus
35452
35453;(function (global, factory) {
35454    true ? factory(__webpack_require__(0)) :
35455   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35456   factory(global.moment)
35457}(this, (function (moment) { 'use strict';
35458
35459    //! moment.js locale configuration
35460
35461    var sv = moment.defineLocale('sv', {
35462        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
35463            '_'
35464        ),
35465        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
35466        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
35467        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
35468        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
35469        longDateFormat: {
35470            LT: 'HH:mm',
35471            LTS: 'HH:mm:ss',
35472            L: 'YYYY-MM-DD',
35473            LL: 'D MMMM YYYY',
35474            LLL: 'D MMMM YYYY [kl.] HH:mm',
35475            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
35476            lll: 'D MMM YYYY HH:mm',
35477            llll: 'ddd D MMM YYYY HH:mm',
35478        },
35479        calendar: {
35480            sameDay: '[Idag] LT',
35481            nextDay: '[Imorgon] LT',
35482            lastDay: '[Igår] LT',
35483            nextWeek: '[PÃ¥] dddd LT',
35484            lastWeek: '[I] dddd[s] LT',
35485            sameElse: 'L',
35486        },
35487        relativeTime: {
35488            future: 'om %s',
35489            past: 'för %s sedan',
35490            s: 'några sekunder',
35491            ss: '%d sekunder',
35492            m: 'en minut',
35493            mm: '%d minuter',
35494            h: 'en timme',
35495            hh: '%d timmar',
35496            d: 'en dag',
35497            dd: '%d dagar',
35498            M: 'en månad',
35499            MM: '%d månader',
35500            y: 'ett år',
35501            yy: '%d år',
35502        },
35503        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
35504        ordinal: function (number) {
35505            var b = number % 10,
35506                output =
35507                    ~~((number % 100) / 10) === 1
35508                        ? ':e'
35509                        : b === 1
35510                        ? ':a'
35511                        : b === 2
35512                        ? ':a'
35513                        : b === 3
35514                        ? ':e'
35515                        : ':e';
35516            return number + output;
35517        },
35518        week: {
35519            dow: 1, // Monday is the first day of the week.
35520            doy: 4, // The week that contains Jan 4th is the first week of the year.
35521        },
35522    });
35523
35524    return sv;
35525
35526})));
35527
35528
35529/***/ }),
35530/* 114 */
35531/***/ (function(module, exports, __webpack_require__) {
35532
35533//! moment.js locale configuration
35534//! locale : Swahili [sw]
35535//! author : Fahad Kassim : https://github.com/fadsel
35536
35537;(function (global, factory) {
35538    true ? factory(__webpack_require__(0)) :
35539   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35540   factory(global.moment)
35541}(this, (function (moment) { 'use strict';
35542
35543    //! moment.js locale configuration
35544
35545    var sw = moment.defineLocale('sw', {
35546        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
35547            '_'
35548        ),
35549        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
35550        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
35551            '_'
35552        ),
35553        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
35554        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
35555        weekdaysParseExact: true,
35556        longDateFormat: {
35557            LT: 'hh:mm A',
35558            LTS: 'HH:mm:ss',
35559            L: 'DD.MM.YYYY',
35560            LL: 'D MMMM YYYY',
35561            LLL: 'D MMMM YYYY HH:mm',
35562            LLLL: 'dddd, D MMMM YYYY HH:mm',
35563        },
35564        calendar: {
35565            sameDay: '[leo saa] LT',
35566            nextDay: '[kesho saa] LT',
35567            nextWeek: '[wiki ijayo] dddd [saat] LT',
35568            lastDay: '[jana] LT',
35569            lastWeek: '[wiki iliyopita] dddd [saat] LT',
35570            sameElse: 'L',
35571        },
35572        relativeTime: {
35573            future: '%s baadaye',
35574            past: 'tokea %s',
35575            s: 'hivi punde',
35576            ss: 'sekunde %d',
35577            m: 'dakika moja',
35578            mm: 'dakika %d',
35579            h: 'saa limoja',
35580            hh: 'masaa %d',
35581            d: 'siku moja',
35582            dd: 'siku %d',
35583            M: 'mwezi mmoja',
35584            MM: 'miezi %d',
35585            y: 'mwaka mmoja',
35586            yy: 'miaka %d',
35587        },
35588        week: {
35589            dow: 1, // Monday is the first day of the week.
35590            doy: 7, // The week that contains Jan 7th is the first week of the year.
35591        },
35592    });
35593
35594    return sw;
35595
35596})));
35597
35598
35599/***/ }),
35600/* 115 */
35601/***/ (function(module, exports, __webpack_require__) {
35602
35603//! moment.js locale configuration
35604//! locale : Tamil [ta]
35605//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
35606
35607;(function (global, factory) {
35608    true ? factory(__webpack_require__(0)) :
35609   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35610   factory(global.moment)
35611}(this, (function (moment) { 'use strict';
35612
35613    //! moment.js locale configuration
35614
35615    var symbolMap = {
35616            1: '௧',
35617            2: '௨',
35618            3: '௩',
35619            4: '௪',
35620            5: '௫',
35621            6: '௬',
35622            7: '௭',
35623            8: '௮',
35624            9: '௯',
35625            0: '௦',
35626        },
35627        numberMap = {
35628            '௧': '1',
35629            '௨': '2',
35630            '௩': '3',
35631            '௪': '4',
35632            '௫': '5',
35633            '௬': '6',
35634            '௭': '7',
35635            '௮': '8',
35636            '௯': '9',
35637            '௦': '0',
35638        };
35639
35640    var ta = moment.defineLocale('ta', {
35641        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்ப
35641ர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
35642            '_'
35643        ),
35644        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
35645            '_'
35646        ),
35647        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
35648            '_'
35649        ),
35650        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
35651            '_'
35652        ),
35653        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
35654        longDateFormat: {
35655            LT: 'HH:mm',
35656            LTS: 'HH:mm:ss',
35657            L: 'DD/MM/YYYY',
35658            LL: 'D MMMM YYYY',
35659            LLL: 'D MMMM YYYY, HH:mm',
35660            LLLL: 'dddd, D MMMM YYYY, HH:mm',
35661        },
35662        calendar: {
35663            sameDay: '[இன்று] LT',
35664            nextDay: '[நாளை] LT',
35665            nextWeek: 'dddd, LT',
35666            lastDay: '[நேற்று] LT',
35667            lastWeek: '[கடந்த வாரம்] dddd, LT',
35668            sameElse: 'L',
35669        },
35670        relativeTime: {
35671            future: '%s இல்',
35672            past: '%s முன்',
35673            s: 'ஒரு சில விநாடிகள்',
35674            ss: '%d விநாடிகள்',
35675            m: 'ஒரு நிமிடம்',
35676            mm: '%d நிமிடங்கள்',
35677            h: 'ஒரு மணி நேரம்',
35678            hh: '%d மணி நேரம்',
35679            d: 'ஒரு நாள்',
35680            dd: '%d நாட்கள்',
35681            M: 'ஒரு மாதம்',
35682            MM: '%d மாதங்கள்',
35683            y: 'ஒரு வருடம்',
35684            yy: '%d ஆண்டுகள்',
35685        },
35686        dayOfMonthOrdinalParse: /\d{1,2}வது/,
35687        ordinal: function (number) {
35688            return number + 'வது';
35689        },
35690        preparse: function (string) {
35691            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
35692                return numberMap[match];
35693            });
35694        },
35695        postformat: function (string) {
35696            return string.replace(/\d/g, function (match) {
35697                return symbolMap[match];
35698            });
35699        },
35700        // refer http://ta.wikipedia.org/s/1er1
35701        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
35702        meridiem: function (hour, minute, isLower) {
35703            if (hour < 2) {
35704                return ' யாமம்';
35705            } else if (hour < 6) {
35706                return ' வைகறை'; // வைகறை
35707            } else if (hour < 10) {
35708                return ' காலை'; // காலை
35709            } else if (hour < 14) {
35710                return ' நண்பகல்'; // நண்பகல்
35711            } else if (hour < 18) {
35712                return ' எற்பாடு'; // எற்பாடு
35713            } else if (hour < 22) {
35714                return ' மாலை'; // மாலை
35715            } else {
35716                return ' யாமம்';
35717            }
35718        },
35719        meridiemHour: function (hour, meridiem) {
35720            if (hour === 12) {
35721                hour = 0;
35722            }
35723            if (meridiem === 'யாமம்') {
35724                return hour < 2 ? hour : hour + 12;
35725            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
35726                return hour;
35727            } else if (meridiem === 'நண்பகல்') {
35728                return hour >= 10 ? hour : hour + 12;
35729            } else {
35730                return hour + 12;
35731            }
35732        },
35733        week: {
35734            dow: 0, // Sunday is the first day of the week.
35735            doy: 6, // The week that contains Jan 6th is the first week of the year.
35736        },
35737    });
35738
35739    return ta;
35740
35741})));
35742
35743
35744/***/ }),
35745/* 116 */
35746/***/ (function(module, exports, __webpack_require__) {
35747
35748//! moment.js locale configuration
35749//! locale : Telugu [te]
35750//! author : Krishna Chaitanya Thota : https://github.com/kcthota
35751
35752;(function (global, factory) {
35753    true ? factory(__webpack_require__(0)) :
35754   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35755   factory(global.moment)
35756}(this, (function (moment) { 'use strict';
35757
35758    //! moment.js locale configuration
35759
35760    var te = moment.defineLocale('te', {
35761        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
35762            '_'
35763        ),
35764        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
35765            '_'
35766        ),
35767        monthsParseExact: true,
35768        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
35769            '_'
35770        ),
35771        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
35772        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
35773        longDateFormat: {
35774            LT: 'A h:mm',
35775            LTS: 'A h:mm:ss',
35776            L: 'DD/MM/YYYY',
35777            LL: 'D MMMM YYYY',
35778            LLL: 'D MMMM YYYY, A h:mm',
35779            LLLL: 'dddd, D MMMM YYYY, A h:mm',
35780        },
35781        calendar: {
35782            sameDay: '[నేడు] LT',
35783            nextDay: '[రేపు] LT',
35784            nextWeek: 'dddd, LT',
35785            lastDay: '[నిన్న] LT',
35786            lastWeek: '[గత] dddd, LT',
35787            sameElse: 'L',
35788        },
35789        relativeTime: {
35790            future: '%s లో',
35791            past: '%s క్రితం',
35792            s: 'కొన్ని క్షణాలు',
35793            ss: '%d సెకన్లు',
35794            m: 'ఒక నిమిషం',
35795            mm: '%d నిమిషాలు',
35796            h: 'ఒక గంట',
35797            hh: '%d గంటలు',
35798            d: 'ఒక రోజు',
35799            dd: '%d రోజులు',
35800            M: 'ఒక నెల',
35801            MM: '%d నెలలు',
35802            y: 'ఒక సంవత్సరం',
35803            yy: '%d సంవత్సరాలు',
35804        },
35805        dayOfMonthOrdinalParse: /\d{1,2}à°µ/,
35806        ordinal: '%dà°µ',
35807        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
35808        meridiemHour: function (hour, meridiem) {
35809            if (hour === 12) {
35810                hour = 0;
35811            }
35812            if (meridiem === 'రాత్రి') {
35813                return hour < 4 ? hour : hour + 12;
35814            } else if (meridiem === 'ఉదయం') {
35815                return hour;
35816            } else if (meridiem === 'మధ్యాహ్నం') {
35817                return hour >= 10 ? hour : hour + 12;
35818            } else if (meridiem === 'సాయంత్రం') {
35819                return hour + 12;
35820            }
35821        },
35822        meridiem: function (hour, minute, isLower) {
35823            if (hour < 4) {
35824                return 'రాత్రి';
35825            } else if (hour < 10) {
35826                return 'ఉదయం';
35827            } else if (hour < 17) {
35828                return 'మధ్యాహ్నం';
35829            } else if (hour < 20) {
35830                return 'సాయంత్రం';
35831            } else {
35832                return 'రాత్రి';
35833            }
35834        },
35835        week: {
35836            dow: 0, // Sunday is the first day of the week.
35837            doy: 6, // The week that contains Jan 6th is the first week of the year.
35838        },
35839    });
35840
35841    return te;
35842
35843})));
35844
35845
35846/***/ }),
35847/* 117 */
35848/***/ (function(module, exports, __webpack_require__) {
35849
35850//! moment.js locale configuration
35851//! locale : Tetun Dili (East Timor) [tet]
35852//! author : Joshua Brooks : https://github.com/joshbrooks
35853//! author : Onorio De J. Afonso : https://github.com/marobo
35854//! author : Sonia Simoes : https://github.com/soniasimoes
35855
35856;(function (global, factory) {
35857    true ? factory(__webpack_require__(0)) :
35858   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35859   factory(global.moment)
35860}(this, (function (moment) { 'use strict';
35861
35862    //! moment.js locale configuration
35863
35864    var tet = moment.defineLocale('tet', {
35865        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
35866            '_'
35867        ),
35868        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
35869        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
35870        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
35871        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
35872        longDateFormat: {
35873            LT: 'HH:mm',
35874            LTS: 'HH:mm:ss',
35875            L: 'DD/MM/YYYY',
35876            LL: 'D MMMM YYYY',
35877            LLL: 'D MMMM YYYY HH:mm',
35878            LLLL: 'dddd, D MMMM YYYY HH:mm',
35879        },
35880        calendar: {
35881            sameDay: '[Ohin iha] LT',
35882            nextDay: '[Aban iha] LT',
35883            nextWeek: 'dddd [iha] LT',
35884            lastDay: '[Horiseik iha] LT',
35885            lastWeek: 'dddd [semana kotuk] [iha] LT',
35886            sameElse: 'L',
35887        },
35888        relativeTime: {
35889            future: 'iha %s',
35890            past: '%s liuba',
35891            s: 'segundu balun',
35892            ss: 'segundu %d',
35893            m: 'minutu ida',
35894            mm: 'minutu %d',
35895            h: 'oras ida',
35896            hh: 'oras %d',
35897            d: 'loron ida',
35898            dd: 'loron %d',
35899            M: 'fulan ida',
35900            MM: 'fulan %d',
35901            y: 'tinan ida',
35902            yy: 'tinan %d',
35903        },
35904        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
35905        ordinal: function (number) {
35906            var b = number % 10,
35907                output =
35908                    ~~((number % 100) / 10) === 1
35909                        ? 'th'
35910                        : b === 1
35911                        ? 'st'
35912                        : b === 2
35913                        ? 'nd'
35914                        : b === 3
35915                        ? 'rd'
35916                        : 'th';
35917            return number + output;
35918        },
35919        week: {
35920            dow: 1, // Monday is the first day of the week.
35921            doy: 4, // The week that contains Jan 4th is the first week of the year.
35922        },
35923    });
35924
35925    return tet;
35926
35927})));
35928
35929
35930/***/ }),
35931/* 118 */
35932/***/ (function(module, exports, __webpack_require__) {
35933
35934//! moment.js locale configuration
35935//! locale : Tajik [tg]
35936//! author : Orif N. Jr. : https://github.com/orif-jr
35937
35938;(function (global, factory) {
35939    true ? factory(__webpack_require__(0)) :
35940   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35941   factory(global.moment)
35942}(this, (function (moment) { 'use strict';
35943
35944    //! moment.js locale configuration
35945
35946    var suffixes = {
35947        0: '-ум',
35948        1: '-ум',
35949        2: '-юм',
35950        3: '-юм',
35951        4: '-ум',
35952        5: '-ум',
35953        6: '-ум',
35954        7: '-ум',
35955        8: '-ум',
35956        9: '-ум',
35957        10: '-ум',
35958        12: '-ум',
35959        13: '-ум',
35960        20: '-ум',
35961        30: '-юм',
35962        40: '-ум',
35963        50: '-ум',
35964        60: '-ум',
35965        70: '-ум',
35966        80: '-ум',
35967        90: '-ум',
35968        100: '-ум',
35969    };
35970
35971    var tg = moment.defineLocale('tg', {
35972        months: {
35973            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
35974                '_'
35975            ),
35976            standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
35977                '_'
35978            ),
35979        },
35980        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
35981        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
35982            '_'
35983        ),
35984        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
35985        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
35986        longDateFormat: {
35987            LT: 'HH:mm',
35988            LTS: 'HH:mm:ss',
35989            L: 'DD.MM.YYYY',
35990            LL: 'D MMMM YYYY',
35991            LLL: 'D MMMM YYYY HH:mm',
35992            LLLL: 'dddd, D MMMM YYYY HH:mm',
35993        },
35994        calendar: {
35995            sameDay: '[Имрӯз соати] LT',
35996            nextDay: '[Фардо соати] LT',
35997            lastDay: '[Дирӯз соати] LT',
35998            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
35999            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
36000            sameElse: 'L',
36001        },
36002        relativeTime: {
36003            future: 'баъди %s',
36004            past: '%s пеш',
36005            s: 'якчанд сония',
36006            m: 'як дақиқа',
36007            mm: '%d дақиқа',
36008            h: 'як соат',
36009            hh: '%d соат',
36010            d: 'як рӯз',
36011            dd: '%d рӯз',
36012            M: 'як моҳ',
36013            MM: '%d моҳ',
36014            y: 'як сол',
36015            yy: '%d сол',
36016        },
36017        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
36018        meridiemHour: function (hour, meridiem) {
36019            if (hour === 12) {
36020                hour = 0;
36021            }
36022            if (meridiem === 'шаб') {
36023                return hour < 4 ? hour : hour + 12;
36024            } else if (meridiem === 'субҳ') {
36025                return hour;
36026            } else if (meridiem === 'рӯз') {
36027                return hour >= 11 ? hour : hour + 12;
36028            } else if (meridiem === 'бегоҳ') {
36029                return hour + 12;
36030            }
36031        },
36032        meridiem: function (hour, minute, isLower) {
36033            if (hour < 4) {
36034                return 'шаб';
36035            } else if (hour < 11) {
36036                return 'субҳ';
36037            } else if (hour < 16) {
36038                return 'рӯз';
36039            } else if (hour < 19) {
36040                return 'бегоҳ';
36041            } else {
36042                return 'шаб';
36043            }
36044        },
36045        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
36046        ordinal: function (number) {
36047            var a = number % 10,
36048                b = number >= 100 ? 100 : null;
36049            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
36050        },
36051        week: {
36052            dow: 1, // Monday is the first day of the week.
36053            doy: 7, // The week that contains Jan 1th is the first week of the year.
36054        },
36055    });
36056
36057    return tg;
36058
36059})));
36060
36061
36062/***/ }),
36063/* 119 */
36064/***/ (function(module, exports, __webpack_require__) {
36065
36066//! moment.js locale configuration
36067//! locale : Thai [th]
36068//! author : Kridsada Thanabulpong : https://github.com/sirn
36069
36070;(function (global, factory) {
36071    true ? factory(__webpack_require__(0)) :
36072   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36073   factory(global.moment)
36074}(this, (function (moment) { 'use strict';
36075
36076    //! moment.js locale configuration
36077
36078    var th = moment.defineLocale('th', {
36079        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
36080            '_'
36081        ),
36082        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
36083            '_'
36084        ),
36085        monthsParseExact: true,
36086        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.
vendor: 7,079 bytes, lines 36086-36301
36086split('_'),
36087        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
36088        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
36089        weekdaysParseExact: true,
36090        longDateFormat: {
36091            LT: 'H:mm',
36092            LTS: 'H:mm:ss',
36093            L: 'DD/MM/YYYY',
36094            LL: 'D MMMM YYYY',
36095            LLL: 'D MMMM YYYY เวลา H:mm',
36096            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
36097        },
36098        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
36099        isPM: function (input) {
36100            return input === 'หลังเที่ยง';
36101        },
36102        meridiem: function (hour, minute, isLower) {
36103            if (hour < 12) {
36104                return 'ก่อนเที่ยง';
36105            } else {
36106                return 'หลังเที่ยง';
36107            }
36108        },
36109        calendar: {
36110            sameDay: '[วันนี้ เวลา] LT',
36111            nextDay: '[พรุ่งนี้ เวลา] LT',
36112            nextWeek: 'dddd[หน้า เวลา] LT',
36113            lastDay: '[เมื่อวานนี้ เวลา] LT',
36114            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
36115            sameElse: 'L',
36116        },
36117        relativeTime: {
36118            future: 'อีก %s',
36119            past: '%sที่แล้ว',
36120            s: 'ไม่กี่วินาที',
36121            ss: '%d วินาที',
36122            m: '1 นาที',
36123            mm: '%d นาที',
36124            h: '1 ชั่วโมง',
36125            hh: '%d ชั่วโมง',
36126            d: '1 วัน',
36127            dd: '%d วัน',
36128            w: '1 สัปดาห์',
36129            ww: '%d สัปดาห์',
36130            M: '1 เดือน',
36131            MM: '%d เดือน',
36132            y: '1 ปี',
36133            yy: '%d ปี',
36134        },
36135    });
36136
36137    return th;
36138
36139})));
36140
36141
36142/***/ }),
36143/* 120 */
36144/***/ (function(module, exports, __webpack_require__) {
36145
36146//! moment.js locale configuration
36147//! locale : Turkmen [tk]
36148//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
36149
36150;(function (global, factory) {
36151    true ? factory(__webpack_require__(0)) :
36152   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36153   factory(global.moment)
36154}(this, (function (moment) { 'use strict';
36155
36156    //! moment.js locale configuration
36157
36158    var suffixes = {
36159        1: "'inji",
36160        5: "'inji",
36161        8: "'inji",
36162        70: "'inji",
36163        80: "'inji",
36164        2: "'nji",
36165        7: "'nji",
36166        20: "'nji",
36167        50: "'nji",
36168        3: "'ünji",
36169        4: "'ünji",
36170        100: "'ünji",
36171        6: "'njy",
36172        9: "'unjy",
36173        10: "'unjy",
36174        30: "'unjy",
36175        60: "'ynjy",
36176        90: "'ynjy",
36177    };
36178
36179    var tk = moment.defineLocale('tk', {
36180        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
36181            '_'
36182        ),
36183        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
36184        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
36185            '_'
36186        ),
36187        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
36188        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
36189        longDateFormat: {
36190            LT: 'HH:mm',
36191            LTS: 'HH:mm:ss',
36192            L: 'DD.MM.YYYY',
36193            LL: 'D MMMM YYYY',
36194            LLL: 'D MMMM YYYY HH:mm',
36195            LLLL: 'dddd, D MMMM YYYY HH:mm',
36196        },
36197        calendar: {
36198            sameDay: '[bugün sagat] LT',
36199            nextDay: '[ertir sagat] LT',
36200            nextWeek: '[indiki] dddd [sagat] LT',
36201            lastDay: '[düýn] LT',
36202            lastWeek: '[geçen] dddd [sagat] LT',
36203            sameElse: 'L',
36204        },
36205        relativeTime: {
36206            future: '%s soň',
36207            past: '%s öň',
36208            s: 'birnäçe sekunt',
36209            m: 'bir minut',
36210            mm: '%d minut',
36211            h: 'bir sagat',
36212            hh: '%d sagat',
36213            d: 'bir gün',
36214            dd: '%d gün',
36215            M: 'bir aý',
36216            MM: '%d aý',
36217            y: 'bir ýyl',
36218            yy: '%d ýyl',
36219        },
36220        ordinal: function (number, period) {
36221            switch (period) {
36222                case 'd':
36223                case 'D':
36224                case 'Do':
36225                case 'DD':
36226                    return number;
36227                default:
36228                    if (number === 0) {
36229                        // special case for zero
36230                        return number + "'unjy";
36231                    }
36232                    var a = number % 10,
36233                        b = (number % 100) - a,
36234                        c = number >= 100 ? 100 : null;
36235                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
36236            }
36237        },
36238        week: {
36239            dow: 1, // Monday is the first day of the week.
36240            doy: 7, // The week that contains Jan 7th is the first week of the year.
36241        },
36242    });
36243
36244    return tk;
36245
36246})));
36247
36248
36249/***/ }),
36250/* 121 */
36251/***/ (function(module, exports, __webpack_require__) {
36252
36253//! moment.js locale configuration
36254//! locale : Tagalog (Philippines) [tl-ph]
36255//! author : Dan Hagman : https://github.com/hagmandan
36256
36257;(function (global, factory) {
36258    true ? factory(__webpack_require__(0)) :
36259   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36260   factory(global.moment)
36261}(this, (function (moment) { 'use strict';
36262
36263    //! moment.js locale configuration
36264
36265    var tlPh = moment.defineLocale('tl-ph', {
36266        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
36267            '_'
36268        ),
36269        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
36270        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
36271            '_'
36272        ),
36273        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
36274        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
36275        longDateFormat: {
36276            LT: 'HH:mm',
36277            LTS: 'HH:mm:ss',
36278            L: 'MM/D/YYYY',
36279            LL: 'MMMM D, YYYY',
36280            LLL: 'MMMM D, YYYY HH:mm',
36281            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
36282        },
36283        calendar: {
36284            sameDay: 'LT [ngayong araw]',
36285            nextDay: '[Bukas ng] LT',
36286            nextWeek: 'LT [sa susunod na] dddd',
36287            lastDay: 'LT [kahapon]',
36288            lastWeek: 'LT [noong nakaraang] dddd',
36289            sameElse: 'L',
36290        },
36291        relativeTime: {
36292            future: 'sa loob ng %s',
36293            past: '%s ang nakalipas',
36294            s: 'ilang segundo',
36295            ss: '%d segundo',
36296            m: 'isang minuto',
36297            mm: '%d minuto',
36298            h: 'isang oras',
36299            hh: '%d oras',
36300            d: 'isang araw',
36301            dd: '%d araw',
36302            M: 'isang buwan',
36303            MM: '%d buwan',
36304            y: 'isang taon',
36305            yy: '%d taon',
36306        },
36307        dayOfMonthOrdinalParse: /\d{1,2}/,
36308        ordinal: function (number) {
36309            return number;
36310        },
36311        week: {
36312            dow: 1, // Monday is the first day of the week.
36313            doy: 4, // The week that contains Jan 4th is the first week of the year.
36314        },
36315    });
36316
36317    return tlPh;
36318
36319})));
36320
36321
36322/***/ }),
36323/* 122 */
36324/***/ (function(module, exports, __webpack_require__) {
36325
36326//! moment.js locale configuration
36327//! locale : Klingon [tlh]
36328//! author : Dominika Kruk : https://github.com/amaranthrose
36329
36330;(function (global, factory) {
36331    true ? factory(__webpack_require__(0)) :
36332   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36333   factory(global.moment)
36334}(this, (function (moment) { 'use strict';
36335
36336    //! moment.js locale configuration
36337
36338    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
36339
36340    function translateFuture(output) {
36341        var time = output;
36342        time =
36343            output.indexOf('jaj') !== -1
36344                ? time.slice(0, -3) + 'leS'
36345                : output.indexOf('jar') !== -1
36346                ? time.slice(0, -3) + 'waQ'
36347                : output.indexOf('DIS') !== -1
36348                ? time.slice(0, -3) + 'nem'
36349                : time + ' pIq';
36350        return time;
36351    }
36352
36353    function translatePast(output) {
36354        var time = output;
36355        time =
36356            output.indexOf('jaj') !== -1
36357                ? time.slice(0, -3) + 'Hu’'
36358                : output.indexOf('jar') !== -1
36359                ? time.slice(0, -3) + 'wen'
36360                : output.indexOf('DIS') !== -1
36361                ? time.slice(0, -3) + 'ben'
36362                : time + ' ret';
36363        return time;
36364    }
36365
36366    function translate(number, withoutSuffix, string, isFuture) {
36367        var numberNoun = numberAsNoun(number);
36368        switch (string) {
36369            case 'ss':
36370                return numberNoun + ' lup';
36371            case 'mm':
36372                return numberNoun + ' tup';
36373            case 'hh':
36374                return numberNoun + ' rep';
36375            case 'dd':
36376                return numberNoun + ' jaj';
36377            case 'MM':
36378                return numberNoun + ' jar';
36379            case 'yy':
36380                return numberNoun + ' DIS';
36381        }
36382    }
36383
36384    function numberAsNoun(number) {
36385        var hundred = Math.floor((number % 1000) / 100),
36386            ten = Math.floor((number % 100) / 10),
36387            one = number % 10,
36388            word = '';
36389        if (hundred > 0) {
36390            word += numbersNouns[hundred] + 'vatlh';
36391        }
36392        if (ten > 0) {
36393            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
36394        }
36395        if (one > 0) {
36396            word += (word !== '' ? ' ' : '') + numbersNouns[one];
36397        }
36398        return word === '' ? 'pagh' : word;
36399    }
36400
36401    var tlh = moment.defineLocale('tlh', {
36402        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
36403            '_'
36404        ),
36405        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
36406            '_'
36407        ),
36408        monthsParseExact: true,
36409        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
36410            '_'
36411        ),
36412        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
36413            '_'
36414        ),
36415        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
36416            '_'
36417        ),
36418        longDateFormat: {
36419            LT: 'HH:mm',
36420            LTS: 'HH:mm:ss',
36421            L: 'DD.MM.YYYY',
36422            LL: 'D MMMM YYYY',
36423            LLL: 'D MMMM YYYY HH:mm',
36424            LLLL: 'dddd, D MMMM YYYY HH:mm',
36425        },
36426        calendar: {
36427            sameDay: '[DaHjaj] LT',
36428            nextDay: '[wa’leS] LT',
36429            nextWeek: 'LLL',
36430            lastDay: '[wa’Hu’] LT',
36431            lastWeek: 'LLL',
36432            sameElse: 'L',
36433        },
36434        relativeTime: {
36435            future: translateFuture,
36436            past: translatePast,
36437            s: 'puS lup',
36438            ss: translate,
36439            m: 'wa’ tup',
36440            mm: translate,
36441            h: 'wa’ rep',
36442            hh: translate,
36443            d: 'wa’ jaj',
36444            dd: translate,
36445            M: 'wa’ jar',
36446            MM: translate,
36447            y: 'wa’ DIS',
36448            yy: translate,
36449        },
36450        dayOfMonthOrdinalParse: /\d{1,2}\./,
36451        ordinal: '%d.',
36452        week: {
36453            dow: 1, // Monday is the first day of the week.
36454            doy: 4, // The week that contains Jan 4th is the first week of the year.
36455        },
36456    });
36457
36458    return tlh;
36459
36460})));
36461
36462
36463/***/ }),
36464/* 123 */
36465/***/ (function(module, exports, __webpack_require__) {
36466
36467//! moment.js locale configuration
36468//! locale : Turkish [tr]
36469//! authors : Erhan Gundogan : https://github.com/erhangundogan,
36470//!           Burak Yiğit Kaya: https://github.com/BYK
36471
36472;(function (global, factory) {
36473    true ? factory(__webpack_require__(0)) :
36474   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36475   factory(global.moment)
36476}(this, (function (moment) { 'use strict';
36477
36478    //! moment.js locale configuration
36479
36480    var suffixes = {
36481        1: "'inci",
36482        5: "'inci",
36483        8: "'inci",
36484        70: "'inci",
36485        80: "'inci",
36486        2: "'nci",
36487        7: "'nci",
36488        20: "'nci",
36489        50: "'nci",
36490        3: "'üncü",
36491        4: "'üncü",
36492        100: "'üncü",
36493        6: "'ncı",
36494        9: "'uncu",
36495        10: "'uncu",
36496        30: "'uncu",
36497        60: "'ıncı",
36498        90: "'ıncı",
36499    };
36500
36501    var tr = moment.defineLocale('tr', {
36502        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
36503            '_'
36504        ),
36505        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
36506        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
36507            '_'
36508        ),
36509        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
36510        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
36511        meridiem: function (hours, minutes, isLower) {
36512            if (hours < 12) {
36513                return isLower ? 'öö' : 'ÖÖ';
36514            } else {
36515                return isLower ? 'ös' : 'ÖS';
36516            }
36517        },
36518        meridiemParse: /öö|ÖÖ|ös|ÖS/,
36519        isPM: function (input) {
36520            return input === 'ös' || input === 'ÖS';
36521        },
36522        longDateFormat: {
36523            LT: 'HH:mm',
36524            LTS: 'HH:mm:ss',
36525            L: 'DD.MM.YYYY',
36526            LL: 'D MMMM YYYY',
36527            LLL: 'D MMMM YYYY HH:mm',
36528            LLLL: 'dddd, D MMMM YYYY HH:mm',
36529        },
36530        calendar: {
36531            sameDay: '[bugün saat] LT',
36532            nextDay: '[yarın saat] LT',
36533            nextWeek: '[gelecek] dddd [saat] LT',
36534            lastDay: '[dün] LT',
36535            lastWeek: '[geçen] dddd [saat] LT',
36536            sameElse: 'L',
36537        },
36538        relativeTime: {
36539            future: '%s sonra',
36540            past: '%s önce',
36541            s: 'birkaç saniye',
36542            ss: '%d saniye',
36543            m: 'bir dakika',
36544            mm: '%d dakika',
36545            h: 'bir saat',
36546            hh: '%d saat',
36547            d: 'bir gün',
36548            dd: '%d gün',
36549            w: 'bir hafta',
36550            ww: '%d hafta',
36551            M: 'bir ay',
36552            MM: '%d ay',
36553            y: 'bir yıl',
36554            yy: '%d yıl',
36555        },
36556        ordinal: function (number, period) {
36557            switch (period) {
36558                case 'd':
36559                case 'D':
36560                case 'Do':
36561                case 'DD':
36562                    return number;
36563                default:
36564                    if (number === 0) {
36565                        // special case for zero
36566                        return number + "'ıncı";
36567                    }
36568                    var a = number % 10,
36569                        b = (number % 100) - a,
36570                        c = number >= 100 ? 100 : null;
36571                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
36572            }
36573        },
36574        week: {
36575            dow: 1, // Monday is the first day of the week.
36576            doy: 7, // The week that contains Jan 7th is the first week of the year.
36577        },
36578    });
36579
36580    return tr;
36581
36582})));
36583
36584
36585/***/ }),
36586/* 124 */
36587/***/ (function(module, exports, __webpack_require__) {
36588
36589//! moment.js locale configuration
36590//! locale : Talossan [tzl]
36591//! author : Robin van der Vliet : https://github.com/robin0van0der0v
36592//! author : Iustì Canun
36593
36594;(function (global, factory) {
36595    true ? factory(__webpack_require__(0)) :
36596   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36597   factory(global.moment)
36598}(this, (function (moment) { 'use strict';
36599
36600    //! moment.js locale configuration
36601
36602    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
36603    // This is currently too difficult (maybe even impossible) to add.
36604    var tzl = moment.defineLocale('tzl', {
36605        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
36606            '_'
36607        ),
36608        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
36609        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
36610        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
36611        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
36612        longDateFormat: {
36613            LT: 'HH.mm',
36614            LTS: 'HH.mm.ss',
36615            L: 'DD.MM.YYYY',
36616            LL: 'D. MMMM [dallas] YYYY',
36617            LLL: 'D. MMMM [dallas] YYYY HH.mm',
36618            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
36619        },
36620        meridiemParse: /d\'o|d\'a/i,
36621        isPM: function (input) {
36622            return "d'o" === input.toLowerCase();
36623        },
36624        meridiem: function (hours, minutes, isLower) {
36625            if (hours > 11) {
36626                return isLower ? "d'o" : "D'O";
36627            } else {
36628                return isLower ? "d'a" : "D'A";
36629            }
36630        },
36631        calendar: {
36632            sameDay: '[oxhi à] LT',
36633            nextDay: '[demà à] LT',
36634            nextWeek: 'dddd [à] LT',
36635            lastDay: '[ieiri à] LT',
36636            lastWeek: '[sür el] dddd [lasteu à] LT',
36637            sameElse: 'L',
36638        },
36639        relativeTime: {
36640            future: 'osprei %s',
36641            past: 'ja%s',
36642            s: processRelativeTime,
36643            ss: processRelativeTime,
36644            m: processRelativeTime,
36645            mm: processRelativeTime,
36646            h: processRelativeTime,
36647            hh: processRelativeTime,
36648            d: processRelativeTime,
36649            dd: processRelativeTime,
36650            M: processRelativeTime,
36651            MM: processRelativeTime,
36652            y: processRelativeTime,
36653            yy: processRelativeTime,
36654        },
36655        dayOfMonthOrdinalParse: /\d{1,2}\./,
36656        ordinal: '%d.',
36657        week: {
36658            dow: 1, // Monday is the first day of the week.
36659            doy: 4, // The week that contains Jan 4th is the first week of the year.
36660        },
36661    });
36662
36663    function processRelativeTime(number, withoutSuffix, key, isFuture) {
36664        var format = {
36665            s: ['viensas secunds', "'iensas secunds"],
36666            ss: [number + ' secunds', '' + number + ' secunds'],
36667            m: ["'n míut", "'iens míut"],
36668            mm: [number + ' míuts', '' + number + ' míuts'],
36669            h: ["'n þora", "'iensa þora"],
36670            hh: [number + ' þoras', '' + number + ' þoras'],
36671            d: ["'n ziua", "'iensa ziua"],
36672            dd: [number + ' ziuas', '' + number + ' ziuas'],
36673            M: ["'n mes", "'iens mes"],
36674            MM: [number + ' mesen', '' + number + ' mesen'],
36675            y: ["'n ar", "'iens ar"],
36676            yy: [number + ' ars', '' + number + ' ars'],
36677        };
36678        return isFuture
36679            ? format[key][0]
36680            : withoutSuffix
36681            ? format[key][0]
36682            : format[key][1];
36683    }
36684
36685    return tzl;
36686
36687})));
36688
36689
36690/***/ }),
36691/* 125 */
36692/***/ (function(module, exports, __webpack_require__) {
36693
36694//! moment.js locale configuration
36695//! locale : Central Atlas Tamazight [tzm]
36696//! author : Abdel Said : https://github.com/abdelsaid
36697
36698;(function (global, factory) {
36699    true ? factory(__webpack_require__(0)) :
36700   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36701   factory(global.moment)
36702}(this, (function (moment) { 'use strict';
36703
36704    //! moment.js locale configuration
36705
36706    var tzm = moment.defineLocale('tzm', {
36707        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
36708            '_'
36709        ),
36710        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
36711            '_'
36712        ),
36713        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
36714        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
36715        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
36716        longDateFormat: {
36717            LT: 'HH:mm',
36718            LTS: 'HH:mm:ss',
36719            L: 'DD/MM/YYYY',
36720            LL: 'D MMMM YYYY',
36721            LLL: 'D MMMM YYYY HH:mm',
36722            LLLL: 'dddd D MMMM YYYY HH:mm',
36723        },
36724        calendar: {
36725            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
36726            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
36727            nextWeek: 'dddd [â´´] LT',
36728            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
36729            lastWeek: 'dddd [â´´] LT',
36730            sameElse: 'L',
36731        },
36732        relativeTime: {
36733            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
36734            past: 'ⵢⴰⵏ %s',
36735            s: 'ⵉⵎⵉⴽ',
36736            ss: '%d ⵉⵎⵉⴽ',
36737            m: 'ⵎⵉⵏⵓⴺ',
36738            mm: '%d ⵎⵉⵏⵓⴺ',
36739            h: 'ⵙⴰⵄⴰ',
36740            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
36741            d: 'ⴰⵙⵙ',
36742            dd: '%d oⵙⵙⴰⵏ',
36743            M: 'ⴰⵢoⵓⵔ',
36744            MM: '%d ⵉⵢⵢⵉⵔⵏ',
36745            y: 'ⴰⵙⴳⴰⵙ',
36746            yy: '%d ⵉⵙⴳⴰⵙⵏ',
36747        },
36748        week: {
36749            dow: 6, // Saturday is the first day of the week.
36750            doy: 12, // The week that contains Jan 12th is the first week of the year.
36751        },
36752    });
36753
36754    return tzm;
36755
36756})));
36757
36758
36759/***/ }),
36760/* 126 */
36761/***/ (function(module, exports, __webpack_require__) {
36762
36763//! moment.js locale configuration
36764//! locale : Central Atlas Tamazight Latin [tzm-latn]
36765//! author : Abdel Said : https://github.com/abdelsaid
36766
36767;(function (global, factory) {
36768    true ? factory(__webpack_require__(0)) :
36769   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36770   factory(global.moment)
36771}(this, (function (moment) { 'use strict';
36772
36773    //! moment.js locale configuration
36774
36775    var tzmLatn = moment.defineLocale('tzm-latn', {
36776        months: 'innayr_brˤayrˤ_marˤsˤ_ibr
36776ir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
36777            '_'
36778        ),
36779        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
36780            '_'
36781        ),
36782        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
36783        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
36784        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
36785        longDateFormat: {
36786            LT: 'HH:mm',
36787            LTS: 'HH:mm:ss',
36788            L: 'DD/MM/YYYY',
36789            LL: 'D MMMM YYYY',
36790            LLL: 'D MMMM YYYY HH:mm',
36791            LLLL: 'dddd D MMMM YYYY HH:mm',
36792        },
36793        calendar: {
36794            sameDay: '[asdkh g] LT',
36795            nextDay: '[aska g] LT',
36796            nextWeek: 'dddd [g] LT',
36797            lastDay: '[assant g] LT',
36798            lastWeek: 'dddd [g] LT',
36799            sameElse: 'L',
36800        },
36801        relativeTime: {
36802            future: 'dadkh s yan %s',
36803            past: 'yan %s',
36804            s: 'imik',
36805            ss: '%d imik',
36806            m: 'minuḍ',
36807            mm: '%d minuḍ',
36808            h: 'saɛa',
36809            hh: '%d tassaɛin',
36810            d: 'ass',
36811            dd: '%d ossan',
36812            M: 'ayowr',
36813            MM: '%d iyyirn',
36814            y: 'asgas',
36815            yy: '%d isgasn',
36816        },
36817        week: {
36818            dow: 6, // Saturday is the first day of the week.
36819            doy: 12, // The week that contains Jan 12th is the first week of the year.
36820        },
36821    });
36822
36823    return tzmLatn;
36824
36825})));
36826
36827
36828/***/ }),
36829/* 127 */
36830/***/ (function(module, exports, __webpack_require__) {
36831
36832//! moment.js locale configuration
36833//! locale : Uyghur (China) [ug-cn]
36834//! author: boyaq : https://github.com/boyaq
36835
36836;(function (global, factory) {
36837    true ? factory(__webpack_require__(0)) :
36838   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36839   factory(global.moment)
36840}(this, (function (moment) { 'use strict';
36841
36842    //! moment.js locale configuration
36843
36844    var ugCn = moment.defineLocale('ug-cn', {
36845        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
36846            '_'
36847        ),
36848        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
36849            '_'
36850        ),
36851        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
36852            '_'
36853        ),
36854        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
36855        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
36856        longDateFormat: {
36857            LT: 'HH:mm',
36858            LTS: 'HH:mm:ss',
36859            L: 'YYYY-MM-DD',
36860            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
36861            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
36862            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
36863        },
36864        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
36865        meridiemHour: function (hour, meridiem) {
36866            if (hour === 12) {
36867                hour = 0;
36868            }
36869            if (
36870                meridiem === 'يېرىم كېچە' ||
36871                meridiem === 'سەھەر' ||
36872                meridiem === 'چۈشتىن بۇرۇن'
36873            ) {
36874                return hour;
36875            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
36876                return hour + 12;
36877            } else {
36878                return hour >= 11 ? hour : hour + 12;
36879            }
36880        },
36881        meridiem: function (hour, minute, isLower) {
36882            var hm = hour * 100 + minute;
36883            if (hm < 600) {
36884                return 'يېرىم كېچە';
36885            } else if (hm < 900) {
36886                return 'سەھەر';
36887            } else if (hm < 1130) {
vendor: 14,247 bytes, lines 36888-37302
36888                return 'چۈشتىن بۇرۇن';
36889            } else if (hm < 1230) {
36890                return 'چۈش';
36891            } else if (hm < 1800) {
36892                return 'چۈشتىن كېيىن';
36893            } else {
36894                return 'كەچ';
36895            }
36896        },
36897        calendar: {
36898            sameDay: '[بۈگۈن سائەت] LT',
36899            nextDay: '[ئەتە سائەت] LT',
36900            nextWeek: '[كېلەركى] dddd [سائەت] LT',
36901            lastDay: '[تۆنۈگۈن] LT',
36902            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
36903            sameElse: 'L',
36904        },
36905        relativeTime: {
36906            future: '%s كېيىن',
36907            past: '%s بۇرۇن',
36908            s: 'نەچچە سېكونت',
36909            ss: '%d سېكونت',
36910            m: 'بىر مىنۇت',
36911            mm: '%d مىنۇت',
36912            h: 'بىر سائەت',
36913            hh: '%d سائەت',
36914            d: 'بىر كۈن',
36915            dd: '%d كۈن',
36916            M: 'بىر ئاي',
36917            MM: '%d ئاي',
36918            y: 'بىر يىل',
36919            yy: '%d يىل',
36920        },
36921
36922        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
36923        ordinal: function (number, period) {
36924            switch (period) {
36925                case 'd':
36926                case 'D':
36927                case 'DDD':
36928                    return number + '-كۈنى';
36929                case 'w':
36930                case 'W':
36931                    return number + '-ھەپتە';
36932                default:
36933                    return number;
36934            }
36935        },
36936        preparse: function (string) {
36937            return string.replace(/،/g, ',');
36938        },
36939        postformat: function (string) {
36940            return string.replace(/,/g, '،');
36941        },
36942        week: {
36943            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
36944            dow: 1, // Monday is the first day of the week.
36945            doy: 7, // The week that contains Jan 1st is the first week of the year.
36946        },
36947    });
36948
36949    return ugCn;
36950
36951})));
36952
36953
36954/***/ }),
36955/* 128 */
36956/***/ (function(module, exports, __webpack_require__) {
36957
36958//! moment.js locale configuration
36959//! locale : Ukrainian [uk]
36960//! author : zemlanin : https://github.com/zemlanin
36961//! Author : Menelion Elensúle : https://github.com/Oire
36962
36963;(function (global, factory) {
36964    true ? factory(__webpack_require__(0)) :
36965   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36966   factory(global.moment)
36967}(this, (function (moment) { 'use strict';
36968
36969    //! moment.js locale configuration
36970
36971    function plural(word, num) {
36972        var forms = word.split('_');
36973        return num % 10 === 1 && num % 100 !== 11
36974            ? forms[0]
36975            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
36976            ? forms[1]
36977            : forms[2];
36978    }
36979    function relativeTimeWithPlural(number, withoutSuffix, key) {
36980        var format = {
36981            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
36982            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
36983            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
36984            dd: 'день_дні_днів',
36985            MM: 'місяць_місяці_місяців',
36986            yy: 'рік_роки_років',
36987        };
36988        if (key === 'm') {
36989            return withoutSuffix ? 'хвилина' : 'хвилину';
36990        } else if (key === 'h') {
36991            return withoutSuffix ? 'година' : 'годину';
36992        } else {
36993            return number + ' ' + plural(format[key], +number);
36994        }
36995    }
36996    function weekdaysCaseReplace(m, format) {
36997        var weekdays = {
36998                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
36999                    '_'
37000                ),
37001                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
37002                    '_'
37003                ),
37004                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
37005                    '_'
37006                ),
37007            },
37008            nounCase;
37009
37010        if (m === true) {
37011            return weekdays['nominative']
37012                .slice(1, 7)
37013                .concat(weekdays['nominative'].slice(0, 1));
37014        }
37015        if (!m) {
37016            return weekdays['nominative'];
37017        }
37018
37019        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
37020            ? 'accusative'
37021            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
37022            ? 'genitive'
37023            : 'nominative';
37024        return weekdays[nounCase][m.day()];
37025    }
37026    function processHoursFunction(str) {
37027        return function () {
37028            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
37029        };
37030    }
37031
37032    var uk = moment.defineLocale('uk', {
37033        months: {
37034            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
37035                '_'
37036            ),
37037            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
37038                '_'
37039            ),
37040        },
37041        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
37042            '_'
37043        ),
37044        weekdays: weekdaysCaseReplace,
37045        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
37046        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
37047        longDateFormat: {
37048            LT: 'HH:mm',
37049            LTS: 'HH:mm:ss',
37050            L: 'DD.MM.YYYY',
37051            LL: 'D MMMM YYYY р.',
37052            LLL: 'D MMMM YYYY р., HH:mm',
37053            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
37054        },
37055        calendar: {
37056            sameDay: processHoursFunction('[Сьогодні '),
37057            nextDay: processHoursFunction('[Завтра '),
37058            lastDay: processHoursFunction('[Вчора '),
37059            nextWeek: processHoursFunction('[У] dddd ['),
37060            lastWeek: function () {
37061                switch (this.day()) {
37062                    case 0:
37063                    case 3:
37064                    case 5:
37065                    case 6:
37066                        return processHoursFunction('[Минулої] dddd [').call(this);
37067                    case 1:
37068                    case 2:
37069                    case 4:
37070                        return processHoursFunction('[Минулого] dddd [').call(this);
37071                }
37072            },
37073            sameElse: 'L',
37074        },
37075        relativeTime: {
37076            future: 'за %s',
37077            past: '%s тому',
37078            s: 'декілька секунд',
37079            ss: relativeTimeWithPlural,
37080            m: relativeTimeWithPlural,
37081            mm: relativeTimeWithPlural,
37082            h: 'годину',
37083            hh: relativeTimeWithPlural,
37084            d: 'день',
37085            dd: relativeTimeWithPlural,
37086            M: 'місяць',
37087            MM: relativeTimeWithPlural,
37088            y: 'рік',
37089            yy: relativeTimeWithPlural,
37090        },
37091        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
37092        meridiemParse: /ночі|ранку|дня|вечора/,
37093        isPM: function (input) {
37094            return /^(дня|вечора)$/.test(input);
37095        },
37096        meridiem: function (hour, minute, isLower) {
37097            if (hour < 4) {
37098                return 'ночі';
37099            } else if (hour < 12) {
37100                return 'ранку';
37101            } else if (hour < 17) {
37102                return 'дня';
37103            } else {
37104                return 'вечора';
37105            }
37106        },
37107        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
37108        ordinal: function (number, period) {
37109            switch (period) {
37110                case 'M':
37111                case 'd':
37112                case 'DDD':
37113                case 'w':
37114                case 'W':
37115                    return number + '-й';
37116                case 'D':
37117                    return number + '-го';
37118                default:
37119                    return number;
37120            }
37121        },
37122        week: {
37123            dow: 1, // Monday is the first day of the week.
37124            doy: 7, // The week that contains Jan 7th is the first week of the year.
37125        },
37126    });
37127
37128    return uk;
37129
37130})));
37131
37132
37133/***/ }),
37134/* 129 */
37135/***/ (function(module, exports, __webpack_require__) {
37136
37137//! moment.js locale configuration
37138//! locale : Urdu [ur]
37139//! author : Sawood Alam : https://github.com/ibnesayeed
37140//! author : Zack : https://github.com/ZackVision
37141
37142;(function (global, factory) {
37143    true ? factory(__webpack_require__(0)) :
37144   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37145   factory(global.moment)
37146}(this, (function (moment) { 'use strict';
37147
37148    //! moment.js locale configuration
37149
37150    var months = [
37151            'جنوری',
37152            'فروری',
37153            'مارچ',
37154            'اپریل',
37155            'مئی',
37156            'جون',
37157            'جولائی',
37158            'اگست',
37159            'ستمبر',
37160            'اکتوبر',
37161            'نومبر',
37162            'دسمبر',
37163        ],
37164        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
37165
37166    var ur = moment.defineLocale('ur', {
37167        months: months,
37168        monthsShort: months,
37169        weekdays: days,
37170        weekdaysShort: days,
37171        weekdaysMin: days,
37172        longDateFormat: {
37173            LT: 'HH:mm',
37174            LTS: 'HH:mm:ss',
37175            L: 'DD/MM/YYYY',
37176            LL: 'D MMMM YYYY',
37177            LLL: 'D MMMM YYYY HH:mm',
37178            LLLL: 'dddd، D MMMM YYYY HH:mm',
37179        },
37180        meridiemParse: /صبح|شام/,
37181        isPM: function (input) {
37182            return 'شام' === input;
37183        },
37184        meridiem: function (hour, minute, isLower) {
37185            if (hour < 12) {
37186                return 'صبح';
37187            }
37188            return 'شام';
37189        },
37190        calendar: {
37191            sameDay: '[آج بوقت] LT',
37192            nextDay: '[کل بوقت] LT',
37193            nextWeek: 'dddd [بوقت] LT',
37194            lastDay: '[گذشتہ روز بوقت] LT',
37195            lastWeek: '[گذشتہ] dddd [بوقت] LT',
37196            sameElse: 'L',
37197        },
37198        relativeTime: {
37199            future: '%s بعد',
37200            past: '%s قبل',
37201            s: 'چند سیکنڈ',
37202            ss: '%d سیکنڈ',
37203            m: 'ایک منٹ',
37204            mm: '%d منٹ',
37205            h: 'ایک گھنٹہ',
37206            hh: '%d گھنٹے',
37207            d: 'ایک دن',
37208            dd: '%d دن',
37209            M: 'ایک ماہ',
37210            MM: '%d ماہ',
37211            y: 'ایک سال',
37212            yy: '%d سال',
37213        },
37214        preparse: function (string) {
37215            return string.replace(/،/g, ',');
37216        },
37217        postformat: function (string) {
37218            return string.replace(/,/g, '،');
37219        },
37220        week: {
37221            dow: 1, // Monday is the first day of the week.
37222            doy: 4, // The week that contains Jan 4th is the first week of the year.
37223        },
37224    });
37225
37226    return ur;
37227
37228})));
37229
37230
37231/***/ }),
37232/* 130 */
37233/***/ (function(module, exports, __webpack_require__) {
37234
37235//! moment.js locale configuration
37236//! locale : Uzbek [uz]
37237//! author : Sardor Muminov : https://github.com/muminoff
37238
37239;(function (global, factory) {
37240    true ? factory(__webpack_require__(0)) :
37241   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37242   factory(global.moment)
37243}(this, (function (moment) { 'use strict';
37244
37245    //! moment.js locale configuration
37246
37247    var uz = moment.defineLocale('uz', {
37248        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
37249            '_'
37250        ),
37251        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
37252        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
37253        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
37254        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
37255        longDateFormat: {
37256            LT: 'HH:mm',
37257            LTS: 'HH:mm:ss',
37258            L: 'DD/MM/YYYY',
37259            LL: 'D MMMM YYYY',
37260            LLL: 'D MMMM YYYY HH:mm',
37261            LLLL: 'D MMMM YYYY, dddd HH:mm',
37262        },
37263        calendar: {
37264            sameDay: '[Бугун соат] LT [да]',
37265            nextDay: '[Эртага] LT [да]',
37266            nextWeek: 'dddd [куни соат] LT [да]',
37267            lastDay: '[Кеча соат] LT [да]',
37268            lastWeek: '[Утган] dddd [куни соат] LT [да]',
37269            sameElse: 'L',
37270        },
37271        relativeTime: {
37272            future: 'Якин %s ичида',
37273            past: 'Бир неча %s олдин',
37274            s: 'фурсат',
37275            ss: '%d фурсат',
37276            m: 'бир дакика',
37277            mm: '%d дакика',
37278            h: 'бир соат',
37279            hh: '%d соат',
37280            d: 'бир кун',
37281            dd: '%d кун',
37282            M: 'бир ой',
37283            MM: '%d ой',
37284            y: 'бир йил',
37285            yy: '%d йил',
37286        },
37287        week: {
37288            dow: 1, // Monday is the first day of the week.
37289            doy: 7, // The week that contains Jan 4th is the first week of the year.
37290        },
37291    });
37292
37293    return uz;
37294
37295})));
37296
37297
37298/***/ }),
37299/* 131 */
37300/***/ (function(module, exports, __webpack_require__) {
37301
37302//! moment.js locale configuration
37303//! locale : Uzbek Latin [uz-latn]
37304//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
37305
37306;(function (global, factory) {
37307    true ? factory(__webpack_require__(0)) :
37308   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37309   factory(global.moment)
37310}(this, (function (moment) { 'use strict';
37311
37312    //! moment.js locale configuration
37313
37314    var uzLatn = moment.defineLocale('uz-latn', {
37315        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
37316            '_'
37317        ),
37318        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
37319        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
37320            '_'
37321        ),
37322        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
37323        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
37324        longDateFormat: {
37325            LT: 'HH:mm',
37326            LTS: 'HH:mm:ss',
37327            L: 'DD/MM/YYYY',
37328            LL: 'D MMMM YYYY',
37329            LLL: 'D MMMM YYYY HH:mm',
37330            LLLL: 'D MMMM YYYY, dddd HH:mm',
37331        },
37332        calendar: {
37333            sameDay: '[Bugun soat] LT [da]',
37334            nextDay: '[Ertaga] LT [da]',
37335            nextWeek: 'dddd [kuni soat] LT [da]',
37336            lastDay: '[Kecha soat] LT [da]',
37337            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
37338            sameElse: 'L',
37339        },
37340        relativeTime: {
37341            future: 'Yaqin %s ichida',
37342            past: 'Bir necha %s oldin',
37343            s: 'soniya',
37344            ss: '%d soniya',
37345            m: 'bir daqiqa',
37346            mm: '%d daqiqa',
37347            h: 'bir soat',
37348            hh: '%d soat',
37349            d: 'bir kun',
37350            dd: '%d kun',
37351            M: 'bir oy',
37352            MM: '%d oy',
37353            y: 'bir yil',
37354            yy: '%d yil',
37355        },
37356        week: {
37357            dow: 1, // Monday is the first day of the week.
37358            doy: 7, // The week that contains Jan 7th is the first week of the year.
37359        },
37360    });
37361
37362    return uzLatn;
37363
37364})));
37365
37366
37367/***/ }),
37368/* 132 */
37369/***/ (function(module, exports, __webpack_require__) {
37370
37371//! moment.js locale configuration
37372//! locale : Vietnamese [vi]
37373//! author : Bang Nguyen : https://github.com/bangnk
37374//! author : Chien Kira : https://github.com/chienkira
37375
37376;(function (global, factory) {
37377    true ? factory(__webpack_require__(0)) :
37378   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37379   factory(global.moment)
37380}(this, (function (moment) { 'use strict';
37381
37382    //! moment.js locale configuration
37383
37384    var vi = moment.defineLocale('vi', {
37385        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
37386            '_'
37387        ),
37388        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
37389            '_'
37390        ),
37391        monthsParseExact: true,
37392        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
37393            '_'
37394        ),
37395        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
37396        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
37397        weekdaysParseExact: true,
37398        meridiemParse: /sa|ch/i,
37399        isPM: function (input) {
37400            return /^ch$/i.test(input);
37401        },
37402        meridiem: function (hours, minutes, isLower) {
37403            if (hours < 12) {
37404                return isLower ? 'sa' : 'SA';
37405            } else {
37406                return isLower ? 'ch' : 'CH';
37407            }
37408        },
37409        longDateFormat: {
37410            LT: 'HH:mm',
37411            LTS: 'HH:mm:ss',
37412            L: 'DD/MM/YYYY',
37413            LL: 'D MMMM [năm] YYYY',
37414            LLL: 'D MMMM [năm] YYYY HH:mm',
37415            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
37416            l: 'DD/M/YYYY',
37417            ll: 'D MMM YYYY',
37418            lll: 'D MMM YYYY HH:mm',
37419            llll: 'ddd, D MMM YYYY HH:mm',
37420        },
37421        calendar: {
37422            sameDay: '[Hôm nay lúc] LT',
37423            nextDay: '[Ngày mai lúc] LT',
37424            nextWeek: 'dddd [tuần tới lúc] LT',
37425            lastDay: '[Hôm qua lúc] LT',
37426            lastWeek: 'dddd [tuần trước lúc] LT',
37427            sameElse: 'L',
37428        },
37429        relativeTime: {
37430            future: '%s tới',
37431            past: '%s trước',
37432            s: 'vài giây',
37433            ss: '%d giây',
37434            m: 'một phút',
37435            mm: '%d phút',
37436            h: 'một giờ',
37437            hh: '%d giờ',
37438            d: 'một ngày',
37439            dd: '%d ngày',
37440            w: 'một tuần',
37441            ww: '%d tuần',
37442            M: 'một tháng',
37443            MM: '%d tháng',
37444            y: 'một năm',
37445            yy: '%d năm',
37446        },
37447        dayOfMonthOrdinalParse: /\d{1,2}/,
37448        ordinal: function (number) {
37449            return number;
37450        },
37451        week: {
37452            dow: 1, // Monday is the first day of the week.
37453            doy: 4, // The week that contains Jan 4th is the first week of the year.
37454        },
37455    });
37456
37457    return vi;
37458
37459})));
37460
37461
37462/***/ }),
37463/* 133 */
37464/***/ (function(module, exports, __webpack_require__) {
37465
37466//! moment.js locale configuration
37467//! locale : Pseudo [x-pseudo]
37468//! author : Andrew Hood : https://github.com/andrewhood125
37469
37470;(function (global, factory) {
37471    true ? factory(__webpack_require__(0)) :
37472   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37473   factory(global.moment)
37474}(this, (function (moment) { 'use strict';
37475
37476    //! moment.js locale configuration
37477
37478    var xPseudo = moment.defineLocale('x-pseudo', {
37479        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
37480            '_'
37481        ),
37482        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.
37482split(
37483            '_'
37484        ),
37485        monthsParseExact: true,
37486        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
37487            '_'
37488        ),
37489        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
37490        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
37491        weekdaysParseExact: true,
37492        longDateFormat: {
37493            LT: 'HH:mm',
37494            L: 'DD/MM/YYYY',
37495            LL: 'D MMMM YYYY',
37496            LLL: 'D MMMM YYYY HH:mm',
37497            LLLL: 'dddd, D MMMM YYYY HH:mm',
37498        },
37499        calendar: {
37500            sameDay: '[T~ódá~ý át] LT',
37501            nextDay: '[T~ómó~rró~w át] LT',
37502            nextWeek: 'dddd [át] LT',
37503            lastDay: '[Ý~ést~érdá~ý át] LT',
37504            lastWeek: '[L~ást] dddd [át] LT',
37505            sameElse: 'L',
37506        },
37507        relativeTime: {
37508            future: 'í~ñ %s',
37509            past: '%s á~gó',
37510            s: 'á ~féw ~sécó~ñds',
37511            ss: '%d s~écóñ~ds',
37512            m: 'á ~míñ~úté',
37513            mm: '%d m~íñú~tés',
37514            h: 'á~ñ hó~úr',
37515            hh: '%d h~óúrs',
37516            d: 'á ~dáý',
37517            dd: '%d d~áýs',
37518            M: 'á ~móñ~th',
37519            MM: '%d m~óñt~hs',
37520            y: 'á ~ýéár',
37521            yy: '%d ý~éárs',
37522        },
37523        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
37524        ordinal: function (number) {
37525            var b = number % 10,
37526                output =
37527                    ~~((number % 100) / 10) === 1
37528                        ? 'th'
37529                        : b === 1
37530                        ? 'st'
37531                        : b === 2
37532                        ? 'nd'
37533                        : b === 3
37534                        ? 'rd'
37535                        : 'th';
37536            return number + output;
37537        },
37538        week: {
37539            dow: 1, // Monday is the first day of the week.
37540            doy: 4, // The week that contains Jan 4th is the first week of the year.
37541        },
37542    });
37543
37544    return xPseudo;
37545
37546})));
37547
37548
37549/***/ }),
37550/* 134 */
37551/***/ (function(module, exports, __webpack_require__) {
37552
37553//! moment.js locale configuration
37554//! locale : Yoruba Nigeria [yo]
37555//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
37556
37557;(function (global, factory) {
37558    true ? factory(__webpack_require__(0)) :
37559   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37560   factory(global.moment)
37561}(this, (function (moment) { 'use strict';
37562
37563    //! moment.js locale configuration
37564
37565    var yo = moment.defineLocale('yo', {
37566        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
37567            '_'
37568        ),
37569        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
37570        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
37571        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
37572        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
37573        longDateFormat: {
37574            LT: 'h:mm A',
37575            LTS: 'h:mm:ss A',
37576            L: 'DD/MM/YYYY',
37577            LL: 'D MMMM YYYY',
37578            LLL: 'D MMMM YYYY h:mm A',
37579            LLLL: 'dddd, D MMMM YYYY h:mm A',
37580        },
37581        calendar: {
37582            sameDay: '[Ònì ni] LT',
37583            nextDay: '[Ọ̀la ni] LT',
37584            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
37585            lastDay: '[Àna ni] LT',
37586            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
37587            sameElse: 'L',
37588        },
37589        relativeTime: {
37590            future: 'ní %s',
37591            past: '%s kọjá',
37592            s: 'ìsẹjú aayá die',
37593            ss: 'aayá %d',
37594            m: 'ìsẹjú kan',
37595            mm: 'ìsẹjú %d',
37596            h: 'wákati kan',
37597            hh: 'wákati %d',
37598            d: 'ọjọ́ kan',
37599            dd: 'ọjọ́ %d',
37600            M: 'osù kan',
37601            MM: 'osù %d',
37602            y: 'ọdún kan',
37603            yy: 'ọdún %d',
37604        },
37605        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
37606        ordinal: 'ọjọ́ %d',
37607        week: {
37608            dow: 1, // Monday is the first day of the week.
37609            doy: 4, // The week that contains Jan 4th is the first week of the year.
37610        },
37611    });
37612
37613    return yo;
37614
37615})));
37616
37617
37618/***/ }),
37619/* 135 */
37620/***/ (function(module, exports, __webpack_require__) {
37621
37622//! moment.js locale configuration
37623//! locale : Chinese (China) [zh-cn]
37624//! author : suupic : https://github.com/suupic
37625//! author : Zeno Zeng : https://github.com/zenozeng
37626//! author : uu109 : https://github.com/uu109
37627
37628;(function (global, factory) {
37629    true ? factory(__webpack_require__(0)) :
37630   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37631   factory(global.moment)
37632}(this, (function (moment) { 'use strict';
37633
37634    //! moment.js locale configuration
37635
37636    var zhCn = moment.defineLocale('zh-cn', {
37637        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
37638            '_'
37639        ),
37640        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
37641            '_'
37642        ),
37643        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
37644        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
37645        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
37646        longDateFormat: {
37647            LT: 'HH:mm',
37648            LTS: 'HH:mm:ss',
37649            L: 'YYYY/MM/DD',
37650            LL: 'YYYY年M月D日',
37651            LLL: 'YYYY年M月D日Ah点mm分',
37652            LLLL: 'YYYY年M月D日ddddAh点mm分',
37653            l: 'YYYY/M/D',
37654            ll: 'YYYY年M月D日',
37655            lll: 'YYYY年M月D日 HH:mm',
37656            llll: 'YYYY年M月D日dddd HH:mm',
37657        },
37658        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
37659        meridiemHour: function (hour, meridiem) {
37660            if (hour === 12) {
37661                hour = 0;
37662            }
37663            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
37664                return hour;
37665            } else if (meridiem === '下午' || meridiem === '晚上') {
37666                return hour + 12;
37667            } else {
37668                // '中午'
37669                return hour >= 11 ? hour : hour + 12;
37670            }
37671        },
37672        meridiem: function (hour, minute, isLower) {
37673            var hm = hour * 100 + minute;
37674            if (hm < 600) {
37675                return '凌晨';
37676            } else if (hm < 900) {
37677                return '早上';
37678            } else if (hm < 1130) {
37679                return '上午';
37680            } else if (hm < 1230) {
37681                return '中午';
37682            } else if (hm < 1800) {
37683                return '下午';
37684            } else {
37685                return '晚上';
37686            }
37687        },
37688        calendar: {
37689            sameDay: '[今天]LT',
37690            nextDay: '[明天]LT',
37691            nextWeek: function (now) {
37692                if (now.week() !== this.week()) {
37693                    return '[下]dddLT';
37694                } else {
37695                    return '[本]dddLT';
37696                }
37697            },
37698            lastDay: '[昨天]LT',
37699            lastWeek: function (now) {
37700                if (this.week() !== now.week()) {
37701                    return '[上]dddLT';
37702                } else {
37703                    return '[本]dddLT';
37704                }
37705            },
37706            sameElse: 'L',
37707        },
37708        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
37709        ordinal: function (number, period) {
37710            switch (period) {
37711                case 'd':
37712                case 'D':
37713                case 'DDD':
37714                    return number + '日';
37715                case 'M':
37716                    return number + '月';
37717                case 'w':
37718                case 'W':
37719                    return number + '周';
37720                default:
37721                    return number;
37722            }
37723        },
37724        relativeTime: {
37725            future: '%s后',
37726            past: '%s前',
37727            s: '几秒',
37728            ss: '%d 秒',
37729            m: '1 分钟',
37730            mm: '%d 分钟',
37731            h: '1 小时',
37732            hh: '%d 小时',
37733            d: '1 天',
37734            dd: '%d 天',
37735            w: '1 周',
37736            ww: '%d 周',
37737            M: '1 个月',
37738            MM: '%d 个月',
37739            y: '1 å¹´',
37740            yy: '%d å¹´',
37741        },
37742        week: {
37743            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
37744            dow: 1, // Monday is the first day of the week.
37745            doy: 4, // The week that contains Jan 4th is the first week of the year.
37746        },
37747    });
37748
37749    return zhCn;
37750
37751})));
37752
37753
37754/***/ }),
37755/* 136 */
37756/***/ (function(module, exports, __webpack_require__) {
37757
37758//! moment.js locale configuration
37759//! locale : Chinese (Hong Kong) [zh-hk]
37760//! author : Ben : https://github.com/ben-lin
37761//! author : Chris Lam : https://github.com/hehachris
37762//! author : Konstantin : https://github.com/skfd
37763//! author : Anthony : https://github.com/anthonylau
37764
37765;(function (global, factory) {
37766    true ? factory(__webpack_require__(0)) :
37767   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37768   factory(global.moment)
37769}(this, (function (moment) { 'use strict';
37770
37771    //! moment.js locale configuration
37772
37773    var zhHk = moment.defineLocale('zh-hk', {
37774        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
37775            '_'
37776        ),
37777        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
37778            '_'
37779        ),
37780        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
37781        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
37782        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
37783        longDateFormat: {
37784            LT: 'HH:mm',
37785            LTS: 'HH:mm:ss',
37786            L: 'YYYY/MM/DD',
37787            LL: 'YYYY年M月D日',
37788            LLL: 'YYYY年M月D日 HH:mm',
37789            LLLL: 'YYYY年M月D日dddd HH:mm',
37790            l: 'YYYY/M/D',
37791            ll: 'YYYY年M月D日',
37792            lll: 'YYYY年M月D日 HH:mm',
37793            llll: 'YYYY年M月D日dddd HH:mm',
37794        },
37795        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
37796        meridiemHour: function (hour, meridiem) {
37797            if (hour === 12) {
37798                hour = 0;
37799            }
37800            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
37801                return hour;
37802            } else if (meridiem === '中午') {
37803                return hour >= 11 ? hour : hour + 12;
37804            } else if (meridiem === '下午' || meridiem === '晚上') {
37805                return hour + 12;
37806            }
37807        },
37808        meridiem: function (hour, minute, isLower) {
37809            var hm = hour * 100 + minute;
37810            if (hm < 600) {
37811                return '凌晨';
37812            } else if (hm < 900) {
37813                return '早上';
37814            } else if (hm < 1200) {
37815                return '上午';
37816            } else if (hm === 1200) {
37817                return '中午';
37818            } else if (hm < 1800) {
37819                return '下午';
37820            } else {
37821                return '晚上';
37822            }
37823        },
37824        calendar: {
37825            sameDay: '[今天]LT',
37826            nextDay: '[明天]LT',
37827            nextWeek: '[下]ddddLT',
37828            lastDay: '[昨天]LT',
37829            lastWeek: '[上]ddddLT',
37830            sameElse: 'L',
37831        },
37832        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
37833        ordinal: function (number, period) {
37834            switch (period) {
37835                case 'd':
37836                case 'D':
37837                case 'DDD':
37838                    return number + '日';
37839                case 'M':
37840                    return number + '月';
37841                case 'w':
37842                case 'W':
37843                    return number + '週';
37844                default:
37845                    return number;
37846            }
37847        },
37848        relativeTime: {
37849            future: '%s後',
37850            past: '%s前',
37851            s: '幾秒',
37852            ss: '%d 秒',
37853            m: '1 分鐘',
37854            mm: '%d 分鐘',
37855            h: '1 小時',
37856            hh: '%d 小時',
37857            d: '1 天',
37858            dd: '%d 天',
37859            M: '1 個月',
37860            MM: '%d 個月',
37861            y: '1 å¹´',
37862            yy: '%d å¹´',
37863        },
37864    });
37865
37866    return zhHk;
37867
37868})));
37869
37870
37871/***/ }),
37872/* 137 */
37873/***/ (function(module, exports, __webpack_require__) {
37874
37875//! moment.js locale configuration
37876//! locale : Chinese (Macau) [zh-mo]
37877//! author : Ben : https://github.com/ben-lin
37878//! author : Chris Lam : https://github.com/hehachris
37879//! author : Tan Yuanhong : https://github.com/le0tan
37880
37881;(function (global, factory) {
37882    true ? factory(__webpack_require__(0)) :
37883   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37884   factory(global.moment)
37885}(this, (function (moment) { 'use strict';
37886
37887    //! moment.js locale configuration
37888
37889    var zhMo = moment.defineLocale('zh-mo', {
37890        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
37891            '_'
37892        ),
37893        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
37894            '_'
37895        ),
37896        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
37897        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
37898        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
37899        longDateFormat: {
37900            LT: 'HH:mm',
37901            LTS: 'HH:mm:ss',
37902            L: 'DD/MM/YYYY',
37903            LL: 'YYYY年M月D日',
37904            LLL: 'YYYY年M月D日 HH:mm',
37905            LLLL: 'YYYY年M月D日dddd HH:mm',
37906            l: 'D/M/YYYY',
37907            ll: 'YYYY年M月D日',
37908            lll: 'YYYY年M月D日 HH:mm',
37909            llll: 'YYYY年M月D日dddd HH:mm',
37910        },
37911        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
37912        meridiemHour: function (hour, meridiem) {
37913            if (hour === 12) {
37914                hour = 0;
37915            }
37916            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
37917                return hour;
37918            } else if (meridiem === '中午') {
37919                return hour >= 11 ? hour : hour + 12;
37920            } else if (meridiem === '下午' || meridiem === '晚上') {
37921                return hour + 12;
37922            }
37923        },
37924        meridiem: function (hour, minute, isLower) {
37925            var hm = hour * 100 + minute;
37926            if (hm < 600) {
37927                return '凌晨';
37928            } else if (hm < 900) {
37929                return '早上';
37930            } else if (hm < 1130) {
37931                return '上午';
37932            } else if (hm < 1230) {
37933                return '中午';
37934            } else if (hm < 1800) {
37935                return '下午';
37936            } else {
37937                return '晚上';
37938            }
37939        },
37940        calendar: {
37941            sameDay: '[今天] LT',
37942            nextDay: '[明天] LT',
37943            nextWeek: '[下]dddd LT',
37944            lastDay: '[昨天] LT',
37945            lastWeek: '[上]dddd LT',
37946            sameElse: 'L',
37947        },
37948        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
37949        ordinal: function (number, period) {
37950            switch (period) {
37951                case 'd':
37952                case 'D':
37953                case 'DDD':
37954                    return number + '日';
37955                case 'M':
37956                    return number + '月';
37957                case 'w':
37958                case 'W':
37959                    return number + '週';
37960                default:
37961                    return number;
37962            }
37963        },
37964        relativeTime: {
37965            future: '%s內',
37966            past: '%s前',
37967            s: '幾秒',
37968            ss: '%d 秒',
37969            m: '1 分鐘',
37970            mm: '%d 分鐘',
37971            h: '1 小時',
37972            hh: '%d 小時',
37973            d: '1 天',
37974            dd: '%d 天',
37975            M: '1 個月',
37976            MM: '%d 個月',
37977            y: '1 å¹´',
37978            yy: '%d å¹´',
37979        },
37980    });
37981
37982    return zhMo;
37983
37984})));
37985
37986
37987/***/ }),
37988/* 138 */
37989/***/ (function(module, exports, __webpack_require__) {
37990
37991//! moment.js locale configuration
37992//! locale : Chinese (Taiwan) [zh-tw]
37993//! author : Ben : https://github.com/ben-lin
37994//! author : Chris Lam : https://github.com/hehachris
37995
37996;(function (global, factory) {
37997    true ? factory(__webpack_require__(0)) :
37998   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37999   factory(global.moment)
38000}(this, (function (moment) { 'use strict';
38001
38002    //! moment.js locale configuration
38003
38004    var zhTw = moment.defineLocale('zh-tw', {
38005        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
38006            '_'
38007        ),
38008        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
38009            '_'
38010        ),
38011        weekdays: '星期日_æ
38011˜ŸæœŸä¸€_星期二_星期三_星期四_星期五_星期六'.split('_'),
38012        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
38013        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
38014        longDateFormat: {
38015            LT: 'HH:mm',
38016            LTS: 'HH:mm:ss',
38017            L: 'YYYY/MM/DD',
38018            LL: 'YYYY年M月D日',
38019            LLL: 'YYYY年M月D日 HH:mm',
38020            LLLL: 'YYYY年M月D日dddd HH:mm',
38021            l: 'YYYY/M/D',
38022            ll: 'YYYY年M月D日',
38023            lll: 'YYYY年M月D日 HH:mm',
38024            llll: 'YYYY年M月D日dddd HH:mm',
38025        },
38026        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
38027        meridiemHour: function (hour, meridiem) {
38028            if (hour === 12) {
38029                hour = 0;
38030            }
38031            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
38032                return hour;
38033            } else if (meridiem === '中午') {
38034                return hour >= 11 ? hour : hour + 12;
38035            } else if (meridiem === '下午' || meridiem === '晚上') {
38036                return hour + 12;
38037            }
38038        },
38039        meridiem: function (hour, minute, isLower) {
38040            var hm = hour * 100 + minute;
38041            if (hm < 600) {
38042                return '凌晨';
38043            } else if (hm < 900) {
38044                return '早上';
38045            } else if (hm < 1130) {
38046                return '上午';
38047            } else if (hm < 1230) {
38048                return '中午';
38049            } else if (hm < 1800) {
38050                return '下午';
38051            } else {
38052                return '晚上';
38053            }
38054        },
38055        calendar: {
38056            sameDay: '[今天] LT',
38057            nextDay: '[明天] LT',
38058            nextWeek: '[下]dddd LT',
38059            lastDay: '[昨天] LT',
38060            lastWeek: '[上]dddd LT',
38061            sameElse: 'L',
38062        },
38063        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
38064        ordinal: function (number, period) {
38065            switch (period) {
38066                case 'd':
38067                case 'D':
38068                case 'DDD':
38069                    return number + '日';
38070                case 'M':
38071                    return number + '月';
38072                case 'w':
38073                case 'W':
38074                    return number + '週';
38075                default:
38076                    return number;
38077            }
38078        },
38079        relativeTime: {
38080            future: '%s後',
38081            past: '%s前',
38082            s: '幾秒',
38083            ss: '%d 秒',
38084            m: '1 分鐘',
38085            mm: '%d 分鐘',
38086            h: '1 小時',
38087            hh: '%d 小時',
38088            d: '1 天',
38089            dd: '%d 天',
38090            M: '1 個月',
38091            MM: '%d 個月',
38092            y: '1 å¹´',
38093            yy: '%d å¹´',
38094        },
38095    });
38096
38097    return zhTw;
38098
38099})));
38100
38101
38102/***/ }),
38103/* 139 */
38104/***/ (function(module, exports, __webpack_require__) {
38105
38106__webpack_require__(140);
38107__webpack_require__(164);
38108module.exports = __webpack_require__(165);
38109
38110
38111/***/ }),
38112/* 140 */
38113/***/ (function(module, __webpack_exports__, __webpack_require__) {
38114
38115"use strict";
38116Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
38117/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_whatwg_fetch__ = __webpack_require__(141);
38118/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__modules_BetterNav__ = __webpack_require__(142);
38119/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__modules_Carousels__ = __webpack_require__(144);
38120/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__modules_SocialMedia__ = __webpack_require__(145);
38121/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__modules_MomentResolver__ = __webpack_require__(150);
38122/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__modules_YearSelector__ = __webpack_require__(155);
38123/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__modules_Navigation__ = __webpack_require__(156);
38124/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__modules_MenuToggle__ = __webpack_require__(157);
38125/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__all_blacks_javascript_modules_ScheduledBanner__ = __webpack_require__(159);
38126
38127
38128
38129
38130
38131
38132
38133
38134
38135
38136var existingOnload = window.onload;
38137window.onload = function () {
38138    if (existingOnload) {
38139        existingOnload();
38140    }
38141
38142    jQuery.noConflict();
38143    __WEBPACK_IMPORTED_MODULE_1__modules_BetterNav__["a" /* default */].init();
38144    __WEBPACK_IMPORTED_MODULE_2__modules_Carousels__["a" /* default */].init();
38145    __WEBPACK_IMPORTED_MODULE_3__modules_SocialMedia__["a" /* default */].init();
38146    __WEBPACK_IMPORTED_MODULE_4__modules_MomentResolver__["a" /* default */].init();
38147    __WEBPACK_IMPORTED_MODULE_5__modules_YearSelector__["a" /* default */].init();
38148    __WEBPACK_IMPORTED_MODULE_6__modules_Navigation__["a" /* default */].init();
vendor: 9,252 bytes, lines 38149-38494
38149    Object(__WEBPACK_IMPORTED_MODULE_7__modules_MenuToggle__["a" /* default */])();
38150    Object(__WEBPACK_IMPORTED_MODULE_8__all_blacks_javascript_modules_ScheduledBanner__["a" /* default */])();
38151};
38152
38153/***/ }),
38154/* 141 */
38155/***/ (function(module, __webpack_exports__, __webpack_require__) {
38156
38157"use strict";
38158/* unused harmony export Headers */
38159/* unused harmony export Request */
38160/* unused harmony export Response */
38161/* unused harmony export DOMException */
38162/* unused harmony export fetch */
38163var global =
38164  (typeof globalThis !== 'undefined' && globalThis) ||
38165  (typeof self !== 'undefined' && self) ||
38166  (typeof global !== 'undefined' && global)
38167
38168var support = {
38169  searchParams: 'URLSearchParams' in global,
38170  iterable: 'Symbol' in global && 'iterator' in Symbol,
38171  blob:
38172    'FileReader' in global &&
38173    'Blob' in global &&
38174    (function() {
38175      try {
38176        new Blob()
38177        return true
38178      } catch (e) {
38179        return false
38180      }
38181    })(),
38182  formData: 'FormData' in global,
38183  arrayBuffer: 'ArrayBuffer' in global
38184}
38185
38186function isDataView(obj) {
38187  return obj && DataView.prototype.isPrototypeOf(obj)
38188}
38189
38190if (support.arrayBuffer) {
38191  var viewClasses = [
38192    '[object Int8Array]',
38193    '[object Uint8Array]',
38194    '[object Uint8ClampedArray]',
38195    '[object Int16Array]',
38196    '[object Uint16Array]',
38197    '[object Int32Array]',
38198    '[object Uint32Array]',
38199    '[object Float32Array]',
38200    '[object Float64Array]'
38201  ]
38202
38203  var isArrayBufferView =
38204    ArrayBuffer.isView ||
38205    function(obj) {
38206      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
38207    }
38208}
38209
38210function normalizeName(name) {
38211  if (typeof name !== 'string') {
38212    name = String(name)
38213  }
38214  if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
38215    throw new TypeError('Invalid character in header field name: "' + name + '"')
38216  }
38217  return name.toLowerCase()
38218}
38219
38220function normalizeValue(value) {
38221  if (typeof value !== 'string') {
38222    value = String(value)
38223  }
38224  return value
38225}
38226
38227// Build a destructive iterator for the value list
38228function iteratorFor(items) {
38229  var iterator = {
38230    next: function() {
38231      var value = items.shift()
38232      return {done: value === undefined, value: value}
38233    }
38234  }
38235
38236  if (support.iterable) {
38237    iterator[Symbol.iterator] = function() {
38238      return iterator
38239    }
38240  }
38241
38242  return iterator
38243}
38244
38245function Headers(headers) {
38246  this.map = {}
38247
38248  if (headers instanceof Headers) {
38249    headers.forEach(function(value, name) {
38250      this.append(name, value)
38251    }, this)
38252  } else if (Array.isArray(headers)) {
38253    headers.forEach(function(header) {
38254      this.append(header[0], header[1])
38255    }, this)
38256  } else if (headers) {
38257    Object.getOwnPropertyNames(headers).forEach(function(name) {
38258      this.append(name, headers[name])
38259    }, this)
38260  }
38261}
38262
38263Headers.prototype.append = function(name, value) {
38264  name = normalizeName(name)
38265  value = normalizeValue(value)
38266  var oldValue = this.map[name]
38267  this.map[name] = oldValue ? oldValue + ', ' + value : value
38268}
38269
38270Headers.prototype['delete'] = function(name) {
38271  delete this.map[normalizeName(name)]
38272}
38273
38274Headers.prototype.get = function(name) {
38275  name = normalizeName(name)
38276  return this.has(name) ? this.map[name] : null
38277}
38278
38279Headers.prototype.has = function(name) {
38280  return this.map.hasOwnProperty(normalizeName(name))
38281}
38282
38283Headers.prototype.set = function(name, value) {
38284  this.map[normalizeName(name)] = normalizeValue(value)
38285}
38286
38287Headers.prototype.forEach = function(callback, thisArg) {
38288  for (var name in this.map) {
38289    if (this.map.hasOwnProperty(name)) {
38290      callback.call(thisArg, this.map[name], name, this)
38291    }
38292  }
38293}
38294
38295Headers.prototype.keys = function() {
38296  var items = []
38297  this.forEach(function(value, name) {
38298    items.push(name)
38299  })
38300  return iteratorFor(items)
38301}
38302
38303Headers.prototype.values = function() {
38304  var items = []
38305  this.forEach(function(value) {
38306    items.push(value)
38307  })
38308  return iteratorFor(items)
38309}
38310
38311Headers.prototype.entries = function() {
38312  var items = []
38313  this.forEach(function(value, name) {
38314    items.push([name, value])
38315  })
38316  return iteratorFor(items)
38317}
38318
38319if (support.iterable) {
38320  Headers.prototype[Symbol.iterator] = Headers.prototype.entries
38321}
38322
38323function consumed(body) {
38324  if (body.bodyUsed) {
38325    return Promise.reject(new TypeError('Already read'))
38326  }
38327  body.bodyUsed = true
38328}
38329
38330function fileReaderReady(reader) {
38331  return new Promise(function(resolve, reject) {
38332    reader.onload = function() {
38333      resolve(reader.result)
38334    }
38335    reader.onerror = function() {
38336      reject(reader.error)
38337    }
38338  })
38339}
38340
38341function readBlobAsArrayBuffer(blob) {
38342  var reader = new FileReader()
38343  var promise = fileReaderReady(reader)
38344  reader.readAsArrayBuffer(blob)
38345  return promise
38346}
38347
38348function readBlobAsText(blob) {
38349  var reader = new FileReader()
38350  var promise = fileReaderReady(reader)
38351  reader.readAsText(blob)
38352  return promise
38353}
38354
38355function readArrayBufferAsText(buf) {
38356  var view = new Uint8Array(buf)
38357  var chars = new Array(view.length)
38358
38359  for (var i = 0; i < view.length; i++) {
38360    chars[i] = String.fromCharCode(view[i])
38361  }
38362  return chars.join('')
38363}
38364
38365function bufferClone(buf) {
38366  if (buf.slice) {
38367    return buf.slice(0)
38368  } else {
38369    var view = new Uint8Array(buf.byteLength)
38370    view.set(new Uint8Array(buf))
38371    return view.buffer
38372  }
38373}
38374
38375function Body() {
38376  this.bodyUsed = false
38377
38378  this._initBody = function(body) {
38379    /*
38380      fetch-mock wraps the Response object in an ES6 Proxy to
38381      provide useful test harness features such as flush. However, on
38382      ES5 browsers without fetch or Proxy support pollyfills must be used;
38383      the proxy-pollyfill is unable to proxy an attribute unless it exists
38384      on the object before the Proxy is created. This change ensures
38385      Response.bodyUsed exists on the instance, while maintaining the
38386      semantic of setting Request.bodyUsed in the constructor before
38387      _initBody is called.
38388    */
38389    this.bodyUsed = this.bodyUsed
38390    this._bodyInit = body
38391    if (!body) {
38392      this._bodyText = ''
38393    } else if (typeof body === 'string') {
38394      this._bodyText = body
38395    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
38396      this._bodyBlob = body
38397    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
38398      this._bodyFormData = body
38399    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
38400      this._bodyText = body.toString()
38401    } else if (support.arrayBuffer && support.blob && isDataView(body)) {
38402      this._bodyArrayBuffer = bufferClone(body.buffer)
38403      // IE 10-11 can't handle a DataView body.
38404      this._bodyInit = new Blob([this._bodyArrayBuffer])
38405    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
38406      this._bodyArrayBuffer = bufferClone(body)
38407    } else {
38408      this._bodyText = body = Object.prototype.toString.call(body)
38409    }
38410
38411    if (!this.headers.get('content-type')) {
38412      if (typeof body === 'string') {
38413        this.headers.set('content-type', 'text/plain;charset=UTF-8')
38414      } else if (this._bodyBlob && this._bodyBlob.type) {
38415        this.headers.set('content-type', this._bodyBlob.type)
38416      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
38417        this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')
38418      }
38419    }
38420  }
38421
38422  if (support.blob) {
38423    this.blob = function() {
38424      var rejected = consumed(this)
38425      if (rejected) {
38426        return rejected
38427      }
38428
38429      if (this._bodyBlob) {
38430        return Promise.resolve(this._bodyBlob)
38431      } else if (this._bodyArrayBuffer) {
38432        return Promise.resolve(new Blob([this._bodyArrayBuffer]))
38433      } else if (this._bodyFormData) {
38434        throw new Error('could not read FormData body as blob')
38435      } else {
38436        return Promise.resolve(new Blob([this._bodyText]))
38437      }
38438    }
38439
38440    this.arrayBuffer = function() {
38441      if (this._bodyArrayBuffer) {
38442        var isConsumed = consumed(this)
38443        if (isConsumed) {
38444          return isConsumed
38445        }
38446        if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
38447          return Promise.resolve(
38448            this._bodyArrayBuffer.buffer.slice(
38449              this._bodyArrayBuffer.byteOffset,
38450              this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
38451            )
38452          )
38453        } else {
38454          return Promise.resolve(this._bodyArrayBuffer)
38455        }
38456      } else {
38457        return this.blob().then(readBlobAsArrayBuffer)
38458      }
38459    }
38460  }
38461
38462  this.text = function() {
38463    var rejected = consumed(this)
38464    if (rejected) {
38465      return rejected
38466    }
38467
38468    if (this._bodyBlob) {
38469      return readBlobAsText(this._bodyBlob)
38470    } else if (this._bodyArrayBuffer) {
38471      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
38472    } else if (this._bodyFormData) {
38473      throw new Error('could not read FormData body as text')
38474    } else {
38475      return Promise.resolve(this._bodyText)
38476    }
38477  }
38478
38479  if (support.formData) {
38480    this.formData = function() {
38481      return this.text().then(decode)
38482    }
38483  }
38484
38485  this.json = function() {
38486    return this.text().then(JSON.parse)
38487  }
38488
38489  return this
38490}
38491
38492// HTTP methods whose capitalization should be normalized
38493var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']
38494
vendor: 5,104 bytes, lines 38495-38663
38495function normalizeMethod(method) {
38496  var upcased = method.toUpperCase()
38497  return methods.indexOf(upcased) > -1 ? upcased : method
38498}
38499
38500function Request(input, options) {
38501  if (!(this instanceof Request)) {
38502    throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
38503  }
38504
38505  options = options || {}
38506  var body = options.body
38507
38508  if (input instanceof Request) {
38509    if (input.bodyUsed) {
38510      throw new TypeError('Already read')
38511    }
38512    this.url = input.url
38513    this.credentials = input.credentials
38514    if (!options.headers) {
38515      this.headers = new Headers(input.headers)
38516    }
38517    this.method = input.method
38518    this.mode = input.mode
38519    this.signal = input.signal
38520    if (!body && input._bodyInit != null) {
38521      body = input._bodyInit
38522      input.bodyUsed = true
38523    }
38524  } else {
38525    this.url = String(input)
38526  }
38527
38528  this.credentials = options.credentials || this.credentials || 'same-origin'
38529  if (options.headers || !this.headers) {
38530    this.headers = new Headers(options.headers)
38531  }
38532  this.method = normalizeMethod(options.method || this.method || 'GET')
38533  this.mode = options.mode || this.mode || null
38534  this.signal = options.signal || this.signal
38535  this.referrer = null
38536
38537  if ((this.method === 'GET' || this.method === 'HEAD') && body) {
38538    throw new TypeError('Body not allowed for GET or HEAD requests')
38539  }
38540  this._initBody(body)
38541
38542  if (this.method === 'GET' || this.method === 'HEAD') {
38543    if (options.cache === 'no-store' || options.cache === 'no-cache') {
38544      // Search for a '_' parameter in the query string
38545      var reParamSearch = /([?&])_=[^&]*/
38546      if (reParamSearch.test(this.url)) {
38547        // If it already exists then set the value with the current time
38548        this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())
38549      } else {
38550        // Otherwise add a new '_' parameter to the end with the current time
38551        var reQueryString = /\?/
38552        this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()
38553      }
38554    }
38555  }
38556}
38557
38558Request.prototype.clone = function() {
38559  return new Request(this, {body: this._bodyInit})
38560}
38561
38562function decode(body) {
38563  var form = new FormData()
38564  body
38565    .trim()
38566    .split('&')
38567    .forEach(function(bytes) {
38568      if (bytes) {
38569        var split = bytes.split('=')
38570        var name = split.shift().replace(/\+/g, ' ')
38571        var value = split.join('=').replace(/\+/g, ' ')
38572        form.append(decodeURIComponent(name), decodeURIComponent(value))
38573      }
38574    })
38575  return form
38576}
38577
38578function parseHeaders(rawHeaders) {
38579  var headers = new Headers()
38580  // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
38581  // https://tools.ietf.org/html/rfc7230#section-3.2
38582  var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ')
38583  // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill
38584  // https://github.com/github/fetch/issues/748
38585  // https://github.com/zloirock/core-js/issues/751
38586  preProcessedHeaders
38587    .split('\r')
38588    .map(function(header) {
38589      return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header
38590    })
38591    .forEach(function(line) {
38592      var parts = line.split(':')
38593      var key = parts.shift().trim()
38594      if (key) {
38595        var value = parts.join(':').trim()
38596        headers.append(key, value)
38597      }
38598    })
38599  return headers
38600}
38601
38602Body.call(Request.prototype)
38603
38604function Response(bodyInit, options) {
38605  if (!(this instanceof Response)) {
38606    throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
38607  }
38608  if (!options) {
38609    options = {}
38610  }
38611
38612  this.type = 'default'
38613  this.status = options.status === undefined ? 200 : options.status
38614  this.ok = this.status >= 200 && this.status < 300
38615  this.statusText = options.statusText === undefined ? '' : '' + options.statusText
38616  this.headers = new Headers(options.headers)
38617  this.url = options.url || ''
38618  this._initBody(bodyInit)
38619}
38620
38621Body.call(Response.prototype)
38622
38623Response.prototype.clone = function() {
38624  return new Response(this._bodyInit, {
38625    status: this.status,
38626    statusText: this.statusText,
38627    headers: new Headers(this.headers),
38628    url: this.url
38629  })
38630}
38631
38632Response.error = function() {
38633  var response = new Response(null, {status: 0, statusText: ''})
38634  response.type = 'error'
38635  return response
38636}
38637
38638var redirectStatuses = [301, 302, 303, 307, 308]
38639
38640Response.redirect = function(url, status) {
38641  if (redirectStatuses.indexOf(status) === -1) {
38642    throw new RangeError('Invalid status code')
38643  }
38644
38645  return new Response(null, {status: status, headers: {location: url}})
38646}
38647
38648var DOMException = global.DOMException
38649try {
38650  new DOMException()
38651} catch (err) {
38652  DOMException = function(message, name) {
38653    this.message = message
38654    this.name = name
38655    var error = Error(message)
38656    this.stack = error.stack
38657  }
38658  DOMException.prototype = Object.create(Error.prototype)
38659  DOMException.prototype.constructor = DOMException
38660}
38661
38662function fetch(input, init) {
38663  return new Promise(function(resolve, reject) {
38664    var request = new Request(input, init)
38665
38666    if (request.signal && request.signal.aborted) {
38667      return reject(new DOMException('Aborted', 'AbortError'))
38668    }
38669
38670    var xhr = new XMLHttpRequest()
38671
38672    function abortXhr() {
38673      xhr.abort()
38674    }
38675
38676    xhr.onload = function() {
38677      var options = {
38678        status: xhr.status,
38679        statusText: xhr.statusText,
38680        headers: parseHeaders(xhr.getAllResponseHeaders() || '')
38681      }
38682      options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')
38683      var body = 'response' in xhr ? xhr.response : xhr.responseText
38684      setTimeout(function() {
38685        resolve(new Response(body, options))
38686      }, 0)
38687    }
38688
38689    xhr.onerror = function() {
38690      setTimeout(function() {
38691        reject(new TypeError('Network request failed'))
38692      }, 0)
38693    }
38694
38695    xhr.ontimeout = function() {
38696      setTimeout(function() {
38697        reject(new TypeError('Network request failed'))
38698      }, 0)
38699    }
38700
38701    xhr.onabort = function() {
38702      setTimeout(function() {
38703        reject(new DOMException('Aborted', 'AbortError'))
38704      }, 0)
38705    }
38706
38707    function fixUrl(url) {
38708      try {
38709        return url === '' && global.location.href ? global.location.href : url
38710      } catch (e) {
38711        return url
38712      }
38713    }
38714
38715    xhr.open(request.method, fixUrl(request.url), true)
38716
38717    if (request.credentials === 'include') {
38718      xhr.withCredentials = true
38719    } else if (request.credentials === 'omit') {
38720      xhr.withCredentials = false
38721    }
38722
38723    if ('responseType' in xhr) {
38724      if (support.blob) {
38725        xhr.responseType = 'blob'
38726      } else if (
38727        support.arrayBuffer &&
38728        request.headers.get('Content-Type') &&
38729        request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1
38730      ) {
38731        xhr.responseType = 'arraybuffer'
38732      }
38733    }
38734
38735    if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {
38736      Object.getOwnPropertyNames(init.headers).forEach(function(name) {
38737        xhr.setRequestHeader(name, normalizeValue(init.headers[name]))
38738      })
38739    } else {
38740      request.headers.forEach(function(value, name) {
38741        xhr.setRequestHeader(name, value)
38742      })
38743    }
38744
38745    if (request.signal) {
38746      request.signal.addEventListener('abort', abortXhr)
38747
38748      xhr.onreadystatechange = function() {
38749        // DONE (success or failure)
38750        if (xhr.readyState === 4) {
38751          request.signal.removeEventListener('abort', abortXhr)
38752        }
38753      }
38754    }
38755
38756    xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)
38757  })
38758}
38759
38760fetch.polyfill = true
38761
38762if (!global.fetch) {
38763  global.fetch = fetch
38764  global.Headers = Headers
38765  global.Request = Request
38766  global.Response = Response
38767}
38768
38769
38770/***/ }),
38771/* 142 */
38772/***/ (function(module, __webpack_exports__, __webpack_require__) {
38773
38774"use strict";
38775/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash__ = __webpack_require__(1);
38776/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash__);
38777var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
38778
38779function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38780
38781
38782
38783var BetterNav = function () {
38784    function BetterNav() {
38785        _classCallCheck(this, BetterNav);
38786
38787        this.key = 'groot';
38788        this.isAdmin = this.checkIfAdmin();
38789    }
38790
38791    _createClass(BetterNav, [{
38792        key: 'init',
38793        value: function init() {
38794            var betterNavEl = document.getElementById('BetterNavigator');
38795            if (!betterNavEl) {
38796                return;
38797            }
38798
38799            if (this.isAdmin) {
38800                betterNavEl.style.display = 'block';
38801            } else {
38802                betterNavEl.parentNode.removeChild(betterNavEl); // IE doesn't support remove() native Javascript function but does support removeChild().
38803            }
38804        }
38805    }, {
38806        key: 'checkIfAdmin',
38807        value: function checkIfAdmin() {
38808            var _this = this;
38809
38810            return !!document.cookie.split(';').filter(function (item) {
38811                return __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.includes(item, _this.key + '=1');
38812            }).length;
38813        }
38814    }]);
38815
38816    return BetterNav;
38817}();
38818
38819/* harmony default export */ __webpack_exports__["a"] = (new BetterNav());
38820
38821/***/ }),
38822/* 143 */
38823/***/ (function(module, exports) {
38824
38825var g;
38826
38827// This works in non-strict mode
38828g = (function() {
38829	return this;
38830})();
38831
38832try {
38833	// This works if eval is allowed (see CSP)
38834	g = g || Function("return this")() || (1,eval)("this");
38835} catch(e) {
38836	// This works if the window reference is available
38837	if(typeof window === "object")
38838		g = window;
38839}
38840
38841// g can still be undefined, but nothing to do about it...
38842// We return undefined, instead of nothing here, so it's
38843// easier to handle this case. if(!global) { ...}
38844
38845module.exports = g;
38846
38847
38848/***/ }),
38849/* 144 */
38850/***/ (function(module, __webpack_exports__, __webpack_require__) {
38851
38852"use strict";
38853/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash__ = __webpack_require__(1);
38854/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash__);
38855/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__(2);
38856var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
38857
38858var _RESPONSIVE_SETTINGS;
38859
38860function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38861
38862function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
38863
38864
38865
38866
38867var SELECTOR_NORMAL = '.slider';
38868var SELECTOR_MOBILE_ONLY = '.only-mobile-slider';
38869var SELECTOR_NARROW = '.slider-narrow';
38870var SCREEN_SIZES = [1199, 991, 480, 418];
38871
38872var MOBILE_VISIBLE_PAGES = 5;
38873var EDGE_PAGE_CLASS = 'smaller';
38874var EDGE_CLASS_ANIMATION_TIME = 150;
38875
38876function createSettings(slides, arrows) {
38877    return {
38878        slidesToShow: slides,
38879        slidesToScroll: slides,
38880        arrows: arrows
38881    };
38882}
38883
38884var RESPONSIVE_SETTINGS = (_RESPONSIVE_SETTINGS = {}, _defineProperty(_RESPONSIVE_SETTINGS, SELECTOR_MOBILE_ONLY, ['unslick', createSettings(3, true), createSettings(2, false)]), _defineProperty(_RESPONSIVE_SETTINGS, SELECTOR_NORMAL, [createSettings(4, true), createSettings(3, true), createSettings(2, false)]), _defineProperty(_RESPONSIVE_SETTINGS, SELECTOR_NARROW, [createSettings(5, true), createSettings(4, true), createSettings(3, true), createSettings(2, false)]), _RESPONSIVE_SETTINGS);
38885
38886var Carousels = function () {
38887    function Carousels() {
38888        _classCallCheck(this, Carousels);
38889    }
38890
38891    _createClass(Carousels, [{
38892        key: 'init',
38893        value: function init() {
38894            var elements = document.querySelectorAll(SELECTOR_NORMAL + ', ' + SELECTOR_MOBILE_ONLY);
38895            this.initCarousels(elements);
38896            this.bindResizing();
38897            this.animateOpacityAll('.slider-fade');
38898
38899            // Need some special treatment for fixtures carousel on homepage because of background.
38900            jQuery('.upcoming-games .slider').addClass('special-background-next');
38901            jQuery('.upcoming-games .slick-next, .upcoming-games .slick-prev').click(function () {
38902                if (jQuery('.upcoming-games .slick-prev').is('[aria-disabled=false]')) {
38903                    jQuery('.upcoming-games .slider').addClass('special-background-prev');
38904                    jQuery('.upcoming-games .slider').removeClass('special-background-next');
38905                } else if (jQuery('.upcoming-games .slick-next').is('[aria-disabled=false]')) {
38906                    jQuery('.upcoming-games .slider').addClass('special-background-next');
38907                    jQuery('.upcoming-games .slider').removeClass('special-background-prev');
38908                }
38909            });
38910        }
38911
38912        // slowly fade in carousels to solve FOUC
38913
38914    }, {
38915        key: 'animateOpacityAll',
38916        value: function animateOpacityAll(selector) {
38917            var links = document.querySelectorAll(selector);
38918            __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.forEach(links, function (link) {
38919                return link.classList.add('opacity-1');
38920            });
38921        }
38922    }, {
38923        key: 'initCarousels',
38924        value: function initCarousels(elements) {
38925            var _this = this;
38926
38927            jQuery(elements).each(function (index, element) {
38928                var responsive = _this.createBreakPoints(element);
38929                var $this = jQuery(element);
38930
38931                $this.find('.inner').slick({
38932                    mobileFirst: true,
38933                    //initialSlide: getInitialSlide($this),
38934                    initialSlide: 0,
38935                    dots: true,
38936                    infinite: false,
38937                    prevArrow: '<button class="slick-prev slick-arrow" aria-label="Previous" type="button" />',
38938                    nextArrow: '<button class="slick-next slick-arrow" aria-label="Next" type="button" />',
38939                    arrows: false,
38940                    slidesToShow: 1,
38941                    slidesToScroll: 1,
38942                    responsive: responsive
38943                });
38944
38945                initPaging(element);
38946            });
38947        }
38948    }, {
38949        key: 'createBreakPoints',
38950        value: function createBreakPoints(element) {
38951            var isMobileOnly = element.classList.contains(SELECTOR_MOBILE_ONLY.slice(1));
38952            var isNarrow = element.classList.contains(SELECTOR_NARROW.slice(1));
38953
38954            var key = isMobileOnly ? SELECTOR_MOBILE_ONLY : isNarrow ? SELECTOR_NARROW : SELECTOR_NORMAL;
38955
38956            return this.getSettings(key);
38957        }
38958    }, {
38959        key: 'getSettings',
38960        value: function getSettings(key) {
38961            var settings = RESPONSIVE_SETTINGS[key];
38962            var screenSizes = SCREEN_SIZES.slice(0, settings.length);
38963
38964            return __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.map(screenSizes, function (screenSize, index) {
38965                return {
38966                    breakpoint: screenSize,
38967                    settings: settings[index]
38968                };
38969            });
38970        }
38971    }, {
38972        key: 'bindResizing',
38973        value: function bindResizing() {
38974            var _this2 = this;
38975
38976            Object(__WEBPACK_IMPORTED_MODULE_1__utils__["c" /* throttleAnimationFrame */])('resize', 'optimizedResize');
38977
38978            window.addEventListener('optimizedResize', function () {
38979                _this2.reInitMobileCarousels();
38980
38981                // We need to wait for the carousel to finish initialising to update the paging that's why we need the setTimeout.
38982                setTimeout(function () {
38983                    var elements = document.querySelectorAll(SELECTOR_NORMAL + ', ' + SELECTOR_MOBILE_ONLY);
38984                    __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.forEach(elements, initPaging);
38985                }, 500);
38986            });
38987        }
38988    }, {
38989        key: 'reInitMobileCarousels',
38990        value: function reInitMobileCarousels() {
38991            this.reInitCarousel(SELECTOR_MOBILE_ONLY);
38992        }
38993    }, {
38994        key: 'reInitCarousel',
38995        value: function reInitCarousel(selector) {
38996            var _this3 = this;
38997
38998            var elements = document.querySelectorAll(selector);
38999            __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.forEach(elements, function (element) {
39000                var carouselContainer = element.querySelector('.inner');
39001                if (carouselContainer.classList.contains('slick-initialized')) {
39002                    jQuery(carouselContainer).slick('resize');
39003                    initPaging(element);
39004                } else {
39005                    _this3.initCarousels(element);
39006                }
39007            });
39008        }
39009    }]);
39010
39011    return Carousels;
39012}();
39013
39014/**
39015 * To avoid showing a massive amount of dots in mobile we have a maximum and "carousel" through the dots.
39016 * @param {DOM} carousel - our carousel element.
39017 */
39018
39019
39020function initPaging(carousel) {
39021    if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils__["a" /* isMobileDevice */])()) {
39022        jQuery(carousel).find('li').removeClass(EDGE_PAGE_CLASS).show();
39023        return;
39024    }
39025
39026    var carouselInner = carousel.querySelector('.inner');
39027    var $slick = carouselInner.slick;
39028    var pagesCount = $slick.getDotCount();
39029
39030    // We only do something if there are more than 5 pages.
39031    if (pagesCount <= 5) {
39032        return;
39033    }
39034
39035    initialisePagesDots($slick);
39036
39037    var paging = $slick.$dots;
39038
39039    jQuery(carouselInner).off('beforeChange').on('beforeChange', function (event, slick, currentSlideIndex, nextSlideIndex) {
39040        return updatePagingDots(paging, currentSlideIndex, nextSlideIndex);
39041    });
39042}
39043
39044function updatePagingDots(paging, currentSlideIndex, nextSlideIndex) {
39045    // We only do something if we have reached the edge.
39046    if (!paging.find('li:eq(' + nextSlideIndex + ')').hasClass(EDGE_PAGE_CLASS)) {
39047        return;
39048    }
39049
39050    var $lastVisible = paging.find('li:visible:last');
39051    var $firstVisible = paging.find('li:visible:first');
39052
39053    // We find out if it's going right or left.
39054    var moveMethod = currentSlideIndex < nextSlideIndex ? moveRight : moveLeft;
39055    moveMethod($firstVisible, $lastVisible);
39056}
39057
39058function initialisePagesDots($slick) {
39059    var paging = $slick.$dots;
39060    var pagesCount = $slick.getDotCount();
39061
39062    // Figure out which pages should be visible.
39063
39064    var _getFirstAndLastVisib = getFirstAndLastVisiblePageIndex($slick.getCurrent()),
39065        firstVisiblePageIndex = _getFirstAndLastVisib.firstVisiblePageIndex,
39066        lastVisiblePageIndex = _getFirstAndLastVisib.lastVisiblePageIndex;
39067
39068    // Hide everything that's not in that range.
39069
39070
39071    paging.find('li:lt(' + firstVisiblePageIndex + '), li:gt(' + lastVisiblePageIndex + ')').hide();
39072
39073    // Add the EDGE_PAGE_CLASS to indicate they are the last visible ones but there are more if you scroll in that direction.
39074    if (firstVisiblePageIndex > 0) {
39075        paging.find('li:eq(' + firstVisiblePageIndex + ')').addClass(EDGE_PAGE_CLASS);
39076    }
39077    if (lastVisiblePageIndex < pagesCount) {
39078        paging.find('li:eq(' + lastVisiblePageIndex + ')').addClass(EDGE_PAGE_CLASS);
39079    }
39080}
39081
39082/**
39083 * This function returns the index of the first and last element that should be visible based on MOBILE_VISIBLE_PAGES.
39084 * @param activePageIndex - The index of the currently active page.
39085 * @returns {Number, Number} - First and last index.
39086 */
39087function getFirstAndLastVisiblePageIndex(activePageIndex) {
39088    var firstVisiblePageIndex = void 0;
39089    var lastVisiblePageIndex = void 0;
39090    if (activePageIndex < MOBILE_VISIBLE_PAGES - 1) {
39091        firstVisiblePageIndex = 0;
39092        lastVisiblePageIndex = MOBILE_VISIBLE_PAGES - 1;
39093    } else {
39094        // I think this will never happen.
39095        lastVisiblePageIndex = activePageIndex + 1;
39096        firstVisiblePageIndex = lastVisiblePageIndex - MOBILE_VISIBLE_PAGES - 1;
39097    }
39098    return {
39099        firstVisiblePageIndex: firstVisiblePageIndex,
39100        lastVisiblePageIndex: lastVisiblePageIndex
39101    };
39102}
39103var FADE_TIME = 200;
39104function moveRight($first, $last) {
39105    var $newLast = $last.next();
39106    if (!$newLast.is(':last-child')) {
39107        $newLast.addClass(EDGE_PAGE_CLASS);
39108    }
39109    $newLast.delay(EDGE_CLASS_ANIMATION_TIME - 1).fadeIn(FADE_TIME);
39110    $first.next().addClass(EDGE_PAGE_CLASS);
39111
39112    $first.delay(EDGE_CLASS_ANIMATION_TIME).fadeOut(FADE_TIME);
39113    $last.removeClass(EDGE_PAGE_CLASS);
39114}
39115
39116function moveLeft($first, $last) {
39117    var $newFirst = $first.prev();
39118    if (!$newFirst.is(':first-child')) {
39119        $newFirst.addClass(EDGE_PAGE_CLASS);
39120    }
39121    $newFirst.delay(EDGE_CLASS_ANIMATION_TIME - 1).fadeIn(FADE_TIME);
39122
39123    $last.prev().addClass(EDGE_PAGE_CLASS);
39124
39125    $last.delay(EDGE_CLASS_ANIMATION_TIME).fadeOut(FADE_TIME);
39126    $first.removeClass(EDGE_PAGE_CLASS);
39127}
39128
39129// finds first slide that has been marked as initial
39130// function getInitialSlide(thisSlider) {
39131
39132//     let initialSlide = 0;
39133
39134//     const allSlides = thisSlider.find('.slide');
39135//     const index = _.findIndex(allSlides, game => game.classList.contains('initial-slide'));
39136
39137//     if (index > 0) {
39138//         initialSlide = index;
39139//     }
39140
39141//     return initialSlide;
39142// }
39143
39144/* harmony default export */ __webpack_exports__["a"] = (new Carousels());
39145
39146/***/ }),
39147/* 145 */
39148/***/ (function(module, __webpack_exports__, __webpack_require__) {
39149
39150"use strict";
39151/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__EmailAPI__ = __webpack_require__(146);
39152/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__FacebookAPI__ = __webpack_require__(147);
39153/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__PinterestAPI__ = __webpack_require__(148);
39154/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__TwitterAPI__ = __webpack_require__(149);
39155/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash__ = __webpack_require__(1);
39156/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash__);
39157var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39158
39159function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39160
39161
39162
39163
39164
39165
39166
39167var SocialMedia = function () {
39168    function SocialMedia() {
39169        _classCallCheck(this, SocialMedia);
39170    }
39171
39172    _createClass(SocialMedia, [{
39173        key: 'init',
39174        value: function init() {
39175            var _this = this;
39176
39177            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.facebook-share'), function (link) {
39178                return link.addEventListener('click', _this.onFacebookShare);
39179            });
39180            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.twitter-share'), function (link) {
39181                return link.addEventListener('click', _this.onTwitterShare);
39182            });
39183            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.pinterest-share'), function (link) {
39184                return link.addEventListener('click', _this.onPinterestShare);
39185            });
39186            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.email-share'), function (link) {
39187                return link.addEventListener('click', _this.onEmailShare);
39188            });
39189        }
39190    }, {
39191        key: 'onFacebookShare',
39192        value: function onFacebookShare(event) {
39193            __WEBPACK_IMPORTED_MODULE_1__FacebookAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
39194        }
39195    }, {
39196        key: 'onTwitterShare',
39197        value: function onTwitterShare(event) {
39198            __WEBPACK_IMPORTED_MODULE_3__TwitterAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
39199        }
39200    }, {
39201        key: 'onPinterestShare',
39202        value: function onPinterestShare(event) {
39203            __WEBPACK_IMPORTED_MODULE_2__PinterestAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
39204        }
39205    }, {
39206        key: 'onEmailShare',
39207        value: function onEmailShare(event) {
39208            __WEBPACK_IMPORTED_MODULE_0__EmailAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
39209        }
39210    }]);
39211
39212    return SocialMedia;
39213}();
39214
39215/* harmony default export */ __webpack_exports__["a"] = (new SocialMedia());
39216
39217/***/ }),
39218/* 146 */
39219/***/ (function(module, __webpack_exports__, __webpack_require__) {
39220
39221"use strict";
39222/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(2);
39223/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
39224/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
39225var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39226
39227function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39228
39229
39230
39231
39232var EmailAPI = function () {
39233    function EmailAPI() {
39234        _classCallCheck(this, EmailAPI);
39235    }
39236
39237    _createClass(EmailAPI, [{
39238        key: 'share',
39239
39240
39241        /**
39242         * Triggers a link to send an email.
39243         * Expects DOM element to have data-subject and data-body.
39244         * @param {Object} userOptions
39245         */
39246        value: function share(userOptions) {
39247            var options = Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["assign"])({}, {
39248                subject: '',
39249                body: ''
39250            }, userOptions);
39251
39252            var queryParams = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["b" /* serialize */])(options);
39253            var url = 'mailto:?' + queryParams;
39254            location.replace(url);
39255        }
39256    }]);
39257
39258    return EmailAPI;
39259}();
39260
39261/* harmony default export */ __webpack_exports__["a"] = (new EmailAPI());
39262
39263/***/ }),
39264/* 147 */
39265/***/ (function(module, __webpack_exports__, __webpack_require__) {
39266
39267"use strict";
39268var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39269
39270function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39271
39272var FacebookAPI = function () {
39273    function FacebookAPI() {
39274        _classCallCheck(this, FacebookAPI);
39275    }
39276
39277    _createClass(FacebookAPI, [{
39278        key: 'share',
39279
39280
39281        /**
39282         * Creates popup to share something on Facebook.
39283         * Expects DOM element to have data-url (required), data-media and data-description.
39284         * @param {Object} userOptions
39285         */
39286        value: function share(options) {
39287            var url = 'https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(options.url);
39288            var facebookShare = window.open(url, 'FacebookShare', 'height=350,width=558,resizable,scrollbars,status');
39289            if (window.focus) {
39290                facebookShare.focus();
39291            }
39292        }
39293    }]);
39294
39295    return FacebookAPI;
39296}();
39297
39298/* harmony default export */ __webpack_exports__["a"] = (new FacebookAPI());
39299
39300/***/ }),
39301/* 148 */
39302/***/ (function(module, __webpack_exports__, __webpack_require__) {
39303
39304"use strict";
39305/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(2);
39306/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
39307/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
39308var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39309
39310function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39311
39312
39313
39314
39315var PinterestAPI = function () {
39316    function PinterestAPI() {
39317        _classCallCheck(this, PinterestAPI);
39318    }
39319
39320    _createClass(PinterestAPI, [{
39321        key: 'share',
39322
39323
39324        /**
39325         * Creates popup to share something on Pinterest.
39326         * Expects DOM element to have data-url (required), data-media and data-description.
39327         * @param {Object} userOptions
39328         */
39329        value: function share(userOptions) {
39330            var options = Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["assign"])({}, {
39331                url: '',
39332                description: '',
39333                media: ''
39334            }, userOptions);
39335
39336            var queryParams = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["b" /* serialize */])(options);
39337            var url = 'https://pinterest.com/pin/create/button/?' + queryParams;
39338            var pinterestShare = window.open(url, 'PinterestShare', 'height=783,width=6
3933850,resizable,scrollbars,status');
39339            if (window.focus) {
39340                pinterestShare.focus();
39341            }
39342        }
39343    }]);
39344
39345    return PinterestAPI;
39346}();
39347
39348/* harmony default export */ __webpack_exports__["a"] = (new PinterestAPI());
39349
39350/***/ }),
39351/* 149 */
39352/***/ (function(module, __webpack_exports__, __webpack_require__) {
39353
39354"use strict";
39355/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(2);
39356/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
39357/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
39358var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39359
39360function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39361
39362
39363
39364
39365var TwitterAPI = function () {
39366    function TwitterAPI() {
39367        _classCallCheck(this, TwitterAPI);
39368    }
39369
39370    _createClass(TwitterAPI, [{
39371        key: 'share',
39372
39373
39374        /**
39375         * Creates popup to share something on Twitter.
39376         * Expects DOM element to have data-via, data-related, data-hasthags and data-text.
39377         * @param {Object} userOptions
39378         */
39379        value: function share(userOptions) {
39380            var options = Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["assign"])({}, {
39381                // via: 'allblacks',
39382                // related: 'twitterapi,twitter',
39383                // hashtags: 'example,demo',
39384                // text: 'Custom Text',
39385            }, userOptions);
39386
39387            var queryParams = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["b" /* serialize */])(options);
39388            var url = 'https://twitter.com/share?' + queryParams;
39389            var twitterShare = window.open(url, 'TwitterShare', 'height=445,width=680,resizable,scrollbars,status');
39390            if (window.focus) {
39391                twitterShare.focus();
39392            }
39393        }
39394    }]);
39395
39396    return TwitterAPI;
39397}();
39398
39399/* harmony default export */ __webpack_exports__["a"] = (new TwitterAPI());
39400
39401/***/ }),
39402/* 150 */
39403/***/ (function(module, __webpack_exports__, __webpack_require__) {
39404
39405"use strict";
39406/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment_timezone__ = __webpack_require__(151);
39407/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_moment_timezone__);
39408/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
39409/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
39410var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39411
39412function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39413
39414
39415
39416
39417var MomentResolver = function () {
39418    function MomentResolver() {
39419        _classCallCheck(this, MomentResolver);
39420    }
39421
39422    _createClass(MomentResolver, [{
39423        key: 'init',
39424        value: function init() {
39425
39426            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.tz.add('Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5');
39427            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.tz.setDefault('Pacific/Auckland');
39428
39429            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.updateLocale('ja', {
39430                longDateFormat: {
39431                    LLL: 'M月D日 (ddd)',
39432                    LL: 'YYYY年M月D日',
39433                    L: 'M月D日'
39434                }
39435            });
39436
39437            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.updateLocale('en', {
39438                longDateFormat: {
39439                    LLL: 'ddd DD MMM',
39440                    LL: 'D MMMM YYYY',
39441                    L: 'D MMM'
39442                }
39443            });
39444
39445            // set locale
39446            var language = document.documentElement.lang.slice(0, document.documentElement.lang.indexOf('-'));
39447            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.locale(language);
39448
39449            // time ago
39450            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-ago time[moment]'), function (momentTimeAgo) {
39451                return momentTimeAgo.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.tz(momentTimeAgo.getAttribute('datetime'), 'Pacific/Auckland').fromNow();
39452            });
39453
39454            // month
39455            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-month time[moment]'), function (momentMonth) {
39456                return momentMonth.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentMonth.getAttribute('datetime')).format('MMM');
39457            });
39458
39459            // day
39460            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-day time[moment]'), function (momentDay) {
39461                return momentDay.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDay.getAttribute('datetime')).format('Do');
39462            });
39463
39464            // date
39465            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-date time[moment]'), function (momentDate) {
39466                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('LL');
39467            });
39468
39469            // updated
39470            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-updated time[moment]'), function (momentDate) {
39471                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('L');
39472            });
39473
39474            // time
39475            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-time time[moment]'), function (momentDate) {
39476                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('D MMM  h:mmA');
39477            });
39478
39479            // 3:15PM
39480            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.only-time time[moment]'), function (momentDate) {
39481                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).locale('en').format('h:mmA');
39482            });
39483
39484            // Thu 18 Oct
39485            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.ddd-DD-MMM time[moment]'), function (momentDate) {
39486                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('LLL');
39487            });
39488        }
39489    }]);
39490
39491    return MomentResolver;
39492}();
39493
39494/* harmony default export */ __webpack_exports__["a"] = (new MomentResolver());
39495
39496/***/ }),
39497/* 151 */
39498/***/ (function(module, exports, __webpack_require__) {
39499
39500var moment = module.exports = __webpack_require__(152);
39501moment.tz.load(__webpack_require__(154));
39502
39503
39504/***/ }),
39505/* 152 */
39506/***/ (function(module, exports, __webpack_require__) {
39507
39508var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//! moment-timezone.js
39509//! version : 0.5.33
39510//! Copyright (c) JS Foundation and other contributors
39511//! license : MIT
39512//! github.com/moment/moment-timezone
39513
39514(function (root, factory) {
39515	"use strict";
39516
39517	/*global define*/
39518	if (typeof module === 'object' && module.exports) {
39519		module.exports = factory(__webpack_require__(0)); // Node
39520	} else if (true) {
39521		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
39522				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
39523				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
39524				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));                 // AMD
39525	} else {
39526		factory(root.moment);                        // Browser
39527	}
39528}(this, function (moment) {
39529	"use strict";
39530
39531	// Resolves es6 module loading issue
39532	if (moment.version === undefined && moment.default) {
39533		moment = moment.default;
39534	}
39535
39536	// Do not load moment-timezone a second time.
39537	// if (moment.tz !== undefined) {
39538	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
39539	// 	return moment;
39540	// }
39541
39542	var VERSION = "0.5.3
vendor: 15,324 bytes, lines 39542-40203
395423",
39543		zones = {},
39544		links = {},
39545		countries = {},
39546		names = {},
39547		guesses = {},
39548		cachedGuess;
39549
39550	if (!moment || typeof moment.version !== 'string') {
39551		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
39552	}
39553
39554	var momentVersion = moment.version.split('.'),
39555		major = +momentVersion[0],
39556		minor = +momentVersion[1];
39557
39558	// Moment.js version check
39559	if (major < 2 || (major === 2 && minor < 6)) {
39560		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
39561	}
39562
39563	/************************************
39564		Unpacking
39565	************************************/
39566
39567	function charCodeToInt(charCode) {
39568		if (charCode > 96) {
39569			return charCode - 87;
39570		} else if (charCode > 64) {
39571			return charCode - 29;
39572		}
39573		return charCode - 48;
39574	}
39575
39576	function unpackBase60(string) {
39577		var i = 0,
39578			parts = string.split('.'),
39579			whole = parts[0],
39580			fractional = parts[1] || '',
39581			multiplier = 1,
39582			num,
39583			out = 0,
39584			sign = 1;
39585
39586		// handle negative numbers
39587		if (string.charCodeAt(0) === 45) {
39588			i = 1;
39589			sign = -1;
39590		}
39591
39592		// handle digits before the decimal
39593		for (i; i < whole.length; i++) {
39594			num = charCodeToInt(whole.charCodeAt(i));
39595			out = 60 * out + num;
39596		}
39597
39598		// handle digits after the decimal
39599		for (i = 0; i < fractional.length; i++) {
39600			multiplier = multiplier / 60;
39601			num = charCodeToInt(fractional.charCodeAt(i));
39602			out += num * multiplier;
39603		}
39604
39605		return out * sign;
39606	}
39607
39608	function arrayToInt (array) {
39609		for (var i = 0; i < array.length; i++) {
39610			array[i] = unpackBase60(array[i]);
39611		}
39612	}
39613
39614	function intToUntil (array, length) {
39615		for (var i = 0; i < length; i++) {
39616			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
39617		}
39618
39619		array[length - 1] = Infinity;
39620	}
39621
39622	function mapIndices (source, indices) {
39623		var out = [], i;
39624
39625		for (i = 0; i < indices.length; i++) {
39626			out[i] = source[indices[i]];
39627		}
39628
39629		return out;
39630	}
39631
39632	function unpack (string) {
39633		var data = string.split('|'),
39634			offsets = data[2].split(' '),
39635			indices = data[3].split(''),
39636			untils  = data[4].split(' ');
39637
39638		arrayToInt(offsets);
39639		arrayToInt(indices);
39640		arrayToInt(untils);
39641
39642		intToUntil(untils, indices.length);
39643
39644		return {
39645			name       : data[0],
39646			abbrs      : mapIndices(data[1].split(' '), indices),
39647			offsets    : mapIndices(offsets, indices),
39648			untils     : untils,
39649			population : data[5] | 0
39650		};
39651	}
39652
39653	/************************************
39654		Zone object
39655	************************************/
39656
39657	function Zone (packedString) {
39658		if (packedString) {
39659			this._set(unpack(packedString));
39660		}
39661	}
39662
39663	Zone.prototype = {
39664		_set : function (unpacked) {
39665			this.name       = unpacked.name;
39666			this.abbrs      = unpacked.abbrs;
39667			this.untils     = unpacked.untils;
39668			this.offsets    = unpacked.offsets;
39669			this.population = unpacked.population;
39670		},
39671
39672		_index : function (timestamp) {
39673			var target = +timestamp,
39674				untils = this.untils,
39675				i;
39676
39677			for (i = 0; i < untils.length; i++) {
39678				if (target < untils[i]) {
39679					return i;
39680				}
39681			}
39682		},
39683
39684		countries : function () {
39685			var zone_name = this.name;
39686			return Object.keys(countries).filter(function (country_code) {
39687				return countries[country_code].zones.indexOf(zone_name) !== -1;
39688			});
39689		},
39690
39691		parse : function (timestamp) {
39692			var target  = +timestamp,
39693				offsets = this.offsets,
39694				untils  = this.untils,
39695				max     = untils.length - 1,
39696				offset, offsetNext, offsetPrev, i;
39697
39698			for (i = 0; i < max; i++) {
39699				offset     = offsets[i];
39700				offsetNext = offsets[i + 1];
39701				offsetPrev = offsets[i ? i - 1 : i];
39702
39703				if (offset < offsetNext && tz.moveAmbiguousForward) {
39704					offset = offsetNext;
39705				} else if (offset > offsetPrev && tz.moveInvalidForward) {
39706					offset = offsetPrev;
39707				}
39708
39709				if (target < untils[i] - (offset * 60000)) {
39710					return offsets[i];
39711				}
39712			}
39713
39714			return offsets[max];
39715		},
39716
39717		abbr : function (mom) {
39718			return this.abbrs[this._index(mom)];
39719		},
39720
39721		offset : function (mom) {
39722			logError("zone.offset has been deprecated in favor of zone.utcOffset");
39723			return this.offsets[this._index(mom)];
39724		},
39725
39726		utcOffset : function (mom) {
39727			return this.offsets[this._index(mom)];
39728		}
39729	};
39730
39731	/************************************
39732		Country object
39733	************************************/
39734
39735	function Country (country_name, zone_names) {
39736		this.name = country_name;
39737		this.zones = zone_names;
39738	}
39739
39740	/************************************
39741		Current Timezone
39742	************************************/
39743
39744	function OffsetAt(at) {
39745		var timeString = at.toTimeString();
39746		var abbr = timeString.match(/\([a-z ]+\)/i);
39747		if (abbr && abbr[0]) {
39748			// 17:56:31 GMT-0600 (CST)
39749			// 17:56:31 GMT-0600 (Central Standard Time)
39750			abbr = abbr[0].match(/[A-Z]/g);
39751			abbr = abbr ? abbr.join('') : undefined;
39752		} else {
39753			// 17:56:31 CST
39754			// 17:56:31 GMT+0800 (台北標準時間)
39755			abbr = timeString.match(/[A-Z]{3,5}/g);
39756			abbr = abbr ? abbr[0] : undefined;
39757		}
39758
39759		if (abbr === 'GMT') {
39760			abbr = undefined;
39761		}
39762
39763		this.at = +at;
39764		this.abbr = abbr;
39765		this.offset = at.getTimezoneOffset();
39766	}
39767
39768	function ZoneScore(zone) {
39769		this.zone = zone;
39770		this.offsetScore = 0;
39771		this.abbrScore = 0;
39772	}
39773
39774	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
39775		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
39776		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
39777			this.abbrScore++;
39778		}
39779	};
39780
39781	function findChange(low, high) {
39782		var mid, diff;
39783
39784		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
39785			mid = new OffsetAt(new Date(low.at + diff));
39786			if (mid.offset === low.offset) {
39787				low = mid;
39788			} else {
39789				high = mid;
39790			}
39791		}
39792
39793		return low;
39794	}
39795
39796	function userOffsets() {
39797		var startYear = new Date().getFullYear() - 2,
39798			last = new OffsetAt(new Date(startYear, 0, 1)),
39799			offsets = [last],
39800			change, next, i;
39801
39802		for (i = 1; i < 48; i++) {
39803			next = new OffsetAt(new Date(startYear, i, 1));
39804			if (next.offset !== last.offset) {
39805				change = findChange(last, next);
39806				offsets.push(change);
39807				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
39808			}
39809			last = next;
39810		}
39811
39812		for (i = 0; i < 4; i++) {
39813			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
39814			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
39815		}
39816
39817		return offsets;
39818	}
39819
39820	function sortZoneScores (a, b) {
39821		if (a.offsetScore !== b.offsetScore) {
39822			return a.offsetScore - b.offsetScore;
39823		}
39824		if (a.abbrScore !== b.abbrScore) {
39825			return a.abbrScore - b.abbrScore;
39826		}
39827		if (a.zone.population !== b.zone.population) {
39828			return b.zone.population - a.zone.population;
39829		}
39830		return b.zone.name.localeCompare(a.zone.name);
39831	}
39832
39833	function addToGuesses (name, offsets) {
39834		var i, offset;
39835		arrayToInt(offsets);
39836		for (i = 0; i < offsets.length; i++) {
39837			offset = offsets[i];
39838			guesses[offset] = guesses[offset] || {};
39839			guesses[offset][name] = true;
39840		}
39841	}
39842
39843	function guessesForUserOffsets (offsets) {
39844		var offsetsLength = offsets.length,
39845			filteredGuesses = {},
39846			out = [],
39847			i, j, guessesOffset;
39848
39849		for (i = 0; i < offsetsLength; i++) {
39850			guessesOffset = guesses[offsets[i].offset] || {};
39851			for (j in guessesOffset) {
39852				if (guessesOffset.hasOwnProperty(j)) {
39853					filteredGuesses[j] = true;
39854				}
39855			}
39856		}
39857
39858		for (i in filteredGuesses) {
39859			if (filteredGuesses.hasOwnProperty(i)) {
39860				out.push(names[i]);
39861			}
39862		}
39863
39864		return out;
39865	}
39866
39867	function rebuildGuess () {
39868
39869		// use Intl API when available and returning valid time zone
39870		try {
39871			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
39872			if (intlName && intlName.length > 3) {
39873				var name = names[normalizeName(intlName)];
39874				if (name) {
39875					return name;
39876				}
39877				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
39878			}
39879		} catch (e) {
39880			// Intl unavailable, fall back to manual guessing.
39881		}
39882
39883		var offsets = userOffsets(),
39884			offsetsLength = offsets.length,
39885			guesses = guessesForUserOffsets(offsets),
39886			zoneScores = [],
39887			zoneScore, i, j;
39888
39889		for (i = 0; i < guesses.length; i++) {
39890			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
39891			for (j = 0; j < offsetsLength; j++) {
39892				zoneScore.scoreOffsetAt(offsets[j]);
39893			}
39894			zoneScores.push(zoneScore);
39895		}
39896
39897		zoneScores.sort(sortZoneScores);
39898
39899		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
39900	}
39901
39902	function guess (ignoreCache) {
39903		if (!cachedGuess || ignoreCache) {
39904			cachedGuess = rebuildGuess();
39905		}
39906		return cachedGuess;
39907	}
39908
39909	/************************************
39910		Global Methods
39911	************************************/
39912
39913	function normalizeName (name) {
39914		return (name || '').toLowerCase().replace(/\//g, '_');
39915	}
39916
39917	function addZone (packed) {
39918		var i, name, split, normalized;
39919
39920		if (typeof packed === "string") {
39921			packed = [packed];
39922		}
39923
39924		for (i = 0; i < packed.length; i++) {
39925			split = packed[i].split('|');
39926			name = split[0];
39927			normalized = normalizeName(name);
39928			zones[normalized] = packed[i];
39929			names[normalized] = name;
39930			addToGuesses(normalized, split[2].split(' '));
39931		}
39932	}
39933
39934	function getZone (name, caller) {
39935
39936		name = normalizeName(name);
39937
39938		var zone = zones[name];
39939		var link;
39940
39941		if (zone instanceof Zone) {
39942			return zone;
39943		}
39944
39945		if (typeof zone === 'string') {
39946			zone = new Zone(zone);
39947			zones[name] = zone;
39948			return zone;
39949		}
39950
39951		// Pass getZone to prevent recursion more than 1 level deep
39952		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
39953			zone = zones[name] = new Zone();
39954			zone._set(link);
39955			zone.name = names[name];
39956			return zone;
39957		}
39958
39959		return null;
39960	}
39961
39962	function getNames () {
39963		var i, out = [];
39964
39965		for (i in names) {
39966			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
39967				out.push(names[i]);
39968			}
39969		}
39970
39971		return out.sort();
39972	}
39973
39974	function getCountryNames () {
39975		return Object.keys(countries);
39976	}
39977
39978	function addLink (aliases) {
39979		var i, alias, normal0, normal1;
39980
39981		if (typeof aliases === "string") {
39982			aliases = [aliases];
39983		}
39984
39985		for (i = 0; i < aliases.length; i++) {
39986			alias = aliases[i].split('|');
39987
39988			normal0 = normalizeName(alias[0]);
39989			normal1 = normalizeName(alias[1]);
39990
39991			links[normal0] = normal1;
39992			names[normal0] = alias[0];
39993
39994			links[normal1] = normal0;
39995			names[normal1] = alias[1];
39996		}
39997	}
39998
39999	function addCountries (data) {
40000		var i, country_code, country_zones, split;
40001		if (!data || !data.length) return;
40002		for (i = 0; i < data.length; i++) {
40003			split = data[i].split('|');
40004			country_code = split[0].toUpperCase();
40005			country_zones = split[1].split(' ');
40006			countries[country_code] = new Country(
40007				country_code,
40008				country_zones
40009			);
40010		}
40011	}
40012
40013	function getCountry (name) {
40014		name = name.toUpperCase();
40015		return countries[name] || null;
40016	}
40017
40018	function zonesForCountry(country, with_offset) {
40019		country = getCountry(country);
40020
40021		if (!country) return null;
40022
40023		var zones = country.zones.sort();
40024
40025		if (with_offset) {
40026			return zones.map(function (zone_name) {
40027				var zone = getZone(zone_name);
40028				return {
40029					name: zone_name,
40030					offset: zone.utcOffset(new Date())
40031				};
40032			});
40033		}
40034
40035		return zones;
40036	}
40037
40038	function loadData (data) {
40039		addZone(data.zones);
40040		addLink(data.links);
40041		addCountries(data.countries);
40042		tz.dataVersion = data.version;
40043	}
40044
40045	function zoneExists (name) {
40046		if (!zoneExists.didShowError) {
40047			zoneExists.didShowError = true;
40048				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
40049		}
40050		return !!getZone(name);
40051	}
40052
40053	function needsOffset (m) {
40054		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
40055		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
40056	}
40057
40058	function logError (message) {
40059		if (typeof console !== 'undefined' && typeof console.error === 'function') {
40060			console.error(message);
40061		}
40062	}
40063
40064	/************************************
40065		moment.tz namespace
40066	************************************/
40067
40068	function tz (input) {
40069		var args = Array.prototype.slice.call(arguments, 0, -1),
40070			name = arguments[arguments.length - 1],
40071			zone = getZone(name),
40072			out  = moment.utc.apply(null, args);
40073
40074		if (zone && !moment.isMoment(input) && needsOffset(out)) {
40075			out.add(zone.parse(out), 'minutes');
40076		}
40077
40078		out.tz(name);
40079
40080		return out;
40081	}
40082
40083	tz.version      = VERSION;
40084	tz.dataVersion  = '';
40085	tz._zones       = zones;
40086	tz._links       = links;
40087	tz._names       = names;
40088	tz._countries	= countries;
40089	tz.add          = addZone;
40090	tz.link         = addLink;
40091	tz.load         = loadData;
40092	tz.zone         = getZone;
40093	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
40094	tz.guess        = guess;
40095	tz.names        = getNames;
40096	tz.Zone         = Zone;
40097	tz.unpack       = unpack;
40098	tz.unpackBase60 = unpackBase60;
40099	tz.needsOffset  = needsOffset;
40100	tz.moveInvalidForward   = true;
40101	tz.moveAmbiguousForward = false;
40102	tz.countries    = getCountryNames;
40103	tz.zonesForCountry = zonesForCountry;
40104
40105	/************************************
40106		Interface with Moment.js
40107	************************************/
40108
40109	var fn = moment.fn;
40110
40111	moment.tz = tz;
40112
40113	moment.defaultZone = null;
40114
40115	moment.updateOffset = function (mom, keepTime) {
40116		var zone = moment.defaultZone,
40117			offset;
40118
40119		if (mom._z === undefined) {
40120			if (zone && needsOffset(mom) && !mom._isUTC) {
40121				mom._d = moment.utc(mom._a)._d;
40122				mom.utc().add(zone.parse(mom), 'minutes');
40123			}
40124			mom._z = zone;
40125		}
40126		if (mom._z) {
40127			offset = mom._z.utcOffset(mom);
40128			if (Math.abs(offset) < 16) {
40129				offset = offset / 60;
40130			}
40131			if (mom.utcOffset !== undefined) {
40132				var z = mom._z;
40133				mom.utcOffset(-offset, keepTime);
40134				mom._z = z;
40135			} else {
40136				mom.zone(offset, keepTime);
40137			}
40138		}
40139	};
40140
40141	fn.tz = function (name, keepTime) {
40142		if (name) {
40143			if (typeof name !== 'string') {
40144				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
40145			}
40146			this._z = getZone(name);
40147			if (this._z) {
40148				moment.updateOffset(this, keepTime);
40149			} else {
40150				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
40151			}
40152			return this;
40153		}
40154		if (this._z) { return this._z.name; }
40155	};
40156
40157	function abbrWrap (old) {
40158		return function () {
40159			if (this._z) { return this._z.abbr(this); }
40160			return old.call(this);
40161		};
40162	}
40163
40164	function resetZoneWrap (old) {
40165		return function () {
40166			this._z = null;
40167			return old.apply(this, arguments);
40168		};
40169	}
40170
40171	function resetZoneWrap2 (old) {
40172		return function () {
40173			if (arguments.length > 0) this._z = null;
40174			return old.apply(this, arguments);
40175		};
40176	}
40177
40178	fn.zoneName  = abbrWrap(fn.zoneName);
40179	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
40180	fn.utc       = resetZoneWrap(fn.utc);
40181	fn.local     = resetZoneWrap(fn.local);
40182	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
40183
40184	moment.tz.setDefault = function(name) {
40185		if (major < 2 || (major === 2 && minor < 9)) {
40186			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
40187		}
40188		moment.defaultZone = name ? getZone(name) : null;
40189		return moment;
40190	};
40191
40192	// Cloning a moment should include the _z property.
40193	var momentProperties = moment.momentProperties;
40194	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
40195		// moment 2.8.1+
40196		momentProperties.push('_z');
40197		momentProperties.push('_a');
40198	} else if (momentProperties) {
40199		// moment 2.7.0
40200		momentProperties._z = null;
40201	}
40202
40203	
40203// INJECT DATA
40204
40205	return moment;
40206}));
40207
40208
40209/***/ }),
40210/* 153 */
40211/***/ (function(module, exports, __webpack_require__) {
40212
40213var map = {
40214	"./af": 4,
40215	"./af.js": 4,
40216	"./ar": 5,
40217	"./ar-dz": 6,
40218	"./ar-dz.js": 6,
40219	"./ar-kw": 7,
40220	"./ar-kw.js": 7,
40221	"./ar-ly": 8,
40222	"./ar-ly.js": 8,
40223	"./ar-ma": 9,
40224	"./ar-ma.js": 9,
40225	"./ar-sa": 10,
40226	"./ar-sa.js": 10,
40227	"./ar-tn": 11,
40228	"./ar-tn.js": 11,
40229	"./ar.js": 5,
40230	"./az": 12,
40231	"./az.js": 12,
40232	"./be": 13,
40233	"./be.js": 13,
40234	"./bg": 14,
40235	"./bg.js": 14,
40236	"./bm": 15,
40237	"./bm.js": 15,
40238	"./bn": 16,
40239	"./bn-bd": 17,
40240	"./bn-bd.js": 17,
40241	"./bn.js": 16,
40242	"./bo": 18,
40243	"./bo.js": 18,
40244	"./br": 19,
40245	"./br.js": 19,
40246	"./bs": 20,
40247	"./bs.js": 20,
40248	"./ca": 21,
40249	"./ca.js": 21,
40250	"./cs": 22,
40251	"./cs.js": 22,
40252	"./cv": 23,
40253	"./cv.js": 23,
40254	"./cy": 24,
40255	"./cy.js": 24,
40256	"./da": 25,
40257	"./da.js": 25,
40258	"./de": 26,
40259	"./de-at": 27,
40260	"./de-at.js": 27,
40261	"./de-ch": 28,
40262	"./de-ch.js": 28,
40263	"./de.js": 26,
40264	"./dv": 29,
40265	"./dv.js": 29,
40266	"./el": 30,
40267	"./el.js": 30,
40268	"./en-au": 31,
40269	"./en-au.js": 31,
40270	"./en-ca": 32,
40271	"./en-ca.js": 32,
40272	"./en-gb": 33,
40273	"./en-gb.js": 33,
40274	"./en-ie": 34,
40275	"./en-ie.js": 34,
40276	"./en-il": 35,
40277	"./en-il.js": 35,
40278	"./en-in": 36,
40279	"./en-in.js": 36,
40280	"./en-nz": 37,
40281	"./en-nz.js": 37,
40282	"./en-sg": 38,
40283	"./en-sg.js": 38,
40284	"./eo": 39,
40285	"./eo.js": 39,
40286	"./es": 40,
40287	"./es-do": 41,
40288	"./es-do.js": 41,
40289	"./es-mx": 42,
40290	"./es-mx.js": 42,
40291	"./es-us": 43,
40292	"./es-us.js": 43,
40293	"./es.js": 40,
40294	"./et": 44,
40295	"./et.js": 44,
40296	"./eu": 45,
40297	"./eu.js": 45,
40298	"./fa": 46,
40299	"./fa.js": 46,
40300	"./fi": 47,
40301	"./fi.js": 47,
40302	"./fil": 48,
40303	"./fil.js": 48,
40304	"./fo": 49,
40305	"./fo.js": 49,
40306	"./fr": 50,
40307	"./fr-ca": 51,
40308	"./fr-ca.js": 51,
40309	"./fr-ch": 52,
40310	"./fr-ch.js": 52,
40311	"./fr.js": 50,
40312	"./fy": 53,
40313	"./fy.js": 53,
40314	"./ga": 54,
40315	"./ga.js": 54,
40316	"./gd": 55,
40317	"./gd.js": 55,
40318	"./gl": 56,
40319	"./gl.js": 56,
40320	"./gom-deva": 57,
40321	"./gom-deva.js": 57,
40322	"./gom-latn": 58,
40323	"./gom-latn.js": 58,
40324	"./gu": 59,
40325	"./gu.js": 59,
40326	"./he": 60,
40327	"./he.js": 60,
40328	"./hi": 61,
40329	"./hi.js": 61,
40330	"./hr": 62,
40331	"./hr.js": 62,
40332	"./hu": 63,
40333	"./hu.js": 63,
40334	"./hy-am": 64,
40335	"./hy-am.js": 64,
40336	"./id": 65,
40337	"./id.js": 65,
40338	"./is": 66,
40339	"./is.js": 66,
40340	"./it": 67,
40341	"./it-ch": 68,
40342	"./it-ch.js": 68,
40343	"./it.js": 67,
40344	"./ja": 69,
40345	"./ja.js": 69,
40346	"./jv": 70,
40347	"./jv.js": 70,
40348	"./ka": 71,
40349	"./ka.js": 71,
40350	"./kk": 72,
40351	"./kk.js": 72,
40352	"./km": 73,
40353	"./km.js": 73,
40354	"./kn": 74,
40355	"./kn.js": 74,
40356	"./ko": 75,
40357	"./ko.js": 75,
40358	"./ku": 76,
40359	"./ku.js": 76,
40360	"./ky": 77,
40361	"./ky.js": 77,
40362	"./lb": 78,
40363	"./lb.js": 78,
40364	"./lo": 79,
40365	"./lo.js": 79,
40366	"./lt": 80,
40367	"./lt.js": 80,
40368	"./lv": 81,
40369	"./lv.js": 81,
40370	"./me": 82,
40371	"./me.js": 82,
40372	"./mi": 83,
40373	"./mi.js": 83,
40374	"./mk": 84,
40375	"./mk.js": 84,
40376	"./ml": 85,
40377	"./ml.js": 85,
40378	"./mn": 86,
40379	"./mn.js": 86,
40380	"./mr": 87,
40381	"./mr.js": 87,
40382	"./ms": 88,
40383	"./ms-my": 89,
40384	"./ms-my.js": 89,
40385	"./ms.js": 88,
40386	"./mt": 90,
40387	"./mt.js": 90,
40388	"./my": 91,
40389	"./my.js": 91,
40390	"./nb": 92,
40391	"./nb.js": 92,
40392	"./ne": 93,
40393	"./ne.js": 93,
40394	"./nl": 94,
40395	"./nl-be": 95,
40396	"./nl-be.js": 95,
40397	"./nl.js": 94,
40398	"./nn": 96,
40399	"./nn.js": 96,
40400	"./oc-lnc": 97,
40401	"./oc-lnc.js": 97,
40402	"./pa-in": 98,
40403	"./pa-in.js": 98,
40404	"./pl": 99,
40405	"./pl.js": 99,
40406	"./pt": 100,
40407	"./pt-br": 101,
40408	"./pt-br.js": 101,
40409	"./pt.js": 100,
40410	"./ro": 102,
40411	"./ro.js": 102,
40412	"./ru": 103,
40413	"./ru.js": 103,
40414	"./sd": 104,
40415	"./sd.js": 104,
40416	"./se": 105,
40417	"./se.js": 105,
40418	"./si": 106,
40419	"./si.js": 106,
40420	"./sk": 107,
40421	"./sk.js": 107,
40422	"./sl": 108,
40423	"./sl.js": 108,
40424	"./sq": 109,
40425	"./sq.js": 109,
40426	"./sr": 110,
40427	"./sr-cyrl": 111,
40428	"./sr-cyrl.js": 111,
40429	"./sr.js": 110,
40430	"./ss": 112,
40431	"./ss.js": 112,
40432	"./sv": 113,
40433	"./sv.js": 113,
40434	"./sw": 114,
40435	"./sw.js": 114,
40436	"./ta": 115,
40437	"./ta.js": 115,
40438	"./te": 116,
40439	"./te.js": 116,
40440	"./tet": 117,
40441	"./tet.js": 117,
40442	"./tg": 118,
40443	"./tg.js": 118,
40444	"./th": 119,
40445	"./th.js": 119,
40446	"./tk": 120,
40447	"./tk.js": 120,
40448	"./tl-ph": 121,
40449	"./tl-ph.js": 121,
40450	"./tlh": 122,
40451	"./tlh.js": 122,
40452	"./tr": 123,
40453	"./tr.js": 123,
40454	"./tzl": 124,
40455	"./tzl.js": 124,
40456	"./tzm": 125,
40457	"./tzm-latn": 126,
40458	"./tzm-latn.js": 126,
40459	"./tzm.js": 125,
40460	"./ug-cn": 127,
40461	"./ug-cn.js": 127,
40462	"./uk": 128,
40463	"./uk.js": 128,
40464	"./ur": 129,
40465	"./ur.js": 129,
40466	"./uz": 130,
40467	"./uz-latn": 131,
40468	"./uz-latn.js": 131,
40469	"./uz.js": 130,
40470	"./vi": 132,
40471	"./vi.js": 132,
40472	"./x-pseudo": 133,
40473	"./x-pseudo.js": 133,
40474	"./yo": 134,
40475	"./yo.js": 134,
40476	"./zh-cn": 135,
40477	"./zh-cn.js": 135,
40478	"./zh-hk": 136,
40479	"./zh-hk.js": 136,
40480	"./zh-mo": 137,
40481	"./zh-mo.js": 137,
40482	"./zh-tw": 138,
40483	"./zh-tw.js": 138
40484};
40485function webpackContext(req) {
40486	return __webpack_require__(webpackContextResolve(req));
40487};
40488function webpackContextResolve(req) {
40489	var id = map[req];
40490	if(!(id + 1)) // check for number or string
40491		throw new Error("Cannot find module '" + req + "'.");
40492	return id;
40493};
40494webpackContext.keys = function webpackContextKeys() {
40495	return Object.keys(map);
40496};
40497webpackContext.resolve = webpackContextResolve;
40498module.exports = webpackContext;
40499webpackContext.id = 153;
40500
40501/***/ }),
40502/* 154 */
40503/***/ (function(module, exports) {
40504
40505module.exports = {"version":"2021a","zones":["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020 +0030|.Q 0 -k -u|01212121212121212121212121212121212121212121212131313131313131|-2bRzX.8 9RbX.8 fdE 1BAk MLE 1Bck MLE 1Bck MLE 1Bck MLE 1BAk MLE 1Bck MLE 1Bck MLE 1Bck MLE 1BAk MLE 1Bck MLE 1Bck MLE 1Bck MLE 1BAk MLE 1Bck MLE 1Bck MLE 1Bck MLE 1BAk MLE 1Bck MLE 1Bck MLE 1Bck MLE Mok 1BXE M0k 1BXE fak 9vbu bjCu MLu 1Bcu MLu 1BAu MLu 1Bcu MLu 1Bcu MLu 1Bcu MLu|41e5","Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
4050500 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
4050500 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|0121|-2le00 4i6N0 2q00|","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 8
405050 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG
405050 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|010102304056565656565656565656565656565656565656565656565656565656565656565656565656565656567|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|01023232323232324523232323232323232323232323232323232323232676767676767676767676767676767676767676767676867676
405057676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212132121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 8
405050 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010401054541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 8
405050 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|01203030303030303030303030303030304545450454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EWT EPT EDT|59.u 50 40 40 40|01212314141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2kNuO.u 1drbO.u 6tX0 cp0 1hS0 pF0 J630 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/Ne
40505w_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 de
40505L0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT N
40505DDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|010102304056565656565656565656565656565656565656565656565656565656565656565656565656565656567|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|0121212121212|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00|-a0 -b0 0|010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|010202020202
4050502020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 
40505-30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010101010101010|-23uw0 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312
40505121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101010123232323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2o0 MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101012323232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2o0 MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +03 +04|-1U.U -20 -30 -30 -40|0121212121212121212121212121212121212121212121234312121212121212121212121212121212121212121212121212121212121212123|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b
405050 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|L
40505MT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|PST PDT JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5","Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|012323232323232323232123232323232323232323232323|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|010202020202
4050502020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|BMT BST AST ADT|4j.i 3j.i 40 30|010102323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28p7E.G 1bb0 1i10 11X0 ru30 thbE.G 1P
40505X0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293ju xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293ju xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Hobart|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293ju xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293iJ xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 
405051cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293k0 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293i0 xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0||","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","Etc
40505/GMT-0|GMT|0|0||","Etc/GMT-1|+01|-10|0||","Pacific/Port_Moresby|+10|-a0|0||25e4","Etc/GMT-11|+11|-b0|0||","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0||","Etc/GMT-14|+14|-e0|0||","Etc/GMT-2|+02|-20|0||","Etc/GMT-3|+03|-30|0||","Etc/GMT-4|+04|-40|0||","Etc/GMT-5|+05|-50|0||","Etc/GMT-6|+06|-60|0||","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0||","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0||","Etc/GMT+10|-10|a0|0||","Etc/GMT+11|-11|b0|0||","Etc/GMT+12|-12|c0|0||","Etc/GMT+3|-03|30|0||","Etc/GMT+4|-04|40|0||","Etc/GMT+5|-05|50|0||","Etc/GMT+6|-06|60|0||","Etc/GMT+7|-07|70|0||","Etc/GMT+8|-08|80|0||","Etc/GMT+9|-09|90|0||","Etc/UTC|UTC|0|0||","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO
vendor: 12,027 bytes, line 40505
405050 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST EET EEST MSK MSD +03|-10 -20 -20 -30 -30 -40 -30|01010101010101232454545454545454543232323232323232323232323232323232323232323262|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2n
405055c9.l cFX9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -2
405050 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|0123232323232323212121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0||","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2xorF.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 +10 +09 -12 +12|-b0 -a0 -90 c0 -c0|012034|-1kln0 akp0 6Up0 12ry0 Wan0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","MST|MST|70|0||","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Chuuk|+10 +09|-a0 -90|01010|-2ewy0 axB0 RVX0 axd0|49e3","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|
40505c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST +09 GDT ChST|-a0 -90 -b0 -a0|01020202020202020203|-18jK0 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4","Pacific/Honolulu|HST HDT HWT HPT HST|au 9u 9u 9u a0|0102304|-1thLu 8x0 lef0 8wWu iAu 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +09 +10 +12|-b0 -90 -a0 -c0|01021030|-2ewz0 axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2","Pacific/Majuro|+11 +09 +10 +12|-b0 -90 -a0 -c0|0102103|-2ewz0 axC0 HBy0 akp0 6RB0 12um0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11 +12|-bc -bu -cu -b0 -c0|012134343434343434343434343434343434343434|-Kgbc W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Pohnpei|+11 +09 +10|-b0 -90 -a0|010210|-2ewz0 axC0 HBy0 akp0 axd0|34e3","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|"],"links":["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigal
40505i","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Godthab|America/Nuuk","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada
40505/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Currie","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Chuuk|Pacific/Truk","Pacific/Chuuk|Pacific/Yap","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"],"countries":["AD|Europe/Andorra","AE|Asia/Dubai","AF|Asia/Kabul","AG|America/Port_of_Spain America/Antigua","AI|America/Port_of_Spain America/Anguilla","AL|Europe/Tirane","AM|Asia/Yerevan","AO|Africa/Lagos Africa/Luanda","AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo","AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia","AS|Pacific/Pago_Pago","AT|Europe/Vienna","AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla","AW|America/Curacao America/Aruba","AX|Europe/Helsinki Europe/Mariehamn","AZ|Asia/Baku","BA|Europe/Belgrade Europe/Sarajevo","BB|America/Barbados","BD|Asia/Dhaka","BE|Europe/Brussels","BF|Africa/Abidjan Africa/Ouagadougou","BG|Europe/Sofia","BH|Asia/Qatar Asia/Bahrain","BI|Africa/Maputo Africa/Bujumbura","BJ|Africa/Lagos Africa/Porto-Novo","BL|America/Port_of_Spain America/St_Barthelemy","BM|Atlantic/Bermuda","BN|Asia/Brunei","BO|America/La_Paz","BQ|America/Curacao America/Kralendijk","BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco","BS|America/Nassau","BT|Asia/Thimphu","BW|Africa/Maputo Africa/Gaborone","BY|Europe/Minsk","BZ|America/Belize","CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson","CC|Indian/Cocos","CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi","CF|Africa/Lagos Africa/Bangui","CG|Africa/Lagos Africa/Brazzaville","CH|Europe/Zurich","CI|Africa/Abidjan","CK|Pacific/Rarotonga","CL|America/Santiago America/Punta_Arenas Pacific/Easter","CM|Africa/Lagos Africa/Douala","CN|Asia/Shanghai Asia/Urumqi","CO|America/Bogota","CR|America/Costa_Rica","CU|America/Havana","CV|Atlantic/Cape_Verde","CW|America/Curacao","CX|Indian/Christmas","CY|Asia/Nicosia Asia/Famagusta","CZ|Europe/Prague","DE|Europe/Zurich Europe/Berlin Europe/Busingen","DJ|Africa/Nairobi Africa/Djibouti","DK|Europe/Copenhagen","DM|America/Port_of_Spain America/Dominica","DO|America/Santo_Domingo","DZ|Africa/Algiers","EC|America/Guayaquil Pacific/Galapagos","EE|Europe/Tallinn","EG|Africa/Cairo","EH|Africa/El_Aaiun","ER|Africa/Nairobi Africa/Asmara","ES|Europe/Madrid Africa/Ceuta Atlantic/Canary","ET|Africa/Nairobi Africa/Addis_Ababa","FI|Europe/Helsinki","FJ|Pacific/Fiji","FK|Atlantic/Stanley","FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae","FO|Atlantic/Faroe","FR|Europe/Paris","GA|Africa/Lagos Africa/Libreville","GB|Europe/London","GD|America/Port_of_Spain America/Grenada","GE|Asia/Tbilisi","GF|America/Cayenne","GG|Europe/London 
40505Europe/Guernsey","GH|Africa/Accra","GI|Europe/Gibraltar","GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule","GM|Africa/Abidjan Africa/Banjul","GN|Africa/Abidjan Africa/Conakry","GP|America/Port_of_Spain America/Guadeloupe","GQ|Africa/Lagos Africa/Malabo","GR|Europe/Athens","GS|Atlantic/South_Georgia","GT|America/Guatemala","GU|Pacific/Guam","GW|Africa/Bissau","GY|America/Guyana","HK|Asia/Hong_Kong","HN|America/Tegucigalpa","HR|Europe/Belgrade Europe/Zagreb","HT|America/Port-au-Prince","HU|Europe/Budapest","ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura","IE|Europe/Dublin","IL|Asia/Jerusalem","IM|Europe/London Europe/Isle_of_Man","IN|Asia/Kolkata","IO|Indian/Chagos","IQ|Asia/Baghdad","IR|Asia/Tehran","IS|Atlantic/Reykjavik","IT|Europe/Rome","JE|Europe/London Europe/Jersey","JM|America/Jamaica","JO|Asia/Amman","JP|Asia/Tokyo","KE|Africa/Nairobi","KG|Asia/Bishkek","KH|Asia/Bangkok Asia/Phnom_Penh","KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati","KM|Africa/Nairobi Indian/Comoro","KN|America/Port_of_Spain America/St_Kitts","KP|Asia/Pyongyang","KR|Asia/Seoul","KW|Asia/Riyadh Asia/Kuwait","KY|America/Panama America/Cayman","KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral","LA|Asia/Bangkok Asia/Vientiane","LB|Asia/Beirut","LC|America/Port_of_Spain America/St_Lucia","LI|Europe/Zurich Europe/Vaduz","LK|Asia/Colombo","LR|Africa/Monrovia","LS|Africa/Johannesburg Africa/Maseru","LT|Europe/Vilnius","LU|Europe/Luxembourg","LV|Europe/Riga","LY|Africa/Tripoli","MA|Africa/Casablanca","MC|Europe/Monaco","MD|Europe/Chisinau","ME|Europe/Belgrade Europe/Podgorica","MF|America/Port_of_Spain America/Marigot","MG|Africa/Nairobi Indian/Antananarivo","MH|Pacific/Majuro Pacific/Kwajalein","MK|Europe/Belgrade Europe/Skopje","ML|Africa/Abidjan Africa/Bamako","MM|Asia/Yangon","MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan","MO|Asia/Macau","MP|Pacific/Guam Pacific/Saipan","MQ|America/Martinique","MR|Africa/Abidjan Africa/Nouakchott","MS|America/Port_of_Spain America/Montserrat","MT|Europe/Malta","MU|Indian/Mauritius","MV|Indian/Maldives","MW|Africa/Maputo Africa/Blantyre","MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas","MY|Asia/Kuala_Lumpur Asia/Kuching","MZ|Africa/Maputo","NA|Africa/Windhoek","NC|Pacific/Noumea","NE|Africa/Lagos Africa/Niamey","NF|Pacific/Norfolk","NG|Africa/Lagos","NI|America/Managua","NL|Europe/Amsterdam","NO|Europe/Oslo","NP|Asia/Kathmandu","NR|Pacific/Nauru","NU|Pacific/Niue","NZ|Pacific/Auckland Pacific/Chatham","OM|Asia/Dubai Asia/Muscat","PA|America/Panama","PE|America/Lima","PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier","PG|Pacific/Port_Moresby Pacific/Bougainville","PH|Asia/Manila","PK|Asia/Karachi","PL|Europe/Warsaw","PM|America/Miquelon","PN|Pacific/Pitcairn","PR|America/Puerto_Rico","PS|Asia/Gaza Asia/Hebron","PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores","PW|Pacific/Palau","PY|America/Asuncion","QA|Asia/Qatar","RE|Indian/Reunion","RO|Europe/Bucharest","RS|Europe/Belgrade","RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr","RW|Africa/Maputo Africa/Kigali","SA|Asia/Riyadh","SB|Pacific/Guadalcanal","SC|Indian/Mahe","SD|Africa/Khartoum","SE|Europe/Stockholm","SG|Asia/Singapore","SH|Africa/Abidjan Atlantic/St_Helena","SI|Europe/Belgrade Europe/Ljubljana","SJ|Europe/Oslo Arctic/Longyearbyen","SK|Europe/Prague Europe/Bratislava","SL|Africa/Abidjan Africa/Freetown","SM|Europe/Rome Europe/San_Marino","SN|Africa/Abidjan Africa/Dakar","SO|Africa/Nairobi Africa/Mogadishu","SR|America/Paramaribo","SS|Africa/Juba","ST|Africa/Sao_Tome","SV|America/El_Salvador","SX|America/Curacao America/Lower_Princes","SY|Asia/Damascus","SZ|Africa/Johannesburg Africa/Mbabane","TC|America/Grand_Turk","TD|Africa/Ndjamena","TF|Indian/Reunion Indian/Kerguelen","TG|Africa/Abidjan Africa/Lome","TH|Asia/Bangkok","TJ|Asia/Dushanbe","TK|Pacific/Fakaofo","TL|Asia/Dili","TM|Asia/Ashgabat","TN|Africa/Tunis","TO|Pacific/Tongatapu","TR|Europe/Istanbul","TT|America/Port_of_Spain","TV|Pacific/Funafuti","TW|Asia/Taipei","TZ|Africa/Nairobi Africa/Dar_es_Salaam","UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye","UG|Africa/Nairobi Africa/Kampala","UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway","US|America/Ne
40505w_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu","UY|America/Montevideo","UZ|Asia/Samarkand Asia/Tashkent","VA|Europe/Rome Europe/Vatican","VC|America/Port_of_Spain America/St_Vincent","VE|America/Caracas","VG|America/Port_of_Spain America/Tortola","VI|America/Port_of_Spain America/St_Thomas","VN|Asia/Bangkok Asia/Ho_Chi_Minh","VU|Pacific/Efate","WF|Pacific/Wallis","WS|Pacific/Apia","YE|Asia/Riyadh Asia/Aden","YT|Africa/Nairobi Indian/Mayotte","ZA|Africa/Johannesburg","ZM|Africa/Maputo Africa/Lusaka","ZW|Africa/Maputo Africa/Harare"]}
40506
40507/***/ }),
40508/* 155 */
40509/***/ (function(module, __webpack_exports__, __webpack_require__) {
40510
40511"use strict";
40512var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40513
40514function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40515
40516var YearSelector = function () {
40517    function YearSelector() {
40518        _classCallCheck(this, YearSelector);
40519    }
40520
40521    _createClass(YearSelector, [{
40522        key: 'init',
40523
40524
40525        /**
40526         * Changes URL passed from year select
40527         * Expects selector to have id #YearSelector
40528         */
40529
40530        value: function init() {
40531            var _this = this;
40532
40533            var currentLocation = window.location.href;
40534            var selector = document.getElementById('YearSelector');
40535            if (selector) {
40536                var prev_year = selector.value;
40537                var url = currentLocation.split('/' + prev_year)[0];
40538                document.getElementById('YearSelector').addEventListener('change', function (event) {
40539                    return _this.updateYear(event, url);
40540                });
40541            }
40542        }
40543    }, {
40544        key: 'updateYear',
40545        value: function updateYear(event, url) {
40546            var newYear = event.target.value;
40547            if (newYear !== 'allyears') {
40548                var urlParts = url.split('?');
40549                url = urlParts[0] + '/' + newYear;
40550            }
40551            window.location.href = url;
40552        }
40553    }]);
40554
40555    return YearSelector;
40556}();
40557
40558/* harmony default export */ __webpack_exports__["a"] = (new YearSelector());
40559
40560/***/ }),
40561/* 156 */
40562/***/ (function(module, __webpack_exports__, __webpack_require__) {
40563
40564"use strict";
40565var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40566
40567function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40568
40569var Navigation = function () {
40570    function Navigation() {
40571        _classCallCheck(this, Navigation);
40572    }
40573
40574    _createClass(Navigation, [{
40575        key: 'init',
40576        value: function init() {
40577            var eventType = 'ontouchstart' in document.documentElement === true ? 'touchstart' : 'click';
40578            var elems = document.querySelectorAll('.primary-level-item');
40579            var hoverThreshold = 992;
40580
40581            // Mouse users
40582            // https://www.w3.org/WAI/tutorials/menus/flyout/#mouse-users
40583            elems.forEach(function (el) {
40584                var hasChildWithClass = el.querySelector('.second-level-nav__container') !== null;
40585
40586                if (!hasChildWithClass) {
40587                    return;
40588                }
40589
40590                var closeAction = function closeAction(target) {
40591                    target.parentNode.classList.remove('active');
40592                    target.setAttribute('aria-expanded', 'false');
40593
40594                    // Remove esc event listener
40595                    if (target.escController) {
40596                        target.escController.abort();
40597
40598                        // eslint-disable-next-line no-param-reassign
40599                        delete target.escController;
40600                    }
40601                };
40602
40603                var escapeEvent = function escapeEvent(closeEvt, target) {
40604                    if (closeEvt.key === 'Escape') {
40605                        closeEvt.stopPropagation();
40606                        closeAction(target);
40607                    }
40608                };
40609
40610                var closeOtherDropdowns = function closeOtherDropdowns() {
40611                    document.querySelectorAll('.primary-level-item.active [aria-expanded]').forEach(function (dropdown) {
40612                        return closeAction(dropdown);
40613                    });
40614                };
40615
40616                var openAction = function openAction(target) {
40617                    closeOtherDropdowns();
40618                    target.parentNode.classList.add('active');
40619                    target.setAttribute('aria-expanded', 'true');
40620
40621                    // Allow removal of esc event listener
40622                    var escController = new AbortController();
40623                    // eslint-disable-next-line no-param-reassign
40624                    target.escController = escController;
40625                    document.addEventListener('keydown', function (evt) {
40626                        return escapeEvent(evt, target);
40627                    }, {
40628                        signal: escController.signal
40629                    });
40630                };
40631
40632                // Keyboard users
40633                // https://www.w3.org/WAI/tutorials/menus/flyout/#use-button-as-toggle
40634                var childNavButton = el.querySelector('button');
40635                if (childNavButton) {
40636                    childNavButton.addEventListener(eventType, function (evt) {
40637                        if (evt.target.parentNode.classList.contains('active')) {
40638                            closeAction(evt.target);
40639                            return;
40640                        }
40641                        openAction(evt.target);
40642                    });
40643                }
40644
40645                // Check screen width before adding hover event listeners
40646                if (window.innerWidth > hoverThreshold) {
40647                    el.addEventListener('mouseover', function () {
40648                        openAction(childNavButton);
40649                    });
40650
40651                    el.addEventListener('mouseout', function () {
40652                        closeAction(childNavButton);
40653                    });
40654                }
40655
40656                var primaryNavContainer = el.querySelector('.second-level-nav');
40657
40658                primaryNavContainer.addEventListener('focusout', function (e) {
40659                    if (primaryNavContainer.contains(e.relatedTarget)) {
40660                        return;
40661                    }
40662                    // Pass in button to use same function
40663                    closeAction(childNavButton);
40664                });
40665            });
40666        }
40667    }]);
40668
40669    return Navigation;
40670}();
40671
40672/* harmony default export */ __webpack_exports__["a"] = (new Navigation());
40673
40674/***/ }),
40675/* 157 */
40676/***/ (function(module, __webpack_exports__, __webpack_require__) {
40677
40678"use strict";
40679/* unused harmony export MenuToggle */
40680/* harmony export (immutable) */ __webpack_exports__["a"] = init;
40681/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_throttle_debounce__ = __webpack_require__(158);
40682// import { createFocusTrap } from 'focus-trap';
40683
40684
40685var componentSelector = '[data-menu-toggle]';
40686
40687var toggleMenu = function toggleMenu(menu) {
40688    var setToVisible = menu.getAttribute('aria-expanded') === 'false';
40689    menu.setAttribute('aria-expanded', setToVisible);
40690
40691    if (menu.escEventAbort && menu.escEventAbort.abort) {
40692        menu.escEventAbort.abort();
40693    }
40694    if (menu.menuFocusTrap && menu.menuFocusTrap.deactivate) {
40695        menu.menuFocusTrap.deactivate();
40696    }
40697};
40698
40699// Close any open menus if the screen gets resized to the medium breakpoint
40700window.addEventListener('resize', Object(__WEBPACK_IMPORTED_MODULE_0_throttle_debounce__["a" /* throttle */])(200, function () {
40701    if (window.innerWidth >= 768) {
40702        document.querySelectorAll(componentSelector).forEach(function () {
40703            var menu = document.querySelector('[data-menu]');
40704
40705            if (menu.escEventAbort && menu.escEventAbort.abort) {
40706                menu.escEventAbort.abort();
40707            }
40708            if (menu.menuFocusTrap && menu.menuFocusTrap.deactivate) {
40709                menu.menuFocusTrap.deactivate();
40710            }
40711        });
40712    }
40713}));
40714
40715/**
40716 * Menu controls on mobile
40717 *
40718 * @param {HTMLElement} el
40719 * @returns
40720 */
40721var MenuToggle = function MenuToggle(el) {
40722    var menuNames = el.getAttribute('aria-controls').split(' ');
40723
40724    menuNames.forEach(function (menuName) {
40725        var menu = document.querySelector('#' + menuName);
40726
40727        if (!menu) return;
40728
40729        el.addEventListener('click', function () {
40730            return toggleMenu(menu);
40731        });
40732    });
40733};
40734
40735function init() {
40736    var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
40737
40738    scope.querySelectorAll(componentSelector).forEach(function (el) {
40739        return MenuToggle(el);
40740    });
40741}
40742
40743/***/ }),
40744/* 158 */
40745/***/ (function(module, __webpack_exports__, __webpack_require__) {
40746
40747"use strict";
40748/* unused harmony export debounce */
40749/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throttle; });
40750/* eslint-disable no-undefined,no-param-reassign,no-shadow */
40751
40752/**
40753 * Throttle execution of a function. Especially useful for rate limiting
40754 * execution of handlers on events like resize and scroll.
40755 *
40756 * @param {number} delay -                  A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
40757 *                                            are most useful.
40758 * @param {Function} callback -               A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
40759 *                                            as-is, to `callback` when the throttled-function is executed.
40760 * @param {object} [options] -              An object to configure options.
40761 * @param {boolean} [options.noTrailing] -   Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
40762 *                                            while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
40763 *                                            one final time after the last throttled-function call. (After the throttled-function has not been called for
40764 *                                            `delay` milliseconds, the internal counter is reset).
40765 * @param {boolean} [options.noLeading] -   Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
40766 *                                            immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
40767 *                                            callback will never executed if both noLeading = true and noTrailing = true.
40768 * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
40769 *                                            false (at end), schedule `callback` to execute after `delay` ms.
40770 *
40771 * @returns {Function} A new, throttled, function.
40772 */
40773function throttle (delay, callback, options) {
40774  var _ref = options || {},
40775      _ref$noTrailing = _ref.noTrailing,
40776      noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
40777      _ref$noLeading = _ref.noLeading,
40778      noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
40779      _ref$debounceMode = _ref.debounceMode,
40780      debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
40781  /*
40782   * After wrapper has stopped being called, this timeout ensures that
40783   * `callback` is executed at the proper times in `throttle` and `end`
40784   * debounce modes.
40785   */
40786
40787
40788  var timeoutID;
40789  var cancelled = false; // Keep track of the last time `callback` was executed.
40790
40791  var lastExec = 0; // Function to clear existing timeout
40792
40793  function clearExistingTimeout() {
40794    if (timeoutID) {
40795      clearTimeout(timeoutID);
40796    }
40797  } // Function to cancel next exec
40798
40799
40800  function cancel(options) {
40801    var _ref2 = options || {},
40802        _ref2$upcomingOnly = _ref2.upcomingOnly,
40803        upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
40804
40805    clearExistingTimeout();
40806    cancelled = !upcomingOnly;
40807  }
40808  /*
40809   * The `wrapper` function encapsulates all of the throttling / debouncing
40810   * functionality and when executed will limit the rate at which `callback`
40811   * is executed.
40812   */
40813
40814
40815  function wrapper() {
40816    for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
40817      arguments_[_key] = arguments[_key];
40818    }
40819
40820    var self = this;
vendor: 4,328 bytes, lines 40821-40937
40821    var elapsed = Date.now() - lastExec;
40822
40823    if (cancelled) {
40824      return;
40825    } // Execute `callback` and update the `lastExec` timestamp.
40826
40827
40828    function exec() {
40829      lastExec = Date.now();
40830      callback.apply(self, arguments_);
40831    }
40832    /*
40833     * If `debounceMode` is true (at begin) this is used to clear the flag
40834     * to allow future `callback` executions.
40835     */
40836
40837
40838    function clear() {
40839      timeoutID = undefined;
40840    }
40841
40842    if (!noLeading && debounceMode && !timeoutID) {
40843      /*
40844       * Since `wrapper` is being called for the first time and
40845       * `debounceMode` is true (at begin), execute `callback`
40846       * and noLeading != true.
40847       */
40848      exec();
40849    }
40850
40851    clearExistingTimeout();
40852
40853    if (debounceMode === undefined && elapsed > delay) {
40854      if (noLeading) {
40855        /*
40856         * In throttle mode with noLeading, if `delay` time has
40857         * been exceeded, update `lastExec` and schedule `callback`
40858         * to execute after `delay` ms.
40859         */
40860        lastExec = Date.now();
40861
40862        if (!noTrailing) {
40863          timeoutID = setTimeout(debounceMode ? clear : exec, delay);
40864        }
40865      } else {
40866        /*
40867         * In throttle mode without noLeading, if `delay` time has been exceeded, execute
40868         * `callback`.
40869         */
40870        exec();
40871      }
40872    } else if (noTrailing !== true) {
40873      /*
40874       * In trailing throttle mode, since `delay` time has not been
40875       * exceeded, schedule `callback` to execute `delay` ms after most
40876       * recent execution.
40877       *
40878       * If `debounceMode` is true (at begin), schedule `clear` to execute
40879       * after `delay` ms.
40880       *
40881       * If `debounceMode` is false (at end), schedule `callback` to
40882       * execute after `delay` ms.
40883       */
40884      timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
40885    }
40886  }
40887
40888  wrapper.cancel = cancel; // Return the wrapper function.
40889
40890  return wrapper;
40891}
40892
40893/* eslint-disable no-undefined */
40894/**
40895 * Debounce execution of a function. Debouncing, unlike throttling,
40896 * guarantees that a function is only executed a single time, either at the
40897 * very beginning of a series of calls, or at the very end.
40898 *
40899 * @param {number} delay -               A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
40900 * @param {Function} callback -          A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
40901 *                                        to `callback` when the debounced-function is executed.
40902 * @param {object} [options] -           An object to configure options.
40903 * @param {boolean} [options.atBegin] -  Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
40904 *                                        after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
40905 *                                        (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
40906 *
40907 * @returns {Function} A new, debounced function.
40908 */
40909
40910function debounce (delay, callback, options) {
40911  var _ref = options || {},
40912      _ref$atBegin = _ref.atBegin,
40913      atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
40914
40915  return throttle(delay, callback, {
40916    debounceMode: atBegin !== false
40917  });
40918}
40919
40920
40921//# sourceMappingURL=index.js.map
40922
40923
40924/***/ }),
40925/* 159 */
40926/***/ (function(module, __webpack_exports__, __webpack_require__) {
40927
40928"use strict";
40929/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator__ = __webpack_require__(160);
40930/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator__);
40931/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dompurify__ = __webpack_require__(163);
40932/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dompurify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_dompurify__);
40933
40934
40935var _this = this;
40936
40937function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { tr
40937y { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
40938
40939
40940
40941var ScheduledBanner = function ScheduledBanner() {
40942    var holders = document.querySelectorAll('[data-scheduled-banner]');
40943    holders.forEach(function () {
40944        var _ref = _asyncToGenerator( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default.a.mark(function _callee(holder) {
40945            var url, response, html, sanitizedHTML;
40946            return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default.a.wrap(function _callee$(_context) {
40947                while (1) {
40948                    switch (_context.prev = _context.next) {
40949                        case 0:
40950                            url = holder.dataset.scheduledBanner;
40951
40952                            if (!url) {
40953                                _context.next = 12;
40954                                break;
40955                            }
40956
40957                            _context.next = 4;
40958                            return fetch(url, {
40959                                headers: {
40960                                    'x-requested-with': 'XMLHttpRequest'
40961                                }
40962                            });
40963
40964                        case 4:
40965                            response = _context.sent;
40966
40967                            if (response.ok) {
40968                                _context.next = 7;
40969                                break;
40970                            }
40971
40972                            return _context.abrupt('return');
40973
40974                        case 7:
40975                            _context.next = 9;
40976                            return response.text();
40977
40978                        case 9:
40979                            html = _context.sent;
40980                            sanitizedHTML = __WEBPACK_IMPORTED_MODULE_1_dompurify___default.a.sanitize(html);
40981
40982
40983                            if (sanitizedHTML.length > 0) {
40984                                holder.innerHTML = sanitizedHTML;
40985                                holder.style.maxHeight = holder.scrollHeight + 'px';
40986                            }
40987
40988                        case 12:
40989                        case 'end':
40990                            return _context.stop();
40991                    }
40992                }
40993            }, _callee, _this);
40994        }));
40995
40996        return function (_x) {
40997            return _ref.apply(this, arguments);
40998        };
40999    }());
41000};
41001
41002/* harmony default export */ __webpack_exports__["a"] = (ScheduledBanner);
41003
41004/***/ }),
41005/* 160 */
41006/***/ (function(module, exports, __webpack_require__) {
41007
41008module.exports = __webpack_require__(161);
41009
41010
41011/***/ }),
41012/* 161 */
41013/***/ (function(module, exports, __webpack_require__) {
41014
41015/**
41016 * Copyright (c) 2014-present, Facebook, Inc.
41017 *
41018 * This source code is licensed under the MIT license found in the
41019 * LICENSE file in the root directory of this source tree.
41020 */
41021
41022// This method of obtaining a reference to the global object needs to be
41023// kept identical to the way it is obtained in runtime.js
41024var g = (function() { return this })() || Function("return this")();
41025
41026// Use `getOwnPropertyNames` because not all browsers support calling
41027// `hasOwnProperty` on the global `self` object in a worker. See #183.
41028var hadRuntime = g.regeneratorRuntime &&
41029  Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
41030
41031// Save the old regeneratorRuntime in case it needs to be restored later.
41032var oldRuntime = hadRuntime && g.regeneratorRuntime;
41033
41034// Force reevalutation of runtime.js.
41035g.regeneratorRuntime = undefined;
41036
41037module.exports = __webpack_require__(162);
41038
41039if (hadRuntime) {
41040  // Restore the original runtime.
41041  g.regeneratorRuntime = oldRuntime;
41042} else {
41043  // Remove the global property added by runtime.js.
41044  try {
41045    delete g.regeneratorRuntime;
41046  } catch(e) {
41047    g.regeneratorRuntime = undefined;
41048  }
41049}
41050
41051
41052/***/ }),
41053/* 162
vendor: 24,180 bytes, lines 41053-41786
41053 */
41054/***/ (function(module, exports) {
41055
41056/**
41057 * Copyright (c) 2014-present, Facebook, Inc.
41058 *
41059 * This source code is licensed under the MIT license found in the
41060 * LICENSE file in the root directory of this source tree.
41061 */
41062
41063!(function(global) {
41064  "use strict";
41065
41066  var Op = Object.prototype;
41067  var hasOwn = Op.hasOwnProperty;
41068  var undefined; // More compressible than void 0.
41069  var $Symbol = typeof Symbol === "function" ? Symbol : {};
41070  var iteratorSymbol = $Symbol.iterator || "@@iterator";
41071  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
41072  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
41073
41074  var inModule = typeof module === "object";
41075  var runtime = global.regeneratorRuntime;
41076  if (runtime) {
41077    if (inModule) {
41078      // If regeneratorRuntime is defined globally and we're in a module,
41079      // make the exports object identical to regeneratorRuntime.
41080      module.exports = runtime;
41081    }
41082    // Don't bother evaluating the rest of this file if the runtime was
41083    // already defined globally.
41084    return;
41085  }
41086
41087  // Define the runtime globally (as expected by generated code) as either
41088  // module.exports (if we're in a module) or a new, empty object.
41089  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
41090
41091  function wrap(innerFn, outerFn, self, tryLocsList) {
41092    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
41093    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
41094    var generator = Object.create(protoGenerator.prototype);
41095    var context = new Context(tryLocsList || []);
41096
41097    // The ._invoke method unifies the implementations of the .next,
41098    // .throw, and .return methods.
41099    generator._invoke = makeInvokeMethod(innerFn, self, context);
41100
41101    return generator;
41102  }
41103  runtime.wrap = wrap;
41104
41105  // Try/catch helper to minimize deoptimizations. Returns a completion
41106  // record like context.tryEntries[i].completion. This interface could
41107  // have been (and was previously) designed to take a closure to be
41108  // invoked without arguments, but in all the cases we care about we
41109  // already have an existing method we want to call, so there's no need
41110  // to create a new function object. We can even get away with assuming
41111  // the method takes exactly one argument, since that happens to be true
41112  // in every case, so we don't have to touch the arguments object. The
41113  // only additional allocation required is the completion record, which
41114  // has a stable shape and so hopefully should be cheap to allocate.
41115  function tryCatch(fn, obj, arg) {
41116    try {
41117      return { type: "normal", arg: fn.call(obj, arg) };
41118    } catch (err) {
41119      return { type: "throw", arg: err };
41120    }
41121  }
41122
41123  var GenStateSuspendedStart = "suspendedStart";
41124  var GenStateSuspendedYield = "suspendedYield";
41125  var GenStateExecuting = "executing";
41126  var GenStateCompleted = "completed";
41127
41128  // Returning this object from the innerFn has the same effect as
41129  // breaking out of the dispatch switch statement.
41130  var ContinueSentinel = {};
41131
41132  // Dummy constructor functions that we use as the .constructor and
41133  // .constructor.prototype properties for functions that return Generator
41134  // objects. For full spec compliance, you may wish to configure your
41135  // minifier not to mangle the names of these two functions.
41136  function Generator() {}
41137  function GeneratorFunction() {}
41138  function GeneratorFunctionPrototype() {}
41139
41140  // This is a polyfill for %IteratorPrototype% for environments that
41141  // don't natively support it.
41142  var IteratorPrototype = {};
41143  IteratorPrototype[iteratorSymbol] = function () {
41144    return this;
41145  };
41146
41147  var getProto = Object.getPrototypeOf;
41148  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
41149  if (NativeIteratorPrototype &&
41150      NativeIteratorPrototype !== Op &&
41151      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
41152    // This environment has a native %IteratorPrototype%; use it instead
41153    // of the polyfill.
41154    IteratorPrototype = NativeIteratorPrototype;
41155  }
41156
41157  var Gp = GeneratorFunctionPrototype.prototype =
41158    Generator.prototype = Object.create(IteratorPrototype);
41159  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
41160  GeneratorFunctionPrototype.constructor = GeneratorFunction;
41161  GeneratorFunctionPrototype[toStringTagSymbol] =
41162    GeneratorFunction.displayName = "GeneratorFunction";
41163
41164  // Helper for defining the .next, .throw, and .return methods of the
41165  // Iterator interface in terms of a single ._invoke method.
41166  function defineIteratorMethods(prototype) {
41167    ["next", "throw", "return"].forEach(function(method) {
41168      prototype[method] = function(arg) {
41169        return this._invoke(method, arg);
41170      };
41171    });
41172  }
41173
41174  runtime.isGeneratorFunction = function(genFun) {
41175    var ctor = typeof genFun === "function" && genFun.constructor;
41176    return ctor
41177      ? ctor === GeneratorFunction ||
41178        // For the native GeneratorFunction constructor, the best we can
41179        // do is to check its .name property.
41180        (ctor.displayName || ctor.name) === "GeneratorFunction"
41181      : false;
41182  };
41183
41184  runtime.mark = function(genFun) {
41185    if (Object.setPrototypeOf) {
41186      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
41187    } else {
41188      genFun.__proto__ = GeneratorFunctionPrototype;
41189      if (!(toStringTagSymbol in genFun)) {
41190        genFun[toStringTagSymbol] = "GeneratorFunction";
41191      }
41192    }
41193    genFun.prototype = Object.create(Gp);
41194    return genFun;
41195  };
41196
41197  // Within the body of any async function, `await x` is transformed to
41198  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
41199  // `hasOwn.call(value, "__await")` to determine if the yielded value is
41200  // meant to be awaited.
41201  runtime.awrap = function(arg) {
41202    return { __await: arg };
41203  };
41204
41205  function AsyncIterator(generator) {
41206    function invoke(method, arg, resolve, reject) {
41207      var record = tryCatch(generator[method], generator, arg);
41208      if (record.type === "throw") {
41209        reject(record.arg);
41210      } else {
41211        var result = record.arg;
41212        var value = result.value;
41213        if (value &&
41214            typeof value === "object" &&
41215            hasOwn.call(value, "__await")) {
41216          return Promise.resolve(value.__await).then(function(value) {
41217            invoke("next", value, resolve, reject);
41218          }, function(err) {
41219            invoke("throw", err, resolve, reject);
41220          });
41221        }
41222
41223        return Promise.resolve(value).then(function(unwrapped) {
41224          // When a yielded Promise is resolved, its final value becomes
41225          // the .value of the Promise<{value,done}> result for the
41226          // current iteration. If the Promise is rejected, however, the
41227          // result for this iteration will be rejected with the same
41228          // reason. Note that rejections of yielded Promises are not
41229          // thrown back into the generator function, as is the case
41230          // when an awaited Promise is rejected. This difference in
41231          // behavior between yield and await is important, because it
41232          // allows the consumer to decide what to do with the yielded
41233          // rejection (swallow it and continue, manually .throw it back
41234          // into the generator, abandon iteration, whatever). With
41235          // await, by contrast, there is no opportunity to examine the
41236          // rejection reason outside the generator function, so the
41237          // only option is to throw it from the await expression, and
41238          // let the generator function handle the exception.
41239          result.value = unwrapped;
41240          resolve(result);
41241        }, reject);
41242      }
41243    }
41244
41245    var previousPromise;
41246
41247    function enqueue(method, arg) {
41248      function callInvokeWithMethodAndArg() {
41249        return new Promise(function(resolve, reject) {
41250          invoke(method, arg, resolve, reject);
41251        });
41252      }
41253
41254      return previousPromise =
41255        // If enqueue has been called before, then we want to wait until
41256        // all previous Promises have been resolved before calling invoke,
41257        // so that results are always delivered in the correct order. If
41258        // enqueue has not been called before, then it is important to
41259        // call invoke immediately, without waiting on a callback to fire,
41260        // so that the async generator function has the opportunity to do
41261        // any necessary setup in a predictable way. This predictability
41262        // is why the Promise constructor synchronously invokes its
41263        // executor callback, and why async functions synchronously
41264        // execute code before the first await. Since we implement simple
41265        // async functions in terms of async generators, it is especially
41266        // important to get this right, even though it requires care.
41267        previousPromise ? previousPromise.then(
41268          callInvokeWithMethodAndArg,
41269          // Avoid propagating failures to Promises returned by later
41270          // invocations of the iterator.
41271          callInvokeWithMethodAndArg
41272        ) : callInvokeWithMethodAndArg();
41273    }
41274
41275    // Define the unified helper method that is used to implement .next,
41276    // .throw, and .return (see defineIteratorMethods).
41277    this._invoke = enqueue;
41278  }
41279
41280  defineIteratorMethods(AsyncIterator.prototype);
41281  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
41282    return this;
41283  };
41284  runtime.AsyncIterator = AsyncIterator;
41285
41286  // Note that simple async functions are implemented on top of
41287  // AsyncIterator objects; they just return a Promise for the value of
41288  // the final result produced by the iterator.
41289  runtime.async = function(innerFn, outerFn, self, tryLocsList) {
41290    var iter = new AsyncIterator(
41291      wrap(innerFn, outerFn, self, tryLocsList)
41292    );
41293
41294    return runtime.isGeneratorFunction(outerFn)
41295      ? iter // If outerFn is a generator, return the full iterator.
41296      : iter.next().then(function(result) {
41297          return result.done ? result.value : iter.next();
41298        });
41299  };
41300
41301  function makeInvokeMethod(innerFn, self, context) {
41302    var state = GenStateSuspendedStart;
41303
41304    return function invoke(method, arg) {
41305      if (state === GenStateExecuting) {
41306        throw new Error("Generator is already running");
41307      }
41308
41309      if (state === GenStateCompleted) {
41310        if (method === "throw") {
41311          throw arg;
41312        }
41313
41314        // Be forgiving, per 25.3.3.3.3 of the spec:
41315        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
41316        return doneResult();
41317      }
41318
41319      context.method = method;
41320      context.arg = arg;
41321
41322      while (true) {
41323        var delegate = context.delegate;
41324        if (delegate) {
41325          var delegateResult = maybeInvokeDelegate(delegate, context);
41326          if (delegateResult) {
41327            if (delegateResult === ContinueSentinel) continue;
41328            return delegateResult;
41329          }
41330        }
41331
41332        if (context.method === "next") {
41333          // Setting context._sent for legacy support of Babel's
41334          // function.sent implementation.
41335          context.sent = context._sent = context.arg;
41336
41337        } else if (context.method === "throw") {
41338          if (state === GenStateSuspendedStart) {
41339            state = GenStateCompleted;
41340            throw context.arg;
41341          }
41342
41343          context.dispatchException(context.arg);
41344
41345        } else if (context.method === "return") {
41346          context.abrupt("return", context.arg);
41347        }
41348
41349        state = GenStateExecuting;
41350
41351        var record = tryCatch(innerFn, self, context);
41352        if (record.type === "normal") {
41353          // If an exception is thrown from innerFn, we leave state ===
41354          // GenStateExecuting and loop back for another invocation.
41355          state = context.done
41356            ? GenStateCompleted
41357            : GenStateSuspendedYield;
41358
41359          if (record.arg === ContinueSentinel) {
41360            continue;
41361          }
41362
41363          return {
41364            value: record.arg,
41365            done: context.done
41366          };
41367
41368        } else if (record.type === "throw") {
41369          state = GenStateCompleted;
41370          // Dispatch the exception by looping back around to the
41371          // context.dispatchException(context.arg) call above.
41372          context.method = "throw";
41373          context.arg = record.arg;
41374        }
41375      }
41376    };
41377  }
41378
41379  // Call delegate.iterator[context.method](context.arg) and handle the
41380  // result, either by returning a { value, done } result from the
41381  // delegate iterator, or by modifying context.method and context.arg,
41382  // setting context.delegate to null, and returning the ContinueSentinel.
41383  function maybeInvokeDelegate(delegate, context) {
41384    var method = delegate.iterator[context.method];
41385    if (method === undefined) {
41386      // A .throw or .return when the delegate iterator has no .throw
41387      // method always terminates the yield* loop.
41388      context.delegate = null;
41389
41390      if (context.method === "throw") {
41391        if (delegate.iterator.return) {
41392          // If the delegate iterator has a return method, give it a
41393          // chance to clean up.
41394          context.method = "return";
41395          context.arg = undefined;
41396          maybeInvokeDelegate(delegate, context);
41397
41398          if (context.method === "throw") {
41399            // If maybeInvokeDelegate(context) changed context.method from
41400            // "return" to "throw", let that override the TypeError below.
41401            return ContinueSentinel;
41402          }
41403        }
41404
41405        context.method = "throw";
41406        context.arg = new TypeError(
41407          "The iterator does not provide a 'throw' method");
41408      }
41409
41410      return ContinueSentinel;
41411    }
41412
41413    var record = tryCatch(method, delegate.iterator, context.arg);
41414
41415    if (record.type === "throw") {
41416      context.method = "throw";
41417      context.arg = record.arg;
41418      context.delegate = null;
41419      return ContinueSentinel;
41420    }
41421
41422    var info = record.arg;
41423
41424    if (! info) {
41425      context.method = "throw";
41426      context.arg = new TypeError("iterator result is not an object");
41427      context.delegate = null;
41428      return ContinueSentinel;
41429    }
41430
41431    if (info.done) {
41432      // Assign the result of the finished delegate to the temporary
41433      // variable specified by delegate.resultName (see delegateYield).
41434      context[delegate.resultName] = info.value;
41435
41436      // Resume execution at the desired location (see delegateYield).
41437      context.next = delegate.nextLoc;
41438
41439      // If context.method was "throw" but the delegate handled the
41440      // exception, let the outer generator proceed normally. If
41441      // context.method was "next", forget context.arg since it has been
41442      // "consumed" by the delegate iterator. If context.method was
41443      // "return", allow the original .return call to continue in the
41444      // outer generator.
41445      if (context.method !== "return") {
41446        context.method = "next";
41447        context.arg = undefined;
41448      }
41449
41450    } else {
41451      // Re-yield the result returned by the delegate method.
41452      return info;
41453    }
41454
41455    // The delegate iterator is finished, so forget it and continue with
41456    // the outer generator.
41457    context.delegate = null;
41458    return ContinueSentinel;
41459  }
41460
41461  // Define Generator.prototype.{next,throw,return} in terms of the
41462  // unified ._invoke helper method.
41463  defineIteratorMethods(Gp);
41464
41465  Gp[toStringTagSymbol] = "Generator";
41466
41467  // A Generator should always return itself as the iterator object when the
41468  // @@iterator function is called on it. Some browsers' implementations of the
41469  // iterator prototype chain incorrectly implement this, causing the Generator
41470  // object to not be returned from this call. This ensures that doesn't happen.
41471  // See https://github.com/facebook/regenerator/issues/274 for more details.
41472  Gp[iteratorSymbol] = function() {
41473    return this;
41474  };
41475
41476  Gp.toString = function() {
41477    return "[object Generator]";
41478  };
41479
41480  function pushTryEntry(locs) {
41481    var entry = { tryLoc: locs[0] };
41482
41483    if (1 in locs) {
41484      entry.catchLoc = locs[1];
41485    }
41486
41487    if (2 in locs) {
41488      entry.finallyLoc = locs[2];
41489      entry.afterLoc = locs[3];
41490    }
41491
41492    this.tryEntries.push(entry);
41493  }
41494
41495  function resetTryEntry(entry) {
41496    var record = entry.completion || {};
41497    record.type = "normal";
41498    delete record.arg;
41499    entry.completion = record;
41500  }
41501
41502  function Context(tryLocsList) {
41503    // The root entry object (effectively a try statement without a catch
41504    // or a finally block) gives us a place to store values thrown from
41505    // locations where there is no enclosing try statement.
41506    this.tryEntries = [{ tryLoc: "root" }];
41507    tryLocsList.forEach(pushTryEntry, this);
41508    this.reset(true);
41509  }
41510
41511  runtime.keys = function(object) {
41512    var keys = [];
41513    for (var key in object) {
41514      keys.push(key);
41515    }
41516    keys.reverse();
41517
41518    // Rather than returning an object with a next method, we keep
41519    // things simple and return the next function itself.
41520    return function next() {
41521      while (keys.length) {
41522        var key = keys.pop();
41523        if (key in object) {
41524          next.value = key;
41525          next.done = false;
41526          return next;
41527        }
41528      }
41529
41530      // To avoid creating an additional object, we just hang the .value
41531      // and .done properties off the next function object itself. This
41532      // also ensures that the minifier will not anonymize the function.
41533      next.done = true;
41534      return next;
41535    };
41536  };
41537
41538  function values(iterable) {
41539    if (iterable) {
41540      var iteratorMethod = iterable[iteratorSymbol];
41541      if (iteratorMethod) {
41542        return iteratorMethod.call(iterable);
41543      }
41544
41545      if (typeof iterable.next === "function") {
41546        return iterable;
41547      }
41548
41549      if (!isNaN(iterable.length)) {
41550        var i = -1, next = function next() {
41551          while (++i < iterable.length) {
41552            if (hasOwn.call(iterable, i)) {
41553              next.value = iterable[i];
41554              next.done = false;
41555              return next;
41556            }
41557          }
41558
41559          next.value = undefined;
41560          next.done = true;
41561
41562          return next;
41563        };
41564
41565        return next.next = next;
41566      }
41567    }
41568
41569    // Return an iterator with no values.
41570    return { next: doneResult };
41571  }
41572  runtime.values = values;
41573
41574  function doneResult() {
41575    return { value: undefined, done: true };
41576  }
41577
41578  Context.prototype = {
41579    constructor: Context,
41580
41581    reset: function(skipTempReset) {
41582      this.prev = 0;
41583      this.next = 0;
41584      // Resetting context._sent for legacy support of Babel's
41585      // function.sent implementation.
41586      this.sent = this._sent = undefined;
41587      this.done = false;
41588      this.delegate = null;
41589
41590      this.method = "next";
41591      this.arg = undefined;
41592
41593      this.tryEntries.forEach(resetTryEntry);
41594
41595      if (!skipTempReset) {
41596        for (var name in this) {
41597          // Not sure about the optimal order of these conditions:
41598          if (name.charAt(0) === "t" &&
41599              hasOwn.call(this, name) &&
41600              !isNaN(+name.slice(1))) {
41601            this[name] = undefined;
41602          }
41603        }
41604      }
41605    },
41606
41607    stop: function() {
41608      this.done = true;
41609
41610      var rootEntry = this.tryEntries[0];
41611      var rootRecord = rootEntry.completion;
41612      if (rootRecord.type === "throw") {
41613        throw rootRecord.arg;
41614      }
41615
41616      return this.rval;
41617    },
41618
41619    dispatchException: function(exception) {
41620      if (this.done) {
41621        throw exception;
41622      }
41623
41624      var context = this;
41625      function handle(loc, caught) {
41626        record.type = "throw";
41627        record.arg = exception;
41628        context.next = loc;
41629
41630        if (caught) {
41631          // If the dispatched exception was caught by a catch block,
41632          // then let that catch block handle the exception normally.
41633          context.method = "next";
41634          context.arg = undefined;
41635        }
41636
41637        return !! caught;
41638      }
41639
41640      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41641        var entry = this.tryEntries[i];
41642        var record = entry.completion;
41643
41644        if (entry.tryLoc === "root") {
41645          // Exception thrown outside of any try block that could handle
41646          // it, so set the completion value of the entire function to
41647          // throw the exception.
41648          return handle("end");
41649        }
41650
41651        if (entry.tryLoc <= this.prev) {
41652          var hasCatch = hasOwn.call(entry, "catchLoc");
41653          var hasFinally = hasOwn.call(entry, "finallyLoc");
41654
41655          if (hasCatch && hasFinally) {
41656            if (this.prev < entry.catchLoc) {
41657              return handle(entry.catchLoc, true);
41658            } else if (this.prev < entry.finallyLoc) {
41659              return handle(entry.finallyLoc);
41660            }
41661
41662          } else if (hasCatch) {
41663            if (this.prev < entry.catchLoc) {
41664              return handle(entry.catchLoc, true);
41665            }
41666
41667          } else if (hasFinally) {
41668            if (this.prev < entry.finallyLoc) {
41669              return handle(entry.finallyLoc);
41670            }
41671
41672          } else {
41673            throw new Error("try statement without catch or finally");
41674          }
41675        }
41676      }
41677    },
41678
41679    abrupt: function(type, arg) {
41680      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41681        var entry = this.tryEntries[i];
41682        if (entry.tryLoc <= this.prev &&
41683            hasOwn.call(entry, "finallyLoc") &&
41684            this.prev < entry.finallyLoc) {
41685          var finallyEntry = entry;
41686          break;
41687        }
41688      }
41689
41690      if (finallyEntry &&
41691          (type === "break" ||
41692           type === "continue") &&
41693          finallyEntry.tryLoc <= arg &&
41694          arg <= finallyEntry.finallyLoc) {
41695        // Ignore the finally entry if control is not jumping to a
41696        // location outside the try/catch block.
41697        finallyEntry = null;
41698      }
41699
41700      var record = finallyEntry ? finallyEntry.completion : {};
41701      record.type = type;
41702      record.arg = arg;
41703
41704      if (finallyEntry) {
41705        this.method = "next";
41706        this.next = finallyEntry.finallyLoc;
41707        return ContinueSentinel;
41708      }
41709
41710      return this.complete(record);
41711    },
41712
41713    complete: function(record, afterLoc) {
41714      if (record.type === "throw") {
41715        throw record.arg;
41716      }
41717
41718      if (record.type === "break" ||
41719          record.type === "continue") {
41720        this.next = record.arg;
41721      } else if (record.type === "return") {
41722        this.rval = this.arg = record.arg;
41723        this.method = "return";
41724        this.next = "end";
41725      } else if (record.type === "normal" && afterLoc) {
41726        this.next = afterLoc;
41727      }
41728
41729      return ContinueSentinel;
41730    },
41731
41732    finish: function(finallyLoc) {
41733      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41734        var entry = this.tryEntries[i];
41735        if (entry.finallyLoc === finallyLoc) {
41736          this.complete(entry.completion, entry.afterLoc);
41737          resetTryEntry(entry);
41738          return ContinueSentinel;
41739        }
41740      }
41741    },
41742
41743    "catch": function(tryLoc) {
41744      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41745        var entry = this.tryEntries[i];
41746        if (entry.tryLoc === tryLoc) {
41747          var record = entry.completion;
41748          if (record.type === "throw") {
41749            var thrown = record.arg;
41750            resetTryEntry(entry);
41751          }
41752          return thrown;
41753        }
41754      }
41755
41756      // The context.catch method must only be called with a location
41757      // argument that corresponds to a known catch block.
41758      throw new Error("illegal catch attempt");
41759    },
41760
41761    delegateYield: function(iterable, resultName, nextLoc) {
41762      this.delegate = {
41763        iterator: values(iterable),
41764        resultName: resultName,
41765        nextLoc: nextLoc
41766      };
41767
41768      if (this.method === "next") {
41769        // Deliberately forget the last sent value so that we don't
41770        // accidentally pass it on to the delegate.
41771        this.arg = undefined;
41772      }
41773
41774      return ContinueSentinel;
41775    }
41776  };
41777})(
41778  // In sloppy mode, unbound `this` refers to the global object, fallback to
41779  // Function constructor if we're in global strict mode. That is sadly a form
41780  // of indirect eval which violates Content Security Policy.
41781  (function() { return this })() || Function("return this")()
41782);
41783
41784
41785/***/ }),
41786/* 1
vendor: 3,475 bytes, lines 41786-41878
4178663 */
41787/***/ (function(module, exports, __webpack_require__) {
41788
41789/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */
41790
41791(function (global, factory) {
41792   true ? module.exports = factory() :
41793  typeof define === 'function' && define.amd ? define(factory) :
41794  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());
41795})(this, (function () { 'use strict';
41796
41797  const {
41798    entries,
41799    setPrototypeOf,
41800    isFrozen,
41801    getPrototypeOf,
41802    getOwnPropertyDescriptor
41803  } = Object;
41804  let {
41805    freeze,
41806    seal,
41807    create
41808  } = Object; // eslint-disable-line import/no-mutable-exports
41809  let {
41810    apply,
41811    construct
41812  } = typeof Reflect !== 'undefined' && Reflect;
41813  if (!freeze) {
41814    freeze = function freeze(x) {
41815      return x;
41816    };
41817  }
41818  if (!seal) {
41819    seal = function seal(x) {
41820      return x;
41821    };
41822  }
41823  if (!apply) {
41824    apply = function apply(func, thisArg) {
41825      for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
41826        args[_key - 2] = arguments[_key];
41827      }
41828      return func.apply(thisArg, args);
41829    };
41830  }
41831  if (!construct) {
41832    construct = function construct(Func) {
41833      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
41834        args[_key2 - 1] = arguments[_key2];
41835      }
41836      return new Func(...args);
41837    };
41838  }
41839  const arrayForEach = unapply(Array.prototype.forEach);
41840  const arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
41841  const arrayPop = unapply(Array.prototype.pop);
41842  const arrayPush = unapply(Array.prototype.push);
41843  const arraySplice = unapply(Array.prototype.splice);
41844  const stringToLowerCase = unapply(String.prototype.toLowerCase);
41845  const stringToString = unapply(String.prototype.toString);
41846  const stringMatch = unapply(String.prototype.match);
41847  const stringReplace = unapply(String.prototype.replace);
41848  const stringIndexOf = unapply(String.prototype.indexOf);
41849  const stringTrim = unapply(String.prototype.trim);
41850  const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
41851  const regExpTest = unapply(RegExp.prototype.test);
41852  const typeErrorCreate = unconstruct(TypeError);
41853  /**
41854   * Creates a new function that calls the given function with a specified thisArg and arguments.
41855   *
41856   * @param func - The function to be wrapped and called.
41857   * @returns A new function that calls the given function with a specified thisArg and arguments.
41858   */
41859  function unapply(func) {
41860    return function (thisArg) {
41861      if (thisArg instanceof RegExp) {
41862        thisArg.lastIndex = 0;
41863      }
41864      for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
41865        args[_key3 - 1] = arguments[_key3];
41866      }
41867      return apply(func, thisArg, args);
41868    };
41869  }
41870  /**
41871   * Creates a new function that constructs an instance of the given constructor function with the provided arguments.
41872   *
41873   * @param func - The constructor function to be wrapped and called.
41874   * @returns A new function that constructs an instance of the given constructor function with the provided arguments.
41875   */
41876  function unconstruct(Func) {
41877    return function () {
41878      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
vendor: 6,361 bytes, lines 41879-41991
41879        args[_key4] = arguments[_key4];
41880      }
41881      return construct(Func, args);
41882    };
41883  }
41884  /**
41885   * Add properties to a lookup table
41886   *
41887   * @param set - The set to which elements will be added.
41888   * @param array - The array containing elements to be added to the set.
41889   * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.
41890   * @returns The modified set with added elements.
41891   */
41892  function addToSet(set, array) {
41893    let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;
41894    if (setPrototypeOf) {
41895      // Make 'in' and truthy checks like Boolean(set.constructor)
41896      // independent of any properties defined on Object.prototype.
41897      // Prevent prototype setters from intercepting set as a this value.
41898      setPrototypeOf(set, null);
41899    }
41900    let l = array.length;
41901    while (l--) {
41902      let element = array[l];
41903      if (typeof element === 'string') {
41904        const lcElement = transformCaseFunc(element);
41905        if (lcElement !== element) {
41906          // Config presets (e.g. tags.js, attrs.js) are immutable.
41907          if (!isFrozen(array)) {
41908            array[l] = lcElement;
41909          }
41910          element = lcElement;
41911        }
41912      }
41913      set[element] = true;
41914    }
41915    return set;
41916  }
41917  /**
41918   * Clean up an array to harden against CSPP
41919   *
41920   * @param array - The array to be cleaned.
41921   * @returns The cleaned version of the array
41922   */
41923  function cleanArray(array) {
41924    for (let index = 0; index < array.length; index++) {
41925      const isPropertyExist = objectHasOwnProperty(array, index);
41926      if (!isPropertyExist) {
41927        array[index] = null;
41928      }
41929    }
41930    return array;
41931  }
41932  /**
41933   * Shallow clone an object
41934   *
41935   * @param object - The object to be cloned.
41936   * @returns A new object that copies the original.
41937   */
41938  function clone(object) {
41939    const newObject = create(null);
41940    for (const [property, value] of entries(object)) {
41941      const isPropertyExist = objectHasOwnProperty(object, property);
41942      if (isPropertyExist) {
41943        if (Array.isArray(value)) {
41944          newObject[property] = cleanArray(value);
41945        } else if (value && typeof value === 'object' && value.constructor === Object) {
41946          newObject[property] = clone(value);
41947        } else {
41948          newObject[property] = value;
41949        }
41950      }
41951    }
41952    return newObject;
41953  }
41954  /**
41955   * This method automatically checks if the prop is function or getter and behaves accordingly.
41956   *
41957   * @param object - The object to look up the getter function in its prototype chain.
41958   * @param prop - The property name for which to find the getter function.
41959   * @returns The getter function found in the prototype chain or a fallback function.
41960   */
41961  function lookupGetter(object, prop) {
41962    while (object !== null) {
41963      const desc = getOwnPropertyDescriptor(object, prop);
41964      if (desc) {
41965        if (desc.get) {
41966          return unapply(desc.get);
41967        }
41968        if (typeof desc.value === 'function') {
41969          return unapply(desc.value);
41970        }
41971      }
41972      object = getPrototypeOf(object);
41973    }
41974    function fallbackValue() {
41975      return null;
41976    }
41977    return fallbackValue;
41978  }
41979
41980  const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
41981  const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
41982  const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
41983  // List of SVG elements that are disallowed by default.
41984  // We still need to know them so that we can do namespace
41985  // checks properly in case one wants to add them to
41986  // allow-list.
41987  const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);
41988  const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);
41989  // Similarly to SVG, we want to know all MathML elements,
41990  // even those that we disallow by default.
41991  const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'n
41991one']);
41992  const text = freeze(['#text']);
41993
41994  const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);
41995  const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
41996  const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'n
vendor: 4,502 bytes, lines 41996-42102
41996otation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
41997  const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
41998
41999  // eslint-disable-next-line unicorn/better-regex
42000  const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
42001  const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
42002  const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex
42003  const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape
42004  const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
42005  const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
42006  );
42007  const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
42008  const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex
42009  );
42010  const DOCTYPE_NAME = seal(/^html$/i);
42011  const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
42012
42013  var EXPRESSIONS = /*#__PURE__*/Object.freeze({
42014    __proto__: null,
42015    ARIA_ATTR: ARIA_ATTR,
42016    ATTR_WHITESPACE: ATTR_WHITESPACE,
42017    CUSTOM_ELEMENT: CUSTOM_ELEMENT,
42018    DATA_ATTR: DATA_ATTR,
42019    DOCTYPE_NAME: DOCTYPE_NAME,
42020    ERB_EXPR: ERB_EXPR,
42021    IS_ALLOWED_URI: IS_ALLOWED_URI,
42022    IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
42023    MUSTACHE_EXPR: MUSTACHE_EXPR,
42024    TMPLIT_EXPR: TMPLIT_EXPR
42025  });
42026
42027  /* eslint-disable @typescript-eslint/indent */
42028  // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
42029  const NODE_TYPE = {
42030    element: 1,
42031    attribute: 2,
42032    text: 3,
42033    cdataSection: 4,
42034    entityReference: 5,
42035    // Deprecated
42036    entityNode: 6,
42037    // Deprecated
42038    progressingInstruction: 7,
42039    comment: 8,
42040    document: 9,
42041    documentType: 10,
42042    documentFragment: 11,
42043    notation: 12 // Deprecated
42044  };
42045  const getGlobal = function getGlobal() {
42046    return typeof window === 'undefined' ? null : window;
42047  };
42048  /**
42049   * Creates a no-op policy for internal use only.
42050   * Don't export this function outside this module!
42051   * @param trustedTypes The policy factory.
42052   * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).
42053   * @return The policy created (or null, if Trusted Types
42054   * are not supported or creating the policy failed).
42055   */
42056  const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
42057    if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {
42058      return null;
42059    }
42060    // Allow the callers to control the unique policy name
42061    // by adding a data-tt-policy-suffix to the script element with the DOMPurify.
42062    // Policy creation with duplicate names throws in Trusted Types.
42063    let suffix = null;
42064    const ATTR_NAME = 'data-tt-policy-suffix';
42065    if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
42066      suffix = purifyHostElement.getAttribute(ATTR_NAME);
42067    }
42068    const policyName = 'dompurify' + (suffix ? '#' + suffix : '');
42069    try {
42070      return trustedTypes.createPolicy(policyName, {
42071        createHTML(html) {
42072          return html;
42073        },
42074        createScriptURL(scriptUrl) {
42075          return scriptUrl;
42076        }
42077      });
42078    } catch (_) {
42079      // Policy creation failed (most likely another DOMPurify script has
42080      // already run). Skip creating the policy, as this will only cause errors
42081      // if TT are enforced.
42082      console.warn('TrustedTypes policy ' + policyName + ' could not be created.');
42083      return null;
42084    }
42085  };
42086  const _createHooksMap = function _createHooksMap() {
42087    return {
42088      afterSanitizeAttributes: [],
42089      afterSanitizeElements: [],
42090      afterSanitizeShadowDOM: [],
42091      beforeSanitizeAttributes: [],
42092      beforeSanitizeElements: [],
42093      beforeSanitizeShadowDOM: [],
42094      uponSanitizeAttribute: [],
42095      uponSanitizeElement: [],
42096      uponSanitizeShadowNode: []
42097    };
42098  };
42099  function createDOMPurify() {
42100    let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
42101    const DOMPurify = root => createDOMPurify(root);
42102    DOMPurify.version = '3.3.1
vendor: 4,967 bytes, lines 42102-42233
42102';
42103    DOMPurify.removed = [];
42104    if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
42105      // Not running in a browser, provide a factory function
42106      // so that you can pass your own Window
42107      DOMPurify.isSupported = false;
42108      return DOMPurify;
42109    }
42110    let {
42111      document
42112    } = window;
42113    const originalDocument = document;
42114    const currentScript = originalDocument.currentScript;
42115    const {
42116      DocumentFragment,
42117      HTMLTemplateElement,
42118      Node,
42119      Element,
42120      NodeFilter,
42121      NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
42122      HTMLFormElement,
42123      DOMParser,
42124      trustedTypes
42125    } = window;
42126    const ElementPrototype = Element.prototype;
42127    const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
42128    const remove = lookupGetter(ElementPrototype, 'remove');
42129    const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
42130    const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
42131    const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
42132    // As per issue #47, the web-components registry is inherited by a
42133    // new document created via createHTMLDocument. As per the spec
42134    // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
42135    // a new empty registry is used when creating a template contents owner
42136    // document, so we use that as our parent document to ensure nothing
42137    // is inherited.
42138    if (typeof HTMLTemplateElement === 'function') {
42139      const template = document.createElement('template');
42140      if (template.content && template.content.ownerDocument) {
42141        document = template.content.ownerDocument;
42142      }
42143    }
42144    let trustedTypesPolicy;
42145    let emptyHTML = '';
42146    const {
42147      implementation,
42148      createNodeIterator,
42149      createDocumentFragment,
42150      getElementsByTagName
42151    } = document;
42152    const {
42153      importNode
42154    } = originalDocument;
42155    let hooks = _createHooksMap();
42156    /**
42157     * Expose whether this browser supports running the full DOMPurify.
42158     */
42159    DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
42160    const {
42161      MUSTACHE_EXPR,
42162      ERB_EXPR,
42163      TMPLIT_EXPR,
42164      DATA_ATTR,
42165      ARIA_ATTR,
42166      IS_SCRIPT_OR_DATA,
42167      ATTR_WHITESPACE,
42168      CUSTOM_ELEMENT
42169    } = EXPRESSIONS;
42170    let {
42171      IS_ALLOWED_URI: IS_ALLOWED_URI$1
42172    } = EXPRESSIONS;
42173    /**
42174     * We consider the elements and attributes below to be safe. Ideally
42175     * don't add any new ones but feel free to remove unwanted ones.
42176     */
42177    /* allowed element names */
42178    let ALLOWED_TAGS = null;
42179    const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
42180    /* Allowed attribute names */
42181    let ALLOWED_ATTR = null;
42182    const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
42183    /*
42184     * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.
42185     * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)
42186     * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)
42187     * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.
42188     */
42189    let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
42190      tagNameCheck: {
42191        writable: true,
42192        configurable: false,
42193        enumerable: true,
42194        value: null
42195      },
42196      attributeNameCheck: {
42197        writable: true,
42198        configurable: false,
42199        enumerable: true,
42200        value: null
42201      },
42202      allowCustomizedBuiltInElements: {
42203        writable: true,
42204        configurable: false,
42205        enumerable: true,
42206        value: false
42207      }
42208    }));
42209    /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
42210    let FORBID_TAGS = null;
42211    /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
42212    let FORBID_ATTR = null;
42213    /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */
42214    const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {
42215      tagCheck: {
42216        writable: true,
42217        configurable: false,
42218        enumerable: true,
42219        value: null
42220      },
42221      attributeCheck: {
42222        writable: true,
42223        configurable: false,
42224        enumerable: true,
42225        value: null
42226      }
42227    }));
42228    /* Decide if ARIA attributes are okay */
42229    let ALLOW_ARIA_ATTR = true;
42230    /* Decide if custom data attributes are okay */
42231    let ALLOW_DATA_ATTR = true;
42232    /* Decide if unknown protocols are okay */
42233    let ALLOW_UNKNOWN_PROTOCOLS = false;
vendor: 3,079 bytes, lines 42234-42291
42234    /* Decide if self-closing tags in attributes are allowed.
42235     * Usually removed due to a mXSS issue in jQuery 3.0 */
42236    let ALLOW_SELF_CLOSE_IN_ATTR = true;
42237    /* Output should be safe for common template engines.
42238     * This means, DOMPurify removes data attributes, mustaches and ERB
42239     */
42240    let SAFE_FOR_TEMPLATES = false;
42241    /* Output should be safe even for XML used within HTML and alike.
42242     * This means, DOMPurify removes comments when containing risky content.
42243     */
42244    let SAFE_FOR_XML = true;
42245    /* Decide if document with <html>... should be returned */
42246    let WHOLE_DOCUMENT = false;
42247    /* Track whether config is already set on this instance of DOMPurify. */
42248    let SET_CONFIG = false;
42249    /* Decide if all elements (e.g. style, script) must be children of
42250     * document.body. By default, browsers might move them to document.head */
42251    let FORCE_BODY = false;
42252    /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html
42253     * string (or a TrustedHTML object if Trusted Types are supported).
42254     * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead
42255     */
42256    let RETURN_DOM = false;
42257    /* Decide if a DOM `DocumentFragment` should be returned, instead of a html
42258     * string  (or a TrustedHTML object if Trusted Types are supported) */
42259    let RETURN_DOM_FRAGMENT = false;
42260    /* Try to return a Trusted Type object instead of a string, return a string in
42261     * case Trusted Types are not supported  */
42262    let RETURN_TRUSTED_TYPE = false;
42263    /* Output should be free from DOM clobbering attacks?
42264     * This sanitizes markups named with colliding, clobberable built-in DOM APIs.
42265     */
42266    let SANITIZE_DOM = true;
42267    /* Achieve full DOM Clobbering protection by isolating the namespace of named
42268     * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.
42269     *
42270     * HTML/DOM spec rules that enable DOM Clobbering:
42271     *   - Named Access on Window (§7.3.3)
42272     *   - DOM Tree Accessors (§3.1.5)
42273     *   - Form Element Parent-Child Relations (§4.10.3)
42274     *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)
42275     *   - HTMLCollection (§4.2.10.2)
42276     *
42277     * Namespace isolation is implemented by prefixing `id` and `name` attributes
42278     * with a constant string, i.e., `user-content-`
42279     */
42280    let SANITIZE_NAMED_PROPS = false;
42281    const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';
42282    /* Keep element content when removing element? */
42283    let KEEP_CONTENT = true;
42284    /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
42285     * of importing it into a new Document and returning a sanitized copy */
42286    let IN_PLACE = false;
42287    /* Allow usage of profiles like html, svg and mathMl */
42288    let USE_PROFILES = {};
42289    /* Tags to ignore content of when KEEP_CONTENT is true */
42290    let FORBID_CONTENTS = null;
42291    const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'n
vendor: 5,875 bytes, lines 42291-42378
42291oscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);
42292    /* Tags that are safe for data: URIs */
42293    let DATA_URI_TAGS = null;
42294    const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);
42295    /* Attributes safe for values like "javascript:" */
42296    let URI_SAFE_ATTRIBUTES = null;
42297    const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);
42298    const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
42299    const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
42300    const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
42301    /* Document namespace */
42302    let NAMESPACE = HTML_NAMESPACE;
42303    let IS_EMPTY_INPUT = false;
42304    /* Allowed XHTML+XML namespaces */
42305    let ALLOWED_NAMESPACES = null;
42306    const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
42307    let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);
42308    let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);
42309    // Certain elements are allowed in both SVG and HTML
42310    // namespace. We need to specify them explicitly
42311    // so that they don't get erroneously deleted from
42312    // HTML namespace.
42313    const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);
42314    /* Parsing of strict XHTML documents */
42315    let PARSER_MEDIA_TYPE = null;
42316    const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];
42317    const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';
42318    let transformCaseFunc = null;
42319    /* Keep a reference to config to pass to hooks */
42320    let CONFIG = null;
42321    /* Ideally, do not touch anything below this line */
42322    /* ______________________________________________ */
42323    const formElement = document.createElement('form');
42324    const isRegexOrFunction = function isRegexOrFunction(testValue) {
42325      return testValue instanceof RegExp || testValue instanceof Function;
42326    };
42327    /**
42328     * _parseConfig
42329     *
42330     * @param cfg optional config literal
42331     */
42332    // eslint-disable-next-line complexity
42333    const _parseConfig = function _parseConfig() {
42334      let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
42335      if (CONFIG && CONFIG === cfg) {
42336        return;
42337      }
42338      /* Shield configuration object from tampering */
42339      if (!cfg || typeof cfg !== 'object') {
42340        cfg = {};
42341      }
42342      /* Shield configuration object from prototype pollution */
42343      cfg = clone(cfg);
42344      PARSER_MEDIA_TYPE =
42345      // eslint-disable-next-line unicorn/prefer-includes
42346      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
42347      // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
42348      transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;
42349      /* Set configuration parameters */
42350      ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
42351      ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
42352      ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
42353      URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
42354      DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
42355      FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
42356      FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
42357      FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
42358      USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;
42359      ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
42360      ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
42361      ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
42362      ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true
42363      SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false
42364      SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true
42365      WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false
42366      RETURN_DOM = cfg.RETURN_DOM || false; // Default false
42367      RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false
42368      RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false
42369      FORCE_BODY = cfg.FORCE_BODY || false; // Default false
42370      SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true
42371      SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false
42372      KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
42373      IN_PLACE = cfg.IN_PLACE || false; // Default false
42374      IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
42375      NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
42376      MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
42377      HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
42378      CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || 
vendor: 1,621 bytes, lines 42378-42417
42378{};
42379      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
42380        CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
42381      }
42382      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
42383        CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
42384      }
42385      if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {
42386        CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
42387      }
42388      if (SAFE_FOR_TEMPLATES) {
42389        ALLOW_DATA_ATTR = false;
42390      }
42391      if (RETURN_DOM_FRAGMENT) {
42392        RETURN_DOM = true;
42393      }
42394      /* Parse profile info */
42395      if (USE_PROFILES) {
42396        ALLOWED_TAGS = addToSet({}, text);
42397        ALLOWED_ATTR = [];
42398        if (USE_PROFILES.html === true) {
42399          addToSet(ALLOWED_TAGS, html$1);
42400          addToSet(ALLOWED_ATTR, html);
42401        }
42402        if (USE_PROFILES.svg === true) {
42403          addToSet(ALLOWED_TAGS, svg$1);
42404          addToSet(ALLOWED_ATTR, svg);
42405          addToSet(ALLOWED_ATTR, xml);
42406        }
42407        if (USE_PROFILES.svgFilters === true) {
42408          addToSet(ALLOWED_TAGS, svgFilters);
42409          addToSet(ALLOWED_ATTR, svg);
42410          addToSet(ALLOWED_ATTR, xml);
42411        }
42412        if (USE_PROFILES.mathMl === true) {
42413          addToSet(ALLOWED_TAGS, mathMl$1);
42414          addToSet(ALLOWED_ATTR, mathMl);
42415          addToSet(ALLOWED_ATTR, xml);
42416        }
42417      }
vendor: 4,275 bytes, lines 42417-42519
42417
42418      /* Merge configuration parameters */
42419      if (cfg.ADD_TAGS) {
42420        if (typeof cfg.ADD_TAGS === 'function') {
42421          EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
42422        } else {
42423          if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
42424            ALLOWED_TAGS = clone(ALLOWED_TAGS);
42425          }
42426          addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
42427        }
42428      }
42429      if (cfg.ADD_ATTR) {
42430        if (typeof cfg.ADD_ATTR === 'function') {
42431          EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
42432        } else {
42433          if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
42434            ALLOWED_ATTR = clone(ALLOWED_ATTR);
42435          }
42436          addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
42437        }
42438      }
42439      if (cfg.ADD_URI_SAFE_ATTR) {
42440        addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
42441      }
42442      if (cfg.FORBID_CONTENTS) {
42443        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
42444          FORBID_CONTENTS = clone(FORBID_CONTENTS);
42445        }
42446        addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
42447      }
42448      if (cfg.ADD_FORBID_CONTENTS) {
42449        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
42450          FORBID_CONTENTS = clone(FORBID_CONTENTS);
42451        }
42452        addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
42453      }
42454      /* Add #text in case KEEP_CONTENT is set to true */
42455      if (KEEP_CONTENT) {
42456        ALLOWED_TAGS['#text'] = true;
42457      }
42458      /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
42459      if (WHOLE_DOCUMENT) {
42460        addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);
42461      }
42462      /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */
42463      if (ALLOWED_TAGS.table) {
42464        addToSet(ALLOWED_TAGS, ['tbody']);
42465        delete FORBID_TAGS.tbody;
42466      }
42467      if (cfg.TRUSTED_TYPES_POLICY) {
42468        if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {
42469          throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
42470        }
42471        if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {
42472          throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
42473        }
42474        // Overwrite existing TrustedTypes policy.
42475        trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
42476        // Sign local variables required by `sanitize`.
42477        emptyHTML = trustedTypesPolicy.createHTML('');
42478      } else {
42479        // Uninitialized policy, attempt to initialize the internal dompurify policy.
42480        if (trustedTypesPolicy === undefined) {
42481          trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
42482        }
42483        // If creating the internal policy succeeded sign internal variables.
42484        if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {
42485          emptyHTML = trustedTypesPolicy.createHTML('');
42486        }
42487      }
42488      // Prevent further manipulation of configuration.
42489      // Not available in IE8, Safari 5, etc.
42490      if (freeze) {
42491        freeze(cfg);
42492      }
42493      CONFIG = cfg;
42494    };
42495    /* Keep track of all possible SVG and MathML tags
42496     * so that we can perform the namespace checks
42497     * correctly. */
42498    const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
42499    const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
42500    /**
42501     * @param element a DOM element whose namespace is being checked
42502     * @returns Return false if the element has a
42503     *  namespace that a spec-compliant parser would never
42504     *  return. Return true otherwise.
42505     */
42506    const _checkValidNamespace = function _checkValidNamespace(element) {
42507      let parent = getParentNode(element);
42508      // In JSDOM, if we're inside shadow DOM, then parentNode
42509      // can be null. We just simulate parent in this case.
42510      if (!parent || !parent.tagName) {
42511        parent = {
42512          namespaceURI: NAMESPACE,
42513          tagName: 'template'
42514        };
42515      }
42516      const tagName = stringToLowerCase(element.tagName);
42517      const parentTagName = stringToLowerCase(parent.tagName);
42518      if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
42519        return false;
vendor: 9,119 bytes, lines 42520-42740
42520      }
42521      if (element.namespaceURI === SVG_NAMESPACE) {
42522        // The only way to switch from HTML namespace to SVG
42523        // is via <svg>. If it happens via any other tag, then
42524        // it should be killed.
42525        if (parent.namespaceURI === HTML_NAMESPACE) {
42526          return tagName === 'svg';
42527        }
42528        // The only way to switch from MathML to SVG is via`
42529        // svg if parent is either <annotation-xml> or MathML
42530        // text integration points.
42531        if (parent.namespaceURI === MATHML_NAMESPACE) {
42532          return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
42533        }
42534        // We only allow elements that are defined in SVG
42535        // spec. All others are disallowed in SVG namespace.
42536        return Boolean(ALL_SVG_TAGS[tagName]);
42537      }
42538      if (element.namespaceURI === MATHML_NAMESPACE) {
42539        // The only way to switch from HTML namespace to MathML
42540        // is via <math>. If it happens via any other tag, then
42541        // it should be killed.
42542        if (parent.namespaceURI === HTML_NAMESPACE) {
42543          return tagName === 'math';
42544        }
42545        // The only way to switch from SVG to MathML is via
42546        // <math> and HTML integration points
42547        if (parent.namespaceURI === SVG_NAMESPACE) {
42548          return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];
42549        }
42550        // We only allow elements that are defined in MathML
42551        // spec. All others are disallowed in MathML namespace.
42552        return Boolean(ALL_MATHML_TAGS[tagName]);
42553      }
42554      if (element.namespaceURI === HTML_NAMESPACE) {
42555        // The only way to switch from SVG to HTML is via
42556        // HTML integration points, and from MathML to HTML
42557        // is via MathML text integration points
42558        if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
42559          return false;
42560        }
42561        if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
42562          return false;
42563        }
42564        // We disallow tags that are specific for MathML
42565        // or SVG and should never appear in HTML namespace
42566        return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
42567      }
42568      // For XHTML and XML documents that support custom namespaces
42569      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {
42570        return true;
42571      }
42572      // The code should never reach this place (this means
42573      // that the element somehow got namespace that is not
42574      // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).
42575      // Return false just in case.
42576      return false;
42577    };
42578    /**
42579     * _forceRemove
42580     *
42581     * @param node a DOM node
42582     */
42583    const _forceRemove = function _forceRemove(node) {
42584      arrayPush(DOMPurify.removed, {
42585        element: node
42586      });
42587      try {
42588        // eslint-disable-next-line unicorn/prefer-dom-node-remove
42589        getParentNode(node).removeChild(node);
42590      } catch (_) {
42591        remove(node);
42592      }
42593    };
42594    /**
42595     * _removeAttribute
42596     *
42597     * @param name an Attribute name
42598     * @param element a DOM node
42599     */
42600    const _removeAttribute = function _removeAttribute(name, element) {
42601      try {
42602        arrayPush(DOMPurify.removed, {
42603          attribute: element.getAttributeNode(name),
42604          from: element
42605        });
42606      } catch (_) {
42607        arrayPush(DOMPurify.removed, {
42608          attribute: null,
42609          from: element
42610        });
42611      }
42612      element.removeAttribute(name);
42613      // We void attribute values for unremovable "is" attributes
42614      if (name === 'is') {
42615        if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
42616          try {
42617            _forceRemove(element);
42618          } catch (_) {}
42619        } else {
42620          try {
42621            element.setAttribute(name, '');
42622          } catch (_) {}
42623        }
42624      }
42625    };
42626    /**
42627     * _initDocument
42628     *
42629     * @param dirty - a string of dirty markup
42630     * @return a DOM, filled with the dirty markup
42631     */
42632    const _initDocument = function _initDocument(dirty) {
42633      /* Create a HTML document */
42634      let doc = null;
42635      let leadingWhitespace = null;
42636      if (FORCE_BODY) {
42637        dirty = '<remove></remove>' + dirty;
42638      } else {
42639        /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
42640        const matches = stringMatch(dirty, /^[\r\n\t ]+/);
42641        leadingWhitespace = matches && matches[0];
42642      }
42643      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {
42644        // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
42645        dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>';
42646      }
42647      const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
42648      /*
42649       * Use the DOMParser API by default, fallback later if needs be
42650       * DOMParser not work for svg when has multiple root element.
42651       */
42652      if (NAMESPACE === HTML_NAMESPACE) {
42653        try {
42654          doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
42655        } catch (_) {}
42656      }
42657      /* Use createHTMLDocument in case DOMParser is not available */
42658      if (!doc || !doc.documentElement) {
42659        doc = implementation.createDocument(NAMESPACE, 'template', null);
42660        try {
42661          doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
42662        } catch (_) {
42663          // Syntax error if dirtyPayload is invalid xml
42664        }
42665      }
42666      const body = doc.body || doc.documentElement;
42667      if (dirty && leadingWhitespace) {
42668        body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
42669      }
42670      /* Work on whole document or just its body */
42671      if (NAMESPACE === HTML_NAMESPACE) {
42672        return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];
42673      }
42674      return WHOLE_DOCUMENT ? doc.documentElement : body;
42675    };
42676    /**
42677     * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
42678     *
42679     * @param root The root element or node to start traversing on.
42680     * @return The created NodeIterator
42681     */
42682    const _createNodeIterator = function _createNodeIterator(root) {
42683      return createNodeIterator.call(root.ownerDocument || root, root,
42684      // eslint-disable-next-line no-bitwise
42685      NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
42686    };
42687    /**
42688     * _isClobbered
42689     *
42690     * @param element element to check for clobbering attacks
42691     * @return true if clobbered, false if safe
42692     */
42693    const _isClobbered = function _isClobbered(element) {
42694      return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');
42695    };
42696    /**
42697     * Checks whether the given object is a DOM node.
42698     *
42699     * @param value object to check whether it's a DOM node
42700     * @return true is object is a DOM node
42701     */
42702    const _isNode = function _isNode(value) {
42703      return typeof Node === 'function' && value instanceof Node;
42704    };
42705    function _executeHooks(hooks, currentNode, data) {
42706      arrayForEach(hooks, hook => {
42707        hook.call(DOMPurify, currentNode, data, CONFIG);
42708      });
42709    }
42710    /**
42711     * _sanitizeElements
42712     *
42713     * @protect nodeName
42714     * @protect textContent
42715     * @protect removeChild
42716     * @param currentNode to check for permission to exist
42717     * @return true if node was killed, false if left alive
42718     */
42719    const _sanitizeElements = function _sanitizeElements(currentNode) {
42720      let content = null;
42721      /* Execute a hook if present */
42722      _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
42723      /* Check if element is clobbered or can clobber */
42724      if (_isClobbered(currentNode)) {
42725        _forceRemove(currentNode);
42726        return true;
42727      }
42728      /* Now let's check the element's type and name */
42729      const tagName = transformCaseFunc(currentNode.nodeName);
42730      /* Execute a hook if present */
42731      _executeHooks(hooks.uponSanitizeElement, currentNode, {
42732        tagName,
42733        allowedTags: ALLOWED_TAGS
42734      });
42735      /* Detect mXSS attempts abusing namespace confusion */
42736      if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
42737        _forceRemove(currentNode);
42738        return true;
42739      }
42740      /* Remove 
vendor: 928 bytes, lines 42740-42755
42740any occurrence of processing instructions */
42741      if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
42742        _forceRemove(currentNode);
42743        return true;
42744      }
42745      /* Remove any kind of possibly harmful comments */
42746      if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
42747        _forceRemove(currentNode);
42748        return true;
42749      }
42750      /* Remove element if anything forbids its presence */
42751      if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {
42752        /* Check if we have a custom element to handle */
42753        if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
42754          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
42755            return false;
vendor: 4,849 bytes, lines 42756-42832
42756          }
42757          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
42758            return false;
42759          }
42760        }
42761        /* Keep content except for bad-listed elements */
42762        if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
42763          const parentNode = getParentNode(currentNode) || currentNode.parentNode;
42764          const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
42765          if (childNodes && parentNode) {
42766            const childCount = childNodes.length;
42767            for (let i = childCount - 1; i >= 0; --i) {
42768              const childClone = cloneNode(childNodes[i], true);
42769              childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
42770              parentNode.insertBefore(childClone, getNextSibling(currentNode));
42771            }
42772          }
42773        }
42774        _forceRemove(currentNode);
42775        return true;
42776      }
42777      /* Check whether element has a valid namespace */
42778      if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
42779        _forceRemove(currentNode);
42780        return true;
42781      }
42782      /* Make sure that older browsers don't get fallback-tag mXSS */
42783      if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
42784        _forceRemove(currentNode);
42785        return true;
42786      }
42787      /* Sanitize element content to be template-safe */
42788      if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
42789        /* Get the element's text content */
42790        content = currentNode.textContent;
42791        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
42792          content = stringReplace(content, expr, ' ');
42793        });
42794        if (currentNode.textContent !== content) {
42795          arrayPush(DOMPurify.removed, {
42796            element: currentNode.cloneNode()
42797          });
42798          currentNode.textContent = content;
42799        }
42800      }
42801      /* Execute a hook if present */
42802      _executeHooks(hooks.afterSanitizeElements, currentNode, null);
42803      return false;
42804    };
42805    /**
42806     * _isValidAttribute
42807     *
42808     * @param lcTag Lowercase tag name of containing element.
42809     * @param lcName Lowercase attribute name.
42810     * @param value Attribute value.
42811     * @return Returns true if `value` is valid, otherwise false.
42812     */
42813    // eslint-disable-next-line complexity
42814    const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
42815      /* Make sure attribute cannot clobber */
42816      if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
42817        return false;
42818      }
42819      /* Allow valid data-* attributes: At least one character after "-"
42820          (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
42821          XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
42822          We don't need to check the value; it's always URI safe. */
42823      if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
42824        if (
42825        // First condition does a very basic check if a) it's basically a valid custom element tagname AND
42826        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
42827        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
42828        _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||
42829        // Alternative, second condition checks if it's an `is`-attribute, AND
42830        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
42831        lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {
42832          return false;
vendor: 14,279 bytes, lines 42833-43198
42833        }
42834        /* Check value is safe. First, is attr inert? If so, is safe */
42835      } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
42836        return false;
42837      } else ;
42838      return true;
42839    };
42840    /**
42841     * _isBasicCustomElement
42842     * checks if at least one dash is included in tagName, and it's not the first char
42843     * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name
42844     *
42845     * @param tagName name of the tag of the node to sanitize
42846     * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
42847     */
42848    const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
42849      return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);
42850    };
42851    /**
42852     * _sanitizeAttributes
42853     *
42854     * @protect attributes
42855     * @protect nodeName
42856     * @protect removeAttribute
42857     * @protect setAttribute
42858     *
42859     * @param currentNode to sanitize
42860     */
42861    const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
42862      /* Execute a hook if present */
42863      _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
42864      const {
42865        attributes
42866      } = currentNode;
42867      /* Check if we have attributes; if not we might have a text node */
42868      if (!attributes || _isClobbered(currentNode)) {
42869        return;
42870      }
42871      const hookEvent = {
42872        attrName: '',
42873        attrValue: '',
42874        keepAttr: true,
42875        allowedAttributes: ALLOWED_ATTR,
42876        forceKeepAttr: undefined
42877      };
42878      let l = attributes.length;
42879      /* Go backwards over all attributes; safely remove bad ones */
42880      while (l--) {
42881        const attr = attributes[l];
42882        const {
42883          name,
42884          namespaceURI,
42885          value: attrValue
42886        } = attr;
42887        const lcName = transformCaseFunc(name);
42888        const initValue = attrValue;
42889        let value = name === 'value' ? initValue : stringTrim(initValue);
42890        /* Execute a hook if present */
42891        hookEvent.attrName = lcName;
42892        hookEvent.attrValue = value;
42893        hookEvent.keepAttr = true;
42894        hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set
42895        _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
42896        value = hookEvent.attrValue;
42897        /* Full DOM Clobbering protection via namespace isolation,
42898         * Prefix id and name attributes with `user-content-`
42899         */
42900        if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
42901          // Remove the attribute with this value
42902          _removeAttribute(name, currentNode);
42903          // Prefix the value and later re-create the attribute with the sanitized value
42904          value = SANITIZE_NAMED_PROPS_PREFIX + value;
42905        }
42906        /* Work around a security issue with comments inside attributes */
42907        if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) {
42908          _removeAttribute(name, currentNode);
42909          continue;
42910        }
42911        /* Make sure we cannot easily use animated hrefs, even if animations are allowed */
42912        if (lcName === 'attributename' && stringMatch(value, 'href')) {
42913          _removeAttribute(name, currentNode);
42914          continue;
42915        }
42916        /* Did the hooks approve of the attribute? */
42917        if (hookEvent.forceKeepAttr) {
42918          continue;
42919        }
42920        /* Did the hooks approve of the attribute? */
42921        if (!hookEvent.keepAttr) {
42922          _removeAttribute(name, currentNode);
42923          continue;
42924        }
42925        /* Work around a security issue in jQuery 3.0 */
42926        if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
42927          _removeAttribute(name, currentNode);
42928          continue;
42929        }
42930        /* Sanitize attribute content to be template-safe */
42931        if (SAFE_FOR_TEMPLATES) {
42932          arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
42933            value = stringReplace(value, expr, ' ');
42934          });
42935        }
42936        /* Is `value` valid for this attribute? */
42937        const lcTag = transformCaseFunc(currentNode.nodeName);
42938        if (!_isValidAttribute(lcTag, lcName, value)) {
42939          _removeAttribute(name, currentNode);
42940          continue;
42941        }
42942        /* Handle attributes that require Trusted Types */
42943        if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {
42944          if (namespaceURI) ; else {
42945            switch (trustedTypes.getAttributeType(lcTag, lcName)) {
42946              case 'TrustedHTML':
42947                {
42948                  value = trustedTypesPolicy.createHTML(value);
42949                  break;
42950                }
42951              case 'TrustedScriptURL':
42952                {
42953                  value = trustedTypesPolicy.createScriptURL(value);
42954                  break;
42955                }
42956            }
42957          }
42958        }
42959        /* Handle invalid data-* attribute set by try-catching it */
42960        if (value !== initValue) {
42961          try {
42962            if (namespaceURI) {
42963              currentNode.setAttributeNS(namespaceURI, name, value);
42964            } else {
42965              /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
42966              currentNode.setAttribute(name, value);
42967            }
42968            if (_isClobbered(currentNode)) {
42969              _forceRemove(currentNode);
42970            } else {
42971              arrayPop(DOMPurify.removed);
42972            }
42973          } catch (_) {
42974            _removeAttribute(name, currentNode);
42975          }
42976        }
42977      }
42978      /* Execute a hook if present */
42979      _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
42980    };
42981    /**
42982     * _sanitizeShadowDOM
42983     *
42984     * @param fragment to iterate over recursively
42985     */
42986    const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
42987      let shadowNode = null;
42988      const shadowIterator = _createNodeIterator(fragment);
42989      /* Execute a hook if present */
42990      _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
42991      while (shadowNode = shadowIterator.nextNode()) {
42992        /* Execute a hook if present */
42993        _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
42994        /* Sanitize tags and elements */
42995        _sanitizeElements(shadowNode);
42996        /* Check attributes next */
42997        _sanitizeAttributes(shadowNode);
42998        /* Deep shadow DOM detected */
42999        if (shadowNode.content instanceof DocumentFragment) {
43000          _sanitizeShadowDOM(shadowNode.content);
43001        }
43002      }
43003      /* Execute a hook if present */
43004      _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
43005    };
43006    // eslint-disable-next-line complexity
43007    DOMPurify.sanitize = function (dirty) {
43008      let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
43009      let body = null;
43010      let importedNode = null;
43011      let currentNode = null;
43012      let returnNode = null;
43013      /* Make sure we have a string to sanitize.
43014        DO NOT return early, as this will return the wrong type if
43015        the user has requested a DOM object rather than a string */
43016      IS_EMPTY_INPUT = !dirty;
43017      if (IS_EMPTY_INPUT) {
43018        dirty = '<!-->';
43019      }
43020      /* Stringify, in case dirty is an object */
43021      if (typeof dirty !== 'string' && !_isNode(dirty)) {
43022        if (typeof dirty.toString === 'function') {
43023          dirty = dirty.toString();
43024          if (typeof dirty !== 'string') {
43025            throw typeErrorCreate('dirty is not a string, aborting');
43026          }
43027        } else {
43028          throw typeErrorCreate('toString is not a function');
43029        }
43030      }
43031      /* Return dirty HTML if DOMPurify cannot run */
43032      if (!DOMPurify.isSupported) {
43033        return dirty;
43034      }
43035      /* Assign config vars */
43036      if (!SET_CONFIG) {
43037        _parseConfig(cfg);
43038      }
43039      /* Clean up removed elements */
43040      DOMPurify.removed = [];
43041      /* Check if dirty is correctly typed for IN_PLACE */
43042      if (typeof dirty === 'string') {
43043        IN_PLACE = false;
43044      }
43045      if (IN_PLACE) {
43046        /* Do some early pre-sanitization to avoid unsafe root nodes */
43047        if (dirty.nodeName) {
43048          const tagName = transformCaseFunc(dirty.nodeName);
43049          if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
43050            throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
43051          }
43052        }
43053      } else if (dirty instanceof Node) {
43054        /* If dirty is a DOM element, append to an empty document to avoid
43055           elements being stripped by the parser */
43056        body = _initDocument('<!---->');
43057        importedNode = body.ownerDocument.importNode(dirty, true);
43058        if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {
43059          /* Node is already a body, use as is */
43060          body = importedNode;
43061        } else if (importedNode.nodeName === 'HTML') {
43062          body = importedNode;
43063        } else {
43064          // eslint-disable-next-line unicorn/prefer-dom-node-append
43065          body.appendChild(importedNode);
43066        }
43067      } else {
43068        /* Exit directly if we have nothing to do */
43069        if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
43070        // eslint-disable-next-line unicorn/prefer-includes
43071        dirty.indexOf('<') === -1) {
43072          return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
43073        }
43074        /* Initialize the document to work on */
43075        body = _initDocument(dirty);
43076        /* Check we have a DOM node from the data */
43077        if (!body) {
43078          return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';
43079        }
43080      }
43081      /* Remove first element node (ours) if FORCE_BODY is set */
43082      if (body && FORCE_BODY) {
43083        _forceRemove(body.firstChild);
43084      }
43085      /* Get node iterator */
43086      const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
43087      /* Now start iterating over the created document */
43088      while (currentNode = nodeIterator.nextNode()) {
43089        /* Sanitize tags and elements */
43090        _sanitizeElements(currentNode);
43091        /* Check attributes next */
43092        _sanitizeAttributes(currentNode);
43093        /* Shadow DOM detected, sanitize it */
43094        if (currentNode.content instanceof DocumentFragment) {
43095          _sanitizeShadowDOM(currentNode.content);
43096        }
43097      }
43098      /* If we sanitized `dirty` in-place, return it. */
43099      if (IN_PLACE) {
43100        return dirty;
43101      }
43102      /* Return sanitized string or DOM */
43103      if (RETURN_DOM) {
43104        if (RETURN_DOM_FRAGMENT) {
43105          returnNode = createDocumentFragment.call(body.ownerDocument);
43106          while (body.firstChild) {
43107            // eslint-disable-next-line unicorn/prefer-dom-node-append
43108            returnNode.appendChild(body.firstChild);
43109          }
43110        } else {
43111          returnNode = body;
43112        }
43113        if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
43114          /*
43115            AdoptNode() is not used because internal state is not reset
43116            (e.g. the past names map of a HTMLFormElement), this is safe
43117            in theory but we would rather not risk another attack vector.
43118            The state that is cloned by importNode() is explicitly defined
43119            by the specs.
43120          */
43121          returnNode = importNode.call(originalDocument, returnNode, true);
43122        }
43123        return returnNode;
43124      }
43125      let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
43126      /* Serialize doctype if allowed */
43127      if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
43128        serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\n' + serializedHTML;
43129      }
43130      /* Sanitize final string template-safe */
43131      if (SAFE_FOR_TEMPLATES) {
43132        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
43133          serializedHTML = stringReplace(serializedHTML, expr, ' ');
43134        });
43135      }
43136      return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
43137    };
43138    DOMPurify.setConfig = function () {
43139      let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
43140      _parseConfig(cfg);
43141      SET_CONFIG = true;
43142    };
43143    DOMPurify.clearConfig = function () {
43144      CONFIG = null;
43145      SET_CONFIG = false;
43146    };
43147    DOMPurify.isValidAttribute = function (tag, attr, value) {
43148      /* Initialize shared config vars if necessary. */
43149      if (!CONFIG) {
43150        _parseConfig({});
43151      }
43152      const lcTag = transformCaseFunc(tag);
43153      const lcName = transformCaseFunc(attr);
43154      return _isValidAttribute(lcTag, lcName, value);
43155    };
43156    DOMPurify.addHook = function (entryPoint, hookFunction) {
43157      if (typeof hookFunction !== 'function') {
43158        return;
43159      }
43160      arrayPush(hooks[entryPoint], hookFunction);
43161    };
43162    DOMPurify.removeHook = function (entryPoint, hookFunction) {
43163      if (hookFunction !== undefined) {
43164        const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);
43165        return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];
43166      }
43167      return arrayPop(hooks[entryPoint]);
43168    };
43169    DOMPurify.removeHooks = function (entryPoint) {
43170      hooks[entryPoint] = [];
43171    };
43172    DOMPurify.removeAllHooks = function () {
43173      hooks = _createHooksMap();
43174    };
43175    return DOMPurify;
43176  }
43177  var purify = createDOMPurify();
43178
43179  return purify;
43180
43181}));
43182//# sourceMappingURL=purify.js.map
43183
43184
43185/***/ }),
43186/* 164 */
43187/***/ (function(module, exports) {
43188
43189// removed by extract-text-webpack-plugin
43190
43191/***/ }),
43192/* 165 */
43193/***/ (function(module, exports) {
43194
43195// removed by extract-text-webpack-plugin
43196
43197/***/ })
43198/******/ ]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.