.'\\n );\\n }\\n }\\n addAttr(el, name, JSON.stringify(value));\\n }\\n }\\n}\\n\\nfunction checkInFor (el) {\\n var parent = el;\\n while (parent) {\\n if (parent.for !== undefined) {\\n return true\\n }\\n parent = parent.parent;\\n }\\n return false\\n}\\n\\nfunction parseModifiers (name) {\\n var match = name.match(modifierRE);\\n if (match) {\\n var ret = {};\\n match.forEach(function (m) { ret[m.slice(1)] = true; });\\n return ret\\n }\\n}\\n\\nfunction makeAttrsMap (attrs) {\\n var map = {};\\n for (var i = 0, l = attrs.length; i < l; i++) {\\n if (\\n false\\n ) {\\n warn$2('duplicate attribute: ' + attrs[i].name);\\n }\\n map[attrs[i].name] = attrs[i].value;\\n }\\n return map\\n}\\n\\n// for script (e.g. type=\\\"x/template\\\") or style, do not decode content\\nfunction isTextTag (el) {\\n return el.tag === 'script' || el.tag === 'style'\\n}\\n\\nfunction isForbiddenTag (el) {\\n return (\\n el.tag === 'style' ||\\n (el.tag === 'script' && (\\n !el.attrsMap.type ||\\n el.attrsMap.type === 'text/javascript'\\n ))\\n )\\n}\\n\\nvar ieNSBug = /^xmlns:NS\\\\d+/;\\nvar ieNSPrefix = /^NS\\\\d+:/;\\n\\n/* istanbul ignore next */\\nfunction guardIESVGBug (attrs) {\\n var res = [];\\n for (var i = 0; i < attrs.length; i++) {\\n var attr = attrs[i];\\n if (!ieNSBug.test(attr.name)) {\\n attr.name = attr.name.replace(ieNSPrefix, '');\\n res.push(attr);\\n }\\n }\\n return res\\n}\\n\\nfunction checkForAliasModel (el, value) {\\n var _el = el;\\n while (_el) {\\n if (_el.for && _el.alias === value) {\\n warn$2(\\n \\\"<\\\" + (el.tag) + \\\" v-model=\\\\\\\"\\\" + value + \\\"\\\\\\\">: \\\" +\\n \\\"You are binding v-model directly to a v-for iteration alias. \\\" +\\n \\\"This will not be able to modify the v-for source array because \\\" +\\n \\\"writing to the alias is like modifying a function local variable. \\\" +\\n \\\"Consider using an array of objects and use v-model on an object property instead.\\\"\\n );\\n }\\n _el = _el.parent;\\n }\\n}\\n\\n/* */\\n\\nvar isStaticKey;\\nvar isPlatformReservedTag;\\n\\nvar genStaticKeysCached = cached(genStaticKeys$1);\\n\\n/**\\n * Goal of the optimizer: walk the generated template AST tree\\n * and detect sub-trees that are purely static, i.e. parts of\\n * the DOM that never needs to change.\\n *\\n * Once we detect these sub-trees, we can:\\n *\\n * 1. Hoist them into constants, so that we no longer need to\\n * create fresh nodes for them on each re-render;\\n * 2. Completely skip them in the patching process.\\n */\\nfunction optimize (root, options) {\\n if (!root) { return }\\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\\n isPlatformReservedTag = options.isReservedTag || no;\\n // first pass: mark all non-static nodes.\\n markStatic$1(root);\\n // second pass: mark static roots.\\n markStaticRoots(root, false);\\n}\\n\\nfunction genStaticKeys$1 (keys) {\\n return makeMap(\\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +\\n (keys ? ',' + keys : '')\\n )\\n}\\n\\nfunction markStatic$1 (node) {\\n node.static = isStatic(node);\\n if (node.type === 1) {\\n // do not make component slot content static. this avoids\\n // 1. components not able to mutate slot nodes\\n // 2. static slot content fails for hot-reloading\\n if (\\n !isPlatformReservedTag(node.tag) &&\\n node.tag !== 'slot' &&\\n node.attrsMap['inline-template'] == null\\n ) {\\n return\\n }\\n for (var i = 0, l = node.children.length; i < l; i++) {\\n var child = node.children[i];\\n markStatic$1(child);\\n if (!child.static) {\\n node.static = false;\\n }\\n }\\n if (node.ifConditions) {\\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\\n var block = node.ifConditions[i$1].block;\\n markStatic$1(block);\\n if (!block.static) {\\n node.static = false;\\n }\\n }\\n }\\n }\\n}\\n\\nfunction markStaticRoots (node, isInFor) {\\n if (node.type === 1) {\\n if (node.static || node.once) {\\n node.staticInFor = isInFor;\\n }\\n // For a node to qualify as a static root, it should have children that\\n // are not just static text. Otherwise the cost of hoisting out will\\n // outweigh the benefits and it's better off to just always render it fresh.\\n if (node.static && node.children.length && !(\\n node.children.length === 1 &&\\n node.children[0].type === 3\\n )) {\\n node.staticRoot = true;\\n return\\n } else {\\n node.staticRoot = false;\\n }\\n if (node.children) {\\n for (var i = 0, l = node.children.length; i < l; i++) {\\n markStaticRoots(node.children[i], isInFor || !!node.for);\\n }\\n }\\n if (node.ifConditions) {\\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\\n }\\n }\\n }\\n}\\n\\nfunction isStatic (node) {\\n if (node.type === 2) { // expression\\n return false\\n }\\n if (node.type === 3) { // text\\n return true\\n }\\n return !!(node.pre || (\\n !node.hasBindings && // no dynamic bindings\\n !node.if && !node.for && // not v-if or v-for or v-else\\n !isBuiltInTag(node.tag) && // not a built-in\\n isPlatformReservedTag(node.tag) && // not a component\\n !isDirectChildOfTemplateFor(node) &&\\n Object.keys(node).every(isStaticKey)\\n ))\\n}\\n\\nfunction isDirectChildOfTemplateFor (node) {\\n while (node.parent) {\\n node = node.parent;\\n if (node.tag !== 'template') {\\n return false\\n }\\n if (node.for) {\\n return true\\n }\\n }\\n return false\\n}\\n\\n/* */\\n\\nvar fnExpRE = /^\\\\s*([\\\\w$_]+|\\\\([^)]*?\\\\))\\\\s*=>|^function\\\\s*\\\\(/;\\nvar simplePathRE = /^\\\\s*[A-Za-z_$][\\\\w$]*(?:\\\\.[A-Za-z_$][\\\\w$]*|\\\\['.*?']|\\\\[\\\".*?\\\"]|\\\\[\\\\d+]|\\\\[[A-Za-z_$][\\\\w$]*])*\\\\s*$/;\\n\\n// keyCode aliases\\nvar keyCodes = {\\n esc: 27,\\n tab: 9,\\n enter: 13,\\n space: 32,\\n up: 38,\\n left: 37,\\n right: 39,\\n down: 40,\\n 'delete': [8, 46]\\n};\\n\\n// #4868: modifiers that prevent the execution of the listener\\n// need to explicitly return null so that we can determine whether to remove\\n// the listener for .once\\nvar genGuard = function (condition) { return (\\\"if(\\\" + condition + \\\")return null;\\\"); };\\n\\nvar modifierCode = {\\n stop: '$event.stopPropagation();',\\n prevent: '$event.preventDefault();',\\n self: genGuard(\\\"$event.target !== $event.currentTarget\\\"),\\n ctrl: genGuard(\\\"!$event.ctrlKey\\\"),\\n shift: genGuard(\\\"!$event.shiftKey\\\"),\\n alt: genGuard(\\\"!$event.altKey\\\"),\\n meta: genGuard(\\\"!$event.metaKey\\\"),\\n left: genGuard(\\\"'button' in $event && $event.button !== 0\\\"),\\n middle: genGuard(\\\"'button' in $event && $event.button !== 1\\\"),\\n right: genGuard(\\\"'button' in $event && $event.button !== 2\\\")\\n};\\n\\nfunction genHandlers (\\n events,\\n isNative,\\n warn\\n) {\\n var res = isNative ? 'nativeOn:{' : 'on:{';\\n for (var name in events) {\\n var handler = events[name];\\n // #5330: warn click.right, since right clicks do not actually fire click events.\\n if (false\\n ) {\\n warn(\\n \\\"Use \\\\\\\"contextmenu\\\\\\\" instead of \\\\\\\"click.right\\\\\\\" since right clicks \\\" +\\n \\\"do not actually fire \\\\\\\"click\\\\\\\" events.\\\"\\n );\\n }\\n res += \\\"\\\\\\\"\\\" + name + \\\"\\\\\\\":\\\" + (genHandler(name, handler)) + \\\",\\\";\\n }\\n return res.slice(0, -1) + '}'\\n}\\n\\nfunction genHandler (\\n name,\\n handler\\n) {\\n if (!handler) {\\n return 'function(){}'\\n }\\n\\n if (Array.isArray(handler)) {\\n return (\\\"[\\\" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + \\\"]\\\")\\n }\\n\\n var isMethodPath = simplePathRE.test(handler.value);\\n var isFunctionExpression = fnExpRE.test(handler.value);\\n\\n if (!handler.modifiers) {\\n return isMethodPath || isFunctionExpression\\n ? handler.value\\n : (\\\"function($event){\\\" + (handler.value) + \\\"}\\\") // inline statement\\n } else {\\n var code = '';\\n var genModifierCode = '';\\n var keys = [];\\n for (var key in handler.modifiers) {\\n if (modifierCode[key]) {\\n genModifierCode += modifierCode[key];\\n // left/right\\n if (keyCodes[key]) {\\n keys.push(key);\\n }\\n } else {\\n keys.push(key);\\n }\\n }\\n if (keys.length) {\\n code += genKeyFilter(keys);\\n }\\n // Make sure modifiers like prevent and stop get executed after key filtering\\n if (genModifierCode) {\\n code += genModifierCode;\\n }\\n var handlerCode = isMethodPath\\n ? handler.value + '($event)'\\n : isFunctionExpression\\n ? (\\\"(\\\" + (handler.value) + \\\")($event)\\\")\\n : handler.value;\\n return (\\\"function($event){\\\" + code + handlerCode + \\\"}\\\")\\n }\\n}\\n\\nfunction genKeyFilter (keys) {\\n return (\\\"if(!('button' in $event)&&\\\" + (keys.map(genFilterCode).join('&&')) + \\\")return null;\\\")\\n}\\n\\nfunction genFilterCode (key) {\\n var keyVal = parseInt(key, 10);\\n if (keyVal) {\\n return (\\\"$event.keyCode!==\\\" + keyVal)\\n }\\n var alias = keyCodes[key];\\n return (\\\"_k($event.keyCode,\\\" + (JSON.stringify(key)) + (alias ? ',' + JSON.stringify(alias) : '') + \\\")\\\")\\n}\\n\\n/* */\\n\\nfunction on (el, dir) {\\n if (false) {\\n warn(\\\"v-on without argument does not support modifiers.\\\");\\n }\\n el.wrapListeners = function (code) { return (\\\"_g(\\\" + code + \\\",\\\" + (dir.value) + \\\")\\\"); };\\n}\\n\\n/* */\\n\\nfunction bind$1 (el, dir) {\\n el.wrapData = function (code) {\\n return (\\\"_b(\\\" + code + \\\",'\\\" + (el.tag) + \\\"',\\\" + (dir.value) + \\\",\\\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \\\")\\\")\\n };\\n}\\n\\n/* */\\n\\nvar baseDirectives = {\\n on: on,\\n bind: bind$1,\\n cloak: noop\\n};\\n\\n/* */\\n\\nvar CodegenState = function CodegenState (options) {\\n this.options = options;\\n this.warn = options.warn || baseWarn;\\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\\n this.directives = extend(extend({}, baseDirectives), options.directives);\\n var isReservedTag = options.isReservedTag || no;\\n this.maybeComponent = function (el) { return !isReservedTag(el.tag); };\\n this.onceId = 0;\\n this.staticRenderFns = [];\\n};\\n\\n\\n\\nfunction generate (\\n ast,\\n options\\n) {\\n var state = new CodegenState(options);\\n var code = ast ? genElement(ast, state) : '_c(\\\"div\\\")';\\n return {\\n render: (\\\"with(this){return \\\" + code + \\\"}\\\"),\\n staticRenderFns: state.staticRenderFns\\n }\\n}\\n\\nfunction genElement (el, state) {\\n if (el.staticRoot && !el.staticProcessed) {\\n return genStatic(el, state)\\n } else if (el.once && !el.onceProcessed) {\\n return genOnce(el, state)\\n } else if (el.for && !el.forProcessed) {\\n return genFor(el, state)\\n } else if (el.if && !el.ifProcessed) {\\n return genIf(el, state)\\n } else if (el.tag === 'template' && !el.slotTarget) {\\n return genChildren(el, state) || 'void 0'\\n } else if (el.tag === 'slot') {\\n return genSlot(el, state)\\n } else {\\n // component or element\\n var code;\\n if (el.component) {\\n code = genComponent(el.component, el, state);\\n } else {\\n var data = el.plain ? undefined : genData$2(el, state);\\n\\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\\n code = \\\"_c('\\\" + (el.tag) + \\\"'\\\" + (data ? (\\\",\\\" + data) : '') + (children ? (\\\",\\\" + children) : '') + \\\")\\\";\\n }\\n // module transforms\\n for (var i = 0; i < state.transforms.length; i++) {\\n code = state.transforms[i](el, code);\\n }\\n return code\\n }\\n}\\n\\n// hoist static sub-trees out\\nfunction genStatic (el, state) {\\n el.staticProcessed = true;\\n state.staticRenderFns.push((\\\"with(this){return \\\" + (genElement(el, state)) + \\\"}\\\"));\\n return (\\\"_m(\\\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \\\")\\\")\\n}\\n\\n// v-once\\nfunction genOnce (el, state) {\\n el.onceProcessed = true;\\n if (el.if && !el.ifProcessed) {\\n return genIf(el, state)\\n } else if (el.staticInFor) {\\n var key = '';\\n var parent = el.parent;\\n while (parent) {\\n if (parent.for) {\\n key = parent.key;\\n break\\n }\\n parent = parent.parent;\\n }\\n if (!key) {\\n \\\"production\\\" !== 'production' && state.warn(\\n \\\"v-once can only be used inside v-for that is keyed. \\\"\\n );\\n return genElement(el, state)\\n }\\n return (\\\"_o(\\\" + (genElement(el, state)) + \\\",\\\" + (state.onceId++) + (key ? (\\\",\\\" + key) : \\\"\\\") + \\\")\\\")\\n } else {\\n return genStatic(el, state)\\n }\\n}\\n\\nfunction genIf (\\n el,\\n state,\\n altGen,\\n altEmpty\\n) {\\n el.ifProcessed = true; // avoid recursion\\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\\n}\\n\\nfunction genIfConditions (\\n conditions,\\n state,\\n altGen,\\n altEmpty\\n) {\\n if (!conditions.length) {\\n return altEmpty || '_e()'\\n }\\n\\n var condition = conditions.shift();\\n if (condition.exp) {\\n return (\\\"(\\\" + (condition.exp) + \\\")?\\\" + (genTernaryExp(condition.block)) + \\\":\\\" + (genIfConditions(conditions, state, altGen, altEmpty)))\\n } else {\\n return (\\\"\\\" + (genTernaryExp(condition.block)))\\n }\\n\\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\\n function genTernaryExp (el) {\\n return altGen\\n ? altGen(el, state)\\n : el.once\\n ? genOnce(el, state)\\n : genElement(el, state)\\n }\\n}\\n\\nfunction genFor (\\n el,\\n state,\\n altGen,\\n altHelper\\n) {\\n var exp = el.for;\\n var alias = el.alias;\\n var iterator1 = el.iterator1 ? (\\\",\\\" + (el.iterator1)) : '';\\n var iterator2 = el.iterator2 ? (\\\",\\\" + (el.iterator2)) : '';\\n\\n if (false\\n ) {\\n state.warn(\\n \\\"<\\\" + (el.tag) + \\\" v-for=\\\\\\\"\\\" + alias + \\\" in \\\" + exp + \\\"\\\\\\\">: component lists rendered with \\\" +\\n \\\"v-for should have explicit keys. \\\" +\\n \\\"See https://vuejs.org/guide/list.html#key for more info.\\\",\\n true /* tip */\\n );\\n }\\n\\n el.forProcessed = true; // avoid recursion\\n return (altHelper || '_l') + \\\"((\\\" + exp + \\\"),\\\" +\\n \\\"function(\\\" + alias + iterator1 + iterator2 + \\\"){\\\" +\\n \\\"return \\\" + ((altGen || genElement)(el, state)) +\\n '})'\\n}\\n\\nfunction genData$2 (el, state) {\\n var data = '{';\\n\\n // directives first.\\n // directives may mutate the el's other properties before they are generated.\\n var dirs = genDirectives(el, state);\\n if (dirs) { data += dirs + ','; }\\n\\n // key\\n if (el.key) {\\n data += \\\"key:\\\" + (el.key) + \\\",\\\";\\n }\\n // ref\\n if (el.ref) {\\n data += \\\"ref:\\\" + (el.ref) + \\\",\\\";\\n }\\n if (el.refInFor) {\\n data += \\\"refInFor:true,\\\";\\n }\\n // pre\\n if (el.pre) {\\n data += \\\"pre:true,\\\";\\n }\\n // record original tag name for components using \\\"is\\\" attribute\\n if (el.component) {\\n data += \\\"tag:\\\\\\\"\\\" + (el.tag) + \\\"\\\\\\\",\\\";\\n }\\n // module data generation functions\\n for (var i = 0; i < state.dataGenFns.length; i++) {\\n data += state.dataGenFns[i](el);\\n }\\n // attributes\\n if (el.attrs) {\\n data += \\\"attrs:{\\\" + (genProps(el.attrs)) + \\\"},\\\";\\n }\\n // DOM props\\n if (el.props) {\\n data += \\\"domProps:{\\\" + (genProps(el.props)) + \\\"},\\\";\\n }\\n // event handlers\\n if (el.events) {\\n data += (genHandlers(el.events, false, state.warn)) + \\\",\\\";\\n }\\n if (el.nativeEvents) {\\n data += (genHandlers(el.nativeEvents, true, state.warn)) + \\\",\\\";\\n }\\n // slot target\\n if (el.slotTarget) {\\n data += \\\"slot:\\\" + (el.slotTarget) + \\\",\\\";\\n }\\n // scoped slots\\n if (el.scopedSlots) {\\n data += (genScopedSlots(el.scopedSlots, state)) + \\\",\\\";\\n }\\n // component v-model\\n if (el.model) {\\n data += \\\"model:{value:\\\" + (el.model.value) + \\\",callback:\\\" + (el.model.callback) + \\\",expression:\\\" + (el.model.expression) + \\\"},\\\";\\n }\\n // inline-template\\n if (el.inlineTemplate) {\\n var inlineTemplate = genInlineTemplate(el, state);\\n if (inlineTemplate) {\\n data += inlineTemplate + \\\",\\\";\\n }\\n }\\n data = data.replace(/,$/, '') + '}';\\n // v-bind data wrap\\n if (el.wrapData) {\\n data = el.wrapData(data);\\n }\\n // v-on data wrap\\n if (el.wrapListeners) {\\n data = el.wrapListeners(data);\\n }\\n return data\\n}\\n\\nfunction genDirectives (el, state) {\\n var dirs = el.directives;\\n if (!dirs) { return }\\n var res = 'directives:[';\\n var hasRuntime = false;\\n var i, l, dir, needRuntime;\\n for (i = 0, l = dirs.length; i < l; i++) {\\n dir = dirs[i];\\n needRuntime = true;\\n var gen = state.directives[dir.name];\\n if (gen) {\\n // compile-time directive that manipulates AST.\\n // returns true if it also needs a runtime counterpart.\\n needRuntime = !!gen(el, dir, state.warn);\\n }\\n if (needRuntime) {\\n hasRuntime = true;\\n res += \\\"{name:\\\\\\\"\\\" + (dir.name) + \\\"\\\\\\\",rawName:\\\\\\\"\\\" + (dir.rawName) + \\\"\\\\\\\"\\\" + (dir.value ? (\\\",value:(\\\" + (dir.value) + \\\"),expression:\\\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\\\",arg:\\\\\\\"\\\" + (dir.arg) + \\\"\\\\\\\"\\\") : '') + (dir.modifiers ? (\\\",modifiers:\\\" + (JSON.stringify(dir.modifiers))) : '') + \\\"},\\\";\\n }\\n }\\n if (hasRuntime) {\\n return res.slice(0, -1) + ']'\\n }\\n}\\n\\nfunction genInlineTemplate (el, state) {\\n var ast = el.children[0];\\n if (false) {\\n state.warn('Inline-template components must have exactly one child element.');\\n }\\n if (ast.type === 1) {\\n var inlineRenderFns = generate(ast, state.options);\\n return (\\\"inlineTemplate:{render:function(){\\\" + (inlineRenderFns.render) + \\\"},staticRenderFns:[\\\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\\\"function(){\\\" + code + \\\"}\\\"); }).join(',')) + \\\"]}\\\")\\n }\\n}\\n\\nfunction genScopedSlots (\\n slots,\\n state\\n) {\\n return (\\\"scopedSlots:_u([\\\" + (Object.keys(slots).map(function (key) {\\n return genScopedSlot(key, slots[key], state)\\n }).join(',')) + \\\"])\\\")\\n}\\n\\nfunction genScopedSlot (\\n key,\\n el,\\n state\\n) {\\n if (el.for && !el.forProcessed) {\\n return genForScopedSlot(key, el, state)\\n }\\n return \\\"{key:\\\" + key + \\\",fn:function(\\\" + (String(el.attrsMap.scope)) + \\\"){\\\" +\\n \\\"return \\\" + (el.tag === 'template'\\n ? genChildren(el, state) || 'void 0'\\n : genElement(el, state)) + \\\"}}\\\"\\n}\\n\\nfunction genForScopedSlot (\\n key,\\n el,\\n state\\n) {\\n var exp = el.for;\\n var alias = el.alias;\\n var iterator1 = el.iterator1 ? (\\\",\\\" + (el.iterator1)) : '';\\n var iterator2 = el.iterator2 ? (\\\",\\\" + (el.iterator2)) : '';\\n el.forProcessed = true; // avoid recursion\\n return \\\"_l((\\\" + exp + \\\"),\\\" +\\n \\\"function(\\\" + alias + iterator1 + iterator2 + \\\"){\\\" +\\n \\\"return \\\" + (genScopedSlot(key, el, state)) +\\n '})'\\n}\\n\\nfunction genChildren (\\n el,\\n state,\\n checkSkip,\\n altGenElement,\\n altGenNode\\n) {\\n var children = el.children;\\n if (children.length) {\\n var el$1 = children[0];\\n // optimize single v-for\\n if (children.length === 1 &&\\n el$1.for &&\\n el$1.tag !== 'template' &&\\n el$1.tag !== 'slot'\\n ) {\\n return (altGenElement || genElement)(el$1, state)\\n }\\n var normalizationType = checkSkip\\n ? getNormalizationType(children, state.maybeComponent)\\n : 0;\\n var gen = altGenNode || genNode;\\n return (\\\"[\\\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \\\"]\\\" + (normalizationType ? (\\\",\\\" + normalizationType) : ''))\\n }\\n}\\n\\n// determine the normalization needed for the children array.\\n// 0: no normalization needed\\n// 1: simple normalization needed (possible 1-level deep nested array)\\n// 2: full normalization needed\\nfunction getNormalizationType (\\n children,\\n maybeComponent\\n) {\\n var res = 0;\\n for (var i = 0; i < children.length; i++) {\\n var el = children[i];\\n if (el.type !== 1) {\\n continue\\n }\\n if (needsNormalization(el) ||\\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\\n res = 2;\\n break\\n }\\n if (maybeComponent(el) ||\\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\\n res = 1;\\n }\\n }\\n return res\\n}\\n\\nfunction needsNormalization (el) {\\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\\n}\\n\\nfunction genNode (node, state) {\\n if (node.type === 1) {\\n return genElement(node, state)\\n } if (node.type === 3 && node.isComment) {\\n return genComment(node)\\n } else {\\n return genText(node)\\n }\\n}\\n\\nfunction genText (text) {\\n return (\\\"_v(\\\" + (text.type === 2\\n ? text.expression // no need for () because already wrapped in _s()\\n : transformSpecialNewlines(JSON.stringify(text.text))) + \\\")\\\")\\n}\\n\\nfunction genComment (comment) {\\n return (\\\"_e(\\\" + (JSON.stringify(comment.text)) + \\\")\\\")\\n}\\n\\nfunction genSlot (el, state) {\\n var slotName = el.slotName || '\\\"default\\\"';\\n var children = genChildren(el, state);\\n var res = \\\"_t(\\\" + slotName + (children ? (\\\",\\\" + children) : '');\\n var attrs = el.attrs && (\\\"{\\\" + (el.attrs.map(function (a) { return ((camelize(a.name)) + \\\":\\\" + (a.value)); }).join(',')) + \\\"}\\\");\\n var bind$$1 = el.attrsMap['v-bind'];\\n if ((attrs || bind$$1) && !children) {\\n res += \\\",null\\\";\\n }\\n if (attrs) {\\n res += \\\",\\\" + attrs;\\n }\\n if (bind$$1) {\\n res += (attrs ? '' : ',null') + \\\",\\\" + bind$$1;\\n }\\n return res + ')'\\n}\\n\\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\\nfunction genComponent (\\n componentName,\\n el,\\n state\\n) {\\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\\n return (\\\"_c(\\\" + componentName + \\\",\\\" + (genData$2(el, state)) + (children ? (\\\",\\\" + children) : '') + \\\")\\\")\\n}\\n\\nfunction genProps (props) {\\n var res = '';\\n for (var i = 0; i < props.length; i++) {\\n var prop = props[i];\\n res += \\\"\\\\\\\"\\\" + (prop.name) + \\\"\\\\\\\":\\\" + (transformSpecialNewlines(prop.value)) + \\\",\\\";\\n }\\n return res.slice(0, -1)\\n}\\n\\n// #3895, #4268\\nfunction transformSpecialNewlines (text) {\\n return text\\n .replace(/\\\\u2028/g, '\\\\\\\\u2028')\\n .replace(/\\\\u2029/g, '\\\\\\\\u2029')\\n}\\n\\n/* */\\n\\n// these keywords should not appear inside expressions, but operators like\\n// typeof, instanceof and in are allowed\\nvar prohibitedKeywordRE = new RegExp('\\\\\\\\b' + (\\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\\n 'extends,finally,continue,debugger,function,arguments'\\n).split(',').join('\\\\\\\\b|\\\\\\\\b') + '\\\\\\\\b');\\n\\n// these unary operators should not be used as property/method names\\nvar unaryOperatorsRE = new RegExp('\\\\\\\\b' + (\\n 'delete,typeof,void'\\n).split(',').join('\\\\\\\\s*\\\\\\\\([^\\\\\\\\)]*\\\\\\\\)|\\\\\\\\b') + '\\\\\\\\s*\\\\\\\\([^\\\\\\\\)]*\\\\\\\\)');\\n\\n// check valid identifier for v-for\\nvar identRE = /[A-Za-z_$][\\\\w$]*/;\\n\\n// strip strings in expressions\\nvar stripStringRE = /'(?:[^'\\\\\\\\]|\\\\\\\\.)*'|\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\\\"|`(?:[^`\\\\\\\\]|\\\\\\\\.)*\\\\$\\\\{|\\\\}(?:[^`\\\\\\\\]|\\\\\\\\.)*`|`(?:[^`\\\\\\\\]|\\\\\\\\.)*`/g;\\n\\n// detect problematic expressions in a template\\nfunction detectErrors (ast) {\\n var errors = [];\\n if (ast) {\\n checkNode(ast, errors);\\n }\\n return errors\\n}\\n\\nfunction checkNode (node, errors) {\\n if (node.type === 1) {\\n for (var name in node.attrsMap) {\\n if (dirRE.test(name)) {\\n var value = node.attrsMap[name];\\n if (value) {\\n if (name === 'v-for') {\\n checkFor(node, (\\\"v-for=\\\\\\\"\\\" + value + \\\"\\\\\\\"\\\"), errors);\\n } else if (onRE.test(name)) {\\n checkEvent(value, (name + \\\"=\\\\\\\"\\\" + value + \\\"\\\\\\\"\\\"), errors);\\n } else {\\n checkExpression(value, (name + \\\"=\\\\\\\"\\\" + value + \\\"\\\\\\\"\\\"), errors);\\n }\\n }\\n }\\n }\\n if (node.children) {\\n for (var i = 0; i < node.children.length; i++) {\\n checkNode(node.children[i], errors);\\n }\\n }\\n } else if (node.type === 2) {\\n checkExpression(node.expression, node.text, errors);\\n }\\n}\\n\\nfunction checkEvent (exp, text, errors) {\\n var stipped = exp.replace(stripStringRE, '');\\n var keywordMatch = stipped.match(unaryOperatorsRE);\\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\\n errors.push(\\n \\\"avoid using JavaScript unary operator as property name: \\\" +\\n \\\"\\\\\\\"\\\" + (keywordMatch[0]) + \\\"\\\\\\\" in expression \\\" + (text.trim())\\n );\\n }\\n checkExpression(exp, text, errors);\\n}\\n\\nfunction checkFor (node, text, errors) {\\n checkExpression(node.for || '', text, errors);\\n checkIdentifier(node.alias, 'v-for alias', text, errors);\\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\\n}\\n\\nfunction checkIdentifier (ident, type, text, errors) {\\n if (typeof ident === 'string' && !identRE.test(ident)) {\\n errors.push((\\\"invalid \\\" + type + \\\" \\\\\\\"\\\" + ident + \\\"\\\\\\\" in expression: \\\" + (text.trim())));\\n }\\n}\\n\\nfunction checkExpression (exp, text, errors) {\\n try {\\n new Function((\\\"return \\\" + exp));\\n } catch (e) {\\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\\n if (keywordMatch) {\\n errors.push(\\n \\\"avoid using JavaScript keyword as property name: \\\" +\\n \\\"\\\\\\\"\\\" + (keywordMatch[0]) + \\\"\\\\\\\" in expression \\\" + (text.trim())\\n );\\n } else {\\n errors.push((\\\"invalid expression: \\\" + (text.trim())));\\n }\\n }\\n}\\n\\n/* */\\n\\nfunction createFunction (code, errors) {\\n try {\\n return new Function(code)\\n } catch (err) {\\n errors.push({ err: err, code: code });\\n return noop\\n }\\n}\\n\\nfunction createCompileToFunctionFn (compile) {\\n var cache = Object.create(null);\\n\\n return function compileToFunctions (\\n template,\\n options,\\n vm\\n ) {\\n options = options || {};\\n\\n /* istanbul ignore if */\\n if (false) {\\n // detect possible CSP restriction\\n try {\\n new Function('return 1');\\n } catch (e) {\\n if (e.toString().match(/unsafe-eval|CSP/)) {\\n warn(\\n 'It seems you are using the standalone build of Vue.js in an ' +\\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\\n 'The template compiler cannot work in this environment. Consider ' +\\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\\n 'templates into render functions.'\\n );\\n }\\n }\\n }\\n\\n // check cache\\n var key = options.delimiters\\n ? String(options.delimiters) + template\\n : template;\\n if (cache[key]) {\\n return cache[key]\\n }\\n\\n // compile\\n var compiled = compile(template, options);\\n\\n // check compilation errors/tips\\n if (false) {\\n if (compiled.errors && compiled.errors.length) {\\n warn(\\n \\\"Error compiling template:\\\\n\\\\n\\\" + template + \\\"\\\\n\\\\n\\\" +\\n compiled.errors.map(function (e) { return (\\\"- \\\" + e); }).join('\\\\n') + '\\\\n',\\n vm\\n );\\n }\\n if (compiled.tips && compiled.tips.length) {\\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\\n }\\n }\\n\\n // turn code into functions\\n var res = {};\\n var fnGenErrors = [];\\n res.render = createFunction(compiled.render, fnGenErrors);\\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\\n return createFunction(code, fnGenErrors)\\n });\\n\\n // check function generation errors.\\n // this should only happen if there is a bug in the compiler itself.\\n // mostly for codegen development use\\n /* istanbul ignore if */\\n if (false) {\\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\\n warn(\\n \\\"Failed to generate render function:\\\\n\\\\n\\\" +\\n fnGenErrors.map(function (ref) {\\n var err = ref.err;\\n var code = ref.code;\\n\\n return ((err.toString()) + \\\" in\\\\n\\\\n\\\" + code + \\\"\\\\n\\\");\\n }).join('\\\\n'),\\n vm\\n );\\n }\\n }\\n\\n return (cache[key] = res)\\n }\\n}\\n\\n/* */\\n\\nfunction createCompilerCreator (baseCompile) {\\n return function createCompiler (baseOptions) {\\n function compile (\\n template,\\n options\\n ) {\\n var finalOptions = Object.create(baseOptions);\\n var errors = [];\\n var tips = [];\\n finalOptions.warn = function (msg, tip) {\\n (tip ? tips : errors).push(msg);\\n };\\n\\n if (options) {\\n // merge custom modules\\n if (options.modules) {\\n finalOptions.modules =\\n (baseOptions.modules || []).concat(options.modules);\\n }\\n // merge custom directives\\n if (options.directives) {\\n finalOptions.directives = extend(\\n Object.create(baseOptions.directives),\\n options.directives\\n );\\n }\\n // copy other options\\n for (var key in options) {\\n if (key !== 'modules' && key !== 'directives') {\\n finalOptions[key] = options[key];\\n }\\n }\\n }\\n\\n var compiled = baseCompile(template, finalOptions);\\n if (false) {\\n errors.push.apply(errors, detectErrors(compiled.ast));\\n }\\n compiled.errors = errors;\\n compiled.tips = tips;\\n return compiled\\n }\\n\\n return {\\n compile: compile,\\n compileToFunctions: createCompileToFunctionFn(compile)\\n }\\n }\\n}\\n\\n/* */\\n\\n// `createCompilerCreator` allows creating compilers that use alternative\\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\\n// Here we just export a default compiler using the default parts.\\nvar createCompiler = createCompilerCreator(function baseCompile (\\n template,\\n options\\n) {\\n var ast = parse(template.trim(), options);\\n optimize(ast, options);\\n var code = generate(ast, options);\\n return {\\n ast: ast,\\n render: code.render,\\n staticRenderFns: code.staticRenderFns\\n }\\n});\\n\\n/* */\\n\\nvar ref$1 = createCompiler(baseOptions);\\nvar compileToFunctions = ref$1.compileToFunctions;\\n\\n/* */\\n\\nvar idToTemplate = cached(function (id) {\\n var el = query(id);\\n return el && el.innerHTML\\n});\\n\\nvar mount = Vue$3.prototype.$mount;\\nVue$3.prototype.$mount = function (\\n el,\\n hydrating\\n) {\\n el = el && query(el);\\n\\n /* istanbul ignore if */\\n if (el === document.body || el === document.documentElement) {\\n \\\"production\\\" !== 'production' && warn(\\n \\\"Do not mount Vue to or - mount to normal elements instead.\\\"\\n );\\n return this\\n }\\n\\n var options = this.$options;\\n // resolve template/el and convert to render function\\n if (!options.render) {\\n var template = options.template;\\n if (template) {\\n if (typeof template === 'string') {\\n if (template.charAt(0) === '#') {\\n template = idToTemplate(template);\\n /* istanbul ignore if */\\n if (false) {\\n warn(\\n (\\\"Template element not found or is empty: \\\" + (options.template)),\\n this\\n );\\n }\\n }\\n } else if (template.nodeType) {\\n template = template.innerHTML;\\n } else {\\n if (false) {\\n warn('invalid template option:' + template, this);\\n }\\n return this\\n }\\n } else if (el) {\\n template = getOuterHTML(el);\\n }\\n if (template) {\\n /* istanbul ignore if */\\n if (false) {\\n mark('compile');\\n }\\n\\n var ref = compileToFunctions(template, {\\n shouldDecodeNewlines: shouldDecodeNewlines,\\n delimiters: options.delimiters,\\n comments: options.comments\\n }, this);\\n var render = ref.render;\\n var staticRenderFns = ref.staticRenderFns;\\n options.render = render;\\n options.staticRenderFns = staticRenderFns;\\n\\n /* istanbul ignore if */\\n if (false) {\\n mark('compile end');\\n measure(((this._name) + \\\" compile\\\"), 'compile', 'compile end');\\n }\\n }\\n }\\n return mount.call(this, el, hydrating)\\n};\\n\\n/**\\n * Get outerHTML of elements, taking care\\n * of SVG elements in IE as well.\\n */\\nfunction getOuterHTML (el) {\\n if (el.outerHTML) {\\n return el.outerHTML\\n } else {\\n var container = document.createElement('div');\\n container.appendChild(el.cloneNode(true));\\n return container.innerHTML\\n }\\n}\\n\\nVue$3.compile = compileToFunctions;\\n\\n/* harmony default export */ __webpack_exports__[\\\"a\\\"] = (Vue$3);\\n\\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(49)))\\n\\n/***/ }),\\n/* 27 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar $at = __webpack_require__(204)(true);\\n\\n// 21.1.3.27 String.prototype[@@iterator]()\\n__webpack_require__(51)(String, 'String', function(iterated){\\n this._t = String(iterated); // target\\n this._i = 0; // next index\\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\\n}, function(){\\n var O = this._t\\n , index = this._i\\n , point;\\n if(index >= O.length)return {value: undefined, done: true};\\n point = $at(O, index);\\n this._i += point.length;\\n return {value: point, done: false};\\n});\\n\\n/***/ }),\\n/* 28 */\\n/***/ (function(module, exports) {\\n\\nmodule.exports = true;\\n\\n/***/ }),\\n/* 29 */\\n/***/ (function(module, exports) {\\n\\nvar id = 0\\n , px = Math.random();\\nmodule.exports = function(key){\\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\\n};\\n\\n/***/ }),\\n/* 30 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar def = __webpack_require__(9).f\\n , has = __webpack_require__(14)\\n , TAG = __webpack_require__(5)('toStringTag');\\n\\nmodule.exports = function(it, tag, stat){\\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\\n};\\n\\n/***/ }),\\n/* 31 */\\n/***/ (function(module, exports) {\\n\\nexports.f = {}.propertyIsEnumerable;\\n\\n/***/ }),\\n/* 32 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = { \\\"default\\\": __webpack_require__(233), __esModule: true };\\n\\n/***/ }),\\n/* 33 */\\n/***/ (function(module, exports) {\\n\\n// 7.1.4 ToInteger\\nvar ceil = Math.ceil\\n , floor = Math.floor;\\nmodule.exports = function(it){\\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\\n};\\n\\n/***/ }),\\n/* 34 */\\n/***/ (function(module, exports) {\\n\\n// 7.2.1 RequireObjectCoercible(argument)\\nmodule.exports = function(it){\\n if(it == undefined)throw TypeError(\\\"Can't call method on \\\" + it);\\n return it;\\n};\\n\\n/***/ }),\\n/* 35 */\\n/***/ (function(module, exports) {\\n\\nmodule.exports = function(it){\\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\\n return it;\\n};\\n\\n/***/ }),\\n/* 36 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar isObject = __webpack_require__(20)\\n , document = __webpack_require__(6).document\\n // in old IE typeof document.createElement is 'object'\\n , is = isObject(document) && isObject(document.createElement);\\nmodule.exports = function(it){\\n return is ? document.createElement(it) : {};\\n};\\n\\n/***/ }),\\n/* 37 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 7.1.1 ToPrimitive(input [, PreferredType])\\nvar isObject = __webpack_require__(20);\\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\\n// and the second argument - flag - preferred type is a string\\nmodule.exports = function(it, S){\\n if(!isObject(it))return it;\\n var fn, val;\\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\\n throw TypeError(\\\"Can't convert object to primitive value\\\");\\n};\\n\\n/***/ }),\\n/* 38 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 7.1.15 ToLength\\nvar toInteger = __webpack_require__(33)\\n , min = Math.min;\\nmodule.exports = function(it){\\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\\n};\\n\\n/***/ }),\\n/* 39 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar shared = __webpack_require__(40)('keys')\\n , uid = __webpack_require__(29);\\nmodule.exports = function(key){\\n return shared[key] || (shared[key] = uid(key));\\n};\\n\\n/***/ }),\\n/* 40 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar global = __webpack_require__(6)\\n , SHARED = '__core-js_shared__'\\n , store = global[SHARED] || (global[SHARED] = {});\\nmodule.exports = function(key){\\n return store[key] || (store[key] = {});\\n};\\n\\n/***/ }),\\n/* 41 */\\n/***/ (function(module, exports) {\\n\\n// IE 8- don't enum bug keys\\nmodule.exports = (\\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\\n).split(',');\\n\\n/***/ }),\\n/* 42 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 7.1.13 ToObject(argument)\\nvar defined = __webpack_require__(34);\\nmodule.exports = function(it){\\n return Object(defined(it));\\n};\\n\\n/***/ }),\\n/* 43 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(210);\\nvar global = __webpack_require__(6)\\n , hide = __webpack_require__(12)\\n , Iterators = __webpack_require__(23)\\n , TO_STRING_TAG = __webpack_require__(5)('toStringTag');\\n\\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\\n var NAME = collections[i]\\n , Collection = global[NAME]\\n , proto = Collection && Collection.prototype;\\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\\n Iterators[NAME] = Iterators.Array;\\n}\\n\\n/***/ }),\\n/* 44 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nexports.f = __webpack_require__(5);\\n\\n/***/ }),\\n/* 45 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar global = __webpack_require__(6)\\n , core = __webpack_require__(7)\\n , LIBRARY = __webpack_require__(28)\\n , wksExt = __webpack_require__(44)\\n , defineProperty = __webpack_require__(9).f;\\nmodule.exports = function(name){\\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\\n if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\\n};\\n\\n/***/ }),\\n/* 46 */\\n/***/ (function(module, exports) {\\n\\nexports.f = Object.getOwnPropertySymbols;\\n\\n/***/ }),\\n/* 47 */,\\n/* 48 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar classof = __webpack_require__(63)\\n , ITERATOR = __webpack_require__(5)('iterator')\\n , Iterators = __webpack_require__(23);\\nmodule.exports = __webpack_require__(7).getIteratorMethod = function(it){\\n if(it != undefined)return it[ITERATOR]\\n || it['@@iterator']\\n || Iterators[classof(it)];\\n};\\n\\n/***/ }),\\n/* 49 */\\n/***/ (function(module, exports) {\\n\\nvar g;\\r\\n\\r\\n// This works in non-strict mode\\r\\ng = (function() {\\r\\n\\treturn this;\\r\\n})();\\r\\n\\r\\ntry {\\r\\n\\t// This works if eval is allowed (see CSP)\\r\\n\\tg = g || Function(\\\"return this\\\")() || (1,eval)(\\\"this\\\");\\r\\n} catch(e) {\\r\\n\\t// This works if the window reference is available\\r\\n\\tif(typeof window === \\\"object\\\")\\r\\n\\t\\tg = window;\\r\\n}\\r\\n\\r\\n// g can still be undefined, but nothing to do about it...\\r\\n// We return undefined, instead of nothing here, so it's\\r\\n// easier to handle this case. if(!global) { ...}\\r\\n\\r\\nmodule.exports = g;\\r\\n\\n\\n/***/ }),\\n/* 50 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\n\\nexports.__esModule = true;\\n\\nvar _iterator = __webpack_require__(202);\\n\\nvar _iterator2 = _interopRequireDefault(_iterator);\\n\\nvar _symbol = __webpack_require__(213);\\n\\nvar _symbol2 = _interopRequireDefault(_symbol);\\n\\nvar _typeof = typeof _symbol2.default === \\\"function\\\" && typeof _iterator2.default === \\\"symbol\\\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \\\"function\\\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \\\"symbol\\\" : typeof obj; };\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nexports.default = typeof _symbol2.default === \\\"function\\\" && _typeof(_iterator2.default) === \\\"symbol\\\" ? function (obj) {\\n return typeof obj === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(obj);\\n} : function (obj) {\\n return obj && typeof _symbol2.default === \\\"function\\\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \\\"symbol\\\" : typeof obj === \\\"undefined\\\" ? \\\"undefined\\\" : _typeof(obj);\\n};\\n\\n/***/ }),\\n/* 51 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar LIBRARY = __webpack_require__(28)\\n , $export = __webpack_require__(18)\\n , redefine = __webpack_require__(53)\\n , hide = __webpack_require__(12)\\n , has = __webpack_require__(14)\\n , Iterators = __webpack_require__(23)\\n , $iterCreate = __webpack_require__(205)\\n , setToStringTag = __webpack_require__(30)\\n , getPrototypeOf = __webpack_require__(209)\\n , ITERATOR = __webpack_require__(5)('iterator')\\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\\n , FF_ITERATOR = '@@iterator'\\n , KEYS = 'keys'\\n , VALUES = 'values';\\n\\nvar returnThis = function(){ return this; };\\n\\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\\n $iterCreate(Constructor, NAME, next);\\n var getMethod = function(kind){\\n if(!BUGGY && kind in proto)return proto[kind];\\n switch(kind){\\n case KEYS: return function keys(){ return new Constructor(this, kind); };\\n case VALUES: return function values(){ return new Constructor(this, kind); };\\n } return function entries(){ return new Constructor(this, kind); };\\n };\\n var TAG = NAME + ' Iterator'\\n , DEF_VALUES = DEFAULT == VALUES\\n , VALUES_BUG = false\\n , proto = Base.prototype\\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\\n , $default = $native || getMethod(DEFAULT)\\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\\n , methods, key, IteratorPrototype;\\n // Fix native\\n if($anyNative){\\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\\n if(IteratorPrototype !== Object.prototype){\\n // Set @@toStringTag to native iterators\\n setToStringTag(IteratorPrototype, TAG, true);\\n // fix for some old engines\\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\\n }\\n }\\n // fix Array#{values, @@iterator}.name in V8 / FF\\n if(DEF_VALUES && $native && $native.name !== VALUES){\\n VALUES_BUG = true;\\n $default = function values(){ return $native.call(this); };\\n }\\n // Define iterator\\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\\n hide(proto, ITERATOR, $default);\\n }\\n // Plug for library\\n Iterators[NAME] = $default;\\n Iterators[TAG] = returnThis;\\n if(DEFAULT){\\n methods = {\\n values: DEF_VALUES ? $default : getMethod(VALUES),\\n keys: IS_SET ? $default : getMethod(KEYS),\\n entries: $entries\\n };\\n if(FORCED)for(key in methods){\\n if(!(key in proto))redefine(proto, key, methods[key]);\\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\\n }\\n return methods;\\n};\\n\\n/***/ }),\\n/* 52 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = !__webpack_require__(13) && !__webpack_require__(21)(function(){\\n return Object.defineProperty(__webpack_require__(36)('div'), 'a', {get: function(){ return 7; }}).a != 7;\\n});\\n\\n/***/ }),\\n/* 53 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = __webpack_require__(12);\\n\\n/***/ }),\\n/* 54 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\\nvar anObject = __webpack_require__(10)\\n , dPs = __webpack_require__(206)\\n , enumBugKeys = __webpack_require__(41)\\n , IE_PROTO = __webpack_require__(39)('IE_PROTO')\\n , Empty = function(){ /* empty */ }\\n , PROTOTYPE = 'prototype';\\n\\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\\nvar createDict = function(){\\n // Thrash, waste and sodomy: IE GC bug\\n var iframe = __webpack_require__(36)('iframe')\\n , i = enumBugKeys.length\\n , lt = '<'\\n , gt = '>'\\n , iframeDocument;\\n iframe.style.display = 'none';\\n __webpack_require__(57).appendChild(iframe);\\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\\n // createDict = iframe.contentWindow.Object;\\n // html.removeChild(iframe);\\n iframeDocument = iframe.contentWindow.document;\\n iframeDocument.open();\\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\\n iframeDocument.close();\\n createDict = iframeDocument.F;\\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\\n return createDict();\\n};\\n\\nmodule.exports = Object.create || function create(O, Properties){\\n var result;\\n if(O !== null){\\n Empty[PROTOTYPE] = anObject(O);\\n result = new Empty;\\n Empty[PROTOTYPE] = null;\\n // add \\\"__proto__\\\" for Object.getPrototypeOf polyfill\\n result[IE_PROTO] = O;\\n } else result = createDict();\\n return Properties === undefined ? result : dPs(result, Properties);\\n};\\n\\n\\n/***/ }),\\n/* 55 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar has = __webpack_require__(14)\\n , toIObject = __webpack_require__(15)\\n , arrayIndexOf = __webpack_require__(207)(false)\\n , IE_PROTO = __webpack_require__(39)('IE_PROTO');\\n\\nmodule.exports = function(object, names){\\n var O = toIObject(object)\\n , i = 0\\n , result = []\\n , key;\\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\\n // Don't enum bug & hidden keys\\n while(names.length > i)if(has(O, key = names[i++])){\\n ~arrayIndexOf(result, key) || result.push(key);\\n }\\n return result;\\n};\\n\\n/***/ }),\\n/* 56 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\\nvar cof = __webpack_require__(25);\\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\\n return cof(it) == 'String' ? it.split('') : Object(it);\\n};\\n\\n/***/ }),\\n/* 57 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = __webpack_require__(6).document && document.documentElement;\\n\\n/***/ }),\\n/* 58 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\\nvar $keys = __webpack_require__(55)\\n , hiddenKeys = __webpack_require__(41).concat('length', 'prototype');\\n\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\\n return $keys(O, hiddenKeys);\\n};\\n\\n/***/ }),\\n/* 59 */\\n/***/ (function(module, exports) {\\n\\n\\n\\n/***/ }),\\n/* 60 */,\\n/* 61 */,\\n/* 62 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = { \\\"default\\\": __webpack_require__(232), __esModule: true };\\n\\n/***/ }),\\n/* 63 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// getting tag from 19.1.3.6 Object.prototype.toString()\\nvar cof = __webpack_require__(25)\\n , TAG = __webpack_require__(5)('toStringTag')\\n // ES3 wrong here\\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\\n\\n// fallback for IE11 Script Access Denied error\\nvar tryGet = function(it, key){\\n try {\\n return it[key];\\n } catch(e){ /* empty */ }\\n};\\n\\nmodule.exports = function(it){\\n var O, T, B;\\n return it === undefined ? 'Undefined' : it === null ? 'Null'\\n // @@toStringTag case\\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\\n // builtinTag case\\n : ARG ? cof(O)\\n // ES3 arguments fallback\\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\\n};\\n\\n/***/ }),\\n/* 64 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// call something on iterator step with safe closing on error\\nvar anObject = __webpack_require__(10);\\nmodule.exports = function(iterator, fn, value, entries){\\n try {\\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\\n // 7.4.6 IteratorClose(iterator, completion)\\n } catch(e){\\n var ret = iterator['return'];\\n if(ret !== undefined)anObject(ret.call(iterator));\\n throw e;\\n }\\n};\\n\\n/***/ }),\\n/* 65 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// check on default Array iterator\\nvar Iterators = __webpack_require__(23)\\n , ITERATOR = __webpack_require__(5)('iterator')\\n , ArrayProto = Array.prototype;\\n\\nmodule.exports = function(it){\\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\\n};\\n\\n/***/ }),\\n/* 66 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar ctx = __webpack_require__(19)\\n , invoke = __webpack_require__(238)\\n , html = __webpack_require__(57)\\n , cel = __webpack_require__(36)\\n , global = __webpack_require__(6)\\n , process = global.process\\n , setTask = global.setImmediate\\n , clearTask = global.clearImmediate\\n , MessageChannel = global.MessageChannel\\n , counter = 0\\n , queue = {}\\n , ONREADYSTATECHANGE = 'onreadystatechange'\\n , defer, channel, port;\\nvar run = function(){\\n var id = +this;\\n if(queue.hasOwnProperty(id)){\\n var fn = queue[id];\\n delete queue[id];\\n fn();\\n }\\n};\\nvar listener = function(event){\\n run.call(event.data);\\n};\\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\\nif(!setTask || !clearTask){\\n setTask = function setImmediate(fn){\\n var args = [], i = 1;\\n while(arguments.length > i)args.push(arguments[i++]);\\n queue[++counter] = function(){\\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\\n };\\n defer(counter);\\n return counter;\\n };\\n clearTask = function clearImmediate(id){\\n delete queue[id];\\n };\\n // Node.js 0.8-\\n if(__webpack_require__(25)(process) == 'process'){\\n defer = function(id){\\n process.nextTick(ctx(run, id, 1));\\n };\\n // Browsers with MessageChannel, includes WebWorkers\\n } else if(MessageChannel){\\n channel = new MessageChannel;\\n port = channel.port2;\\n channel.port1.onmessage = listener;\\n defer = ctx(port.postMessage, port, 1);\\n // Browsers with postMessage, skip WebWorkers\\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\\n } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){\\n defer = function(id){\\n global.postMessage(id + '', '*');\\n };\\n global.addEventListener('message', listener, false);\\n // IE8-\\n } else if(ONREADYSTATECHANGE in cel('script')){\\n defer = function(id){\\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){\\n html.removeChild(this);\\n run.call(id);\\n };\\n };\\n // Rest old browsers\\n } else {\\n defer = function(id){\\n setTimeout(ctx(run, id, 1), 0);\\n };\\n }\\n}\\nmodule.exports = {\\n set: setTask,\\n clear: clearTask\\n};\\n\\n/***/ }),\\n/* 67 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar ITERATOR = __webpack_require__(5)('iterator')\\n , SAFE_CLOSING = false;\\n\\ntry {\\n var riter = [7][ITERATOR]();\\n riter['return'] = function(){ SAFE_CLOSING = true; };\\n Array.from(riter, function(){ throw 2; });\\n} catch(e){ /* empty */ }\\n\\nmodule.exports = function(exec, skipClosing){\\n if(!skipClosing && !SAFE_CLOSING)return false;\\n var safe = false;\\n try {\\n var arr = [7]\\n , iter = arr[ITERATOR]();\\n iter.next = function(){ return {done: safe = true}; };\\n arr[ITERATOR] = function(){ return iter; };\\n exec(arr);\\n } catch(e){ /* empty */ }\\n return safe;\\n};\\n\\n/***/ }),\\n/* 68 */,\\n/* 69 */,\\n/* 70 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n/* WEBPACK VAR INJECTION */(function(global) {\\n\\n/**\\r\\n * filesize\\r\\n *\\r\\n * @copyright 2017 Jason Mulligan
\\r\\n * @license BSD-3-Clause\\r\\n * @version 3.5.10\\r\\n */\\n(function (global) {\\n\\tvar b = /^(b|B)$/,\\n\\t symbol = {\\n\\t\\tiec: {\\n\\t\\t\\tbits: [\\\"b\\\", \\\"Kib\\\", \\\"Mib\\\", \\\"Gib\\\", \\\"Tib\\\", \\\"Pib\\\", \\\"Eib\\\", \\\"Zib\\\", \\\"Yib\\\"],\\n\\t\\t\\tbytes: [\\\"B\\\", \\\"KiB\\\", \\\"MiB\\\", \\\"GiB\\\", \\\"TiB\\\", \\\"PiB\\\", \\\"EiB\\\", \\\"ZiB\\\", \\\"YiB\\\"]\\n\\t\\t},\\n\\t\\tjedec: {\\n\\t\\t\\tbits: [\\\"b\\\", \\\"Kb\\\", \\\"Mb\\\", \\\"Gb\\\", \\\"Tb\\\", \\\"Pb\\\", \\\"Eb\\\", \\\"Zb\\\", \\\"Yb\\\"],\\n\\t\\t\\tbytes: [\\\"B\\\", \\\"KB\\\", \\\"MB\\\", \\\"GB\\\", \\\"TB\\\", \\\"PB\\\", \\\"EB\\\", \\\"ZB\\\", \\\"YB\\\"]\\n\\t\\t}\\n\\t},\\n\\t fullform = {\\n\\t\\tiec: [\\\"\\\", \\\"kibi\\\", \\\"mebi\\\", \\\"gibi\\\", \\\"tebi\\\", \\\"pebi\\\", \\\"exbi\\\", \\\"zebi\\\", \\\"yobi\\\"],\\n\\t\\tjedec: [\\\"\\\", \\\"kilo\\\", \\\"mega\\\", \\\"giga\\\", \\\"tera\\\", \\\"peta\\\", \\\"exa\\\", \\\"zetta\\\", \\\"yotta\\\"]\\n\\t};\\n\\n\\t/**\\r\\n * filesize\\r\\n *\\r\\n * @method filesize\\r\\n * @param {Mixed} arg String, Int or Float to transform\\r\\n * @param {Object} descriptor [Optional] Flags\\r\\n * @return {String} Readable file size String\\r\\n */\\n\\tfunction filesize(arg) {\\n\\t\\tvar descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\\n\\n\\t\\tvar result = [],\\n\\t\\t val = 0,\\n\\t\\t e = void 0,\\n\\t\\t base = void 0,\\n\\t\\t bits = void 0,\\n\\t\\t ceil = void 0,\\n\\t\\t full = void 0,\\n\\t\\t fullforms = void 0,\\n\\t\\t neg = void 0,\\n\\t\\t num = void 0,\\n\\t\\t output = void 0,\\n\\t\\t round = void 0,\\n\\t\\t unix = void 0,\\n\\t\\t spacer = void 0,\\n\\t\\t standard = void 0,\\n\\t\\t symbols = void 0;\\n\\n\\t\\tif (isNaN(arg)) {\\n\\t\\t\\tthrow new Error(\\\"Invalid arguments\\\");\\n\\t\\t}\\n\\n\\t\\tbits = descriptor.bits === true;\\n\\t\\tunix = descriptor.unix === true;\\n\\t\\tbase = descriptor.base || 2;\\n\\t\\tround = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;\\n\\t\\tspacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? \\\"\\\" : \\\" \\\";\\n\\t\\tsymbols = descriptor.symbols || descriptor.suffixes || {};\\n\\t\\tstandard = base === 2 ? descriptor.standard || \\\"jedec\\\" : \\\"jedec\\\";\\n\\t\\toutput = descriptor.output || \\\"string\\\";\\n\\t\\tfull = descriptor.fullform === true;\\n\\t\\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\\n\\t\\te = descriptor.exponent !== undefined ? descriptor.exponent : -1;\\n\\t\\tnum = Number(arg);\\n\\t\\tneg = num < 0;\\n\\t\\tceil = base > 2 ? 1000 : 1024;\\n\\n\\t\\t// Flipping a negative number to determine the size\\n\\t\\tif (neg) {\\n\\t\\t\\tnum = -num;\\n\\t\\t}\\n\\n\\t\\t// Determining the exponent\\n\\t\\tif (e === -1 || isNaN(e)) {\\n\\t\\t\\te = Math.floor(Math.log(num) / Math.log(ceil));\\n\\n\\t\\t\\tif (e < 0) {\\n\\t\\t\\t\\te = 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Exceeding supported length, time to reduce & multiply\\n\\t\\tif (e > 8) {\\n\\t\\t\\te = 8;\\n\\t\\t}\\n\\n\\t\\t// Zero is now a special case because bytes divide by 1\\n\\t\\tif (num === 0) {\\n\\t\\t\\tresult[0] = 0;\\n\\t\\t\\tresult[1] = unix ? \\\"\\\" : symbol[standard][bits ? \\\"bits\\\" : \\\"bytes\\\"][e];\\n\\t\\t} else {\\n\\t\\t\\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\\n\\n\\t\\t\\tif (bits) {\\n\\t\\t\\t\\tval = val * 8;\\n\\n\\t\\t\\t\\tif (val >= ceil && e < 8) {\\n\\t\\t\\t\\t\\tval = val / ceil;\\n\\t\\t\\t\\t\\te++;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\\n\\t\\t\\tresult[1] = base === 10 && e === 1 ? bits ? \\\"kb\\\" : \\\"kB\\\" : symbol[standard][bits ? \\\"bits\\\" : \\\"bytes\\\"][e];\\n\\n\\t\\t\\tif (unix) {\\n\\t\\t\\t\\tresult[1] = standard === \\\"jedec\\\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \\\"\\\") : result[1];\\n\\n\\t\\t\\t\\tif (b.test(result[1])) {\\n\\t\\t\\t\\t\\tresult[0] = Math.floor(result[0]);\\n\\t\\t\\t\\t\\tresult[1] = \\\"\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Decorating a 'diff'\\n\\t\\tif (neg) {\\n\\t\\t\\tresult[0] = -result[0];\\n\\t\\t}\\n\\n\\t\\t// Applying custom symbol\\n\\t\\tresult[1] = symbols[result[1]] || result[1];\\n\\n\\t\\t// Returning Array, Object, or String (default)\\n\\t\\tif (output === \\\"array\\\") {\\n\\t\\t\\treturn result;\\n\\t\\t}\\n\\n\\t\\tif (output === \\\"exponent\\\") {\\n\\t\\t\\treturn e;\\n\\t\\t}\\n\\n\\t\\tif (output === \\\"object\\\") {\\n\\t\\t\\treturn { value: result[0], suffix: result[1], symbol: result[1] };\\n\\t\\t}\\n\\n\\t\\tif (full) {\\n\\t\\t\\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \\\"bit\\\" : \\\"byte\\\") + (result[0] === 1 ? \\\"\\\" : \\\"s\\\");\\n\\t\\t}\\n\\n\\t\\treturn result.join(spacer);\\n\\t}\\n\\n\\t// Partial application for functional programming\\n\\tfilesize.partial = function (opt) {\\n\\t\\treturn function (arg) {\\n\\t\\t\\treturn filesize(arg, opt);\\n\\t\\t};\\n\\t};\\n\\n\\t// CommonJS, AMD, script tag\\n\\tif (true) {\\n\\t\\tmodule.exports = filesize;\\n\\t} else if (typeof define === \\\"function\\\" && define.amd) {\\n\\t\\tdefine(function () {\\n\\t\\t\\treturn filesize;\\n\\t\\t});\\n\\t} else {\\n\\t\\tglobal.filesize = filesize;\\n\\t}\\n})(typeof window !== \\\"undefined\\\" ? window : global);\\n\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(49)))\\n\\n/***/ }),\\n/* 71 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Afrikaans [af]\\n//! author : Werner Mollentze : https://github.com/wernerm\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar af = moment.defineLocale('af', {\\n months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\\n monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\\n weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\\n weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\\n weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\\n meridiemParse: /vm|nm/i,\\n isPM : function (input) {\\n return /^nm$/i.test(input);\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 12) {\\n return isLower ? 'vm' : 'VM';\\n } else {\\n return isLower ? 'nm' : 'NM';\\n }\\n },\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Vandag om] LT',\\n nextDay : '[Môre om] LT',\\n nextWeek : 'dddd [om] LT',\\n lastDay : '[Gister om] LT',\\n lastWeek : '[Laas] dddd [om] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'oor %s',\\n past : '%s gelede',\\n s : '\\\\'n paar sekondes',\\n m : '\\\\'n minuut',\\n mm : '%d minute',\\n h : '\\\\'n uur',\\n hh : '%d ure',\\n d : '\\\\'n dag',\\n dd : '%d dae',\\n M : '\\\\'n maand',\\n MM : '%d maande',\\n y : '\\\\'n jaar',\\n yy : '%d jaar'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(ste|de)/,\\n ordinal : function (number) {\\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\\n },\\n week : {\\n dow : 1, // Maandag is die eerste dag van die week.\\n doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\\n }\\n});\\n\\nreturn af;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 72 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Arabic [ar]\\n//! author : Abdel Said: https://github.com/abdelsaid\\n//! author : Ahmed Elkhatib\\n//! author : forabi https://github.com/forabi\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '١',\\n '2': '٢',\\n '3': '٣',\\n '4': '٤',\\n '5': '٥',\\n '6': '٦',\\n '7': '٧',\\n '8': '٨',\\n '9': '٩',\\n '0': '٠'\\n};\\nvar numberMap = {\\n '١': '1',\\n '٢': '2',\\n '٣': '3',\\n '٤': '4',\\n '٥': '5',\\n '٦': '6',\\n '٧': '7',\\n '٨': '8',\\n '٩': '9',\\n '٠': '0'\\n};\\nvar pluralForm = function (n) {\\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\\n};\\nvar plurals = {\\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\\n};\\nvar pluralize = function (u) {\\n return function (number, withoutSuffix, string, isFuture) {\\n var f = pluralForm(number),\\n str = plurals[u][pluralForm(number)];\\n if (f === 2) {\\n str = str[withoutSuffix ? 0 : 1];\\n }\\n return str.replace(/%d/i, number);\\n };\\n};\\nvar months = [\\n 'كانون الثاني يناير',\\n 'شباط فبراير',\\n 'آذار مارس',\\n 'نيسان أبريل',\\n 'أيار مايو',\\n 'حزيران يونيو',\\n 'تموز يوليو',\\n 'آب أغسطس',\\n 'أيلول سبتمبر',\\n 'تشرين الأول أكتوبر',\\n 'تشرين الثاني نوفمبر',\\n 'كانون الأول ديسمبر'\\n];\\n\\nvar ar = moment.defineLocale('ar', {\\n months : months,\\n monthsShort : months,\\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'D/\\\\u200FM/\\\\u200FYYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /ص|م/,\\n isPM : function (input) {\\n return 'م' === input;\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'ص';\\n } else {\\n return 'م';\\n }\\n },\\n calendar : {\\n sameDay: '[اليوم عند الساعة] LT',\\n nextDay: '[غدًا عند الساعة] LT',\\n nextWeek: 'dddd [عند الساعة] LT',\\n lastDay: '[أمس عند الساعة] LT',\\n lastWeek: 'dddd [عند الساعة] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'بعد %s',\\n past : 'منذ %s',\\n s : pluralize('s'),\\n m : pluralize('m'),\\n mm : pluralize('m'),\\n h : pluralize('h'),\\n hh : pluralize('h'),\\n d : pluralize('d'),\\n dd : pluralize('d'),\\n M : pluralize('M'),\\n MM : pluralize('M'),\\n y : pluralize('y'),\\n yy : pluralize('y')\\n },\\n preparse: function (string) {\\n return string.replace(/\\\\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\\n return numberMap[match];\\n }).replace(/،/g, ',');\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n }).replace(/,/g, '،');\\n },\\n week : {\\n dow : 6, // Saturday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn ar;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 73 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Arabic (Algeria) [ar-dz]\\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar arDz = moment.defineLocale('ar-dz', {\\n months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\\n monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\\n weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\\n weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[اليوم على الساعة] LT',\\n nextDay: '[غدا على الساعة] LT',\\n nextWeek: 'dddd [على الساعة] LT',\\n lastDay: '[أمس على الساعة] LT',\\n lastWeek: 'dddd [على الساعة] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'في %s',\\n past : 'منذ %s',\\n s : 'ثوان',\\n m : 'دقيقة',\\n mm : '%d دقائق',\\n h : 'ساعة',\\n hh : '%d ساعات',\\n d : 'يوم',\\n dd : '%d أيام',\\n M : 'شهر',\\n MM : '%d أشهر',\\n y : 'سنة',\\n yy : '%d سنوات'\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 4 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn arDz;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 74 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Arabic (Kuwait) [ar-kw]\\n//! author : Nusret Parlak: https://github.com/nusretparlak\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar arKw = moment.defineLocale('ar-kw', {\\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[اليوم على الساعة] LT',\\n nextDay: '[غدا على الساعة] LT',\\n nextWeek: 'dddd [على الساعة] LT',\\n lastDay: '[أمس على الساعة] LT',\\n lastWeek: 'dddd [على الساعة] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'في %s',\\n past : 'منذ %s',\\n s : 'ثوان',\\n m : 'دقيقة',\\n mm : '%d دقائق',\\n h : 'ساعة',\\n hh : '%d ساعات',\\n d : 'يوم',\\n dd : '%d أيام',\\n M : 'شهر',\\n MM : '%d أشهر',\\n y : 'سنة',\\n yy : '%d سنوات'\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn arKw;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 75 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Arabic (Lybia) [ar-ly]\\n//! author : Ali Hmer: https://github.com/kikoanis\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '1',\\n '2': '2',\\n '3': '3',\\n '4': '4',\\n '5': '5',\\n '6': '6',\\n '7': '7',\\n '8': '8',\\n '9': '9',\\n '0': '0'\\n};\\nvar pluralForm = function (n) {\\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\\n};\\nvar plurals = {\\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\\n};\\nvar pluralize = function (u) {\\n return function (number, withoutSuffix, string, isFuture) {\\n var f = pluralForm(number),\\n str = plurals[u][pluralForm(number)];\\n if (f === 2) {\\n str = str[withoutSuffix ? 0 : 1];\\n }\\n return str.replace(/%d/i, number);\\n };\\n};\\nvar months = [\\n 'يناير',\\n 'فبراير',\\n 'مارس',\\n 'أبريل',\\n 'مايو',\\n 'يونيو',\\n 'يوليو',\\n 'أغسطس',\\n 'سبتمبر',\\n 'أكتوبر',\\n 'نوفمبر',\\n 'ديسمبر'\\n];\\n\\nvar arLy = moment.defineLocale('ar-ly', {\\n months : months,\\n monthsShort : months,\\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'D/\\\\u200FM/\\\\u200FYYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /ص|م/,\\n isPM : function (input) {\\n return 'م' === input;\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'ص';\\n } else {\\n return 'م';\\n }\\n },\\n calendar : {\\n sameDay: '[اليوم عند الساعة] LT',\\n nextDay: '[غدًا عند الساعة] LT',\\n nextWeek: 'dddd [عند الساعة] LT',\\n lastDay: '[أمس عند الساعة] LT',\\n lastWeek: 'dddd [عند الساعة] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'بعد %s',\\n past : 'منذ %s',\\n s : pluralize('s'),\\n m : pluralize('m'),\\n mm : pluralize('m'),\\n h : pluralize('h'),\\n hh : pluralize('h'),\\n d : pluralize('d'),\\n dd : pluralize('d'),\\n M : pluralize('M'),\\n MM : pluralize('M'),\\n y : pluralize('y'),\\n yy : pluralize('y')\\n },\\n preparse: function (string) {\\n return string.replace(/\\\\u200f/g, '').replace(/،/g, ',');\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n }).replace(/,/g, '،');\\n },\\n week : {\\n dow : 6, // Saturday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn arLy;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 76 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Arabic (Morocco) [ar-ma]\\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\\n//! author : Abdel Said : https://github.com/abdelsaid\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar arMa = moment.defineLocale('ar-ma', {\\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[اليوم على الساعة] LT',\\n nextDay: '[غدا على الساعة] LT',\\n nextWeek: 'dddd [على الساعة] LT',\\n lastDay: '[أمس على الساعة] LT',\\n lastWeek: 'dddd [على الساعة] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'في %s',\\n past : 'منذ %s',\\n s : 'ثوان',\\n m : 'دقيقة',\\n mm : '%d دقائق',\\n h : 'ساعة',\\n hh : '%d ساعات',\\n d : 'يوم',\\n dd : '%d أيام',\\n M : 'شهر',\\n MM : '%d أشهر',\\n y : 'سنة',\\n yy : '%d سنوات'\\n },\\n week : {\\n dow : 6, // Saturday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn arMa;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 77 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Arabic (Saudi Arabia) [ar-sa]\\n//! author : Suhail Alkowaileet : https://github.com/xsoh\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '١',\\n '2': '٢',\\n '3': '٣',\\n '4': '٤',\\n '5': '٥',\\n '6': '٦',\\n '7': '٧',\\n '8': '٨',\\n '9': '٩',\\n '0': '٠'\\n};\\nvar numberMap = {\\n '١': '1',\\n '٢': '2',\\n '٣': '3',\\n '٤': '4',\\n '٥': '5',\\n '٦': '6',\\n '٧': '7',\\n '٨': '8',\\n '٩': '9',\\n '٠': '0'\\n};\\n\\nvar arSa = moment.defineLocale('ar-sa', {\\n months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\\n monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /ص|م/,\\n isPM : function (input) {\\n return 'م' === input;\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'ص';\\n } else {\\n return 'م';\\n }\\n },\\n calendar : {\\n sameDay: '[اليوم على الساعة] LT',\\n nextDay: '[غدا على الساعة] LT',\\n nextWeek: 'dddd [على الساعة] LT',\\n lastDay: '[أمس على الساعة] LT',\\n lastWeek: 'dddd [على الساعة] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'في %s',\\n past : 'منذ %s',\\n s : 'ثوان',\\n m : 'دقيقة',\\n mm : '%d دقائق',\\n h : 'ساعة',\\n hh : '%d ساعات',\\n d : 'يوم',\\n dd : '%d أيام',\\n M : 'شهر',\\n MM : '%d أشهر',\\n y : 'سنة',\\n yy : '%d سنوات'\\n },\\n preparse: function (string) {\\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\\n return numberMap[match];\\n }).replace(/،/g, ',');\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n }).replace(/,/g, '،');\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn arSa;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 78 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Arabic (Tunisia) [ar-tn]\\n//! author : Nader Toukabri : https://github.com/naderio\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar arTn = moment.defineLocale('ar-tn', {\\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat: {\\n LT: 'HH:mm',\\n LTS: 'HH:mm:ss',\\n L: 'DD/MM/YYYY',\\n LL: 'D MMMM YYYY',\\n LLL: 'D MMMM YYYY HH:mm',\\n LLLL: 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar: {\\n sameDay: '[اليوم على الساعة] LT',\\n nextDay: '[غدا على الساعة] LT',\\n nextWeek: 'dddd [على الساعة] LT',\\n lastDay: '[أمس على الساعة] LT',\\n lastWeek: 'dddd [على الساعة] LT',\\n sameElse: 'L'\\n },\\n relativeTime: {\\n future: 'في %s',\\n past: 'منذ %s',\\n s: 'ثوان',\\n m: 'دقيقة',\\n mm: '%d دقائق',\\n h: 'ساعة',\\n hh: '%d ساعات',\\n d: 'يوم',\\n dd: '%d أيام',\\n M: 'شهر',\\n MM: '%d أشهر',\\n y: 'سنة',\\n yy: '%d سنوات'\\n },\\n week: {\\n dow: 1, // Monday is the first day of the week.\\n doy: 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn arTn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 79 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Azerbaijani [az]\\n//! author : topchiyev : https://github.com/topchiyev\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar suffixes = {\\n 1: '-inci',\\n 5: '-inci',\\n 8: '-inci',\\n 70: '-inci',\\n 80: '-inci',\\n 2: '-nci',\\n 7: '-nci',\\n 20: '-nci',\\n 50: '-nci',\\n 3: '-üncü',\\n 4: '-üncü',\\n 100: '-üncü',\\n 6: '-ncı',\\n 9: '-uncu',\\n 10: '-uncu',\\n 30: '-uncu',\\n 60: '-ıncı',\\n 90: '-ıncı'\\n};\\n\\nvar az = moment.defineLocale('az', {\\n months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\\n monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\\n weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\\n weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\\n weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[bugün saat] LT',\\n nextDay : '[sabah saat] LT',\\n nextWeek : '[gələn həftə] dddd [saat] LT',\\n lastDay : '[dünən] LT',\\n lastWeek : '[keçən həftə] dddd [saat] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s sonra',\\n past : '%s əvvəl',\\n s : 'birneçə saniyyə',\\n m : 'bir dəqiqə',\\n mm : '%d dəqiqə',\\n h : 'bir saat',\\n hh : '%d saat',\\n d : 'bir gün',\\n dd : '%d gün',\\n M : 'bir ay',\\n MM : '%d ay',\\n y : 'bir il',\\n yy : '%d il'\\n },\\n meridiemParse: /gecə|səhər|gündüz|axşam/,\\n isPM : function (input) {\\n return /^(gündüz|axşam)$/.test(input);\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'gecə';\\n } else if (hour < 12) {\\n return 'səhər';\\n } else if (hour < 17) {\\n return 'gündüz';\\n } else {\\n return 'axşam';\\n }\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\\n ordinal : function (number) {\\n if (number === 0) { // special case for zero\\n return number + '-ıncı';\\n }\\n var a = number % 10,\\n b = number % 100 - a,\\n c = number >= 100 ? 100 : null;\\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn az;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 80 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Belarusian [be]\\n//! author : Dmitry Demidov : https://github.com/demidov91\\n//! author: Praleska: http://praleska.pro/\\n//! Author : Menelion Elensúle : https://github.com/Oire\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction plural(word, num) {\\n var forms = word.split('_');\\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\\n}\\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\\n var format = {\\n 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\\n 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\\n 'dd': 'дзень_дні_дзён',\\n 'MM': 'месяц_месяцы_месяцаў',\\n 'yy': 'год_гады_гадоў'\\n };\\n if (key === 'm') {\\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\\n }\\n else if (key === 'h') {\\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\\n }\\n else {\\n return number + ' ' + plural(format[key], +number);\\n }\\n}\\n\\nvar be = moment.defineLocale('be', {\\n months : {\\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\\n },\\n monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\\n weekdays : {\\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\\n isFormat: /\\\\[ ?[Вв] ?(?:мінулую|наступную)? ?\\\\] ?dddd/\\n },\\n weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\\n weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY г.',\\n LLL : 'D MMMM YYYY г., HH:mm',\\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\\n },\\n calendar : {\\n sameDay: '[Сёння ў] LT',\\n nextDay: '[Заўтра ў] LT',\\n lastDay: '[Учора ў] LT',\\n nextWeek: function () {\\n return '[У] dddd [ў] LT';\\n },\\n lastWeek: function () {\\n switch (this.day()) {\\n case 0:\\n case 3:\\n case 5:\\n case 6:\\n return '[У мінулую] dddd [ў] LT';\\n case 1:\\n case 2:\\n case 4:\\n return '[У мінулы] dddd [ў] LT';\\n }\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'праз %s',\\n past : '%s таму',\\n s : 'некалькі секунд',\\n m : relativeTimeWithPlural,\\n mm : relativeTimeWithPlural,\\n h : relativeTimeWithPlural,\\n hh : relativeTimeWithPlural,\\n d : 'дзень',\\n dd : relativeTimeWithPlural,\\n M : 'месяц',\\n MM : relativeTimeWithPlural,\\n y : 'год',\\n yy : relativeTimeWithPlural\\n },\\n meridiemParse: /ночы|раніцы|дня|вечара/,\\n isPM : function (input) {\\n return /^(дня|вечара)$/.test(input);\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'ночы';\\n } else if (hour < 12) {\\n return 'раніцы';\\n } else if (hour < 17) {\\n return 'дня';\\n } else {\\n return 'вечара';\\n }\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(і|ы|га)/,\\n ordinal: function (number, period) {\\n switch (period) {\\n case 'M':\\n case 'd':\\n case 'DDD':\\n case 'w':\\n case 'W':\\n return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\\n case 'D':\\n return number + '-га';\\n default:\\n return number;\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn be;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 81 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Bulgarian [bg]\\n//! author : Krasen Borisov : https://github.com/kraz\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar bg = moment.defineLocale('bg', {\\n months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\\n monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\\n weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\\n weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'D.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY H:mm',\\n LLLL : 'dddd, D MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay : '[Днес в] LT',\\n nextDay : '[Утре в] LT',\\n nextWeek : 'dddd [в] LT',\\n lastDay : '[Вчера в] LT',\\n lastWeek : function () {\\n switch (this.day()) {\\n case 0:\\n case 3:\\n case 6:\\n return '[В изминалата] dddd [в] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[В изминалия] dddd [в] LT';\\n }\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'след %s',\\n past : 'преди %s',\\n s : 'няколко секунди',\\n m : 'минута',\\n mm : '%d минути',\\n h : 'час',\\n hh : '%d часа',\\n d : 'ден',\\n dd : '%d дни',\\n M : 'месец',\\n MM : '%d месеца',\\n y : 'година',\\n yy : '%d години'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\\n ordinal : function (number) {\\n var lastDigit = number % 10,\\n last2Digits = number % 100;\\n if (number === 0) {\\n return number + '-ев';\\n } else if (last2Digits === 0) {\\n return number + '-ен';\\n } else if (last2Digits > 10 && last2Digits < 20) {\\n return number + '-ти';\\n } else if (lastDigit === 1) {\\n return number + '-ви';\\n } else if (lastDigit === 2) {\\n return number + '-ри';\\n } else if (lastDigit === 7 || lastDigit === 8) {\\n return number + '-ми';\\n } else {\\n return number + '-ти';\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn bg;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 82 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Bengali [bn]\\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '১',\\n '2': '২',\\n '3': '৩',\\n '4': '৪',\\n '5': '৫',\\n '6': '৬',\\n '7': '৭',\\n '8': '৮',\\n '9': '৯',\\n '0': '০'\\n};\\nvar numberMap = {\\n '১': '1',\\n '২': '2',\\n '৩': '3',\\n '৪': '4',\\n '৫': '5',\\n '৬': '6',\\n '৭': '7',\\n '৮': '8',\\n '৯': '9',\\n '০': '0'\\n};\\n\\nvar bn = moment.defineLocale('bn', {\\n months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\\n monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\\n weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\\n weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\\n weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm সময়',\\n LTS : 'A h:mm:ss সময়',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm সময়',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\\n },\\n calendar : {\\n sameDay : '[আজ] LT',\\n nextDay : '[আগামীকাল] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[গতকাল] LT',\\n lastWeek : '[গত] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s পরে',\\n past : '%s আগে',\\n s : 'কয়েক সেকেন্ড',\\n m : 'এক মিনিট',\\n mm : '%d মিনিট',\\n h : 'এক ঘন্টা',\\n hh : '%d ঘন্টা',\\n d : 'এক দিন',\\n dd : '%d দিন',\\n M : 'এক মাস',\\n MM : '%d মাস',\\n y : 'এক বছর',\\n yy : '%d বছর'\\n },\\n preparse: function (string) {\\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if ((meridiem === 'রাত' && hour >= 4) ||\\n (meridiem === 'দুপুর' && hour < 5) ||\\n meridiem === 'বিকাল') {\\n return hour + 12;\\n } else {\\n return hour;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'রাত';\\n } else if (hour < 10) {\\n return 'সকাল';\\n } else if (hour < 17) {\\n return 'দুপুর';\\n } else if (hour < 20) {\\n return 'বিকাল';\\n } else {\\n return 'রাত';\\n }\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn bn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 83 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Tibetan [bo]\\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '༡',\\n '2': '༢',\\n '3': '༣',\\n '4': '༤',\\n '5': '༥',\\n '6': '༦',\\n '7': '༧',\\n '8': '༨',\\n '9': '༩',\\n '0': '༠'\\n};\\nvar numberMap = {\\n '༡': '1',\\n '༢': '2',\\n '༣': '3',\\n '༤': '4',\\n '༥': '5',\\n '༦': '6',\\n '༧': '7',\\n '༨': '8',\\n '༩': '9',\\n '༠': '0'\\n};\\n\\nvar bo = moment.defineLocale('bo', {\\n months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\\n monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\\n weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\\n weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\\n weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm',\\n LTS : 'A h:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\\n },\\n calendar : {\\n sameDay : '[དི་རིང] LT',\\n nextDay : '[སང་ཉིན] LT',\\n nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\\n lastDay : '[ཁ་སང] LT',\\n lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s ལ་',\\n past : '%s སྔན་ལ',\\n s : 'ལམ་སང',\\n m : 'སྐར་མ་གཅིག',\\n mm : '%d སྐར་མ',\\n h : 'ཆུ་ཚོད་གཅིག',\\n hh : '%d ཆུ་ཚོད',\\n d : 'ཉིན་གཅིག',\\n dd : '%d ཉིན་',\\n M : 'ཟླ་བ་གཅིག',\\n MM : '%d ཟླ་བ',\\n y : 'ལོ་གཅིག',\\n yy : '%d ལོ'\\n },\\n preparse: function (string) {\\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\\n meridiem === 'དགོང་དག') {\\n return hour + 12;\\n } else {\\n return hour;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'མཚན་མོ';\\n } else if (hour < 10) {\\n return 'ཞོགས་ཀས';\\n } else if (hour < 17) {\\n return 'ཉིན་གུང';\\n } else if (hour < 20) {\\n return 'དགོང་དག';\\n } else {\\n return 'མཚན་མོ';\\n }\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn bo;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 84 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Breton [br]\\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction relativeTimeWithMutation(number, withoutSuffix, key) {\\n var format = {\\n 'mm': 'munutenn',\\n 'MM': 'miz',\\n 'dd': 'devezh'\\n };\\n return number + ' ' + mutation(format[key], number);\\n}\\nfunction specialMutationForYears(number) {\\n switch (lastNumber(number)) {\\n case 1:\\n case 3:\\n case 4:\\n case 5:\\n case 9:\\n return number + ' bloaz';\\n default:\\n return number + ' vloaz';\\n }\\n}\\nfunction lastNumber(number) {\\n if (number > 9) {\\n return lastNumber(number % 10);\\n }\\n return number;\\n}\\nfunction mutation(text, number) {\\n if (number === 2) {\\n return softMutation(text);\\n }\\n return text;\\n}\\nfunction softMutation(text) {\\n var mutationTable = {\\n 'm': 'v',\\n 'b': 'v',\\n 'd': 'z'\\n };\\n if (mutationTable[text.charAt(0)] === undefined) {\\n return text;\\n }\\n return mutationTable[text.charAt(0)] + text.substring(1);\\n}\\n\\nvar br = moment.defineLocale('br', {\\n months : 'Genver_C\\\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\\n monthsShort : 'Gen_C\\\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\\n weekdays : 'Sul_Lun_Meurzh_Merc\\\\'her_Yaou_Gwener_Sadorn'.split('_'),\\n weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\\n weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'h[e]mm A',\\n LTS : 'h[e]mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D [a viz] MMMM YYYY',\\n LLL : 'D [a viz] MMMM YYYY h[e]mm A',\\n LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\\n },\\n calendar : {\\n sameDay : '[Hiziv da] LT',\\n nextDay : '[Warc\\\\'hoazh da] LT',\\n nextWeek : 'dddd [da] LT',\\n lastDay : '[Dec\\\\'h da] LT',\\n lastWeek : 'dddd [paset da] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'a-benn %s',\\n past : '%s \\\\'zo',\\n s : 'un nebeud segondennoù',\\n m : 'ur vunutenn',\\n mm : relativeTimeWithMutation,\\n h : 'un eur',\\n hh : '%d eur',\\n d : 'un devezh',\\n dd : relativeTimeWithMutation,\\n M : 'ur miz',\\n MM : relativeTimeWithMutation,\\n y : 'ur bloaz',\\n yy : specialMutationForYears\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(añ|vet)/,\\n ordinal : function (number) {\\n var output = (number === 1) ? 'añ' : 'vet';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn br;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 85 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Bosnian [bs]\\n//! author : Nedim Cholich : https://github.com/frontyard\\n//! based on (hr) translation by Bojan Marković\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction translate(number, withoutSuffix, key) {\\n var result = number + ' ';\\n switch (key) {\\n case 'm':\\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\\n case 'mm':\\n if (number === 1) {\\n result += 'minuta';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'minute';\\n } else {\\n result += 'minuta';\\n }\\n return result;\\n case 'h':\\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\\n case 'hh':\\n if (number === 1) {\\n result += 'sat';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'sata';\\n } else {\\n result += 'sati';\\n }\\n return result;\\n case 'dd':\\n if (number === 1) {\\n result += 'dan';\\n } else {\\n result += 'dana';\\n }\\n return result;\\n case 'MM':\\n if (number === 1) {\\n result += 'mjesec';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'mjeseca';\\n } else {\\n result += 'mjeseci';\\n }\\n return result;\\n case 'yy':\\n if (number === 1) {\\n result += 'godina';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'godine';\\n } else {\\n result += 'godina';\\n }\\n return result;\\n }\\n}\\n\\nvar bs = moment.defineLocale('bs', {\\n months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY H:mm',\\n LLLL : 'dddd, D. MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay : '[danas u] LT',\\n nextDay : '[sutra u] LT',\\n nextWeek : function () {\\n switch (this.day()) {\\n case 0:\\n return '[u] [nedjelju] [u] LT';\\n case 3:\\n return '[u] [srijedu] [u] LT';\\n case 6:\\n return '[u] [subotu] [u] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[u] dddd [u] LT';\\n }\\n },\\n lastDay : '[jučer u] LT',\\n lastWeek : function () {\\n switch (this.day()) {\\n case 0:\\n case 3:\\n return '[prošlu] dddd [u] LT';\\n case 6:\\n return '[prošle] [subote] [u] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[prošli] dddd [u] LT';\\n }\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'za %s',\\n past : 'prije %s',\\n s : 'par sekundi',\\n m : translate,\\n mm : translate,\\n h : translate,\\n hh : translate,\\n d : 'dan',\\n dd : translate,\\n M : 'mjesec',\\n MM : translate,\\n y : 'godinu',\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn bs;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 86 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Catalan [ca]\\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar ca = moment.defineLocale('ca', {\\n months : {\\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\\n 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('_'),\\n isFormat: /D[oD]?(\\\\s)+MMMM/\\n },\\n monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\\n weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\\n weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : '[el] D MMMM [de] YYYY',\\n ll : 'D MMM YYYY',\\n LLL : '[el] D MMMM [de] YYYY [a les] H:mm',\\n lll : 'D MMM YYYY, H:mm',\\n LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm',\\n llll : 'ddd D MMM YYYY, H:mm'\\n },\\n calendar : {\\n sameDay : function () {\\n return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\\n },\\n nextDay : function () {\\n return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\\n },\\n nextWeek : function () {\\n return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\\n },\\n lastDay : function () {\\n return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\\n },\\n lastWeek : function () {\\n return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'd\\\\'aquí %s',\\n past : 'fa %s',\\n s : 'uns segons',\\n m : 'un minut',\\n mm : '%d minuts',\\n h : 'una hora',\\n hh : '%d hores',\\n d : 'un dia',\\n dd : '%d dies',\\n M : 'un mes',\\n MM : '%d mesos',\\n y : 'un any',\\n yy : '%d anys'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(r|n|t|è|a)/,\\n ordinal : function (number, period) {\\n var output = (number === 1) ? 'r' :\\n (number === 2) ? 'n' :\\n (number === 3) ? 'r' :\\n (number === 4) ? 't' : 'è';\\n if (period === 'w' || period === 'W') {\\n output = 'a';\\n }\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn ca;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 87 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Czech [cs]\\n//! author : petrbela : https://github.com/petrbela\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\\nvar monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\\nfunction plural(n) {\\n return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\\n}\\nfunction translate(number, withoutSuffix, key, isFuture) {\\n var result = number + ' ';\\n switch (key) {\\n case 's': // a few seconds / in a few seconds / a few seconds ago\\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\\n case 'm': // a minute / in a minute / a minute ago\\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'minuty' : 'minut');\\n } else {\\n return result + 'minutami';\\n }\\n break;\\n case 'h': // an hour / in an hour / an hour ago\\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'hodiny' : 'hodin');\\n } else {\\n return result + 'hodinami';\\n }\\n break;\\n case 'd': // a day / in a day / a day ago\\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\\n case 'dd': // 9 days / in 9 days / 9 days ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'dny' : 'dní');\\n } else {\\n return result + 'dny';\\n }\\n break;\\n case 'M': // a month / in a month / a month ago\\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\\n case 'MM': // 9 months / in 9 months / 9 months ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'měsíce' : 'měsíců');\\n } else {\\n return result + 'měsíci';\\n }\\n break;\\n case 'y': // a year / in a year / a year ago\\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\\n case 'yy': // 9 years / in 9 years / 9 years ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'roky' : 'let');\\n } else {\\n return result + 'lety';\\n }\\n break;\\n }\\n}\\n\\nvar cs = moment.defineLocale('cs', {\\n months : months,\\n monthsShort : monthsShort,\\n monthsParse : (function (months, monthsShort) {\\n var i, _monthsParse = [];\\n for (i = 0; i < 12; i++) {\\n // use custom parser to solve problem with July (červenec)\\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\\n }\\n return _monthsParse;\\n }(months, monthsShort)),\\n shortMonthsParse : (function (monthsShort) {\\n var i, _shortMonthsParse = [];\\n for (i = 0; i < 12; i++) {\\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\\n }\\n return _shortMonthsParse;\\n }(monthsShort)),\\n longMonthsParse : (function (months) {\\n var i, _longMonthsParse = [];\\n for (i = 0; i < 12; i++) {\\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\\n }\\n return _longMonthsParse;\\n }(months)),\\n weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\\n weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\\n weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\\n longDateFormat : {\\n LT: 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY H:mm',\\n LLLL : 'dddd D. MMMM YYYY H:mm',\\n l : 'D. M. YYYY'\\n },\\n calendar : {\\n sameDay: '[dnes v] LT',\\n nextDay: '[zítra v] LT',\\n nextWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[v neděli v] LT';\\n case 1:\\n case 2:\\n return '[v] dddd [v] LT';\\n case 3:\\n return '[ve středu v] LT';\\n case 4:\\n return '[ve čtvrtek v] LT';\\n case 5:\\n return '[v pátek v] LT';\\n case 6:\\n return '[v sobotu v] LT';\\n }\\n },\\n lastDay: '[včera v] LT',\\n lastWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[minulou neděli v] LT';\\n case 1:\\n case 2:\\n return '[minulé] dddd [v] LT';\\n case 3:\\n return '[minulou středu v] LT';\\n case 4:\\n case 5:\\n return '[minulý] dddd [v] LT';\\n case 6:\\n return '[minulou sobotu v] LT';\\n }\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'za %s',\\n past : 'před %s',\\n s : translate,\\n m : translate,\\n mm : translate,\\n h : translate,\\n hh : translate,\\n d : translate,\\n dd : translate,\\n M : translate,\\n MM : translate,\\n y : translate,\\n yy : translate\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn cs;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 88 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Chuvash [cv]\\n//! author : Anatoly Mironov : https://github.com/mirontoli\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar cv = moment.defineLocale('cv', {\\n months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\\n monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\\n weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\\n weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\\n weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD-MM-YYYY',\\n LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\\n LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\\n LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\\n },\\n calendar : {\\n sameDay: '[Паян] LT [сехетре]',\\n nextDay: '[Ыран] LT [сехетре]',\\n lastDay: '[Ӗнер] LT [сехетре]',\\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : function (output) {\\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\\n return output + affix;\\n },\\n past : '%s каялла',\\n s : 'пӗр-ик ҫеккунт',\\n m : 'пӗр минут',\\n mm : '%d минут',\\n h : 'пӗр сехет',\\n hh : '%d сехет',\\n d : 'пӗр кун',\\n dd : '%d кун',\\n M : 'пӗр уйӑх',\\n MM : '%d уйӑх',\\n y : 'пӗр ҫул',\\n yy : '%d ҫул'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-мӗш/,\\n ordinal : '%d-мӗш',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn cv;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 89 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Welsh [cy]\\n//! author : Robert Allen : https://github.com/robgallen\\n//! author : https://github.com/ryangreaves\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar cy = moment.defineLocale('cy', {\\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\\n weekdaysParseExact : true,\\n // time formats are the same as en-gb\\n longDateFormat: {\\n LT: 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L: 'DD/MM/YYYY',\\n LL: 'D MMMM YYYY',\\n LLL: 'D MMMM YYYY HH:mm',\\n LLLL: 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar: {\\n sameDay: '[Heddiw am] LT',\\n nextDay: '[Yfory am] LT',\\n nextWeek: 'dddd [am] LT',\\n lastDay: '[Ddoe am] LT',\\n lastWeek: 'dddd [diwethaf am] LT',\\n sameElse: 'L'\\n },\\n relativeTime: {\\n future: 'mewn %s',\\n past: '%s yn ôl',\\n s: 'ychydig eiliadau',\\n m: 'munud',\\n mm: '%d munud',\\n h: 'awr',\\n hh: '%d awr',\\n d: 'diwrnod',\\n dd: '%d diwrnod',\\n M: 'mis',\\n MM: '%d mis',\\n y: 'blwyddyn',\\n yy: '%d flynedd'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\\n ordinal: function (number) {\\n var b = number,\\n output = '',\\n lookup = [\\n '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\\n ];\\n if (b > 20) {\\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\\n output = 'fed'; // not 30ain, 70ain or 90ain\\n } else {\\n output = 'ain';\\n }\\n } else if (b > 0) {\\n output = lookup[b];\\n }\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn cy;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 90 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Danish [da]\\n//! author : Ulrik Nielsen : https://github.com/mrbase\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar da = moment.defineLocale('da', {\\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY HH:mm',\\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\\n },\\n calendar : {\\n sameDay : '[i dag kl.] LT',\\n nextDay : '[i morgen kl.] LT',\\n nextWeek : 'på dddd [kl.] LT',\\n lastDay : '[i går kl.] LT',\\n lastWeek : '[i] dddd[s kl.] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'om %s',\\n past : '%s siden',\\n s : 'få sekunder',\\n m : 'et minut',\\n mm : '%d minutter',\\n h : 'en time',\\n hh : '%d timer',\\n d : 'en dag',\\n dd : '%d dage',\\n M : 'en måned',\\n MM : '%d måneder',\\n y : 'et år',\\n yy : '%d år'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn da;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 91 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : German [de]\\n//! author : lluchs : https://github.com/lluchs\\n//! author: Menelion Elensúle: https://github.com/Oire\\n//! author : Mikolaj Dadela : https://github.com/mik01aj\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var format = {\\n 'm': ['eine Minute', 'einer Minute'],\\n 'h': ['eine Stunde', 'einer Stunde'],\\n 'd': ['ein Tag', 'einem Tag'],\\n 'dd': [number + ' Tage', number + ' Tagen'],\\n 'M': ['ein Monat', 'einem Monat'],\\n 'MM': [number + ' Monate', number + ' Monaten'],\\n 'y': ['ein Jahr', 'einem Jahr'],\\n 'yy': [number + ' Jahre', number + ' Jahren']\\n };\\n return withoutSuffix ? format[key][0] : format[key][1];\\n}\\n\\nvar de = moment.defineLocale('de', {\\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\\n monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT: 'HH:mm',\\n LTS: 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY HH:mm',\\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[heute um] LT [Uhr]',\\n sameElse: 'L',\\n nextDay: '[morgen um] LT [Uhr]',\\n nextWeek: 'dddd [um] LT [Uhr]',\\n lastDay: '[gestern um] LT [Uhr]',\\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : 'vor %s',\\n s : 'ein paar Sekunden',\\n m : processRelativeTime,\\n mm : '%d Minuten',\\n h : processRelativeTime,\\n hh : '%d Stunden',\\n d : processRelativeTime,\\n dd : processRelativeTime,\\n M : processRelativeTime,\\n MM : processRelativeTime,\\n y : processRelativeTime,\\n yy : processRelativeTime\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn de;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 92 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : German (Austria) [de-at]\\n//! author : lluchs : https://github.com/lluchs\\n//! author: Menelion Elensúle: https://github.com/Oire\\n//! author : Martin Groller : https://github.com/MadMG\\n//! author : Mikolaj Dadela : https://github.com/mik01aj\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var format = {\\n 'm': ['eine Minute', 'einer Minute'],\\n 'h': ['eine Stunde', 'einer Stunde'],\\n 'd': ['ein Tag', 'einem Tag'],\\n 'dd': [number + ' Tage', number + ' Tagen'],\\n 'M': ['ein Monat', 'einem Monat'],\\n 'MM': [number + ' Monate', number + ' Monaten'],\\n 'y': ['ein Jahr', 'einem Jahr'],\\n 'yy': [number + ' Jahre', number + ' Jahren']\\n };\\n return withoutSuffix ? format[key][0] : format[key][1];\\n}\\n\\nvar deAt = moment.defineLocale('de-at', {\\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\\n monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT: 'HH:mm',\\n LTS: 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY HH:mm',\\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[heute um] LT [Uhr]',\\n sameElse: 'L',\\n nextDay: '[morgen um] LT [Uhr]',\\n nextWeek: 'dddd [um] LT [Uhr]',\\n lastDay: '[gestern um] LT [Uhr]',\\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : 'vor %s',\\n s : 'ein paar Sekunden',\\n m : processRelativeTime,\\n mm : '%d Minuten',\\n h : processRelativeTime,\\n hh : '%d Stunden',\\n d : processRelativeTime,\\n dd : processRelativeTime,\\n M : processRelativeTime,\\n MM : processRelativeTime,\\n y : processRelativeTime,\\n yy : processRelativeTime\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn deAt;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 93 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : German (Switzerland) [de-ch]\\n//! author : sschueller : https://github.com/sschueller\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\n// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var format = {\\n 'm': ['eine Minute', 'einer Minute'],\\n 'h': ['eine Stunde', 'einer Stunde'],\\n 'd': ['ein Tag', 'einem Tag'],\\n 'dd': [number + ' Tage', number + ' Tagen'],\\n 'M': ['ein Monat', 'einem Monat'],\\n 'MM': [number + ' Monate', number + ' Monaten'],\\n 'y': ['ein Jahr', 'einem Jahr'],\\n 'yy': [number + ' Jahre', number + ' Jahren']\\n };\\n return withoutSuffix ? format[key][0] : format[key][1];\\n}\\n\\nvar deCh = moment.defineLocale('de-ch', {\\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\\n monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\\n weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT: 'HH.mm',\\n LTS: 'HH.mm.ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY HH.mm',\\n LLLL : 'dddd, D. MMMM YYYY HH.mm'\\n },\\n calendar : {\\n sameDay: '[heute um] LT [Uhr]',\\n sameElse: 'L',\\n nextDay: '[morgen um] LT [Uhr]',\\n nextWeek: 'dddd [um] LT [Uhr]',\\n lastDay: '[gestern um] LT [Uhr]',\\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : 'vor %s',\\n s : 'ein paar Sekunden',\\n m : processRelativeTime,\\n mm : '%d Minuten',\\n h : processRelativeTime,\\n hh : '%d Stunden',\\n d : processRelativeTime,\\n dd : processRelativeTime,\\n M : processRelativeTime,\\n MM : processRelativeTime,\\n y : processRelativeTime,\\n yy : processRelativeTime\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn deCh;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 94 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Maldivian [dv]\\n//! author : Jawish Hameed : https://github.com/jawish\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar months = [\\n 'ޖެނުއަރީ',\\n 'ފެބްރުއަރީ',\\n 'މާރިޗު',\\n 'އޭޕްރީލު',\\n 'މޭ',\\n 'ޖޫން',\\n 'ޖުލައި',\\n 'އޯގަސްޓު',\\n 'ސެޕްޓެމްބަރު',\\n 'އޮކްޓޯބަރު',\\n 'ނޮވެމްބަރު',\\n 'ޑިސެމްބަރު'\\n];\\nvar weekdays = [\\n 'އާދިއްތަ',\\n 'ހޯމަ',\\n 'އަންގާރަ',\\n 'ބުދަ',\\n 'ބުރާސްފަތި',\\n 'ހުކުރު',\\n 'ހޮނިހިރު'\\n];\\n\\nvar dv = moment.defineLocale('dv', {\\n months : months,\\n monthsShort : months,\\n weekdays : weekdays,\\n weekdaysShort : weekdays,\\n weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\\n longDateFormat : {\\n\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'D/M/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /މކ|މފ/,\\n isPM : function (input) {\\n return 'މފ' === input;\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'މކ';\\n } else {\\n return 'މފ';\\n }\\n },\\n calendar : {\\n sameDay : '[މިއަދު] LT',\\n nextDay : '[މާދަމާ] LT',\\n nextWeek : 'dddd LT',\\n lastDay : '[އިއްޔެ] LT',\\n lastWeek : '[ފާއިތުވި] dddd LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'ތެރޭގައި %s',\\n past : 'ކުރިން %s',\\n s : 'ސިކުންތުކޮޅެއް',\\n m : 'މިނިޓެއް',\\n mm : 'މިނިޓު %d',\\n h : 'ގަޑިއިރެއް',\\n hh : 'ގަޑިއިރު %d',\\n d : 'ދުވަހެއް',\\n dd : 'ދުވަސް %d',\\n M : 'މަހެއް',\\n MM : 'މަސް %d',\\n y : 'އަހަރެއް',\\n yy : 'އަހަރު %d'\\n },\\n preparse: function (string) {\\n return string.replace(/،/g, ',');\\n },\\n postformat: function (string) {\\n return string.replace(/,/g, '،');\\n },\\n week : {\\n dow : 7, // Sunday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn dv;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 95 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Greek [el]\\n//! author : Aggelos Karalias : https://github.com/mehiel\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\nfunction isFunction(input) {\\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\\n}\\n\\n\\nvar el = moment.defineLocale('el', {\\n monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\\n monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\\n months : function (momentToFormat, format) {\\n if (!momentToFormat) {\\n return this._monthsNominativeEl;\\n } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\\n return this._monthsGenitiveEl[momentToFormat.month()];\\n } else {\\n return this._monthsNominativeEl[momentToFormat.month()];\\n }\\n },\\n monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\\n weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\\n weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\\n weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\\n meridiem : function (hours, minutes, isLower) {\\n if (hours > 11) {\\n return isLower ? 'μμ' : 'ΜΜ';\\n } else {\\n return isLower ? 'πμ' : 'ΠΜ';\\n }\\n },\\n isPM : function (input) {\\n return ((input + '').toLowerCase()[0] === 'μ');\\n },\\n meridiemParse : /[ΠΜ]\\\\.?Μ?\\\\.?/i,\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY h:mm A',\\n LLLL : 'dddd, D MMMM YYYY h:mm A'\\n },\\n calendarEl : {\\n sameDay : '[Σήμερα {}] LT',\\n nextDay : '[Αύριο {}] LT',\\n nextWeek : 'dddd [{}] LT',\\n lastDay : '[Χθες {}] LT',\\n lastWeek : function () {\\n switch (this.day()) {\\n case 6:\\n return '[το προηγούμενο] dddd [{}] LT';\\n default:\\n return '[την προηγούμενη] dddd [{}] LT';\\n }\\n },\\n sameElse : 'L'\\n },\\n calendar : function (key, mom) {\\n var output = this._calendarEl[key],\\n hours = mom && mom.hours();\\n if (isFunction(output)) {\\n output = output.apply(mom);\\n }\\n return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\\n },\\n relativeTime : {\\n future : 'σε %s',\\n past : '%s πριν',\\n s : 'λίγα δευτερόλεπτα',\\n m : 'ένα λεπτό',\\n mm : '%d λεπτά',\\n h : 'μία ώρα',\\n hh : '%d ώρες',\\n d : 'μία μέρα',\\n dd : '%d μέρες',\\n M : 'ένας μήνας',\\n MM : '%d μήνες',\\n y : 'ένας χρόνος',\\n yy : '%d χρόνια'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}η/,\\n ordinal: '%dη',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4st is the first week of the year.\\n }\\n});\\n\\nreturn el;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 96 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : English (Australia) [en-au]\\n//! author : Jared Morse : https://github.com/jarcoal\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar enAu = moment.defineLocale('en-au', {\\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY h:mm A',\\n LLLL : 'dddd, D MMMM YYYY h:mm A'\\n },\\n calendar : {\\n sameDay : '[Today at] LT',\\n nextDay : '[Tomorrow at] LT',\\n nextWeek : 'dddd [at] LT',\\n lastDay : '[Yesterday at] LT',\\n lastWeek : '[Last] dddd [at] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : '%s ago',\\n s : 'a few seconds',\\n m : 'a minute',\\n mm : '%d minutes',\\n h : 'an hour',\\n hh : '%d hours',\\n d : 'a day',\\n dd : '%d days',\\n M : 'a month',\\n MM : '%d months',\\n y : 'a year',\\n yy : '%d years'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(st|nd|rd|th)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'th' :\\n (b === 1) ? 'st' :\\n (b === 2) ? 'nd' :\\n (b === 3) ? 'rd' : 'th';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn enAu;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 97 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : English (Canada) [en-ca]\\n//! author : Jonathan Abourbih : https://github.com/jonbca\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar enCa = moment.defineLocale('en-ca', {\\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'YYYY-MM-DD',\\n LL : 'MMMM D, YYYY',\\n LLL : 'MMMM D, YYYY h:mm A',\\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\\n },\\n calendar : {\\n sameDay : '[Today at] LT',\\n nextDay : '[Tomorrow at] LT',\\n nextWeek : 'dddd [at] LT',\\n lastDay : '[Yesterday at] LT',\\n lastWeek : '[Last] dddd [at] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : '%s ago',\\n s : 'a few seconds',\\n m : 'a minute',\\n mm : '%d minutes',\\n h : 'an hour',\\n hh : '%d hours',\\n d : 'a day',\\n dd : '%d days',\\n M : 'a month',\\n MM : '%d months',\\n y : 'a year',\\n yy : '%d years'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(st|nd|rd|th)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'th' :\\n (b === 1) ? 'st' :\\n (b === 2) ? 'nd' :\\n (b === 3) ? 'rd' : 'th';\\n return number + output;\\n }\\n});\\n\\nreturn enCa;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 98 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : English (United Kingdom) [en-gb]\\n//! author : Chris Gedrim : https://github.com/chrisgedrim\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar enGb = moment.defineLocale('en-gb', {\\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Today at] LT',\\n nextDay : '[Tomorrow at] LT',\\n nextWeek : 'dddd [at] LT',\\n lastDay : '[Yesterday at] LT',\\n lastWeek : '[Last] dddd [at] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : '%s ago',\\n s : 'a few seconds',\\n m : 'a minute',\\n mm : '%d minutes',\\n h : 'an hour',\\n hh : '%d hours',\\n d : 'a day',\\n dd : '%d days',\\n M : 'a month',\\n MM : '%d months',\\n y : 'a year',\\n yy : '%d years'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(st|nd|rd|th)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'th' :\\n (b === 1) ? 'st' :\\n (b === 2) ? 'nd' :\\n (b === 3) ? 'rd' : 'th';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn enGb;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 99 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : English (Ireland) [en-ie]\\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar enIe = moment.defineLocale('en-ie', {\\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD-MM-YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Today at] LT',\\n nextDay : '[Tomorrow at] LT',\\n nextWeek : 'dddd [at] LT',\\n lastDay : '[Yesterday at] LT',\\n lastWeek : '[Last] dddd [at] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : '%s ago',\\n s : 'a few seconds',\\n m : 'a minute',\\n mm : '%d minutes',\\n h : 'an hour',\\n hh : '%d hours',\\n d : 'a day',\\n dd : '%d days',\\n M : 'a month',\\n MM : '%d months',\\n y : 'a year',\\n yy : '%d years'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(st|nd|rd|th)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'th' :\\n (b === 1) ? 'st' :\\n (b === 2) ? 'nd' :\\n (b === 3) ? 'rd' : 'th';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn enIe;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 100 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : English (New Zealand) [en-nz]\\n//! author : Luke McGregor : https://github.com/lukemcgregor\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar enNz = moment.defineLocale('en-nz', {\\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY h:mm A',\\n LLLL : 'dddd, D MMMM YYYY h:mm A'\\n },\\n calendar : {\\n sameDay : '[Today at] LT',\\n nextDay : '[Tomorrow at] LT',\\n nextWeek : 'dddd [at] LT',\\n lastDay : '[Yesterday at] LT',\\n lastWeek : '[Last] dddd [at] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'in %s',\\n past : '%s ago',\\n s : 'a few seconds',\\n m : 'a minute',\\n mm : '%d minutes',\\n h : 'an hour',\\n hh : '%d hours',\\n d : 'a day',\\n dd : '%d days',\\n M : 'a month',\\n MM : '%d months',\\n y : 'a year',\\n yy : '%d years'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(st|nd|rd|th)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'th' :\\n (b === 1) ? 'st' :\\n (b === 2) ? 'nd' :\\n (b === 3) ? 'rd' : 'th';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn enNz;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 101 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Esperanto [eo]\\n//! author : Colin Dean : https://github.com/colindean\\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\\n//! comment : miestasmia corrected the translation by colindean\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar eo = moment.defineLocale('eo', {\\n months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\\n weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\\n weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\\n weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY-MM-DD',\\n LL : 'D[-a de] MMMM, YYYY',\\n LLL : 'D[-a de] MMMM, YYYY HH:mm',\\n LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\\n },\\n meridiemParse: /[ap]\\\\.t\\\\.m/i,\\n isPM: function (input) {\\n return input.charAt(0).toLowerCase() === 'p';\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours > 11) {\\n return isLower ? 'p.t.m.' : 'P.T.M.';\\n } else {\\n return isLower ? 'a.t.m.' : 'A.T.M.';\\n }\\n },\\n calendar : {\\n sameDay : '[Hodiaŭ je] LT',\\n nextDay : '[Morgaŭ je] LT',\\n nextWeek : 'dddd [je] LT',\\n lastDay : '[Hieraŭ je] LT',\\n lastWeek : '[pasinta] dddd [je] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'post %s',\\n past : 'antaŭ %s',\\n s : 'sekundoj',\\n m : 'minuto',\\n mm : '%d minutoj',\\n h : 'horo',\\n hh : '%d horoj',\\n d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\\n dd : '%d tagoj',\\n M : 'monato',\\n MM : '%d monatoj',\\n y : 'jaro',\\n yy : '%d jaroj'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}a/,\\n ordinal : '%da',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn eo;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 102 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Spanish [es]\\n//! author : Julio Napurí : https://github.com/julionc\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\\nvar monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\\n\\nvar es = moment.defineLocale('es', {\\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\\n monthsShort : function (m, format) {\\n if (!m) {\\n return monthsShortDot;\\n } else if (/-MMM-/.test(format)) {\\n return monthsShort[m.month()];\\n } else {\\n return monthsShortDot[m.month()];\\n }\\n },\\n monthsParseExact : true,\\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D [de] MMMM [de] YYYY',\\n LLL : 'D [de] MMMM [de] YYYY H:mm',\\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\\n },\\n calendar : {\\n sameDay : function () {\\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n nextDay : function () {\\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n nextWeek : function () {\\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n lastDay : function () {\\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n lastWeek : function () {\\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'en %s',\\n past : 'hace %s',\\n s : 'unos segundos',\\n m : 'un minuto',\\n mm : '%d minutos',\\n h : 'una hora',\\n hh : '%d horas',\\n d : 'un día',\\n dd : '%d días',\\n M : 'un mes',\\n MM : '%d meses',\\n y : 'un año',\\n yy : '%d años'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}º/,\\n ordinal : '%dº',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn es;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 103 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Spanish (Dominican Republic) [es-do]\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\\nvar monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\\n\\nvar esDo = moment.defineLocale('es-do', {\\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\\n monthsShort : function (m, format) {\\n if (!m) {\\n return monthsShortDot;\\n } else if (/-MMM-/.test(format)) {\\n return monthsShort[m.month()];\\n } else {\\n return monthsShortDot[m.month()];\\n }\\n },\\n monthsParseExact : true,\\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D [de] MMMM [de] YYYY',\\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\\n },\\n calendar : {\\n sameDay : function () {\\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n nextDay : function () {\\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n nextWeek : function () {\\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n lastDay : function () {\\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n lastWeek : function () {\\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'en %s',\\n past : 'hace %s',\\n s : 'unos segundos',\\n m : 'un minuto',\\n mm : '%d minutos',\\n h : 'una hora',\\n hh : '%d horas',\\n d : 'un día',\\n dd : '%d días',\\n M : 'un mes',\\n MM : '%d meses',\\n y : 'un año',\\n yy : '%d años'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}º/,\\n ordinal : '%dº',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn esDo;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 104 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Estonian [et]\\n//! author : Henry Kehlmann : https://github.com/madhenry\\n//! improvements : Illimar Tambek : https://github.com/ragulka\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var format = {\\n 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\\n 'm' : ['ühe minuti', 'üks minut'],\\n 'mm': [number + ' minuti', number + ' minutit'],\\n 'h' : ['ühe tunni', 'tund aega', 'üks tund'],\\n 'hh': [number + ' tunni', number + ' tundi'],\\n 'd' : ['ühe päeva', 'üks päev'],\\n 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\\n 'MM': [number + ' kuu', number + ' kuud'],\\n 'y' : ['ühe aasta', 'aasta', 'üks aasta'],\\n 'yy': [number + ' aasta', number + ' aastat']\\n };\\n if (withoutSuffix) {\\n return format[key][2] ? format[key][2] : format[key][1];\\n }\\n return isFuture ? format[key][0] : format[key][1];\\n}\\n\\nvar et = moment.defineLocale('et', {\\n months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\\n monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\\n weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\\n weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\\n weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY H:mm',\\n LLLL : 'dddd, D. MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay : '[Täna,] LT',\\n nextDay : '[Homme,] LT',\\n nextWeek : '[Järgmine] dddd LT',\\n lastDay : '[Eile,] LT',\\n lastWeek : '[Eelmine] dddd LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s pärast',\\n past : '%s tagasi',\\n s : processRelativeTime,\\n m : processRelativeTime,\\n mm : processRelativeTime,\\n h : processRelativeTime,\\n hh : processRelativeTime,\\n d : processRelativeTime,\\n dd : '%d päeva',\\n M : processRelativeTime,\\n MM : processRelativeTime,\\n y : processRelativeTime,\\n yy : processRelativeTime\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn et;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 105 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Basque [eu]\\n//! author : Eneko Illarramendi : https://github.com/eillarra\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar eu = moment.defineLocale('eu', {\\n months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\\n monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\\n weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\\n weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY-MM-DD',\\n LL : 'YYYY[ko] MMMM[ren] D[a]',\\n LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\\n LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\\n l : 'YYYY-M-D',\\n ll : 'YYYY[ko] MMM D[a]',\\n lll : 'YYYY[ko] MMM D[a] HH:mm',\\n llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\\n },\\n calendar : {\\n sameDay : '[gaur] LT[etan]',\\n nextDay : '[bihar] LT[etan]',\\n nextWeek : 'dddd LT[etan]',\\n lastDay : '[atzo] LT[etan]',\\n lastWeek : '[aurreko] dddd LT[etan]',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s barru',\\n past : 'duela %s',\\n s : 'segundo batzuk',\\n m : 'minutu bat',\\n mm : '%d minutu',\\n h : 'ordu bat',\\n hh : '%d ordu',\\n d : 'egun bat',\\n dd : '%d egun',\\n M : 'hilabete bat',\\n MM : '%d hilabete',\\n y : 'urte bat',\\n yy : '%d urte'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn eu;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 106 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Persian [fa]\\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '۱',\\n '2': '۲',\\n '3': '۳',\\n '4': '۴',\\n '5': '۵',\\n '6': '۶',\\n '7': '۷',\\n '8': '۸',\\n '9': '۹',\\n '0': '۰'\\n};\\nvar numberMap = {\\n '۱': '1',\\n '۲': '2',\\n '۳': '3',\\n '۴': '4',\\n '۵': '5',\\n '۶': '6',\\n '۷': '7',\\n '۸': '8',\\n '۹': '9',\\n '۰': '0'\\n};\\n\\nvar fa = moment.defineLocale('fa', {\\n months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\\n monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\\n weekdays : 'یک\\\\u200cشنبه_دوشنبه_سه\\\\u200cشنبه_چهارشنبه_پنج\\\\u200cشنبه_جمعه_شنبه'.split('_'),\\n weekdaysShort : 'یک\\\\u200cشنبه_دوشنبه_سه\\\\u200cشنبه_چهارشنبه_پنج\\\\u200cشنبه_جمعه_شنبه'.split('_'),\\n weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\\n isPM: function (input) {\\n return /بعد از ظهر/.test(input);\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'قبل از ظهر';\\n } else {\\n return 'بعد از ظهر';\\n }\\n },\\n calendar : {\\n sameDay : '[امروز ساعت] LT',\\n nextDay : '[فردا ساعت] LT',\\n nextWeek : 'dddd [ساعت] LT',\\n lastDay : '[دیروز ساعت] LT',\\n lastWeek : 'dddd [پیش] [ساعت] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'در %s',\\n past : '%s پیش',\\n s : 'چند ثانیه',\\n m : 'یک دقیقه',\\n mm : '%d دقیقه',\\n h : 'یک ساعت',\\n hh : '%d ساعت',\\n d : 'یک روز',\\n dd : '%d روز',\\n M : 'یک ماه',\\n MM : '%d ماه',\\n y : 'یک سال',\\n yy : '%d سال'\\n },\\n preparse: function (string) {\\n return string.replace(/[۰-۹]/g, function (match) {\\n return numberMap[match];\\n }).replace(/،/g, ',');\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n }).replace(/,/g, '،');\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}م/,\\n ordinal : '%dم',\\n week : {\\n dow : 6, // Saturday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn fa;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 107 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Finnish [fi]\\n//! author : Tarmo Aidantausta : https://github.com/bleadof\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');\\nvar numbersFuture = [\\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\\n numbersPast[7], numbersPast[8], numbersPast[9]\\n ];\\nfunction translate(number, withoutSuffix, key, isFuture) {\\n var result = '';\\n switch (key) {\\n case 's':\\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\\n case 'm':\\n return isFuture ? 'minuutin' : 'minuutti';\\n case 'mm':\\n result = isFuture ? 'minuutin' : 'minuuttia';\\n break;\\n case 'h':\\n return isFuture ? 'tunnin' : 'tunti';\\n case 'hh':\\n result = isFuture ? 'tunnin' : 'tuntia';\\n break;\\n case 'd':\\n return isFuture ? 'päivän' : 'päivä';\\n case 'dd':\\n result = isFuture ? 'päivän' : 'päivää';\\n break;\\n case 'M':\\n return isFuture ? 'kuukauden' : 'kuukausi';\\n case 'MM':\\n result = isFuture ? 'kuukauden' : 'kuukautta';\\n break;\\n case 'y':\\n return isFuture ? 'vuoden' : 'vuosi';\\n case 'yy':\\n result = isFuture ? 'vuoden' : 'vuotta';\\n break;\\n }\\n result = verbalNumber(number, isFuture) + ' ' + result;\\n return result;\\n}\\nfunction verbalNumber(number, isFuture) {\\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\\n}\\n\\nvar fi = moment.defineLocale('fi', {\\n months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\\n monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\\n weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\\n weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\\n weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\\n longDateFormat : {\\n LT : 'HH.mm',\\n LTS : 'HH.mm.ss',\\n L : 'DD.MM.YYYY',\\n LL : 'Do MMMM[ta] YYYY',\\n LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\\n LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\\n l : 'D.M.YYYY',\\n ll : 'Do MMM YYYY',\\n lll : 'Do MMM YYYY, [klo] HH.mm',\\n llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\\n },\\n calendar : {\\n sameDay : '[tänään] [klo] LT',\\n nextDay : '[huomenna] [klo] LT',\\n nextWeek : 'dddd [klo] LT',\\n lastDay : '[eilen] [klo] LT',\\n lastWeek : '[viime] dddd[na] [klo] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s päästä',\\n past : '%s sitten',\\n s : translate,\\n m : translate,\\n mm : translate,\\n h : translate,\\n hh : translate,\\n d : translate,\\n dd : translate,\\n M : translate,\\n MM : translate,\\n y : translate,\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn fi;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 108 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Faroese [fo]\\n//! author : Ragnar Johannesen : https://github.com/ragnar123\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar fo = moment.defineLocale('fo', {\\n months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\\n weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\\n weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\\n weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D. MMMM, YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Í dag kl.] LT',\\n nextDay : '[Í morgin kl.] LT',\\n nextWeek : 'dddd [kl.] LT',\\n lastDay : '[Í gjár kl.] LT',\\n lastWeek : '[síðstu] dddd [kl] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'um %s',\\n past : '%s síðani',\\n s : 'fá sekund',\\n m : 'ein minutt',\\n mm : '%d minuttir',\\n h : 'ein tími',\\n hh : '%d tímar',\\n d : 'ein dagur',\\n dd : '%d dagar',\\n M : 'ein mánaði',\\n MM : '%d mánaðir',\\n y : 'eitt ár',\\n yy : '%d ár'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn fo;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 109 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : French [fr]\\n//! author : John Fischer : https://github.com/jfroffice\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar fr = moment.defineLocale('fr', {\\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Aujourd’hui à] LT',\\n nextDay : '[Demain à] LT',\\n nextWeek : 'dddd [à] LT',\\n lastDay : '[Hier à] LT',\\n lastWeek : 'dddd [dernier à] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'dans %s',\\n past : 'il y a %s',\\n s : 'quelques secondes',\\n m : 'une minute',\\n mm : '%d minutes',\\n h : 'une heure',\\n hh : '%d heures',\\n d : 'un jour',\\n dd : '%d jours',\\n M : 'un mois',\\n MM : '%d mois',\\n y : 'un an',\\n yy : '%d ans'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(er|)/,\\n ordinal : function (number, period) {\\n switch (period) {\\n // TODO: Return 'e' when day of month > 1. Move this case inside\\n // block for masculine words below.\\n // See https://github.com/moment/moment/issues/3375\\n case 'D':\\n return number + (number === 1 ? 'er' : '');\\n\\n // Words with masculine grammatical gender: mois, trimestre, jour\\n default:\\n case 'M':\\n case 'Q':\\n case 'DDD':\\n case 'd':\\n return number + (number === 1 ? 'er' : 'e');\\n\\n // Words with feminine grammatical gender: semaine\\n case 'w':\\n case 'W':\\n return number + (number === 1 ? 're' : 'e');\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn fr;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 110 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : French (Canada) [fr-ca]\\n//! author : Jonathan Abourbih : https://github.com/jonbca\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar frCa = moment.defineLocale('fr-ca', {\\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY-MM-DD',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Aujourd’hui à] LT',\\n nextDay : '[Demain à] LT',\\n nextWeek : 'dddd [à] LT',\\n lastDay : '[Hier à] LT',\\n lastWeek : 'dddd [dernier à] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'dans %s',\\n past : 'il y a %s',\\n s : 'quelques secondes',\\n m : 'une minute',\\n mm : '%d minutes',\\n h : 'une heure',\\n hh : '%d heures',\\n d : 'un jour',\\n dd : '%d jours',\\n M : 'un mois',\\n MM : '%d mois',\\n y : 'un an',\\n yy : '%d ans'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(er|e)/,\\n ordinal : function (number, period) {\\n switch (period) {\\n // Words with masculine grammatical gender: mois, trimestre, jour\\n default:\\n case 'M':\\n case 'Q':\\n case 'D':\\n case 'DDD':\\n case 'd':\\n return number + (number === 1 ? 'er' : 'e');\\n\\n // Words with feminine grammatical gender: semaine\\n case 'w':\\n case 'W':\\n return number + (number === 1 ? 're' : 'e');\\n }\\n }\\n});\\n\\nreturn frCa;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 111 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : French (Switzerland) [fr-ch]\\n//! author : Gaspard Bucher : https://github.com/gaspard\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar frCh = moment.defineLocale('fr-ch', {\\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Aujourd’hui à] LT',\\n nextDay : '[Demain à] LT',\\n nextWeek : 'dddd [à] LT',\\n lastDay : '[Hier à] LT',\\n lastWeek : 'dddd [dernier à] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'dans %s',\\n past : 'il y a %s',\\n s : 'quelques secondes',\\n m : 'une minute',\\n mm : '%d minutes',\\n h : 'une heure',\\n hh : '%d heures',\\n d : 'un jour',\\n dd : '%d jours',\\n M : 'un mois',\\n MM : '%d mois',\\n y : 'un an',\\n yy : '%d ans'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(er|e)/,\\n ordinal : function (number, period) {\\n switch (period) {\\n // Words with masculine grammatical gender: mois, trimestre, jour\\n default:\\n case 'M':\\n case 'Q':\\n case 'D':\\n case 'DDD':\\n case 'd':\\n return number + (number === 1 ? 'er' : 'e');\\n\\n // Words with feminine grammatical gender: semaine\\n case 'w':\\n case 'W':\\n return number + (number === 1 ? 're' : 'e');\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn frCh;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 112 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Frisian [fy]\\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');\\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\\n\\nvar fy = moment.defineLocale('fy', {\\n months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\\n monthsShort : function (m, format) {\\n if (!m) {\\n return monthsShortWithDots;\\n } else if (/-MMM-/.test(format)) {\\n return monthsShortWithoutDots[m.month()];\\n } else {\\n return monthsShortWithDots[m.month()];\\n }\\n },\\n monthsParseExact : true,\\n weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\\n weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\\n weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD-MM-YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[hjoed om] LT',\\n nextDay: '[moarn om] LT',\\n nextWeek: 'dddd [om] LT',\\n lastDay: '[juster om] LT',\\n lastWeek: '[ôfrûne] dddd [om] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'oer %s',\\n past : '%s lyn',\\n s : 'in pear sekonden',\\n m : 'ien minút',\\n mm : '%d minuten',\\n h : 'ien oere',\\n hh : '%d oeren',\\n d : 'ien dei',\\n dd : '%d dagen',\\n M : 'ien moanne',\\n MM : '%d moannen',\\n y : 'ien jier',\\n yy : '%d jierren'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(ste|de)/,\\n ordinal : function (number) {\\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn fy;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 113 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Scottish Gaelic [gd]\\n//! author : Jon Ashdown : https://github.com/jonashdown\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar months = [\\n 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\\n];\\n\\nvar monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\\n\\nvar weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\\n\\nvar weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\\n\\nvar weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\\n\\nvar gd = moment.defineLocale('gd', {\\n months : months,\\n monthsShort : monthsShort,\\n monthsParseExact : true,\\n weekdays : weekdays,\\n weekdaysShort : weekdaysShort,\\n weekdaysMin : weekdaysMin,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[An-diugh aig] LT',\\n nextDay : '[A-màireach aig] LT',\\n nextWeek : 'dddd [aig] LT',\\n lastDay : '[An-dè aig] LT',\\n lastWeek : 'dddd [seo chaidh] [aig] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'ann an %s',\\n past : 'bho chionn %s',\\n s : 'beagan diogan',\\n m : 'mionaid',\\n mm : '%d mionaidean',\\n h : 'uair',\\n hh : '%d uairean',\\n d : 'latha',\\n dd : '%d latha',\\n M : 'mìos',\\n MM : '%d mìosan',\\n y : 'bliadhna',\\n yy : '%d bliadhna'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}(d|na|mh)/,\\n ordinal : function (number) {\\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn gd;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 114 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Galician [gl]\\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar gl = moment.defineLocale('gl', {\\n months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\\n monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\\n weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\\n weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D [de] MMMM [de] YYYY',\\n LLL : 'D [de] MMMM [de] YYYY H:mm',\\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\\n },\\n calendar : {\\n sameDay : function () {\\n return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\\n },\\n nextDay : function () {\\n return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\\n },\\n nextWeek : function () {\\n return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\\n },\\n lastDay : function () {\\n return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\\n },\\n lastWeek : function () {\\n return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : function (str) {\\n if (str.indexOf('un') === 0) {\\n return 'n' + str;\\n }\\n return 'en ' + str;\\n },\\n past : 'hai %s',\\n s : 'uns segundos',\\n m : 'un minuto',\\n mm : '%d minutos',\\n h : 'unha hora',\\n hh : '%d horas',\\n d : 'un día',\\n dd : '%d días',\\n M : 'un mes',\\n MM : '%d meses',\\n y : 'un ano',\\n yy : '%d anos'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}º/,\\n ordinal : '%dº',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn gl;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 115 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Konkani Latin script [gom-latn]\\n//! author : The Discoverer : https://github.com/WikiDiscoverer\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var format = {\\n 's': ['thodde secondanim', 'thodde second'],\\n 'm': ['eka mintan', 'ek minute'],\\n 'mm': [number + ' mintanim', number + ' mintam'],\\n 'h': ['eka horan', 'ek hor'],\\n 'hh': [number + ' horanim', number + ' hor'],\\n 'd': ['eka disan', 'ek dis'],\\n 'dd': [number + ' disanim', number + ' dis'],\\n 'M': ['eka mhoinean', 'ek mhoino'],\\n 'MM': [number + ' mhoineanim', number + ' mhoine'],\\n 'y': ['eka vorsan', 'ek voros'],\\n 'yy': [number + ' vorsanim', number + ' vorsam']\\n };\\n return withoutSuffix ? format[key][0] : format[key][1];\\n}\\n\\nvar gomLatn = moment.defineLocale('gom-latn', {\\n months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\\n monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\\\'var'.split('_'),\\n weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\\n weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'A h:mm [vazta]',\\n LTS : 'A h:mm:ss [vazta]',\\n L : 'DD-MM-YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY A h:mm [vazta]',\\n LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\\n },\\n calendar : {\\n sameDay: '[Aiz] LT',\\n nextDay: '[Faleam] LT',\\n nextWeek: '[Ieta to] dddd[,] LT',\\n lastDay: '[Kal] LT',\\n lastWeek: '[Fatlo] dddd[,] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : '%s',\\n past : '%s adim',\\n s : processRelativeTime,\\n m : processRelativeTime,\\n mm : processRelativeTime,\\n h : processRelativeTime,\\n hh : processRelativeTime,\\n d : processRelativeTime,\\n dd : processRelativeTime,\\n M : processRelativeTime,\\n MM : processRelativeTime,\\n y : processRelativeTime,\\n yy : processRelativeTime\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}(er)/,\\n ordinal : function (number, period) {\\n switch (period) {\\n // the ordinal 'er' only applies to day of the month\\n case 'D':\\n return number + 'er';\\n default:\\n case 'M':\\n case 'Q':\\n case 'DDD':\\n case 'd':\\n case 'w':\\n case 'W':\\n return number;\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n },\\n meridiemParse: /rati|sokalli|donparam|sanje/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'rati') {\\n return hour < 4 ? hour : hour + 12;\\n } else if (meridiem === 'sokalli') {\\n return hour;\\n } else if (meridiem === 'donparam') {\\n return hour > 12 ? hour : hour + 12;\\n } else if (meridiem === 'sanje') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'rati';\\n } else if (hour < 12) {\\n return 'sokalli';\\n } else if (hour < 16) {\\n return 'donparam';\\n } else if (hour < 20) {\\n return 'sanje';\\n } else {\\n return 'rati';\\n }\\n }\\n});\\n\\nreturn gomLatn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 116 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Hebrew [he]\\n//! author : Tomer Cohen : https://github.com/tomer\\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\\n//! author : Tal Ater : https://github.com/TalAter\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar he = moment.defineLocale('he', {\\n months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\\n monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\\n weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\\n weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\\n weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D [ב]MMMM YYYY',\\n LLL : 'D [ב]MMMM YYYY HH:mm',\\n LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\\n l : 'D/M/YYYY',\\n ll : 'D MMM YYYY',\\n lll : 'D MMM YYYY HH:mm',\\n llll : 'ddd, D MMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[היום ב־]LT',\\n nextDay : '[מחר ב־]LT',\\n nextWeek : 'dddd [בשעה] LT',\\n lastDay : '[אתמול ב־]LT',\\n lastWeek : '[ביום] dddd [האחרון בשעה] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'בעוד %s',\\n past : 'לפני %s',\\n s : 'מספר שניות',\\n m : 'דקה',\\n mm : '%d דקות',\\n h : 'שעה',\\n hh : function (number) {\\n if (number === 2) {\\n return 'שעתיים';\\n }\\n return number + ' שעות';\\n },\\n d : 'יום',\\n dd : function (number) {\\n if (number === 2) {\\n return 'יומיים';\\n }\\n return number + ' ימים';\\n },\\n M : 'חודש',\\n MM : function (number) {\\n if (number === 2) {\\n return 'חודשיים';\\n }\\n return number + ' חודשים';\\n },\\n y : 'שנה',\\n yy : function (number) {\\n if (number === 2) {\\n return 'שנתיים';\\n } else if (number % 10 === 0 && number !== 10) {\\n return number + ' שנה';\\n }\\n return number + ' שנים';\\n }\\n },\\n meridiemParse: /אחה\\\"צ|לפנה\\\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\\n isPM : function (input) {\\n return /^(אחה\\\"צ|אחרי הצהריים|בערב)$/.test(input);\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 5) {\\n return 'לפנות בוקר';\\n } else if (hour < 10) {\\n return 'בבוקר';\\n } else if (hour < 12) {\\n return isLower ? 'לפנה\\\"צ' : 'לפני הצהריים';\\n } else if (hour < 18) {\\n return isLower ? 'אחה\\\"צ' : 'אחרי הצהריים';\\n } else {\\n return 'בערב';\\n }\\n }\\n});\\n\\nreturn he;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 117 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Hindi [hi]\\n//! author : Mayank Singhal : https://github.com/mayanksinghal\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '१',\\n '2': '२',\\n '3': '३',\\n '4': '४',\\n '5': '५',\\n '6': '६',\\n '7': '७',\\n '8': '८',\\n '9': '९',\\n '0': '०'\\n};\\nvar numberMap = {\\n '१': '1',\\n '२': '2',\\n '३': '3',\\n '४': '4',\\n '५': '5',\\n '६': '6',\\n '७': '7',\\n '८': '8',\\n '९': '9',\\n '०': '0'\\n};\\n\\nvar hi = moment.defineLocale('hi', {\\n months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\\n monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\\n weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm बजे',\\n LTS : 'A h:mm:ss बजे',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm बजे',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\\n },\\n calendar : {\\n sameDay : '[आज] LT',\\n nextDay : '[कल] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[कल] LT',\\n lastWeek : '[पिछले] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s में',\\n past : '%s पहले',\\n s : 'कुछ ही क्षण',\\n m : 'एक मिनट',\\n mm : '%d मिनट',\\n h : 'एक घंटा',\\n hh : '%d घंटे',\\n d : 'एक दिन',\\n dd : '%d दिन',\\n M : 'एक महीने',\\n MM : '%d महीने',\\n y : 'एक वर्ष',\\n yy : '%d वर्ष'\\n },\\n preparse: function (string) {\\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'रात') {\\n return hour < 4 ? hour : hour + 12;\\n } else if (meridiem === 'सुबह') {\\n return hour;\\n } else if (meridiem === 'दोपहर') {\\n return hour >= 10 ? hour : hour + 12;\\n } else if (meridiem === 'शाम') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'रात';\\n } else if (hour < 10) {\\n return 'सुबह';\\n } else if (hour < 17) {\\n return 'दोपहर';\\n } else if (hour < 20) {\\n return 'शाम';\\n } else {\\n return 'रात';\\n }\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn hi;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 118 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Croatian [hr]\\n//! author : Bojan Marković : https://github.com/bmarkovic\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction translate(number, withoutSuffix, key) {\\n var result = number + ' ';\\n switch (key) {\\n case 'm':\\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\\n case 'mm':\\n if (number === 1) {\\n result += 'minuta';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'minute';\\n } else {\\n result += 'minuta';\\n }\\n return result;\\n case 'h':\\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\\n case 'hh':\\n if (number === 1) {\\n result += 'sat';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'sata';\\n } else {\\n result += 'sati';\\n }\\n return result;\\n case 'dd':\\n if (number === 1) {\\n result += 'dan';\\n } else {\\n result += 'dana';\\n }\\n return result;\\n case 'MM':\\n if (number === 1) {\\n result += 'mjesec';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'mjeseca';\\n } else {\\n result += 'mjeseci';\\n }\\n return result;\\n case 'yy':\\n if (number === 1) {\\n result += 'godina';\\n } else if (number === 2 || number === 3 || number === 4) {\\n result += 'godine';\\n } else {\\n result += 'godina';\\n }\\n return result;\\n }\\n}\\n\\nvar hr = moment.defineLocale('hr', {\\n months : {\\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\\n },\\n monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY H:mm',\\n LLLL : 'dddd, D. MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay : '[danas u] LT',\\n nextDay : '[sutra u] LT',\\n nextWeek : function () {\\n switch (this.day()) {\\n case 0:\\n return '[u] [nedjelju] [u] LT';\\n case 3:\\n return '[u] [srijedu] [u] LT';\\n case 6:\\n return '[u] [subotu] [u] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[u] dddd [u] LT';\\n }\\n },\\n lastDay : '[jučer u] LT',\\n lastWeek : function () {\\n switch (this.day()) {\\n case 0:\\n case 3:\\n return '[prošlu] dddd [u] LT';\\n case 6:\\n return '[prošle] [subote] [u] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[prošli] dddd [u] LT';\\n }\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'za %s',\\n past : 'prije %s',\\n s : 'par sekundi',\\n m : translate,\\n mm : translate,\\n h : translate,\\n hh : translate,\\n d : 'dan',\\n dd : translate,\\n M : 'mjesec',\\n MM : translate,\\n y : 'godinu',\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn hr;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 119 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Hungarian [hu]\\n//! author : Adam Brunner : https://github.com/adambrunner\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\\nfunction translate(number, withoutSuffix, key, isFuture) {\\n var num = number,\\n suffix;\\n switch (key) {\\n case 's':\\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\\n case 'm':\\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\\n case 'mm':\\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\\n case 'h':\\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\\n case 'hh':\\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\\n case 'd':\\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\\n case 'dd':\\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\\n case 'M':\\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\\n case 'MM':\\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\\n case 'y':\\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\\n case 'yy':\\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\\n }\\n return '';\\n}\\nfunction week(isFuture) {\\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\\n}\\n\\nvar hu = moment.defineLocale('hu', {\\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'YYYY.MM.DD.',\\n LL : 'YYYY. MMMM D.',\\n LLL : 'YYYY. MMMM D. H:mm',\\n LLLL : 'YYYY. MMMM D., dddd H:mm'\\n },\\n meridiemParse: /de|du/i,\\n isPM: function (input) {\\n return input.charAt(1).toLowerCase() === 'u';\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 12) {\\n return isLower === true ? 'de' : 'DE';\\n } else {\\n return isLower === true ? 'du' : 'DU';\\n }\\n },\\n calendar : {\\n sameDay : '[ma] LT[-kor]',\\n nextDay : '[holnap] LT[-kor]',\\n nextWeek : function () {\\n return week.call(this, true);\\n },\\n lastDay : '[tegnap] LT[-kor]',\\n lastWeek : function () {\\n return week.call(this, false);\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s múlva',\\n past : '%s',\\n s : translate,\\n m : translate,\\n mm : translate,\\n h : translate,\\n hh : translate,\\n d : translate,\\n dd : translate,\\n M : translate,\\n MM : translate,\\n y : translate,\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn hu;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 120 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Armenian [hy-am]\\n//! author : Armendarabyan : https://github.com/armendarabyan\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar hyAm = moment.defineLocale('hy-am', {\\n months : {\\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\\n },\\n monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\\n weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\\n weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\\n weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY թ.',\\n LLL : 'D MMMM YYYY թ., HH:mm',\\n LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\\n },\\n calendar : {\\n sameDay: '[այսօր] LT',\\n nextDay: '[վաղը] LT',\\n lastDay: '[երեկ] LT',\\n nextWeek: function () {\\n return 'dddd [օրը ժամը] LT';\\n },\\n lastWeek: function () {\\n return '[անցած] dddd [օրը ժամը] LT';\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : '%s հետո',\\n past : '%s առաջ',\\n s : 'մի քանի վայրկյան',\\n m : 'րոպե',\\n mm : '%d րոպե',\\n h : 'ժամ',\\n hh : '%d ժամ',\\n d : 'օր',\\n dd : '%d օր',\\n M : 'ամիս',\\n MM : '%d ամիս',\\n y : 'տարի',\\n yy : '%d տարի'\\n },\\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\\n isPM: function (input) {\\n return /^(ցերեկվա|երեկոյան)$/.test(input);\\n },\\n meridiem : function (hour) {\\n if (hour < 4) {\\n return 'գիշերվա';\\n } else if (hour < 12) {\\n return 'առավոտվա';\\n } else if (hour < 17) {\\n return 'ցերեկվա';\\n } else {\\n return 'երեկոյան';\\n }\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}|\\\\d{1,2}-(ին|րդ)/,\\n ordinal: function (number, period) {\\n switch (period) {\\n case 'DDD':\\n case 'w':\\n case 'W':\\n case 'DDDo':\\n if (number === 1) {\\n return number + '-ին';\\n }\\n return number + '-րդ';\\n default:\\n return number;\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn hyAm;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 121 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Indonesian [id]\\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar id = moment.defineLocale('id', {\\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\\n longDateFormat : {\\n LT : 'HH.mm',\\n LTS : 'HH.mm.ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY [pukul] HH.mm',\\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\\n },\\n meridiemParse: /pagi|siang|sore|malam/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'pagi') {\\n return hour;\\n } else if (meridiem === 'siang') {\\n return hour >= 11 ? hour : hour + 12;\\n } else if (meridiem === 'sore' || meridiem === 'malam') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 11) {\\n return 'pagi';\\n } else if (hours < 15) {\\n return 'siang';\\n } else if (hours < 19) {\\n return 'sore';\\n } else {\\n return 'malam';\\n }\\n },\\n calendar : {\\n sameDay : '[Hari ini pukul] LT',\\n nextDay : '[Besok pukul] LT',\\n nextWeek : 'dddd [pukul] LT',\\n lastDay : '[Kemarin pukul] LT',\\n lastWeek : 'dddd [lalu pukul] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'dalam %s',\\n past : '%s yang lalu',\\n s : 'beberapa detik',\\n m : 'semenit',\\n mm : '%d menit',\\n h : 'sejam',\\n hh : '%d jam',\\n d : 'sehari',\\n dd : '%d hari',\\n M : 'sebulan',\\n MM : '%d bulan',\\n y : 'setahun',\\n yy : '%d tahun'\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn id;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 122 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Icelandic [is]\\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction plural(n) {\\n if (n % 100 === 11) {\\n return true;\\n } else if (n % 10 === 1) {\\n return false;\\n }\\n return true;\\n}\\nfunction translate(number, withoutSuffix, key, isFuture) {\\n var result = number + ' ';\\n switch (key) {\\n case 's':\\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\\n case 'm':\\n return withoutSuffix ? 'mínúta' : 'mínútu';\\n case 'mm':\\n if (plural(number)) {\\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\\n } else if (withoutSuffix) {\\n return result + 'mínúta';\\n }\\n return result + 'mínútu';\\n case 'hh':\\n if (plural(number)) {\\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\\n }\\n return result + 'klukkustund';\\n case 'd':\\n if (withoutSuffix) {\\n return 'dagur';\\n }\\n return isFuture ? 'dag' : 'degi';\\n case 'dd':\\n if (plural(number)) {\\n if (withoutSuffix) {\\n return result + 'dagar';\\n }\\n return result + (isFuture ? 'daga' : 'dögum');\\n } else if (withoutSuffix) {\\n return result + 'dagur';\\n }\\n return result + (isFuture ? 'dag' : 'degi');\\n case 'M':\\n if (withoutSuffix) {\\n return 'mánuður';\\n }\\n return isFuture ? 'mánuð' : 'mánuði';\\n case 'MM':\\n if (plural(number)) {\\n if (withoutSuffix) {\\n return result + 'mánuðir';\\n }\\n return result + (isFuture ? 'mánuði' : 'mánuðum');\\n } else if (withoutSuffix) {\\n return result + 'mánuður';\\n }\\n return result + (isFuture ? 'mánuð' : 'mánuði');\\n case 'y':\\n return withoutSuffix || isFuture ? 'ár' : 'ári';\\n case 'yy':\\n if (plural(number)) {\\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\\n }\\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\\n }\\n}\\n\\nvar is = moment.defineLocale('is', {\\n months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\\n monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\\n weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\\n weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\\n weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY [kl.] H:mm',\\n LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\\n },\\n calendar : {\\n sameDay : '[í dag kl.] LT',\\n nextDay : '[á morgun kl.] LT',\\n nextWeek : 'dddd [kl.] LT',\\n lastDay : '[í gær kl.] LT',\\n lastWeek : '[síðasta] dddd [kl.] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'eftir %s',\\n past : 'fyrir %s síðan',\\n s : translate,\\n m : translate,\\n mm : translate,\\n h : 'klukkustund',\\n hh : translate,\\n d : translate,\\n dd : translate,\\n M : translate,\\n MM : translate,\\n y : translate,\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn is;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 123 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Italian [it]\\n//! author : Lorenzo : https://github.com/aliem\\n//! author: Mattia Larentis: https://github.com/nostalgiaz\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar it = moment.defineLocale('it', {\\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[Oggi alle] LT',\\n nextDay: '[Domani alle] LT',\\n nextWeek: 'dddd [alle] LT',\\n lastDay: '[Ieri alle] LT',\\n lastWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[la scorsa] dddd [alle] LT';\\n default:\\n return '[lo scorso] dddd [alle] LT';\\n }\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : function (s) {\\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\\n },\\n past : '%s fa',\\n s : 'alcuni secondi',\\n m : 'un minuto',\\n mm : '%d minuti',\\n h : 'un\\\\'ora',\\n hh : '%d ore',\\n d : 'un giorno',\\n dd : '%d giorni',\\n M : 'un mese',\\n MM : '%d mesi',\\n y : 'un anno',\\n yy : '%d anni'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}º/,\\n ordinal: '%dº',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn it;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 124 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Japanese [ja]\\n//! author : LI Long : https://github.com/baryon\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar ja = moment.defineLocale('ja', {\\n months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY/MM/DD',\\n LL : 'YYYY年M月D日',\\n LLL : 'YYYY年M月D日 HH:mm',\\n LLLL : 'YYYY年M月D日 HH:mm dddd',\\n l : 'YYYY/MM/DD',\\n ll : 'YYYY年M月D日',\\n lll : 'YYYY年M月D日 HH:mm',\\n llll : 'YYYY年M月D日 HH:mm dddd'\\n },\\n meridiemParse: /午前|午後/i,\\n isPM : function (input) {\\n return input === '午後';\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return '午前';\\n } else {\\n return '午後';\\n }\\n },\\n calendar : {\\n sameDay : '[今日] LT',\\n nextDay : '[明日] LT',\\n nextWeek : '[来週]dddd LT',\\n lastDay : '[昨日] LT',\\n lastWeek : '[前週]dddd LT',\\n sameElse : 'L'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}日/,\\n ordinal : function (number, period) {\\n switch (period) {\\n case 'd':\\n case 'D':\\n case 'DDD':\\n return number + '日';\\n default:\\n return number;\\n }\\n },\\n relativeTime : {\\n future : '%s後',\\n past : '%s前',\\n s : '数秒',\\n m : '1分',\\n mm : '%d分',\\n h : '1時間',\\n hh : '%d時間',\\n d : '1日',\\n dd : '%d日',\\n M : '1ヶ月',\\n MM : '%dヶ月',\\n y : '1年',\\n yy : '%d年'\\n }\\n});\\n\\nreturn ja;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 125 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Javanese [jv]\\n//! author : Rony Lantip : https://github.com/lantip\\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar jv = moment.defineLocale('jv', {\\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\\n weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\\n weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\\n longDateFormat : {\\n LT : 'HH.mm',\\n LTS : 'HH.mm.ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY [pukul] HH.mm',\\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\\n },\\n meridiemParse: /enjing|siyang|sonten|ndalu/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'enjing') {\\n return hour;\\n } else if (meridiem === 'siyang') {\\n return hour >= 11 ? hour : hour + 12;\\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 11) {\\n return 'enjing';\\n } else if (hours < 15) {\\n return 'siyang';\\n } else if (hours < 19) {\\n return 'sonten';\\n } else {\\n return 'ndalu';\\n }\\n },\\n calendar : {\\n sameDay : '[Dinten puniko pukul] LT',\\n nextDay : '[Mbenjang pukul] LT',\\n nextWeek : 'dddd [pukul] LT',\\n lastDay : '[Kala wingi pukul] LT',\\n lastWeek : 'dddd [kepengker pukul] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'wonten ing %s',\\n past : '%s ingkang kepengker',\\n s : 'sawetawis detik',\\n m : 'setunggal menit',\\n mm : '%d menit',\\n h : 'setunggal jam',\\n hh : '%d jam',\\n d : 'sedinten',\\n dd : '%d dinten',\\n M : 'sewulan',\\n MM : '%d wulan',\\n y : 'setaun',\\n yy : '%d taun'\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn jv;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 126 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Georgian [ka]\\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar ka = moment.defineLocale('ka', {\\n months : {\\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\\n },\\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\\n weekdays : {\\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\\n isFormat: /(წინა|შემდეგ)/\\n },\\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY h:mm A',\\n LLLL : 'dddd, D MMMM YYYY h:mm A'\\n },\\n calendar : {\\n sameDay : '[დღეს] LT[-ზე]',\\n nextDay : '[ხვალ] LT[-ზე]',\\n lastDay : '[გუშინ] LT[-ზე]',\\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\\n lastWeek : '[წინა] dddd LT-ზე',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : function (s) {\\n return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\\n s.replace(/ი$/, 'ში') :\\n s + 'ში';\\n },\\n past : function (s) {\\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\\n return s.replace(/(ი|ე)$/, 'ის უკან');\\n }\\n if ((/წელი/).test(s)) {\\n return s.replace(/წელი$/, 'წლის უკან');\\n }\\n },\\n s : 'რამდენიმე წამი',\\n m : 'წუთი',\\n mm : '%d წუთი',\\n h : 'საათი',\\n hh : '%d საათი',\\n d : 'დღე',\\n dd : '%d დღე',\\n M : 'თვე',\\n MM : '%d თვე',\\n y : 'წელი',\\n yy : '%d წელი'\\n },\\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\\\d{1,2}|\\\\d{1,2}-ე/,\\n ordinal : function (number) {\\n if (number === 0) {\\n return number;\\n }\\n if (number === 1) {\\n return number + '-ლი';\\n }\\n if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\\n return 'მე-' + number;\\n }\\n return number + '-ე';\\n },\\n week : {\\n dow : 1,\\n doy : 7\\n }\\n});\\n\\nreturn ka;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 127 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Kazakh [kk]\\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar suffixes = {\\n 0: '-ші',\\n 1: '-ші',\\n 2: '-ші',\\n 3: '-ші',\\n 4: '-ші',\\n 5: '-ші',\\n 6: '-шы',\\n 7: '-ші',\\n 8: '-ші',\\n 9: '-шы',\\n 10: '-шы',\\n 20: '-шы',\\n 30: '-шы',\\n 40: '-шы',\\n 50: '-ші',\\n 60: '-шы',\\n 70: '-ші',\\n 80: '-ші',\\n 90: '-шы',\\n 100: '-ші'\\n};\\n\\nvar kk = moment.defineLocale('kk', {\\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Бүгін сағат] LT',\\n nextDay : '[Ертең сағат] LT',\\n nextWeek : 'dddd [сағат] LT',\\n lastDay : '[Кеше сағат] LT',\\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s ішінде',\\n past : '%s бұрын',\\n s : 'бірнеше секунд',\\n m : 'бір минут',\\n mm : '%d минут',\\n h : 'бір сағат',\\n hh : '%d сағат',\\n d : 'бір күн',\\n dd : '%d күн',\\n M : 'бір ай',\\n MM : '%d ай',\\n y : 'бір жыл',\\n yy : '%d жыл'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(ші|шы)/,\\n ordinal : function (number) {\\n var a = number % 10,\\n b = number >= 100 ? 100 : null;\\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn kk;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 128 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Cambodian [km]\\n//! author : Kruy Vanna : https://github.com/kruyvanna\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar km = moment.defineLocale('km', {\\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\\n weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\\n weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\\n longDateFormat: {\\n LT: 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L: 'DD/MM/YYYY',\\n LL: 'D MMMM YYYY',\\n LLL: 'D MMMM YYYY HH:mm',\\n LLLL: 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar: {\\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\\n nextDay: '[ស្អែក ម៉ោង] LT',\\n nextWeek: 'dddd [ម៉ោង] LT',\\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\\n sameElse: 'L'\\n },\\n relativeTime: {\\n future: '%sទៀត',\\n past: '%sមុន',\\n s: 'ប៉ុន្មានវិនាទី',\\n m: 'មួយនាទី',\\n mm: '%d នាទី',\\n h: 'មួយម៉ោង',\\n hh: '%d ម៉ោង',\\n d: 'មួយថ្ងៃ',\\n dd: '%d ថ្ងៃ',\\n M: 'មួយខែ',\\n MM: '%d ខែ',\\n y: 'មួយឆ្នាំ',\\n yy: '%d ឆ្នាំ'\\n },\\n week: {\\n dow: 1, // Monday is the first day of the week.\\n doy: 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn km;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 129 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Kannada [kn]\\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '೧',\\n '2': '೨',\\n '3': '೩',\\n '4': '೪',\\n '5': '೫',\\n '6': '೬',\\n '7': '೭',\\n '8': '೮',\\n '9': '೯',\\n '0': '೦'\\n};\\nvar numberMap = {\\n '೧': '1',\\n '೨': '2',\\n '೩': '3',\\n '೪': '4',\\n '೫': '5',\\n '೬': '6',\\n '೭': '7',\\n '೮': '8',\\n '೯': '9',\\n '೦': '0'\\n};\\n\\nvar kn = moment.defineLocale('kn', {\\n months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\\n monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\\n weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\\n weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm',\\n LTS : 'A h:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\\n },\\n calendar : {\\n sameDay : '[ಇಂದು] LT',\\n nextDay : '[ನಾಳೆ] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[ನಿನ್ನೆ] LT',\\n lastWeek : '[ಕೊನೆಯ] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s ನಂತರ',\\n past : '%s ಹಿಂದೆ',\\n s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\\n m : 'ಒಂದು ನಿಮಿಷ',\\n mm : '%d ನಿಮಿಷ',\\n h : 'ಒಂದು ಗಂಟೆ',\\n hh : '%d ಗಂಟೆ',\\n d : 'ಒಂದು ದಿನ',\\n dd : '%d ದಿನ',\\n M : 'ಒಂದು ತಿಂಗಳು',\\n MM : '%d ತಿಂಗಳು',\\n y : 'ಒಂದು ವರ್ಷ',\\n yy : '%d ವರ್ಷ'\\n },\\n preparse: function (string) {\\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'ರಾತ್ರಿ') {\\n return hour < 4 ? hour : hour + 12;\\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\\n return hour;\\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\\n return hour >= 10 ? hour : hour + 12;\\n } else if (meridiem === 'ಸಂಜೆ') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'ರಾತ್ರಿ';\\n } else if (hour < 10) {\\n return 'ಬೆಳಿಗ್ಗೆ';\\n } else if (hour < 17) {\\n return 'ಮಧ್ಯಾಹ್ನ';\\n } else if (hour < 20) {\\n return 'ಸಂಜೆ';\\n } else {\\n return 'ರಾತ್ರಿ';\\n }\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(ನೇ)/,\\n ordinal : function (number) {\\n return number + 'ನೇ';\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn kn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 130 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Korean [ko]\\n//! author : Kyungwook, Park : https://github.com/kyungw00k\\n//! author : Jeeeyul Lee \\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar ko = moment.defineLocale('ko', {\\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm',\\n LTS : 'A h:mm:ss',\\n L : 'YYYY.MM.DD',\\n LL : 'YYYY년 MMMM D일',\\n LLL : 'YYYY년 MMMM D일 A h:mm',\\n LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\\n l : 'YYYY.MM.DD',\\n ll : 'YYYY년 MMMM D일',\\n lll : 'YYYY년 MMMM D일 A h:mm',\\n llll : 'YYYY년 MMMM D일 dddd A h:mm'\\n },\\n calendar : {\\n sameDay : '오늘 LT',\\n nextDay : '내일 LT',\\n nextWeek : 'dddd LT',\\n lastDay : '어제 LT',\\n lastWeek : '지난주 dddd LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s 후',\\n past : '%s 전',\\n s : '몇 초',\\n ss : '%d초',\\n m : '1분',\\n mm : '%d분',\\n h : '한 시간',\\n hh : '%d시간',\\n d : '하루',\\n dd : '%d일',\\n M : '한 달',\\n MM : '%d달',\\n y : '일 년',\\n yy : '%d년'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}일/,\\n ordinal : '%d일',\\n meridiemParse : /오전|오후/,\\n isPM : function (token) {\\n return token === '오후';\\n },\\n meridiem : function (hour, minute, isUpper) {\\n return hour < 12 ? '오전' : '오후';\\n }\\n});\\n\\nreturn ko;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 131 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Kyrgyz [ky]\\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\n\\nvar suffixes = {\\n 0: '-чү',\\n 1: '-чи',\\n 2: '-чи',\\n 3: '-чү',\\n 4: '-чү',\\n 5: '-чи',\\n 6: '-чы',\\n 7: '-чи',\\n 8: '-чи',\\n 9: '-чу',\\n 10: '-чу',\\n 20: '-чы',\\n 30: '-чу',\\n 40: '-чы',\\n 50: '-чү',\\n 60: '-чы',\\n 70: '-чи',\\n 80: '-чи',\\n 90: '-чу',\\n 100: '-чү'\\n};\\n\\nvar ky = moment.defineLocale('ky', {\\n months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\\n monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\\n weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\\n weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\\n weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Бүгүн саат] LT',\\n nextDay : '[Эртең саат] LT',\\n nextWeek : 'dddd [саат] LT',\\n lastDay : '[Кече саат] LT',\\n lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s ичинде',\\n past : '%s мурун',\\n s : 'бирнече секунд',\\n m : 'бир мүнөт',\\n mm : '%d мүнөт',\\n h : 'бир саат',\\n hh : '%d саат',\\n d : 'бир күн',\\n dd : '%d күн',\\n M : 'бир ай',\\n MM : '%d ай',\\n y : 'бир жыл',\\n yy : '%d жыл'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(чи|чы|чү|чу)/,\\n ordinal : function (number) {\\n var a = number % 10,\\n b = number >= 100 ? 100 : null;\\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn ky;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 132 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Luxembourgish [lb]\\n//! author : mweimerskirch : https://github.com/mweimerskirch\\n//! author : David Raison : https://github.com/kwisatz\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var format = {\\n 'm': ['eng Minutt', 'enger Minutt'],\\n 'h': ['eng Stonn', 'enger Stonn'],\\n 'd': ['een Dag', 'engem Dag'],\\n 'M': ['ee Mount', 'engem Mount'],\\n 'y': ['ee Joer', 'engem Joer']\\n };\\n return withoutSuffix ? format[key][0] : format[key][1];\\n}\\nfunction processFutureTime(string) {\\n var number = string.substr(0, string.indexOf(' '));\\n if (eifelerRegelAppliesToNumber(number)) {\\n return 'a ' + string;\\n }\\n return 'an ' + string;\\n}\\nfunction processPastTime(string) {\\n var number = string.substr(0, string.indexOf(' '));\\n if (eifelerRegelAppliesToNumber(number)) {\\n return 'viru ' + string;\\n }\\n return 'virun ' + string;\\n}\\n/**\\n * Returns true if the word before the given number loses the '-n' ending.\\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\\n *\\n * @param number {integer}\\n * @returns {boolean}\\n */\\nfunction eifelerRegelAppliesToNumber(number) {\\n number = parseInt(number, 10);\\n if (isNaN(number)) {\\n return false;\\n }\\n if (number < 0) {\\n // Negative Number --> always true\\n return true;\\n } else if (number < 10) {\\n // Only 1 digit\\n if (4 <= number && number <= 7) {\\n return true;\\n }\\n return false;\\n } else if (number < 100) {\\n // 2 digits\\n var lastDigit = number % 10, firstDigit = number / 10;\\n if (lastDigit === 0) {\\n return eifelerRegelAppliesToNumber(firstDigit);\\n }\\n return eifelerRegelAppliesToNumber(lastDigit);\\n } else if (number < 10000) {\\n // 3 or 4 digits --> recursively check first digit\\n while (number >= 10) {\\n number = number / 10;\\n }\\n return eifelerRegelAppliesToNumber(number);\\n } else {\\n // Anything larger than 4 digits: recursively check first n-3 digits\\n number = number / 1000;\\n return eifelerRegelAppliesToNumber(number);\\n }\\n}\\n\\nvar lb = moment.defineLocale('lb', {\\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\\n monthsParseExact : true,\\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat: {\\n LT: 'H:mm [Auer]',\\n LTS: 'H:mm:ss [Auer]',\\n L: 'DD.MM.YYYY',\\n LL: 'D. MMMM YYYY',\\n LLL: 'D. MMMM YYYY H:mm [Auer]',\\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\\n },\\n calendar: {\\n sameDay: '[Haut um] LT',\\n sameElse: 'L',\\n nextDay: '[Muer um] LT',\\n nextWeek: 'dddd [um] LT',\\n lastDay: '[Gëschter um] LT',\\n lastWeek: function () {\\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\\n switch (this.day()) {\\n case 2:\\n case 4:\\n return '[Leschten] dddd [um] LT';\\n default:\\n return '[Leschte] dddd [um] LT';\\n }\\n }\\n },\\n relativeTime : {\\n future : processFutureTime,\\n past : processPastTime,\\n s : 'e puer Sekonnen',\\n m : processRelativeTime,\\n mm : '%d Minutten',\\n h : processRelativeTime,\\n hh : '%d Stonnen',\\n d : processRelativeTime,\\n dd : '%d Deeg',\\n M : processRelativeTime,\\n MM : '%d Méint',\\n y : processRelativeTime,\\n yy : '%d Joer'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal: '%d.',\\n week: {\\n dow: 1, // Monday is the first day of the week.\\n doy: 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn lb;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 133 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Lao [lo]\\n//! author : Ryan Hart : https://github.com/ryanhart2\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar lo = moment.defineLocale('lo', {\\n months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\\n monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\\n weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\\n weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\\n weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\\n isPM: function (input) {\\n return input === 'ຕອນແລງ';\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'ຕອນເຊົ້າ';\\n } else {\\n return 'ຕອນແລງ';\\n }\\n },\\n calendar : {\\n sameDay : '[ມື້ນີ້ເວລາ] LT',\\n nextDay : '[ມື້ອື່ນເວລາ] LT',\\n nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\\n lastDay : '[ມື້ວານນີ້ເວລາ] LT',\\n lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'ອີກ %s',\\n past : '%sຜ່ານມາ',\\n s : 'ບໍ່ເທົ່າໃດວິນາທີ',\\n m : '1 ນາທີ',\\n mm : '%d ນາທີ',\\n h : '1 ຊົ່ວໂມງ',\\n hh : '%d ຊົ່ວໂມງ',\\n d : '1 ມື້',\\n dd : '%d ມື້',\\n M : '1 ເດືອນ',\\n MM : '%d ເດືອນ',\\n y : '1 ປີ',\\n yy : '%d ປີ'\\n },\\n dayOfMonthOrdinalParse: /(ທີ່)\\\\d{1,2}/,\\n ordinal : function (number) {\\n return 'ທີ່' + number;\\n }\\n});\\n\\nreturn lo;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 134 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Lithuanian [lt]\\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar units = {\\n 'm' : 'minutė_minutės_minutę',\\n 'mm': 'minutės_minučių_minutes',\\n 'h' : 'valanda_valandos_valandą',\\n 'hh': 'valandos_valandų_valandas',\\n 'd' : 'diena_dienos_dieną',\\n 'dd': 'dienos_dienų_dienas',\\n 'M' : 'mėnuo_mėnesio_mėnesį',\\n 'MM': 'mėnesiai_mėnesių_mėnesius',\\n 'y' : 'metai_metų_metus',\\n 'yy': 'metai_metų_metus'\\n};\\nfunction translateSeconds(number, withoutSuffix, key, isFuture) {\\n if (withoutSuffix) {\\n return 'kelios sekundės';\\n } else {\\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\\n }\\n}\\nfunction translateSingular(number, withoutSuffix, key, isFuture) {\\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\\n}\\nfunction special(number) {\\n return number % 10 === 0 || (number > 10 && number < 20);\\n}\\nfunction forms(key) {\\n return units[key].split('_');\\n}\\nfunction translate(number, withoutSuffix, key, isFuture) {\\n var result = number + ' ';\\n if (number === 1) {\\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\\n } else if (withoutSuffix) {\\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\\n } else {\\n if (isFuture) {\\n return result + forms(key)[1];\\n } else {\\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\\n }\\n }\\n}\\nvar lt = moment.defineLocale('lt', {\\n months : {\\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\\n isFormat: /D[oD]?(\\\\[[^\\\\[\\\\]]*\\\\]|\\\\s)+MMMM?|MMMM?(\\\\[[^\\\\[\\\\]]*\\\\]|\\\\s)+D[oD]?/\\n },\\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\\n weekdays : {\\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\\n isFormat: /dddd HH:mm/\\n },\\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY-MM-DD',\\n LL : 'YYYY [m.] MMMM D [d.]',\\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\\n l : 'YYYY-MM-DD',\\n ll : 'YYYY [m.] MMMM D [d.]',\\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\\n },\\n calendar : {\\n sameDay : '[Šiandien] LT',\\n nextDay : '[Rytoj] LT',\\n nextWeek : 'dddd LT',\\n lastDay : '[Vakar] LT',\\n lastWeek : '[Praėjusį] dddd LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'po %s',\\n past : 'prieš %s',\\n s : translateSeconds,\\n m : translateSingular,\\n mm : translate,\\n h : translateSingular,\\n hh : translate,\\n d : translateSingular,\\n dd : translate,\\n M : translateSingular,\\n MM : translate,\\n y : translateSingular,\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-oji/,\\n ordinal : function (number) {\\n return number + '-oji';\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn lt;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 135 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Latvian [lv]\\n//! author : Kristaps Karlsons : https://github.com/skakri\\n//! author : Jānis Elmeris : https://github.com/JanisE\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar units = {\\n 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\\n 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\\n 'h': 'stundas_stundām_stunda_stundas'.split('_'),\\n 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\\n 'd': 'dienas_dienām_diena_dienas'.split('_'),\\n 'dd': 'dienas_dienām_diena_dienas'.split('_'),\\n 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\\n 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\\n 'y': 'gada_gadiem_gads_gadi'.split('_'),\\n 'yy': 'gada_gadiem_gads_gadi'.split('_')\\n};\\n/**\\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\\n */\\nfunction format(forms, number, withoutSuffix) {\\n if (withoutSuffix) {\\n // E.g. \\\"21 minūte\\\", \\\"3 minūtes\\\".\\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\\n } else {\\n // E.g. \\\"21 minūtes\\\" as in \\\"pēc 21 minūtes\\\".\\n // E.g. \\\"3 minūtēm\\\" as in \\\"pēc 3 minūtēm\\\".\\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\\n }\\n}\\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\\n return number + ' ' + format(units[key], number, withoutSuffix);\\n}\\nfunction relativeTimeWithSingular(number, withoutSuffix, key) {\\n return format(units[key], number, withoutSuffix);\\n}\\nfunction relativeSeconds(number, withoutSuffix) {\\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\\n}\\n\\nvar lv = moment.defineLocale('lv', {\\n months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\\n monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\\n weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\\n weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\\n weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY.',\\n LL : 'YYYY. [gada] D. MMMM',\\n LLL : 'YYYY. [gada] D. MMMM, HH:mm',\\n LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\\n },\\n calendar : {\\n sameDay : '[Šodien pulksten] LT',\\n nextDay : '[Rīt pulksten] LT',\\n nextWeek : 'dddd [pulksten] LT',\\n lastDay : '[Vakar pulksten] LT',\\n lastWeek : '[Pagājušā] dddd [pulksten] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'pēc %s',\\n past : 'pirms %s',\\n s : relativeSeconds,\\n m : relativeTimeWithSingular,\\n mm : relativeTimeWithPlural,\\n h : relativeTimeWithSingular,\\n hh : relativeTimeWithPlural,\\n d : relativeTimeWithSingular,\\n dd : relativeTimeWithPlural,\\n M : relativeTimeWithSingular,\\n MM : relativeTimeWithPlural,\\n y : relativeTimeWithSingular,\\n yy : relativeTimeWithPlural\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn lv;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 136 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Montenegrin [me]\\n//! author : Miodrag Nikač : https://github.com/miodragnikac\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar translator = {\\n words: { //Different grammatical cases\\n m: ['jedan minut', 'jednog minuta'],\\n mm: ['minut', 'minuta', 'minuta'],\\n h: ['jedan sat', 'jednog sata'],\\n hh: ['sat', 'sata', 'sati'],\\n dd: ['dan', 'dana', 'dana'],\\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\\n yy: ['godina', 'godine', 'godina']\\n },\\n correctGrammaticalCase: function (number, wordKey) {\\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\\n },\\n translate: function (number, withoutSuffix, key) {\\n var wordKey = translator.words[key];\\n if (key.length === 1) {\\n return withoutSuffix ? wordKey[0] : wordKey[1];\\n } else {\\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\\n }\\n }\\n};\\n\\nvar me = moment.defineLocale('me', {\\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\\n monthsParseExact : true,\\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat: {\\n LT: 'H:mm',\\n LTS : 'H:mm:ss',\\n L: 'DD.MM.YYYY',\\n LL: 'D. MMMM YYYY',\\n LLL: 'D. MMMM YYYY H:mm',\\n LLLL: 'dddd, D. MMMM YYYY H:mm'\\n },\\n calendar: {\\n sameDay: '[danas u] LT',\\n nextDay: '[sjutra u] LT',\\n\\n nextWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[u] [nedjelju] [u] LT';\\n case 3:\\n return '[u] [srijedu] [u] LT';\\n case 6:\\n return '[u] [subotu] [u] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[u] dddd [u] LT';\\n }\\n },\\n lastDay : '[juče u] LT',\\n lastWeek : function () {\\n var lastWeekDays = [\\n '[prošle] [nedjelje] [u] LT',\\n '[prošlog] [ponedjeljka] [u] LT',\\n '[prošlog] [utorka] [u] LT',\\n '[prošle] [srijede] [u] LT',\\n '[prošlog] [četvrtka] [u] LT',\\n '[prošlog] [petka] [u] LT',\\n '[prošle] [subote] [u] LT'\\n ];\\n return lastWeekDays[this.day()];\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'za %s',\\n past : 'prije %s',\\n s : 'nekoliko sekundi',\\n m : translator.translate,\\n mm : translator.translate,\\n h : translator.translate,\\n hh : translator.translate,\\n d : 'dan',\\n dd : translator.translate,\\n M : 'mjesec',\\n MM : translator.translate,\\n y : 'godinu',\\n yy : translator.translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn me;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 137 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Maori [mi]\\n//! author : John Corrigan : https://github.com/johnideal\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar mi = moment.defineLocale('mi', {\\n 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('_'),\\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\\n monthsRegex: /(?:['a-z\\\\u0101\\\\u014D\\\\u016B]+\\\\-?){1,3}/i,\\n monthsStrictRegex: /(?:['a-z\\\\u0101\\\\u014D\\\\u016B]+\\\\-?){1,3}/i,\\n monthsShortRegex: /(?:['a-z\\\\u0101\\\\u014D\\\\u016B]+\\\\-?){1,3}/i,\\n monthsShortStrictRegex: /(?:['a-z\\\\u0101\\\\u014D\\\\u016B]+\\\\-?){1,2}/i,\\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\\n longDateFormat: {\\n LT: 'HH:mm',\\n LTS: 'HH:mm:ss',\\n L: 'DD/MM/YYYY',\\n LL: 'D MMMM YYYY',\\n LLL: 'D MMMM YYYY [i] HH:mm',\\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\\n },\\n calendar: {\\n sameDay: '[i teie mahana, i] LT',\\n nextDay: '[apopo i] LT',\\n nextWeek: 'dddd [i] LT',\\n lastDay: '[inanahi i] LT',\\n lastWeek: 'dddd [whakamutunga i] LT',\\n sameElse: 'L'\\n },\\n relativeTime: {\\n future: 'i roto i %s',\\n past: '%s i mua',\\n s: 'te hēkona ruarua',\\n m: 'he meneti',\\n mm: '%d meneti',\\n h: 'te haora',\\n hh: '%d haora',\\n d: 'he ra',\\n dd: '%d ra',\\n M: 'he marama',\\n MM: '%d marama',\\n y: 'he tau',\\n yy: '%d tau'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}º/,\\n ordinal: '%dº',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn mi;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 138 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Macedonian [mk]\\n//! author : Borislav Mickov : https://github.com/B0k0\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar mk = moment.defineLocale('mk', {\\n months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\\n monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\\n weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\\n weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\\n weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'D.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY H:mm',\\n LLLL : 'dddd, D MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay : '[Денес во] LT',\\n nextDay : '[Утре во] LT',\\n nextWeek : '[Во] dddd [во] LT',\\n lastDay : '[Вчера во] LT',\\n lastWeek : function () {\\n switch (this.day()) {\\n case 0:\\n case 3:\\n case 6:\\n return '[Изминатата] dddd [во] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[Изминатиот] dddd [во] LT';\\n }\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'после %s',\\n past : 'пред %s',\\n s : 'неколку секунди',\\n m : 'минута',\\n mm : '%d минути',\\n h : 'час',\\n hh : '%d часа',\\n d : 'ден',\\n dd : '%d дена',\\n M : 'месец',\\n MM : '%d месеци',\\n y : 'година',\\n yy : '%d години'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\\n ordinal : function (number) {\\n var lastDigit = number % 10,\\n last2Digits = number % 100;\\n if (number === 0) {\\n return number + '-ев';\\n } else if (last2Digits === 0) {\\n return number + '-ен';\\n } else if (last2Digits > 10 && last2Digits < 20) {\\n return number + '-ти';\\n } else if (lastDigit === 1) {\\n return number + '-ви';\\n } else if (lastDigit === 2) {\\n return number + '-ри';\\n } else if (lastDigit === 7 || lastDigit === 8) {\\n return number + '-ми';\\n } else {\\n return number + '-ти';\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn mk;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 139 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Malayalam [ml]\\n//! author : Floyd Pink : https://github.com/floydpink\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar ml = moment.defineLocale('ml', {\\n months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\\n monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\\n weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\\n weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm -നു',\\n LTS : 'A h:mm:ss -നു',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm -നു',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\\n },\\n calendar : {\\n sameDay : '[ഇന്ന്] LT',\\n nextDay : '[നാളെ] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[ഇന്നലെ] LT',\\n lastWeek : '[കഴിഞ്ഞ] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s കഴിഞ്ഞ്',\\n past : '%s മുൻപ്',\\n s : 'അൽപ നിമിഷങ്ങൾ',\\n m : 'ഒരു മിനിറ്റ്',\\n mm : '%d മിനിറ്റ്',\\n h : 'ഒരു മണിക്കൂർ',\\n hh : '%d മണിക്കൂർ',\\n d : 'ഒരു ദിവസം',\\n dd : '%d ദിവസം',\\n M : 'ഒരു മാസം',\\n MM : '%d മാസം',\\n y : 'ഒരു വർഷം',\\n yy : '%d വർഷം'\\n },\\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if ((meridiem === 'രാത്രി' && hour >= 4) ||\\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\\n meridiem === 'വൈകുന്നേരം') {\\n return hour + 12;\\n } else {\\n return hour;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'രാത്രി';\\n } else if (hour < 12) {\\n return 'രാവിലെ';\\n } else if (hour < 17) {\\n return 'ഉച്ച കഴിഞ്ഞ്';\\n } else if (hour < 20) {\\n return 'വൈകുന്നേരം';\\n } else {\\n return 'രാത്രി';\\n }\\n }\\n});\\n\\nreturn ml;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 140 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Marathi [mr]\\n//! author : Harshad Kale : https://github.com/kalehv\\n//! author : Vivek Athalye : https://github.com/vnathalye\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '१',\\n '2': '२',\\n '3': '३',\\n '4': '४',\\n '5': '५',\\n '6': '६',\\n '7': '७',\\n '8': '८',\\n '9': '९',\\n '0': '०'\\n};\\nvar numberMap = {\\n '१': '1',\\n '२': '2',\\n '३': '3',\\n '४': '4',\\n '५': '5',\\n '६': '6',\\n '७': '7',\\n '८': '8',\\n '९': '9',\\n '०': '0'\\n};\\n\\nfunction relativeTimeMr(number, withoutSuffix, string, isFuture)\\n{\\n var output = '';\\n if (withoutSuffix) {\\n switch (string) {\\n case 's': output = 'काही सेकंद'; break;\\n case 'm': output = 'एक मिनिट'; break;\\n case 'mm': output = '%d मिनिटे'; break;\\n case 'h': output = 'एक तास'; break;\\n case 'hh': output = '%d तास'; break;\\n case 'd': output = 'एक दिवस'; break;\\n case 'dd': output = '%d दिवस'; break;\\n case 'M': output = 'एक महिना'; break;\\n case 'MM': output = '%d महिने'; break;\\n case 'y': output = 'एक वर्ष'; break;\\n case 'yy': output = '%d वर्षे'; break;\\n }\\n }\\n else {\\n switch (string) {\\n case 's': output = 'काही सेकंदां'; break;\\n case 'm': output = 'एका मिनिटा'; break;\\n case 'mm': output = '%d मिनिटां'; break;\\n case 'h': output = 'एका तासा'; break;\\n case 'hh': output = '%d तासां'; break;\\n case 'd': output = 'एका दिवसा'; break;\\n case 'dd': output = '%d दिवसां'; break;\\n case 'M': output = 'एका महिन्या'; break;\\n case 'MM': output = '%d महिन्यां'; break;\\n case 'y': output = 'एका वर्षा'; break;\\n case 'yy': output = '%d वर्षां'; break;\\n }\\n }\\n return output.replace(/%d/i, number);\\n}\\n\\nvar mr = moment.defineLocale('mr', {\\n months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\\n weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm वाजता',\\n LTS : 'A h:mm:ss वाजता',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm वाजता',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\\n },\\n calendar : {\\n sameDay : '[आज] LT',\\n nextDay : '[उद्या] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[काल] LT',\\n lastWeek: '[मागील] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future: '%sमध्ये',\\n past: '%sपूर्वी',\\n s: relativeTimeMr,\\n m: relativeTimeMr,\\n mm: relativeTimeMr,\\n h: relativeTimeMr,\\n hh: relativeTimeMr,\\n d: relativeTimeMr,\\n dd: relativeTimeMr,\\n M: relativeTimeMr,\\n MM: relativeTimeMr,\\n y: relativeTimeMr,\\n yy: relativeTimeMr\\n },\\n preparse: function (string) {\\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'रात्री') {\\n return hour < 4 ? hour : hour + 12;\\n } else if (meridiem === 'सकाळी') {\\n return hour;\\n } else if (meridiem === 'दुपारी') {\\n return hour >= 10 ? hour : hour + 12;\\n } else if (meridiem === 'सायंकाळी') {\\n return hour + 12;\\n }\\n },\\n meridiem: function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'रात्री';\\n } else if (hour < 10) {\\n return 'सकाळी';\\n } else if (hour < 17) {\\n return 'दुपारी';\\n } else if (hour < 20) {\\n return 'सायंकाळी';\\n } else {\\n return 'रात्री';\\n }\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn mr;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 141 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Malay [ms]\\n//! author : Weldan Jamili : https://github.com/weldan\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar ms = moment.defineLocale('ms', {\\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\\n longDateFormat : {\\n LT : 'HH.mm',\\n LTS : 'HH.mm.ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY [pukul] HH.mm',\\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\\n },\\n meridiemParse: /pagi|tengahari|petang|malam/,\\n meridiemHour: function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'pagi') {\\n return hour;\\n } else if (meridiem === 'tengahari') {\\n return hour >= 11 ? hour : hour + 12;\\n } else if (meridiem === 'petang' || meridiem === 'malam') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 11) {\\n return 'pagi';\\n } else if (hours < 15) {\\n return 'tengahari';\\n } else if (hours < 19) {\\n return 'petang';\\n } else {\\n return 'malam';\\n }\\n },\\n calendar : {\\n sameDay : '[Hari ini pukul] LT',\\n nextDay : '[Esok pukul] LT',\\n nextWeek : 'dddd [pukul] LT',\\n lastDay : '[Kelmarin pukul] LT',\\n lastWeek : 'dddd [lepas pukul] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'dalam %s',\\n past : '%s yang lepas',\\n s : 'beberapa saat',\\n m : 'seminit',\\n mm : '%d minit',\\n h : 'sejam',\\n hh : '%d jam',\\n d : 'sehari',\\n dd : '%d hari',\\n M : 'sebulan',\\n MM : '%d bulan',\\n y : 'setahun',\\n yy : '%d tahun'\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn ms;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 142 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Malay [ms-my]\\n//! note : DEPRECATED, the correct one is [ms]\\n//! author : Weldan Jamili : https://github.com/weldan\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar msMy = moment.defineLocale('ms-my', {\\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\\n longDateFormat : {\\n LT : 'HH.mm',\\n LTS : 'HH.mm.ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY [pukul] HH.mm',\\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\\n },\\n meridiemParse: /pagi|tengahari|petang|malam/,\\n meridiemHour: function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'pagi') {\\n return hour;\\n } else if (meridiem === 'tengahari') {\\n return hour >= 11 ? hour : hour + 12;\\n } else if (meridiem === 'petang' || meridiem === 'malam') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 11) {\\n return 'pagi';\\n } else if (hours < 15) {\\n return 'tengahari';\\n } else if (hours < 19) {\\n return 'petang';\\n } else {\\n return 'malam';\\n }\\n },\\n calendar : {\\n sameDay : '[Hari ini pukul] LT',\\n nextDay : '[Esok pukul] LT',\\n nextWeek : 'dddd [pukul] LT',\\n lastDay : '[Kelmarin pukul] LT',\\n lastWeek : 'dddd [lepas pukul] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'dalam %s',\\n past : '%s yang lepas',\\n s : 'beberapa saat',\\n m : 'seminit',\\n mm : '%d minit',\\n h : 'sejam',\\n hh : '%d jam',\\n d : 'sehari',\\n dd : '%d hari',\\n M : 'sebulan',\\n MM : '%d bulan',\\n y : 'setahun',\\n yy : '%d tahun'\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn msMy;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 143 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Burmese [my]\\n//! author : Squar team, mysquar.com\\n//! author : David Rossellat : https://github.com/gholadr\\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '၁',\\n '2': '၂',\\n '3': '၃',\\n '4': '၄',\\n '5': '၅',\\n '6': '၆',\\n '7': '၇',\\n '8': '၈',\\n '9': '၉',\\n '0': '၀'\\n};\\nvar numberMap = {\\n '၁': '1',\\n '၂': '2',\\n '၃': '3',\\n '၄': '4',\\n '၅': '5',\\n '၆': '6',\\n '၇': '7',\\n '၈': '8',\\n '၉': '9',\\n '၀': '0'\\n};\\n\\nvar my = moment.defineLocale('my', {\\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\\n\\n longDateFormat: {\\n LT: 'HH:mm',\\n LTS: 'HH:mm:ss',\\n L: 'DD/MM/YYYY',\\n LL: 'D MMMM YYYY',\\n LLL: 'D MMMM YYYY HH:mm',\\n LLLL: 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar: {\\n sameDay: '[ယနေ.] LT [မှာ]',\\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\\n nextWeek: 'dddd LT [မှာ]',\\n lastDay: '[မနေ.က] LT [မှာ]',\\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\\n sameElse: 'L'\\n },\\n relativeTime: {\\n future: 'လာမည့် %s မှာ',\\n past: 'လွန်ခဲ့သော %s က',\\n s: 'စက္ကန်.အနည်းငယ်',\\n m: 'တစ်မိနစ်',\\n mm: '%d မိနစ်',\\n h: 'တစ်နာရီ',\\n hh: '%d နာရီ',\\n d: 'တစ်ရက်',\\n dd: '%d ရက်',\\n M: 'တစ်လ',\\n MM: '%d လ',\\n y: 'တစ်နှစ်',\\n yy: '%d နှစ်'\\n },\\n preparse: function (string) {\\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n week: {\\n dow: 1, // Monday is the first day of the week.\\n doy: 4 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn my;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 144 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Norwegian Bokmål [nb]\\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\\n//! Sigurd Gartmann : https://github.com/sigurdga\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar nb = moment.defineLocale('nb', {\\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\\n monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\\n weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY [kl.] HH:mm',\\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\\n },\\n calendar : {\\n sameDay: '[i dag kl.] LT',\\n nextDay: '[i morgen kl.] LT',\\n nextWeek: 'dddd [kl.] LT',\\n lastDay: '[i går kl.] LT',\\n lastWeek: '[forrige] dddd [kl.] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'om %s',\\n past : '%s siden',\\n s : 'noen sekunder',\\n m : 'ett minutt',\\n mm : '%d minutter',\\n h : 'en time',\\n hh : '%d timer',\\n d : 'en dag',\\n dd : '%d dager',\\n M : 'en måned',\\n MM : '%d måneder',\\n y : 'ett år',\\n yy : '%d år'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn nb;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 145 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Nepalese [ne]\\n//! author : suvash : https://github.com/suvash\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '१',\\n '2': '२',\\n '3': '३',\\n '4': '४',\\n '5': '५',\\n '6': '६',\\n '7': '७',\\n '8': '८',\\n '9': '९',\\n '0': '०'\\n};\\nvar numberMap = {\\n '१': '1',\\n '२': '2',\\n '३': '3',\\n '४': '4',\\n '५': '5',\\n '६': '6',\\n '७': '7',\\n '८': '8',\\n '९': '9',\\n '०': '0'\\n};\\n\\nvar ne = moment.defineLocale('ne', {\\n months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\\n monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\\n weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\\n weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'Aको h:mm बजे',\\n LTS : 'Aको h:mm:ss बजे',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, Aको h:mm बजे',\\n LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\\n },\\n preparse: function (string) {\\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'राति') {\\n return hour < 4 ? hour : hour + 12;\\n } else if (meridiem === 'बिहान') {\\n return hour;\\n } else if (meridiem === 'दिउँसो') {\\n return hour >= 10 ? hour : hour + 12;\\n } else if (meridiem === 'साँझ') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 3) {\\n return 'राति';\\n } else if (hour < 12) {\\n return 'बिहान';\\n } else if (hour < 16) {\\n return 'दिउँसो';\\n } else if (hour < 20) {\\n return 'साँझ';\\n } else {\\n return 'राति';\\n }\\n },\\n calendar : {\\n sameDay : '[आज] LT',\\n nextDay : '[भोलि] LT',\\n nextWeek : '[आउँदो] dddd[,] LT',\\n lastDay : '[हिजो] LT',\\n lastWeek : '[गएको] dddd[,] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%sमा',\\n past : '%s अगाडि',\\n s : 'केही क्षण',\\n m : 'एक मिनेट',\\n mm : '%d मिनेट',\\n h : 'एक घण्टा',\\n hh : '%d घण्टा',\\n d : 'एक दिन',\\n dd : '%d दिन',\\n M : 'एक महिना',\\n MM : '%d महिना',\\n y : 'एक बर्ष',\\n yy : '%d बर्ष'\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn ne;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 146 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Dutch [nl]\\n//! author : Joris Röling : https://github.com/jorisroling\\n//! author : Jacob Middag : https://github.com/middagj\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\\n\\nvar monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\\nvar monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\\\.?|feb\\\\.?|mrt\\\\.?|apr\\\\.?|ju[nl]\\\\.?|aug\\\\.?|sep\\\\.?|okt\\\\.?|nov\\\\.?|dec\\\\.?)/i;\\n\\nvar nl = moment.defineLocale('nl', {\\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\\n monthsShort : function (m, format) {\\n if (!m) {\\n return monthsShortWithDots;\\n } else if (/-MMM-/.test(format)) {\\n return monthsShortWithoutDots[m.month()];\\n } else {\\n return monthsShortWithDots[m.month()];\\n }\\n },\\n\\n monthsRegex: monthsRegex,\\n monthsShortRegex: monthsRegex,\\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\\n monthsShortStrictRegex: /^(jan\\\\.?|feb\\\\.?|mrt\\\\.?|apr\\\\.?|mei|ju[nl]\\\\.?|aug\\\\.?|sep\\\\.?|okt\\\\.?|nov\\\\.?|dec\\\\.?)/i,\\n\\n monthsParse : monthsParse,\\n longMonthsParse : monthsParse,\\n shortMonthsParse : monthsParse,\\n\\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD-MM-YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[vandaag om] LT',\\n nextDay: '[morgen om] LT',\\n nextWeek: 'dddd [om] LT',\\n lastDay: '[gisteren om] LT',\\n lastWeek: '[afgelopen] dddd [om] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'over %s',\\n past : '%s geleden',\\n s : 'een paar seconden',\\n m : 'één minuut',\\n mm : '%d minuten',\\n h : 'één uur',\\n hh : '%d uur',\\n d : 'één dag',\\n dd : '%d dagen',\\n M : 'één maand',\\n MM : '%d maanden',\\n y : 'één jaar',\\n yy : '%d jaar'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(ste|de)/,\\n ordinal : function (number) {\\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn nl;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 147 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Dutch (Belgium) [nl-be]\\n//! author : Joris Röling : https://github.com/jorisroling\\n//! author : Jacob Middag : https://github.com/middagj\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\\n\\nvar monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\\nvar monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\\\.?|feb\\\\.?|mrt\\\\.?|apr\\\\.?|ju[nl]\\\\.?|aug\\\\.?|sep\\\\.?|okt\\\\.?|nov\\\\.?|dec\\\\.?)/i;\\n\\nvar nlBe = moment.defineLocale('nl-be', {\\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\\n monthsShort : function (m, format) {\\n if (!m) {\\n return monthsShortWithDots;\\n } else if (/-MMM-/.test(format)) {\\n return monthsShortWithoutDots[m.month()];\\n } else {\\n return monthsShortWithDots[m.month()];\\n }\\n },\\n\\n monthsRegex: monthsRegex,\\n monthsShortRegex: monthsRegex,\\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\\n monthsShortStrictRegex: /^(jan\\\\.?|feb\\\\.?|mrt\\\\.?|apr\\\\.?|mei|ju[nl]\\\\.?|aug\\\\.?|sep\\\\.?|okt\\\\.?|nov\\\\.?|dec\\\\.?)/i,\\n\\n monthsParse : monthsParse,\\n longMonthsParse : monthsParse,\\n shortMonthsParse : monthsParse,\\n\\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[vandaag om] LT',\\n nextDay: '[morgen om] LT',\\n nextWeek: 'dddd [om] LT',\\n lastDay: '[gisteren om] LT',\\n lastWeek: '[afgelopen] dddd [om] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'over %s',\\n past : '%s geleden',\\n s : 'een paar seconden',\\n m : 'één minuut',\\n mm : '%d minuten',\\n h : 'één uur',\\n hh : '%d uur',\\n d : 'één dag',\\n dd : '%d dagen',\\n M : 'één maand',\\n MM : '%d maanden',\\n y : 'één jaar',\\n yy : '%d jaar'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(ste|de)/,\\n ordinal : function (number) {\\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn nlBe;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 148 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Nynorsk [nn]\\n//! author : https://github.com/mechuwind\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar nn = moment.defineLocale('nn', {\\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\\n weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\\n weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\\n weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY [kl.] H:mm',\\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\\n },\\n calendar : {\\n sameDay: '[I dag klokka] LT',\\n nextDay: '[I morgon klokka] LT',\\n nextWeek: 'dddd [klokka] LT',\\n lastDay: '[I går klokka] LT',\\n lastWeek: '[Føregåande] dddd [klokka] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'om %s',\\n past : '%s sidan',\\n s : 'nokre sekund',\\n m : 'eit minutt',\\n mm : '%d minutt',\\n h : 'ein time',\\n hh : '%d timar',\\n d : 'ein dag',\\n dd : '%d dagar',\\n M : 'ein månad',\\n MM : '%d månader',\\n y : 'eit år',\\n yy : '%d år'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn nn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 149 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Punjabi (India) [pa-in]\\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '੧',\\n '2': '੨',\\n '3': '੩',\\n '4': '੪',\\n '5': '੫',\\n '6': '੬',\\n '7': '੭',\\n '8': '੮',\\n '9': '੯',\\n '0': '੦'\\n};\\nvar numberMap = {\\n '੧': '1',\\n '੨': '2',\\n '੩': '3',\\n '੪': '4',\\n '੫': '5',\\n '੬': '6',\\n '੭': '7',\\n '੮': '8',\\n '੯': '9',\\n '੦': '0'\\n};\\n\\nvar paIn = moment.defineLocale('pa-in', {\\n // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.\\n months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\\n monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\\n weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\\n weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\\n weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm ਵਜੇ',\\n LTS : 'A h:mm:ss ਵਜੇ',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\\n },\\n calendar : {\\n sameDay : '[ਅਜ] LT',\\n nextDay : '[ਕਲ] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[ਕਲ] LT',\\n lastWeek : '[ਪਿਛਲੇ] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s ਵਿੱਚ',\\n past : '%s ਪਿਛਲੇ',\\n s : 'ਕੁਝ ਸਕਿੰਟ',\\n m : 'ਇਕ ਮਿੰਟ',\\n mm : '%d ਮਿੰਟ',\\n h : 'ਇੱਕ ਘੰਟਾ',\\n hh : '%d ਘੰਟੇ',\\n d : 'ਇੱਕ ਦਿਨ',\\n dd : '%d ਦਿਨ',\\n M : 'ਇੱਕ ਮਹੀਨਾ',\\n MM : '%d ਮਹੀਨੇ',\\n y : 'ਇੱਕ ਸਾਲ',\\n yy : '%d ਸਾਲ'\\n },\\n preparse: function (string) {\\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'ਰਾਤ') {\\n return hour < 4 ? hour : hour + 12;\\n } else if (meridiem === 'ਸਵੇਰ') {\\n return hour;\\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\\n return hour >= 10 ? hour : hour + 12;\\n } else if (meridiem === 'ਸ਼ਾਮ') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'ਰਾਤ';\\n } else if (hour < 10) {\\n return 'ਸਵੇਰ';\\n } else if (hour < 17) {\\n return 'ਦੁਪਹਿਰ';\\n } else if (hour < 20) {\\n return 'ਸ਼ਾਮ';\\n } else {\\n return 'ਰਾਤ';\\n }\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn paIn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 150 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Polish [pl]\\n//! author : Rafal Hirsz : https://github.com/evoL\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\\nvar monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\\nfunction plural(n) {\\n return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\\n}\\nfunction translate(number, withoutSuffix, key) {\\n var result = number + ' ';\\n switch (key) {\\n case 'm':\\n return withoutSuffix ? 'minuta' : 'minutę';\\n case 'mm':\\n return result + (plural(number) ? 'minuty' : 'minut');\\n case 'h':\\n return withoutSuffix ? 'godzina' : 'godzinę';\\n case 'hh':\\n return result + (plural(number) ? 'godziny' : 'godzin');\\n case 'MM':\\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\\n case 'yy':\\n return result + (plural(number) ? 'lata' : 'lat');\\n }\\n}\\n\\nvar pl = moment.defineLocale('pl', {\\n months : function (momentToFormat, format) {\\n if (!momentToFormat) {\\n return monthsNominative;\\n } else if (format === '') {\\n // Hack: if format empty we know this is used to generate\\n // RegExp by moment. Give then back both valid forms of months\\n // in RegExp ready format.\\n return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\\n } else if (/D MMMM/.test(format)) {\\n return monthsSubjective[momentToFormat.month()];\\n } else {\\n return monthsNominative[momentToFormat.month()];\\n }\\n },\\n monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\\n weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\\n weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\\n weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[Dziś o] LT',\\n nextDay: '[Jutro o] LT',\\n nextWeek: '[W] dddd [o] LT',\\n lastDay: '[Wczoraj o] LT',\\n lastWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[W zeszłą niedzielę o] LT';\\n case 3:\\n return '[W zeszłą środę o] LT';\\n case 6:\\n return '[W zeszłą sobotę o] LT';\\n default:\\n return '[W zeszły] dddd [o] LT';\\n }\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'za %s',\\n past : '%s temu',\\n s : 'kilka sekund',\\n m : translate,\\n mm : translate,\\n h : translate,\\n hh : translate,\\n d : '1 dzień',\\n dd : '%d dni',\\n M : 'miesiąc',\\n MM : translate,\\n y : 'rok',\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn pl;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 151 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Portuguese [pt]\\n//! author : Jefferson : https://github.com/jalex79\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar pt = moment.defineLocale('pt', {\\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\\n weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),\\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D [de] MMMM [de] YYYY',\\n LLL : 'D [de] MMMM [de] YYYY HH:mm',\\n LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[Hoje às] LT',\\n nextDay: '[Amanhã às] LT',\\n nextWeek: 'dddd [às] LT',\\n lastDay: '[Ontem às] LT',\\n lastWeek: function () {\\n return (this.day() === 0 || this.day() === 6) ?\\n '[Último] dddd [às] LT' : // Saturday + Sunday\\n '[Última] dddd [às] LT'; // Monday - Friday\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'em %s',\\n past : 'há %s',\\n s : 'segundos',\\n m : 'um minuto',\\n mm : '%d minutos',\\n h : 'uma hora',\\n hh : '%d horas',\\n d : 'um dia',\\n dd : '%d dias',\\n M : 'um mês',\\n MM : '%d meses',\\n y : 'um ano',\\n yy : '%d anos'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}º/,\\n ordinal : '%dº',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn pt;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 152 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Portuguese (Brazil) [pt-br]\\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar ptBr = moment.defineLocale('pt-br', {\\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D [de] MMMM [de] YYYY',\\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\\n },\\n calendar : {\\n sameDay: '[Hoje às] LT',\\n nextDay: '[Amanhã às] LT',\\n nextWeek: 'dddd [às] LT',\\n lastDay: '[Ontem às] LT',\\n lastWeek: function () {\\n return (this.day() === 0 || this.day() === 6) ?\\n '[Último] dddd [às] LT' : // Saturday + Sunday\\n '[Última] dddd [às] LT'; // Monday - Friday\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'em %s',\\n past : '%s atrás',\\n s : 'poucos segundos',\\n m : 'um minuto',\\n mm : '%d minutos',\\n h : 'uma hora',\\n hh : '%d horas',\\n d : 'um dia',\\n dd : '%d dias',\\n M : 'um mês',\\n MM : '%d meses',\\n y : 'um ano',\\n yy : '%d anos'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}º/,\\n ordinal : '%dº'\\n});\\n\\nreturn ptBr;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 153 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Romanian [ro]\\n//! author : Vlad Gurdiga : https://github.com/gurdiga\\n//! author : Valentin Agachi : https://github.com/avaly\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\\n var format = {\\n 'mm': 'minute',\\n 'hh': 'ore',\\n 'dd': 'zile',\\n 'MM': 'luni',\\n 'yy': 'ani'\\n },\\n separator = ' ';\\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\\n separator = ' de ';\\n }\\n return number + separator + format[key];\\n}\\n\\nvar ro = moment.defineLocale('ro', {\\n months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\\n monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\\n weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\\n weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY H:mm',\\n LLLL : 'dddd, D MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay: '[azi la] LT',\\n nextDay: '[mâine la] LT',\\n nextWeek: 'dddd [la] LT',\\n lastDay: '[ieri la] LT',\\n lastWeek: '[fosta] dddd [la] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'peste %s',\\n past : '%s în urmă',\\n s : 'câteva secunde',\\n m : 'un minut',\\n mm : relativeTimeWithPlural,\\n h : 'o oră',\\n hh : relativeTimeWithPlural,\\n d : 'o zi',\\n dd : relativeTimeWithPlural,\\n M : 'o lună',\\n MM : relativeTimeWithPlural,\\n y : 'un an',\\n yy : relativeTimeWithPlural\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn ro;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 154 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Russian [ru]\\n//! author : Viktorminator : https://github.com/Viktorminator\\n//! Author : Menelion Elensúle : https://github.com/Oire\\n//! author : Коренберг Марк : https://github.com/socketpair\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction plural(word, num) {\\n var forms = word.split('_');\\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\\n}\\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\\n var format = {\\n 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\\n 'hh': 'час_часа_часов',\\n 'dd': 'день_дня_дней',\\n 'MM': 'месяц_месяца_месяцев',\\n 'yy': 'год_года_лет'\\n };\\n if (key === 'm') {\\n return withoutSuffix ? 'минута' : 'минуту';\\n }\\n else {\\n return number + ' ' + plural(format[key], +number);\\n }\\n}\\nvar monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\\n\\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\\nvar ru = moment.defineLocale('ru', {\\n months : {\\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\\n },\\n monthsShort : {\\n // по CLDR именно \\\"июл.\\\" и \\\"июн.\\\", но какой смысл менять букву на точку ?\\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\\n },\\n weekdays : {\\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\\n isFormat: /\\\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\\\] ?dddd/\\n },\\n weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\\n weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\\n monthsParse : monthsParse,\\n longMonthsParse : monthsParse,\\n shortMonthsParse : monthsParse,\\n\\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\\n monthsRegex: /^(январ[ья]|янв\\\\.?|феврал[ья]|февр?\\\\.?|марта?|мар\\\\.?|апрел[ья]|апр\\\\.?|ма[йя]|июн[ья]|июн\\\\.?|июл[ья]|июл\\\\.?|августа?|авг\\\\.?|сентябр[ья]|сент?\\\\.?|октябр[ья]|окт\\\\.?|ноябр[ья]|нояб?\\\\.?|декабр[ья]|дек\\\\.?)/i,\\n\\n // копия предыдущего\\n monthsShortRegex: /^(январ[ья]|янв\\\\.?|феврал[ья]|февр?\\\\.?|марта?|мар\\\\.?|апрел[ья]|апр\\\\.?|ма[йя]|июн[ья]|июн\\\\.?|июл[ья]|июл\\\\.?|августа?|авг\\\\.?|сентябр[ья]|сент?\\\\.?|октябр[ья]|окт\\\\.?|ноябр[ья]|нояб?\\\\.?|декабр[ья]|дек\\\\.?)/i,\\n\\n // полные названия с падежами\\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\\n\\n // Выражение, которое соотвествует только сокращённым формам\\n monthsShortStrictRegex: /^(янв\\\\.|февр?\\\\.|мар[т.]|апр\\\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\\\.|сент?\\\\.|окт\\\\.|нояб?\\\\.|дек\\\\.)/i,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY г.',\\n LLL : 'D MMMM YYYY г., HH:mm',\\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\\n },\\n calendar : {\\n sameDay: '[Сегодня в] LT',\\n nextDay: '[Завтра в] LT',\\n lastDay: '[Вчера в] LT',\\n nextWeek: function (now) {\\n if (now.week() !== this.week()) {\\n switch (this.day()) {\\n case 0:\\n return '[В следующее] dddd [в] LT';\\n case 1:\\n case 2:\\n case 4:\\n return '[В следующий] dddd [в] LT';\\n case 3:\\n case 5:\\n case 6:\\n return '[В следующую] dddd [в] LT';\\n }\\n } else {\\n if (this.day() === 2) {\\n return '[Во] dddd [в] LT';\\n } else {\\n return '[В] dddd [в] LT';\\n }\\n }\\n },\\n lastWeek: function (now) {\\n if (now.week() !== this.week()) {\\n switch (this.day()) {\\n case 0:\\n return '[В прошлое] dddd [в] LT';\\n case 1:\\n case 2:\\n case 4:\\n return '[В прошлый] dddd [в] LT';\\n case 3:\\n case 5:\\n case 6:\\n return '[В прошлую] dddd [в] LT';\\n }\\n } else {\\n if (this.day() === 2) {\\n return '[Во] dddd [в] LT';\\n } else {\\n return '[В] dddd [в] LT';\\n }\\n }\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'через %s',\\n past : '%s назад',\\n s : 'несколько секунд',\\n m : relativeTimeWithPlural,\\n mm : relativeTimeWithPlural,\\n h : 'час',\\n hh : relativeTimeWithPlural,\\n d : 'день',\\n dd : relativeTimeWithPlural,\\n M : 'месяц',\\n MM : relativeTimeWithPlural,\\n y : 'год',\\n yy : relativeTimeWithPlural\\n },\\n meridiemParse: /ночи|утра|дня|вечера/i,\\n isPM : function (input) {\\n return /^(дня|вечера)$/.test(input);\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'ночи';\\n } else if (hour < 12) {\\n return 'утра';\\n } else if (hour < 17) {\\n return 'дня';\\n } else {\\n return 'вечера';\\n }\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(й|го|я)/,\\n ordinal: function (number, period) {\\n switch (period) {\\n case 'M':\\n case 'd':\\n case 'DDD':\\n return number + '-й';\\n case 'D':\\n return number + '-го';\\n case 'w':\\n case 'W':\\n return number + '-я';\\n default:\\n return number;\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn ru;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 155 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Sindhi [sd]\\n//! author : Narain Sagar : https://github.com/narainsagar\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar months = [\\n 'جنوري',\\n 'فيبروري',\\n 'مارچ',\\n 'اپريل',\\n 'مئي',\\n 'جون',\\n 'جولاءِ',\\n 'آگسٽ',\\n 'سيپٽمبر',\\n 'آڪٽوبر',\\n 'نومبر',\\n 'ڊسمبر'\\n];\\nvar days = [\\n 'آچر',\\n 'سومر',\\n 'اڱارو',\\n 'اربع',\\n 'خميس',\\n 'جمع',\\n 'ڇنڇر'\\n];\\n\\nvar sd = moment.defineLocale('sd', {\\n months : months,\\n monthsShort : months,\\n weekdays : days,\\n weekdaysShort : days,\\n weekdaysMin : days,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd، D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /صبح|شام/,\\n isPM : function (input) {\\n return 'شام' === input;\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'صبح';\\n }\\n return 'شام';\\n },\\n calendar : {\\n sameDay : '[اڄ] LT',\\n nextDay : '[سڀاڻي] LT',\\n nextWeek : 'dddd [اڳين هفتي تي] LT',\\n lastDay : '[ڪالهه] LT',\\n lastWeek : '[گزريل هفتي] dddd [تي] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s پوء',\\n past : '%s اڳ',\\n s : 'چند سيڪنڊ',\\n m : 'هڪ منٽ',\\n mm : '%d منٽ',\\n h : 'هڪ ڪلاڪ',\\n hh : '%d ڪلاڪ',\\n d : 'هڪ ڏينهن',\\n dd : '%d ڏينهن',\\n M : 'هڪ مهينو',\\n MM : '%d مهينا',\\n y : 'هڪ سال',\\n yy : '%d سال'\\n },\\n preparse: function (string) {\\n return string.replace(/،/g, ',');\\n },\\n postformat: function (string) {\\n return string.replace(/,/g, '،');\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn sd;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 156 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Northern Sami [se]\\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\n\\nvar se = moment.defineLocale('se', {\\n 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('_'),\\n monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\\n weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\\n weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\\n weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'MMMM D. [b.] YYYY',\\n LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\\n LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\\n },\\n calendar : {\\n sameDay: '[otne ti] LT',\\n nextDay: '[ihttin ti] LT',\\n nextWeek: 'dddd [ti] LT',\\n lastDay: '[ikte ti] LT',\\n lastWeek: '[ovddit] dddd [ti] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : '%s geažes',\\n past : 'maŋit %s',\\n s : 'moadde sekunddat',\\n m : 'okta minuhta',\\n mm : '%d minuhtat',\\n h : 'okta diimmu',\\n hh : '%d diimmut',\\n d : 'okta beaivi',\\n dd : '%d beaivvit',\\n M : 'okta mánnu',\\n MM : '%d mánut',\\n y : 'okta jahki',\\n yy : '%d jagit'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn se;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 157 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Sinhalese [si]\\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\n/*jshint -W100*/\\nvar si = moment.defineLocale('si', {\\n months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්\u200dරේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\\n monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\\n weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්\u200dරහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\\n weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්\u200dරහ_සිකු_සෙන'.split('_'),\\n weekdaysMin : 'ඉ_ස_අ_බ_බ්\u200dර_සි_සෙ'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'a h:mm',\\n LTS : 'a h:mm:ss',\\n L : 'YYYY/MM/DD',\\n LL : 'YYYY MMMM D',\\n LLL : 'YYYY MMMM D, a h:mm',\\n LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\\n },\\n calendar : {\\n sameDay : '[අද] LT[ට]',\\n nextDay : '[හෙට] LT[ට]',\\n nextWeek : 'dddd LT[ට]',\\n lastDay : '[ඊයේ] LT[ට]',\\n lastWeek : '[පසුගිය] dddd LT[ට]',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%sකින්',\\n past : '%sකට පෙර',\\n s : 'තත්පර කිහිපය',\\n m : 'මිනිත්තුව',\\n mm : 'මිනිත්තු %d',\\n h : 'පැය',\\n hh : 'පැය %d',\\n d : 'දිනය',\\n dd : 'දින %d',\\n M : 'මාසය',\\n MM : 'මාස %d',\\n y : 'වසර',\\n yy : 'වසර %d'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2} වැනි/,\\n ordinal : function (number) {\\n return number + ' වැනි';\\n },\\n meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\\n isPM : function (input) {\\n return input === 'ප.ව.' || input === 'පස් වරු';\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours > 11) {\\n return isLower ? 'ප.ව.' : 'පස් වරු';\\n } else {\\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\\n }\\n }\\n});\\n\\nreturn si;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 158 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Slovak [sk]\\n//! author : Martin Minka : https://github.com/k2s\\n//! based on work of petrbela : https://github.com/petrbela\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\\nvar monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\\nfunction plural(n) {\\n return (n > 1) && (n < 5);\\n}\\nfunction translate(number, withoutSuffix, key, isFuture) {\\n var result = number + ' ';\\n switch (key) {\\n case 's': // a few seconds / in a few seconds / a few seconds ago\\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\\n case 'm': // a minute / in a minute / a minute ago\\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'minúty' : 'minút');\\n } else {\\n return result + 'minútami';\\n }\\n break;\\n case 'h': // an hour / in an hour / an hour ago\\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'hodiny' : 'hodín');\\n } else {\\n return result + 'hodinami';\\n }\\n break;\\n case 'd': // a day / in a day / a day ago\\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\\n case 'dd': // 9 days / in 9 days / 9 days ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'dni' : 'dní');\\n } else {\\n return result + 'dňami';\\n }\\n break;\\n case 'M': // a month / in a month / a month ago\\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\\n case 'MM': // 9 months / in 9 months / 9 months ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\\n } else {\\n return result + 'mesiacmi';\\n }\\n break;\\n case 'y': // a year / in a year / a year ago\\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\\n case 'yy': // 9 years / in 9 years / 9 years ago\\n if (withoutSuffix || isFuture) {\\n return result + (plural(number) ? 'roky' : 'rokov');\\n } else {\\n return result + 'rokmi';\\n }\\n break;\\n }\\n}\\n\\nvar sk = moment.defineLocale('sk', {\\n months : months,\\n monthsShort : monthsShort,\\n weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\\n weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\\n weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\\n longDateFormat : {\\n LT: 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY H:mm',\\n LLLL : 'dddd D. MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay: '[dnes o] LT',\\n nextDay: '[zajtra o] LT',\\n nextWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[v nedeľu o] LT';\\n case 1:\\n case 2:\\n return '[v] dddd [o] LT';\\n case 3:\\n return '[v stredu o] LT';\\n case 4:\\n return '[vo štvrtok o] LT';\\n case 5:\\n return '[v piatok o] LT';\\n case 6:\\n return '[v sobotu o] LT';\\n }\\n },\\n lastDay: '[včera o] LT',\\n lastWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[minulú nedeľu o] LT';\\n case 1:\\n case 2:\\n return '[minulý] dddd [o] LT';\\n case 3:\\n return '[minulú stredu o] LT';\\n case 4:\\n case 5:\\n return '[minulý] dddd [o] LT';\\n case 6:\\n return '[minulú sobotu o] LT';\\n }\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'za %s',\\n past : 'pred %s',\\n s : translate,\\n m : translate,\\n mm : translate,\\n h : translate,\\n hh : translate,\\n d : translate,\\n dd : translate,\\n M : translate,\\n MM : translate,\\n y : translate,\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn sk;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 159 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Slovenian [sl]\\n//! author : Robert Sedovšek : https://github.com/sedovsek\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var result = number + ' ';\\n switch (key) {\\n case 's':\\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\\n case 'm':\\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\\n case 'mm':\\n if (number === 1) {\\n result += withoutSuffix ? 'minuta' : 'minuto';\\n } else if (number === 2) {\\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\\n } else if (number < 5) {\\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\\n } else {\\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\\n }\\n return result;\\n case 'h':\\n return withoutSuffix ? 'ena ura' : 'eno uro';\\n case 'hh':\\n if (number === 1) {\\n result += withoutSuffix ? 'ura' : 'uro';\\n } else if (number === 2) {\\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\\n } else if (number < 5) {\\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\\n } else {\\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\\n }\\n return result;\\n case 'd':\\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\\n case 'dd':\\n if (number === 1) {\\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\\n } else if (number === 2) {\\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\\n } else {\\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\\n }\\n return result;\\n case 'M':\\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\\n case 'MM':\\n if (number === 1) {\\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\\n } else if (number === 2) {\\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\\n } else if (number < 5) {\\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\\n } else {\\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\\n }\\n return result;\\n case 'y':\\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\\n case 'yy':\\n if (number === 1) {\\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\\n } else if (number === 2) {\\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\\n } else if (number < 5) {\\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\\n } else {\\n result += withoutSuffix || isFuture ? 'let' : 'leti';\\n }\\n return result;\\n }\\n}\\n\\nvar sl = moment.defineLocale('sl', {\\n months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\\n weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\\n weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM YYYY',\\n LLL : 'D. MMMM YYYY H:mm',\\n LLLL : 'dddd, D. MMMM YYYY H:mm'\\n },\\n calendar : {\\n sameDay : '[danes ob] LT',\\n nextDay : '[jutri ob] LT',\\n\\n nextWeek : function () {\\n switch (this.day()) {\\n case 0:\\n return '[v] [nedeljo] [ob] LT';\\n case 3:\\n return '[v] [sredo] [ob] LT';\\n case 6:\\n return '[v] [soboto] [ob] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[v] dddd [ob] LT';\\n }\\n },\\n lastDay : '[včeraj ob] LT',\\n lastWeek : function () {\\n switch (this.day()) {\\n case 0:\\n return '[prejšnjo] [nedeljo] [ob] LT';\\n case 3:\\n return '[prejšnjo] [sredo] [ob] LT';\\n case 6:\\n return '[prejšnjo] [soboto] [ob] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[prejšnji] dddd [ob] LT';\\n }\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'čez %s',\\n past : 'pred %s',\\n s : processRelativeTime,\\n m : processRelativeTime,\\n mm : processRelativeTime,\\n h : processRelativeTime,\\n hh : processRelativeTime,\\n d : processRelativeTime,\\n dd : processRelativeTime,\\n M : processRelativeTime,\\n MM : processRelativeTime,\\n y : processRelativeTime,\\n yy : processRelativeTime\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn sl;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 160 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Albanian [sq]\\n//! author : Flakërim Ismani : https://github.com/flakerimi\\n//! author : Menelion Elensúle : https://github.com/Oire\\n//! author : Oerd Cukalla : https://github.com/oerd\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar sq = moment.defineLocale('sq', {\\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\\n weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\\n weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\\n weekdaysParseExact : true,\\n meridiemParse: /PD|MD/,\\n isPM: function (input) {\\n return input.charAt(0) === 'M';\\n },\\n meridiem : function (hours, minutes, isLower) {\\n return hours < 12 ? 'PD' : 'MD';\\n },\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[Sot në] LT',\\n nextDay : '[Nesër në] LT',\\n nextWeek : 'dddd [në] LT',\\n lastDay : '[Dje në] LT',\\n lastWeek : 'dddd [e kaluar në] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'në %s',\\n past : '%s më parë',\\n s : 'disa sekonda',\\n m : 'një minutë',\\n mm : '%d minuta',\\n h : 'një orë',\\n hh : '%d orë',\\n d : 'një ditë',\\n dd : '%d ditë',\\n M : 'një muaj',\\n MM : '%d muaj',\\n y : 'një vit',\\n yy : '%d vite'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn sq;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 161 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Serbian [sr]\\n//! author : Milan Janačković : https://github.com/milan-j\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar translator = {\\n words: { //Different grammatical cases\\n m: ['jedan minut', 'jedne minute'],\\n mm: ['minut', 'minute', 'minuta'],\\n h: ['jedan sat', 'jednog sata'],\\n hh: ['sat', 'sata', 'sati'],\\n dd: ['dan', 'dana', 'dana'],\\n MM: ['mesec', 'meseca', 'meseci'],\\n yy: ['godina', 'godine', 'godina']\\n },\\n correctGrammaticalCase: function (number, wordKey) {\\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\\n },\\n translate: function (number, withoutSuffix, key) {\\n var wordKey = translator.words[key];\\n if (key.length === 1) {\\n return withoutSuffix ? wordKey[0] : wordKey[1];\\n } else {\\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\\n }\\n }\\n};\\n\\nvar sr = moment.defineLocale('sr', {\\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\\n monthsParseExact: true,\\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat: {\\n LT: 'H:mm',\\n LTS : 'H:mm:ss',\\n L: 'DD.MM.YYYY',\\n LL: 'D. MMMM YYYY',\\n LLL: 'D. MMMM YYYY H:mm',\\n LLLL: 'dddd, D. MMMM YYYY H:mm'\\n },\\n calendar: {\\n sameDay: '[danas u] LT',\\n nextDay: '[sutra u] LT',\\n nextWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[u] [nedelju] [u] LT';\\n case 3:\\n return '[u] [sredu] [u] LT';\\n case 6:\\n return '[u] [subotu] [u] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[u] dddd [u] LT';\\n }\\n },\\n lastDay : '[juče u] LT',\\n lastWeek : function () {\\n var lastWeekDays = [\\n '[prošle] [nedelje] [u] LT',\\n '[prošlog] [ponedeljka] [u] LT',\\n '[prošlog] [utorka] [u] LT',\\n '[prošle] [srede] [u] LT',\\n '[prošlog] [četvrtka] [u] LT',\\n '[prošlog] [petka] [u] LT',\\n '[prošle] [subote] [u] LT'\\n ];\\n return lastWeekDays[this.day()];\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'za %s',\\n past : 'pre %s',\\n s : 'nekoliko sekundi',\\n m : translator.translate,\\n mm : translator.translate,\\n h : translator.translate,\\n hh : translator.translate,\\n d : 'dan',\\n dd : translator.translate,\\n M : 'mesec',\\n MM : translator.translate,\\n y : 'godinu',\\n yy : translator.translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn sr;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 162 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Serbian Cyrillic [sr-cyrl]\\n//! author : Milan Janačković : https://github.com/milan-j\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar translator = {\\n words: { //Different grammatical cases\\n m: ['један минут', 'једне минуте'],\\n mm: ['минут', 'минуте', 'минута'],\\n h: ['један сат', 'једног сата'],\\n hh: ['сат', 'сата', 'сати'],\\n dd: ['дан', 'дана', 'дана'],\\n MM: ['месец', 'месеца', 'месеци'],\\n yy: ['година', 'године', 'година']\\n },\\n correctGrammaticalCase: function (number, wordKey) {\\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\\n },\\n translate: function (number, withoutSuffix, key) {\\n var wordKey = translator.words[key];\\n if (key.length === 1) {\\n return withoutSuffix ? wordKey[0] : wordKey[1];\\n } else {\\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\\n }\\n }\\n};\\n\\nvar srCyrl = moment.defineLocale('sr-cyrl', {\\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\\n monthsParseExact: true,\\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat: {\\n LT: 'H:mm',\\n LTS : 'H:mm:ss',\\n L: 'DD.MM.YYYY',\\n LL: 'D. MMMM YYYY',\\n LLL: 'D. MMMM YYYY H:mm',\\n LLLL: 'dddd, D. MMMM YYYY H:mm'\\n },\\n calendar: {\\n sameDay: '[данас у] LT',\\n nextDay: '[сутра у] LT',\\n nextWeek: function () {\\n switch (this.day()) {\\n case 0:\\n return '[у] [недељу] [у] LT';\\n case 3:\\n return '[у] [среду] [у] LT';\\n case 6:\\n return '[у] [суботу] [у] LT';\\n case 1:\\n case 2:\\n case 4:\\n case 5:\\n return '[у] dddd [у] LT';\\n }\\n },\\n lastDay : '[јуче у] LT',\\n lastWeek : function () {\\n var lastWeekDays = [\\n '[прошле] [недеље] [у] LT',\\n '[прошлог] [понедељка] [у] LT',\\n '[прошлог] [уторка] [у] LT',\\n '[прошле] [среде] [у] LT',\\n '[прошлог] [четвртка] [у] LT',\\n '[прошлог] [петка] [у] LT',\\n '[прошле] [суботе] [у] LT'\\n ];\\n return lastWeekDays[this.day()];\\n },\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'за %s',\\n past : 'пре %s',\\n s : 'неколико секунди',\\n m : translator.translate,\\n mm : translator.translate,\\n h : translator.translate,\\n hh : translator.translate,\\n d : 'дан',\\n dd : translator.translate,\\n M : 'месец',\\n MM : translator.translate,\\n y : 'годину',\\n yy : translator.translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn srCyrl;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 163 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : siSwati [ss]\\n//! author : Nicolai Davies : https://github.com/nicolaidavies\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\n\\nvar ss = moment.defineLocale('ss', {\\n months : \\\"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\\\".split('_'),\\n monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\\n weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\\n weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\\n weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY h:mm A',\\n LLLL : 'dddd, D MMMM YYYY h:mm A'\\n },\\n calendar : {\\n sameDay : '[Namuhla nga] LT',\\n nextDay : '[Kusasa nga] LT',\\n nextWeek : 'dddd [nga] LT',\\n lastDay : '[Itolo nga] LT',\\n lastWeek : 'dddd [leliphelile] [nga] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'nga %s',\\n past : 'wenteka nga %s',\\n s : 'emizuzwana lomcane',\\n m : 'umzuzu',\\n mm : '%d emizuzu',\\n h : 'lihora',\\n hh : '%d emahora',\\n d : 'lilanga',\\n dd : '%d emalanga',\\n M : 'inyanga',\\n MM : '%d tinyanga',\\n y : 'umnyaka',\\n yy : '%d iminyaka'\\n },\\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 11) {\\n return 'ekuseni';\\n } else if (hours < 15) {\\n return 'emini';\\n } else if (hours < 19) {\\n return 'entsambama';\\n } else {\\n return 'ebusuku';\\n }\\n },\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'ekuseni') {\\n return hour;\\n } else if (meridiem === 'emini') {\\n return hour >= 11 ? hour : hour + 12;\\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\\n if (hour === 0) {\\n return 0;\\n }\\n return hour + 12;\\n }\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}/,\\n ordinal : '%d',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn ss;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 164 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Swedish [sv]\\n//! author : Jens Alm : https://github.com/ulmus\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar sv = moment.defineLocale('sv', {\\n months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\\n weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\\n weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\\n weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY-MM-DD',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY [kl.] HH:mm',\\n LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\\n lll : 'D MMM YYYY HH:mm',\\n llll : 'ddd D MMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[Idag] LT',\\n nextDay: '[Imorgon] LT',\\n lastDay: '[Igår] LT',\\n nextWeek: '[På] dddd LT',\\n lastWeek: '[I] dddd[s] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'om %s',\\n past : 'för %s sedan',\\n s : 'några sekunder',\\n m : 'en minut',\\n mm : '%d minuter',\\n h : 'en timme',\\n hh : '%d timmar',\\n d : 'en dag',\\n dd : '%d dagar',\\n M : 'en månad',\\n MM : '%d månader',\\n y : 'ett år',\\n yy : '%d år'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(e|a)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'e' :\\n (b === 1) ? 'a' :\\n (b === 2) ? 'a' :\\n (b === 3) ? 'e' : 'e';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn sv;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 165 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Swahili [sw]\\n//! author : Fahad Kassim : https://github.com/fadsel\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar sw = moment.defineLocale('sw', {\\n months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\\n weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\\n weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\\n weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[leo saa] LT',\\n nextDay : '[kesho saa] LT',\\n nextWeek : '[wiki ijayo] dddd [saat] LT',\\n lastDay : '[jana] LT',\\n lastWeek : '[wiki iliyopita] dddd [saat] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s baadaye',\\n past : 'tokea %s',\\n s : 'hivi punde',\\n m : 'dakika moja',\\n mm : 'dakika %d',\\n h : 'saa limoja',\\n hh : 'masaa %d',\\n d : 'siku moja',\\n dd : 'masiku %d',\\n M : 'mwezi mmoja',\\n MM : 'miezi %d',\\n y : 'mwaka mmoja',\\n yy : 'miaka %d'\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn sw;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 166 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Tamil [ta]\\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar symbolMap = {\\n '1': '௧',\\n '2': '௨',\\n '3': '௩',\\n '4': '௪',\\n '5': '௫',\\n '6': '௬',\\n '7': '௭',\\n '8': '௮',\\n '9': '௯',\\n '0': '௦'\\n};\\nvar numberMap = {\\n '௧': '1',\\n '௨': '2',\\n '௩': '3',\\n '௪': '4',\\n '௫': '5',\\n '௬': '6',\\n '௭': '7',\\n '௮': '8',\\n '௯': '9',\\n '௦': '0'\\n};\\n\\nvar ta = moment.defineLocale('ta', {\\n months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\\n monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\\n weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\\n weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\\n weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, HH:mm',\\n LLLL : 'dddd, D MMMM YYYY, HH:mm'\\n },\\n calendar : {\\n sameDay : '[இன்று] LT',\\n nextDay : '[நாளை] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[நேற்று] LT',\\n lastWeek : '[கடந்த வாரம்] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s இல்',\\n past : '%s முன்',\\n s : 'ஒரு சில விநாடிகள்',\\n m : 'ஒரு நிமிடம்',\\n mm : '%d நிமிடங்கள்',\\n h : 'ஒரு மணி நேரம்',\\n hh : '%d மணி நேரம்',\\n d : 'ஒரு நாள்',\\n dd : '%d நாட்கள்',\\n M : 'ஒரு மாதம்',\\n MM : '%d மாதங்கள்',\\n y : 'ஒரு வருடம்',\\n yy : '%d ஆண்டுகள்'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}வது/,\\n ordinal : function (number) {\\n return number + 'வது';\\n },\\n preparse: function (string) {\\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\\n return numberMap[match];\\n });\\n },\\n postformat: function (string) {\\n return string.replace(/\\\\d/g, function (match) {\\n return symbolMap[match];\\n });\\n },\\n // refer http://ta.wikipedia.org/s/1er1\\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 2) {\\n return ' யாமம்';\\n } else if (hour < 6) {\\n return ' வைகறை'; // வைகறை\\n } else if (hour < 10) {\\n return ' காலை'; // காலை\\n } else if (hour < 14) {\\n return ' நண்பகல்'; // நண்பகல்\\n } else if (hour < 18) {\\n return ' எற்பாடு'; // எற்பாடு\\n } else if (hour < 22) {\\n return ' மாலை'; // மாலை\\n } else {\\n return ' யாமம்';\\n }\\n },\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'யாமம்') {\\n return hour < 2 ? hour : hour + 12;\\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\\n return hour;\\n } else if (meridiem === 'நண்பகல்') {\\n return hour >= 10 ? hour : hour + 12;\\n } else {\\n return hour + 12;\\n }\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn ta;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 167 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Telugu [te]\\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar te = moment.defineLocale('te', {\\n months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\\n monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\\n weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\\n weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\\n longDateFormat : {\\n LT : 'A h:mm',\\n LTS : 'A h:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY, A h:mm',\\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\\n },\\n calendar : {\\n sameDay : '[నేడు] LT',\\n nextDay : '[రేపు] LT',\\n nextWeek : 'dddd, LT',\\n lastDay : '[నిన్న] LT',\\n lastWeek : '[గత] dddd, LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s లో',\\n past : '%s క్రితం',\\n s : 'కొన్ని క్షణాలు',\\n m : 'ఒక నిమిషం',\\n mm : '%d నిమిషాలు',\\n h : 'ఒక గంట',\\n hh : '%d గంటలు',\\n d : 'ఒక రోజు',\\n dd : '%d రోజులు',\\n M : 'ఒక నెల',\\n MM : '%d నెలలు',\\n y : 'ఒక సంవత్సరం',\\n yy : '%d సంవత్సరాలు'\\n },\\n dayOfMonthOrdinalParse : /\\\\d{1,2}వ/,\\n ordinal : '%dవ',\\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === 'రాత్రి') {\\n return hour < 4 ? hour : hour + 12;\\n } else if (meridiem === 'ఉదయం') {\\n return hour;\\n } else if (meridiem === 'మధ్యాహ్నం') {\\n return hour >= 10 ? hour : hour + 12;\\n } else if (meridiem === 'సాయంత్రం') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'రాత్రి';\\n } else if (hour < 10) {\\n return 'ఉదయం';\\n } else if (hour < 17) {\\n return 'మధ్యాహ్నం';\\n } else if (hour < 20) {\\n return 'సాయంత్రం';\\n } else {\\n return 'రాత్రి';\\n }\\n },\\n week : {\\n dow : 0, // Sunday is the first day of the week.\\n doy : 6 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn te;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 168 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Tetun Dili (East Timor) [tet]\\n//! author : Joshua Brooks : https://github.com/joshbrooks\\n//! author : Onorio De J. Afonso : https://github.com/marobo\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar tet = moment.defineLocale('tet', {\\n months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),\\n weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),\\n weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),\\n weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[Ohin iha] LT',\\n nextDay: '[Aban iha] LT',\\n nextWeek: 'dddd [iha] LT',\\n lastDay: '[Horiseik iha] LT',\\n lastWeek: 'dddd [semana kotuk] [iha] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'iha %s',\\n past : '%s liuba',\\n s : 'minutu balun',\\n m : 'minutu ida',\\n mm : 'minutus %d',\\n h : 'horas ida',\\n hh : 'horas %d',\\n d : 'loron ida',\\n dd : 'loron %d',\\n M : 'fulan ida',\\n MM : 'fulan %d',\\n y : 'tinan ida',\\n yy : 'tinan %d'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(st|nd|rd|th)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'th' :\\n (b === 1) ? 'st' :\\n (b === 2) ? 'nd' :\\n (b === 3) ? 'rd' : 'th';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn tet;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 169 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Thai [th]\\n//! author : Kridsada Thanabulpong : https://github.com/sirn\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar th = moment.defineLocale('th', {\\n months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\\n monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\\n monthsParseExact: true,\\n weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\\n weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\\n weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'H:mm',\\n LTS : 'H:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY เวลา H:mm',\\n LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\\n },\\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\\n isPM: function (input) {\\n return input === 'หลังเที่ยง';\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'ก่อนเที่ยง';\\n } else {\\n return 'หลังเที่ยง';\\n }\\n },\\n calendar : {\\n sameDay : '[วันนี้ เวลา] LT',\\n nextDay : '[พรุ่งนี้ เวลา] LT',\\n nextWeek : 'dddd[หน้า เวลา] LT',\\n lastDay : '[เมื่อวานนี้ เวลา] LT',\\n lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'อีก %s',\\n past : '%sที่แล้ว',\\n s : 'ไม่กี่วินาที',\\n m : '1 นาที',\\n mm : '%d นาที',\\n h : '1 ชั่วโมง',\\n hh : '%d ชั่วโมง',\\n d : '1 วัน',\\n dd : '%d วัน',\\n M : '1 เดือน',\\n MM : '%d เดือน',\\n y : '1 ปี',\\n yy : '%d ปี'\\n }\\n});\\n\\nreturn th;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 170 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Tagalog (Philippines) [tl-ph]\\n//! author : Dan Hagman : https://github.com/hagmandan\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar tlPh = moment.defineLocale('tl-ph', {\\n months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\\n monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\\n weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\\n weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\\n weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'MM/D/YYYY',\\n LL : 'MMMM D, YYYY',\\n LLL : 'MMMM D, YYYY HH:mm',\\n LLLL : 'dddd, MMMM DD, YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: 'LT [ngayong araw]',\\n nextDay: '[Bukas ng] LT',\\n nextWeek: 'LT [sa susunod na] dddd',\\n lastDay: 'LT [kahapon]',\\n lastWeek: 'LT [noong nakaraang] dddd',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'sa loob ng %s',\\n past : '%s ang nakalipas',\\n s : 'ilang segundo',\\n m : 'isang minuto',\\n mm : '%d minuto',\\n h : 'isang oras',\\n hh : '%d oras',\\n d : 'isang araw',\\n dd : '%d araw',\\n M : 'isang buwan',\\n MM : '%d buwan',\\n y : 'isang taon',\\n yy : '%d taon'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}/,\\n ordinal : function (number) {\\n return number;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn tlPh;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 171 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Klingon [tlh]\\n//! author : Dominika Kruk : https://github.com/amaranthrose\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\\n\\nfunction translateFuture(output) {\\n var time = output;\\n time = (output.indexOf('jaj') !== -1) ?\\n time.slice(0, -3) + 'leS' :\\n (output.indexOf('jar') !== -1) ?\\n time.slice(0, -3) + 'waQ' :\\n (output.indexOf('DIS') !== -1) ?\\n time.slice(0, -3) + 'nem' :\\n time + ' pIq';\\n return time;\\n}\\n\\nfunction translatePast(output) {\\n var time = output;\\n time = (output.indexOf('jaj') !== -1) ?\\n time.slice(0, -3) + 'Hu’' :\\n (output.indexOf('jar') !== -1) ?\\n time.slice(0, -3) + 'wen' :\\n (output.indexOf('DIS') !== -1) ?\\n time.slice(0, -3) + 'ben' :\\n time + ' ret';\\n return time;\\n}\\n\\nfunction translate(number, withoutSuffix, string, isFuture) {\\n var numberNoun = numberAsNoun(number);\\n switch (string) {\\n case 'mm':\\n return numberNoun + ' tup';\\n case 'hh':\\n return numberNoun + ' rep';\\n case 'dd':\\n return numberNoun + ' jaj';\\n case 'MM':\\n return numberNoun + ' jar';\\n case 'yy':\\n return numberNoun + ' DIS';\\n }\\n}\\n\\nfunction numberAsNoun(number) {\\n var hundred = Math.floor((number % 1000) / 100),\\n ten = Math.floor((number % 100) / 10),\\n one = number % 10,\\n word = '';\\n if (hundred > 0) {\\n word += numbersNouns[hundred] + 'vatlh';\\n }\\n if (ten > 0) {\\n word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\\n }\\n if (one > 0) {\\n word += ((word !== '') ? ' ' : '') + numbersNouns[one];\\n }\\n return (word === '') ? 'pagh' : word;\\n}\\n\\nvar tlh = moment.defineLocale('tlh', {\\n 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('_'),\\n 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('_'),\\n monthsParseExact : true,\\n weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\\n weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\\n weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[DaHjaj] LT',\\n nextDay: '[wa’leS] LT',\\n nextWeek: 'LLL',\\n lastDay: '[wa’Hu’] LT',\\n lastWeek: 'LLL',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : translateFuture,\\n past : translatePast,\\n s : 'puS lup',\\n m : 'wa’ tup',\\n mm : translate,\\n h : 'wa’ rep',\\n hh : translate,\\n d : 'wa’ jaj',\\n dd : translate,\\n M : 'wa’ jar',\\n MM : translate,\\n y : 'wa’ DIS',\\n yy : translate\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn tlh;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 172 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Turkish [tr]\\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\\n//! Burak Yiğit Kaya: https://github.com/BYK\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar suffixes = {\\n 1: '\\\\'inci',\\n 5: '\\\\'inci',\\n 8: '\\\\'inci',\\n 70: '\\\\'inci',\\n 80: '\\\\'inci',\\n 2: '\\\\'nci',\\n 7: '\\\\'nci',\\n 20: '\\\\'nci',\\n 50: '\\\\'nci',\\n 3: '\\\\'üncü',\\n 4: '\\\\'üncü',\\n 100: '\\\\'üncü',\\n 6: '\\\\'ncı',\\n 9: '\\\\'uncu',\\n 10: '\\\\'uncu',\\n 30: '\\\\'uncu',\\n 60: '\\\\'ıncı',\\n 90: '\\\\'ıncı'\\n};\\n\\nvar tr = moment.defineLocale('tr', {\\n months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\\n monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\\n weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\\n weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\\n weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[bugün saat] LT',\\n nextDay : '[yarın saat] LT',\\n nextWeek : '[haftaya] dddd [saat] LT',\\n lastDay : '[dün] LT',\\n lastWeek : '[geçen hafta] dddd [saat] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s sonra',\\n past : '%s önce',\\n s : 'birkaç saniye',\\n m : 'bir dakika',\\n mm : '%d dakika',\\n h : 'bir saat',\\n hh : '%d saat',\\n d : 'bir gün',\\n dd : '%d gün',\\n M : 'bir ay',\\n MM : '%d ay',\\n y : 'bir yıl',\\n yy : '%d yıl'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\\n ordinal : function (number) {\\n if (number === 0) { // special case for zero\\n return number + '\\\\'ıncı';\\n }\\n var a = number % 10,\\n b = number % 100 - a,\\n c = number >= 100 ? 100 : null;\\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn tr;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 173 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Talossan [tzl]\\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\\n//! author : Iustì Canun\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\n// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\\n// This is currently too difficult (maybe even impossible) to add.\\nvar tzl = moment.defineLocale('tzl', {\\n months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\\n monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\\n weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\\n weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\\n weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\\n longDateFormat : {\\n LT : 'HH.mm',\\n LTS : 'HH.mm.ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D. MMMM [dallas] YYYY',\\n LLL : 'D. MMMM [dallas] YYYY HH.mm',\\n LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\\n },\\n meridiemParse: /d\\\\'o|d\\\\'a/i,\\n isPM : function (input) {\\n return 'd\\\\'o' === input.toLowerCase();\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours > 11) {\\n return isLower ? 'd\\\\'o' : 'D\\\\'O';\\n } else {\\n return isLower ? 'd\\\\'a' : 'D\\\\'A';\\n }\\n },\\n calendar : {\\n sameDay : '[oxhi à] LT',\\n nextDay : '[demà à] LT',\\n nextWeek : 'dddd [à] LT',\\n lastDay : '[ieiri à] LT',\\n lastWeek : '[sür el] dddd [lasteu à] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'osprei %s',\\n past : 'ja%s',\\n s : processRelativeTime,\\n m : processRelativeTime,\\n mm : processRelativeTime,\\n h : processRelativeTime,\\n hh : processRelativeTime,\\n d : processRelativeTime,\\n dd : processRelativeTime,\\n M : processRelativeTime,\\n MM : processRelativeTime,\\n y : processRelativeTime,\\n yy : processRelativeTime\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}\\\\./,\\n ordinal : '%d.',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\\n var format = {\\n 's': ['viensas secunds', '\\\\'iensas secunds'],\\n 'm': ['\\\\'n míut', '\\\\'iens míut'],\\n 'mm': [number + ' míuts', '' + number + ' míuts'],\\n 'h': ['\\\\'n þora', '\\\\'iensa þora'],\\n 'hh': [number + ' þoras', '' + number + ' þoras'],\\n 'd': ['\\\\'n ziua', '\\\\'iensa ziua'],\\n 'dd': [number + ' ziuas', '' + number + ' ziuas'],\\n 'M': ['\\\\'n mes', '\\\\'iens mes'],\\n 'MM': [number + ' mesen', '' + number + ' mesen'],\\n 'y': ['\\\\'n ar', '\\\\'iens ar'],\\n 'yy': [number + ' ars', '' + number + ' ars']\\n };\\n return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\\n}\\n\\nreturn tzl;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 174 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Central Atlas Tamazight [tzm]\\n//! author : Abdel Said : https://github.com/abdelsaid\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar tzm = moment.defineLocale('tzm', {\\n months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\\n monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\\n weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\\n weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\\n weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS: 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\\n nextWeek: 'dddd [ⴴ] LT',\\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\\n lastWeek: 'dddd [ⴴ] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\\n past : 'ⵢⴰⵏ %s',\\n s : 'ⵉⵎⵉⴽ',\\n m : 'ⵎⵉⵏⵓⴺ',\\n mm : '%d ⵎⵉⵏⵓⴺ',\\n h : 'ⵙⴰⵄⴰ',\\n hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\\n d : 'ⴰⵙⵙ',\\n dd : '%d oⵙⵙⴰⵏ',\\n M : 'ⴰⵢoⵓⵔ',\\n MM : '%d ⵉⵢⵢⵉⵔⵏ',\\n y : 'ⴰⵙⴳⴰⵙ',\\n yy : '%d ⵉⵙⴳⴰⵙⵏ'\\n },\\n week : {\\n dow : 6, // Saturday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn tzm;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 175 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\\n//! author : Abdel Said : https://github.com/abdelsaid\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar tzmLatn = moment.defineLocale('tzm-latn', {\\n months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\\n monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\\n weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\\n weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\\n weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[asdkh g] LT',\\n nextDay: '[aska g] LT',\\n nextWeek: 'dddd [g] LT',\\n lastDay: '[assant g] LT',\\n lastWeek: 'dddd [g] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'dadkh s yan %s',\\n past : 'yan %s',\\n s : 'imik',\\n m : 'minuḍ',\\n mm : '%d minuḍ',\\n h : 'saɛa',\\n hh : '%d tassaɛin',\\n d : 'ass',\\n dd : '%d ossan',\\n M : 'ayowr',\\n MM : '%d iyyirn',\\n y : 'asgas',\\n yy : '%d isgasn'\\n },\\n week : {\\n dow : 6, // Saturday is the first day of the week.\\n doy : 12 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn tzmLatn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 176 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Ukrainian [uk]\\n//! author : zemlanin : https://github.com/zemlanin\\n//! Author : Menelion Elensúle : https://github.com/Oire\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nfunction plural(word, num) {\\n var forms = word.split('_');\\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\\n}\\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\\n var format = {\\n 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\\n 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\\n 'dd': 'день_дні_днів',\\n 'MM': 'місяць_місяці_місяців',\\n 'yy': 'рік_роки_років'\\n };\\n if (key === 'm') {\\n return withoutSuffix ? 'хвилина' : 'хвилину';\\n }\\n else if (key === 'h') {\\n return withoutSuffix ? 'година' : 'годину';\\n }\\n else {\\n return number + ' ' + plural(format[key], +number);\\n }\\n}\\nfunction weekdaysCaseReplace(m, format) {\\n var weekdays = {\\n 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\\n 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\\n 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\\n };\\n\\n if (!m) {\\n return weekdays['nominative'];\\n }\\n\\n var nounCase = (/(\\\\[[ВвУу]\\\\]) ?dddd/).test(format) ?\\n 'accusative' :\\n ((/\\\\[?(?:минулої|наступної)? ?\\\\] ?dddd/).test(format) ?\\n 'genitive' :\\n 'nominative');\\n return weekdays[nounCase][m.day()];\\n}\\nfunction processHoursFunction(str) {\\n return function () {\\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\\n };\\n}\\n\\nvar uk = moment.defineLocale('uk', {\\n months : {\\n 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\\n 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\\n },\\n monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\\n weekdays : weekdaysCaseReplace,\\n weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD.MM.YYYY',\\n LL : 'D MMMM YYYY р.',\\n LLL : 'D MMMM YYYY р., HH:mm',\\n LLLL : 'dddd, D MMMM YYYY р., HH:mm'\\n },\\n calendar : {\\n sameDay: processHoursFunction('[Сьогодні '),\\n nextDay: processHoursFunction('[Завтра '),\\n lastDay: processHoursFunction('[Вчора '),\\n nextWeek: processHoursFunction('[У] dddd ['),\\n lastWeek: function () {\\n switch (this.day()) {\\n case 0:\\n case 3:\\n case 5:\\n case 6:\\n return processHoursFunction('[Минулої] dddd [').call(this);\\n case 1:\\n case 2:\\n case 4:\\n return processHoursFunction('[Минулого] dddd [').call(this);\\n }\\n },\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : 'за %s',\\n past : '%s тому',\\n s : 'декілька секунд',\\n m : relativeTimeWithPlural,\\n mm : relativeTimeWithPlural,\\n h : 'годину',\\n hh : relativeTimeWithPlural,\\n d : 'день',\\n dd : relativeTimeWithPlural,\\n M : 'місяць',\\n MM : relativeTimeWithPlural,\\n y : 'рік',\\n yy : relativeTimeWithPlural\\n },\\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\\n meridiemParse: /ночі|ранку|дня|вечора/,\\n isPM: function (input) {\\n return /^(дня|вечора)$/.test(input);\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 4) {\\n return 'ночі';\\n } else if (hour < 12) {\\n return 'ранку';\\n } else if (hour < 17) {\\n return 'дня';\\n } else {\\n return 'вечора';\\n }\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}-(й|го)/,\\n ordinal: function (number, period) {\\n switch (period) {\\n case 'M':\\n case 'd':\\n case 'DDD':\\n case 'w':\\n case 'W':\\n return number + '-й';\\n case 'D':\\n return number + '-го';\\n default:\\n return number;\\n }\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn uk;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 177 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Urdu [ur]\\n//! author : Sawood Alam : https://github.com/ibnesayeed\\n//! author : Zack : https://github.com/ZackVision\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar months = [\\n 'جنوری',\\n 'فروری',\\n 'مارچ',\\n 'اپریل',\\n 'مئی',\\n 'جون',\\n 'جولائی',\\n 'اگست',\\n 'ستمبر',\\n 'اکتوبر',\\n 'نومبر',\\n 'دسمبر'\\n];\\nvar days = [\\n 'اتوار',\\n 'پیر',\\n 'منگل',\\n 'بدھ',\\n 'جمعرات',\\n 'جمعہ',\\n 'ہفتہ'\\n];\\n\\nvar ur = moment.defineLocale('ur', {\\n months : months,\\n monthsShort : months,\\n weekdays : days,\\n weekdaysShort : days,\\n weekdaysMin : days,\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd، D MMMM YYYY HH:mm'\\n },\\n meridiemParse: /صبح|شام/,\\n isPM : function (input) {\\n return 'شام' === input;\\n },\\n meridiem : function (hour, minute, isLower) {\\n if (hour < 12) {\\n return 'صبح';\\n }\\n return 'شام';\\n },\\n calendar : {\\n sameDay : '[آج بوقت] LT',\\n nextDay : '[کل بوقت] LT',\\n nextWeek : 'dddd [بوقت] LT',\\n lastDay : '[گذشتہ روز بوقت] LT',\\n lastWeek : '[گذشتہ] dddd [بوقت] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : '%s بعد',\\n past : '%s قبل',\\n s : 'چند سیکنڈ',\\n m : 'ایک منٹ',\\n mm : '%d منٹ',\\n h : 'ایک گھنٹہ',\\n hh : '%d گھنٹے',\\n d : 'ایک دن',\\n dd : '%d دن',\\n M : 'ایک ماہ',\\n MM : '%d ماہ',\\n y : 'ایک سال',\\n yy : '%d سال'\\n },\\n preparse: function (string) {\\n return string.replace(/،/g, ',');\\n },\\n postformat: function (string) {\\n return string.replace(/,/g, '،');\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn ur;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 178 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Uzbek [uz]\\n//! author : Sardor Muminov : https://github.com/muminoff\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar uz = moment.defineLocale('uz', {\\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\\n weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\\n weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\\n weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'D MMMM YYYY, dddd HH:mm'\\n },\\n calendar : {\\n sameDay : '[Бугун соат] LT [да]',\\n nextDay : '[Эртага] LT [да]',\\n nextWeek : 'dddd [куни соат] LT [да]',\\n lastDay : '[Кеча соат] LT [да]',\\n lastWeek : '[Утган] dddd [куни соат] LT [да]',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'Якин %s ичида',\\n past : 'Бир неча %s олдин',\\n s : 'фурсат',\\n m : 'бир дакика',\\n mm : '%d дакика',\\n h : 'бир соат',\\n hh : '%d соат',\\n d : 'бир кун',\\n dd : '%d кун',\\n M : 'бир ой',\\n MM : '%d ой',\\n y : 'бир йил',\\n yy : '%d йил'\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn uz;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 179 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Uzbek Latin [uz-latn]\\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar uzLatn = moment.defineLocale('uz-latn', {\\n months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\\n monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\\n weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\\n weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\\n weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'D MMMM YYYY, dddd HH:mm'\\n },\\n calendar : {\\n sameDay : '[Bugun soat] LT [da]',\\n nextDay : '[Ertaga] LT [da]',\\n nextWeek : 'dddd [kuni soat] LT [da]',\\n lastDay : '[Kecha soat] LT [da]',\\n lastWeek : '[O\\\\'tgan] dddd [kuni soat] LT [da]',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'Yaqin %s ichida',\\n past : 'Bir necha %s oldin',\\n s : 'soniya',\\n m : 'bir daqiqa',\\n mm : '%d daqiqa',\\n h : 'bir soat',\\n hh : '%d soat',\\n d : 'bir kun',\\n dd : '%d kun',\\n M : 'bir oy',\\n MM : '%d oy',\\n y : 'bir yil',\\n yy : '%d yil'\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 7 // The week that contains Jan 1st is the first week of the year.\\n }\\n});\\n\\nreturn uzLatn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 180 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Vietnamese [vi]\\n//! author : Bang Nguyen : https://github.com/bangnk\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar vi = moment.defineLocale('vi', {\\n 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('_'),\\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\\n weekdaysParseExact : true,\\n meridiemParse: /sa|ch/i,\\n isPM : function (input) {\\n return /^ch$/i.test(input);\\n },\\n meridiem : function (hours, minutes, isLower) {\\n if (hours < 12) {\\n return isLower ? 'sa' : 'SA';\\n } else {\\n return isLower ? 'ch' : 'CH';\\n }\\n },\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM [năm] YYYY',\\n LLL : 'D MMMM [năm] YYYY HH:mm',\\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\\n l : 'DD/M/YYYY',\\n ll : 'D MMM YYYY',\\n lll : 'D MMM YYYY HH:mm',\\n llll : 'ddd, D MMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay: '[Hôm nay lúc] LT',\\n nextDay: '[Ngày mai lúc] LT',\\n nextWeek: 'dddd [tuần tới lúc] LT',\\n lastDay: '[Hôm qua lúc] LT',\\n lastWeek: 'dddd [tuần rồi lúc] LT',\\n sameElse: 'L'\\n },\\n relativeTime : {\\n future : '%s tới',\\n past : '%s trước',\\n s : 'vài giây',\\n m : 'một phút',\\n mm : '%d phút',\\n h : 'một giờ',\\n hh : '%d giờ',\\n d : 'một ngày',\\n dd : '%d ngày',\\n M : 'một tháng',\\n MM : '%d tháng',\\n y : 'một năm',\\n yy : '%d năm'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}/,\\n ordinal : function (number) {\\n return number;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn vi;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 181 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Pseudo [x-pseudo]\\n//! author : Andrew Hood : https://github.com/andrewhood125\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar xPseudo = moment.defineLocale('x-pseudo', {\\n 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('_'),\\n monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\\n monthsParseExact : true,\\n weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\\n weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\\n weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\\n weekdaysParseExact : true,\\n longDateFormat : {\\n LT : 'HH:mm',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY HH:mm',\\n LLLL : 'dddd, D MMMM YYYY HH:mm'\\n },\\n calendar : {\\n sameDay : '[T~ódá~ý át] LT',\\n nextDay : '[T~ómó~rró~w át] LT',\\n nextWeek : 'dddd [át] LT',\\n lastDay : '[Ý~ést~érdá~ý át] LT',\\n lastWeek : '[L~ást] dddd [át] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'í~ñ %s',\\n past : '%s á~gó',\\n s : 'á ~féw ~sécó~ñds',\\n m : 'á ~míñ~úté',\\n mm : '%d m~íñú~tés',\\n h : 'á~ñ hó~úr',\\n hh : '%d h~óúrs',\\n d : 'á ~dáý',\\n dd : '%d d~áýs',\\n M : 'á ~móñ~th',\\n MM : '%d m~óñt~hs',\\n y : 'á ~ýéár',\\n yy : '%d ý~éárs'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(th|st|nd|rd)/,\\n ordinal : function (number) {\\n var b = number % 10,\\n output = (~~(number % 100 / 10) === 1) ? 'th' :\\n (b === 1) ? 'st' :\\n (b === 2) ? 'nd' :\\n (b === 3) ? 'rd' : 'th';\\n return number + output;\\n },\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn xPseudo;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 182 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Yoruba Nigeria [yo]\\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar yo = moment.defineLocale('yo', {\\n months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\\n monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\\n weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\\n weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\\n weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\\n longDateFormat : {\\n LT : 'h:mm A',\\n LTS : 'h:mm:ss A',\\n L : 'DD/MM/YYYY',\\n LL : 'D MMMM YYYY',\\n LLL : 'D MMMM YYYY h:mm A',\\n LLLL : 'dddd, D MMMM YYYY h:mm A'\\n },\\n calendar : {\\n sameDay : '[Ònì ni] LT',\\n nextDay : '[Ọ̀la ni] LT',\\n nextWeek : 'dddd [Ọsẹ̀ tón\\\\'bọ] [ni] LT',\\n lastDay : '[Àna ni] LT',\\n lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\\n sameElse : 'L'\\n },\\n relativeTime : {\\n future : 'ní %s',\\n past : '%s kọjá',\\n s : 'ìsẹjú aayá die',\\n m : 'ìsẹjú kan',\\n mm : 'ìsẹjú %d',\\n h : 'wákati kan',\\n hh : 'wákati %d',\\n d : 'ọjọ́ kan',\\n dd : 'ọjọ́ %d',\\n M : 'osù kan',\\n MM : 'osù %d',\\n y : 'ọdún kan',\\n yy : 'ọdún %d'\\n },\\n dayOfMonthOrdinalParse : /ọjọ́\\\\s\\\\d{1,2}/,\\n ordinal : 'ọjọ́ %d',\\n week : {\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn yo;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 183 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Chinese (China) [zh-cn]\\n//! author : suupic : https://github.com/suupic\\n//! author : Zeno Zeng : https://github.com/zenozeng\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar zhCn = moment.defineLocale('zh-cn', {\\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\\n weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY年MMMD日',\\n LL : 'YYYY年MMMD日',\\n LLL : 'YYYY年MMMD日Ah点mm分',\\n LLLL : 'YYYY年MMMD日ddddAh点mm分',\\n l : 'YYYY年MMMD日',\\n ll : 'YYYY年MMMD日',\\n lll : 'YYYY年MMMD日 HH:mm',\\n llll : 'YYYY年MMMD日dddd HH:mm'\\n },\\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\\n meridiemHour: function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === '凌晨' || meridiem === '早上' ||\\n meridiem === '上午') {\\n return hour;\\n } else if (meridiem === '下午' || meridiem === '晚上') {\\n return hour + 12;\\n } else {\\n // '中午'\\n return hour >= 11 ? hour : hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n var hm = hour * 100 + minute;\\n if (hm < 600) {\\n return '凌晨';\\n } else if (hm < 900) {\\n return '早上';\\n } else if (hm < 1130) {\\n return '上午';\\n } else if (hm < 1230) {\\n return '中午';\\n } else if (hm < 1800) {\\n return '下午';\\n } else {\\n return '晚上';\\n }\\n },\\n calendar : {\\n sameDay : '[今天]LT',\\n nextDay : '[明天]LT',\\n nextWeek : '[下]ddddLT',\\n lastDay : '[昨天]LT',\\n lastWeek : '[上]ddddLT',\\n sameElse : 'L'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(日|月|周)/,\\n ordinal : function (number, period) {\\n switch (period) {\\n case 'd':\\n case 'D':\\n case 'DDD':\\n return number + '日';\\n case 'M':\\n return number + '月';\\n case 'w':\\n case 'W':\\n return number + '周';\\n default:\\n return number;\\n }\\n },\\n relativeTime : {\\n future : '%s内',\\n past : '%s前',\\n s : '几秒',\\n m : '1 分钟',\\n mm : '%d 分钟',\\n h : '1 小时',\\n hh : '%d 小时',\\n d : '1 天',\\n dd : '%d 天',\\n M : '1 个月',\\n MM : '%d 个月',\\n y : '1 年',\\n yy : '%d 年'\\n },\\n week : {\\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\\n dow : 1, // Monday is the first day of the week.\\n doy : 4 // The week that contains Jan 4th is the first week of the year.\\n }\\n});\\n\\nreturn zhCn;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 184 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Chinese (Hong Kong) [zh-hk]\\n//! author : Ben : https://github.com/ben-lin\\n//! author : Chris Lam : https://github.com/hehachris\\n//! author : Konstantin : https://github.com/skfd\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar zhHk = moment.defineLocale('zh-hk', {\\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY年MMMD日',\\n LL : 'YYYY年MMMD日',\\n LLL : 'YYYY年MMMD日 HH:mm',\\n LLLL : 'YYYY年MMMD日dddd HH:mm',\\n l : 'YYYY年MMMD日',\\n ll : 'YYYY年MMMD日',\\n lll : 'YYYY年MMMD日 HH:mm',\\n llll : 'YYYY年MMMD日dddd HH:mm'\\n },\\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\\n return hour;\\n } else if (meridiem === '中午') {\\n return hour >= 11 ? hour : hour + 12;\\n } else if (meridiem === '下午' || meridiem === '晚上') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n var hm = hour * 100 + minute;\\n if (hm < 600) {\\n return '凌晨';\\n } else if (hm < 900) {\\n return '早上';\\n } else if (hm < 1130) {\\n return '上午';\\n } else if (hm < 1230) {\\n return '中午';\\n } else if (hm < 1800) {\\n return '下午';\\n } else {\\n return '晚上';\\n }\\n },\\n calendar : {\\n sameDay : '[今天]LT',\\n nextDay : '[明天]LT',\\n nextWeek : '[下]ddddLT',\\n lastDay : '[昨天]LT',\\n lastWeek : '[上]ddddLT',\\n sameElse : 'L'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(日|月|週)/,\\n ordinal : function (number, period) {\\n switch (period) {\\n case 'd' :\\n case 'D' :\\n case 'DDD' :\\n return number + '日';\\n case 'M' :\\n return number + '月';\\n case 'w' :\\n case 'W' :\\n return number + '週';\\n default :\\n return number;\\n }\\n },\\n relativeTime : {\\n future : '%s內',\\n past : '%s前',\\n s : '幾秒',\\n m : '1 分鐘',\\n mm : '%d 分鐘',\\n h : '1 小時',\\n hh : '%d 小時',\\n d : '1 天',\\n dd : '%d 天',\\n M : '1 個月',\\n MM : '%d 個月',\\n y : '1 年',\\n yy : '%d 年'\\n }\\n});\\n\\nreturn zhHk;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 185 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n//! moment.js locale configuration\\n//! locale : Chinese (Taiwan) [zh-tw]\\n//! author : Ben : https://github.com/ben-lin\\n//! author : Chris Lam : https://github.com/hehachris\\n\\n;(function (global, factory) {\\n true ? factory(__webpack_require__(0)) :\\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\\n factory(global.moment)\\n}(this, (function (moment) { 'use strict';\\n\\n\\nvar zhTw = moment.defineLocale('zh-tw', {\\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\\n longDateFormat : {\\n LT : 'HH:mm',\\n LTS : 'HH:mm:ss',\\n L : 'YYYY年MMMD日',\\n LL : 'YYYY年MMMD日',\\n LLL : 'YYYY年MMMD日 HH:mm',\\n LLLL : 'YYYY年MMMD日dddd HH:mm',\\n l : 'YYYY年MMMD日',\\n ll : 'YYYY年MMMD日',\\n lll : 'YYYY年MMMD日 HH:mm',\\n llll : 'YYYY年MMMD日dddd HH:mm'\\n },\\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\\n meridiemHour : function (hour, meridiem) {\\n if (hour === 12) {\\n hour = 0;\\n }\\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\\n return hour;\\n } else if (meridiem === '中午') {\\n return hour >= 11 ? hour : hour + 12;\\n } else if (meridiem === '下午' || meridiem === '晚上') {\\n return hour + 12;\\n }\\n },\\n meridiem : function (hour, minute, isLower) {\\n var hm = hour * 100 + minute;\\n if (hm < 600) {\\n return '凌晨';\\n } else if (hm < 900) {\\n return '早上';\\n } else if (hm < 1130) {\\n return '上午';\\n } else if (hm < 1230) {\\n return '中午';\\n } else if (hm < 1800) {\\n return '下午';\\n } else {\\n return '晚上';\\n }\\n },\\n calendar : {\\n sameDay : '[今天]LT',\\n nextDay : '[明天]LT',\\n nextWeek : '[下]ddddLT',\\n lastDay : '[昨天]LT',\\n lastWeek : '[上]ddddLT',\\n sameElse : 'L'\\n },\\n dayOfMonthOrdinalParse: /\\\\d{1,2}(日|月|週)/,\\n ordinal : function (number, period) {\\n switch (period) {\\n case 'd' :\\n case 'D' :\\n case 'DDD' :\\n return number + '日';\\n case 'M' :\\n return number + '月';\\n case 'w' :\\n case 'W' :\\n return number + '週';\\n default :\\n return number;\\n }\\n },\\n relativeTime : {\\n future : '%s內',\\n past : '%s前',\\n s : '幾秒',\\n m : '1 分鐘',\\n mm : '%d 分鐘',\\n h : '1 小時',\\n hh : '%d 小時',\\n d : '1 天',\\n dd : '%d 天',\\n M : '1 個月',\\n MM : '%d 個月',\\n y : '1 年',\\n yy : '%d 年'\\n }\\n});\\n\\nreturn zhTw;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 186 */,\\n/* 187 */,\\n/* 188 */,\\n/* 189 */,\\n/* 190 */,\\n/* 191 */,\\n/* 192 */,\\n/* 193 */,\\n/* 194 */,\\n/* 195 */,\\n/* 196 */,\\n/* 197 */,\\n/* 198 */\\n/***/ (function(module, exports) {\\n\\n/**\\n * Translates the list format produced by css-loader into something\\n * easier to manipulate.\\n */\\nmodule.exports = function listToStyles (parentId, list) {\\n var styles = []\\n var newStyles = {}\\n for (var i = 0; i < list.length; i++) {\\n var item = list[i]\\n var id = item[0]\\n var css = item[1]\\n var media = item[2]\\n var sourceMap = item[3]\\n var part = {\\n id: parentId + ':' + i,\\n css: css,\\n media: media,\\n sourceMap: sourceMap\\n }\\n if (!newStyles[id]) {\\n styles.push(newStyles[id] = { id: id, parts: [part] })\\n } else {\\n newStyles[id].parts.push(part)\\n }\\n }\\n return styles\\n}\\n\\n\\n/***/ }),\\n/* 199 */,\\n/* 200 */,\\n/* 201 */,\\n/* 202 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = { \\\"default\\\": __webpack_require__(203), __esModule: true };\\n\\n/***/ }),\\n/* 203 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(27);\\n__webpack_require__(43);\\nmodule.exports = __webpack_require__(44).f('iterator');\\n\\n/***/ }),\\n/* 204 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar toInteger = __webpack_require__(33)\\n , defined = __webpack_require__(34);\\n// true -> String#at\\n// false -> String#codePointAt\\nmodule.exports = function(TO_STRING){\\n return function(that, pos){\\n var s = String(defined(that))\\n , i = toInteger(pos)\\n , l = s.length\\n , a, b;\\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\\n a = s.charCodeAt(i);\\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\\n ? TO_STRING ? s.charAt(i) : a\\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\\n };\\n};\\n\\n/***/ }),\\n/* 205 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar create = __webpack_require__(54)\\n , descriptor = __webpack_require__(22)\\n , setToStringTag = __webpack_require__(30)\\n , IteratorPrototype = {};\\n\\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\\n__webpack_require__(12)(IteratorPrototype, __webpack_require__(5)('iterator'), function(){ return this; });\\n\\nmodule.exports = function(Constructor, NAME, next){\\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\\n setToStringTag(Constructor, NAME + ' Iterator');\\n};\\n\\n/***/ }),\\n/* 206 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar dP = __webpack_require__(9)\\n , anObject = __webpack_require__(10)\\n , getKeys = __webpack_require__(24);\\n\\nmodule.exports = __webpack_require__(13) ? Object.defineProperties : function defineProperties(O, Properties){\\n anObject(O);\\n var keys = getKeys(Properties)\\n , length = keys.length\\n , i = 0\\n , P;\\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\\n return O;\\n};\\n\\n/***/ }),\\n/* 207 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// false -> Array#indexOf\\n// true -> Array#includes\\nvar toIObject = __webpack_require__(15)\\n , toLength = __webpack_require__(38)\\n , toIndex = __webpack_require__(208);\\nmodule.exports = function(IS_INCLUDES){\\n return function($this, el, fromIndex){\\n var O = toIObject($this)\\n , length = toLength(O.length)\\n , index = toIndex(fromIndex, length)\\n , value;\\n // Array#includes uses SameValueZero equality algorithm\\n if(IS_INCLUDES && el != el)while(length > index){\\n value = O[index++];\\n if(value != value)return true;\\n // Array#toIndex ignores holes, Array#includes - not\\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\\n if(O[index] === el)return IS_INCLUDES || index || 0;\\n } return !IS_INCLUDES && -1;\\n };\\n};\\n\\n/***/ }),\\n/* 208 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar toInteger = __webpack_require__(33)\\n , max = Math.max\\n , min = Math.min;\\nmodule.exports = function(index, length){\\n index = toInteger(index);\\n return index < 0 ? max(index + length, 0) : min(index, length);\\n};\\n\\n/***/ }),\\n/* 209 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\\nvar has = __webpack_require__(14)\\n , toObject = __webpack_require__(42)\\n , IE_PROTO = __webpack_require__(39)('IE_PROTO')\\n , ObjectProto = Object.prototype;\\n\\nmodule.exports = Object.getPrototypeOf || function(O){\\n O = toObject(O);\\n if(has(O, IE_PROTO))return O[IE_PROTO];\\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\\n return O.constructor.prototype;\\n } return O instanceof Object ? ObjectProto : null;\\n};\\n\\n/***/ }),\\n/* 210 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar addToUnscopables = __webpack_require__(211)\\n , step = __webpack_require__(212)\\n , Iterators = __webpack_require__(23)\\n , toIObject = __webpack_require__(15);\\n\\n// 22.1.3.4 Array.prototype.entries()\\n// 22.1.3.13 Array.prototype.keys()\\n// 22.1.3.29 Array.prototype.values()\\n// 22.1.3.30 Array.prototype[@@iterator]()\\nmodule.exports = __webpack_require__(51)(Array, 'Array', function(iterated, kind){\\n this._t = toIObject(iterated); // target\\n this._i = 0; // next index\\n this._k = kind; // kind\\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\\n}, function(){\\n var O = this._t\\n , kind = this._k\\n , index = this._i++;\\n if(!O || index >= O.length){\\n this._t = undefined;\\n return step(1);\\n }\\n if(kind == 'keys' )return step(0, index);\\n if(kind == 'values')return step(0, O[index]);\\n return step(0, [index, O[index]]);\\n}, 'values');\\n\\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\\nIterators.Arguments = Iterators.Array;\\n\\naddToUnscopables('keys');\\naddToUnscopables('values');\\naddToUnscopables('entries');\\n\\n/***/ }),\\n/* 211 */\\n/***/ (function(module, exports) {\\n\\nmodule.exports = function(){ /* empty */ };\\n\\n/***/ }),\\n/* 212 */\\n/***/ (function(module, exports) {\\n\\nmodule.exports = function(done, value){\\n return {value: value, done: !!done};\\n};\\n\\n/***/ }),\\n/* 213 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = { \\\"default\\\": __webpack_require__(214), __esModule: true };\\n\\n/***/ }),\\n/* 214 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(215);\\n__webpack_require__(59);\\n__webpack_require__(222);\\n__webpack_require__(223);\\nmodule.exports = __webpack_require__(7).Symbol;\\n\\n/***/ }),\\n/* 215 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\n// ECMAScript 6 symbols shim\\nvar global = __webpack_require__(6)\\n , has = __webpack_require__(14)\\n , DESCRIPTORS = __webpack_require__(13)\\n , $export = __webpack_require__(18)\\n , redefine = __webpack_require__(53)\\n , META = __webpack_require__(216).KEY\\n , $fails = __webpack_require__(21)\\n , shared = __webpack_require__(40)\\n , setToStringTag = __webpack_require__(30)\\n , uid = __webpack_require__(29)\\n , wks = __webpack_require__(5)\\n , wksExt = __webpack_require__(44)\\n , wksDefine = __webpack_require__(45)\\n , keyOf = __webpack_require__(217)\\n , enumKeys = __webpack_require__(218)\\n , isArray = __webpack_require__(219)\\n , anObject = __webpack_require__(10)\\n , toIObject = __webpack_require__(15)\\n , toPrimitive = __webpack_require__(37)\\n , createDesc = __webpack_require__(22)\\n , _create = __webpack_require__(54)\\n , gOPNExt = __webpack_require__(220)\\n , $GOPD = __webpack_require__(221)\\n , $DP = __webpack_require__(9)\\n , $keys = __webpack_require__(24)\\n , gOPD = $GOPD.f\\n , dP = $DP.f\\n , gOPN = gOPNExt.f\\n , $Symbol = global.Symbol\\n , $JSON = global.JSON\\n , _stringify = $JSON && $JSON.stringify\\n , PROTOTYPE = 'prototype'\\n , HIDDEN = wks('_hidden')\\n , TO_PRIMITIVE = wks('toPrimitive')\\n , isEnum = {}.propertyIsEnumerable\\n , SymbolRegistry = shared('symbol-registry')\\n , AllSymbols = shared('symbols')\\n , OPSymbols = shared('op-symbols')\\n , ObjectProto = Object[PROTOTYPE]\\n , USE_NATIVE = typeof $Symbol == 'function'\\n , QObject = global.QObject;\\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\\n\\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\\nvar setSymbolDesc = DESCRIPTORS && $fails(function(){\\n return _create(dP({}, 'a', {\\n get: function(){ return dP(this, 'a', {value: 7}).a; }\\n })).a != 7;\\n}) ? function(it, key, D){\\n var protoDesc = gOPD(ObjectProto, key);\\n if(protoDesc)delete ObjectProto[key];\\n dP(it, key, D);\\n if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\\n} : dP;\\n\\nvar wrap = function(tag){\\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\\n sym._k = tag;\\n return sym;\\n};\\n\\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\\n return typeof it == 'symbol';\\n} : function(it){\\n return it instanceof $Symbol;\\n};\\n\\nvar $defineProperty = function defineProperty(it, key, D){\\n if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\\n anObject(it);\\n key = toPrimitive(key, true);\\n anObject(D);\\n if(has(AllSymbols, key)){\\n if(!D.enumerable){\\n if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\\n it[HIDDEN][key] = true;\\n } else {\\n if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\\n D = _create(D, {enumerable: createDesc(0, false)});\\n } return setSymbolDesc(it, key, D);\\n } return dP(it, key, D);\\n};\\nvar $defineProperties = function defineProperties(it, P){\\n anObject(it);\\n var keys = enumKeys(P = toIObject(P))\\n , i = 0\\n , l = keys.length\\n , key;\\n while(l > i)$defineProperty(it, key = keys[i++], P[key]);\\n return it;\\n};\\nvar $create = function create(it, P){\\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\\n};\\nvar $propertyIsEnumerable = function propertyIsEnumerable(key){\\n var E = isEnum.call(this, key = toPrimitive(key, true));\\n if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\\n};\\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\\n it = toIObject(it);\\n key = toPrimitive(key, true);\\n if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\\n var D = gOPD(it, key);\\n if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\\n return D;\\n};\\nvar $getOwnPropertyNames = function getOwnPropertyNames(it){\\n var names = gOPN(toIObject(it))\\n , result = []\\n , i = 0\\n , key;\\n while(names.length > i){\\n if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\\n } return result;\\n};\\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\\n var IS_OP = it === ObjectProto\\n , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\\n , result = []\\n , i = 0\\n , key;\\n while(names.length > i){\\n if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\\n } return result;\\n};\\n\\n// 19.4.1.1 Symbol([description])\\nif(!USE_NATIVE){\\n $Symbol = function Symbol(){\\n if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\\n var $set = function(value){\\n if(this === ObjectProto)$set.call(OPSymbols, value);\\n if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\\n setSymbolDesc(this, tag, createDesc(1, value));\\n };\\n if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\\n return wrap(tag);\\n };\\n redefine($Symbol[PROTOTYPE], 'toString', function toString(){\\n return this._k;\\n });\\n\\n $GOPD.f = $getOwnPropertyDescriptor;\\n $DP.f = $defineProperty;\\n __webpack_require__(58).f = gOPNExt.f = $getOwnPropertyNames;\\n __webpack_require__(31).f = $propertyIsEnumerable;\\n __webpack_require__(46).f = $getOwnPropertySymbols;\\n\\n if(DESCRIPTORS && !__webpack_require__(28)){\\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\\n }\\n\\n wksExt.f = function(name){\\n return wrap(wks(name));\\n }\\n}\\n\\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\\n\\nfor(var symbols = (\\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\\n).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\\n\\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\\n\\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\\n // 19.4.2.1 Symbol.for(key)\\n 'for': function(key){\\n return has(SymbolRegistry, key += '')\\n ? SymbolRegistry[key]\\n : SymbolRegistry[key] = $Symbol(key);\\n },\\n // 19.4.2.5 Symbol.keyFor(sym)\\n keyFor: function keyFor(key){\\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\\n throw TypeError(key + ' is not a symbol!');\\n },\\n useSetter: function(){ setter = true; },\\n useSimple: function(){ setter = false; }\\n});\\n\\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\\n // 19.1.2.2 Object.create(O [, Properties])\\n create: $create,\\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\\n defineProperty: $defineProperty,\\n // 19.1.2.3 Object.defineProperties(O, Properties)\\n defineProperties: $defineProperties,\\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\\n // 19.1.2.7 Object.getOwnPropertyNames(O)\\n getOwnPropertyNames: $getOwnPropertyNames,\\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\\n getOwnPropertySymbols: $getOwnPropertySymbols\\n});\\n\\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\\n var S = $Symbol();\\n // MS Edge converts symbol values to JSON as {}\\n // WebKit converts symbol values to JSON as null\\n // V8 throws on boxed symbols\\n return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\\n})), 'JSON', {\\n stringify: function stringify(it){\\n if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\\n var args = [it]\\n , i = 1\\n , replacer, $replacer;\\n while(arguments.length > i)args.push(arguments[i++]);\\n replacer = args[1];\\n if(typeof replacer == 'function')$replacer = replacer;\\n if($replacer || !isArray(replacer))replacer = function(key, value){\\n if($replacer)value = $replacer.call(this, key, value);\\n if(!isSymbol(value))return value;\\n };\\n args[1] = replacer;\\n return _stringify.apply($JSON, args);\\n }\\n});\\n\\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(12)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\\nsetToStringTag($Symbol, 'Symbol');\\n// 20.2.1.9 Math[@@toStringTag]\\nsetToStringTag(Math, 'Math', true);\\n// 24.3.3 JSON[@@toStringTag]\\nsetToStringTag(global.JSON, 'JSON', true);\\n\\n/***/ }),\\n/* 216 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar META = __webpack_require__(29)('meta')\\n , isObject = __webpack_require__(20)\\n , has = __webpack_require__(14)\\n , setDesc = __webpack_require__(9).f\\n , id = 0;\\nvar isExtensible = Object.isExtensible || function(){\\n return true;\\n};\\nvar FREEZE = !__webpack_require__(21)(function(){\\n return isExtensible(Object.preventExtensions({}));\\n});\\nvar setMeta = function(it){\\n setDesc(it, META, {value: {\\n i: 'O' + ++id, // object ID\\n w: {} // weak collections IDs\\n }});\\n};\\nvar fastKey = function(it, create){\\n // return primitive with prefix\\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\\n if(!has(it, META)){\\n // can't set metadata to uncaught frozen object\\n if(!isExtensible(it))return 'F';\\n // not necessary to add metadata\\n if(!create)return 'E';\\n // add missing metadata\\n setMeta(it);\\n // return object ID\\n } return it[META].i;\\n};\\nvar getWeak = function(it, create){\\n if(!has(it, META)){\\n // can't set metadata to uncaught frozen object\\n if(!isExtensible(it))return true;\\n // not necessary to add metadata\\n if(!create)return false;\\n // add missing metadata\\n setMeta(it);\\n // return hash weak collections IDs\\n } return it[META].w;\\n};\\n// add metadata on freeze-family methods calling\\nvar onFreeze = function(it){\\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\\n return it;\\n};\\nvar meta = module.exports = {\\n KEY: META,\\n NEED: false,\\n fastKey: fastKey,\\n getWeak: getWeak,\\n onFreeze: onFreeze\\n};\\n\\n/***/ }),\\n/* 217 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar getKeys = __webpack_require__(24)\\n , toIObject = __webpack_require__(15);\\nmodule.exports = function(object, el){\\n var O = toIObject(object)\\n , keys = getKeys(O)\\n , length = keys.length\\n , index = 0\\n , key;\\n while(length > index)if(O[key = keys[index++]] === el)return key;\\n};\\n\\n/***/ }),\\n/* 218 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// all enumerable object keys, includes symbols\\nvar getKeys = __webpack_require__(24)\\n , gOPS = __webpack_require__(46)\\n , pIE = __webpack_require__(31);\\nmodule.exports = function(it){\\n var result = getKeys(it)\\n , getSymbols = gOPS.f;\\n if(getSymbols){\\n var symbols = getSymbols(it)\\n , isEnum = pIE.f\\n , i = 0\\n , key;\\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\\n } return result;\\n};\\n\\n/***/ }),\\n/* 219 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 7.2.2 IsArray(argument)\\nvar cof = __webpack_require__(25);\\nmodule.exports = Array.isArray || function isArray(arg){\\n return cof(arg) == 'Array';\\n};\\n\\n/***/ }),\\n/* 220 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\\nvar toIObject = __webpack_require__(15)\\n , gOPN = __webpack_require__(58).f\\n , toString = {}.toString;\\n\\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\\n ? Object.getOwnPropertyNames(window) : [];\\n\\nvar getWindowNames = function(it){\\n try {\\n return gOPN(it);\\n } catch(e){\\n return windowNames.slice();\\n }\\n};\\n\\nmodule.exports.f = function getOwnPropertyNames(it){\\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\\n};\\n\\n\\n/***/ }),\\n/* 221 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar pIE = __webpack_require__(31)\\n , createDesc = __webpack_require__(22)\\n , toIObject = __webpack_require__(15)\\n , toPrimitive = __webpack_require__(37)\\n , has = __webpack_require__(14)\\n , IE8_DOM_DEFINE = __webpack_require__(52)\\n , gOPD = Object.getOwnPropertyDescriptor;\\n\\nexports.f = __webpack_require__(13) ? gOPD : function getOwnPropertyDescriptor(O, P){\\n O = toIObject(O);\\n P = toPrimitive(P, true);\\n if(IE8_DOM_DEFINE)try {\\n return gOPD(O, P);\\n } catch(e){ /* empty */ }\\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\\n};\\n\\n/***/ }),\\n/* 222 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(45)('asyncIterator');\\n\\n/***/ }),\\n/* 223 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(45)('observable');\\n\\n/***/ }),\\n/* 224 */\\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n/*!\\n * vue-i18n v7.1.0 \\n * (c) 2017 kazuya kawaguchi\\n * Released under the MIT License.\\n */\\n/* */\\n\\n/**\\n * utilites\\n */\\n\\nfunction warn (msg, err) {\\n if (typeof console !== 'undefined') {\\n console.warn('[vue-i18n] ' + msg);\\n /* istanbul ignore if */\\n if (err) {\\n console.warn(err.stack);\\n }\\n }\\n}\\n\\nfunction isObject (obj) {\\n return obj !== null && typeof obj === 'object'\\n}\\n\\nvar toString = Object.prototype.toString;\\nvar OBJECT_STRING = '[object Object]';\\nfunction isPlainObject (obj) {\\n return toString.call(obj) === OBJECT_STRING\\n}\\n\\nfunction isNull (val) {\\n return val === null || val === undefined\\n}\\n\\nfunction parseArgs () {\\n var args = [], len = arguments.length;\\n while ( len-- ) args[ len ] = arguments[ len ];\\n\\n var locale = null;\\n var params = null;\\n if (args.length === 1) {\\n if (isObject(args[0]) || Array.isArray(args[0])) {\\n params = args[0];\\n } else if (typeof args[0] === 'string') {\\n locale = args[0];\\n }\\n } else if (args.length === 2) {\\n if (typeof args[0] === 'string') {\\n locale = args[0];\\n }\\n /* istanbul ignore if */\\n if (isObject(args[1]) || Array.isArray(args[1])) {\\n params = args[1];\\n }\\n }\\n\\n return { locale: locale, params: params }\\n}\\n\\nfunction getOldChoiceIndexFixed (choice) {\\n return choice\\n ? choice > 1\\n ? 1\\n : 0\\n : 1\\n}\\n\\nfunction getChoiceIndex (choice, choicesLength) {\\n choice = Math.abs(choice);\\n\\n if (choicesLength === 2) { return getOldChoiceIndexFixed(choice) }\\n\\n return choice ? Math.min(choice, 2) : 0\\n}\\n\\nfunction fetchChoice (message, choice) {\\n /* istanbul ignore if */\\n if (!message && typeof message !== 'string') { return null }\\n var choices = message.split('|');\\n\\n choice = getChoiceIndex(choice, choices.length);\\n if (!choices[choice]) { return message }\\n return choices[choice].trim()\\n}\\n\\nfunction looseClone (obj) {\\n return JSON.parse(JSON.stringify(obj))\\n}\\n\\nfunction remove (arr, item) {\\n if (arr.length) {\\n var index = arr.indexOf(item);\\n if (index > -1) {\\n return arr.splice(index, 1)\\n }\\n }\\n}\\n\\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\\nfunction hasOwn (obj, key) {\\n return hasOwnProperty.call(obj, key)\\n}\\n\\nfunction merge (target) {\\n var arguments$1 = arguments;\\n\\n var output = Object(target);\\n for (var i = 1; i < arguments.length; i++) {\\n var source = arguments$1[i];\\n if (source !== undefined && source !== null) {\\n var key = (void 0);\\n for (key in source) {\\n if (hasOwn(source, key)) {\\n if (isObject(source[key])) {\\n output[key] = merge(output[key], source[key]);\\n } else {\\n output[key] = source[key];\\n }\\n }\\n }\\n }\\n }\\n return output\\n}\\n\\nvar canUseDateTimeFormat =\\n typeof Intl !== 'undefined' && typeof Intl.DateTimeFormat !== 'undefined';\\n\\nvar canUseNumberFormat =\\n typeof Intl !== 'undefined' && typeof Intl.NumberFormat !== 'undefined';\\n\\n/* */\\n\\nfunction extend (Vue) {\\n Vue.prototype.$t = function (key) {\\n var values = [], len = arguments.length - 1;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\\n\\n var i18n = this.$i18n;\\n return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\\n };\\n\\n Vue.prototype.$tc = function (key, choice) {\\n var values = [], len = arguments.length - 2;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\\n\\n var i18n = this.$i18n;\\n return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\\n };\\n\\n Vue.prototype.$te = function (key, locale) {\\n var i18n = this.$i18n;\\n return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\\n };\\n\\n Vue.prototype.$d = function (value) {\\n var args = [], len = arguments.length - 1;\\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\\n\\n return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\\n var ref;\\n };\\n\\n Vue.prototype.$n = function (value) {\\n var args = [], len = arguments.length - 1;\\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\\n\\n return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\\n var ref;\\n };\\n}\\n\\n/* */\\n\\nvar mixin = {\\n beforeCreate: function beforeCreate () {\\n var options = this.$options;\\n options.i18n = options.i18n || (options.__i18n ? {} : null);\\n\\n if (options.i18n) {\\n if (options.i18n instanceof VueI18n) {\\n // init locale messages via custom blocks\\n if (options.__i18n) {\\n try {\\n var localeMessages = {};\\n options.__i18n.forEach(function (resource) {\\n localeMessages = merge(localeMessages, JSON.parse(resource));\\n });\\n Object.keys(localeMessages).forEach(function (locale) {\\n options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\\n });\\n } catch (e) {\\n if (false) {\\n warn(\\\"Cannot parse locale messages via custom blocks.\\\", e);\\n }\\n }\\n }\\n this._i18n = options.i18n;\\n this._i18nWatcher = this._i18n.watchI18nData();\\n this._i18n.subscribeDataChanging(this);\\n this._subscribing = true;\\n } else if (isPlainObject(options.i18n)) {\\n // component local i18n\\n if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\\n options.i18n.root = this.$root.$i18n;\\n options.i18n.fallbackLocale = this.$root.$i18n.fallbackLocale;\\n options.i18n.silentTranslationWarn = this.$root.$i18n.silentTranslationWarn;\\n }\\n\\n // init locale messages via custom blocks\\n if (options.__i18n) {\\n try {\\n var localeMessages$1 = {};\\n options.__i18n.forEach(function (resource) {\\n localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\\n });\\n options.i18n.messages = localeMessages$1;\\n } catch (e) {\\n if (false) {\\n warn(\\\"Cannot parse locale messages via custom blocks.\\\", e);\\n }\\n }\\n }\\n\\n this._i18n = new VueI18n(options.i18n);\\n this._i18nWatcher = this._i18n.watchI18nData();\\n this._i18n.subscribeDataChanging(this);\\n this._subscribing = true;\\n\\n if (options.i18n.sync === undefined || !!options.i18n.sync) {\\n this._localeWatcher = this.$i18n.watchLocale();\\n }\\n } else {\\n if (false) {\\n warn(\\\"Cannot be interpreted 'i18n' option.\\\");\\n }\\n }\\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\\n // root i18n\\n this._i18n = this.$root.$i18n;\\n this._i18n.subscribeDataChanging(this);\\n this._subscribing = true;\\n }\\n },\\n\\n beforeDestroy: function beforeDestroy () {\\n if (!this._i18n) { return }\\n\\n if (this._subscribing) {\\n this._i18n.unsubscribeDataChanging(this);\\n delete this._subscribing;\\n }\\n\\n if (this._i18nWatcher) {\\n this._i18nWatcher();\\n delete this._i18nWatcher;\\n }\\n\\n if (this._localeWatcher) {\\n this._localeWatcher();\\n delete this._localeWatcher;\\n }\\n\\n this._i18n = null;\\n }\\n};\\n\\n/* */\\n\\nvar component = {\\n name: 'i18n',\\n functional: true,\\n props: {\\n tag: {\\n type: String,\\n default: 'span'\\n },\\n path: {\\n type: String,\\n required: true\\n },\\n locale: {\\n type: String\\n }\\n },\\n render: function render (h, ref) {\\n var props = ref.props;\\n var data = ref.data;\\n var children = ref.children;\\n var parent = ref.parent;\\n\\n var i18n = parent.$i18n;\\n if (!i18n) {\\n if (false) {\\n warn('Cannot find VueI18n instance!');\\n }\\n return children\\n }\\n\\n var path = props.path;\\n var locale = props.locale;\\n\\n var params = [];\\n locale && params.push(locale);\\n children.forEach(function (child) { return params.push(child); });\\n\\n return h(props.tag, data, i18n.i.apply(i18n, [ path ].concat( params )))\\n }\\n};\\n\\nvar Vue;\\n\\nfunction install (_Vue) {\\n Vue = _Vue;\\n\\n var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\\n /* istanbul ignore if */\\n if (false) {\\n warn('already installed.');\\n return\\n }\\n install.installed = true;\\n\\n /* istanbul ignore if */\\n if (false) {\\n warn((\\\"vue-i18n (\\\" + (install.version) + \\\") need to use Vue 2.0 or later (Vue: \\\" + (Vue.version) + \\\").\\\"));\\n return\\n }\\n\\n Object.defineProperty(Vue.prototype, '$i18n', {\\n get: function get () { return this._i18n }\\n });\\n\\n extend(Vue);\\n Vue.mixin(mixin);\\n Vue.component(component.name, component);\\n\\n // use object-based merge strategy\\n var strats = Vue.config.optionMergeStrategies;\\n strats.i18n = strats.methods;\\n}\\n\\n/* */\\n\\nvar BaseFormatter = function BaseFormatter () {\\n this._caches = Object.create(null);\\n};\\n\\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\\n var tokens = this._caches[message];\\n if (!tokens) {\\n tokens = parse(message);\\n this._caches[message] = tokens;\\n }\\n return compile(tokens, values)\\n};\\n\\nvar RE_TOKEN_LIST_VALUE = /^(\\\\d)+/;\\nvar RE_TOKEN_NAMED_VALUE = /^(\\\\w)+/;\\n\\nfunction parse (format) {\\n var tokens = [];\\n var position = 0;\\n\\n var text = '';\\n while (position < format.length) {\\n var char = format[position++];\\n if (char === '{') {\\n if (text) {\\n tokens.push({ type: 'text', value: text });\\n }\\n\\n text = '';\\n var sub = '';\\n char = format[position++];\\n while (char !== '}') {\\n sub += char;\\n char = format[position++];\\n }\\n\\n var type = RE_TOKEN_LIST_VALUE.test(sub)\\n ? 'list'\\n : RE_TOKEN_NAMED_VALUE.test(sub)\\n ? 'named'\\n : 'unknown';\\n tokens.push({ value: sub, type: type });\\n } else if (char === '%') {\\n // when found rails i18n syntax, skip text capture\\n if (format[(position)] !== '{') {\\n text += char;\\n }\\n } else {\\n text += char;\\n }\\n }\\n\\n text && tokens.push({ type: 'text', value: text });\\n\\n return tokens\\n}\\n\\nfunction compile (tokens, values) {\\n var compiled = [];\\n var index = 0;\\n\\n var mode = Array.isArray(values)\\n ? 'list'\\n : isObject(values)\\n ? 'named'\\n : 'unknown';\\n if (mode === 'unknown') { return compiled }\\n\\n while (index < tokens.length) {\\n var token = tokens[index];\\n switch (token.type) {\\n case 'text':\\n compiled.push(token.value);\\n break\\n case 'list':\\n if (mode === 'list') {\\n compiled.push(values[parseInt(token.value, 10)]);\\n } else {\\n if (false) {\\n warn((\\\"Type of token '\\\" + (token.type) + \\\"' and format of value '\\\" + mode + \\\"' don't match!\\\"));\\n }\\n }\\n break\\n case 'named':\\n if (mode === 'named') {\\n compiled.push((values)[token.value]);\\n } else {\\n if (false) {\\n warn((\\\"Type of token '\\\" + (token.type) + \\\"' and format of value '\\\" + mode + \\\"' don't match!\\\"));\\n }\\n }\\n break\\n case 'unknown':\\n if (false) {\\n warn(\\\"Detect 'unknown' type of token!\\\");\\n }\\n break\\n }\\n index++;\\n }\\n\\n return compiled\\n}\\n\\n/* */\\n\\n/**\\n * Path paerser\\n * - Inspired:\\n * Vue.js Path parser\\n */\\n\\n// actions\\nvar APPEND = 0;\\nvar PUSH = 1;\\nvar INC_SUB_PATH_DEPTH = 2;\\nvar PUSH_SUB_PATH = 3;\\n\\n// states\\nvar BEFORE_PATH = 0;\\nvar IN_PATH = 1;\\nvar BEFORE_IDENT = 2;\\nvar IN_IDENT = 3;\\nvar IN_SUB_PATH = 4;\\nvar IN_SINGLE_QUOTE = 5;\\nvar IN_DOUBLE_QUOTE = 6;\\nvar AFTER_PATH = 7;\\nvar ERROR = 8;\\n\\nvar pathStateMachine = [];\\n\\npathStateMachine[BEFORE_PATH] = {\\n 'ws': [BEFORE_PATH],\\n 'ident': [IN_IDENT, APPEND],\\n '[': [IN_SUB_PATH],\\n 'eof': [AFTER_PATH]\\n};\\n\\npathStateMachine[IN_PATH] = {\\n 'ws': [IN_PATH],\\n '.': [BEFORE_IDENT],\\n '[': [IN_SUB_PATH],\\n 'eof': [AFTER_PATH]\\n};\\n\\npathStateMachine[BEFORE_IDENT] = {\\n 'ws': [BEFORE_IDENT],\\n 'ident': [IN_IDENT, APPEND],\\n '0': [IN_IDENT, APPEND],\\n 'number': [IN_IDENT, APPEND]\\n};\\n\\npathStateMachine[IN_IDENT] = {\\n 'ident': [IN_IDENT, APPEND],\\n '0': [IN_IDENT, APPEND],\\n 'number': [IN_IDENT, APPEND],\\n 'ws': [IN_PATH, PUSH],\\n '.': [BEFORE_IDENT, PUSH],\\n '[': [IN_SUB_PATH, PUSH],\\n 'eof': [AFTER_PATH, PUSH]\\n};\\n\\npathStateMachine[IN_SUB_PATH] = {\\n \\\"'\\\": [IN_SINGLE_QUOTE, APPEND],\\n '\\\"': [IN_DOUBLE_QUOTE, APPEND],\\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\\n ']': [IN_PATH, PUSH_SUB_PATH],\\n 'eof': ERROR,\\n 'else': [IN_SUB_PATH, APPEND]\\n};\\n\\npathStateMachine[IN_SINGLE_QUOTE] = {\\n \\\"'\\\": [IN_SUB_PATH, APPEND],\\n 'eof': ERROR,\\n 'else': [IN_SINGLE_QUOTE, APPEND]\\n};\\n\\npathStateMachine[IN_DOUBLE_QUOTE] = {\\n '\\\"': [IN_SUB_PATH, APPEND],\\n 'eof': ERROR,\\n 'else': [IN_DOUBLE_QUOTE, APPEND]\\n};\\n\\n/**\\n * Check if an expression is a literal value.\\n */\\n\\nvar literalValueRE = /^\\\\s?(true|false|-?[\\\\d.]+|'[^']*'|\\\"[^\\\"]*\\\")\\\\s?$/;\\nfunction isLiteral (exp) {\\n return literalValueRE.test(exp)\\n}\\n\\n/**\\n * Strip quotes from a string\\n */\\n\\nfunction stripQuotes (str) {\\n var a = str.charCodeAt(0);\\n var b = str.charCodeAt(str.length - 1);\\n return a === b && (a === 0x22 || a === 0x27)\\n ? str.slice(1, -1)\\n : str\\n}\\n\\n/**\\n * Determine the type of a character in a keypath.\\n */\\n\\nfunction getPathCharType (ch) {\\n if (ch === undefined || ch === null) { return 'eof' }\\n\\n var code = ch.charCodeAt(0);\\n\\n switch (code) {\\n case 0x5B: // [\\n case 0x5D: // ]\\n case 0x2E: // .\\n case 0x22: // \\\"\\n case 0x27: // '\\n case 0x30: // 0\\n return ch\\n\\n case 0x5F: // _\\n case 0x24: // $\\n case 0x2D: // -\\n return 'ident'\\n\\n case 0x20: // Space\\n case 0x09: // Tab\\n case 0x0A: // Newline\\n case 0x0D: // Return\\n case 0xA0: // No-break space\\n case 0xFEFF: // Byte Order Mark\\n case 0x2028: // Line Separator\\n case 0x2029: // Paragraph Separator\\n return 'ws'\\n }\\n\\n // a-z, A-Z\\n if ((code >= 0x61 && code <= 0x7A) || (code >= 0x41 && code <= 0x5A)) {\\n return 'ident'\\n }\\n\\n // 1-9\\n if (code >= 0x31 && code <= 0x39) { return 'number' }\\n\\n return 'else'\\n}\\n\\n/**\\n * Format a subPath, return its plain form if it is\\n * a literal string or number. Otherwise prepend the\\n * dynamic indicator (*).\\n */\\n\\nfunction formatSubPath (path) {\\n var trimmed = path.trim();\\n // invalid leading 0\\n if (path.charAt(0) === '0' && isNaN(path)) { return false }\\n\\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\\n}\\n\\n/**\\n * Parse a string path into an array of segments\\n */\\n\\nfunction parse$1 (path) {\\n var keys = [];\\n var index = -1;\\n var mode = BEFORE_PATH;\\n var subPathDepth = 0;\\n var c;\\n var key;\\n var newChar;\\n var type;\\n var transition;\\n var action;\\n var typeMap;\\n var actions = [];\\n\\n actions[PUSH] = function () {\\n if (key !== undefined) {\\n keys.push(key);\\n key = undefined;\\n }\\n };\\n\\n actions[APPEND] = function () {\\n if (key === undefined) {\\n key = newChar;\\n } else {\\n key += newChar;\\n }\\n };\\n\\n actions[INC_SUB_PATH_DEPTH] = function () {\\n actions[APPEND]();\\n subPathDepth++;\\n };\\n\\n actions[PUSH_SUB_PATH] = function () {\\n if (subPathDepth > 0) {\\n subPathDepth--;\\n mode = IN_SUB_PATH;\\n actions[APPEND]();\\n } else {\\n subPathDepth = 0;\\n key = formatSubPath(key);\\n if (key === false) {\\n return false\\n } else {\\n actions[PUSH]();\\n }\\n }\\n };\\n\\n function maybeUnescapeQuote () {\\n var nextChar = path[index + 1];\\n if ((mode === IN_SINGLE_QUOTE && nextChar === \\\"'\\\") ||\\n (mode === IN_DOUBLE_QUOTE && nextChar === '\\\"')) {\\n index++;\\n newChar = '\\\\\\\\' + nextChar;\\n actions[APPEND]();\\n return true\\n }\\n }\\n\\n while (mode !== null) {\\n index++;\\n c = path[index];\\n\\n if (c === '\\\\\\\\' && maybeUnescapeQuote()) {\\n continue\\n }\\n\\n type = getPathCharType(c);\\n typeMap = pathStateMachine[mode];\\n transition = typeMap[type] || typeMap['else'] || ERROR;\\n\\n if (transition === ERROR) {\\n return // parse error\\n }\\n\\n mode = transition[0];\\n action = actions[transition[1]];\\n if (action) {\\n newChar = transition[2];\\n newChar = newChar === undefined\\n ? c\\n : newChar;\\n if (action() === false) {\\n return\\n }\\n }\\n\\n if (mode === AFTER_PATH) {\\n return keys\\n }\\n }\\n}\\n\\n\\n\\n\\n\\nfunction empty (target) {\\n /* istanbul ignore else */\\n if (Array.isArray(target)) {\\n return target.length === 0\\n } else {\\n return false\\n }\\n}\\n\\nvar I18nPath = function I18nPath () {\\n this._cache = Object.create(null);\\n};\\n\\n/**\\n * External parse that check for a cache hit first\\n */\\nI18nPath.prototype.parsePath = function parsePath (path) {\\n var hit = this._cache[path];\\n if (!hit) {\\n hit = parse$1(path);\\n if (hit) {\\n this._cache[path] = hit;\\n }\\n }\\n return hit || []\\n};\\n\\n/**\\n * Get path value from path string\\n */\\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\\n if (!isObject(obj)) { return null }\\n\\n var paths = this.parsePath(path);\\n if (empty(paths)) {\\n return null\\n } else {\\n var length = paths.length;\\n var ret = null;\\n var last = obj;\\n var i = 0;\\n while (i < length) {\\n var value = last[paths[i]];\\n if (value === undefined) {\\n last = null;\\n break\\n }\\n last = value;\\n i++;\\n }\\n\\n ret = last;\\n return ret\\n }\\n};\\n\\n/* */\\n\\nvar VueI18n = function VueI18n (options) {\\n var this$1 = this;\\n if ( options === void 0 ) options = {};\\n\\n var locale = options.locale || 'en-US';\\n var fallbackLocale = options.fallbackLocale || 'en-US';\\n var messages = options.messages || {};\\n var dateTimeFormats = options.dateTimeFormats || {};\\n var numberFormats = options.numberFormats || {};\\n\\n this._vm = null;\\n this._formatter = options.formatter || new BaseFormatter();\\n this._missing = options.missing || null;\\n this._root = options.root || null;\\n this._sync = options.sync === undefined ? true : !!options.sync;\\n this._fallbackRoot = options.fallbackRoot === undefined\\n ? true\\n : !!options.fallbackRoot;\\n this._silentTranslationWarn = options.silentTranslationWarn === undefined\\n ? false\\n : !!options.silentTranslationWarn;\\n this._dateTimeFormatters = {};\\n this._numberFormatters = {};\\n this._path = new I18nPath();\\n this._dataListeners = [];\\n\\n this._exist = function (message, key) {\\n if (!message || !key) { return false }\\n return !isNull(this$1._path.getPathValue(message, key))\\n };\\n\\n this._initVM({\\n locale: locale,\\n fallbackLocale: fallbackLocale,\\n messages: messages,\\n dateTimeFormats: dateTimeFormats,\\n numberFormats: numberFormats\\n });\\n};\\n\\nvar prototypeAccessors = { vm: {},messages: {},dateTimeFormats: {},numberFormats: {},locale: {},fallbackLocale: {},missing: {},formatter: {},silentTranslationWarn: {} };\\n\\nVueI18n.prototype._initVM = function _initVM (data) {\\n var silent = Vue.config.silent;\\n Vue.config.silent = true;\\n this._vm = new Vue({ data: data });\\n Vue.config.silent = silent;\\n};\\n\\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\\n this._dataListeners.push(vm);\\n};\\n\\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\\n remove(this._dataListeners, vm);\\n};\\n\\nVueI18n.prototype.watchI18nData = function watchI18nData () {\\n var self = this;\\n return this._vm.$watch('$data', function () {\\n var i = self._dataListeners.length;\\n while (i--) {\\n Vue.nextTick(function () {\\n self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\\n });\\n }\\n }, { deep: true })\\n};\\n\\nVueI18n.prototype.watchLocale = function watchLocale () {\\n /* istanbul ignore if */\\n if (!this._sync || !this._root) { return null }\\n var target = this._vm;\\n return this._root.vm.$watch('locale', function (val) {\\n target.$set(target, 'locale', val);\\n target.$forceUpdate();\\n }, { immediate: true })\\n};\\n\\nprototypeAccessors.vm.get = function () { return this._vm };\\n\\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\\n\\nprototypeAccessors.locale.get = function () { return this._vm.locale };\\nprototypeAccessors.locale.set = function (locale) {\\n this._vm.$set(this._vm, 'locale', locale);\\n};\\n\\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\\nprototypeAccessors.fallbackLocale.set = function (locale) {\\n this._vm.$set(this._vm, 'fallbackLocale', locale);\\n};\\n\\nprototypeAccessors.missing.get = function () { return this._missing };\\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\\n\\nprototypeAccessors.formatter.get = function () { return this._formatter };\\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\\n\\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\\n\\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\\n\\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm) {\\n if (!isNull(result)) { return result }\\n if (this.missing) {\\n this.missing.apply(null, [locale, key, vm]);\\n } else {\\n if (false) {\\n warn(\\n \\\"Cannot translate the value of keypath '\\\" + key + \\\"'. \\\" +\\n 'Use the value of keypath as default.'\\n );\\n }\\n }\\n return key\\n};\\n\\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\\n return !val && !isNull(this._root) && this._fallbackRoot\\n};\\n\\nVueI18n.prototype._interpolate = function _interpolate (\\n locale,\\n message,\\n key,\\n host,\\n interpolateMode,\\n values\\n) {\\n if (!message) { return null }\\n\\n var pathRet = this._path.getPathValue(message, key);\\n if (Array.isArray(pathRet)) { return pathRet }\\n\\n var ret;\\n if (isNull(pathRet)) {\\n /* istanbul ignore else */\\n if (isPlainObject(message)) {\\n ret = message[key];\\n if (typeof ret !== 'string') {\\n if (false) {\\n warn((\\\"Value of key '\\\" + key + \\\"' is not a string!\\\"));\\n }\\n return null\\n }\\n } else {\\n return null\\n }\\n } else {\\n /* istanbul ignore else */\\n if (typeof pathRet === 'string') {\\n ret = pathRet;\\n } else {\\n if (false) {\\n warn((\\\"Value of key '\\\" + key + \\\"' is not a string!\\\"));\\n }\\n return null\\n }\\n }\\n\\n // Check for the existance of links within the translated string\\n if (ret.indexOf('@:') >= 0) {\\n ret = this._link(locale, message, ret, host, interpolateMode, values);\\n }\\n\\n return !values ? ret : this._render(ret, interpolateMode, values)\\n};\\n\\nVueI18n.prototype._link = function _link (\\n locale,\\n message,\\n str,\\n host,\\n interpolateMode,\\n values\\n) {\\n var this$1 = this;\\n\\n var ret = str;\\n\\n // Match all the links within the local\\n // We are going to replace each of\\n // them with its translation\\n var matches = ret.match(/(@:[\\\\w\\\\-_|.]+)/g);\\n for (var idx in matches) {\\n // ie compatible: filter custom array\\n // prototype method\\n if (!matches.hasOwnProperty(idx)) {\\n continue\\n }\\n var link = matches[idx];\\n // Remove the leading @:\\n var linkPlaceholder = link.substr(2);\\n // Translate the link\\n var translated = this$1._interpolate(\\n locale, message, linkPlaceholder, host,\\n interpolateMode === 'raw' ? 'string' : interpolateMode,\\n interpolateMode === 'raw' ? undefined : values\\n );\\n\\n if (this$1._isFallbackRoot(translated)) {\\n if (false) {\\n warn((\\\"Fall back to translate the link placeholder '\\\" + linkPlaceholder + \\\"' with root locale.\\\"));\\n }\\n /* istanbul ignore if */\\n if (!this$1._root) { throw Error('unexpected error') }\\n var root = this$1._root;\\n translated = root._translate(\\n root._getMessages(), root.locale, root.fallbackLocale,\\n linkPlaceholder, host, interpolateMode, values\\n );\\n }\\n translated = this$1._warnDefault(locale, linkPlaceholder, translated, host);\\n\\n // Replace the link with the translated\\n ret = !translated ? ret : ret.replace(link, translated);\\n }\\n\\n return ret\\n};\\n\\nVueI18n.prototype._render = function _render (message, interpolateMode, values) {\\n var ret = this._formatter.interpolate(message, values);\\n // if interpolateMode is **not** 'string' ('row'),\\n // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\\n return interpolateMode === 'string' ? ret.join('') : ret\\n};\\n\\nVueI18n.prototype._translate = function _translate (\\n messages,\\n locale,\\n fallback,\\n key,\\n host,\\n interpolateMode,\\n args\\n) {\\n var res =\\n this._interpolate(locale, messages[locale], key, host, interpolateMode, args);\\n if (!isNull(res)) { return res }\\n\\n res = this._interpolate(fallback, messages[fallback], key, host, interpolateMode, args);\\n if (!isNull(res)) {\\n if (false) {\\n warn((\\\"Fall back to translate the keypath '\\\" + key + \\\"' with '\\\" + fallback + \\\"' locale.\\\"));\\n }\\n return res\\n } else {\\n return null\\n }\\n};\\n\\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\\n var values = [], len = arguments.length - 4;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\\n\\n if (!key) { return '' }\\n\\n var parsedArgs = parseArgs.apply(void 0, values);\\n var locale = parsedArgs.locale || _locale;\\n\\n var ret = this._translate(\\n messages, locale, this.fallbackLocale, key,\\n host, 'string', parsedArgs.params\\n );\\n if (this._isFallbackRoot(ret)) {\\n if (false) {\\n warn((\\\"Fall back to translate the keypath '\\\" + key + \\\"' with root locale.\\\"));\\n }\\n /* istanbul ignore if */\\n if (!this._root) { throw Error('unexpected error') }\\n return (ref = this._root).t.apply(ref, [ key ].concat( values ))\\n } else {\\n return this._warnDefault(locale, key, ret, host)\\n }\\n var ref;\\n};\\n\\nVueI18n.prototype.t = function t (key) {\\n var values = [], len = arguments.length - 1;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\\n\\n return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\\n var ref;\\n};\\n\\nVueI18n.prototype._i = function _i (key, locale, messages, host) {\\n var values = [], len = arguments.length - 4;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\\n\\n var ret =\\n this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\\n if (this._isFallbackRoot(ret)) {\\n if (false) {\\n warn((\\\"Fall back to interpolate the keypath '\\\" + key + \\\"' with root locale.\\\"));\\n }\\n if (!this._root) { throw Error('unexpected error') }\\n return (ref = this._root).i.apply(ref, [ key ].concat( values ))\\n } else {\\n return this._warnDefault(locale, key, ret, host)\\n }\\n var ref;\\n};\\n\\nVueI18n.prototype.i = function i (key) {\\n var values = [], len = arguments.length - 1;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\\n\\n /* istanbul ignore if */\\n if (!key) { return '' }\\n\\n var locale = this.locale;\\n var index = 0;\\n if (typeof values[0] === 'string') {\\n locale = values[0];\\n index = 1;\\n }\\n\\n var params = [];\\n for (var i = index; i < values.length; i++) {\\n params.push(values[i]);\\n }\\n\\n return (ref = this)._i.apply(ref, [ key, locale, this._getMessages(), null ].concat( params ))\\n var ref;\\n};\\n\\nVueI18n.prototype._tc = function _tc (\\n key,\\n _locale,\\n messages,\\n host,\\n choice\\n) {\\n var values = [], len = arguments.length - 5;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\\n\\n if (!key) { return '' }\\n if (choice === undefined) {\\n choice = 1;\\n }\\n return fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\\n var ref;\\n};\\n\\nVueI18n.prototype.tc = function tc (key, choice) {\\n var values = [], len = arguments.length - 2;\\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\\n\\n return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\\n var ref;\\n};\\n\\nVueI18n.prototype._te = function _te (key, locale, messages) {\\n var args = [], len = arguments.length - 3;\\n while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\\n\\n var _locale = parseArgs.apply(void 0, args).locale || locale;\\n return this._exist(messages[_locale], key)\\n};\\n\\nVueI18n.prototype.te = function te (key, locale) {\\n return this._te(key, this.locale, this._getMessages(), locale)\\n};\\n\\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\\n return looseClone(this._vm.messages[locale] || {})\\n};\\n\\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\\n this._vm.messages[locale] = message;\\n};\\n\\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\\n this._vm.messages[locale] = Vue.util.extend(this._vm.messages[locale] || {}, message);\\n};\\n\\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\\n return looseClone(this._vm.dateTimeFormats[locale] || {})\\n};\\n\\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\\n this._vm.dateTimeFormats[locale] = format;\\n};\\n\\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\\n this._vm.dateTimeFormats[locale] = Vue.util.extend(this._vm.dateTimeFormats[locale] || {}, format);\\n};\\n\\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\\n value,\\n locale,\\n fallback,\\n dateTimeFormats,\\n key\\n) {\\n var _locale = locale;\\n var formats = dateTimeFormats[_locale];\\n\\n // fallback locale\\n if (isNull(formats) || isNull(formats[key])) {\\n if (false) {\\n warn((\\\"Fall back to '\\\" + fallback + \\\"' datetime formats from '\\\" + locale + \\\" datetime formats.\\\"));\\n }\\n _locale = fallback;\\n formats = dateTimeFormats[_locale];\\n }\\n\\n if (isNull(formats) || isNull(formats[key])) {\\n return null\\n } else {\\n var format = formats[key];\\n var id = _locale + \\\"__\\\" + key;\\n var formatter = this._dateTimeFormatters[id];\\n if (!formatter) {\\n formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\\n }\\n return formatter.format(value)\\n }\\n};\\n\\nVueI18n.prototype._d = function _d (value, locale, key) {\\n /* istanbul ignore if */\\n if (false) {\\n warn('Cannot format a Date value due to not support Intl.DateTimeFormat.');\\n return ''\\n }\\n\\n if (!key) {\\n return new Intl.DateTimeFormat(locale).format(value)\\n }\\n\\n var ret =\\n this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\\n if (this._isFallbackRoot(ret)) {\\n if (false) {\\n warn((\\\"Fall back to datetime localization of root: key '\\\" + key + \\\"' .\\\"));\\n }\\n /* istanbul ignore if */\\n if (!this._root) { throw Error('unexpected error') }\\n return this._root.d(value, key, locale)\\n } else {\\n return ret || ''\\n }\\n};\\n\\nVueI18n.prototype.d = function d (value) {\\n var args = [], len = arguments.length - 1;\\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\\n\\n var locale = this.locale;\\n var key = null;\\n\\n if (args.length === 1) {\\n if (typeof args[0] === 'string') {\\n key = args[0];\\n } else if (isObject(args[0])) {\\n if (args[0].locale) {\\n locale = args[0].locale;\\n }\\n if (args[0].key) {\\n key = args[0].key;\\n }\\n }\\n } else if (args.length === 2) {\\n if (typeof args[0] === 'string') {\\n key = args[0];\\n }\\n if (typeof args[1] === 'string') {\\n locale = args[1];\\n }\\n }\\n\\n return this._d(value, locale, key)\\n};\\n\\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\\n return looseClone(this._vm.numberFormats[locale] || {})\\n};\\n\\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\\n this._vm.numberFormats[locale] = format;\\n};\\n\\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\\n this._vm.numberFormats[locale] = Vue.util.extend(this._vm.numberFormats[locale] || {}, format);\\n};\\n\\nVueI18n.prototype._localizeNumber = function _localizeNumber (\\n value,\\n locale,\\n fallback,\\n numberFormats,\\n key\\n) {\\n var _locale = locale;\\n var formats = numberFormats[_locale];\\n\\n // fallback locale\\n if (isNull(formats) || isNull(formats[key])) {\\n if (false) {\\n warn((\\\"Fall back to '\\\" + fallback + \\\"' number formats from '\\\" + locale + \\\" number formats.\\\"));\\n }\\n _locale = fallback;\\n formats = numberFormats[_locale];\\n }\\n\\n if (isNull(formats) || isNull(formats[key])) {\\n return null\\n } else {\\n var format = formats[key];\\n var id = _locale + \\\"__\\\" + key;\\n var formatter = this._numberFormatters[id];\\n if (!formatter) {\\n formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\\n }\\n return formatter.format(value)\\n }\\n};\\n\\nVueI18n.prototype._n = function _n (value, locale, key) {\\n /* istanbul ignore if */\\n if (false) {\\n warn('Cannot format a Date value due to not support Intl.NumberFormat.');\\n return ''\\n }\\n\\n if (!key) {\\n return new Intl.NumberFormat(locale).format(value)\\n }\\n\\n var ret =\\n this._localizeNumber(value, locale, this.fallbackLocale, this._getNumberFormats(), key);\\n if (this._isFallbackRoot(ret)) {\\n if (false) {\\n warn((\\\"Fall back to number localization of root: key '\\\" + key + \\\"' .\\\"));\\n }\\n /* istanbul ignore if */\\n if (!this._root) { throw Error('unexpected error') }\\n return this._root.n(value, key, locale)\\n } else {\\n return ret || ''\\n }\\n};\\n\\nVueI18n.prototype.n = function n (value) {\\n var args = [], len = arguments.length - 1;\\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\\n\\n var locale = this.locale;\\n var key = null;\\n\\n if (args.length === 1) {\\n if (typeof args[0] === 'string') {\\n key = args[0];\\n } else if (isObject(args[0])) {\\n if (args[0].locale) {\\n locale = args[0].locale;\\n }\\n if (args[0].key) {\\n key = args[0].key;\\n }\\n }\\n } else if (args.length === 2) {\\n if (typeof args[0] === 'string') {\\n key = args[0];\\n }\\n if (typeof args[1] === 'string') {\\n locale = args[1];\\n }\\n }\\n\\n return this._n(value, locale, key)\\n};\\n\\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\\n\\nVueI18n.availabilities = {\\n dateTimeFormat: canUseDateTimeFormat,\\n numberFormat: canUseNumberFormat\\n};\\nVueI18n.install = install;\\nVueI18n.version = '7.1.0';\\n\\n/* istanbul ignore if */\\nif (typeof window !== 'undefined' && window.Vue) {\\n window.Vue.use(VueI18n);\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"a\\\"] = (VueI18n);\\n\\n\\n/***/ }),\\n/* 225 */,\\n/* 226 */,\\n/* 227 */,\\n/* 228 */,\\n/* 229 */\\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n/**\\n * vue-router v2.7.0\\n * (c) 2017 Evan You\\n * @license MIT\\n */\\n/* */\\n\\nfunction assert (condition, message) {\\n if (!condition) {\\n throw new Error((\\\"[vue-router] \\\" + message))\\n }\\n}\\n\\nfunction warn (condition, message) {\\n if (false) {\\n typeof console !== 'undefined' && console.warn((\\\"[vue-router] \\\" + message));\\n }\\n}\\n\\nfunction isError (err) {\\n return Object.prototype.toString.call(err).indexOf('Error') > -1\\n}\\n\\nvar View = {\\n name: 'router-view',\\n functional: true,\\n props: {\\n name: {\\n type: String,\\n default: 'default'\\n }\\n },\\n render: function render (_, ref) {\\n var props = ref.props;\\n var children = ref.children;\\n var parent = ref.parent;\\n var data = ref.data;\\n\\n data.routerView = true;\\n\\n // directly use parent context's createElement() function\\n // so that components rendered by router-view can resolve named slots\\n var h = parent.$createElement;\\n var name = props.name;\\n var route = parent.$route;\\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\\n\\n // determine current view depth, also check to see if the tree\\n // has been toggled inactive but kept-alive.\\n var depth = 0;\\n var inactive = false;\\n while (parent && parent._routerRoot !== parent) {\\n if (parent.$vnode && parent.$vnode.data.routerView) {\\n depth++;\\n }\\n if (parent._inactive) {\\n inactive = true;\\n }\\n parent = parent.$parent;\\n }\\n data.routerViewDepth = depth;\\n\\n // render previous view if the tree is inactive and kept-alive\\n if (inactive) {\\n return h(cache[name], data, children)\\n }\\n\\n var matched = route.matched[depth];\\n // render empty node if no matched route\\n if (!matched) {\\n cache[name] = null;\\n return h()\\n }\\n\\n var component = cache[name] = matched.components[name];\\n\\n // attach instance registration hook\\n // this will be called in the instance's injected lifecycle hooks\\n data.registerRouteInstance = function (vm, val) {\\n // val could be undefined for unregistration\\n var current = matched.instances[name];\\n if (\\n (val && current !== vm) ||\\n (!val && current === vm)\\n ) {\\n matched.instances[name] = val;\\n }\\n }\\n\\n // also regiseter instance in prepatch hook\\n // in case the same component instance is reused across different routes\\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\\n matched.instances[name] = vnode.componentInstance;\\n };\\n\\n // resolve props\\n data.props = resolveProps(route, matched.props && matched.props[name]);\\n\\n return h(component, data, children)\\n }\\n};\\n\\nfunction resolveProps (route, config) {\\n switch (typeof config) {\\n case 'undefined':\\n return\\n case 'object':\\n return config\\n case 'function':\\n return config(route)\\n case 'boolean':\\n return config ? route.params : undefined\\n default:\\n if (false) {\\n warn(\\n false,\\n \\\"props in \\\\\\\"\\\" + (route.path) + \\\"\\\\\\\" is a \\\" + (typeof config) + \\\", \\\" +\\n \\\"expecting an object, function or boolean.\\\"\\n );\\n }\\n }\\n}\\n\\n/* */\\n\\nvar encodeReserveRE = /[!'()*]/g;\\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\\nvar commaRE = /%2C/g;\\n\\n// fixed encodeURIComponent which is more conformant to RFC3986:\\n// - escapes [!'()*]\\n// - preserve commas\\nvar encode = function (str) { return encodeURIComponent(str)\\n .replace(encodeReserveRE, encodeReserveReplacer)\\n .replace(commaRE, ','); };\\n\\nvar decode = decodeURIComponent;\\n\\nfunction resolveQuery (\\n query,\\n extraQuery,\\n _parseQuery\\n) {\\n if ( extraQuery === void 0 ) extraQuery = {};\\n\\n var parse = _parseQuery || parseQuery;\\n var parsedQuery;\\n try {\\n parsedQuery = parse(query || '');\\n } catch (e) {\\n \\\"production\\\" !== 'production' && warn(false, e.message);\\n parsedQuery = {};\\n }\\n for (var key in extraQuery) {\\n var val = extraQuery[key];\\n parsedQuery[key] = Array.isArray(val) ? val.slice() : val;\\n }\\n return parsedQuery\\n}\\n\\nfunction parseQuery (query) {\\n var res = {};\\n\\n query = query.trim().replace(/^(\\\\?|#|&)/, '');\\n\\n if (!query) {\\n return res\\n }\\n\\n query.split('&').forEach(function (param) {\\n var parts = param.replace(/\\\\+/g, ' ').split('=');\\n var key = decode(parts.shift());\\n var val = parts.length > 0\\n ? decode(parts.join('='))\\n : null;\\n\\n if (res[key] === undefined) {\\n res[key] = val;\\n } else if (Array.isArray(res[key])) {\\n res[key].push(val);\\n } else {\\n res[key] = [res[key], val];\\n }\\n });\\n\\n return res\\n}\\n\\nfunction stringifyQuery (obj) {\\n var res = obj ? Object.keys(obj).map(function (key) {\\n var val = obj[key];\\n\\n if (val === undefined) {\\n return ''\\n }\\n\\n if (val === null) {\\n return encode(key)\\n }\\n\\n if (Array.isArray(val)) {\\n var result = [];\\n val.forEach(function (val2) {\\n if (val2 === undefined) {\\n return\\n }\\n if (val2 === null) {\\n result.push(encode(key));\\n } else {\\n result.push(encode(key) + '=' + encode(val2));\\n }\\n });\\n return result.join('&')\\n }\\n\\n return encode(key) + '=' + encode(val)\\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\\n return res ? (\\\"?\\\" + res) : ''\\n}\\n\\n/* */\\n\\n\\nvar trailingSlashRE = /\\\\/?$/;\\n\\nfunction createRoute (\\n record,\\n location,\\n redirectedFrom,\\n router\\n) {\\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\\n var route = {\\n name: location.name || (record && record.name),\\n meta: (record && record.meta) || {},\\n path: location.path || '/',\\n hash: location.hash || '',\\n query: location.query || {},\\n params: location.params || {},\\n fullPath: getFullPath(location, stringifyQuery$$1),\\n matched: record ? formatMatch(record) : []\\n };\\n if (redirectedFrom) {\\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\\n }\\n return Object.freeze(route)\\n}\\n\\n// the starting route that represents the initial state\\nvar START = createRoute(null, {\\n path: '/'\\n});\\n\\nfunction formatMatch (record) {\\n var res = [];\\n while (record) {\\n res.unshift(record);\\n record = record.parent;\\n }\\n return res\\n}\\n\\nfunction getFullPath (\\n ref,\\n _stringifyQuery\\n) {\\n var path = ref.path;\\n var query = ref.query; if ( query === void 0 ) query = {};\\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\\n\\n var stringify = _stringifyQuery || stringifyQuery;\\n return (path || '/') + stringify(query) + hash\\n}\\n\\nfunction isSameRoute (a, b) {\\n if (b === START) {\\n return a === b\\n } else if (!b) {\\n return false\\n } else if (a.path && b.path) {\\n return (\\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\\n a.hash === b.hash &&\\n isObjectEqual(a.query, b.query)\\n )\\n } else if (a.name && b.name) {\\n return (\\n a.name === b.name &&\\n a.hash === b.hash &&\\n isObjectEqual(a.query, b.query) &&\\n isObjectEqual(a.params, b.params)\\n )\\n } else {\\n return false\\n }\\n}\\n\\nfunction isObjectEqual (a, b) {\\n if ( a === void 0 ) a = {};\\n if ( b === void 0 ) b = {};\\n\\n var aKeys = Object.keys(a);\\n var bKeys = Object.keys(b);\\n if (aKeys.length !== bKeys.length) {\\n return false\\n }\\n return aKeys.every(function (key) {\\n var aVal = a[key];\\n var bVal = b[key];\\n // check nested equality\\n if (typeof aVal === 'object' && typeof bVal === 'object') {\\n return isObjectEqual(aVal, bVal)\\n }\\n return String(aVal) === String(bVal)\\n })\\n}\\n\\nfunction isIncludedRoute (current, target) {\\n return (\\n current.path.replace(trailingSlashRE, '/').indexOf(\\n target.path.replace(trailingSlashRE, '/')\\n ) === 0 &&\\n (!target.hash || current.hash === target.hash) &&\\n queryIncludes(current.query, target.query)\\n )\\n}\\n\\nfunction queryIncludes (current, target) {\\n for (var key in target) {\\n if (!(key in current)) {\\n return false\\n }\\n }\\n return true\\n}\\n\\n/* */\\n\\n// work around weird flow bug\\nvar toTypes = [String, Object];\\nvar eventTypes = [String, Array];\\n\\nvar Link = {\\n name: 'router-link',\\n props: {\\n to: {\\n type: toTypes,\\n required: true\\n },\\n tag: {\\n type: String,\\n default: 'a'\\n },\\n exact: Boolean,\\n append: Boolean,\\n replace: Boolean,\\n activeClass: String,\\n exactActiveClass: String,\\n event: {\\n type: eventTypes,\\n default: 'click'\\n }\\n },\\n render: function render (h) {\\n var this$1 = this;\\n\\n var router = this.$router;\\n var current = this.$route;\\n var ref = router.resolve(this.to, current, this.append);\\n var location = ref.location;\\n var route = ref.route;\\n var href = ref.href;\\n\\n var classes = {};\\n var globalActiveClass = router.options.linkActiveClass;\\n var globalExactActiveClass = router.options.linkExactActiveClass;\\n // Support global empty active class\\n var activeClassFallback = globalActiveClass == null\\n ? 'router-link-active'\\n : globalActiveClass;\\n var exactActiveClassFallback = globalExactActiveClass == null\\n ? 'router-link-exact-active'\\n : globalExactActiveClass;\\n var activeClass = this.activeClass == null\\n ? activeClassFallback\\n : this.activeClass;\\n var exactActiveClass = this.exactActiveClass == null\\n ? exactActiveClassFallback\\n : this.exactActiveClass;\\n var compareTarget = location.path\\n ? createRoute(null, location, null, router)\\n : route;\\n\\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\\n classes[activeClass] = this.exact\\n ? classes[exactActiveClass]\\n : isIncludedRoute(current, compareTarget);\\n\\n var handler = function (e) {\\n if (guardEvent(e)) {\\n if (this$1.replace) {\\n router.replace(location);\\n } else {\\n router.push(location);\\n }\\n }\\n };\\n\\n var on = { click: guardEvent };\\n if (Array.isArray(this.event)) {\\n this.event.forEach(function (e) { on[e] = handler; });\\n } else {\\n on[this.event] = handler;\\n }\\n\\n var data = {\\n class: classes\\n };\\n\\n if (this.tag === 'a') {\\n data.on = on;\\n data.attrs = { href: href };\\n } else {\\n // find the first child and apply listener and href\\n var a = findAnchor(this.$slots.default);\\n if (a) {\\n // in case the is a static node\\n a.isStatic = false;\\n var extend = _Vue.util.extend;\\n var aData = a.data = extend({}, a.data);\\n aData.on = on;\\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\\n aAttrs.href = href;\\n } else {\\n // doesn't have child, apply listener to self\\n data.on = on;\\n }\\n }\\n\\n return h(this.tag, data, this.$slots.default)\\n }\\n};\\n\\nfunction guardEvent (e) {\\n // don't redirect with control keys\\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\\n // don't redirect when preventDefault called\\n if (e.defaultPrevented) { return }\\n // don't redirect on right click\\n if (e.button !== undefined && e.button !== 0) { return }\\n // don't redirect if `target=\\\"_blank\\\"`\\n if (e.currentTarget && e.currentTarget.getAttribute) {\\n var target = e.currentTarget.getAttribute('target');\\n if (/\\\\b_blank\\\\b/i.test(target)) { return }\\n }\\n // this may be a Weex event which doesn't have this method\\n if (e.preventDefault) {\\n e.preventDefault();\\n }\\n return true\\n}\\n\\nfunction findAnchor (children) {\\n if (children) {\\n var child;\\n for (var i = 0; i < children.length; i++) {\\n child = children[i];\\n if (child.tag === 'a') {\\n return child\\n }\\n if (child.children && (child = findAnchor(child.children))) {\\n return child\\n }\\n }\\n }\\n}\\n\\nvar _Vue;\\n\\nfunction install (Vue) {\\n if (install.installed) { return }\\n install.installed = true;\\n\\n _Vue = Vue;\\n\\n var isDef = function (v) { return v !== undefined; };\\n\\n var registerInstance = function (vm, callVal) {\\n var i = vm.$options._parentVnode;\\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\\n i(vm, callVal);\\n }\\n };\\n\\n Vue.mixin({\\n beforeCreate: function beforeCreate () {\\n if (isDef(this.$options.router)) {\\n this._routerRoot = this;\\n this._router = this.$options.router;\\n this._router.init(this);\\n Vue.util.defineReactive(this, '_route', this._router.history.current);\\n } else {\\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\\n }\\n registerInstance(this, this);\\n },\\n destroyed: function destroyed () {\\n registerInstance(this);\\n }\\n });\\n\\n Object.defineProperty(Vue.prototype, '$router', {\\n get: function get () { return this._routerRoot._router }\\n });\\n\\n Object.defineProperty(Vue.prototype, '$route', {\\n get: function get () { return this._routerRoot._route }\\n });\\n\\n Vue.component('router-view', View);\\n Vue.component('router-link', Link);\\n\\n var strats = Vue.config.optionMergeStrategies;\\n // use the same hook merging strategy for route hooks\\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\\n}\\n\\n/* */\\n\\nvar inBrowser = typeof window !== 'undefined';\\n\\n/* */\\n\\nfunction resolvePath (\\n relative,\\n base,\\n append\\n) {\\n var firstChar = relative.charAt(0);\\n if (firstChar === '/') {\\n return relative\\n }\\n\\n if (firstChar === '?' || firstChar === '#') {\\n return base + relative\\n }\\n\\n var stack = base.split('/');\\n\\n // remove trailing segment if:\\n // - not appending\\n // - appending to trailing slash (last segment is empty)\\n if (!append || !stack[stack.length - 1]) {\\n stack.pop();\\n }\\n\\n // resolve relative path\\n var segments = relative.replace(/^\\\\//, '').split('/');\\n for (var i = 0; i < segments.length; i++) {\\n var segment = segments[i];\\n if (segment === '..') {\\n stack.pop();\\n } else if (segment !== '.') {\\n stack.push(segment);\\n }\\n }\\n\\n // ensure leading slash\\n if (stack[0] !== '') {\\n stack.unshift('');\\n }\\n\\n return stack.join('/')\\n}\\n\\nfunction parsePath (path) {\\n var hash = '';\\n var query = '';\\n\\n var hashIndex = path.indexOf('#');\\n if (hashIndex >= 0) {\\n hash = path.slice(hashIndex);\\n path = path.slice(0, hashIndex);\\n }\\n\\n var queryIndex = path.indexOf('?');\\n if (queryIndex >= 0) {\\n query = path.slice(queryIndex + 1);\\n path = path.slice(0, queryIndex);\\n }\\n\\n return {\\n path: path,\\n query: query,\\n hash: hash\\n }\\n}\\n\\nfunction cleanPath (path) {\\n return path.replace(/\\\\/\\\\//g, '/')\\n}\\n\\nvar index$1 = Array.isArray || function (arr) {\\n return Object.prototype.toString.call(arr) == '[object Array]';\\n};\\n\\n/**\\n * Expose `pathToRegexp`.\\n */\\nvar index = pathToRegexp;\\nvar parse_1 = parse;\\nvar compile_1 = compile;\\nvar tokensToFunction_1 = tokensToFunction;\\nvar tokensToRegExp_1 = tokensToRegExp;\\n\\n/**\\n * The main path matching regexp utility.\\n *\\n * @type {RegExp}\\n */\\nvar PATH_REGEXP = new RegExp([\\n // Match escaped characters that would otherwise appear in future matches.\\n // This allows the user to escape special characters that won't transform.\\n '(\\\\\\\\\\\\\\\\.)',\\n // Match Express-style parameters and un-named parameters with a prefix\\n // and optional suffixes. Matches appear as:\\n //\\n // \\\"/:test(\\\\\\\\d+)?\\\" => [\\\"/\\\", \\\"test\\\", \\\"\\\\d+\\\", undefined, \\\"?\\\", undefined]\\n // \\\"/route(\\\\\\\\d+)\\\" => [undefined, undefined, undefined, \\\"\\\\d+\\\", undefined, undefined]\\n // \\\"/*\\\" => [\\\"/\\\", undefined, undefined, undefined, undefined, \\\"*\\\"]\\n '([\\\\\\\\/.])?(?:(?:\\\\\\\\:(\\\\\\\\w+)(?:\\\\\\\\(((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()])+)\\\\\\\\))?|\\\\\\\\(((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()])+)\\\\\\\\))([+*?])?|(\\\\\\\\*))'\\n].join('|'), 'g');\\n\\n/**\\n * Parse a string for the raw tokens.\\n *\\n * @param {string} str\\n * @param {Object=} options\\n * @return {!Array}\\n */\\nfunction parse (str, options) {\\n var tokens = [];\\n var key = 0;\\n var index = 0;\\n var path = '';\\n var defaultDelimiter = options && options.delimiter || '/';\\n var res;\\n\\n while ((res = PATH_REGEXP.exec(str)) != null) {\\n var m = res[0];\\n var escaped = res[1];\\n var offset = res.index;\\n path += str.slice(index, offset);\\n index = offset + m.length;\\n\\n // Ignore already escaped sequences.\\n if (escaped) {\\n path += escaped[1];\\n continue\\n }\\n\\n var next = str[index];\\n var prefix = res[2];\\n var name = res[3];\\n var capture = res[4];\\n var group = res[5];\\n var modifier = res[6];\\n var asterisk = res[7];\\n\\n // Push the current path onto the tokens.\\n if (path) {\\n tokens.push(path);\\n path = '';\\n }\\n\\n var partial = prefix != null && next != null && next !== prefix;\\n var repeat = modifier === '+' || modifier === '*';\\n var optional = modifier === '?' || modifier === '*';\\n var delimiter = res[2] || defaultDelimiter;\\n var pattern = capture || group;\\n\\n tokens.push({\\n name: name || key++,\\n prefix: prefix || '',\\n delimiter: delimiter,\\n optional: optional,\\n repeat: repeat,\\n partial: partial,\\n asterisk: !!asterisk,\\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\\n });\\n }\\n\\n // Match any characters still remaining.\\n if (index < str.length) {\\n path += str.substr(index);\\n }\\n\\n // If the path exists, push it onto the end.\\n if (path) {\\n tokens.push(path);\\n }\\n\\n return tokens\\n}\\n\\n/**\\n * Compile a string to a template function for the path.\\n *\\n * @param {string} str\\n * @param {Object=} options\\n * @return {!function(Object=, Object=)}\\n */\\nfunction compile (str, options) {\\n return tokensToFunction(parse(str, options))\\n}\\n\\n/**\\n * Prettier encoding of URI path segments.\\n *\\n * @param {string}\\n * @return {string}\\n */\\nfunction encodeURIComponentPretty (str) {\\n return encodeURI(str).replace(/[\\\\/?#]/g, function (c) {\\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\\n })\\n}\\n\\n/**\\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\\n *\\n * @param {string}\\n * @return {string}\\n */\\nfunction encodeAsterisk (str) {\\n return encodeURI(str).replace(/[?#]/g, function (c) {\\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\\n })\\n}\\n\\n/**\\n * Expose a method for transforming tokens into the path function.\\n */\\nfunction tokensToFunction (tokens) {\\n // Compile all the tokens into regexps.\\n var matches = new Array(tokens.length);\\n\\n // Compile all the patterns before compilation.\\n for (var i = 0; i < tokens.length; i++) {\\n if (typeof tokens[i] === 'object') {\\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\\n }\\n }\\n\\n return function (obj, opts) {\\n var path = '';\\n var data = obj || {};\\n var options = opts || {};\\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\\n\\n for (var i = 0; i < tokens.length; i++) {\\n var token = tokens[i];\\n\\n if (typeof token === 'string') {\\n path += token;\\n\\n continue\\n }\\n\\n var value = data[token.name];\\n var segment;\\n\\n if (value == null) {\\n if (token.optional) {\\n // Prepend partial segment prefixes.\\n if (token.partial) {\\n path += token.prefix;\\n }\\n\\n continue\\n } else {\\n throw new TypeError('Expected \\\"' + token.name + '\\\" to be defined')\\n }\\n }\\n\\n if (index$1(value)) {\\n if (!token.repeat) {\\n throw new TypeError('Expected \\\"' + token.name + '\\\" to not repeat, but received `' + JSON.stringify(value) + '`')\\n }\\n\\n if (value.length === 0) {\\n if (token.optional) {\\n continue\\n } else {\\n throw new TypeError('Expected \\\"' + token.name + '\\\" to not be empty')\\n }\\n }\\n\\n for (var j = 0; j < value.length; j++) {\\n segment = encode(value[j]);\\n\\n if (!matches[i].test(segment)) {\\n throw new TypeError('Expected all \\\"' + token.name + '\\\" to match \\\"' + token.pattern + '\\\", but received `' + JSON.stringify(segment) + '`')\\n }\\n\\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\\n }\\n\\n continue\\n }\\n\\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\\n\\n if (!matches[i].test(segment)) {\\n throw new TypeError('Expected \\\"' + token.name + '\\\" to match \\\"' + token.pattern + '\\\", but received \\\"' + segment + '\\\"')\\n }\\n\\n path += token.prefix + segment;\\n }\\n\\n return path\\n }\\n}\\n\\n/**\\n * Escape a regular expression string.\\n *\\n * @param {string} str\\n * @return {string}\\n */\\nfunction escapeString (str) {\\n return str.replace(/([.+*?=^!:${}()[\\\\]|\\\\/\\\\\\\\])/g, '\\\\\\\\$1')\\n}\\n\\n/**\\n * Escape the capturing group by escaping special characters and meaning.\\n *\\n * @param {string} group\\n * @return {string}\\n */\\nfunction escapeGroup (group) {\\n return group.replace(/([=!:$\\\\/()])/g, '\\\\\\\\$1')\\n}\\n\\n/**\\n * Attach the keys as a property of the regexp.\\n *\\n * @param {!RegExp} re\\n * @param {Array} keys\\n * @return {!RegExp}\\n */\\nfunction attachKeys (re, keys) {\\n re.keys = keys;\\n return re\\n}\\n\\n/**\\n * Get the flags for a regexp from the options.\\n *\\n * @param {Object} options\\n * @return {string}\\n */\\nfunction flags (options) {\\n return options.sensitive ? '' : 'i'\\n}\\n\\n/**\\n * Pull out keys from a regexp.\\n *\\n * @param {!RegExp} path\\n * @param {!Array} keys\\n * @return {!RegExp}\\n */\\nfunction regexpToRegexp (path, keys) {\\n // Use a negative lookahead to match only capturing groups.\\n var groups = path.source.match(/\\\\((?!\\\\?)/g);\\n\\n if (groups) {\\n for (var i = 0; i < groups.length; i++) {\\n keys.push({\\n name: i,\\n prefix: null,\\n delimiter: null,\\n optional: false,\\n repeat: false,\\n partial: false,\\n asterisk: false,\\n pattern: null\\n });\\n }\\n }\\n\\n return attachKeys(path, keys)\\n}\\n\\n/**\\n * Transform an array into a regexp.\\n *\\n * @param {!Array} path\\n * @param {Array} keys\\n * @param {!Object} options\\n * @return {!RegExp}\\n */\\nfunction arrayToRegexp (path, keys, options) {\\n var parts = [];\\n\\n for (var i = 0; i < path.length; i++) {\\n parts.push(pathToRegexp(path[i], keys, options).source);\\n }\\n\\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\\n\\n return attachKeys(regexp, keys)\\n}\\n\\n/**\\n * Create a path regexp from string input.\\n *\\n * @param {string} path\\n * @param {!Array} keys\\n * @param {!Object} options\\n * @return {!RegExp}\\n */\\nfunction stringToRegexp (path, keys, options) {\\n return tokensToRegExp(parse(path, options), keys, options)\\n}\\n\\n/**\\n * Expose a function for taking tokens and returning a RegExp.\\n *\\n * @param {!Array} tokens\\n * @param {(Array|Object)=} keys\\n * @param {Object=} options\\n * @return {!RegExp}\\n */\\nfunction tokensToRegExp (tokens, keys, options) {\\n if (!index$1(keys)) {\\n options = /** @type {!Object} */ (keys || options);\\n keys = [];\\n }\\n\\n options = options || {};\\n\\n var strict = options.strict;\\n var end = options.end !== false;\\n var route = '';\\n\\n // Iterate over the tokens and create our regexp string.\\n for (var i = 0; i < tokens.length; i++) {\\n var token = tokens[i];\\n\\n if (typeof token === 'string') {\\n route += escapeString(token);\\n } else {\\n var prefix = escapeString(token.prefix);\\n var capture = '(?:' + token.pattern + ')';\\n\\n keys.push(token);\\n\\n if (token.repeat) {\\n capture += '(?:' + prefix + capture + ')*';\\n }\\n\\n if (token.optional) {\\n if (!token.partial) {\\n capture = '(?:' + prefix + '(' + capture + '))?';\\n } else {\\n capture = prefix + '(' + capture + ')?';\\n }\\n } else {\\n capture = prefix + '(' + capture + ')';\\n }\\n\\n route += capture;\\n }\\n }\\n\\n var delimiter = escapeString(options.delimiter || '/');\\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\\n\\n // In non-strict mode we allow a slash at the end of match. If the path to\\n // match already ends with a slash, we remove it for consistency. The slash\\n // is valid at the end of a path match, not in the middle. This is important\\n // in non-ending mode, where \\\"/test/\\\" shouldn't match \\\"/test//route\\\".\\n if (!strict) {\\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\\n }\\n\\n if (end) {\\n route += '$';\\n } else {\\n // In non-ending mode, we need the capturing groups to match as much as\\n // possible by using a positive lookahead to the end or next path segment.\\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\\n }\\n\\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\\n}\\n\\n/**\\n * Normalize the given path string, returning a regular expression.\\n *\\n * An empty array can be passed in for the keys, which will hold the\\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\\n *\\n * @param {(string|RegExp|Array)} path\\n * @param {(Array|Object)=} keys\\n * @param {Object=} options\\n * @return {!RegExp}\\n */\\nfunction pathToRegexp (path, keys, options) {\\n if (!index$1(keys)) {\\n options = /** @type {!Object} */ (keys || options);\\n keys = [];\\n }\\n\\n options = options || {};\\n\\n if (path instanceof RegExp) {\\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\\n }\\n\\n if (index$1(path)) {\\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\\n }\\n\\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\\n}\\n\\nindex.parse = parse_1;\\nindex.compile = compile_1;\\nindex.tokensToFunction = tokensToFunction_1;\\nindex.tokensToRegExp = tokensToRegExp_1;\\n\\n/* */\\n\\nvar regexpCompileCache = Object.create(null);\\n\\nfunction fillParams (\\n path,\\n params,\\n routeMsg\\n) {\\n try {\\n var filler =\\n regexpCompileCache[path] ||\\n (regexpCompileCache[path] = index.compile(path));\\n return filler(params || {}, { pretty: true })\\n } catch (e) {\\n if (false) {\\n warn(false, (\\\"missing param for \\\" + routeMsg + \\\": \\\" + (e.message)));\\n }\\n return ''\\n }\\n}\\n\\n/* */\\n\\nfunction createRouteMap (\\n routes,\\n oldPathList,\\n oldPathMap,\\n oldNameMap\\n) {\\n // the path list is used to control path matching priority\\n var pathList = oldPathList || [];\\n var pathMap = oldPathMap || Object.create(null);\\n var nameMap = oldNameMap || Object.create(null);\\n\\n routes.forEach(function (route) {\\n addRouteRecord(pathList, pathMap, nameMap, route);\\n });\\n\\n // ensure wildcard routes are always at the end\\n for (var i = 0, l = pathList.length; i < l; i++) {\\n if (pathList[i] === '*') {\\n pathList.push(pathList.splice(i, 1)[0]);\\n l--;\\n i--;\\n }\\n }\\n\\n return {\\n pathList: pathList,\\n pathMap: pathMap,\\n nameMap: nameMap\\n }\\n}\\n\\nfunction addRouteRecord (\\n pathList,\\n pathMap,\\n nameMap,\\n route,\\n parent,\\n matchAs\\n) {\\n var path = route.path;\\n var name = route.name;\\n if (false) {\\n assert(path != null, \\\"\\\\\\\"path\\\\\\\" is required in a route configuration.\\\");\\n assert(\\n typeof route.component !== 'string',\\n \\\"route config \\\\\\\"component\\\\\\\" for path: \\\" + (String(path || name)) + \\\" cannot be a \\\" +\\n \\\"string id. Use an actual component instead.\\\"\\n );\\n }\\n\\n var normalizedPath = normalizePath(path, parent);\\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\\n\\n if (typeof route.caseSensitive === 'boolean') {\\n pathToRegexpOptions.sensitive = route.caseSensitive;\\n }\\n\\n var record = {\\n path: normalizedPath,\\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\\n components: route.components || { default: route.component },\\n instances: {},\\n name: name,\\n parent: parent,\\n matchAs: matchAs,\\n redirect: route.redirect,\\n beforeEnter: route.beforeEnter,\\n meta: route.meta || {},\\n props: route.props == null\\n ? {}\\n : route.components\\n ? route.props\\n : { default: route.props }\\n };\\n\\n if (route.children) {\\n // Warn if route is named, does not redirect and has a default child route.\\n // If users navigate to this route by name, the default child will\\n // not be rendered (GH Issue #629)\\n if (false) {\\n if (route.name && !route.redirect && route.children.some(function (child) { return /^\\\\/?$/.test(child.path); })) {\\n warn(\\n false,\\n \\\"Named Route '\\\" + (route.name) + \\\"' has a default child route. \\\" +\\n \\\"When navigating to this named route (:to=\\\\\\\"{name: '\\\" + (route.name) + \\\"'\\\\\\\"), \\\" +\\n \\\"the default child route will not be rendered. Remove the name from \\\" +\\n \\\"this route and use the name of the default child route for named \\\" +\\n \\\"links instead.\\\"\\n );\\n }\\n }\\n route.children.forEach(function (child) {\\n var childMatchAs = matchAs\\n ? cleanPath((matchAs + \\\"/\\\" + (child.path)))\\n : undefined;\\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\\n });\\n }\\n\\n if (route.alias !== undefined) {\\n var aliases = Array.isArray(route.alias)\\n ? route.alias\\n : [route.alias];\\n\\n aliases.forEach(function (alias) {\\n var aliasRoute = {\\n path: alias,\\n children: route.children\\n };\\n addRouteRecord(\\n pathList,\\n pathMap,\\n nameMap,\\n aliasRoute,\\n parent,\\n record.path || '/' // matchAs\\n );\\n });\\n }\\n\\n if (!pathMap[record.path]) {\\n pathList.push(record.path);\\n pathMap[record.path] = record;\\n }\\n\\n if (name) {\\n if (!nameMap[name]) {\\n nameMap[name] = record;\\n } else if (false) {\\n warn(\\n false,\\n \\\"Duplicate named routes definition: \\\" +\\n \\\"{ name: \\\\\\\"\\\" + name + \\\"\\\\\\\", path: \\\\\\\"\\\" + (record.path) + \\\"\\\\\\\" }\\\"\\n );\\n }\\n }\\n}\\n\\nfunction compileRouteRegex (path, pathToRegexpOptions) {\\n var regex = index(path, [], pathToRegexpOptions);\\n if (false) {\\n var keys = {};\\n regex.keys.forEach(function (key) {\\n warn(!keys[key.name], (\\\"Duplicate param keys in route with path: \\\\\\\"\\\" + path + \\\"\\\\\\\"\\\"));\\n keys[key.name] = true;\\n });\\n }\\n return regex\\n}\\n\\nfunction normalizePath (path, parent) {\\n path = path.replace(/\\\\/$/, '');\\n if (path[0] === '/') { return path }\\n if (parent == null) { return path }\\n return cleanPath(((parent.path) + \\\"/\\\" + path))\\n}\\n\\n/* */\\n\\n\\nfunction normalizeLocation (\\n raw,\\n current,\\n append,\\n router\\n) {\\n var next = typeof raw === 'string' ? { path: raw } : raw;\\n // named target\\n if (next.name || next._normalized) {\\n return next\\n }\\n\\n // relative params\\n if (!next.path && next.params && current) {\\n next = assign({}, next);\\n next._normalized = true;\\n var params = assign(assign({}, current.params), next.params);\\n if (current.name) {\\n next.name = current.name;\\n next.params = params;\\n } else if (current.matched.length) {\\n var rawPath = current.matched[current.matched.length - 1].path;\\n next.path = fillParams(rawPath, params, (\\\"path \\\" + (current.path)));\\n } else if (false) {\\n warn(false, \\\"relative params navigation requires a current route.\\\");\\n }\\n return next\\n }\\n\\n var parsedPath = parsePath(next.path || '');\\n var basePath = (current && current.path) || '/';\\n var path = parsedPath.path\\n ? resolvePath(parsedPath.path, basePath, append || next.append)\\n : basePath;\\n\\n var query = resolveQuery(\\n parsedPath.query,\\n next.query,\\n router && router.options.parseQuery\\n );\\n\\n var hash = next.hash || parsedPath.hash;\\n if (hash && hash.charAt(0) !== '#') {\\n hash = \\\"#\\\" + hash;\\n }\\n\\n return {\\n _normalized: true,\\n path: path,\\n query: query,\\n hash: hash\\n }\\n}\\n\\nfunction assign (a, b) {\\n for (var key in b) {\\n a[key] = b[key];\\n }\\n return a\\n}\\n\\n/* */\\n\\n\\nfunction createMatcher (\\n routes,\\n router\\n) {\\n var ref = createRouteMap(routes);\\n var pathList = ref.pathList;\\n var pathMap = ref.pathMap;\\n var nameMap = ref.nameMap;\\n\\n function addRoutes (routes) {\\n createRouteMap(routes, pathList, pathMap, nameMap);\\n }\\n\\n function match (\\n raw,\\n currentRoute,\\n redirectedFrom\\n ) {\\n var location = normalizeLocation(raw, currentRoute, false, router);\\n var name = location.name;\\n\\n if (name) {\\n var record = nameMap[name];\\n if (false) {\\n warn(record, (\\\"Route with name '\\\" + name + \\\"' does not exist\\\"));\\n }\\n if (!record) { return _createRoute(null, location) }\\n var paramNames = record.regex.keys\\n .filter(function (key) { return !key.optional; })\\n .map(function (key) { return key.name; });\\n\\n if (typeof location.params !== 'object') {\\n location.params = {};\\n }\\n\\n if (currentRoute && typeof currentRoute.params === 'object') {\\n for (var key in currentRoute.params) {\\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\\n location.params[key] = currentRoute.params[key];\\n }\\n }\\n }\\n\\n if (record) {\\n location.path = fillParams(record.path, location.params, (\\\"named route \\\\\\\"\\\" + name + \\\"\\\\\\\"\\\"));\\n return _createRoute(record, location, redirectedFrom)\\n }\\n } else if (location.path) {\\n location.params = {};\\n for (var i = 0; i < pathList.length; i++) {\\n var path = pathList[i];\\n var record$1 = pathMap[path];\\n if (matchRoute(record$1.regex, location.path, location.params)) {\\n return _createRoute(record$1, location, redirectedFrom)\\n }\\n }\\n }\\n // no match\\n return _createRoute(null, location)\\n }\\n\\n function redirect (\\n record,\\n location\\n ) {\\n var originalRedirect = record.redirect;\\n var redirect = typeof originalRedirect === 'function'\\n ? originalRedirect(createRoute(record, location, null, router))\\n : originalRedirect;\\n\\n if (typeof redirect === 'string') {\\n redirect = { path: redirect };\\n }\\n\\n if (!redirect || typeof redirect !== 'object') {\\n if (false) {\\n warn(\\n false, (\\\"invalid redirect option: \\\" + (JSON.stringify(redirect)))\\n );\\n }\\n return _createRoute(null, location)\\n }\\n\\n var re = redirect;\\n var name = re.name;\\n var path = re.path;\\n var query = location.query;\\n var hash = location.hash;\\n var params = location.params;\\n query = re.hasOwnProperty('query') ? re.query : query;\\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\\n params = re.hasOwnProperty('params') ? re.params : params;\\n\\n if (name) {\\n // resolved named direct\\n var targetRecord = nameMap[name];\\n if (false) {\\n assert(targetRecord, (\\\"redirect failed: named route \\\\\\\"\\\" + name + \\\"\\\\\\\" not found.\\\"));\\n }\\n return match({\\n _normalized: true,\\n name: name,\\n query: query,\\n hash: hash,\\n params: params\\n }, undefined, location)\\n } else if (path) {\\n // 1. resolve relative redirect\\n var rawPath = resolveRecordPath(path, record);\\n // 2. resolve params\\n var resolvedPath = fillParams(rawPath, params, (\\\"redirect route with path \\\\\\\"\\\" + rawPath + \\\"\\\\\\\"\\\"));\\n // 3. rematch with existing query and hash\\n return match({\\n _normalized: true,\\n path: resolvedPath,\\n query: query,\\n hash: hash\\n }, undefined, location)\\n } else {\\n if (false) {\\n warn(false, (\\\"invalid redirect option: \\\" + (JSON.stringify(redirect))));\\n }\\n return _createRoute(null, location)\\n }\\n }\\n\\n function alias (\\n record,\\n location,\\n matchAs\\n ) {\\n var aliasedPath = fillParams(matchAs, location.params, (\\\"aliased route with path \\\\\\\"\\\" + matchAs + \\\"\\\\\\\"\\\"));\\n var aliasedMatch = match({\\n _normalized: true,\\n path: aliasedPath\\n });\\n if (aliasedMatch) {\\n var matched = aliasedMatch.matched;\\n var aliasedRecord = matched[matched.length - 1];\\n location.params = aliasedMatch.params;\\n return _createRoute(aliasedRecord, location)\\n }\\n return _createRoute(null, location)\\n }\\n\\n function _createRoute (\\n record,\\n location,\\n redirectedFrom\\n ) {\\n if (record && record.redirect) {\\n return redirect(record, redirectedFrom || location)\\n }\\n if (record && record.matchAs) {\\n return alias(record, location, record.matchAs)\\n }\\n return createRoute(record, location, redirectedFrom, router)\\n }\\n\\n return {\\n match: match,\\n addRoutes: addRoutes\\n }\\n}\\n\\nfunction matchRoute (\\n regex,\\n path,\\n params\\n) {\\n var m = path.match(regex);\\n\\n if (!m) {\\n return false\\n } else if (!params) {\\n return true\\n }\\n\\n for (var i = 1, len = m.length; i < len; ++i) {\\n var key = regex.keys[i - 1];\\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\\n if (key) {\\n params[key.name] = val;\\n }\\n }\\n\\n return true\\n}\\n\\nfunction resolveRecordPath (path, record) {\\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\\n}\\n\\n/* */\\n\\n\\nvar positionStore = Object.create(null);\\n\\nfunction setupScroll () {\\n window.addEventListener('popstate', function (e) {\\n saveScrollPosition();\\n if (e.state && e.state.key) {\\n setStateKey(e.state.key);\\n }\\n });\\n}\\n\\nfunction handleScroll (\\n router,\\n to,\\n from,\\n isPop\\n) {\\n if (!router.app) {\\n return\\n }\\n\\n var behavior = router.options.scrollBehavior;\\n if (!behavior) {\\n return\\n }\\n\\n if (false) {\\n assert(typeof behavior === 'function', \\\"scrollBehavior must be a function\\\");\\n }\\n\\n // wait until re-render finishes before scrolling\\n router.app.$nextTick(function () {\\n var position = getScrollPosition();\\n var shouldScroll = behavior(to, from, isPop ? position : null);\\n if (!shouldScroll) {\\n return\\n }\\n var isObject = typeof shouldScroll === 'object';\\n if (isObject && typeof shouldScroll.selector === 'string') {\\n var el = document.querySelector(shouldScroll.selector);\\n if (el) {\\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\\n offset = normalizeOffset(offset);\\n position = getElementPosition(el, offset);\\n } else if (isValidPosition(shouldScroll)) {\\n position = normalizePosition(shouldScroll);\\n }\\n } else if (isObject && isValidPosition(shouldScroll)) {\\n position = normalizePosition(shouldScroll);\\n }\\n\\n if (position) {\\n window.scrollTo(position.x, position.y);\\n }\\n });\\n}\\n\\nfunction saveScrollPosition () {\\n var key = getStateKey();\\n if (key) {\\n positionStore[key] = {\\n x: window.pageXOffset,\\n y: window.pageYOffset\\n };\\n }\\n}\\n\\nfunction getScrollPosition () {\\n var key = getStateKey();\\n if (key) {\\n return positionStore[key]\\n }\\n}\\n\\nfunction getElementPosition (el, offset) {\\n var docEl = document.documentElement;\\n var docRect = docEl.getBoundingClientRect();\\n var elRect = el.getBoundingClientRect();\\n return {\\n x: elRect.left - docRect.left - offset.x,\\n y: elRect.top - docRect.top - offset.y\\n }\\n}\\n\\nfunction isValidPosition (obj) {\\n return isNumber(obj.x) || isNumber(obj.y)\\n}\\n\\nfunction normalizePosition (obj) {\\n return {\\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\\n }\\n}\\n\\nfunction normalizeOffset (obj) {\\n return {\\n x: isNumber(obj.x) ? obj.x : 0,\\n y: isNumber(obj.y) ? obj.y : 0\\n }\\n}\\n\\nfunction isNumber (v) {\\n return typeof v === 'number'\\n}\\n\\n/* */\\n\\nvar supportsPushState = inBrowser && (function () {\\n var ua = window.navigator.userAgent;\\n\\n if (\\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\\n ua.indexOf('Mobile Safari') !== -1 &&\\n ua.indexOf('Chrome') === -1 &&\\n ua.indexOf('Windows Phone') === -1\\n ) {\\n return false\\n }\\n\\n return window.history && 'pushState' in window.history\\n})();\\n\\n// use User Timing api (if present) for more accurate key precision\\nvar Time = inBrowser && window.performance && window.performance.now\\n ? window.performance\\n : Date;\\n\\nvar _key = genKey();\\n\\nfunction genKey () {\\n return Time.now().toFixed(3)\\n}\\n\\nfunction getStateKey () {\\n return _key\\n}\\n\\nfunction setStateKey (key) {\\n _key = key;\\n}\\n\\nfunction pushState (url, replace) {\\n saveScrollPosition();\\n // try...catch the pushState call to get around Safari\\n // DOM Exception 18 where it limits to 100 pushState calls\\n var history = window.history;\\n try {\\n if (replace) {\\n history.replaceState({ key: _key }, '', url);\\n } else {\\n _key = genKey();\\n history.pushState({ key: _key }, '', url);\\n }\\n } catch (e) {\\n window.location[replace ? 'replace' : 'assign'](url);\\n }\\n}\\n\\nfunction replaceState (url) {\\n pushState(url, true);\\n}\\n\\n/* */\\n\\nfunction runQueue (queue, fn, cb) {\\n var step = function (index) {\\n if (index >= queue.length) {\\n cb();\\n } else {\\n if (queue[index]) {\\n fn(queue[index], function () {\\n step(index + 1);\\n });\\n } else {\\n step(index + 1);\\n }\\n }\\n };\\n step(0);\\n}\\n\\n/* */\\n\\nfunction resolveAsyncComponents (matched) {\\n return function (to, from, next) {\\n var hasAsync = false;\\n var pending = 0;\\n var error = null;\\n\\n flatMapComponents(matched, function (def, _, match, key) {\\n // if it's a function and doesn't have cid attached,\\n // assume it's an async component resolve function.\\n // we are not using Vue's default async resolving mechanism because\\n // we want to halt the navigation until the incoming component has been\\n // resolved.\\n if (typeof def === 'function' && def.cid === undefined) {\\n hasAsync = true;\\n pending++;\\n\\n var resolve = once(function (resolvedDef) {\\n if (resolvedDef.__esModule && resolvedDef.default) {\\n resolvedDef = resolvedDef.default;\\n }\\n // save resolved on async factory in case it's used elsewhere\\n def.resolved = typeof resolvedDef === 'function'\\n ? resolvedDef\\n : _Vue.extend(resolvedDef);\\n match.components[key] = resolvedDef;\\n pending--;\\n if (pending <= 0) {\\n next();\\n }\\n });\\n\\n var reject = once(function (reason) {\\n var msg = \\\"Failed to resolve async component \\\" + key + \\\": \\\" + reason;\\n \\\"production\\\" !== 'production' && warn(false, msg);\\n if (!error) {\\n error = isError(reason)\\n ? reason\\n : new Error(msg);\\n next(error);\\n }\\n });\\n\\n var res;\\n try {\\n res = def(resolve, reject);\\n } catch (e) {\\n reject(e);\\n }\\n if (res) {\\n if (typeof res.then === 'function') {\\n res.then(resolve, reject);\\n } else {\\n // new syntax in Vue 2.3\\n var comp = res.component;\\n if (comp && typeof comp.then === 'function') {\\n comp.then(resolve, reject);\\n }\\n }\\n }\\n }\\n });\\n\\n if (!hasAsync) { next(); }\\n }\\n}\\n\\nfunction flatMapComponents (\\n matched,\\n fn\\n) {\\n return flatten(matched.map(function (m) {\\n return Object.keys(m.components).map(function (key) { return fn(\\n m.components[key],\\n m.instances[key],\\n m, key\\n ); })\\n }))\\n}\\n\\nfunction flatten (arr) {\\n return Array.prototype.concat.apply([], arr)\\n}\\n\\n// in Webpack 2, require.ensure now also returns a Promise\\n// so the resolve/reject functions may get called an extra time\\n// if the user uses an arrow function shorthand that happens to\\n// return that Promise.\\nfunction once (fn) {\\n var called = false;\\n return function () {\\n var args = [], len = arguments.length;\\n while ( len-- ) args[ len ] = arguments[ len ];\\n\\n if (called) { return }\\n called = true;\\n return fn.apply(this, args)\\n }\\n}\\n\\n/* */\\n\\nvar History = function History (router, base) {\\n this.router = router;\\n this.base = normalizeBase(base);\\n // start with a route object that stands for \\\"nowhere\\\"\\n this.current = START;\\n this.pending = null;\\n this.ready = false;\\n this.readyCbs = [];\\n this.readyErrorCbs = [];\\n this.errorCbs = [];\\n};\\n\\nHistory.prototype.listen = function listen (cb) {\\n this.cb = cb;\\n};\\n\\nHistory.prototype.onReady = function onReady (cb, errorCb) {\\n if (this.ready) {\\n cb();\\n } else {\\n this.readyCbs.push(cb);\\n if (errorCb) {\\n this.readyErrorCbs.push(errorCb);\\n }\\n }\\n};\\n\\nHistory.prototype.onError = function onError (errorCb) {\\n this.errorCbs.push(errorCb);\\n};\\n\\nHistory.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) {\\n var this$1 = this;\\n\\n var route = this.router.match(location, this.current);\\n this.confirmTransition(route, function () {\\n this$1.updateRoute(route);\\n onComplete && onComplete(route);\\n this$1.ensureURL();\\n\\n // fire ready cbs once\\n if (!this$1.ready) {\\n this$1.ready = true;\\n this$1.readyCbs.forEach(function (cb) { cb(route); });\\n }\\n }, function (err) {\\n if (onAbort) {\\n onAbort(err);\\n }\\n if (err && !this$1.ready) {\\n this$1.ready = true;\\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\\n }\\n });\\n};\\n\\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\\n var this$1 = this;\\n\\n var current = this.current;\\n var abort = function (err) {\\n if (isError(err)) {\\n if (this$1.errorCbs.length) {\\n this$1.errorCbs.forEach(function (cb) { cb(err); });\\n } else {\\n warn(false, 'uncaught error during route navigation:');\\n console.error(err);\\n }\\n }\\n onAbort && onAbort(err);\\n };\\n if (\\n isSameRoute(route, current) &&\\n // in the case the route map has been dynamically appended to\\n route.matched.length === current.matched.length\\n ) {\\n this.ensureURL();\\n return abort()\\n }\\n\\n var ref = resolveQueue(this.current.matched, route.matched);\\n var updated = ref.updated;\\n var deactivated = ref.deactivated;\\n var activated = ref.activated;\\n\\n var queue = [].concat(\\n // in-component leave guards\\n extractLeaveGuards(deactivated),\\n // global before hooks\\n this.router.beforeHooks,\\n // in-component update hooks\\n extractUpdateHooks(updated),\\n // in-config enter guards\\n activated.map(function (m) { return m.beforeEnter; }),\\n // async components\\n resolveAsyncComponents(activated)\\n );\\n\\n this.pending = route;\\n var iterator = function (hook, next) {\\n if (this$1.pending !== route) {\\n return abort()\\n }\\n try {\\n hook(route, current, function (to) {\\n if (to === false || isError(to)) {\\n // next(false) -> abort navigation, ensure current URL\\n this$1.ensureURL(true);\\n abort(to);\\n } else if (\\n typeof to === 'string' ||\\n (typeof to === 'object' && (\\n typeof to.path === 'string' ||\\n typeof to.name === 'string'\\n ))\\n ) {\\n // next('/') or next({ path: '/' }) -> redirect\\n abort();\\n if (typeof to === 'object' && to.replace) {\\n this$1.replace(to);\\n } else {\\n this$1.push(to);\\n }\\n } else {\\n // confirm transition and pass on the value\\n next(to);\\n }\\n });\\n } catch (e) {\\n abort(e);\\n }\\n };\\n\\n runQueue(queue, iterator, function () {\\n var postEnterCbs = [];\\n var isValid = function () { return this$1.current === route; };\\n // wait until async components are resolved before\\n // extracting in-component enter guards\\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\\n var queue = enterGuards.concat(this$1.router.resolveHooks);\\n runQueue(queue, iterator, function () {\\n if (this$1.pending !== route) {\\n return abort()\\n }\\n this$1.pending = null;\\n onComplete(route);\\n if (this$1.router.app) {\\n this$1.router.app.$nextTick(function () {\\n postEnterCbs.forEach(function (cb) { cb(); });\\n });\\n }\\n });\\n });\\n};\\n\\nHistory.prototype.updateRoute = function updateRoute (route) {\\n var prev = this.current;\\n this.current = route;\\n this.cb && this.cb(route);\\n this.router.afterHooks.forEach(function (hook) {\\n hook && hook(route, prev);\\n });\\n};\\n\\nfunction normalizeBase (base) {\\n if (!base) {\\n if (inBrowser) {\\n // respect tag\\n var baseEl = document.querySelector('base');\\n base = (baseEl && baseEl.getAttribute('href')) || '/';\\n // strip full URL origin\\n base = base.replace(/^https?:\\\\/\\\\/[^\\\\/]+/, '');\\n } else {\\n base = '/';\\n }\\n }\\n // make sure there's the starting slash\\n if (base.charAt(0) !== '/') {\\n base = '/' + base;\\n }\\n // remove trailing slash\\n return base.replace(/\\\\/$/, '')\\n}\\n\\nfunction resolveQueue (\\n current,\\n next\\n) {\\n var i;\\n var max = Math.max(current.length, next.length);\\n for (i = 0; i < max; i++) {\\n if (current[i] !== next[i]) {\\n break\\n }\\n }\\n return {\\n updated: next.slice(0, i),\\n activated: next.slice(i),\\n deactivated: current.slice(i)\\n }\\n}\\n\\nfunction extractGuards (\\n records,\\n name,\\n bind,\\n reverse\\n) {\\n var guards = flatMapComponents(records, function (def, instance, match, key) {\\n var guard = extractGuard(def, name);\\n if (guard) {\\n return Array.isArray(guard)\\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\\n : bind(guard, instance, match, key)\\n }\\n });\\n return flatten(reverse ? guards.reverse() : guards)\\n}\\n\\nfunction extractGuard (\\n def,\\n key\\n) {\\n if (typeof def !== 'function') {\\n // extend now so that global mixins are applied.\\n def = _Vue.extend(def);\\n }\\n return def.options[key]\\n}\\n\\nfunction extractLeaveGuards (deactivated) {\\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\\n}\\n\\nfunction extractUpdateHooks (updated) {\\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\\n}\\n\\nfunction bindGuard (guard, instance) {\\n if (instance) {\\n return function boundRouteGuard () {\\n return guard.apply(instance, arguments)\\n }\\n }\\n}\\n\\nfunction extractEnterGuards (\\n activated,\\n cbs,\\n isValid\\n) {\\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\\n return bindEnterGuard(guard, match, key, cbs, isValid)\\n })\\n}\\n\\nfunction bindEnterGuard (\\n guard,\\n match,\\n key,\\n cbs,\\n isValid\\n) {\\n return function routeEnterGuard (to, from, next) {\\n return guard(to, from, function (cb) {\\n next(cb);\\n if (typeof cb === 'function') {\\n cbs.push(function () {\\n // #750\\n // if a router-view is wrapped with an out-in transition,\\n // the instance may not have been registered at this time.\\n // we will need to poll for registration until current route\\n // is no longer valid.\\n poll(cb, match.instances, key, isValid);\\n });\\n }\\n })\\n }\\n}\\n\\nfunction poll (\\n cb, // somehow flow cannot infer this is a function\\n instances,\\n key,\\n isValid\\n) {\\n if (instances[key]) {\\n cb(instances[key]);\\n } else if (isValid()) {\\n setTimeout(function () {\\n poll(cb, instances, key, isValid);\\n }, 16);\\n }\\n}\\n\\n/* */\\n\\n\\nvar HTML5History = (function (History$$1) {\\n function HTML5History (router, base) {\\n var this$1 = this;\\n\\n History$$1.call(this, router, base);\\n\\n var expectScroll = router.options.scrollBehavior;\\n\\n if (expectScroll) {\\n setupScroll();\\n }\\n\\n window.addEventListener('popstate', function (e) {\\n var current = this$1.current;\\n this$1.transitionTo(getLocation(this$1.base), function (route) {\\n if (expectScroll) {\\n handleScroll(router, route, current, true);\\n }\\n });\\n });\\n }\\n\\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\\n HTML5History.prototype.constructor = HTML5History;\\n\\n HTML5History.prototype.go = function go (n) {\\n window.history.go(n);\\n };\\n\\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\\n var this$1 = this;\\n\\n var ref = this;\\n var fromRoute = ref.current;\\n this.transitionTo(location, function (route) {\\n pushState(cleanPath(this$1.base + route.fullPath));\\n handleScroll(this$1.router, route, fromRoute, false);\\n onComplete && onComplete(route);\\n }, onAbort);\\n };\\n\\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\\n var this$1 = this;\\n\\n var ref = this;\\n var fromRoute = ref.current;\\n this.transitionTo(location, function (route) {\\n replaceState(cleanPath(this$1.base + route.fullPath));\\n handleScroll(this$1.router, route, fromRoute, false);\\n onComplete && onComplete(route);\\n }, onAbort);\\n };\\n\\n HTML5History.prototype.ensureURL = function ensureURL (push) {\\n if (getLocation(this.base) !== this.current.fullPath) {\\n var current = cleanPath(this.base + this.current.fullPath);\\n push ? pushState(current) : replaceState(current);\\n }\\n };\\n\\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\\n return getLocation(this.base)\\n };\\n\\n return HTML5History;\\n}(History));\\n\\nfunction getLocation (base) {\\n var path = window.location.pathname;\\n if (base && path.indexOf(base) === 0) {\\n path = path.slice(base.length);\\n }\\n return (path || '/') + window.location.search + window.location.hash\\n}\\n\\n/* */\\n\\n\\nvar HashHistory = (function (History$$1) {\\n function HashHistory (router, base, fallback) {\\n History$$1.call(this, router, base);\\n // check history fallback deeplinking\\n if (fallback && checkFallback(this.base)) {\\n return\\n }\\n ensureSlash();\\n }\\n\\n if ( History$$1 ) HashHistory.__proto__ = History$$1;\\n HashHistory.prototype = Object.create( History$$1 && History$$1.prototype );\\n HashHistory.prototype.constructor = HashHistory;\\n\\n // this is delayed until the app mounts\\n // to avoid the hashchange listener being fired too early\\n HashHistory.prototype.setupListeners = function setupListeners () {\\n var this$1 = this;\\n\\n window.addEventListener('hashchange', function () {\\n if (!ensureSlash()) {\\n return\\n }\\n this$1.transitionTo(getHash(), function (route) {\\n replaceHash(route.fullPath);\\n });\\n });\\n };\\n\\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\\n this.transitionTo(location, function (route) {\\n pushHash(route.fullPath);\\n onComplete && onComplete(route);\\n }, onAbort);\\n };\\n\\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\\n this.transitionTo(location, function (route) {\\n replaceHash(route.fullPath);\\n onComplete && onComplete(route);\\n }, onAbort);\\n };\\n\\n HashHistory.prototype.go = function go (n) {\\n window.history.go(n);\\n };\\n\\n HashHistory.prototype.ensureURL = function ensureURL (push) {\\n var current = this.current.fullPath;\\n if (getHash() !== current) {\\n push ? pushHash(current) : replaceHash(current);\\n }\\n };\\n\\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\\n return getHash()\\n };\\n\\n return HashHistory;\\n}(History));\\n\\nfunction checkFallback (base) {\\n var location = getLocation(base);\\n if (!/^\\\\/#/.test(location)) {\\n window.location.replace(\\n cleanPath(base + '/#' + location)\\n );\\n return true\\n }\\n}\\n\\nfunction ensureSlash () {\\n var path = getHash();\\n if (path.charAt(0) === '/') {\\n return true\\n }\\n replaceHash('/' + path);\\n return false\\n}\\n\\nfunction getHash () {\\n // We can't use window.location.hash here because it's not\\n // consistent across browsers - Firefox will pre-decode it!\\n var href = window.location.href;\\n var index = href.indexOf('#');\\n return index === -1 ? '' : href.slice(index + 1)\\n}\\n\\nfunction pushHash (path) {\\n window.location.hash = path;\\n}\\n\\nfunction replaceHash (path) {\\n var href = window.location.href;\\n var i = href.indexOf('#');\\n var base = i >= 0 ? href.slice(0, i) : href;\\n window.location.replace((base + \\\"#\\\" + path));\\n}\\n\\n/* */\\n\\n\\nvar AbstractHistory = (function (History$$1) {\\n function AbstractHistory (router, base) {\\n History$$1.call(this, router, base);\\n this.stack = [];\\n this.index = -1;\\n }\\n\\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\\n AbstractHistory.prototype.constructor = AbstractHistory;\\n\\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\\n var this$1 = this;\\n\\n this.transitionTo(location, function (route) {\\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\\n this$1.index++;\\n onComplete && onComplete(route);\\n }, onAbort);\\n };\\n\\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\\n var this$1 = this;\\n\\n this.transitionTo(location, function (route) {\\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\\n onComplete && onComplete(route);\\n }, onAbort);\\n };\\n\\n AbstractHistory.prototype.go = function go (n) {\\n var this$1 = this;\\n\\n var targetIndex = this.index + n;\\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\\n return\\n }\\n var route = this.stack[targetIndex];\\n this.confirmTransition(route, function () {\\n this$1.index = targetIndex;\\n this$1.updateRoute(route);\\n });\\n };\\n\\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\\n var current = this.stack[this.stack.length - 1];\\n return current ? current.fullPath : '/'\\n };\\n\\n AbstractHistory.prototype.ensureURL = function ensureURL () {\\n // noop\\n };\\n\\n return AbstractHistory;\\n}(History));\\n\\n/* */\\n\\nvar VueRouter = function VueRouter (options) {\\n if ( options === void 0 ) options = {};\\n\\n this.app = null;\\n this.apps = [];\\n this.options = options;\\n this.beforeHooks = [];\\n this.resolveHooks = [];\\n this.afterHooks = [];\\n this.matcher = createMatcher(options.routes || [], this);\\n\\n var mode = options.mode || 'hash';\\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\\n if (this.fallback) {\\n mode = 'hash';\\n }\\n if (!inBrowser) {\\n mode = 'abstract';\\n }\\n this.mode = mode;\\n\\n switch (mode) {\\n case 'history':\\n this.history = new HTML5History(this, options.base);\\n break\\n case 'hash':\\n this.history = new HashHistory(this, options.base, this.fallback);\\n break\\n case 'abstract':\\n this.history = new AbstractHistory(this, options.base);\\n break\\n default:\\n if (false) {\\n assert(false, (\\\"invalid mode: \\\" + mode));\\n }\\n }\\n};\\n\\nvar prototypeAccessors = { currentRoute: {} };\\n\\nVueRouter.prototype.match = function match (\\n raw,\\n current,\\n redirectedFrom\\n) {\\n return this.matcher.match(raw, current, redirectedFrom)\\n};\\n\\nprototypeAccessors.currentRoute.get = function () {\\n return this.history && this.history.current\\n};\\n\\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\\n var this$1 = this;\\n\\n \\\"production\\\" !== 'production' && assert(\\n install.installed,\\n \\\"not installed. Make sure to call `Vue.use(VueRouter)` \\\" +\\n \\\"before creating root instance.\\\"\\n );\\n\\n this.apps.push(app);\\n\\n // main app already initialized.\\n if (this.app) {\\n return\\n }\\n\\n this.app = app;\\n\\n var history = this.history;\\n\\n if (history instanceof HTML5History) {\\n history.transitionTo(history.getCurrentLocation());\\n } else if (history instanceof HashHistory) {\\n var setupHashListener = function () {\\n history.setupListeners();\\n };\\n history.transitionTo(\\n history.getCurrentLocation(),\\n setupHashListener,\\n setupHashListener\\n );\\n }\\n\\n history.listen(function (route) {\\n this$1.apps.forEach(function (app) {\\n app._route = route;\\n });\\n });\\n};\\n\\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\\n return registerHook(this.beforeHooks, fn)\\n};\\n\\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\\n return registerHook(this.resolveHooks, fn)\\n};\\n\\nVueRouter.prototype.afterEach = function afterEach (fn) {\\n return registerHook(this.afterHooks, fn)\\n};\\n\\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\\n this.history.onReady(cb, errorCb);\\n};\\n\\nVueRouter.prototype.onError = function onError (errorCb) {\\n this.history.onError(errorCb);\\n};\\n\\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\\n this.history.push(location, onComplete, onAbort);\\n};\\n\\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\\n this.history.replace(location, onComplete, onAbort);\\n};\\n\\nVueRouter.prototype.go = function go (n) {\\n this.history.go(n);\\n};\\n\\nVueRouter.prototype.back = function back () {\\n this.go(-1);\\n};\\n\\nVueRouter.prototype.forward = function forward () {\\n this.go(1);\\n};\\n\\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\\n var route = to\\n ? to.matched\\n ? to\\n : this.resolve(to).route\\n : this.currentRoute;\\n if (!route) {\\n return []\\n }\\n return [].concat.apply([], route.matched.map(function (m) {\\n return Object.keys(m.components).map(function (key) {\\n return m.components[key]\\n })\\n }))\\n};\\n\\nVueRouter.prototype.resolve = function resolve (\\n to,\\n current,\\n append\\n) {\\n var location = normalizeLocation(\\n to,\\n current || this.history.current,\\n append,\\n this\\n );\\n var route = this.match(location, current);\\n var fullPath = route.redirectedFrom || route.fullPath;\\n var base = this.history.base;\\n var href = createHref(base, fullPath, this.mode);\\n return {\\n location: location,\\n route: route,\\n href: href,\\n // for backwards compat\\n normalizedTo: location,\\n resolved: route\\n }\\n};\\n\\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\\n this.matcher.addRoutes(routes);\\n if (this.history.current !== START) {\\n this.history.transitionTo(this.history.getCurrentLocation());\\n }\\n};\\n\\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\\n\\nfunction registerHook (list, fn) {\\n list.push(fn);\\n return function () {\\n var i = list.indexOf(fn);\\n if (i > -1) { list.splice(i, 1); }\\n }\\n}\\n\\nfunction createHref (base, fullPath, mode) {\\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\\n return base ? cleanPath(base + '/' + path) : path\\n}\\n\\nVueRouter.install = install;\\nVueRouter.version = '2.7.0';\\n\\nif (inBrowser && window.Vue) {\\n window.Vue.use(VueRouter);\\n}\\n\\n/* harmony default export */ __webpack_exports__[\\\"a\\\"] = (VueRouter);\\n\\n\\n/***/ }),\\n/* 230 */,\\n/* 231 */,\\n/* 232 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar core = __webpack_require__(7)\\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\\n return $JSON.stringify.apply($JSON, arguments);\\n};\\n\\n/***/ }),\\n/* 233 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(59);\\n__webpack_require__(27);\\n__webpack_require__(43);\\n__webpack_require__(234);\\nmodule.exports = __webpack_require__(7).Promise;\\n\\n/***/ }),\\n/* 234 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar LIBRARY = __webpack_require__(28)\\n , global = __webpack_require__(6)\\n , ctx = __webpack_require__(19)\\n , classof = __webpack_require__(63)\\n , $export = __webpack_require__(18)\\n , isObject = __webpack_require__(20)\\n , aFunction = __webpack_require__(35)\\n , anInstance = __webpack_require__(235)\\n , forOf = __webpack_require__(236)\\n , speciesConstructor = __webpack_require__(237)\\n , task = __webpack_require__(66).set\\n , microtask = __webpack_require__(239)()\\n , PROMISE = 'Promise'\\n , TypeError = global.TypeError\\n , process = global.process\\n , $Promise = global[PROMISE]\\n , process = global.process\\n , isNode = classof(process) == 'process'\\n , empty = function(){ /* empty */ }\\n , Internal, GenericPromiseCapability, Wrapper;\\n\\nvar USE_NATIVE = !!function(){\\n try {\\n // correct subclassing with @@species support\\n var promise = $Promise.resolve(1)\\n , FakePromise = (promise.constructor = {})[__webpack_require__(5)('species')] = function(exec){ exec(empty, empty); };\\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\\n } catch(e){ /* empty */ }\\n}();\\n\\n// helpers\\nvar sameConstructor = function(a, b){\\n // with library wrapper special case\\n return a === b || a === $Promise && b === Wrapper;\\n};\\nvar isThenable = function(it){\\n var then;\\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\\n};\\nvar newPromiseCapability = function(C){\\n return sameConstructor($Promise, C)\\n ? new PromiseCapability(C)\\n : new GenericPromiseCapability(C);\\n};\\nvar PromiseCapability = GenericPromiseCapability = function(C){\\n var resolve, reject;\\n this.promise = new C(function($$resolve, $$reject){\\n if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');\\n resolve = $$resolve;\\n reject = $$reject;\\n });\\n this.resolve = aFunction(resolve);\\n this.reject = aFunction(reject);\\n};\\nvar perform = function(exec){\\n try {\\n exec();\\n } catch(e){\\n return {error: e};\\n }\\n};\\nvar notify = function(promise, isReject){\\n if(promise._n)return;\\n promise._n = true;\\n var chain = promise._c;\\n microtask(function(){\\n var value = promise._v\\n , ok = promise._s == 1\\n , i = 0;\\n var run = function(reaction){\\n var handler = ok ? reaction.ok : reaction.fail\\n , resolve = reaction.resolve\\n , reject = reaction.reject\\n , domain = reaction.domain\\n , result, then;\\n try {\\n if(handler){\\n if(!ok){\\n if(promise._h == 2)onHandleUnhandled(promise);\\n promise._h = 1;\\n }\\n if(handler === true)result = value;\\n else {\\n if(domain)domain.enter();\\n result = handler(value);\\n if(domain)domain.exit();\\n }\\n if(result === reaction.promise){\\n reject(TypeError('Promise-chain cycle'));\\n } else if(then = isThenable(result)){\\n then.call(result, resolve, reject);\\n } else resolve(result);\\n } else reject(value);\\n } catch(e){\\n reject(e);\\n }\\n };\\n while(chain.length > i)run(chain[i++]); // variable length - can't use forEach\\n promise._c = [];\\n promise._n = false;\\n if(isReject && !promise._h)onUnhandled(promise);\\n });\\n};\\nvar onUnhandled = function(promise){\\n task.call(global, function(){\\n var value = promise._v\\n , abrupt, handler, console;\\n if(isUnhandled(promise)){\\n abrupt = perform(function(){\\n if(isNode){\\n process.emit('unhandledRejection', value, promise);\\n } else if(handler = global.onunhandledrejection){\\n handler({promise: promise, reason: value});\\n } else if((console = global.console) && console.error){\\n console.error('Unhandled promise rejection', value);\\n }\\n });\\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\\n } promise._a = undefined;\\n if(abrupt)throw abrupt.error;\\n });\\n};\\nvar isUnhandled = function(promise){\\n if(promise._h == 1)return false;\\n var chain = promise._a || promise._c\\n , i = 0\\n , reaction;\\n while(chain.length > i){\\n reaction = chain[i++];\\n if(reaction.fail || !isUnhandled(reaction.promise))return false;\\n } return true;\\n};\\nvar onHandleUnhandled = function(promise){\\n task.call(global, function(){\\n var handler;\\n if(isNode){\\n process.emit('rejectionHandled', promise);\\n } else if(handler = global.onrejectionhandled){\\n handler({promise: promise, reason: promise._v});\\n }\\n });\\n};\\nvar $reject = function(value){\\n var promise = this;\\n if(promise._d)return;\\n promise._d = true;\\n promise = promise._w || promise; // unwrap\\n promise._v = value;\\n promise._s = 2;\\n if(!promise._a)promise._a = promise._c.slice();\\n notify(promise, true);\\n};\\nvar $resolve = function(value){\\n var promise = this\\n , then;\\n if(promise._d)return;\\n promise._d = true;\\n promise = promise._w || promise; // unwrap\\n try {\\n if(promise === value)throw TypeError(\\\"Promise can't be resolved itself\\\");\\n if(then = isThenable(value)){\\n microtask(function(){\\n var wrapper = {_w: promise, _d: false}; // wrap\\n try {\\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\\n } catch(e){\\n $reject.call(wrapper, e);\\n }\\n });\\n } else {\\n promise._v = value;\\n promise._s = 1;\\n notify(promise, false);\\n }\\n } catch(e){\\n $reject.call({_w: promise, _d: false}, e); // wrap\\n }\\n};\\n\\n// constructor polyfill\\nif(!USE_NATIVE){\\n // 25.4.3.1 Promise(executor)\\n $Promise = function Promise(executor){\\n anInstance(this, $Promise, PROMISE, '_h');\\n aFunction(executor);\\n Internal.call(this);\\n try {\\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\\n } catch(err){\\n $reject.call(this, err);\\n }\\n };\\n Internal = function Promise(executor){\\n this._c = []; // <- awaiting reactions\\n this._a = undefined; // <- checked in isUnhandled reactions\\n this._s = 0; // <- state\\n this._d = false; // <- done\\n this._v = undefined; // <- value\\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\\n this._n = false; // <- notify\\n };\\n Internal.prototype = __webpack_require__(240)($Promise.prototype, {\\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\\n then: function then(onFulfilled, onRejected){\\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\\n reaction.fail = typeof onRejected == 'function' && onRejected;\\n reaction.domain = isNode ? process.domain : undefined;\\n this._c.push(reaction);\\n if(this._a)this._a.push(reaction);\\n if(this._s)notify(this, false);\\n return reaction.promise;\\n },\\n // 25.4.5.1 Promise.prototype.catch(onRejected)\\n 'catch': function(onRejected){\\n return this.then(undefined, onRejected);\\n }\\n });\\n PromiseCapability = function(){\\n var promise = new Internal;\\n this.promise = promise;\\n this.resolve = ctx($resolve, promise, 1);\\n this.reject = ctx($reject, promise, 1);\\n };\\n}\\n\\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});\\n__webpack_require__(30)($Promise, PROMISE);\\n__webpack_require__(241)(PROMISE);\\nWrapper = __webpack_require__(7)[PROMISE];\\n\\n// statics\\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\\n // 25.4.4.5 Promise.reject(r)\\n reject: function reject(r){\\n var capability = newPromiseCapability(this)\\n , $$reject = capability.reject;\\n $$reject(r);\\n return capability.promise;\\n }\\n});\\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\\n // 25.4.4.6 Promise.resolve(x)\\n resolve: function resolve(x){\\n // instanceof instead of internal slot check because we should fix it without replacement native Promise core\\n if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;\\n var capability = newPromiseCapability(this)\\n , $$resolve = capability.resolve;\\n $$resolve(x);\\n return capability.promise;\\n }\\n});\\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(67)(function(iter){\\n $Promise.all(iter)['catch'](empty);\\n})), PROMISE, {\\n // 25.4.4.1 Promise.all(iterable)\\n all: function all(iterable){\\n var C = this\\n , capability = newPromiseCapability(C)\\n , resolve = capability.resolve\\n , reject = capability.reject;\\n var abrupt = perform(function(){\\n var values = []\\n , index = 0\\n , remaining = 1;\\n forOf(iterable, false, function(promise){\\n var $index = index++\\n , alreadyCalled = false;\\n values.push(undefined);\\n remaining++;\\n C.resolve(promise).then(function(value){\\n if(alreadyCalled)return;\\n alreadyCalled = true;\\n values[$index] = value;\\n --remaining || resolve(values);\\n }, reject);\\n });\\n --remaining || resolve(values);\\n });\\n if(abrupt)reject(abrupt.error);\\n return capability.promise;\\n },\\n // 25.4.4.4 Promise.race(iterable)\\n race: function race(iterable){\\n var C = this\\n , capability = newPromiseCapability(C)\\n , reject = capability.reject;\\n var abrupt = perform(function(){\\n forOf(iterable, false, function(promise){\\n C.resolve(promise).then(capability.resolve, reject);\\n });\\n });\\n if(abrupt)reject(abrupt.error);\\n return capability.promise;\\n }\\n});\\n\\n/***/ }),\\n/* 235 */\\n/***/ (function(module, exports) {\\n\\nmodule.exports = function(it, Constructor, name, forbiddenField){\\n if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){\\n throw TypeError(name + ': incorrect invocation!');\\n } return it;\\n};\\n\\n/***/ }),\\n/* 236 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar ctx = __webpack_require__(19)\\n , call = __webpack_require__(64)\\n , isArrayIter = __webpack_require__(65)\\n , anObject = __webpack_require__(10)\\n , toLength = __webpack_require__(38)\\n , getIterFn = __webpack_require__(48)\\n , BREAK = {}\\n , RETURN = {};\\nvar exports = module.exports = function(iterable, entries, fn, that, ITERATOR){\\n var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)\\n , f = ctx(fn, that, entries ? 2 : 1)\\n , index = 0\\n , length, step, iterator, result;\\n if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');\\n // fast case for arrays with default iterator\\n if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){\\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\\n if(result === BREAK || result === RETURN)return result;\\n } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){\\n result = call(iterator, f, step.value, entries);\\n if(result === BREAK || result === RETURN)return result;\\n }\\n};\\nexports.BREAK = BREAK;\\nexports.RETURN = RETURN;\\n\\n/***/ }),\\n/* 237 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 7.3.20 SpeciesConstructor(O, defaultConstructor)\\nvar anObject = __webpack_require__(10)\\n , aFunction = __webpack_require__(35)\\n , SPECIES = __webpack_require__(5)('species');\\nmodule.exports = function(O, D){\\n var C = anObject(O).constructor, S;\\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\\n};\\n\\n/***/ }),\\n/* 238 */\\n/***/ (function(module, exports) {\\n\\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\\nmodule.exports = function(fn, args, that){\\n var un = that === undefined;\\n switch(args.length){\\n case 0: return un ? fn()\\n : fn.call(that);\\n case 1: return un ? fn(args[0])\\n : fn.call(that, args[0]);\\n case 2: return un ? fn(args[0], args[1])\\n : fn.call(that, args[0], args[1]);\\n case 3: return un ? fn(args[0], args[1], args[2])\\n : fn.call(that, args[0], args[1], args[2]);\\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\\n : fn.call(that, args[0], args[1], args[2], args[3]);\\n } return fn.apply(that, args);\\n};\\n\\n/***/ }),\\n/* 239 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar global = __webpack_require__(6)\\n , macrotask = __webpack_require__(66).set\\n , Observer = global.MutationObserver || global.WebKitMutationObserver\\n , process = global.process\\n , Promise = global.Promise\\n , isNode = __webpack_require__(25)(process) == 'process';\\n\\nmodule.exports = function(){\\n var head, last, notify;\\n\\n var flush = function(){\\n var parent, fn;\\n if(isNode && (parent = process.domain))parent.exit();\\n while(head){\\n fn = head.fn;\\n head = head.next;\\n try {\\n fn();\\n } catch(e){\\n if(head)notify();\\n else last = undefined;\\n throw e;\\n }\\n } last = undefined;\\n if(parent)parent.enter();\\n };\\n\\n // Node.js\\n if(isNode){\\n notify = function(){\\n process.nextTick(flush);\\n };\\n // browsers with MutationObserver\\n } else if(Observer){\\n var toggle = true\\n , node = document.createTextNode('');\\n new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new\\n notify = function(){\\n node.data = toggle = !toggle;\\n };\\n // environments with maybe non-completely correct, but existent Promise\\n } else if(Promise && Promise.resolve){\\n var promise = Promise.resolve();\\n notify = function(){\\n promise.then(flush);\\n };\\n // for other environments - macrotask based on:\\n // - setImmediate\\n // - MessageChannel\\n // - window.postMessag\\n // - onreadystatechange\\n // - setTimeout\\n } else {\\n notify = function(){\\n // strange IE + webpack dev server bug - use .call(global)\\n macrotask.call(global, flush);\\n };\\n }\\n\\n return function(fn){\\n var task = {fn: fn, next: undefined};\\n if(last)last.next = task;\\n if(!head){\\n head = task;\\n notify();\\n } last = task;\\n };\\n};\\n\\n/***/ }),\\n/* 240 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar hide = __webpack_require__(12);\\nmodule.exports = function(target, src, safe){\\n for(var key in src){\\n if(safe && target[key])target[key] = src[key];\\n else hide(target, key, src[key]);\\n } return target;\\n};\\n\\n/***/ }),\\n/* 241 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar global = __webpack_require__(6)\\n , core = __webpack_require__(7)\\n , dP = __webpack_require__(9)\\n , DESCRIPTORS = __webpack_require__(13)\\n , SPECIES = __webpack_require__(5)('species');\\n\\nmodule.exports = function(KEY){\\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\\n if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {\\n configurable: true,\\n get: function(){ return this; }\\n });\\n};\\n\\n/***/ }),\\n/* 242 */,\\n/* 243 */,\\n/* 244 */,\\n/* 245 */,\\n/* 246 */,\\n/* 247 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = { \\\"default\\\": __webpack_require__(248), __esModule: true };\\n\\n/***/ }),\\n/* 248 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(249);\\nmodule.exports = __webpack_require__(7).Object.assign;\\n\\n/***/ }),\\n/* 249 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// 19.1.3.1 Object.assign(target, source)\\nvar $export = __webpack_require__(18);\\n\\n$export($export.S + $export.F, 'Object', {assign: __webpack_require__(250)});\\n\\n/***/ }),\\n/* 250 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\n// 19.1.2.1 Object.assign(target, source, ...)\\nvar getKeys = __webpack_require__(24)\\n , gOPS = __webpack_require__(46)\\n , pIE = __webpack_require__(31)\\n , toObject = __webpack_require__(42)\\n , IObject = __webpack_require__(56)\\n , $assign = Object.assign;\\n\\n// should work with symbols and should have deterministic property order (V8 bug)\\nmodule.exports = !$assign || __webpack_require__(21)(function(){\\n var A = {}\\n , B = {}\\n , S = Symbol()\\n , K = 'abcdefghijklmnopqrst';\\n A[S] = 7;\\n K.split('').forEach(function(k){ B[k] = k; });\\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\\n var T = toObject(target)\\n , aLen = arguments.length\\n , index = 1\\n , getSymbols = gOPS.f\\n , isEnum = pIE.f;\\n while(aLen > index){\\n var S = IObject(arguments[index++])\\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\\n , length = keys.length\\n , j = 0\\n , key;\\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\\n } return T;\\n} : $assign;\\n\\n/***/ }),\\n/* 251 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(43);\\n__webpack_require__(27);\\nmodule.exports = __webpack_require__(252);\\n\\n/***/ }),\\n/* 252 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nvar anObject = __webpack_require__(10)\\n , get = __webpack_require__(48);\\nmodule.exports = __webpack_require__(7).getIterator = function(it){\\n var iterFn = get(it);\\n if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');\\n return anObject(iterFn.call(it));\\n};\\n\\n/***/ }),\\n/* 253 */,\\n/* 254 */,\\n/* 255 */,\\n/* 256 */,\\n/* 257 */,\\n/* 258 */,\\n/* 259 */,\\n/* 260 */,\\n/* 261 */,\\n/* 262 */,\\n/* 263 */,\\n/* 264 */\\n/***/ (function(module, exports) {\\n\\nmodule.exports = function(module) {\\r\\n\\tif(!module.webpackPolyfill) {\\r\\n\\t\\tmodule.deprecate = function() {};\\r\\n\\t\\tmodule.paths = [];\\r\\n\\t\\t// module.parent = undefined by default\\r\\n\\t\\tif(!module.children) module.children = [];\\r\\n\\t\\tObject.defineProperty(module, \\\"loaded\\\", {\\r\\n\\t\\t\\tenumerable: true,\\r\\n\\t\\t\\tget: function() {\\r\\n\\t\\t\\t\\treturn module.l;\\r\\n\\t\\t\\t}\\r\\n\\t\\t});\\r\\n\\t\\tObject.defineProperty(module, \\\"id\\\", {\\r\\n\\t\\t\\tenumerable: true,\\r\\n\\t\\t\\tget: function() {\\r\\n\\t\\t\\t\\treturn module.i;\\r\\n\\t\\t\\t}\\r\\n\\t\\t});\\r\\n\\t\\tmodule.webpackPolyfill = 1;\\r\\n\\t}\\r\\n\\treturn module;\\r\\n};\\r\\n\\n\\n/***/ }),\\n/* 265 */,\\n/* 266 */,\\n/* 267 */,\\n/* 268 */,\\n/* 269 */,\\n/* 270 */,\\n/* 271 */,\\n/* 272 */,\\n/* 273 */,\\n/* 274 */,\\n/* 275 */,\\n/* 276 */,\\n/* 277 */,\\n/* 278 */,\\n/* 279 */,\\n/* 280 */,\\n/* 281 */,\\n/* 282 */,\\n/* 283 */,\\n/* 284 */,\\n/* 285 */,\\n/* 286 */,\\n/* 287 */,\\n/* 288 */,\\n/* 289 */,\\n/* 290 */,\\n/* 291 */,\\n/* 292 */,\\n/* 293 */,\\n/* 294 */,\\n/* 295 */,\\n/* 296 */,\\n/* 297 */,\\n/* 298 */,\\n/* 299 */,\\n/* 300 */,\\n/* 301 */,\\n/* 302 */,\\n/* 303 */,\\n/* 304 */,\\n/* 305 */,\\n/* 306 */,\\n/* 307 */,\\n/* 308 */,\\n/* 309 */,\\n/* 310 */,\\n/* 311 */,\\n/* 312 */,\\n/* 313 */,\\n/* 314 */,\\n/* 315 */,\\n/* 316 */,\\n/* 317 */,\\n/* 318 */,\\n/* 319 */,\\n/* 320 */,\\n/* 321 */,\\n/* 322 */,\\n/* 323 */,\\n/* 324 */,\\n/* 325 */,\\n/* 326 */,\\n/* 327 */,\\n/* 328 */,\\n/* 329 */,\\n/* 330 */,\\n/* 331 */,\\n/* 332 */,\\n/* 333 */,\\n/* 334 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\nmodule.exports = { \\\"default\\\": __webpack_require__(335), __esModule: true };\\n\\n/***/ }),\\n/* 335 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n__webpack_require__(27);\\n__webpack_require__(336);\\nmodule.exports = __webpack_require__(7).Array.from;\\n\\n/***/ }),\\n/* 336 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar ctx = __webpack_require__(19)\\n , $export = __webpack_require__(18)\\n , toObject = __webpack_require__(42)\\n , call = __webpack_require__(64)\\n , isArrayIter = __webpack_require__(65)\\n , toLength = __webpack_require__(38)\\n , createProperty = __webpack_require__(337)\\n , getIterFn = __webpack_require__(48);\\n\\n$export($export.S + $export.F * !__webpack_require__(67)(function(iter){ Array.from(iter); }), 'Array', {\\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\\n from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){\\n var O = toObject(arrayLike)\\n , C = typeof this == 'function' ? this : Array\\n , aLen = arguments.length\\n , mapfn = aLen > 1 ? arguments[1] : undefined\\n , mapping = mapfn !== undefined\\n , index = 0\\n , iterFn = getIterFn(O)\\n , length, result, step, iterator;\\n if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\\n // if object isn't iterable or it's array with default iterator - use simple case\\n if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){\\n for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){\\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\\n }\\n } else {\\n length = toLength(O.length);\\n for(result = new C(length); length > index; index++){\\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\\n }\\n }\\n result.length = index;\\n return result;\\n }\\n});\\n\\n\\n/***/ }),\\n/* 337 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n\\\"use strict\\\";\\n\\nvar $defineProperty = __webpack_require__(9)\\n , createDesc = __webpack_require__(22);\\n\\nmodule.exports = function(object, index, value){\\n if(index in object)$defineProperty.f(object, index, createDesc(0, value));\\n else object[index] = value;\\n};\\n\\n/***/ }),\\n/* 338 */,\\n/* 339 */,\\n/* 340 */,\\n/* 341 */,\\n/* 342 */,\\n/* 343 */,\\n/* 344 */,\\n/* 345 */,\\n/* 346 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\\n// Distributed under an MIT license: http://codemirror.net/LICENSE\\n\\n// This is CodeMirror (http://codemirror.net), a code editor\\n// implemented in JavaScript on top of the browser's DOM.\\n//\\n// You can find some technical background for some of the code below\\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\\n\\n(function (global, factory) {\\n\\t true ? module.exports = factory() :\\n\\ttypeof define === 'function' && define.amd ? define(factory) :\\n\\t(global.CodeMirror = factory());\\n}(this, (function () { 'use strict';\\n\\n// Kludges for bugs and behavior differences that can't be feature\\n// detected are enabled based on userAgent etc sniffing.\\nvar userAgent = navigator.userAgent;\\nvar platform = navigator.platform;\\n\\nvar gecko = /gecko\\\\/\\\\d/i.test(userAgent);\\nvar ie_upto10 = /MSIE \\\\d/.test(userAgent);\\nvar ie_11up = /Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(userAgent);\\nvar edge = /Edge\\\\/(\\\\d+)/.exec(userAgent);\\nvar ie = ie_upto10 || ie_11up || edge;\\nvar ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\\nvar webkit = !edge && /WebKit\\\\//.test(userAgent);\\nvar qtwebkit = webkit && /Qt\\\\/\\\\d+\\\\.\\\\d+/.test(userAgent);\\nvar chrome = !edge && /Chrome\\\\//.test(userAgent);\\nvar presto = /Opera\\\\//.test(userAgent);\\nvar safari = /Apple Computer/.test(navigator.vendor);\\nvar mac_geMountainLion = /Mac OS X 1\\\\d\\\\D([8-9]|\\\\d\\\\d)\\\\D/.test(userAgent);\\nvar phantom = /PhantomJS/.test(userAgent);\\n\\nvar ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\\\/\\\\w+/.test(userAgent);\\nvar android = /Android/.test(userAgent);\\n// This is woefully incomplete. Suggestions for alternative methods welcome.\\nvar mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\\nvar mac = ios || /Mac/.test(platform);\\nvar chromeOS = /\\\\bCrOS\\\\b/.test(userAgent);\\nvar windows = /win/i.test(platform);\\n\\nvar presto_version = presto && userAgent.match(/Version\\\\/(\\\\d*\\\\.\\\\d*)/);\\nif (presto_version) { presto_version = Number(presto_version[1]); }\\nif (presto_version && presto_version >= 15) { presto = false; webkit = true; }\\n// Some browsers use the wrong event properties to signal cmd/ctrl on OS X\\nvar flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\\nvar captureRightClick = gecko || (ie && ie_version >= 9);\\n\\nfunction classTest(cls) { return new RegExp(\\\"(^|\\\\\\\\s)\\\" + cls + \\\"(?:$|\\\\\\\\s)\\\\\\\\s*\\\") }\\n\\nvar rmClass = function(node, cls) {\\n var current = node.className;\\n var match = classTest(cls).exec(current);\\n if (match) {\\n var after = current.slice(match.index + match[0].length);\\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \\\"\\\");\\n }\\n};\\n\\nfunction removeChildren(e) {\\n for (var count = e.childNodes.length; count > 0; --count)\\n { e.removeChild(e.firstChild); }\\n return e\\n}\\n\\nfunction removeChildrenAndAdd(parent, e) {\\n return removeChildren(parent).appendChild(e)\\n}\\n\\nfunction elt(tag, content, className, style) {\\n var e = document.createElement(tag);\\n if (className) { e.className = className; }\\n if (style) { e.style.cssText = style; }\\n if (typeof content == \\\"string\\\") { e.appendChild(document.createTextNode(content)); }\\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\\n return e\\n}\\n// wrapper for elt, which removes the elt from the accessibility tree\\nfunction eltP(tag, content, className, style) {\\n var e = elt(tag, content, className, style);\\n e.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n return e\\n}\\n\\nvar range;\\nif (document.createRange) { range = function(node, start, end, endNode) {\\n var r = document.createRange();\\n r.setEnd(endNode || node, end);\\n r.setStart(node, start);\\n return r\\n}; }\\nelse { range = function(node, start, end) {\\n var r = document.body.createTextRange();\\n try { r.moveToElementText(node.parentNode); }\\n catch(e) { return r }\\n r.collapse(true);\\n r.moveEnd(\\\"character\\\", end);\\n r.moveStart(\\\"character\\\", start);\\n return r\\n}; }\\n\\nfunction contains(parent, child) {\\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\\n { child = child.parentNode; }\\n if (parent.contains)\\n { return parent.contains(child) }\\n do {\\n if (child.nodeType == 11) { child = child.host; }\\n if (child == parent) { return true }\\n } while (child = child.parentNode)\\n}\\n\\nfunction activeElt() {\\n // IE and Edge may throw an \\\"Unspecified Error\\\" when accessing document.activeElement.\\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\\n var activeElement;\\n try {\\n activeElement = document.activeElement;\\n } catch(e) {\\n activeElement = document.body || null;\\n }\\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\\n { activeElement = activeElement.shadowRoot.activeElement; }\\n return activeElement\\n}\\n\\nfunction addClass(node, cls) {\\n var current = node.className;\\n if (!classTest(cls).test(current)) { node.className += (current ? \\\" \\\" : \\\"\\\") + cls; }\\n}\\nfunction joinClasses(a, b) {\\n var as = a.split(\\\" \\\");\\n for (var i = 0; i < as.length; i++)\\n { if (as[i] && !classTest(as[i]).test(b)) { b += \\\" \\\" + as[i]; } }\\n return b\\n}\\n\\nvar selectInput = function(node) { node.select(); };\\nif (ios) // Mobile Safari apparently has a bug where select() is broken.\\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\\nelse if (ie) // Suppress mysterious IE10 errors\\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\\n\\nfunction bind(f) {\\n var args = Array.prototype.slice.call(arguments, 1);\\n return function(){return f.apply(null, args)}\\n}\\n\\nfunction copyObj(obj, target, overwrite) {\\n if (!target) { target = {}; }\\n for (var prop in obj)\\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\\n { target[prop] = obj[prop]; } }\\n return target\\n}\\n\\n// Counts the column offset in a string, taking tabs into account.\\n// Used mostly to find indentation.\\nfunction countColumn(string, end, tabSize, startIndex, startValue) {\\n if (end == null) {\\n end = string.search(/[^\\\\s\\\\u00a0]/);\\n if (end == -1) { end = string.length; }\\n }\\n for (var i = startIndex || 0, n = startValue || 0;;) {\\n var nextTab = string.indexOf(\\\"\\\\t\\\", i);\\n if (nextTab < 0 || nextTab >= end)\\n { return n + (end - i) }\\n n += nextTab - i;\\n n += tabSize - (n % tabSize);\\n i = nextTab + 1;\\n }\\n}\\n\\nvar Delayed = function() {this.id = null;};\\nDelayed.prototype.set = function (ms, f) {\\n clearTimeout(this.id);\\n this.id = setTimeout(f, ms);\\n};\\n\\nfunction indexOf(array, elt) {\\n for (var i = 0; i < array.length; ++i)\\n { if (array[i] == elt) { return i } }\\n return -1\\n}\\n\\n// Number of pixels added to scroller and sizer to hide scrollbar\\nvar scrollerGap = 30;\\n\\n// Returned or thrown by various protocols to signal 'I'm not\\n// handling this'.\\nvar Pass = {toString: function(){return \\\"CodeMirror.Pass\\\"}};\\n\\n// Reused option objects for setSelection & friends\\nvar sel_dontScroll = {scroll: false};\\nvar sel_mouse = {origin: \\\"*mouse\\\"};\\nvar sel_move = {origin: \\\"+move\\\"};\\n\\n// The inverse of countColumn -- find the offset that corresponds to\\n// a particular column.\\nfunction findColumn(string, goal, tabSize) {\\n for (var pos = 0, col = 0;;) {\\n var nextTab = string.indexOf(\\\"\\\\t\\\", pos);\\n if (nextTab == -1) { nextTab = string.length; }\\n var skipped = nextTab - pos;\\n if (nextTab == string.length || col + skipped >= goal)\\n { return pos + Math.min(skipped, goal - col) }\\n col += nextTab - pos;\\n col += tabSize - (col % tabSize);\\n pos = nextTab + 1;\\n if (col >= goal) { return pos }\\n }\\n}\\n\\nvar spaceStrs = [\\\"\\\"];\\nfunction spaceStr(n) {\\n while (spaceStrs.length <= n)\\n { spaceStrs.push(lst(spaceStrs) + \\\" \\\"); }\\n return spaceStrs[n]\\n}\\n\\nfunction lst(arr) { return arr[arr.length-1] }\\n\\nfunction map(array, f) {\\n var out = [];\\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\\n return out\\n}\\n\\nfunction insertSorted(array, value, score) {\\n var pos = 0, priority = score(value);\\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\\n array.splice(pos, 0, value);\\n}\\n\\nfunction nothing() {}\\n\\nfunction createObj(base, props) {\\n var inst;\\n if (Object.create) {\\n inst = Object.create(base);\\n } else {\\n nothing.prototype = base;\\n inst = new nothing();\\n }\\n if (props) { copyObj(props, inst); }\\n return inst\\n}\\n\\nvar nonASCIISingleCaseWordChar = /[\\\\u00df\\\\u0587\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u3040-\\\\u309f\\\\u30a0-\\\\u30ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\uac00-\\\\ud7af]/;\\nfunction isWordCharBasic(ch) {\\n return /\\\\w/.test(ch) || ch > \\\"\\\\x80\\\" &&\\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\\n}\\nfunction isWordChar(ch, helper) {\\n if (!helper) { return isWordCharBasic(ch) }\\n if (helper.source.indexOf(\\\"\\\\\\\\w\\\") > -1 && isWordCharBasic(ch)) { return true }\\n return helper.test(ch)\\n}\\n\\nfunction isEmpty(obj) {\\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\\n return true\\n}\\n\\n// Extending unicode characters. A series of a non-extending char +\\n// any number of extending chars is treated as a single unit as far\\n// as editing and measuring is concerned. This is not fully correct,\\n// since some scripts/fonts/browsers also treat other configurations\\n// of code points as a group.\\nvar extendingChars = /[\\\\u0300-\\\\u036f\\\\u0483-\\\\u0489\\\\u0591-\\\\u05bd\\\\u05bf\\\\u05c1\\\\u05c2\\\\u05c4\\\\u05c5\\\\u05c7\\\\u0610-\\\\u061a\\\\u064b-\\\\u065e\\\\u0670\\\\u06d6-\\\\u06dc\\\\u06de-\\\\u06e4\\\\u06e7\\\\u06e8\\\\u06ea-\\\\u06ed\\\\u0711\\\\u0730-\\\\u074a\\\\u07a6-\\\\u07b0\\\\u07eb-\\\\u07f3\\\\u0816-\\\\u0819\\\\u081b-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082d\\\\u0900-\\\\u0902\\\\u093c\\\\u0941-\\\\u0948\\\\u094d\\\\u0951-\\\\u0955\\\\u0962\\\\u0963\\\\u0981\\\\u09bc\\\\u09be\\\\u09c1-\\\\u09c4\\\\u09cd\\\\u09d7\\\\u09e2\\\\u09e3\\\\u0a01\\\\u0a02\\\\u0a3c\\\\u0a41\\\\u0a42\\\\u0a47\\\\u0a48\\\\u0a4b-\\\\u0a4d\\\\u0a51\\\\u0a70\\\\u0a71\\\\u0a75\\\\u0a81\\\\u0a82\\\\u0abc\\\\u0ac1-\\\\u0ac5\\\\u0ac7\\\\u0ac8\\\\u0acd\\\\u0ae2\\\\u0ae3\\\\u0b01\\\\u0b3c\\\\u0b3e\\\\u0b3f\\\\u0b41-\\\\u0b44\\\\u0b4d\\\\u0b56\\\\u0b57\\\\u0b62\\\\u0b63\\\\u0b82\\\\u0bbe\\\\u0bc0\\\\u0bcd\\\\u0bd7\\\\u0c3e-\\\\u0c40\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4d\\\\u0c55\\\\u0c56\\\\u0c62\\\\u0c63\\\\u0cbc\\\\u0cbf\\\\u0cc2\\\\u0cc6\\\\u0ccc\\\\u0ccd\\\\u0cd5\\\\u0cd6\\\\u0ce2\\\\u0ce3\\\\u0d3e\\\\u0d41-\\\\u0d44\\\\u0d4d\\\\u0d57\\\\u0d62\\\\u0d63\\\\u0dca\\\\u0dcf\\\\u0dd2-\\\\u0dd4\\\\u0dd6\\\\u0ddf\\\\u0e31\\\\u0e34-\\\\u0e3a\\\\u0e47-\\\\u0e4e\\\\u0eb1\\\\u0eb4-\\\\u0eb9\\\\u0ebb\\\\u0ebc\\\\u0ec8-\\\\u0ecd\\\\u0f18\\\\u0f19\\\\u0f35\\\\u0f37\\\\u0f39\\\\u0f71-\\\\u0f7e\\\\u0f80-\\\\u0f84\\\\u0f86\\\\u0f87\\\\u0f90-\\\\u0f97\\\\u0f99-\\\\u0fbc\\\\u0fc6\\\\u102d-\\\\u1030\\\\u1032-\\\\u1037\\\\u1039\\\\u103a\\\\u103d\\\\u103e\\\\u1058\\\\u1059\\\\u105e-\\\\u1060\\\\u1071-\\\\u1074\\\\u1082\\\\u1085\\\\u1086\\\\u108d\\\\u109d\\\\u135f\\\\u1712-\\\\u1714\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17b7-\\\\u17bd\\\\u17c6\\\\u17c9-\\\\u17d3\\\\u17dd\\\\u180b-\\\\u180d\\\\u18a9\\\\u1920-\\\\u1922\\\\u1927\\\\u1928\\\\u1932\\\\u1939-\\\\u193b\\\\u1a17\\\\u1a18\\\\u1a56\\\\u1a58-\\\\u1a5e\\\\u1a60\\\\u1a62\\\\u1a65-\\\\u1a6c\\\\u1a73-\\\\u1a7c\\\\u1a7f\\\\u1b00-\\\\u1b03\\\\u1b34\\\\u1b36-\\\\u1b3a\\\\u1b3c\\\\u1b42\\\\u1b6b-\\\\u1b73\\\\u1b80\\\\u1b81\\\\u1ba2-\\\\u1ba5\\\\u1ba8\\\\u1ba9\\\\u1c2c-\\\\u1c33\\\\u1c36\\\\u1c37\\\\u1cd0-\\\\u1cd2\\\\u1cd4-\\\\u1ce0\\\\u1ce2-\\\\u1ce8\\\\u1ced\\\\u1dc0-\\\\u1de6\\\\u1dfd-\\\\u1dff\\\\u200c\\\\u200d\\\\u20d0-\\\\u20f0\\\\u2cef-\\\\u2cf1\\\\u2de0-\\\\u2dff\\\\u302a-\\\\u302f\\\\u3099\\\\u309a\\\\ua66f-\\\\ua672\\\\ua67c\\\\ua67d\\\\ua6f0\\\\ua6f1\\\\ua802\\\\ua806\\\\ua80b\\\\ua825\\\\ua826\\\\ua8c4\\\\ua8e0-\\\\ua8f1\\\\ua926-\\\\ua92d\\\\ua947-\\\\ua951\\\\ua980-\\\\ua982\\\\ua9b3\\\\ua9b6-\\\\ua9b9\\\\ua9bc\\\\uaa29-\\\\uaa2e\\\\uaa31\\\\uaa32\\\\uaa35\\\\uaa36\\\\uaa43\\\\uaa4c\\\\uaab0\\\\uaab2-\\\\uaab4\\\\uaab7\\\\uaab8\\\\uaabe\\\\uaabf\\\\uaac1\\\\uabe5\\\\uabe8\\\\uabed\\\\udc00-\\\\udfff\\\\ufb1e\\\\ufe00-\\\\ufe0f\\\\ufe20-\\\\ufe26\\\\uff9e\\\\uff9f]/;\\nfunction isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\\n\\n// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\\nfunction skipExtendingChars(str, pos, dir) {\\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\\n return pos\\n}\\n\\n// Returns the value from the range [`from`; `to`] that satisfies\\n// `pred` and is closest to `from`. Assumes that at least `to` satisfies `pred`.\\nfunction findFirst(pred, from, to) {\\n for (;;) {\\n if (Math.abs(from - to) <= 1) { return pred(from) ? from : to }\\n var mid = Math.floor((from + to) / 2);\\n if (pred(mid)) { to = mid; }\\n else { from = mid; }\\n }\\n}\\n\\n// The display handles the DOM integration, both for input reading\\n// and content drawing. It holds references to DOM nodes and\\n// display-related state.\\n\\nfunction Display(place, doc, input) {\\n var d = this;\\n this.input = input;\\n\\n // Covers bottom-right square when both scrollbars are present.\\n d.scrollbarFiller = elt(\\\"div\\\", null, \\\"CodeMirror-scrollbar-filler\\\");\\n d.scrollbarFiller.setAttribute(\\\"cm-not-content\\\", \\\"true\\\");\\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\\n // and h scrollbar is present.\\n d.gutterFiller = elt(\\\"div\\\", null, \\\"CodeMirror-gutter-filler\\\");\\n d.gutterFiller.setAttribute(\\\"cm-not-content\\\", \\\"true\\\");\\n // Will contain the actual code, positioned to cover the viewport.\\n d.lineDiv = eltP(\\\"div\\\", null, \\\"CodeMirror-code\\\");\\n // Elements are added to these to represent selection and cursors.\\n d.selectionDiv = elt(\\\"div\\\", null, null, \\\"position: relative; z-index: 1\\\");\\n d.cursorDiv = elt(\\\"div\\\", null, \\\"CodeMirror-cursors\\\");\\n // A visibility: hidden element used to find the size of things.\\n d.measure = elt(\\\"div\\\", null, \\\"CodeMirror-measure\\\");\\n // When lines outside of the viewport are measured, they are drawn in this.\\n d.lineMeasure = elt(\\\"div\\\", null, \\\"CodeMirror-measure\\\");\\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\\n d.lineSpace = eltP(\\\"div\\\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\\n null, \\\"position: relative; outline: none\\\");\\n var lines = eltP(\\\"div\\\", [d.lineSpace], \\\"CodeMirror-lines\\\");\\n // Moved around its parent to cover visible view.\\n d.mover = elt(\\\"div\\\", [lines], null, \\\"position: relative\\\");\\n // Set to the height of the document, allowing scrolling.\\n d.sizer = elt(\\\"div\\\", [d.mover], \\\"CodeMirror-sizer\\\");\\n d.sizerWidth = null;\\n // Behavior of elts with overflow: auto and padding is\\n // inconsistent across browsers. This is used to ensure the\\n // scrollable area is big enough.\\n d.heightForcer = elt(\\\"div\\\", null, null, \\\"position: absolute; height: \\\" + scrollerGap + \\\"px; width: 1px;\\\");\\n // Will contain the gutters, if any.\\n d.gutters = elt(\\\"div\\\", null, \\\"CodeMirror-gutters\\\");\\n d.lineGutter = null;\\n // Actual scrollable element.\\n d.scroller = elt(\\\"div\\\", [d.sizer, d.heightForcer, d.gutters], \\\"CodeMirror-scroll\\\");\\n d.scroller.setAttribute(\\\"tabIndex\\\", \\\"-1\\\");\\n // The element in which the editor lives.\\n d.wrapper = elt(\\\"div\\\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \\\"CodeMirror\\\");\\n\\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\\n\\n if (place) {\\n if (place.appendChild) { place.appendChild(d.wrapper); }\\n else { place(d.wrapper); }\\n }\\n\\n // Current rendered range (may be bigger than the view window).\\n d.viewFrom = d.viewTo = doc.first;\\n d.reportedViewFrom = d.reportedViewTo = doc.first;\\n // Information about the rendered lines.\\n d.view = [];\\n d.renderedView = null;\\n // Holds info about a single rendered line when it was rendered\\n // for measurement, while not in view.\\n d.externalMeasured = null;\\n // Empty space (in pixels) above the view\\n d.viewOffset = 0;\\n d.lastWrapHeight = d.lastWrapWidth = 0;\\n d.updateLineNumbers = null;\\n\\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\\n d.scrollbarsClipped = false;\\n\\n // Used to only resize the line number gutter when necessary (when\\n // the amount of lines crosses a boundary that makes its width change)\\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\\n // Set to true when a non-horizontal-scrolling line widget is\\n // added. As an optimization, line widget aligning is skipped when\\n // this is false.\\n d.alignWidgets = false;\\n\\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\\n\\n // Tracks the maximum line length so that the horizontal scrollbar\\n // can be kept static when scrolling.\\n d.maxLine = null;\\n d.maxLineLength = 0;\\n d.maxLineChanged = false;\\n\\n // Used for measuring wheel scrolling granularity\\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\\n\\n // True when shift is held down.\\n d.shift = false;\\n\\n // Used to track whether anything happened since the context menu\\n // was opened.\\n d.selForContextMenu = null;\\n\\n d.activeTouch = null;\\n\\n input.init(d);\\n}\\n\\n// Find the line object corresponding to the given line number.\\nfunction getLine(doc, n) {\\n n -= doc.first;\\n if (n < 0 || n >= doc.size) { throw new Error(\\\"There is no line \\\" + (n + doc.first) + \\\" in the document.\\\") }\\n var chunk = doc;\\n while (!chunk.lines) {\\n for (var i = 0;; ++i) {\\n var child = chunk.children[i], sz = child.chunkSize();\\n if (n < sz) { chunk = child; break }\\n n -= sz;\\n }\\n }\\n return chunk.lines[n]\\n}\\n\\n// Get the part of a document between two positions, as an array of\\n// strings.\\nfunction getBetween(doc, start, end) {\\n var out = [], n = start.line;\\n doc.iter(start.line, end.line + 1, function (line) {\\n var text = line.text;\\n if (n == end.line) { text = text.slice(0, end.ch); }\\n if (n == start.line) { text = text.slice(start.ch); }\\n out.push(text);\\n ++n;\\n });\\n return out\\n}\\n// Get the lines between from and to, as array of strings.\\nfunction getLines(doc, from, to) {\\n var out = [];\\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\\n return out\\n}\\n\\n// Update the height of a line, propagating the height change\\n// upwards to parent nodes.\\nfunction updateLineHeight(line, height) {\\n var diff = height - line.height;\\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\\n}\\n\\n// Given a line object, find its line number by walking up through\\n// its parent links.\\nfunction lineNo(line) {\\n if (line.parent == null) { return null }\\n var cur = line.parent, no = indexOf(cur.lines, line);\\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\\n for (var i = 0;; ++i) {\\n if (chunk.children[i] == cur) { break }\\n no += chunk.children[i].chunkSize();\\n }\\n }\\n return no + cur.first\\n}\\n\\n// Find the line at the given vertical position, using the height\\n// information in the document tree.\\nfunction lineAtHeight(chunk, h) {\\n var n = chunk.first;\\n outer: do {\\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\\n var child = chunk.children[i$1], ch = child.height;\\n if (h < ch) { chunk = child; continue outer }\\n h -= ch;\\n n += child.chunkSize();\\n }\\n return n\\n } while (!chunk.lines)\\n var i = 0;\\n for (; i < chunk.lines.length; ++i) {\\n var line = chunk.lines[i], lh = line.height;\\n if (h < lh) { break }\\n h -= lh;\\n }\\n return n + i\\n}\\n\\nfunction isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\\n\\nfunction lineNumberFor(options, i) {\\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\\n}\\n\\n// A Pos instance represents a position within the text.\\nfunction Pos(line, ch, sticky) {\\n if ( sticky === void 0 ) sticky = null;\\n\\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\\n this.line = line;\\n this.ch = ch;\\n this.sticky = sticky;\\n}\\n\\n// Compare two positions, return 0 if they are the same, a negative\\n// number when a is less, and a positive number otherwise.\\nfunction cmp(a, b) { return a.line - b.line || a.ch - b.ch }\\n\\nfunction equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\\n\\nfunction copyPos(x) {return Pos(x.line, x.ch)}\\nfunction maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\\nfunction minPos(a, b) { return cmp(a, b) < 0 ? a : b }\\n\\n// Most of the external API clips given positions to make sure they\\n// actually exist within the document.\\nfunction clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\\nfunction clipPos(doc, pos) {\\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\\n var last = doc.first + doc.size - 1;\\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\\n return clipToLen(pos, getLine(doc, pos.line).text.length)\\n}\\nfunction clipToLen(pos, linelen) {\\n var ch = pos.ch;\\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\\n else if (ch < 0) { return Pos(pos.line, 0) }\\n else { return pos }\\n}\\nfunction clipPosArray(doc, array) {\\n var out = [];\\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\\n return out\\n}\\n\\n// Optimize some code when these features are not used.\\nvar sawReadOnlySpans = false;\\nvar sawCollapsedSpans = false;\\n\\nfunction seeReadOnlySpans() {\\n sawReadOnlySpans = true;\\n}\\n\\nfunction seeCollapsedSpans() {\\n sawCollapsedSpans = true;\\n}\\n\\n// TEXTMARKER SPANS\\n\\nfunction MarkedSpan(marker, from, to) {\\n this.marker = marker;\\n this.from = from; this.to = to;\\n}\\n\\n// Search an array of spans for a span matching the given marker.\\nfunction getMarkedSpanFor(spans, marker) {\\n if (spans) { for (var i = 0; i < spans.length; ++i) {\\n var span = spans[i];\\n if (span.marker == marker) { return span }\\n } }\\n}\\n// Remove a span from an array, returning undefined if no spans are\\n// left (we don't store arrays for lines without spans).\\nfunction removeMarkedSpan(spans, span) {\\n var r;\\n for (var i = 0; i < spans.length; ++i)\\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\\n return r\\n}\\n// Add a span to a line.\\nfunction addMarkedSpan(line, span) {\\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\\n span.marker.attachLine(line);\\n}\\n\\n// Used for the algorithm that adjusts markers for a change in the\\n// document. These functions cut an array of spans at a given\\n// character position, returning an array of remaining chunks (or\\n// undefined if nothing remains).\\nfunction markedSpansBefore(old, startCh, isInsert) {\\n var nw;\\n if (old) { for (var i = 0; i < old.length; ++i) {\\n var span = old[i], marker = span.marker;\\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\\n if (startsBefore || span.from == startCh && marker.type == \\\"bookmark\\\" && (!isInsert || !span.marker.insertLeft)) {\\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\\n }\\n } }\\n return nw\\n}\\nfunction markedSpansAfter(old, endCh, isInsert) {\\n var nw;\\n if (old) { for (var i = 0; i < old.length; ++i) {\\n var span = old[i], marker = span.marker;\\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\\n if (endsAfter || span.from == endCh && marker.type == \\\"bookmark\\\" && (!isInsert || span.marker.insertLeft)) {\\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\\n span.to == null ? null : span.to - endCh));\\n }\\n } }\\n return nw\\n}\\n\\n// Given a change object, compute the new set of marker spans that\\n// cover the line in which the change took place. Removes spans\\n// entirely within the change, reconnects spans belonging to the\\n// same marker that appear on both sides of the change, and cuts off\\n// spans partially within the change. Returns an array of span\\n// arrays with one element for each line in (after) the change.\\nfunction stretchSpansOverChange(doc, change) {\\n if (change.full) { return null }\\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\\n if (!oldFirst && !oldLast) { return null }\\n\\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\\n // Get the spans that 'stick out' on both sides\\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\\n var last = markedSpansAfter(oldLast, endCh, isInsert);\\n\\n // Next, merge those two ends\\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\\n if (first) {\\n // Fix up .to properties of first\\n for (var i = 0; i < first.length; ++i) {\\n var span = first[i];\\n if (span.to == null) {\\n var found = getMarkedSpanFor(last, span.marker);\\n if (!found) { span.to = startCh; }\\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\\n }\\n }\\n }\\n if (last) {\\n // Fix up .from in last (or move them into first in case of sameLine)\\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\\n var span$1 = last[i$1];\\n if (span$1.to != null) { span$1.to += offset; }\\n if (span$1.from == null) {\\n var found$1 = getMarkedSpanFor(first, span$1.marker);\\n if (!found$1) {\\n span$1.from = offset;\\n if (sameLine) { (first || (first = [])).push(span$1); }\\n }\\n } else {\\n span$1.from += offset;\\n if (sameLine) { (first || (first = [])).push(span$1); }\\n }\\n }\\n }\\n // Make sure we didn't create any zero-length spans\\n if (first) { first = clearEmptySpans(first); }\\n if (last && last != first) { last = clearEmptySpans(last); }\\n\\n var newMarkers = [first];\\n if (!sameLine) {\\n // Fill gap with whole-line-spans\\n var gap = change.text.length - 2, gapMarkers;\\n if (gap > 0 && first)\\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\\n { if (first[i$2].to == null)\\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\\n for (var i$3 = 0; i$3 < gap; ++i$3)\\n { newMarkers.push(gapMarkers); }\\n newMarkers.push(last);\\n }\\n return newMarkers\\n}\\n\\n// Remove spans that are empty and don't have a clearWhenEmpty\\n// option of false.\\nfunction clearEmptySpans(spans) {\\n for (var i = 0; i < spans.length; ++i) {\\n var span = spans[i];\\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\\n { spans.splice(i--, 1); }\\n }\\n if (!spans.length) { return null }\\n return spans\\n}\\n\\n// Used to 'clip' out readOnly ranges when making a change.\\nfunction removeReadOnlyRanges(doc, from, to) {\\n var markers = null;\\n doc.iter(from.line, to.line + 1, function (line) {\\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\\n var mark = line.markedSpans[i].marker;\\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\\n { (markers || (markers = [])).push(mark); }\\n } }\\n });\\n if (!markers) { return null }\\n var parts = [{from: from, to: to}];\\n for (var i = 0; i < markers.length; ++i) {\\n var mk = markers[i], m = mk.find(0);\\n for (var j = 0; j < parts.length; ++j) {\\n var p = parts[j];\\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\\n { newParts.push({from: p.from, to: m.from}); }\\n if (dto > 0 || !mk.inclusiveRight && !dto)\\n { newParts.push({from: m.to, to: p.to}); }\\n parts.splice.apply(parts, newParts);\\n j += newParts.length - 3;\\n }\\n }\\n return parts\\n}\\n\\n// Connect or disconnect spans from a line.\\nfunction detachMarkedSpans(line) {\\n var spans = line.markedSpans;\\n if (!spans) { return }\\n for (var i = 0; i < spans.length; ++i)\\n { spans[i].marker.detachLine(line); }\\n line.markedSpans = null;\\n}\\nfunction attachMarkedSpans(line, spans) {\\n if (!spans) { return }\\n for (var i = 0; i < spans.length; ++i)\\n { spans[i].marker.attachLine(line); }\\n line.markedSpans = spans;\\n}\\n\\n// Helpers used when computing which overlapping collapsed span\\n// counts as the larger one.\\nfunction extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\\nfunction extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\\n\\n// Returns a number indicating which of two overlapping collapsed\\n// spans is larger (and thus includes the other). Falls back to\\n// comparing ids when the spans cover exactly the same range.\\nfunction compareCollapsedMarkers(a, b) {\\n var lenDiff = a.lines.length - b.lines.length;\\n if (lenDiff != 0) { return lenDiff }\\n var aPos = a.find(), bPos = b.find();\\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\\n if (fromCmp) { return -fromCmp }\\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\\n if (toCmp) { return toCmp }\\n return b.id - a.id\\n}\\n\\n// Find out whether a line ends or starts in a collapsed span. If\\n// so, return the marker for that span.\\nfunction collapsedSpanAtSide(line, start) {\\n var sps = sawCollapsedSpans && line.markedSpans, found;\\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\\n sp = sps[i];\\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\\n { found = sp.marker; }\\n } }\\n return found\\n}\\nfunction collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\\nfunction collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\\n\\n// Test whether there exists a collapsed span that partially\\n// overlaps (covers the start or end, but not both) of a new span.\\n// Such overlap is not allowed.\\nfunction conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\\n var line = getLine(doc, lineNo$$1);\\n var sps = sawCollapsedSpans && line.markedSpans;\\n if (sps) { for (var i = 0; i < sps.length; ++i) {\\n var sp = sps[i];\\n if (!sp.marker.collapsed) { continue }\\n var found = sp.marker.find(0);\\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\\n { return true }\\n } }\\n}\\n\\n// A visual line is a line as drawn on the screen. Folding, for\\n// example, can cause multiple logical lines to appear on the same\\n// visual line. This finds the start of the visual line that the\\n// given line is part of (usually that is the line itself).\\nfunction visualLine(line) {\\n var merged;\\n while (merged = collapsedSpanAtStart(line))\\n { line = merged.find(-1, true).line; }\\n return line\\n}\\n\\nfunction visualLineEnd(line) {\\n var merged;\\n while (merged = collapsedSpanAtEnd(line))\\n { line = merged.find(1, true).line; }\\n return line\\n}\\n\\n// Returns an array of logical lines that continue the visual line\\n// started by the argument, or undefined if there are no such lines.\\nfunction visualLineContinued(line) {\\n var merged, lines;\\n while (merged = collapsedSpanAtEnd(line)) {\\n line = merged.find(1, true).line\\n ;(lines || (lines = [])).push(line);\\n }\\n return lines\\n}\\n\\n// Get the line number of the start of the visual line that the\\n// given line number is part of.\\nfunction visualLineNo(doc, lineN) {\\n var line = getLine(doc, lineN), vis = visualLine(line);\\n if (line == vis) { return lineN }\\n return lineNo(vis)\\n}\\n\\n// Get the line number of the start of the next visual line after\\n// the given line.\\nfunction visualLineEndNo(doc, lineN) {\\n if (lineN > doc.lastLine()) { return lineN }\\n var line = getLine(doc, lineN), merged;\\n if (!lineIsHidden(doc, line)) { return lineN }\\n while (merged = collapsedSpanAtEnd(line))\\n { line = merged.find(1, true).line; }\\n return lineNo(line) + 1\\n}\\n\\n// Compute whether a line is hidden. Lines count as hidden when they\\n// are part of a visual line that starts with another line, or when\\n// they are entirely covered by collapsed, non-widget span.\\nfunction lineIsHidden(doc, line) {\\n var sps = sawCollapsedSpans && line.markedSpans;\\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\\n sp = sps[i];\\n if (!sp.marker.collapsed) { continue }\\n if (sp.from == null) { return true }\\n if (sp.marker.widgetNode) { continue }\\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\\n { return true }\\n } }\\n}\\nfunction lineIsHiddenInner(doc, line, span) {\\n if (span.to == null) {\\n var end = span.marker.find(1, true);\\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\\n }\\n if (span.marker.inclusiveRight && span.to == line.text.length)\\n { return true }\\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\\n sp = line.markedSpans[i];\\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\\n (sp.to == null || sp.to != span.from) &&\\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\\n lineIsHiddenInner(doc, line, sp)) { return true }\\n }\\n}\\n\\n// Find the height above the given line.\\nfunction heightAtLine(lineObj) {\\n lineObj = visualLine(lineObj);\\n\\n var h = 0, chunk = lineObj.parent;\\n for (var i = 0; i < chunk.lines.length; ++i) {\\n var line = chunk.lines[i];\\n if (line == lineObj) { break }\\n else { h += line.height; }\\n }\\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\\n var cur = p.children[i$1];\\n if (cur == chunk) { break }\\n else { h += cur.height; }\\n }\\n }\\n return h\\n}\\n\\n// Compute the character length of a line, taking into account\\n// collapsed ranges (see markText) that might hide parts, and join\\n// other lines onto it.\\nfunction lineLength(line) {\\n if (line.height == 0) { return 0 }\\n var len = line.text.length, merged, cur = line;\\n while (merged = collapsedSpanAtStart(cur)) {\\n var found = merged.find(0, true);\\n cur = found.from.line;\\n len += found.from.ch - found.to.ch;\\n }\\n cur = line;\\n while (merged = collapsedSpanAtEnd(cur)) {\\n var found$1 = merged.find(0, true);\\n len -= cur.text.length - found$1.from.ch;\\n cur = found$1.to.line;\\n len += cur.text.length - found$1.to.ch;\\n }\\n return len\\n}\\n\\n// Find the longest line in the document.\\nfunction findMaxLine(cm) {\\n var d = cm.display, doc = cm.doc;\\n d.maxLine = getLine(doc, doc.first);\\n d.maxLineLength = lineLength(d.maxLine);\\n d.maxLineChanged = true;\\n doc.iter(function (line) {\\n var len = lineLength(line);\\n if (len > d.maxLineLength) {\\n d.maxLineLength = len;\\n d.maxLine = line;\\n }\\n });\\n}\\n\\n// BIDI HELPERS\\n\\nfunction iterateBidiSections(order, from, to, f) {\\n if (!order) { return f(from, to, \\\"ltr\\\") }\\n var found = false;\\n for (var i = 0; i < order.length; ++i) {\\n var part = order[i];\\n if (part.from < to && part.to > from || from == to && part.to == from) {\\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \\\"rtl\\\" : \\\"ltr\\\");\\n found = true;\\n }\\n }\\n if (!found) { f(from, to, \\\"ltr\\\"); }\\n}\\n\\nvar bidiOther = null;\\nfunction getBidiPartAt(order, ch, sticky) {\\n var found;\\n bidiOther = null;\\n for (var i = 0; i < order.length; ++i) {\\n var cur = order[i];\\n if (cur.from < ch && cur.to > ch) { return i }\\n if (cur.to == ch) {\\n if (cur.from != cur.to && sticky == \\\"before\\\") { found = i; }\\n else { bidiOther = i; }\\n }\\n if (cur.from == ch) {\\n if (cur.from != cur.to && sticky != \\\"before\\\") { found = i; }\\n else { bidiOther = i; }\\n }\\n }\\n return found != null ? found : bidiOther\\n}\\n\\n// Bidirectional ordering algorithm\\n// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\\n// that this (partially) implements.\\n\\n// One-char codes used for character types:\\n// L (L): Left-to-Right\\n// R (R): Right-to-Left\\n// r (AL): Right-to-Left Arabic\\n// 1 (EN): European Number\\n// + (ES): European Number Separator\\n// % (ET): European Number Terminator\\n// n (AN): Arabic Number\\n// , (CS): Common Number Separator\\n// m (NSM): Non-Spacing Mark\\n// b (BN): Boundary Neutral\\n// s (B): Paragraph Separator\\n// t (S): Segment Separator\\n// w (WS): Whitespace\\n// N (ON): Other Neutrals\\n\\n// Returns null if characters are ordered as they appear\\n// (left-to-right), or an array of sections ({from, to, level}\\n// objects) in the order in which they occur visually.\\nvar bidiOrdering = (function() {\\n // Character types for codepoints 0 to 0xff\\n var lowTypes = \\\"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\\\";\\n // Character types for codepoints 0x600 to 0x6f9\\n var arabicTypes = \\\"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\\\";\\n function charType(code) {\\n if (code <= 0xf7) { return lowTypes.charAt(code) }\\n else if (0x590 <= code && code <= 0x5f4) { return \\\"R\\\" }\\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\\n else if (0x6ee <= code && code <= 0x8ac) { return \\\"r\\\" }\\n else if (0x2000 <= code && code <= 0x200b) { return \\\"w\\\" }\\n else if (code == 0x200c) { return \\\"b\\\" }\\n else { return \\\"L\\\" }\\n }\\n\\n var bidiRE = /[\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u0700-\\\\u08ac]/;\\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\\n\\n function BidiSpan(level, from, to) {\\n this.level = level;\\n this.from = from; this.to = to;\\n }\\n\\n return function(str, direction) {\\n var outerType = direction == \\\"ltr\\\" ? \\\"L\\\" : \\\"R\\\";\\n\\n if (str.length == 0 || direction == \\\"ltr\\\" && !bidiRE.test(str)) { return false }\\n var len = str.length, types = [];\\n for (var i = 0; i < len; ++i)\\n { types.push(charType(str.charCodeAt(i))); }\\n\\n // W1. Examine each non-spacing mark (NSM) in the level run, and\\n // change the type of the NSM to the type of the previous\\n // character. If the NSM is at the start of the level run, it will\\n // get the type of sor.\\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\\n var type = types[i$1];\\n if (type == \\\"m\\\") { types[i$1] = prev; }\\n else { prev = type; }\\n }\\n\\n // W2. Search backwards from each instance of a European number\\n // until the first strong type (R, L, AL, or sor) is found. If an\\n // AL is found, change the type of the European number to Arabic\\n // number.\\n // W3. Change all ALs to R.\\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\\n var type$1 = types[i$2];\\n if (type$1 == \\\"1\\\" && cur == \\\"r\\\") { types[i$2] = \\\"n\\\"; }\\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \\\"r\\\") { types[i$2] = \\\"R\\\"; } }\\n }\\n\\n // W4. A single European separator between two European numbers\\n // changes to a European number. A single common separator between\\n // two numbers of the same type changes to that type.\\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\\n var type$2 = types[i$3];\\n if (type$2 == \\\"+\\\" && prev$1 == \\\"1\\\" && types[i$3+1] == \\\"1\\\") { types[i$3] = \\\"1\\\"; }\\n else if (type$2 == \\\",\\\" && prev$1 == types[i$3+1] &&\\n (prev$1 == \\\"1\\\" || prev$1 == \\\"n\\\")) { types[i$3] = prev$1; }\\n prev$1 = type$2;\\n }\\n\\n // W5. A sequence of European terminators adjacent to European\\n // numbers changes to all European numbers.\\n // W6. Otherwise, separators and terminators change to Other\\n // Neutral.\\n for (var i$4 = 0; i$4 < len; ++i$4) {\\n var type$3 = types[i$4];\\n if (type$3 == \\\",\\\") { types[i$4] = \\\"N\\\"; }\\n else if (type$3 == \\\"%\\\") {\\n var end = (void 0);\\n for (end = i$4 + 1; end < len && types[end] == \\\"%\\\"; ++end) {}\\n var replace = (i$4 && types[i$4-1] == \\\"!\\\") || (end < len && types[end] == \\\"1\\\") ? \\\"1\\\" : \\\"N\\\";\\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\\n i$4 = end - 1;\\n }\\n }\\n\\n // W7. Search backwards from each instance of a European number\\n // until the first strong type (R, L, or sor) is found. If an L is\\n // found, then change the type of the European number to L.\\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\\n var type$4 = types[i$5];\\n if (cur$1 == \\\"L\\\" && type$4 == \\\"1\\\") { types[i$5] = \\\"L\\\"; }\\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\\n }\\n\\n // N1. A sequence of neutrals takes the direction of the\\n // surrounding strong text if the text on both sides has the same\\n // direction. European and Arabic numbers act as if they were R in\\n // terms of their influence on neutrals. Start-of-level-run (sor)\\n // and end-of-level-run (eor) are used at level run boundaries.\\n // N2. Any remaining neutrals take the embedding direction.\\n for (var i$6 = 0; i$6 < len; ++i$6) {\\n if (isNeutral.test(types[i$6])) {\\n var end$1 = (void 0);\\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\\n var before = (i$6 ? types[i$6-1] : outerType) == \\\"L\\\";\\n var after = (end$1 < len ? types[end$1] : outerType) == \\\"L\\\";\\n var replace$1 = before == after ? (before ? \\\"L\\\" : \\\"R\\\") : outerType;\\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\\n i$6 = end$1 - 1;\\n }\\n }\\n\\n // Here we depart from the documented algorithm, in order to avoid\\n // building up an actual levels array. Since there are only three\\n // levels (0, 1, 2) in an implementation that doesn't take\\n // explicit embedding into account, we can build up the order on\\n // the fly, without following the level-based algorithm.\\n var order = [], m;\\n for (var i$7 = 0; i$7 < len;) {\\n if (countsAsLeft.test(types[i$7])) {\\n var start = i$7;\\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\\n order.push(new BidiSpan(0, start, i$7));\\n } else {\\n var pos = i$7, at = order.length;\\n for (++i$7; i$7 < len && types[i$7] != \\\"L\\\"; ++i$7) {}\\n for (var j$2 = pos; j$2 < i$7;) {\\n if (countsAsNum.test(types[j$2])) {\\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\\n var nstart = j$2;\\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\\n pos = j$2;\\n } else { ++j$2; }\\n }\\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\\n }\\n }\\n if (order[0].level == 1 && (m = str.match(/^\\\\s+/))) {\\n order[0].from = m[0].length;\\n order.unshift(new BidiSpan(0, 0, m[0].length));\\n }\\n if (lst(order).level == 1 && (m = str.match(/\\\\s+$/))) {\\n lst(order).to -= m[0].length;\\n order.push(new BidiSpan(0, len - m[0].length, len));\\n }\\n\\n return direction == \\\"rtl\\\" ? order.reverse() : order\\n }\\n})();\\n\\n// Get the bidi ordering for the given line (and cache it). Returns\\n// false for lines that are fully left-to-right, and an array of\\n// BidiSpan objects otherwise.\\nfunction getOrder(line, direction) {\\n var order = line.order;\\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\\n return order\\n}\\n\\nfunction moveCharLogically(line, ch, dir) {\\n var target = skipExtendingChars(line.text, ch + dir, dir);\\n return target < 0 || target > line.text.length ? null : target\\n}\\n\\nfunction moveLogically(line, start, dir) {\\n var ch = moveCharLogically(line, start.ch, dir);\\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \\\"after\\\" : \\\"before\\\")\\n}\\n\\nfunction endOfLine(visually, cm, lineObj, lineNo, dir) {\\n if (visually) {\\n var order = getOrder(lineObj, cm.doc.direction);\\n if (order) {\\n var part = dir < 0 ? lst(order) : order[0];\\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\\n var sticky = moveInStorageOrder ? \\\"after\\\" : \\\"before\\\";\\n var ch;\\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\\n // it could be that the last bidi part is not on the last visual line,\\n // since visual lines contain content order-consecutive chunks.\\n // Thus, in rtl, we are looking for the first (content-order) character\\n // in the rtl chunk that is on the last line (that is, the same line\\n // as the last (content-order) character).\\n if (part.level > 0) {\\n var prep = prepareMeasureForLine(cm, lineObj);\\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\\n var targetTop = measureCharPrepared(cm, prep, ch).top;\\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\\n if (sticky == \\\"before\\\") { ch = moveCharLogically(lineObj, ch, 1); }\\n } else { ch = dir < 0 ? part.to : part.from; }\\n return new Pos(lineNo, ch, sticky)\\n }\\n }\\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \\\"before\\\" : \\\"after\\\")\\n}\\n\\nfunction moveVisually(cm, line, start, dir) {\\n var bidi = getOrder(line, cm.doc.direction);\\n if (!bidi) { return moveLogically(line, start, dir) }\\n if (start.ch >= line.text.length) {\\n start.ch = line.text.length;\\n start.sticky = \\\"before\\\";\\n } else if (start.ch <= 0) {\\n start.ch = 0;\\n start.sticky = \\\"after\\\";\\n }\\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\\n if (cm.doc.direction == \\\"ltr\\\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\\n // nothing interesting happens.\\n return moveLogically(line, start, dir)\\n }\\n\\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\\n var prep;\\n var getWrappedLineExtent = function (ch) {\\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\\n prep = prep || prepareMeasureForLine(cm, line);\\n return wrappedLineExtentChar(cm, line, prep, ch)\\n };\\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \\\"before\\\" ? mv(start, -1) : start.ch);\\n\\n if (cm.doc.direction == \\\"rtl\\\" || part.level == 1) {\\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\\n var sticky = moveInStorageOrder ? \\\"before\\\" : \\\"after\\\";\\n return new Pos(start.line, ch, sticky)\\n }\\n }\\n\\n // Case 3: Could not move within this bidi part in this visual line, so leave\\n // the current bidi part\\n\\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\\n ? new Pos(start.line, mv(ch, 1), \\\"before\\\")\\n : new Pos(start.line, ch, \\\"after\\\"); };\\n\\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\\n var part = bidi[partPos];\\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\\n }\\n };\\n\\n // Case 3a: Look for other bidi parts on the same visual line\\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\\n if (res) { return res }\\n\\n // Case 3b: Look for other bidi parts on the next visual line\\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\\n if (res) { return res }\\n }\\n\\n // Case 4: Nowhere to move\\n return null\\n}\\n\\n// EVENT HANDLING\\n\\n// Lightweight event framework. on/off also work on DOM nodes,\\n// registering native DOM handlers.\\n\\nvar noHandlers = [];\\n\\nvar on = function(emitter, type, f) {\\n if (emitter.addEventListener) {\\n emitter.addEventListener(type, f, false);\\n } else if (emitter.attachEvent) {\\n emitter.attachEvent(\\\"on\\\" + type, f);\\n } else {\\n var map$$1 = emitter._handlers || (emitter._handlers = {});\\n map$$1[type] = (map$$1[type] || noHandlers).concat(f);\\n }\\n};\\n\\nfunction getHandlers(emitter, type) {\\n return emitter._handlers && emitter._handlers[type] || noHandlers\\n}\\n\\nfunction off(emitter, type, f) {\\n if (emitter.removeEventListener) {\\n emitter.removeEventListener(type, f, false);\\n } else if (emitter.detachEvent) {\\n emitter.detachEvent(\\\"on\\\" + type, f);\\n } else {\\n var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\\n if (arr) {\\n var index = indexOf(arr, f);\\n if (index > -1)\\n { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\\n }\\n }\\n}\\n\\nfunction signal(emitter, type /*, values...*/) {\\n var handlers = getHandlers(emitter, type);\\n if (!handlers.length) { return }\\n var args = Array.prototype.slice.call(arguments, 2);\\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\\n}\\n\\n// The DOM events that CodeMirror handles can be overridden by\\n// registering a (non-DOM) handler on the editor for the event name,\\n// and preventDefault-ing the event in that handler.\\nfunction signalDOMEvent(cm, e, override) {\\n if (typeof e == \\\"string\\\")\\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\\n signal(cm, override || e.type, cm, e);\\n return e_defaultPrevented(e) || e.codemirrorIgnore\\n}\\n\\nfunction signalCursorActivity(cm) {\\n var arr = cm._handlers && cm._handlers.cursorActivity;\\n if (!arr) { return }\\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\\n { set.push(arr[i]); } }\\n}\\n\\nfunction hasHandler(emitter, type) {\\n return getHandlers(emitter, type).length > 0\\n}\\n\\n// Add on and off methods to a constructor's prototype, to make\\n// registering events on such objects more convenient.\\nfunction eventMixin(ctor) {\\n ctor.prototype.on = function(type, f) {on(this, type, f);};\\n ctor.prototype.off = function(type, f) {off(this, type, f);};\\n}\\n\\n// Due to the fact that we still support jurassic IE versions, some\\n// compatibility wrappers are needed.\\n\\nfunction e_preventDefault(e) {\\n if (e.preventDefault) { e.preventDefault(); }\\n else { e.returnValue = false; }\\n}\\nfunction e_stopPropagation(e) {\\n if (e.stopPropagation) { e.stopPropagation(); }\\n else { e.cancelBubble = true; }\\n}\\nfunction e_defaultPrevented(e) {\\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\\n}\\nfunction e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\\n\\nfunction e_target(e) {return e.target || e.srcElement}\\nfunction e_button(e) {\\n var b = e.which;\\n if (b == null) {\\n if (e.button & 1) { b = 1; }\\n else if (e.button & 2) { b = 3; }\\n else if (e.button & 4) { b = 2; }\\n }\\n if (mac && e.ctrlKey && b == 1) { b = 3; }\\n return b\\n}\\n\\n// Detect drag-and-drop\\nvar dragAndDrop = function() {\\n // There is *some* kind of drag-and-drop support in IE6-8, but I\\n // couldn't get it to work yet.\\n if (ie && ie_version < 9) { return false }\\n var div = elt('div');\\n return \\\"draggable\\\" in div || \\\"dragDrop\\\" in div\\n}();\\n\\nvar zwspSupported;\\nfunction zeroWidthElement(measure) {\\n if (zwspSupported == null) {\\n var test = elt(\\\"span\\\", \\\"\\\\u200b\\\");\\n removeChildrenAndAdd(measure, elt(\\\"span\\\", [test, document.createTextNode(\\\"x\\\")]));\\n if (measure.firstChild.offsetHeight != 0)\\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\\n }\\n var node = zwspSupported ? elt(\\\"span\\\", \\\"\\\\u200b\\\") :\\n elt(\\\"span\\\", \\\"\\\\u00a0\\\", null, \\\"display: inline-block; width: 1px; margin-right: -1px\\\");\\n node.setAttribute(\\\"cm-text\\\", \\\"\\\");\\n return node\\n}\\n\\n// Feature-detect IE's crummy client rect reporting for bidi text\\nvar badBidiRects;\\nfunction hasBadBidiRects(measure) {\\n if (badBidiRects != null) { return badBidiRects }\\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\\\"A\\\\u062eA\\\"));\\n var r0 = range(txt, 0, 1).getBoundingClientRect();\\n var r1 = range(txt, 1, 2).getBoundingClientRect();\\n removeChildren(measure);\\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\\n return badBidiRects = (r1.right - r0.right < 3)\\n}\\n\\n// See if \\\"\\\".split is the broken IE version, if so, provide an\\n// alternative way to split lines.\\nvar splitLinesAuto = \\\"\\\\n\\\\nb\\\".split(/\\\\n/).length != 3 ? function (string) {\\n var pos = 0, result = [], l = string.length;\\n while (pos <= l) {\\n var nl = string.indexOf(\\\"\\\\n\\\", pos);\\n if (nl == -1) { nl = string.length; }\\n var line = string.slice(pos, string.charAt(nl - 1) == \\\"\\\\r\\\" ? nl - 1 : nl);\\n var rt = line.indexOf(\\\"\\\\r\\\");\\n if (rt != -1) {\\n result.push(line.slice(0, rt));\\n pos += rt + 1;\\n } else {\\n result.push(line);\\n pos = nl + 1;\\n }\\n }\\n return result\\n} : function (string) { return string.split(/\\\\r\\\\n?|\\\\n/); };\\n\\nvar hasSelection = window.getSelection ? function (te) {\\n try { return te.selectionStart != te.selectionEnd }\\n catch(e) { return false }\\n} : function (te) {\\n var range$$1;\\n try {range$$1 = te.ownerDocument.selection.createRange();}\\n catch(e) {}\\n if (!range$$1 || range$$1.parentElement() != te) { return false }\\n return range$$1.compareEndPoints(\\\"StartToEnd\\\", range$$1) != 0\\n};\\n\\nvar hasCopyEvent = (function () {\\n var e = elt(\\\"div\\\");\\n if (\\\"oncopy\\\" in e) { return true }\\n e.setAttribute(\\\"oncopy\\\", \\\"return;\\\");\\n return typeof e.oncopy == \\\"function\\\"\\n})();\\n\\nvar badZoomedRects = null;\\nfunction hasBadZoomedRects(measure) {\\n if (badZoomedRects != null) { return badZoomedRects }\\n var node = removeChildrenAndAdd(measure, elt(\\\"span\\\", \\\"x\\\"));\\n var normal = node.getBoundingClientRect();\\n var fromRange = range(node, 0, 1).getBoundingClientRect();\\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\\n}\\n\\n// Known modes, by name and by MIME\\nvar modes = {};\\nvar mimeModes = {};\\n\\n// Extra arguments are stored as the mode's dependencies, which is\\n// used by (legacy) mechanisms like loadmode.js to automatically\\n// load a mode. (Preferred mechanism is the require/define calls.)\\nfunction defineMode(name, mode) {\\n if (arguments.length > 2)\\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\\n modes[name] = mode;\\n}\\n\\nfunction defineMIME(mime, spec) {\\n mimeModes[mime] = spec;\\n}\\n\\n// Given a MIME type, a {name, ...options} config object, or a name\\n// string, return a mode config object.\\nfunction resolveMode(spec) {\\n if (typeof spec == \\\"string\\\" && mimeModes.hasOwnProperty(spec)) {\\n spec = mimeModes[spec];\\n } else if (spec && typeof spec.name == \\\"string\\\" && mimeModes.hasOwnProperty(spec.name)) {\\n var found = mimeModes[spec.name];\\n if (typeof found == \\\"string\\\") { found = {name: found}; }\\n spec = createObj(found, spec);\\n spec.name = found.name;\\n } else if (typeof spec == \\\"string\\\" && /^[\\\\w\\\\-]+\\\\/[\\\\w\\\\-]+\\\\+xml$/.test(spec)) {\\n return resolveMode(\\\"application/xml\\\")\\n } else if (typeof spec == \\\"string\\\" && /^[\\\\w\\\\-]+\\\\/[\\\\w\\\\-]+\\\\+json$/.test(spec)) {\\n return resolveMode(\\\"application/json\\\")\\n }\\n if (typeof spec == \\\"string\\\") { return {name: spec} }\\n else { return spec || {name: \\\"null\\\"} }\\n}\\n\\n// Given a mode spec (anything that resolveMode accepts), find and\\n// initialize an actual mode object.\\nfunction getMode(options, spec) {\\n spec = resolveMode(spec);\\n var mfactory = modes[spec.name];\\n if (!mfactory) { return getMode(options, \\\"text/plain\\\") }\\n var modeObj = mfactory(options, spec);\\n if (modeExtensions.hasOwnProperty(spec.name)) {\\n var exts = modeExtensions[spec.name];\\n for (var prop in exts) {\\n if (!exts.hasOwnProperty(prop)) { continue }\\n if (modeObj.hasOwnProperty(prop)) { modeObj[\\\"_\\\" + prop] = modeObj[prop]; }\\n modeObj[prop] = exts[prop];\\n }\\n }\\n modeObj.name = spec.name;\\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\\n\\n return modeObj\\n}\\n\\n// This can be used to attach properties to mode objects from\\n// outside the actual mode definition.\\nvar modeExtensions = {};\\nfunction extendMode(mode, properties) {\\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\\n copyObj(properties, exts);\\n}\\n\\nfunction copyState(mode, state) {\\n if (state === true) { return state }\\n if (mode.copyState) { return mode.copyState(state) }\\n var nstate = {};\\n for (var n in state) {\\n var val = state[n];\\n if (val instanceof Array) { val = val.concat([]); }\\n nstate[n] = val;\\n }\\n return nstate\\n}\\n\\n// Given a mode and a state (for that mode), find the inner mode and\\n// state at the position that the state refers to.\\nfunction innerMode(mode, state) {\\n var info;\\n while (mode.innerMode) {\\n info = mode.innerMode(state);\\n if (!info || info.mode == mode) { break }\\n state = info.state;\\n mode = info.mode;\\n }\\n return info || {mode: mode, state: state}\\n}\\n\\nfunction startState(mode, a1, a2) {\\n return mode.startState ? mode.startState(a1, a2) : true\\n}\\n\\n// STRING STREAM\\n\\n// Fed to the mode parsers, provides helper functions to make\\n// parsers more succinct.\\n\\nvar StringStream = function(string, tabSize, lineOracle) {\\n this.pos = this.start = 0;\\n this.string = string;\\n this.tabSize = tabSize || 8;\\n this.lastColumnPos = this.lastColumnValue = 0;\\n this.lineStart = 0;\\n this.lineOracle = lineOracle;\\n};\\n\\nStringStream.prototype.eol = function () {return this.pos >= this.string.length};\\nStringStream.prototype.sol = function () {return this.pos == this.lineStart};\\nStringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\\nStringStream.prototype.next = function () {\\n if (this.pos < this.string.length)\\n { return this.string.charAt(this.pos++) }\\n};\\nStringStream.prototype.eat = function (match) {\\n var ch = this.string.charAt(this.pos);\\n var ok;\\n if (typeof match == \\\"string\\\") { ok = ch == match; }\\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\\n if (ok) {++this.pos; return ch}\\n};\\nStringStream.prototype.eatWhile = function (match) {\\n var start = this.pos;\\n while (this.eat(match)){}\\n return this.pos > start\\n};\\nStringStream.prototype.eatSpace = function () {\\n var this$1 = this;\\n\\n var start = this.pos;\\n while (/[\\\\s\\\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\\n return this.pos > start\\n};\\nStringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\\nStringStream.prototype.skipTo = function (ch) {\\n var found = this.string.indexOf(ch, this.pos);\\n if (found > -1) {this.pos = found; return true}\\n};\\nStringStream.prototype.backUp = function (n) {this.pos -= n;};\\nStringStream.prototype.column = function () {\\n if (this.lastColumnPos < this.start) {\\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\\n this.lastColumnPos = this.start;\\n }\\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\\n};\\nStringStream.prototype.indentation = function () {\\n return countColumn(this.string, null, this.tabSize) -\\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\\n};\\nStringStream.prototype.match = function (pattern, consume, caseInsensitive) {\\n if (typeof pattern == \\\"string\\\") {\\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\\n var substr = this.string.substr(this.pos, pattern.length);\\n if (cased(substr) == cased(pattern)) {\\n if (consume !== false) { this.pos += pattern.length; }\\n return true\\n }\\n } else {\\n var match = this.string.slice(this.pos).match(pattern);\\n if (match && match.index > 0) { return null }\\n if (match && consume !== false) { this.pos += match[0].length; }\\n return match\\n }\\n};\\nStringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\\nStringStream.prototype.hideFirstChars = function (n, inner) {\\n this.lineStart += n;\\n try { return inner() }\\n finally { this.lineStart -= n; }\\n};\\nStringStream.prototype.lookAhead = function (n) {\\n var oracle = this.lineOracle;\\n return oracle && oracle.lookAhead(n)\\n};\\n\\nvar SavedContext = function(state, lookAhead) {\\n this.state = state;\\n this.lookAhead = lookAhead;\\n};\\n\\nvar Context = function(doc, state, line, lookAhead) {\\n this.state = state;\\n this.doc = doc;\\n this.line = line;\\n this.maxLookAhead = lookAhead || 0;\\n};\\n\\nContext.prototype.lookAhead = function (n) {\\n var line = this.doc.getLine(this.line + n);\\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\\n return line\\n};\\n\\nContext.prototype.nextLine = function () {\\n this.line++;\\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\\n};\\n\\nContext.fromSaved = function (doc, saved, line) {\\n if (saved instanceof SavedContext)\\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\\n else\\n { return new Context(doc, copyState(doc.mode, saved), line) }\\n};\\n\\nContext.prototype.save = function (copy) {\\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\\n};\\n\\n\\n// Compute a style array (an array starting with a mode generation\\n// -- for invalidation -- followed by pairs of end positions and\\n// style strings), which is used to highlight the tokens on the\\n// line.\\nfunction highlightLine(cm, line, context, forceToEnd) {\\n // A styles array always starts with a number identifying the\\n // mode/overlays that it is based on (for easy invalidation).\\n var st = [cm.state.modeGen], lineClasses = {};\\n // Compute the base array of styles\\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\\n lineClasses, forceToEnd);\\n var state = context.state;\\n\\n // Run overlays, adjust style array.\\n var loop = function ( o ) {\\n var overlay = cm.state.overlays[o], i = 1, at = 0;\\n context.state = true;\\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\\n var start = i;\\n // Ensure there's a token end at the current position, and that i points at it\\n while (at < end) {\\n var i_end = st[i];\\n if (i_end > end)\\n { st.splice(i, 1, end, st[i+1], i_end); }\\n i += 2;\\n at = Math.min(end, i_end);\\n }\\n if (!style) { return }\\n if (overlay.opaque) {\\n st.splice(start, i - start, end, \\\"overlay \\\" + style);\\n i = start + 2;\\n } else {\\n for (; start < i; start += 2) {\\n var cur = st[start+1];\\n st[start+1] = (cur ? cur + \\\" \\\" : \\\"\\\") + \\\"overlay \\\" + style;\\n }\\n }\\n }, lineClasses);\\n };\\n\\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\\n context.state = state;\\n\\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\\n}\\n\\nfunction getLineStyles(cm, line, updateFrontier) {\\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\\n var context = getContextBefore(cm, lineNo(line));\\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\\n var result = highlightLine(cm, line, context);\\n if (resetState) { context.state = resetState; }\\n line.stateAfter = context.save(!resetState);\\n line.styles = result.styles;\\n if (result.classes) { line.styleClasses = result.classes; }\\n else if (line.styleClasses) { line.styleClasses = null; }\\n if (updateFrontier === cm.doc.highlightFrontier)\\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\\n }\\n return line.styles\\n}\\n\\nfunction getContextBefore(cm, n, precise) {\\n var doc = cm.doc, display = cm.display;\\n if (!doc.mode.startState) { return new Context(doc, true, n) }\\n var start = findStartLine(cm, n, precise);\\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\\n\\n doc.iter(start, n, function (line) {\\n processLine(cm, line.text, context);\\n var pos = context.line;\\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\\n context.nextLine();\\n });\\n if (precise) { doc.modeFrontier = context.line; }\\n return context\\n}\\n\\n// Lightweight form of highlight -- proceed over this line and\\n// update state, but don't save a style array. Used for lines that\\n// aren't currently visible.\\nfunction processLine(cm, text, context, startAt) {\\n var mode = cm.doc.mode;\\n var stream = new StringStream(text, cm.options.tabSize, context);\\n stream.start = stream.pos = startAt || 0;\\n if (text == \\\"\\\") { callBlankLine(mode, context.state); }\\n while (!stream.eol()) {\\n readToken(mode, stream, context.state);\\n stream.start = stream.pos;\\n }\\n}\\n\\nfunction callBlankLine(mode, state) {\\n if (mode.blankLine) { return mode.blankLine(state) }\\n if (!mode.innerMode) { return }\\n var inner = innerMode(mode, state);\\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\\n}\\n\\nfunction readToken(mode, stream, state, inner) {\\n for (var i = 0; i < 10; i++) {\\n if (inner) { inner[0] = innerMode(mode, state).mode; }\\n var style = mode.token(stream, state);\\n if (stream.pos > stream.start) { return style }\\n }\\n throw new Error(\\\"Mode \\\" + mode.name + \\\" failed to advance stream.\\\")\\n}\\n\\nvar Token = function(stream, type, state) {\\n this.start = stream.start; this.end = stream.pos;\\n this.string = stream.current();\\n this.type = type || null;\\n this.state = state;\\n};\\n\\n// Utility for getTokenAt and getLineTokens\\nfunction takeToken(cm, pos, precise, asArray) {\\n var doc = cm.doc, mode = doc.mode, style;\\n pos = clipPos(doc, pos);\\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\\n if (asArray) { tokens = []; }\\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\\n stream.start = stream.pos;\\n style = readToken(mode, stream, context.state);\\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\\n }\\n return asArray ? tokens : new Token(stream, style, context.state)\\n}\\n\\nfunction extractLineClasses(type, output) {\\n if (type) { for (;;) {\\n var lineClass = type.match(/(?:^|\\\\s+)line-(background-)?(\\\\S+)/);\\n if (!lineClass) { break }\\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\\n var prop = lineClass[1] ? \\\"bgClass\\\" : \\\"textClass\\\";\\n if (output[prop] == null)\\n { output[prop] = lineClass[2]; }\\n else if (!(new RegExp(\\\"(?:^|\\\\s)\\\" + lineClass[2] + \\\"(?:$|\\\\s)\\\")).test(output[prop]))\\n { output[prop] += \\\" \\\" + lineClass[2]; }\\n } }\\n return type\\n}\\n\\n// Run the given mode's parser over a line, calling f for each token.\\nfunction runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\\n var flattenSpans = mode.flattenSpans;\\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\\n var curStart = 0, curStyle = null;\\n var stream = new StringStream(text, cm.options.tabSize, context), style;\\n var inner = cm.options.addModeClass && [null];\\n if (text == \\\"\\\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\\n while (!stream.eol()) {\\n if (stream.pos > cm.options.maxHighlightLength) {\\n flattenSpans = false;\\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\\n stream.pos = text.length;\\n style = null;\\n } else {\\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\\n }\\n if (inner) {\\n var mName = inner[0].name;\\n if (mName) { style = \\\"m-\\\" + (style ? mName + \\\" \\\" + style : mName); }\\n }\\n if (!flattenSpans || curStyle != style) {\\n while (curStart < stream.start) {\\n curStart = Math.min(stream.start, curStart + 5000);\\n f(curStart, curStyle);\\n }\\n curStyle = style;\\n }\\n stream.start = stream.pos;\\n }\\n while (curStart < stream.pos) {\\n // Webkit seems to refuse to render text nodes longer than 57444\\n // characters, and returns inaccurate measurements in nodes\\n // starting around 5000 chars.\\n var pos = Math.min(stream.pos, curStart + 5000);\\n f(pos, curStyle);\\n curStart = pos;\\n }\\n}\\n\\n// Finds the line to start with when starting a parse. Tries to\\n// find a line with a stateAfter, so that it can start with a\\n// valid state. If that fails, it returns the line with the\\n// smallest indentation, which tends to need the least context to\\n// parse correctly.\\nfunction findStartLine(cm, n, precise) {\\n var minindent, minline, doc = cm.doc;\\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\\n for (var search = n; search > lim; --search) {\\n if (search <= doc.first) { return doc.first }\\n var line = getLine(doc, search - 1), after = line.stateAfter;\\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\\n { return search }\\n var indented = countColumn(line.text, null, cm.options.tabSize);\\n if (minline == null || minindent > indented) {\\n minline = search - 1;\\n minindent = indented;\\n }\\n }\\n return minline\\n}\\n\\nfunction retreatFrontier(doc, n) {\\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\\n if (doc.highlightFrontier < n - 10) { return }\\n var start = doc.first;\\n for (var line = n - 1; line > start; line--) {\\n var saved = getLine(doc, line).stateAfter;\\n // change is on 3\\n // state on line 1 looked ahead 2 -- so saw 3\\n // test 1 + 2 < 3 should cover this\\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\\n start = line + 1;\\n break\\n }\\n }\\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\\n}\\n\\n// LINE DATA STRUCTURE\\n\\n// Line objects. These hold state related to a line, including\\n// highlighting info (the styles array).\\nvar Line = function(text, markedSpans, estimateHeight) {\\n this.text = text;\\n attachMarkedSpans(this, markedSpans);\\n this.height = estimateHeight ? estimateHeight(this) : 1;\\n};\\n\\nLine.prototype.lineNo = function () { return lineNo(this) };\\neventMixin(Line);\\n\\n// Change the content (text, markers) of a line. Automatically\\n// invalidates cached information and tries to re-estimate the\\n// line's height.\\nfunction updateLine(line, text, markedSpans, estimateHeight) {\\n line.text = text;\\n if (line.stateAfter) { line.stateAfter = null; }\\n if (line.styles) { line.styles = null; }\\n if (line.order != null) { line.order = null; }\\n detachMarkedSpans(line);\\n attachMarkedSpans(line, markedSpans);\\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\\n}\\n\\n// Detach a line from the document tree and its markers.\\nfunction cleanUpLine(line) {\\n line.parent = null;\\n detachMarkedSpans(line);\\n}\\n\\n// Convert a style as returned by a mode (either null, or a string\\n// containing one or more styles) to a CSS style. This is cached,\\n// and also looks for line-wide styles.\\nvar styleToClassCache = {};\\nvar styleToClassCacheWithMode = {};\\nfunction interpretTokenStyle(style, options) {\\n if (!style || /^\\\\s*$/.test(style)) { return null }\\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\\n return cache[style] ||\\n (cache[style] = style.replace(/\\\\S+/g, \\\"cm-$&\\\"))\\n}\\n\\n// Render the DOM representation of the text of a line. Also builds\\n// up a 'line map', which points at the DOM nodes that represent\\n// specific stretches of text, and is used by the measuring code.\\n// The returned object contains the DOM node, this map, and\\n// information about line-wide styles that were set by the mode.\\nfunction buildLineContent(cm, lineView) {\\n // The padding-right forces the element to have a 'border', which\\n // is needed on Webkit to be able to get line-level bounding\\n // rectangles for it (in measureChar).\\n var content = eltP(\\\"span\\\", null, null, webkit ? \\\"padding-right: .1px\\\" : null);\\n var builder = {pre: eltP(\\\"pre\\\", [content], \\\"CodeMirror-line\\\"), content: content,\\n col: 0, pos: 0, cm: cm,\\n trailingSpace: false,\\n splitSpaces: (ie || webkit) && cm.getOption(\\\"lineWrapping\\\")};\\n lineView.measure = {};\\n\\n // Iterate over the logical lines that make up this visual line.\\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\\n builder.pos = 0;\\n builder.addToken = buildToken;\\n // Optionally wire in some hacks into the token-rendering\\n // algorithm, to deal with browser quirks.\\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\\n builder.map = [];\\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\\n if (line.styleClasses) {\\n if (line.styleClasses.bgClass)\\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \\\"\\\"); }\\n if (line.styleClasses.textClass)\\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \\\"\\\"); }\\n }\\n\\n // Ensure at least a single node is present, for measuring.\\n if (builder.map.length == 0)\\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\\n\\n // Store the map and a cache object for the current logical line\\n if (i == 0) {\\n lineView.measure.map = builder.map;\\n lineView.measure.cache = {};\\n } else {\\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\\n }\\n }\\n\\n // See issue #2901\\n if (webkit) {\\n var last = builder.content.lastChild;\\n if (/\\\\bcm-tab\\\\b/.test(last.className) || (last.querySelector && last.querySelector(\\\".cm-tab\\\")))\\n { builder.content.className = \\\"cm-tab-wrap-hack\\\"; }\\n }\\n\\n signal(cm, \\\"renderLine\\\", cm, lineView.line, builder.pre);\\n if (builder.pre.className)\\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \\\"\\\"); }\\n\\n return builder\\n}\\n\\nfunction defaultSpecialCharPlaceholder(ch) {\\n var token = elt(\\\"span\\\", \\\"\\\\u2022\\\", \\\"cm-invalidchar\\\");\\n token.title = \\\"\\\\\\\\u\\\" + ch.charCodeAt(0).toString(16);\\n token.setAttribute(\\\"aria-label\\\", token.title);\\n return token\\n}\\n\\n// Build up the DOM representation for a single token, and add it to\\n// the line map. Takes care to render special characters separately.\\nfunction buildToken(builder, text, style, startStyle, endStyle, title, css) {\\n if (!text) { return }\\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\\n var special = builder.cm.state.specialChars, mustWrap = false;\\n var content;\\n if (!special.test(text)) {\\n builder.col += text.length;\\n content = document.createTextNode(displayText);\\n builder.map.push(builder.pos, builder.pos + text.length, content);\\n if (ie && ie_version < 9) { mustWrap = true; }\\n builder.pos += text.length;\\n } else {\\n content = document.createDocumentFragment();\\n var pos = 0;\\n while (true) {\\n special.lastIndex = pos;\\n var m = special.exec(text);\\n var skipped = m ? m.index - pos : text.length - pos;\\n if (skipped) {\\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\\n if (ie && ie_version < 9) { content.appendChild(elt(\\\"span\\\", [txt])); }\\n else { content.appendChild(txt); }\\n builder.map.push(builder.pos, builder.pos + skipped, txt);\\n builder.col += skipped;\\n builder.pos += skipped;\\n }\\n if (!m) { break }\\n pos += skipped + 1;\\n var txt$1 = (void 0);\\n if (m[0] == \\\"\\\\t\\\") {\\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\\n txt$1 = content.appendChild(elt(\\\"span\\\", spaceStr(tabWidth), \\\"cm-tab\\\"));\\n txt$1.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n txt$1.setAttribute(\\\"cm-text\\\", \\\"\\\\t\\\");\\n builder.col += tabWidth;\\n } else if (m[0] == \\\"\\\\r\\\" || m[0] == \\\"\\\\n\\\") {\\n txt$1 = content.appendChild(elt(\\\"span\\\", m[0] == \\\"\\\\r\\\" ? \\\"\\\\u240d\\\" : \\\"\\\\u2424\\\", \\\"cm-invalidchar\\\"));\\n txt$1.setAttribute(\\\"cm-text\\\", m[0]);\\n builder.col += 1;\\n } else {\\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\\n txt$1.setAttribute(\\\"cm-text\\\", m[0]);\\n if (ie && ie_version < 9) { content.appendChild(elt(\\\"span\\\", [txt$1])); }\\n else { content.appendChild(txt$1); }\\n builder.col += 1;\\n }\\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\\n builder.pos++;\\n }\\n }\\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\\n if (style || startStyle || endStyle || mustWrap || css) {\\n var fullStyle = style || \\\"\\\";\\n if (startStyle) { fullStyle += startStyle; }\\n if (endStyle) { fullStyle += endStyle; }\\n var token = elt(\\\"span\\\", [content], fullStyle, css);\\n if (title) { token.title = title; }\\n return builder.content.appendChild(token)\\n }\\n builder.content.appendChild(content);\\n}\\n\\nfunction splitSpaces(text, trailingBefore) {\\n if (text.length > 1 && !/ /.test(text)) { return text }\\n var spaceBefore = trailingBefore, result = \\\"\\\";\\n for (var i = 0; i < text.length; i++) {\\n var ch = text.charAt(i);\\n if (ch == \\\" \\\" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\\n { ch = \\\"\\\\u00a0\\\"; }\\n result += ch;\\n spaceBefore = ch == \\\" \\\";\\n }\\n return result\\n}\\n\\n// Work around nonsense dimensions being reported for stretches of\\n// right-to-left text.\\nfunction buildTokenBadBidi(inner, order) {\\n return function (builder, text, style, startStyle, endStyle, title, css) {\\n style = style ? style + \\\" cm-force-border\\\" : \\\"cm-force-border\\\";\\n var start = builder.pos, end = start + text.length;\\n for (;;) {\\n // Find the part that overlaps with the start of this text\\n var part = (void 0);\\n for (var i = 0; i < order.length; i++) {\\n part = order[i];\\n if (part.to > start && part.from <= start) { break }\\n }\\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) }\\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css);\\n startStyle = null;\\n text = text.slice(part.to - start);\\n start = part.to;\\n }\\n }\\n}\\n\\nfunction buildCollapsedSpan(builder, size, marker, ignoreWidget) {\\n var widget = !ignoreWidget && marker.widgetNode;\\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\\n if (!widget)\\n { widget = builder.content.appendChild(document.createElement(\\\"span\\\")); }\\n widget.setAttribute(\\\"cm-marker\\\", marker.id);\\n }\\n if (widget) {\\n builder.cm.display.input.setUneditable(widget);\\n builder.content.appendChild(widget);\\n }\\n builder.pos += size;\\n builder.trailingSpace = false;\\n}\\n\\n// Outputs a number of spans to make up a line, taking highlighting\\n// and marked text into account.\\nfunction insertLineContent(line, builder, styles) {\\n var spans = line.markedSpans, allText = line.text, at = 0;\\n if (!spans) {\\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\\n return\\n }\\n\\n var len = allText.length, pos = 0, i = 1, text = \\\"\\\", style, css;\\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;\\n for (;;) {\\n if (nextChange == pos) { // Update current marker set\\n spanStyle = spanEndStyle = spanStartStyle = title = css = \\\"\\\";\\n collapsed = null; nextChange = Infinity;\\n var foundBookmarks = [], endStyles = (void 0);\\n for (var j = 0; j < spans.length; ++j) {\\n var sp = spans[j], m = sp.marker;\\n if (m.type == \\\"bookmark\\\" && sp.from == pos && m.widgetNode) {\\n foundBookmarks.push(m);\\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\\n nextChange = sp.to;\\n spanEndStyle = \\\"\\\";\\n }\\n if (m.className) { spanStyle += \\\" \\\" + m.className; }\\n if (m.css) { css = (css ? css + \\\";\\\" : \\\"\\\") + m.css; }\\n if (m.startStyle && sp.from == pos) { spanStartStyle += \\\" \\\" + m.startStyle; }\\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\\n if (m.title && !title) { title = m.title; }\\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\\n { collapsed = sp; }\\n } else if (sp.from > pos && nextChange > sp.from) {\\n nextChange = sp.from;\\n }\\n }\\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \\\" \\\" + endStyles[j$1]; } } }\\n\\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\\n if (collapsed && (collapsed.from || 0) == pos) {\\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\\n collapsed.marker, collapsed.from == null);\\n if (collapsed.to == null) { return }\\n if (collapsed.to == pos) { collapsed = false; }\\n }\\n }\\n if (pos >= len) { break }\\n\\n var upto = Math.min(len, nextChange);\\n while (true) {\\n if (text) {\\n var end = pos + text.length;\\n if (!collapsed) {\\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \\\"\\\", title, css);\\n }\\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\\n pos = end;\\n spanStartStyle = \\\"\\\";\\n }\\n text = allText.slice(at, at = styles[i++]);\\n style = interpretTokenStyle(styles[i++], builder.cm.options);\\n }\\n }\\n}\\n\\n\\n// These objects are used to represent the visible (currently drawn)\\n// part of the document. A LineView may correspond to multiple\\n// logical lines, if those are connected by collapsed ranges.\\nfunction LineView(doc, line, lineN) {\\n // The starting line\\n this.line = line;\\n // Continuing lines, if any\\n this.rest = visualLineContinued(line);\\n // Number of logical lines in this visual line\\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\\n this.node = this.text = null;\\n this.hidden = lineIsHidden(doc, line);\\n}\\n\\n// Create a range of LineView objects for the given lines.\\nfunction buildViewArray(cm, from, to) {\\n var array = [], nextPos;\\n for (var pos = from; pos < to; pos = nextPos) {\\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\\n nextPos = pos + view.size;\\n array.push(view);\\n }\\n return array\\n}\\n\\nvar operationGroup = null;\\n\\nfunction pushOperation(op) {\\n if (operationGroup) {\\n operationGroup.ops.push(op);\\n } else {\\n op.ownsGroup = operationGroup = {\\n ops: [op],\\n delayedCallbacks: []\\n };\\n }\\n}\\n\\nfunction fireCallbacksForOps(group) {\\n // Calls delayed callbacks and cursorActivity handlers until no\\n // new ones appear\\n var callbacks = group.delayedCallbacks, i = 0;\\n do {\\n for (; i < callbacks.length; i++)\\n { callbacks[i].call(null); }\\n for (var j = 0; j < group.ops.length; j++) {\\n var op = group.ops[j];\\n if (op.cursorActivityHandlers)\\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\\n }\\n } while (i < callbacks.length)\\n}\\n\\nfunction finishOperation(op, endCb) {\\n var group = op.ownsGroup;\\n if (!group) { return }\\n\\n try { fireCallbacksForOps(group); }\\n finally {\\n operationGroup = null;\\n endCb(group);\\n }\\n}\\n\\nvar orphanDelayedCallbacks = null;\\n\\n// Often, we want to signal events at a point where we are in the\\n// middle of some work, but don't want the handler to start calling\\n// other methods on the editor, which might be in an inconsistent\\n// state or simply not expect any other events to happen.\\n// signalLater looks whether there are any handlers, and schedules\\n// them to be executed when the last operation ends, or, if no\\n// operation is active, when a timeout fires.\\nfunction signalLater(emitter, type /*, values...*/) {\\n var arr = getHandlers(emitter, type);\\n if (!arr.length) { return }\\n var args = Array.prototype.slice.call(arguments, 2), list;\\n if (operationGroup) {\\n list = operationGroup.delayedCallbacks;\\n } else if (orphanDelayedCallbacks) {\\n list = orphanDelayedCallbacks;\\n } else {\\n list = orphanDelayedCallbacks = [];\\n setTimeout(fireOrphanDelayed, 0);\\n }\\n var loop = function ( i ) {\\n list.push(function () { return arr[i].apply(null, args); });\\n };\\n\\n for (var i = 0; i < arr.length; ++i)\\n loop( i );\\n}\\n\\nfunction fireOrphanDelayed() {\\n var delayed = orphanDelayedCallbacks;\\n orphanDelayedCallbacks = null;\\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\\n}\\n\\n// When an aspect of a line changes, a string is added to\\n// lineView.changes. This updates the relevant part of the line's\\n// DOM structure.\\nfunction updateLineForChanges(cm, lineView, lineN, dims) {\\n for (var j = 0; j < lineView.changes.length; j++) {\\n var type = lineView.changes[j];\\n if (type == \\\"text\\\") { updateLineText(cm, lineView); }\\n else if (type == \\\"gutter\\\") { updateLineGutter(cm, lineView, lineN, dims); }\\n else if (type == \\\"class\\\") { updateLineClasses(cm, lineView); }\\n else if (type == \\\"widget\\\") { updateLineWidgets(cm, lineView, dims); }\\n }\\n lineView.changes = null;\\n}\\n\\n// Lines with gutter elements, widgets or a background class need to\\n// be wrapped, and have the extra elements added to the wrapper div\\nfunction ensureLineWrapped(lineView) {\\n if (lineView.node == lineView.text) {\\n lineView.node = elt(\\\"div\\\", null, null, \\\"position: relative\\\");\\n if (lineView.text.parentNode)\\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\\n lineView.node.appendChild(lineView.text);\\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\\n }\\n return lineView.node\\n}\\n\\nfunction updateLineBackground(cm, lineView) {\\n var cls = lineView.bgClass ? lineView.bgClass + \\\" \\\" + (lineView.line.bgClass || \\\"\\\") : lineView.line.bgClass;\\n if (cls) { cls += \\\" CodeMirror-linebackground\\\"; }\\n if (lineView.background) {\\n if (cls) { lineView.background.className = cls; }\\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\\n } else if (cls) {\\n var wrap = ensureLineWrapped(lineView);\\n lineView.background = wrap.insertBefore(elt(\\\"div\\\", null, cls), wrap.firstChild);\\n cm.display.input.setUneditable(lineView.background);\\n }\\n}\\n\\n// Wrapper around buildLineContent which will reuse the structure\\n// in display.externalMeasured when possible.\\nfunction getLineContent(cm, lineView) {\\n var ext = cm.display.externalMeasured;\\n if (ext && ext.line == lineView.line) {\\n cm.display.externalMeasured = null;\\n lineView.measure = ext.measure;\\n return ext.built\\n }\\n return buildLineContent(cm, lineView)\\n}\\n\\n// Redraw the line's text. Interacts with the background and text\\n// classes because the mode may output tokens that influence these\\n// classes.\\nfunction updateLineText(cm, lineView) {\\n var cls = lineView.text.className;\\n var built = getLineContent(cm, lineView);\\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\\n lineView.text = built.pre;\\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\\n lineView.bgClass = built.bgClass;\\n lineView.textClass = built.textClass;\\n updateLineClasses(cm, lineView);\\n } else if (cls) {\\n lineView.text.className = cls;\\n }\\n}\\n\\nfunction updateLineClasses(cm, lineView) {\\n updateLineBackground(cm, lineView);\\n if (lineView.line.wrapClass)\\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\\n else if (lineView.node != lineView.text)\\n { lineView.node.className = \\\"\\\"; }\\n var textClass = lineView.textClass ? lineView.textClass + \\\" \\\" + (lineView.line.textClass || \\\"\\\") : lineView.line.textClass;\\n lineView.text.className = textClass || \\\"\\\";\\n}\\n\\nfunction updateLineGutter(cm, lineView, lineN, dims) {\\n if (lineView.gutter) {\\n lineView.node.removeChild(lineView.gutter);\\n lineView.gutter = null;\\n }\\n if (lineView.gutterBackground) {\\n lineView.node.removeChild(lineView.gutterBackground);\\n lineView.gutterBackground = null;\\n }\\n if (lineView.line.gutterClass) {\\n var wrap = ensureLineWrapped(lineView);\\n lineView.gutterBackground = elt(\\\"div\\\", null, \\\"CodeMirror-gutter-background \\\" + lineView.line.gutterClass,\\n (\\\"left: \\\" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \\\"px; width: \\\" + (dims.gutterTotalWidth) + \\\"px\\\"));\\n cm.display.input.setUneditable(lineView.gutterBackground);\\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\\n }\\n var markers = lineView.line.gutterMarkers;\\n if (cm.options.lineNumbers || markers) {\\n var wrap$1 = ensureLineWrapped(lineView);\\n var gutterWrap = lineView.gutter = elt(\\\"div\\\", null, \\\"CodeMirror-gutter-wrapper\\\", (\\\"left: \\\" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \\\"px\\\"));\\n cm.display.input.setUneditable(gutterWrap);\\n wrap$1.insertBefore(gutterWrap, lineView.text);\\n if (lineView.line.gutterClass)\\n { gutterWrap.className += \\\" \\\" + lineView.line.gutterClass; }\\n if (cm.options.lineNumbers && (!markers || !markers[\\\"CodeMirror-linenumbers\\\"]))\\n { lineView.lineNumber = gutterWrap.appendChild(\\n elt(\\\"div\\\", lineNumberFor(cm.options, lineN),\\n \\\"CodeMirror-linenumber CodeMirror-gutter-elt\\\",\\n (\\\"left: \\\" + (dims.gutterLeft[\\\"CodeMirror-linenumbers\\\"]) + \\\"px; width: \\\" + (cm.display.lineNumInnerWidth) + \\\"px\\\"))); }\\n if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\\n var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\\n if (found)\\n { gutterWrap.appendChild(elt(\\\"div\\\", [found], \\\"CodeMirror-gutter-elt\\\",\\n (\\\"left: \\\" + (dims.gutterLeft[id]) + \\\"px; width: \\\" + (dims.gutterWidth[id]) + \\\"px\\\"))); }\\n } }\\n }\\n}\\n\\nfunction updateLineWidgets(cm, lineView, dims) {\\n if (lineView.alignable) { lineView.alignable = null; }\\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\\n next = node.nextSibling;\\n if (node.className == \\\"CodeMirror-linewidget\\\")\\n { lineView.node.removeChild(node); }\\n }\\n insertLineWidgets(cm, lineView, dims);\\n}\\n\\n// Build a line's DOM representation from scratch\\nfunction buildLineElement(cm, lineView, lineN, dims) {\\n var built = getLineContent(cm, lineView);\\n lineView.text = lineView.node = built.pre;\\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\\n if (built.textClass) { lineView.textClass = built.textClass; }\\n\\n updateLineClasses(cm, lineView);\\n updateLineGutter(cm, lineView, lineN, dims);\\n insertLineWidgets(cm, lineView, dims);\\n return lineView.node\\n}\\n\\n// A lineView may contain multiple logical lines (when merged by\\n// collapsed spans). The widgets for all of them need to be drawn.\\nfunction insertLineWidgets(cm, lineView, dims) {\\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\\n}\\n\\nfunction insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\\n if (!line.widgets) { return }\\n var wrap = ensureLineWrapped(lineView);\\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\\n var widget = ws[i], node = elt(\\\"div\\\", [widget.node], \\\"CodeMirror-linewidget\\\");\\n if (!widget.handleMouseEvents) { node.setAttribute(\\\"cm-ignore-events\\\", \\\"true\\\"); }\\n positionLineWidget(widget, node, lineView, dims);\\n cm.display.input.setUneditable(node);\\n if (allowAbove && widget.above)\\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\\n else\\n { wrap.appendChild(node); }\\n signalLater(widget, \\\"redraw\\\");\\n }\\n}\\n\\nfunction positionLineWidget(widget, node, lineView, dims) {\\n if (widget.noHScroll) {\\n (lineView.alignable || (lineView.alignable = [])).push(node);\\n var width = dims.wrapperWidth;\\n node.style.left = dims.fixedPos + \\\"px\\\";\\n if (!widget.coverGutter) {\\n width -= dims.gutterTotalWidth;\\n node.style.paddingLeft = dims.gutterTotalWidth + \\\"px\\\";\\n }\\n node.style.width = width + \\\"px\\\";\\n }\\n if (widget.coverGutter) {\\n node.style.zIndex = 5;\\n node.style.position = \\\"relative\\\";\\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \\\"px\\\"; }\\n }\\n}\\n\\nfunction widgetHeight(widget) {\\n if (widget.height != null) { return widget.height }\\n var cm = widget.doc.cm;\\n if (!cm) { return 0 }\\n if (!contains(document.body, widget.node)) {\\n var parentStyle = \\\"position: relative;\\\";\\n if (widget.coverGutter)\\n { parentStyle += \\\"margin-left: -\\\" + cm.display.gutters.offsetWidth + \\\"px;\\\"; }\\n if (widget.noHScroll)\\n { parentStyle += \\\"width: \\\" + cm.display.wrapper.clientWidth + \\\"px;\\\"; }\\n removeChildrenAndAdd(cm.display.measure, elt(\\\"div\\\", [widget.node], null, parentStyle));\\n }\\n return widget.height = widget.node.parentNode.offsetHeight\\n}\\n\\n// Return true when the given mouse event happened in a widget\\nfunction eventInWidget(display, e) {\\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\\n if (!n || (n.nodeType == 1 && n.getAttribute(\\\"cm-ignore-events\\\") == \\\"true\\\") ||\\n (n.parentNode == display.sizer && n != display.mover))\\n { return true }\\n }\\n}\\n\\n// POSITION MEASUREMENT\\n\\nfunction paddingTop(display) {return display.lineSpace.offsetTop}\\nfunction paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\\nfunction paddingH(display) {\\n if (display.cachedPaddingH) { return display.cachedPaddingH }\\n var e = removeChildrenAndAdd(display.measure, elt(\\\"pre\\\", \\\"x\\\"));\\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\\n return data\\n}\\n\\nfunction scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\\nfunction displayWidth(cm) {\\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\\n}\\nfunction displayHeight(cm) {\\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\\n}\\n\\n// Ensure the lineView.wrapping.heights array is populated. This is\\n// an array of bottom offsets for the lines that make up a drawn\\n// line. When lineWrapping is on, there might be more than one\\n// height.\\nfunction ensureLineHeights(cm, lineView, rect) {\\n var wrapping = cm.options.lineWrapping;\\n var curWidth = wrapping && displayWidth(cm);\\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\\n var heights = lineView.measure.heights = [];\\n if (wrapping) {\\n lineView.measure.width = curWidth;\\n var rects = lineView.text.firstChild.getClientRects();\\n for (var i = 0; i < rects.length - 1; i++) {\\n var cur = rects[i], next = rects[i + 1];\\n if (Math.abs(cur.bottom - next.bottom) > 2)\\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\\n }\\n }\\n heights.push(rect.bottom - rect.top);\\n }\\n}\\n\\n// Find a line map (mapping character offsets to text nodes) and a\\n// measurement cache for the given line number. (A line view might\\n// contain multiple lines when collapsed ranges are present.)\\nfunction mapFromLineView(lineView, line, lineN) {\\n if (lineView.line == line)\\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\\n for (var i = 0; i < lineView.rest.length; i++)\\n { if (lineView.rest[i] == line)\\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\\n { if (lineNo(lineView.rest[i$1]) > lineN)\\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\\n}\\n\\n// Render a line into the hidden node display.externalMeasured. Used\\n// when measurement is needed for a line that's not in the viewport.\\nfunction updateExternalMeasurement(cm, line) {\\n line = visualLine(line);\\n var lineN = lineNo(line);\\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\\n view.lineN = lineN;\\n var built = view.built = buildLineContent(cm, view);\\n view.text = built.pre;\\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\\n return view\\n}\\n\\n// Get a {top, bottom, left, right} box (in line-local coordinates)\\n// for a given character.\\nfunction measureChar(cm, line, ch, bias) {\\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\\n}\\n\\n// Find a line view that corresponds to the given line number.\\nfunction findViewForLine(cm, lineN) {\\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\\n { return cm.display.view[findViewIndex(cm, lineN)] }\\n var ext = cm.display.externalMeasured;\\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\\n { return ext }\\n}\\n\\n// Measurement can be split in two steps, the set-up work that\\n// applies to the whole line, and the measurement of the actual\\n// character. Functions like coordsChar, that need to do a lot of\\n// measurements in a row, can thus ensure that the set-up work is\\n// only done once.\\nfunction prepareMeasureForLine(cm, line) {\\n var lineN = lineNo(line);\\n var view = findViewForLine(cm, lineN);\\n if (view && !view.text) {\\n view = null;\\n } else if (view && view.changes) {\\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\\n cm.curOp.forceUpdate = true;\\n }\\n if (!view)\\n { view = updateExternalMeasurement(cm, line); }\\n\\n var info = mapFromLineView(view, line, lineN);\\n return {\\n line: line, view: view, rect: null,\\n map: info.map, cache: info.cache, before: info.before,\\n hasHeights: false\\n }\\n}\\n\\n// Given a prepared measurement object, measures the position of an\\n// actual character (or fetches it from the cache).\\nfunction measureCharPrepared(cm, prepared, ch, bias, varHeight) {\\n if (prepared.before) { ch = -1; }\\n var key = ch + (bias || \\\"\\\"), found;\\n if (prepared.cache.hasOwnProperty(key)) {\\n found = prepared.cache[key];\\n } else {\\n if (!prepared.rect)\\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\\n if (!prepared.hasHeights) {\\n ensureLineHeights(cm, prepared.view, prepared.rect);\\n prepared.hasHeights = true;\\n }\\n found = measureCharInner(cm, prepared, ch, bias);\\n if (!found.bogus) { prepared.cache[key] = found; }\\n }\\n return {left: found.left, right: found.right,\\n top: varHeight ? found.rtop : found.top,\\n bottom: varHeight ? found.rbottom : found.bottom}\\n}\\n\\nvar nullRect = {left: 0, right: 0, top: 0, bottom: 0};\\n\\nfunction nodeAndOffsetInLineMap(map$$1, ch, bias) {\\n var node, start, end, collapse, mStart, mEnd;\\n // First, search the line map for the text node corresponding to,\\n // or closest to, the target character.\\n for (var i = 0; i < map$$1.length; i += 3) {\\n mStart = map$$1[i];\\n mEnd = map$$1[i + 1];\\n if (ch < mStart) {\\n start = 0; end = 1;\\n collapse = \\\"left\\\";\\n } else if (ch < mEnd) {\\n start = ch - mStart;\\n end = start + 1;\\n } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\\n end = mEnd - mStart;\\n start = end - 1;\\n if (ch >= mEnd) { collapse = \\\"right\\\"; }\\n }\\n if (start != null) {\\n node = map$$1[i + 2];\\n if (mStart == mEnd && bias == (node.insertLeft ? \\\"left\\\" : \\\"right\\\"))\\n { collapse = bias; }\\n if (bias == \\\"left\\\" && start == 0)\\n { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\\n node = map$$1[(i -= 3) + 2];\\n collapse = \\\"left\\\";\\n } }\\n if (bias == \\\"right\\\" && start == mEnd - mStart)\\n { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\\n node = map$$1[(i += 3) + 2];\\n collapse = \\\"right\\\";\\n } }\\n break\\n }\\n }\\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\\n}\\n\\nfunction getUsefulRect(rects, bias) {\\n var rect = nullRect;\\n if (bias == \\\"left\\\") { for (var i = 0; i < rects.length; i++) {\\n if ((rect = rects[i]).left != rect.right) { break }\\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\\n if ((rect = rects[i$1]).left != rect.right) { break }\\n } }\\n return rect\\n}\\n\\nfunction measureCharInner(cm, prepared, ch, bias) {\\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\\n\\n var rect;\\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\\n { rect = node.parentNode.getBoundingClientRect(); }\\n else\\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\\n if (rect.left || rect.right || start == 0) { break }\\n end = start;\\n start = start - 1;\\n collapse = \\\"right\\\";\\n }\\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\\n } else { // If it is a widget, simply get the box for the whole widget.\\n if (start > 0) { collapse = bias = \\\"right\\\"; }\\n var rects;\\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\\n { rect = rects[bias == \\\"right\\\" ? rects.length - 1 : 0]; }\\n else\\n { rect = node.getBoundingClientRect(); }\\n }\\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\\n var rSpan = node.parentNode.getClientRects()[0];\\n if (rSpan)\\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\\n else\\n { rect = nullRect; }\\n }\\n\\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\\n var mid = (rtop + rbot) / 2;\\n var heights = prepared.view.measure.heights;\\n var i = 0;\\n for (; i < heights.length - 1; i++)\\n { if (mid < heights[i]) { break } }\\n var top = i ? heights[i - 1] : 0, bot = heights[i];\\n var result = {left: (collapse == \\\"right\\\" ? rect.right : rect.left) - prepared.rect.left,\\n right: (collapse == \\\"left\\\" ? rect.left : rect.right) - prepared.rect.left,\\n top: top, bottom: bot};\\n if (!rect.left && !rect.right) { result.bogus = true; }\\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\\n\\n return result\\n}\\n\\n// Work around problem with bounding client rects on ranges being\\n// returned incorrectly when zoomed on IE10 and below.\\nfunction maybeUpdateRectForZooming(measure, rect) {\\n if (!window.screen || screen.logicalXDPI == null ||\\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\\n { return rect }\\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\\n return {left: rect.left * scaleX, right: rect.right * scaleX,\\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\\n}\\n\\nfunction clearLineMeasurementCacheFor(lineView) {\\n if (lineView.measure) {\\n lineView.measure.cache = {};\\n lineView.measure.heights = null;\\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\\n { lineView.measure.caches[i] = {}; } }\\n }\\n}\\n\\nfunction clearLineMeasurementCache(cm) {\\n cm.display.externalMeasure = null;\\n removeChildren(cm.display.lineMeasure);\\n for (var i = 0; i < cm.display.view.length; i++)\\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\\n}\\n\\nfunction clearCaches(cm) {\\n clearLineMeasurementCache(cm);\\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\\n cm.display.lineNumChars = null;\\n}\\n\\nfunction pageScrollX() {\\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\\n // which causes page_Offset and bounding client rects to use\\n // different reference viewports and invalidate our calculations.\\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\\n}\\nfunction pageScrollY() {\\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\\n}\\n\\n// Converts a {top, bottom, left, right} box from line-local\\n// coordinates into another coordinate system. Context may be one of\\n// \\\"line\\\", \\\"div\\\" (display.lineDiv), \\\"local\\\"./null (editor), \\\"window\\\",\\n// or \\\"page\\\".\\nfunction intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\\n if (!includeWidgets && lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) {\\n var size = widgetHeight(lineObj.widgets[i]);\\n rect.top += size; rect.bottom += size;\\n } } }\\n if (context == \\\"line\\\") { return rect }\\n if (!context) { context = \\\"local\\\"; }\\n var yOff = heightAtLine(lineObj);\\n if (context == \\\"local\\\") { yOff += paddingTop(cm.display); }\\n else { yOff -= cm.display.viewOffset; }\\n if (context == \\\"page\\\" || context == \\\"window\\\") {\\n var lOff = cm.display.lineSpace.getBoundingClientRect();\\n yOff += lOff.top + (context == \\\"window\\\" ? 0 : pageScrollY());\\n var xOff = lOff.left + (context == \\\"window\\\" ? 0 : pageScrollX());\\n rect.left += xOff; rect.right += xOff;\\n }\\n rect.top += yOff; rect.bottom += yOff;\\n return rect\\n}\\n\\n// Coverts a box from \\\"div\\\" coords to another coordinate system.\\n// Context may be \\\"window\\\", \\\"page\\\", \\\"div\\\", or \\\"local\\\"./null.\\nfunction fromCoordSystem(cm, coords, context) {\\n if (context == \\\"div\\\") { return coords }\\n var left = coords.left, top = coords.top;\\n // First move into \\\"page\\\" coordinate system\\n if (context == \\\"page\\\") {\\n left -= pageScrollX();\\n top -= pageScrollY();\\n } else if (context == \\\"local\\\" || !context) {\\n var localBox = cm.display.sizer.getBoundingClientRect();\\n left += localBox.left;\\n top += localBox.top;\\n }\\n\\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\\n}\\n\\nfunction charCoords(cm, pos, context, lineObj, bias) {\\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\\n}\\n\\n// Returns a box for a given cursor position, which may have an\\n// 'other' property containing the position of the secondary cursor\\n// on a bidi boundary.\\n// A cursor Pos(line, char, \\\"before\\\") is on the same visual line as `char - 1`\\n// and after `char - 1` in writing order of `char - 1`\\n// A cursor Pos(line, char, \\\"after\\\") is on the same visual line as `char`\\n// and before `char` in writing order of `char`\\n// Examples (upper-case letters are RTL, lower-case are LTR):\\n// Pos(0, 1, ...)\\n// before after\\n// ab a|b a|b\\n// aB a|B aB|\\n// Ab |Ab A|b\\n// AB B|A B|A\\n// Every position after the last character on a line is considered to stick\\n// to the last character on the line.\\nfunction cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\\n lineObj = lineObj || getLine(cm.doc, pos.line);\\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\\n function get(ch, right) {\\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \\\"right\\\" : \\\"left\\\", varHeight);\\n if (right) { m.left = m.right; } else { m.right = m.left; }\\n return intoCoordSystem(cm, lineObj, m, context)\\n }\\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\\n if (ch >= lineObj.text.length) {\\n ch = lineObj.text.length;\\n sticky = \\\"before\\\";\\n } else if (ch <= 0) {\\n ch = 0;\\n sticky = \\\"after\\\";\\n }\\n if (!order) { return get(sticky == \\\"before\\\" ? ch - 1 : ch, sticky == \\\"before\\\") }\\n\\n function getBidi(ch, partPos, invert) {\\n var part = order[partPos], right = (part.level % 2) != 0;\\n return get(invert ? ch - 1 : ch, right != invert)\\n }\\n var partPos = getBidiPartAt(order, ch, sticky);\\n var other = bidiOther;\\n var val = getBidi(ch, partPos, sticky == \\\"before\\\");\\n if (other != null) { val.other = getBidi(ch, other, sticky != \\\"before\\\"); }\\n return val\\n}\\n\\n// Used to cheaply estimate the coordinates for a position. Used for\\n// intermediate scroll updates.\\nfunction estimateCoords(cm, pos) {\\n var left = 0;\\n pos = clipPos(cm.doc, pos);\\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\\n var lineObj = getLine(cm.doc, pos.line);\\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\\n}\\n\\n// Positions returned by coordsChar contain some extra information.\\n// xRel is the relative x position of the input coordinates compared\\n// to the found position (so xRel > 0 means the coordinates are to\\n// the right of the character position, for example). When outside\\n// is true, that means the coordinates lie outside the line's\\n// vertical range.\\nfunction PosWithInfo(line, ch, sticky, outside, xRel) {\\n var pos = Pos(line, ch, sticky);\\n pos.xRel = xRel;\\n if (outside) { pos.outside = true; }\\n return pos\\n}\\n\\n// Compute the character position closest to the given coordinates.\\n// Input must be lineSpace-local (\\\"div\\\" coordinate system).\\nfunction coordsChar(cm, x, y) {\\n var doc = cm.doc;\\n y += cm.display.viewOffset;\\n if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\\n if (lineN > last)\\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\\n if (x < 0) { x = 0; }\\n\\n var lineObj = getLine(doc, lineN);\\n for (;;) {\\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\\n var merged = collapsedSpanAtEnd(lineObj);\\n var mergedPos = merged && merged.find(0, true);\\n if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))\\n { lineN = lineNo(lineObj = mergedPos.to.line); }\\n else\\n { return found }\\n }\\n}\\n\\nfunction wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\\n var measure = function (ch) { return intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \\\"line\\\"); };\\n var end = lineObj.text.length;\\n var begin = findFirst(function (ch) { return measure(ch - 1).bottom <= y; }, end, 0);\\n end = findFirst(function (ch) { return measure(ch).top > y; }, begin, end);\\n return {begin: begin, end: end}\\n}\\n\\nfunction wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \\\"line\\\").top;\\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\\n}\\n\\nfunction coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\\n y -= heightAtLine(lineObj);\\n var begin = 0, end = lineObj.text.length;\\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\\n var pos;\\n var order = getOrder(lineObj, cm.doc.direction);\\n if (order) {\\n if (cm.options.lineWrapping) {\\n var assign;\\n ((assign = wrappedLineExtent(cm, lineObj, preparedMeasure, y), begin = assign.begin, end = assign.end, assign));\\n }\\n pos = new Pos(lineNo$$1, Math.floor(begin + (end - begin) / 2));\\n var beginLeft = cursorCoords(cm, pos, \\\"line\\\", lineObj, preparedMeasure).left;\\n var dir = beginLeft < x ? 1 : -1;\\n var prevDiff, diff = beginLeft - x, prevPos;\\n var steps = Math.ceil((end - begin) / 4);\\n outer: do {\\n prevDiff = diff;\\n prevPos = pos;\\n var i = 0;\\n for (; i < steps; ++i) {\\n var prevPos$1 = pos;\\n pos = moveVisually(cm, lineObj, pos, dir);\\n if (pos == null || pos.ch < begin || end <= (pos.sticky == \\\"before\\\" ? pos.ch - 1 : pos.ch)) {\\n pos = prevPos$1;\\n break outer\\n }\\n }\\n diff = cursorCoords(cm, pos, \\\"line\\\", lineObj, preparedMeasure).left - x;\\n if (steps > 1) {\\n var diff_change_per_step = Math.abs(diff - prevDiff) / steps;\\n steps = Math.min(steps, Math.ceil(Math.abs(diff) / diff_change_per_step));\\n dir = diff < 0 ? 1 : -1;\\n }\\n } while (diff != 0 && (steps > 1 || ((dir < 0) != (diff < 0) && (Math.abs(diff) <= Math.abs(prevDiff)))))\\n if (Math.abs(diff) > Math.abs(prevDiff)) {\\n if ((diff < 0) == (prevDiff < 0)) { throw new Error(\\\"Broke out of infinite loop in coordsCharInner\\\") }\\n pos = prevPos;\\n }\\n } else {\\n var ch = findFirst(function (ch) {\\n var box = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, ch), \\\"line\\\");\\n if (box.top > y) {\\n // For the cursor stickiness\\n end = Math.min(ch, end);\\n return true\\n }\\n else if (box.bottom <= y) { return false }\\n else if (box.left > x) { return true }\\n else if (box.right < x) { return false }\\n else { return (x - box.left < box.right - x) }\\n }, begin, end);\\n ch = skipExtendingChars(lineObj.text, ch, 1);\\n pos = new Pos(lineNo$$1, ch, ch == end ? \\\"before\\\" : \\\"after\\\");\\n }\\n var coords = cursorCoords(cm, pos, \\\"line\\\", lineObj, preparedMeasure);\\n if (y < coords.top || coords.bottom < y) { pos.outside = true; }\\n pos.xRel = x < coords.left ? -1 : (x > coords.right ? 1 : 0);\\n return pos\\n}\\n\\nvar measureText;\\n// Compute the default text height.\\nfunction textHeight(display) {\\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\\n if (measureText == null) {\\n measureText = elt(\\\"pre\\\");\\n // Measure a bunch of lines, for browsers that compute\\n // fractional heights.\\n for (var i = 0; i < 49; ++i) {\\n measureText.appendChild(document.createTextNode(\\\"x\\\"));\\n measureText.appendChild(elt(\\\"br\\\"));\\n }\\n measureText.appendChild(document.createTextNode(\\\"x\\\"));\\n }\\n removeChildrenAndAdd(display.measure, measureText);\\n var height = measureText.offsetHeight / 50;\\n if (height > 3) { display.cachedTextHeight = height; }\\n removeChildren(display.measure);\\n return height || 1\\n}\\n\\n// Compute the default character width.\\nfunction charWidth(display) {\\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\\n var anchor = elt(\\\"span\\\", \\\"xxxxxxxxxx\\\");\\n var pre = elt(\\\"pre\\\", [anchor]);\\n removeChildrenAndAdd(display.measure, pre);\\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\\n if (width > 2) { display.cachedCharWidth = width; }\\n return width || 10\\n}\\n\\n// Do a bulk-read of the DOM positions and sizes needed to draw the\\n// view, so that we don't interleave reading and writing to the DOM.\\nfunction getDimensions(cm) {\\n var d = cm.display, left = {}, width = {};\\n var gutterLeft = d.gutters.clientLeft;\\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\\n left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\\n width[cm.options.gutters[i]] = n.clientWidth;\\n }\\n return {fixedPos: compensateForHScroll(d),\\n gutterTotalWidth: d.gutters.offsetWidth,\\n gutterLeft: left,\\n gutterWidth: width,\\n wrapperWidth: d.wrapper.clientWidth}\\n}\\n\\n// Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\\n// but using getBoundingClientRect to get a sub-pixel-accurate\\n// result.\\nfunction compensateForHScroll(display) {\\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\\n}\\n\\n// Returns a function that estimates the height of a line, to use as\\n// first approximation until the line becomes visible (and is thus\\n// properly measurable).\\nfunction estimateHeight(cm) {\\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\\n return function (line) {\\n if (lineIsHidden(cm.doc, line)) { return 0 }\\n\\n var widgetsHeight = 0;\\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\\n } }\\n\\n if (wrapping)\\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\\n else\\n { return widgetsHeight + th }\\n }\\n}\\n\\nfunction estimateLineHeights(cm) {\\n var doc = cm.doc, est = estimateHeight(cm);\\n doc.iter(function (line) {\\n var estHeight = est(line);\\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\\n });\\n}\\n\\n// Given a mouse event, find the corresponding position. If liberal\\n// is false, it checks whether a gutter or scrollbar was clicked,\\n// and returns null if it was. forRect is used by rectangular\\n// selections, and tries to estimate a character position even for\\n// coordinates beyond the right of the text.\\nfunction posFromMouse(cm, e, liberal, forRect) {\\n var display = cm.display;\\n if (!liberal && e_target(e).getAttribute(\\\"cm-not-content\\\") == \\\"true\\\") { return null }\\n\\n var x, y, space = display.lineSpace.getBoundingClientRect();\\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\\n catch (e) { return null }\\n var coords = coordsChar(cm, x, y), line;\\n if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\\n }\\n return coords\\n}\\n\\n// Find the view element corresponding to a given line. Return null\\n// when the line isn't visible.\\nfunction findViewIndex(cm, n) {\\n if (n >= cm.display.viewTo) { return null }\\n n -= cm.display.viewFrom;\\n if (n < 0) { return null }\\n var view = cm.display.view;\\n for (var i = 0; i < view.length; i++) {\\n n -= view[i].size;\\n if (n < 0) { return i }\\n }\\n}\\n\\nfunction updateSelection(cm) {\\n cm.display.input.showSelection(cm.display.input.prepareSelection());\\n}\\n\\nfunction prepareSelection(cm, primary) {\\n var doc = cm.doc, result = {};\\n var curFragment = result.cursors = document.createDocumentFragment();\\n var selFragment = result.selection = document.createDocumentFragment();\\n\\n for (var i = 0; i < doc.sel.ranges.length; i++) {\\n if (primary === false && i == doc.sel.primIndex) { continue }\\n var range$$1 = doc.sel.ranges[i];\\n if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\\n var collapsed = range$$1.empty();\\n if (collapsed || cm.options.showCursorWhenSelecting)\\n { drawSelectionCursor(cm, range$$1.head, curFragment); }\\n if (!collapsed)\\n { drawSelectionRange(cm, range$$1, selFragment); }\\n }\\n return result\\n}\\n\\n// Draws a cursor for the given range\\nfunction drawSelectionCursor(cm, head, output) {\\n var pos = cursorCoords(cm, head, \\\"div\\\", null, null, !cm.options.singleCursorHeightPerLine);\\n\\n var cursor = output.appendChild(elt(\\\"div\\\", \\\"\\\\u00a0\\\", \\\"CodeMirror-cursor\\\"));\\n cursor.style.left = pos.left + \\\"px\\\";\\n cursor.style.top = pos.top + \\\"px\\\";\\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \\\"px\\\";\\n\\n if (pos.other) {\\n // Secondary cursor, shown when on a 'jump' in bi-directional text\\n var otherCursor = output.appendChild(elt(\\\"div\\\", \\\"\\\\u00a0\\\", \\\"CodeMirror-cursor CodeMirror-secondarycursor\\\"));\\n otherCursor.style.display = \\\"\\\";\\n otherCursor.style.left = pos.other.left + \\\"px\\\";\\n otherCursor.style.top = pos.other.top + \\\"px\\\";\\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \\\"px\\\";\\n }\\n}\\n\\n// Draws the given range as a highlighted selection\\nfunction drawSelectionRange(cm, range$$1, output) {\\n var display = cm.display, doc = cm.doc;\\n var fragment = document.createDocumentFragment();\\n var padding = paddingH(cm.display), leftSide = padding.left;\\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\\n\\n function add(left, top, width, bottom) {\\n if (top < 0) { top = 0; }\\n top = Math.round(top);\\n bottom = Math.round(bottom);\\n fragment.appendChild(elt(\\\"div\\\", null, \\\"CodeMirror-selected\\\", (\\\"position: absolute; left: \\\" + left + \\\"px;\\\\n top: \\\" + top + \\\"px; width: \\\" + (width == null ? rightSide - left : width) + \\\"px;\\\\n height: \\\" + (bottom - top) + \\\"px\\\")));\\n }\\n\\n function drawForLine(line, fromArg, toArg) {\\n var lineObj = getLine(doc, line);\\n var lineLen = lineObj.text.length;\\n var start, end;\\n function coords(ch, bias) {\\n return charCoords(cm, Pos(line, ch), \\\"div\\\", lineObj, bias)\\n }\\n\\n iterateBidiSections(getOrder(lineObj, doc.direction), fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir) {\\n var leftPos = coords(from, \\\"left\\\"), rightPos, left, right;\\n if (from == to) {\\n rightPos = leftPos;\\n left = right = leftPos.left;\\n } else {\\n rightPos = coords(to - 1, \\\"right\\\");\\n if (dir == \\\"rtl\\\") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }\\n left = leftPos.left;\\n right = rightPos.right;\\n }\\n if (fromArg == null && from == 0) { left = leftSide; }\\n if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part\\n add(left, leftPos.top, null, leftPos.bottom);\\n left = leftSide;\\n if (leftPos.bottom < rightPos.top) { add(left, leftPos.bottom, null, rightPos.top); }\\n }\\n if (toArg == null && to == lineLen) { right = rightSide; }\\n if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)\\n { start = leftPos; }\\n if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)\\n { end = rightPos; }\\n if (left < leftSide + 1) { left = leftSide; }\\n add(left, rightPos.top, right - left, rightPos.bottom);\\n });\\n return {start: start, end: end}\\n }\\n\\n var sFrom = range$$1.from(), sTo = range$$1.to();\\n if (sFrom.line == sTo.line) {\\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\\n } else {\\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\\n if (singleVLine) {\\n if (leftEnd.top < rightStart.top - 2) {\\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\\n } else {\\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\\n }\\n }\\n if (leftEnd.bottom < rightStart.top)\\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\\n }\\n\\n output.appendChild(fragment);\\n}\\n\\n// Cursor-blinking\\nfunction restartBlink(cm) {\\n if (!cm.state.focused) { return }\\n var display = cm.display;\\n clearInterval(display.blinker);\\n var on = true;\\n display.cursorDiv.style.visibility = \\\"\\\";\\n if (cm.options.cursorBlinkRate > 0)\\n { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \\\"\\\" : \\\"hidden\\\"; },\\n cm.options.cursorBlinkRate); }\\n else if (cm.options.cursorBlinkRate < 0)\\n { display.cursorDiv.style.visibility = \\\"hidden\\\"; }\\n}\\n\\nfunction ensureFocus(cm) {\\n if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\\n}\\n\\nfunction delayBlurEvent(cm) {\\n cm.state.delayingBlurEvent = true;\\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\\n cm.state.delayingBlurEvent = false;\\n onBlur(cm);\\n } }, 100);\\n}\\n\\nfunction onFocus(cm, e) {\\n if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\\n\\n if (cm.options.readOnly == \\\"nocursor\\\") { return }\\n if (!cm.state.focused) {\\n signal(cm, \\\"focus\\\", cm, e);\\n cm.state.focused = true;\\n addClass(cm.display.wrapper, \\\"CodeMirror-focused\\\");\\n // This test prevents this from firing when a context\\n // menu is closed (since the input reset would kill the\\n // select-all detection hack)\\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\\n cm.display.input.reset();\\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\\n }\\n cm.display.input.receivedFocus();\\n }\\n restartBlink(cm);\\n}\\nfunction onBlur(cm, e) {\\n if (cm.state.delayingBlurEvent) { return }\\n\\n if (cm.state.focused) {\\n signal(cm, \\\"blur\\\", cm, e);\\n cm.state.focused = false;\\n rmClass(cm.display.wrapper, \\\"CodeMirror-focused\\\");\\n }\\n clearInterval(cm.display.blinker);\\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\\n}\\n\\n// Read the actual heights of the rendered lines, and update their\\n// stored heights to match.\\nfunction updateHeightsInViewport(cm) {\\n var display = cm.display;\\n var prevBottom = display.lineDiv.offsetTop;\\n for (var i = 0; i < display.view.length; i++) {\\n var cur = display.view[i], height = (void 0);\\n if (cur.hidden) { continue }\\n if (ie && ie_version < 8) {\\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\\n height = bot - prevBottom;\\n prevBottom = bot;\\n } else {\\n var box = cur.node.getBoundingClientRect();\\n height = box.bottom - box.top;\\n }\\n var diff = cur.line.height - height;\\n if (height < 2) { height = textHeight(display); }\\n if (diff > .005 || diff < -.005) {\\n updateLineHeight(cur.line, height);\\n updateWidgetHeight(cur.line);\\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\\n { updateWidgetHeight(cur.rest[j]); } }\\n }\\n }\\n}\\n\\n// Read and store the height of line widgets associated with the\\n// given line.\\nfunction updateWidgetHeight(line) {\\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i)\\n { line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; } }\\n}\\n\\n// Compute the lines that are visible in a given viewport (defaults\\n// the the current scroll position). viewport may contain top,\\n// height, and ensure (see op.scrollToPos) properties.\\nfunction visibleLines(display, doc, viewport) {\\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\\n top = Math.floor(top - paddingTop(display));\\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\\n\\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\\n // forces those lines into the viewport (if possible).\\n if (viewport && viewport.ensure) {\\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\\n if (ensureFrom < from) {\\n from = ensureFrom;\\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\\n to = ensureTo;\\n }\\n }\\n return {from: from, to: Math.max(to, from + 1)}\\n}\\n\\n// Re-align line numbers and gutter marks to compensate for\\n// horizontal scrolling.\\nfunction alignHorizontally(cm) {\\n var display = cm.display, view = display.view;\\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\\n var gutterW = display.gutters.offsetWidth, left = comp + \\\"px\\\";\\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\\n if (cm.options.fixedGutter) {\\n if (view[i].gutter)\\n { view[i].gutter.style.left = left; }\\n if (view[i].gutterBackground)\\n { view[i].gutterBackground.style.left = left; }\\n }\\n var align = view[i].alignable;\\n if (align) { for (var j = 0; j < align.length; j++)\\n { align[j].style.left = left; } }\\n } }\\n if (cm.options.fixedGutter)\\n { display.gutters.style.left = (comp + gutterW) + \\\"px\\\"; }\\n}\\n\\n// Used to ensure that the line number gutter is still the right\\n// size for the current document size. Returns true when an update\\n// is needed.\\nfunction maybeUpdateLineNumberWidth(cm) {\\n if (!cm.options.lineNumbers) { return false }\\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\\n if (last.length != display.lineNumChars) {\\n var test = display.measure.appendChild(elt(\\\"div\\\", [elt(\\\"div\\\", last)],\\n \\\"CodeMirror-linenumber CodeMirror-gutter-elt\\\"));\\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\\n display.lineGutter.style.width = \\\"\\\";\\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\\n display.lineNumWidth = display.lineNumInnerWidth + padding;\\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\\n display.lineGutter.style.width = display.lineNumWidth + \\\"px\\\";\\n updateGutterSpace(cm);\\n return true\\n }\\n return false\\n}\\n\\n// SCROLLING THINGS INTO VIEW\\n\\n// If an editor sits on the top or bottom of the window, partially\\n// scrolled out of view, this ensures that the cursor is visible.\\nfunction maybeScrollWindow(cm, rect) {\\n if (signalDOMEvent(cm, \\\"scrollCursorIntoView\\\")) { return }\\n\\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\\n if (rect.top + box.top < 0) { doScroll = true; }\\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\\n if (doScroll != null && !phantom) {\\n var scrollNode = elt(\\\"div\\\", \\\"\\\\u200b\\\", null, (\\\"position: absolute;\\\\n top: \\\" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \\\"px;\\\\n height: \\\" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \\\"px;\\\\n left: \\\" + (rect.left) + \\\"px; width: \\\" + (Math.max(2, rect.right - rect.left)) + \\\"px;\\\"));\\n cm.display.lineSpace.appendChild(scrollNode);\\n scrollNode.scrollIntoView(doScroll);\\n cm.display.lineSpace.removeChild(scrollNode);\\n }\\n}\\n\\n// Scroll a given position into view (immediately), verifying that\\n// it actually became visible (as line heights are accurately\\n// measured, the position of something may 'drift' during drawing).\\nfunction scrollPosIntoView(cm, pos, end, margin) {\\n if (margin == null) { margin = 0; }\\n var rect;\\n if (!cm.options.lineWrapping && pos == end) {\\n // Set pos and end to the cursor positions around the character pos sticks to\\n // If pos.sticky == \\\"before\\\", that is around pos.ch - 1, otherwise around pos.ch\\n // If pos == Pos(_, 0, \\\"before\\\"), pos and end are unchanged\\n pos = pos.ch ? Pos(pos.line, pos.sticky == \\\"before\\\" ? pos.ch - 1 : pos.ch, \\\"after\\\") : pos;\\n end = pos.sticky == \\\"before\\\" ? Pos(pos.line, pos.ch + 1, \\\"before\\\") : pos;\\n }\\n for (var limit = 0; limit < 5; limit++) {\\n var changed = false;\\n var coords = cursorCoords(cm, pos);\\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\\n rect = {left: Math.min(coords.left, endCoords.left),\\n top: Math.min(coords.top, endCoords.top) - margin,\\n right: Math.max(coords.left, endCoords.left),\\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\\n var scrollPos = calculateScrollPos(cm, rect);\\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\\n if (scrollPos.scrollTop != null) {\\n updateScrollTop(cm, scrollPos.scrollTop);\\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\\n }\\n if (scrollPos.scrollLeft != null) {\\n setScrollLeft(cm, scrollPos.scrollLeft);\\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\\n }\\n if (!changed) { break }\\n }\\n return rect\\n}\\n\\n// Scroll a given set of coordinates into view (immediately).\\nfunction scrollIntoView(cm, rect) {\\n var scrollPos = calculateScrollPos(cm, rect);\\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\\n}\\n\\n// Calculate a new scroll position needed to scroll the given\\n// rectangle into view. Returns an object with scrollTop and\\n// scrollLeft properties. When these are undefined, the\\n// vertical/horizontal position does not need to be adjusted.\\nfunction calculateScrollPos(cm, rect) {\\n var display = cm.display, snapMargin = textHeight(cm.display);\\n if (rect.top < 0) { rect.top = 0; }\\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\\n var screen = displayHeight(cm), result = {};\\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\\n var docBottom = cm.doc.height + paddingVert(display);\\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\\n if (rect.top < screentop) {\\n result.scrollTop = atTop ? 0 : rect.top;\\n } else if (rect.bottom > screentop + screen) {\\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\\n if (newTop != screentop) { result.scrollTop = newTop; }\\n }\\n\\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\\n var tooWide = rect.right - rect.left > screenw;\\n if (tooWide) { rect.right = rect.left + screenw; }\\n if (rect.left < 10)\\n { result.scrollLeft = 0; }\\n else if (rect.left < screenleft)\\n { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\\n else if (rect.right > screenw + screenleft - 3)\\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\\n return result\\n}\\n\\n// Store a relative adjustment to the scroll position in the current\\n// operation (to be applied when the operation finishes).\\nfunction addToScrollTop(cm, top) {\\n if (top == null) { return }\\n resolveScrollToPos(cm);\\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\\n}\\n\\n// Make sure that at the end of the operation the current cursor is\\n// shown.\\nfunction ensureCursorVisible(cm) {\\n resolveScrollToPos(cm);\\n var cur = cm.getCursor();\\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\\n}\\n\\nfunction scrollToCoords(cm, x, y) {\\n if (x != null || y != null) { resolveScrollToPos(cm); }\\n if (x != null) { cm.curOp.scrollLeft = x; }\\n if (y != null) { cm.curOp.scrollTop = y; }\\n}\\n\\nfunction scrollToRange(cm, range$$1) {\\n resolveScrollToPos(cm);\\n cm.curOp.scrollToPos = range$$1;\\n}\\n\\n// When an operation has its scrollToPos property set, and another\\n// scroll action is applied before the end of the operation, this\\n// 'simulates' scrolling that position into view in a cheap way, so\\n// that the effect of intermediate scroll commands is not ignored.\\nfunction resolveScrollToPos(cm) {\\n var range$$1 = cm.curOp.scrollToPos;\\n if (range$$1) {\\n cm.curOp.scrollToPos = null;\\n var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\\n scrollToCoordsRange(cm, from, to, range$$1.margin);\\n }\\n}\\n\\nfunction scrollToCoordsRange(cm, from, to, margin) {\\n var sPos = calculateScrollPos(cm, {\\n left: Math.min(from.left, to.left),\\n top: Math.min(from.top, to.top) - margin,\\n right: Math.max(from.right, to.right),\\n bottom: Math.max(from.bottom, to.bottom) + margin\\n });\\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\\n}\\n\\n// Sync the scrollable area and scrollbars, ensure the viewport\\n// covers the visible area.\\nfunction updateScrollTop(cm, val) {\\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\\n setScrollTop(cm, val, true);\\n if (gecko) { updateDisplaySimple(cm); }\\n startWorker(cm, 100);\\n}\\n\\nfunction setScrollTop(cm, val, forceScroll) {\\n val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\\n cm.doc.scrollTop = val;\\n cm.display.scrollbars.setScrollTop(val);\\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\\n}\\n\\n// Sync scroller and scrollbar, ensure the gutter elements are\\n// aligned.\\nfunction setScrollLeft(cm, val, isScroller, forceScroll) {\\n val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\\n cm.doc.scrollLeft = val;\\n alignHorizontally(cm);\\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\\n cm.display.scrollbars.setScrollLeft(val);\\n}\\n\\n// SCROLLBARS\\n\\n// Prepare DOM reads needed to update the scrollbars. Done in one\\n// shot to minimize update/measure roundtrips.\\nfunction measureForScrollbars(cm) {\\n var d = cm.display, gutterW = d.gutters.offsetWidth;\\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\\n return {\\n clientHeight: d.scroller.clientHeight,\\n viewHeight: d.wrapper.clientHeight,\\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\\n viewWidth: d.wrapper.clientWidth,\\n barLeft: cm.options.fixedGutter ? gutterW : 0,\\n docHeight: docH,\\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\\n nativeBarWidth: d.nativeBarWidth,\\n gutterWidth: gutterW\\n }\\n}\\n\\nvar NativeScrollbars = function(place, scroll, cm) {\\n this.cm = cm;\\n var vert = this.vert = elt(\\\"div\\\", [elt(\\\"div\\\", null, null, \\\"min-width: 1px\\\")], \\\"CodeMirror-vscrollbar\\\");\\n var horiz = this.horiz = elt(\\\"div\\\", [elt(\\\"div\\\", null, null, \\\"height: 100%; min-height: 1px\\\")], \\\"CodeMirror-hscrollbar\\\");\\n place(vert); place(horiz);\\n\\n on(vert, \\\"scroll\\\", function () {\\n if (vert.clientHeight) { scroll(vert.scrollTop, \\\"vertical\\\"); }\\n });\\n on(horiz, \\\"scroll\\\", function () {\\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \\\"horizontal\\\"); }\\n });\\n\\n this.checkedZeroWidth = false;\\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \\\"18px\\\"; }\\n};\\n\\nNativeScrollbars.prototype.update = function (measure) {\\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\\n var sWidth = measure.nativeBarWidth;\\n\\n if (needsV) {\\n this.vert.style.display = \\\"block\\\";\\n this.vert.style.bottom = needsH ? sWidth + \\\"px\\\" : \\\"0\\\";\\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\\n // A bug in IE8 can cause this value to be negative, so guard it.\\n this.vert.firstChild.style.height =\\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \\\"px\\\";\\n } else {\\n this.vert.style.display = \\\"\\\";\\n this.vert.firstChild.style.height = \\\"0\\\";\\n }\\n\\n if (needsH) {\\n this.horiz.style.display = \\\"block\\\";\\n this.horiz.style.right = needsV ? sWidth + \\\"px\\\" : \\\"0\\\";\\n this.horiz.style.left = measure.barLeft + \\\"px\\\";\\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\\n this.horiz.firstChild.style.width =\\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \\\"px\\\";\\n } else {\\n this.horiz.style.display = \\\"\\\";\\n this.horiz.firstChild.style.width = \\\"0\\\";\\n }\\n\\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\\n if (sWidth == 0) { this.zeroWidthHack(); }\\n this.checkedZeroWidth = true;\\n }\\n\\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\\n};\\n\\nNativeScrollbars.prototype.setScrollLeft = function (pos) {\\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \\\"horiz\\\"); }\\n};\\n\\nNativeScrollbars.prototype.setScrollTop = function (pos) {\\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \\\"vert\\\"); }\\n};\\n\\nNativeScrollbars.prototype.zeroWidthHack = function () {\\n var w = mac && !mac_geMountainLion ? \\\"12px\\\" : \\\"18px\\\";\\n this.horiz.style.height = this.vert.style.width = w;\\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \\\"none\\\";\\n this.disableHoriz = new Delayed;\\n this.disableVert = new Delayed;\\n};\\n\\nNativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\\n bar.style.pointerEvents = \\\"auto\\\";\\n function maybeDisable() {\\n // To find out whether the scrollbar is still visible, we\\n // check whether the element under the pixel in the bottom\\n // right corner of the scrollbar box is the scrollbar box\\n // itself (when the bar is still visible) or its filler child\\n // (when the bar is hidden). If it is still visible, we keep\\n // it enabled, if it's hidden, we disable pointer events.\\n var box = bar.getBoundingClientRect();\\n var elt$$1 = type == \\\"vert\\\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\\n if (elt$$1 != bar) { bar.style.pointerEvents = \\\"none\\\"; }\\n else { delay.set(1000, maybeDisable); }\\n }\\n delay.set(1000, maybeDisable);\\n};\\n\\nNativeScrollbars.prototype.clear = function () {\\n var parent = this.horiz.parentNode;\\n parent.removeChild(this.horiz);\\n parent.removeChild(this.vert);\\n};\\n\\nvar NullScrollbars = function () {};\\n\\nNullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\\nNullScrollbars.prototype.setScrollLeft = function () {};\\nNullScrollbars.prototype.setScrollTop = function () {};\\nNullScrollbars.prototype.clear = function () {};\\n\\nfunction updateScrollbars(cm, measure) {\\n if (!measure) { measure = measureForScrollbars(cm); }\\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\\n updateScrollbarsInner(cm, measure);\\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\\n { updateHeightsInViewport(cm); }\\n updateScrollbarsInner(cm, measureForScrollbars(cm));\\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\\n }\\n}\\n\\n// Re-synchronize the fake scrollbars with the actual size of the\\n// content.\\nfunction updateScrollbarsInner(cm, measure) {\\n var d = cm.display;\\n var sizes = d.scrollbars.update(measure);\\n\\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \\\"px\\\";\\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \\\"px\\\";\\n d.heightForcer.style.borderBottom = sizes.bottom + \\\"px solid transparent\\\";\\n\\n if (sizes.right && sizes.bottom) {\\n d.scrollbarFiller.style.display = \\\"block\\\";\\n d.scrollbarFiller.style.height = sizes.bottom + \\\"px\\\";\\n d.scrollbarFiller.style.width = sizes.right + \\\"px\\\";\\n } else { d.scrollbarFiller.style.display = \\\"\\\"; }\\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\\n d.gutterFiller.style.display = \\\"block\\\";\\n d.gutterFiller.style.height = sizes.bottom + \\\"px\\\";\\n d.gutterFiller.style.width = measure.gutterWidth + \\\"px\\\";\\n } else { d.gutterFiller.style.display = \\\"\\\"; }\\n}\\n\\nvar scrollbarModel = {\\\"native\\\": NativeScrollbars, \\\"null\\\": NullScrollbars};\\n\\nfunction initScrollbars(cm) {\\n if (cm.display.scrollbars) {\\n cm.display.scrollbars.clear();\\n if (cm.display.scrollbars.addClass)\\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\\n }\\n\\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\\n // Prevent clicks in the scrollbars from killing focus\\n on(node, \\\"mousedown\\\", function () {\\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\\n });\\n node.setAttribute(\\\"cm-not-content\\\", \\\"true\\\");\\n }, function (pos, axis) {\\n if (axis == \\\"horizontal\\\") { setScrollLeft(cm, pos); }\\n else { updateScrollTop(cm, pos); }\\n }, cm);\\n if (cm.display.scrollbars.addClass)\\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\\n}\\n\\n// Operations are used to wrap a series of changes to the editor\\n// state in such a way that each change won't have to update the\\n// cursor and display (which would be awkward, slow, and\\n// error-prone). Instead, display updates are batched and then all\\n// combined and executed at once.\\n\\nvar nextOpId = 0;\\n// Start a new operation.\\nfunction startOperation(cm) {\\n cm.curOp = {\\n cm: cm,\\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\\n forceUpdate: false, // Used to force a redraw\\n updateInput: null, // Whether to reset the input textarea\\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\\n changeObjs: null, // Accumulated changes, for firing change events\\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\\n selectionChanged: false, // Whether the selection needs to be redrawn\\n updateMaxLine: false, // Set when the widest line needs to be determined anew\\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\\n scrollToPos: null, // Used to scroll to a specific position\\n focus: false,\\n id: ++nextOpId // Unique ID\\n };\\n pushOperation(cm.curOp);\\n}\\n\\n// Finish an operation, updating the display and signalling delayed events\\nfunction endOperation(cm) {\\n var op = cm.curOp;\\n finishOperation(op, function (group) {\\n for (var i = 0; i < group.ops.length; i++)\\n { group.ops[i].cm.curOp = null; }\\n endOperations(group);\\n });\\n}\\n\\n// The DOM updates done when an operation finishes are batched so\\n// that the minimum number of relayouts are required.\\nfunction endOperations(group) {\\n var ops = group.ops;\\n for (var i = 0; i < ops.length; i++) // Read DOM\\n { endOperation_R1(ops[i]); }\\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\\n { endOperation_W1(ops[i$1]); }\\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\\n { endOperation_R2(ops[i$2]); }\\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\\n { endOperation_W2(ops[i$3]); }\\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\\n { endOperation_finish(ops[i$4]); }\\n}\\n\\nfunction endOperation_R1(op) {\\n var cm = op.cm, display = cm.display;\\n maybeClipScrollbars(cm);\\n if (op.updateMaxLine) { findMaxLine(cm); }\\n\\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\\n op.scrollToPos.to.line >= display.viewTo) ||\\n display.maxLineChanged && cm.options.lineWrapping;\\n op.update = op.mustUpdate &&\\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\\n}\\n\\nfunction endOperation_W1(op) {\\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\\n}\\n\\nfunction endOperation_R2(op) {\\n var cm = op.cm, display = cm.display;\\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\\n\\n op.barMeasure = measureForScrollbars(cm);\\n\\n // If the max line changed since it was last measured, measure it,\\n // and ensure the document's width matches it.\\n // updateDisplay_W2 will use these properties to do the actual resizing\\n if (display.maxLineChanged && !cm.options.lineWrapping) {\\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\\n cm.display.sizerWidth = op.adjustWidthTo;\\n op.barMeasure.scrollWidth =\\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\\n }\\n\\n if (op.updatedDisplay || op.selectionChanged)\\n { op.preparedSelection = display.input.prepareSelection(op.focus); }\\n}\\n\\nfunction endOperation_W2(op) {\\n var cm = op.cm;\\n\\n if (op.adjustWidthTo != null) {\\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \\\"px\\\";\\n if (op.maxScrollLeft < cm.doc.scrollLeft)\\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\\n cm.display.maxLineChanged = false;\\n }\\n\\n var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus());\\n if (op.preparedSelection)\\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\\n { updateScrollbars(cm, op.barMeasure); }\\n if (op.updatedDisplay)\\n { setDocumentHeight(cm, op.barMeasure); }\\n\\n if (op.selectionChanged) { restartBlink(cm); }\\n\\n if (cm.state.focused && op.updateInput)\\n { cm.display.input.reset(op.typing); }\\n if (takeFocus) { ensureFocus(op.cm); }\\n}\\n\\nfunction endOperation_finish(op) {\\n var cm = op.cm, display = cm.display, doc = cm.doc;\\n\\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\\n\\n // Abort mouse wheel delta measurement, when scrolling explicitly\\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\\n { display.wheelStartX = display.wheelStartY = null; }\\n\\n // Propagate the scroll position to the actual DOM scroller\\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\\n\\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\\n // If we need to scroll a specific position into view, do so.\\n if (op.scrollToPos) {\\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\\n maybeScrollWindow(cm, rect);\\n }\\n\\n // Fire events for markers that are hidden/unidden by editing or\\n // undoing\\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\\n { if (!hidden[i].lines.length) { signal(hidden[i], \\\"hide\\\"); } } }\\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \\\"unhide\\\"); } } }\\n\\n if (display.wrapper.offsetHeight)\\n { doc.scrollTop = cm.display.scroller.scrollTop; }\\n\\n // Fire change events, and delayed event handlers\\n if (op.changeObjs)\\n { signal(cm, \\\"changes\\\", cm, op.changeObjs); }\\n if (op.update)\\n { op.update.finish(); }\\n}\\n\\n// Run the given function in an operation\\nfunction runInOp(cm, f) {\\n if (cm.curOp) { return f() }\\n startOperation(cm);\\n try { return f() }\\n finally { endOperation(cm); }\\n}\\n// Wraps a function in an operation. Returns the wrapped function.\\nfunction operation(cm, f) {\\n return function() {\\n if (cm.curOp) { return f.apply(cm, arguments) }\\n startOperation(cm);\\n try { return f.apply(cm, arguments) }\\n finally { endOperation(cm); }\\n }\\n}\\n// Used to add methods to editor and doc instances, wrapping them in\\n// operations.\\nfunction methodOp(f) {\\n return function() {\\n if (this.curOp) { return f.apply(this, arguments) }\\n startOperation(this);\\n try { return f.apply(this, arguments) }\\n finally { endOperation(this); }\\n }\\n}\\nfunction docMethodOp(f) {\\n return function() {\\n var cm = this.cm;\\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\\n startOperation(cm);\\n try { return f.apply(this, arguments) }\\n finally { endOperation(cm); }\\n }\\n}\\n\\n// Updates the display.view data structure for a given change to the\\n// document. From and to are in pre-change coordinates. Lendiff is\\n// the amount of lines added or subtracted by the change. This is\\n// used for changes that span multiple lines, or change the way\\n// lines are divided into visual lines. regLineChange (below)\\n// registers single-line changes.\\nfunction regChange(cm, from, to, lendiff) {\\n if (from == null) { from = cm.doc.first; }\\n if (to == null) { to = cm.doc.first + cm.doc.size; }\\n if (!lendiff) { lendiff = 0; }\\n\\n var display = cm.display;\\n if (lendiff && to < display.viewTo &&\\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\\n { display.updateLineNumbers = from; }\\n\\n cm.curOp.viewChanged = true;\\n\\n if (from >= display.viewTo) { // Change after\\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\\n { resetView(cm); }\\n } else if (to <= display.viewFrom) { // Change before\\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\\n resetView(cm);\\n } else {\\n display.viewFrom += lendiff;\\n display.viewTo += lendiff;\\n }\\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\\n resetView(cm);\\n } else if (from <= display.viewFrom) { // Top overlap\\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\\n if (cut) {\\n display.view = display.view.slice(cut.index);\\n display.viewFrom = cut.lineN;\\n display.viewTo += lendiff;\\n } else {\\n resetView(cm);\\n }\\n } else if (to >= display.viewTo) { // Bottom overlap\\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\\n if (cut$1) {\\n display.view = display.view.slice(0, cut$1.index);\\n display.viewTo = cut$1.lineN;\\n } else {\\n resetView(cm);\\n }\\n } else { // Gap in the middle\\n var cutTop = viewCuttingPoint(cm, from, from, -1);\\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\\n if (cutTop && cutBot) {\\n display.view = display.view.slice(0, cutTop.index)\\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\\n .concat(display.view.slice(cutBot.index));\\n display.viewTo += lendiff;\\n } else {\\n resetView(cm);\\n }\\n }\\n\\n var ext = display.externalMeasured;\\n if (ext) {\\n if (to < ext.lineN)\\n { ext.lineN += lendiff; }\\n else if (from < ext.lineN + ext.size)\\n { display.externalMeasured = null; }\\n }\\n}\\n\\n// Register a change to a single line. Type must be one of \\\"text\\\",\\n// \\\"gutter\\\", \\\"class\\\", \\\"widget\\\"\\nfunction regLineChange(cm, line, type) {\\n cm.curOp.viewChanged = true;\\n var display = cm.display, ext = cm.display.externalMeasured;\\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\\n { display.externalMeasured = null; }\\n\\n if (line < display.viewFrom || line >= display.viewTo) { return }\\n var lineView = display.view[findViewIndex(cm, line)];\\n if (lineView.node == null) { return }\\n var arr = lineView.changes || (lineView.changes = []);\\n if (indexOf(arr, type) == -1) { arr.push(type); }\\n}\\n\\n// Clear the view.\\nfunction resetView(cm) {\\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\\n cm.display.view = [];\\n cm.display.viewOffset = 0;\\n}\\n\\nfunction viewCuttingPoint(cm, oldN, newN, dir) {\\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\\n { return {index: index, lineN: newN} }\\n var n = cm.display.viewFrom;\\n for (var i = 0; i < index; i++)\\n { n += view[i].size; }\\n if (n != oldN) {\\n if (dir > 0) {\\n if (index == view.length - 1) { return null }\\n diff = (n + view[index].size) - oldN;\\n index++;\\n } else {\\n diff = n - oldN;\\n }\\n oldN += diff; newN += diff;\\n }\\n while (visualLineNo(cm.doc, newN) != newN) {\\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\\n index += dir;\\n }\\n return {index: index, lineN: newN}\\n}\\n\\n// Force the view to cover a given range, adding empty view element\\n// or clipping off existing ones as needed.\\nfunction adjustView(cm, from, to) {\\n var display = cm.display, view = display.view;\\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\\n display.view = buildViewArray(cm, from, to);\\n display.viewFrom = from;\\n } else {\\n if (display.viewFrom > from)\\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\\n else if (display.viewFrom < from)\\n { display.view = display.view.slice(findViewIndex(cm, from)); }\\n display.viewFrom = from;\\n if (display.viewTo < to)\\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\\n else if (display.viewTo > to)\\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\\n }\\n display.viewTo = to;\\n}\\n\\n// Count the number of lines in the view whose DOM representation is\\n// out of date (or nonexistent).\\nfunction countDirtyView(cm) {\\n var view = cm.display.view, dirty = 0;\\n for (var i = 0; i < view.length; i++) {\\n var lineView = view[i];\\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\\n }\\n return dirty\\n}\\n\\n// HIGHLIGHT WORKER\\n\\nfunction startWorker(cm, time) {\\n if (cm.doc.highlightFrontier < cm.display.viewTo)\\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\\n}\\n\\nfunction highlightWorker(cm) {\\n var doc = cm.doc;\\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\\n var end = +new Date + cm.options.workTime;\\n var context = getContextBefore(cm, doc.highlightFrontier);\\n var changedLines = [];\\n\\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\\n if (context.line >= cm.display.viewFrom) { // Visible\\n var oldStyles = line.styles;\\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\\n var highlighted = highlightLine(cm, line, context, true);\\n if (resetState) { context.state = resetState; }\\n line.styles = highlighted.styles;\\n var oldCls = line.styleClasses, newCls = highlighted.classes;\\n if (newCls) { line.styleClasses = newCls; }\\n else if (oldCls) { line.styleClasses = null; }\\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\\n if (ischange) { changedLines.push(context.line); }\\n line.stateAfter = context.save();\\n context.nextLine();\\n } else {\\n if (line.text.length <= cm.options.maxHighlightLength)\\n { processLine(cm, line.text, context); }\\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\\n context.nextLine();\\n }\\n if (+new Date > end) {\\n startWorker(cm, cm.options.workDelay);\\n return true\\n }\\n });\\n doc.highlightFrontier = context.line;\\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\\n if (changedLines.length) { runInOp(cm, function () {\\n for (var i = 0; i < changedLines.length; i++)\\n { regLineChange(cm, changedLines[i], \\\"text\\\"); }\\n }); }\\n}\\n\\n// DISPLAY DRAWING\\n\\nvar DisplayUpdate = function(cm, viewport, force) {\\n var display = cm.display;\\n\\n this.viewport = viewport;\\n // Store some values that we'll need later (but don't want to force a relayout for)\\n this.visible = visibleLines(display, cm.doc, viewport);\\n this.editorIsHidden = !display.wrapper.offsetWidth;\\n this.wrapperHeight = display.wrapper.clientHeight;\\n this.wrapperWidth = display.wrapper.clientWidth;\\n this.oldDisplayWidth = displayWidth(cm);\\n this.force = force;\\n this.dims = getDimensions(cm);\\n this.events = [];\\n};\\n\\nDisplayUpdate.prototype.signal = function (emitter, type) {\\n if (hasHandler(emitter, type))\\n { this.events.push(arguments); }\\n};\\nDisplayUpdate.prototype.finish = function () {\\n var this$1 = this;\\n\\n for (var i = 0; i < this.events.length; i++)\\n { signal.apply(null, this$1.events[i]); }\\n};\\n\\nfunction maybeClipScrollbars(cm) {\\n var display = cm.display;\\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\\n display.heightForcer.style.height = scrollGap(cm) + \\\"px\\\";\\n display.sizer.style.marginBottom = -display.nativeBarWidth + \\\"px\\\";\\n display.sizer.style.borderRightWidth = scrollGap(cm) + \\\"px\\\";\\n display.scrollbarsClipped = true;\\n }\\n}\\n\\nfunction selectionSnapshot(cm) {\\n if (cm.hasFocus()) { return null }\\n var active = activeElt();\\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\\n var result = {activeElt: active};\\n if (window.getSelection) {\\n var sel = window.getSelection();\\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\\n result.anchorNode = sel.anchorNode;\\n result.anchorOffset = sel.anchorOffset;\\n result.focusNode = sel.focusNode;\\n result.focusOffset = sel.focusOffset;\\n }\\n }\\n return result\\n}\\n\\nfunction restoreSelection(snapshot) {\\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\\n snapshot.activeElt.focus();\\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\\n var sel = window.getSelection(), range$$1 = document.createRange();\\n range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\\n range$$1.collapse(false);\\n sel.removeAllRanges();\\n sel.addRange(range$$1);\\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\\n }\\n}\\n\\n// Does the actual updating of the line display. Bails out\\n// (returning false) when there is nothing to be done and forced is\\n// false.\\nfunction updateDisplayIfNeeded(cm, update) {\\n var display = cm.display, doc = cm.doc;\\n\\n if (update.editorIsHidden) {\\n resetView(cm);\\n return false\\n }\\n\\n // Bail out if the visible area is already rendered and nothing changed.\\n if (!update.force &&\\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\\n display.renderedView == display.view && countDirtyView(cm) == 0)\\n { return false }\\n\\n if (maybeUpdateLineNumberWidth(cm)) {\\n resetView(cm);\\n update.dims = getDimensions(cm);\\n }\\n\\n // Compute a suitable new viewport (from & to)\\n var end = doc.first + doc.size;\\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\\n if (sawCollapsedSpans) {\\n from = visualLineNo(cm.doc, from);\\n to = visualLineEndNo(cm.doc, to);\\n }\\n\\n var different = from != display.viewFrom || to != display.viewTo ||\\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\\n adjustView(cm, from, to);\\n\\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\\n // Position the mover div to align with the current scroll position\\n cm.display.mover.style.top = display.viewOffset + \\\"px\\\";\\n\\n var toUpdate = countDirtyView(cm);\\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\\n { return false }\\n\\n // For big changes, we hide the enclosing element during the\\n // update, since that speeds up the operations on most browsers.\\n var selSnapshot = selectionSnapshot(cm);\\n if (toUpdate > 4) { display.lineDiv.style.display = \\\"none\\\"; }\\n patchDisplay(cm, display.updateLineNumbers, update.dims);\\n if (toUpdate > 4) { display.lineDiv.style.display = \\\"\\\"; }\\n display.renderedView = display.view;\\n // There might have been a widget with a focused element that got\\n // hidden or updated, if so re-focus it.\\n restoreSelection(selSnapshot);\\n\\n // Prevent selection and cursors from interfering with the scroll\\n // width and height.\\n removeChildren(display.cursorDiv);\\n removeChildren(display.selectionDiv);\\n display.gutters.style.height = display.sizer.style.minHeight = 0;\\n\\n if (different) {\\n display.lastWrapHeight = update.wrapperHeight;\\n display.lastWrapWidth = update.wrapperWidth;\\n startWorker(cm, 400);\\n }\\n\\n display.updateLineNumbers = null;\\n\\n return true\\n}\\n\\nfunction postUpdateDisplay(cm, update) {\\n var viewport = update.viewport;\\n\\n for (var first = true;; first = false) {\\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\\n // Clip forced viewport to actual scrollable area.\\n if (viewport && viewport.top != null)\\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\\n // Updated line heights might result in the drawn area not\\n // actually covering the viewport. Keep looping until it does.\\n update.visible = visibleLines(cm.display, cm.doc, viewport);\\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\\n { break }\\n }\\n if (!updateDisplayIfNeeded(cm, update)) { break }\\n updateHeightsInViewport(cm);\\n var barMeasure = measureForScrollbars(cm);\\n updateSelection(cm);\\n updateScrollbars(cm, barMeasure);\\n setDocumentHeight(cm, barMeasure);\\n update.force = false;\\n }\\n\\n update.signal(cm, \\\"update\\\", cm);\\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\\n update.signal(cm, \\\"viewportChange\\\", cm, cm.display.viewFrom, cm.display.viewTo);\\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\\n }\\n}\\n\\nfunction updateDisplaySimple(cm, viewport) {\\n var update = new DisplayUpdate(cm, viewport);\\n if (updateDisplayIfNeeded(cm, update)) {\\n updateHeightsInViewport(cm);\\n postUpdateDisplay(cm, update);\\n var barMeasure = measureForScrollbars(cm);\\n updateSelection(cm);\\n updateScrollbars(cm, barMeasure);\\n setDocumentHeight(cm, barMeasure);\\n update.finish();\\n }\\n}\\n\\n// Sync the actual display DOM structure with display.view, removing\\n// nodes for lines that are no longer in view, and creating the ones\\n// that are not there yet, and updating the ones that are out of\\n// date.\\nfunction patchDisplay(cm, updateNumbersFrom, dims) {\\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\\n var container = display.lineDiv, cur = container.firstChild;\\n\\n function rm(node) {\\n var next = node.nextSibling;\\n // Works around a throw-scroll bug in OS X Webkit\\n if (webkit && mac && cm.display.currentWheelTarget == node)\\n { node.style.display = \\\"none\\\"; }\\n else\\n { node.parentNode.removeChild(node); }\\n return next\\n }\\n\\n var view = display.view, lineN = display.viewFrom;\\n // Loop over the elements in the view, syncing cur (the DOM nodes\\n // in display.lineDiv) with the view as we go.\\n for (var i = 0; i < view.length; i++) {\\n var lineView = view[i];\\n if (lineView.hidden) {\\n } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\\n var node = buildLineElement(cm, lineView, lineN, dims);\\n container.insertBefore(node, cur);\\n } else { // Already drawn\\n while (cur != lineView.node) { cur = rm(cur); }\\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\\n updateNumbersFrom <= lineN && lineView.lineNumber;\\n if (lineView.changes) {\\n if (indexOf(lineView.changes, \\\"gutter\\\") > -1) { updateNumber = false; }\\n updateLineForChanges(cm, lineView, lineN, dims);\\n }\\n if (updateNumber) {\\n removeChildren(lineView.lineNumber);\\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\\n }\\n cur = lineView.node.nextSibling;\\n }\\n lineN += lineView.size;\\n }\\n while (cur) { cur = rm(cur); }\\n}\\n\\nfunction updateGutterSpace(cm) {\\n var width = cm.display.gutters.offsetWidth;\\n cm.display.sizer.style.marginLeft = width + \\\"px\\\";\\n}\\n\\nfunction setDocumentHeight(cm, measure) {\\n cm.display.sizer.style.minHeight = measure.docHeight + \\\"px\\\";\\n cm.display.heightForcer.style.top = measure.docHeight + \\\"px\\\";\\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \\\"px\\\";\\n}\\n\\n// Rebuild the gutter elements, ensure the margin to the left of the\\n// code matches their width.\\nfunction updateGutters(cm) {\\n var gutters = cm.display.gutters, specs = cm.options.gutters;\\n removeChildren(gutters);\\n var i = 0;\\n for (; i < specs.length; ++i) {\\n var gutterClass = specs[i];\\n var gElt = gutters.appendChild(elt(\\\"div\\\", null, \\\"CodeMirror-gutter \\\" + gutterClass));\\n if (gutterClass == \\\"CodeMirror-linenumbers\\\") {\\n cm.display.lineGutter = gElt;\\n gElt.style.width = (cm.display.lineNumWidth || 1) + \\\"px\\\";\\n }\\n }\\n gutters.style.display = i ? \\\"\\\" : \\\"none\\\";\\n updateGutterSpace(cm);\\n}\\n\\n// Make sure the gutters options contains the element\\n// \\\"CodeMirror-linenumbers\\\" when the lineNumbers option is true.\\nfunction setGuttersForLineNumbers(options) {\\n var found = indexOf(options.gutters, \\\"CodeMirror-linenumbers\\\");\\n if (found == -1 && options.lineNumbers) {\\n options.gutters = options.gutters.concat([\\\"CodeMirror-linenumbers\\\"]);\\n } else if (found > -1 && !options.lineNumbers) {\\n options.gutters = options.gutters.slice(0);\\n options.gutters.splice(found, 1);\\n }\\n}\\n\\n// Since the delta values reported on mouse wheel events are\\n// unstandardized between browsers and even browser versions, and\\n// generally horribly unpredictable, this code starts by measuring\\n// the scroll effect that the first few mouse wheel events have,\\n// and, from that, detects the way it can convert deltas to pixel\\n// offsets afterwards.\\n//\\n// The reason we want to know the amount a wheel event will scroll\\n// is that it gives us a chance to update the display before the\\n// actual scrolling happens, reducing flickering.\\n\\nvar wheelSamples = 0;\\nvar wheelPixelsPerUnit = null;\\n// Fill in a browser-detected starting value on browsers where we\\n// know one. These don't have to be accurate -- the result of them\\n// being wrong would just be a slight flicker on the first wheel\\n// scroll (if it is large enough).\\nif (ie) { wheelPixelsPerUnit = -.53; }\\nelse if (gecko) { wheelPixelsPerUnit = 15; }\\nelse if (chrome) { wheelPixelsPerUnit = -.7; }\\nelse if (safari) { wheelPixelsPerUnit = -1/3; }\\n\\nfunction wheelEventDelta(e) {\\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\\n else if (dy == null) { dy = e.wheelDelta; }\\n return {x: dx, y: dy}\\n}\\nfunction wheelEventPixels(e) {\\n var delta = wheelEventDelta(e);\\n delta.x *= wheelPixelsPerUnit;\\n delta.y *= wheelPixelsPerUnit;\\n return delta\\n}\\n\\nfunction onScrollWheel(cm, e) {\\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\\n\\n var display = cm.display, scroll = display.scroller;\\n // Quit if there's nothing to scroll here\\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\\n if (!(dx && canScrollX || dy && canScrollY)) { return }\\n\\n // Webkit browsers on OS X abort momentum scrolls when the target\\n // of the scroll event is removed from the scrollable element.\\n // This hack (see related code in patchDisplay) makes sure the\\n // element is kept around.\\n if (dy && mac && webkit) {\\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\\n for (var i = 0; i < view.length; i++) {\\n if (view[i].node == cur) {\\n cm.display.currentWheelTarget = cur;\\n break outer\\n }\\n }\\n }\\n }\\n\\n // On some browsers, horizontal scrolling will cause redraws to\\n // happen before the gutter has been realigned, causing it to\\n // wriggle around in a most unseemly way. When we have an\\n // estimated pixels/delta value, we just handle horizontal\\n // scrolling entirely here. It'll be slightly off from native, but\\n // better than glitching out.\\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\\n if (dy && canScrollY)\\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\\n // Only prevent default scrolling if vertical scrolling is\\n // actually possible. Otherwise, it causes vertical scroll\\n // jitter on OSX trackpads when deltaX is small and deltaY\\n // is large (issue #3579)\\n if (!dy || (dy && canScrollY))\\n { e_preventDefault(e); }\\n display.wheelStartX = null; // Abort measurement, if in progress\\n return\\n }\\n\\n // 'Project' the visible viewport to cover the area that is being\\n // scrolled into view (if we know enough to estimate it).\\n if (dy && wheelPixelsPerUnit != null) {\\n var pixels = dy * wheelPixelsPerUnit;\\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\\n updateDisplaySimple(cm, {top: top, bottom: bot});\\n }\\n\\n if (wheelSamples < 20) {\\n if (display.wheelStartX == null) {\\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\\n display.wheelDX = dx; display.wheelDY = dy;\\n setTimeout(function () {\\n if (display.wheelStartX == null) { return }\\n var movedX = scroll.scrollLeft - display.wheelStartX;\\n var movedY = scroll.scrollTop - display.wheelStartY;\\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\\n (movedX && display.wheelDX && movedX / display.wheelDX);\\n display.wheelStartX = display.wheelStartY = null;\\n if (!sample) { return }\\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\\n ++wheelSamples;\\n }, 200);\\n } else {\\n display.wheelDX += dx; display.wheelDY += dy;\\n }\\n }\\n}\\n\\n// Selection objects are immutable. A new one is created every time\\n// the selection changes. A selection is one or more non-overlapping\\n// (and non-touching) ranges, sorted, and an integer that indicates\\n// which one is the primary selection (the one that's scrolled into\\n// view, that getCursor returns, etc).\\nvar Selection = function(ranges, primIndex) {\\n this.ranges = ranges;\\n this.primIndex = primIndex;\\n};\\n\\nSelection.prototype.primary = function () { return this.ranges[this.primIndex] };\\n\\nSelection.prototype.equals = function (other) {\\n var this$1 = this;\\n\\n if (other == this) { return true }\\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\\n for (var i = 0; i < this.ranges.length; i++) {\\n var here = this$1.ranges[i], there = other.ranges[i];\\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\\n }\\n return true\\n};\\n\\nSelection.prototype.deepCopy = function () {\\n var this$1 = this;\\n\\n var out = [];\\n for (var i = 0; i < this.ranges.length; i++)\\n { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\\n return new Selection(out, this.primIndex)\\n};\\n\\nSelection.prototype.somethingSelected = function () {\\n var this$1 = this;\\n\\n for (var i = 0; i < this.ranges.length; i++)\\n { if (!this$1.ranges[i].empty()) { return true } }\\n return false\\n};\\n\\nSelection.prototype.contains = function (pos, end) {\\n var this$1 = this;\\n\\n if (!end) { end = pos; }\\n for (var i = 0; i < this.ranges.length; i++) {\\n var range = this$1.ranges[i];\\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\\n { return i }\\n }\\n return -1\\n};\\n\\nvar Range = function(anchor, head) {\\n this.anchor = anchor; this.head = head;\\n};\\n\\nRange.prototype.from = function () { return minPos(this.anchor, this.head) };\\nRange.prototype.to = function () { return maxPos(this.anchor, this.head) };\\nRange.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\\n\\n// Take an unsorted, potentially overlapping set of ranges, and\\n// build a selection out of it. 'Consumes' ranges array (modifying\\n// it).\\nfunction normalizeSelection(ranges, primIndex) {\\n var prim = ranges[primIndex];\\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\\n primIndex = indexOf(ranges, prim);\\n for (var i = 1; i < ranges.length; i++) {\\n var cur = ranges[i], prev = ranges[i - 1];\\n if (cmp(prev.to(), cur.from()) >= 0) {\\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\\n if (i <= primIndex) { --primIndex; }\\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\\n }\\n }\\n return new Selection(ranges, primIndex)\\n}\\n\\nfunction simpleSelection(anchor, head) {\\n return new Selection([new Range(anchor, head || anchor)], 0)\\n}\\n\\n// Compute the position of the end of a change (its 'to' property\\n// refers to the pre-change end).\\nfunction changeEnd(change) {\\n if (!change.text) { return change.to }\\n return Pos(change.from.line + change.text.length - 1,\\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\\n}\\n\\n// Adjust a position to refer to the post-change position of the\\n// same text, or the end of the change if the change covers it.\\nfunction adjustForChange(pos, change) {\\n if (cmp(pos, change.from) < 0) { return pos }\\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\\n\\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\\n return Pos(line, ch)\\n}\\n\\nfunction computeSelAfterChange(doc, change) {\\n var out = [];\\n for (var i = 0; i < doc.sel.ranges.length; i++) {\\n var range = doc.sel.ranges[i];\\n out.push(new Range(adjustForChange(range.anchor, change),\\n adjustForChange(range.head, change)));\\n }\\n return normalizeSelection(out, doc.sel.primIndex)\\n}\\n\\nfunction offsetPos(pos, old, nw) {\\n if (pos.line == old.line)\\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\\n else\\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\\n}\\n\\n// Used by replaceSelections to allow moving the selection to the\\n// start or around the replaced test. Hint may be \\\"start\\\" or \\\"around\\\".\\nfunction computeReplacedSel(doc, changes, hint) {\\n var out = [];\\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\\n for (var i = 0; i < changes.length; i++) {\\n var change = changes[i];\\n var from = offsetPos(change.from, oldPrev, newPrev);\\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\\n oldPrev = change.to;\\n newPrev = to;\\n if (hint == \\\"around\\\") {\\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\\n out[i] = new Range(inv ? to : from, inv ? from : to);\\n } else {\\n out[i] = new Range(from, from);\\n }\\n }\\n return new Selection(out, doc.sel.primIndex)\\n}\\n\\n// Used to get the editor into a consistent state again when options change.\\n\\nfunction loadMode(cm) {\\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\\n resetModeState(cm);\\n}\\n\\nfunction resetModeState(cm) {\\n cm.doc.iter(function (line) {\\n if (line.stateAfter) { line.stateAfter = null; }\\n if (line.styles) { line.styles = null; }\\n });\\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\\n startWorker(cm, 100);\\n cm.state.modeGen++;\\n if (cm.curOp) { regChange(cm); }\\n}\\n\\n// DOCUMENT DATA STRUCTURE\\n\\n// By default, updates that start and end at the beginning of a line\\n// are treated specially, in order to make the association of line\\n// widgets and marker elements with the text behave more intuitive.\\nfunction isWholeLineUpdate(doc, change) {\\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \\\"\\\" &&\\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\\n}\\n\\n// Perform a change on the document data structure.\\nfunction updateDoc(doc, change, markedSpans, estimateHeight$$1) {\\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\\n function update(line, text, spans) {\\n updateLine(line, text, spans, estimateHeight$$1);\\n signalLater(line, \\\"change\\\", line, change);\\n }\\n function linesFor(start, end) {\\n var result = [];\\n for (var i = start; i < end; ++i)\\n { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\\n return result\\n }\\n\\n var from = change.from, to = change.to, text = change.text;\\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\\n\\n // Adjust the line structure\\n if (change.full) {\\n doc.insert(0, linesFor(0, text.length));\\n doc.remove(text.length, doc.size - text.length);\\n } else if (isWholeLineUpdate(doc, change)) {\\n // This is a whole-line replace. Treated specially to make\\n // sure line objects move the way they are supposed to.\\n var added = linesFor(0, text.length - 1);\\n update(lastLine, lastLine.text, lastSpans);\\n if (nlines) { doc.remove(from.line, nlines); }\\n if (added.length) { doc.insert(from.line, added); }\\n } else if (firstLine == lastLine) {\\n if (text.length == 1) {\\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\\n } else {\\n var added$1 = linesFor(1, text.length - 1);\\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\\n doc.insert(from.line + 1, added$1);\\n }\\n } else if (text.length == 1) {\\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\\n doc.remove(from.line + 1, nlines);\\n } else {\\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\\n var added$2 = linesFor(1, text.length - 1);\\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\\n doc.insert(from.line + 1, added$2);\\n }\\n\\n signalLater(doc, \\\"change\\\", doc, change);\\n}\\n\\n// Call f for all linked documents.\\nfunction linkedDocs(doc, f, sharedHistOnly) {\\n function propagate(doc, skip, sharedHist) {\\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\\n var rel = doc.linked[i];\\n if (rel.doc == skip) { continue }\\n var shared = sharedHist && rel.sharedHist;\\n if (sharedHistOnly && !shared) { continue }\\n f(rel.doc, shared);\\n propagate(rel.doc, doc, shared);\\n } }\\n }\\n propagate(doc, null, true);\\n}\\n\\n// Attach a document to an editor.\\nfunction attachDoc(cm, doc) {\\n if (doc.cm) { throw new Error(\\\"This document is already in use.\\\") }\\n cm.doc = doc;\\n doc.cm = cm;\\n estimateLineHeights(cm);\\n loadMode(cm);\\n setDirectionClass(cm);\\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\\n cm.options.mode = doc.modeOption;\\n regChange(cm);\\n}\\n\\nfunction setDirectionClass(cm) {\\n (cm.doc.direction == \\\"rtl\\\" ? addClass : rmClass)(cm.display.lineDiv, \\\"CodeMirror-rtl\\\");\\n}\\n\\nfunction directionChanged(cm) {\\n runInOp(cm, function () {\\n setDirectionClass(cm);\\n regChange(cm);\\n });\\n}\\n\\nfunction History(startGen) {\\n // Arrays of change events and selections. Doing something adds an\\n // event to done and clears undo. Undoing moves events from done\\n // to undone, redoing moves them in the other direction.\\n this.done = []; this.undone = [];\\n this.undoDepth = Infinity;\\n // Used to track when changes can be merged into a single undo\\n // event\\n this.lastModTime = this.lastSelTime = 0;\\n this.lastOp = this.lastSelOp = null;\\n this.lastOrigin = this.lastSelOrigin = null;\\n // Used by the isClean() method\\n this.generation = this.maxGeneration = startGen || 1;\\n}\\n\\n// Create a history change event from an updateDoc-style change\\n// object.\\nfunction historyChangeFromChange(doc, change) {\\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\\n return histChange\\n}\\n\\n// Pop all selection events off the end of a history array. Stop at\\n// a change event.\\nfunction clearSelectionEvents(array) {\\n while (array.length) {\\n var last = lst(array);\\n if (last.ranges) { array.pop(); }\\n else { break }\\n }\\n}\\n\\n// Find the top change event in the history. Pop off selection\\n// events that are in the way.\\nfunction lastChangeEvent(hist, force) {\\n if (force) {\\n clearSelectionEvents(hist.done);\\n return lst(hist.done)\\n } else if (hist.done.length && !lst(hist.done).ranges) {\\n return lst(hist.done)\\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\\n hist.done.pop();\\n return lst(hist.done)\\n }\\n}\\n\\n// Register a change in the history. Merges changes that are within\\n// a single operation, or are close together with an origin that\\n// allows merging (starting with \\\"+\\\") into a single event.\\nfunction addChangeToHistory(doc, change, selAfter, opId) {\\n var hist = doc.history;\\n hist.undone.length = 0;\\n var time = +new Date, cur;\\n var last;\\n\\n if ((hist.lastOp == opId ||\\n hist.lastOrigin == change.origin && change.origin &&\\n ((change.origin.charAt(0) == \\\"+\\\" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||\\n change.origin.charAt(0) == \\\"*\\\")) &&\\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\\n // Merge this change into the last event\\n last = lst(cur.changes);\\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\\n // Optimized case for simple insertion -- don't want to add\\n // new changesets for every character typed\\n last.to = changeEnd(change);\\n } else {\\n // Add new sub-event\\n cur.changes.push(historyChangeFromChange(doc, change));\\n }\\n } else {\\n // Can not be merged, start a new event.\\n var before = lst(hist.done);\\n if (!before || !before.ranges)\\n { pushSelectionToHistory(doc.sel, hist.done); }\\n cur = {changes: [historyChangeFromChange(doc, change)],\\n generation: hist.generation};\\n hist.done.push(cur);\\n while (hist.done.length > hist.undoDepth) {\\n hist.done.shift();\\n if (!hist.done[0].ranges) { hist.done.shift(); }\\n }\\n }\\n hist.done.push(selAfter);\\n hist.generation = ++hist.maxGeneration;\\n hist.lastModTime = hist.lastSelTime = time;\\n hist.lastOp = hist.lastSelOp = opId;\\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\\n\\n if (!last) { signal(doc, \\\"historyAdded\\\"); }\\n}\\n\\nfunction selectionEventCanBeMerged(doc, origin, prev, sel) {\\n var ch = origin.charAt(0);\\n return ch == \\\"*\\\" ||\\n ch == \\\"+\\\" &&\\n prev.ranges.length == sel.ranges.length &&\\n prev.somethingSelected() == sel.somethingSelected() &&\\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\\n}\\n\\n// Called whenever the selection changes, sets the new selection as\\n// the pending selection in the history, and pushes the old pending\\n// selection into the 'done' array when it was significantly\\n// different (in number of selected ranges, emptiness, or time).\\nfunction addSelectionToHistory(doc, sel, opId, options) {\\n var hist = doc.history, origin = options && options.origin;\\n\\n // A new event is started when the previous origin does not match\\n // the current, or the origins don't allow matching. Origins\\n // starting with * are always merged, those starting with + are\\n // merged when similar and close together in time.\\n if (opId == hist.lastSelOp ||\\n (origin && hist.lastSelOrigin == origin &&\\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\\n { hist.done[hist.done.length - 1] = sel; }\\n else\\n { pushSelectionToHistory(sel, hist.done); }\\n\\n hist.lastSelTime = +new Date;\\n hist.lastSelOrigin = origin;\\n hist.lastSelOp = opId;\\n if (options && options.clearRedo !== false)\\n { clearSelectionEvents(hist.undone); }\\n}\\n\\nfunction pushSelectionToHistory(sel, dest) {\\n var top = lst(dest);\\n if (!(top && top.ranges && top.equals(sel)))\\n { dest.push(sel); }\\n}\\n\\n// Used to store marked span information in the history.\\nfunction attachLocalSpans(doc, change, from, to) {\\n var existing = change[\\\"spans_\\\" + doc.id], n = 0;\\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\\n if (line.markedSpans)\\n { (existing || (existing = change[\\\"spans_\\\" + doc.id] = {}))[n] = line.markedSpans; }\\n ++n;\\n });\\n}\\n\\n// When un/re-doing restores text containing marked spans, those\\n// that have been explicitly cleared should not be restored.\\nfunction removeClearedSpans(spans) {\\n if (!spans) { return null }\\n var out;\\n for (var i = 0; i < spans.length; ++i) {\\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\\n else if (out) { out.push(spans[i]); }\\n }\\n return !out ? spans : out.length ? out : null\\n}\\n\\n// Retrieve and filter the old marked spans stored in a change event.\\nfunction getOldSpans(doc, change) {\\n var found = change[\\\"spans_\\\" + doc.id];\\n if (!found) { return null }\\n var nw = [];\\n for (var i = 0; i < change.text.length; ++i)\\n { nw.push(removeClearedSpans(found[i])); }\\n return nw\\n}\\n\\n// Used for un/re-doing changes from the history. Combines the\\n// result of computing the existing spans with the set of spans that\\n// existed in the history (so that deleting around a span and then\\n// undoing brings back the span).\\nfunction mergeOldSpans(doc, change) {\\n var old = getOldSpans(doc, change);\\n var stretched = stretchSpansOverChange(doc, change);\\n if (!old) { return stretched }\\n if (!stretched) { return old }\\n\\n for (var i = 0; i < old.length; ++i) {\\n var oldCur = old[i], stretchCur = stretched[i];\\n if (oldCur && stretchCur) {\\n spans: for (var j = 0; j < stretchCur.length; ++j) {\\n var span = stretchCur[j];\\n for (var k = 0; k < oldCur.length; ++k)\\n { if (oldCur[k].marker == span.marker) { continue spans } }\\n oldCur.push(span);\\n }\\n } else if (stretchCur) {\\n old[i] = stretchCur;\\n }\\n }\\n return old\\n}\\n\\n// Used both to provide a JSON-safe object in .getHistory, and, when\\n// detaching a document, to split the history in two\\nfunction copyHistoryArray(events, newGroup, instantiateSel) {\\n var copy = [];\\n for (var i = 0; i < events.length; ++i) {\\n var event = events[i];\\n if (event.ranges) {\\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\\n continue\\n }\\n var changes = event.changes, newChanges = [];\\n copy.push({changes: newChanges});\\n for (var j = 0; j < changes.length; ++j) {\\n var change = changes[j], m = (void 0);\\n newChanges.push({from: change.from, to: change.to, text: change.text});\\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\\\d+)$/)) {\\n if (indexOf(newGroup, Number(m[1])) > -1) {\\n lst(newChanges)[prop] = change[prop];\\n delete change[prop];\\n }\\n } } }\\n }\\n }\\n return copy\\n}\\n\\n// The 'scroll' parameter given to many of these indicated whether\\n// the new cursor position should be scrolled into view after\\n// modifying the selection.\\n\\n// If shift is held or the extend flag is set, extends a range to\\n// include a given position (and optionally a second position).\\n// Otherwise, simply returns the range between the given positions.\\n// Used for cursor motion and such.\\nfunction extendRange(range, head, other, extend) {\\n if (extend) {\\n var anchor = range.anchor;\\n if (other) {\\n var posBefore = cmp(head, anchor) < 0;\\n if (posBefore != (cmp(other, anchor) < 0)) {\\n anchor = head;\\n head = other;\\n } else if (posBefore != (cmp(head, other) < 0)) {\\n head = other;\\n }\\n }\\n return new Range(anchor, head)\\n } else {\\n return new Range(other || head, head)\\n }\\n}\\n\\n// Extend the primary selection range, discard the rest.\\nfunction extendSelection(doc, head, other, options, extend) {\\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\\n}\\n\\n// Extend all selections (pos is an array of selections with length\\n// equal the number of selections)\\nfunction extendSelections(doc, heads, options) {\\n var out = [];\\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\\n for (var i = 0; i < doc.sel.ranges.length; i++)\\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\\n var newSel = normalizeSelection(out, doc.sel.primIndex);\\n setSelection(doc, newSel, options);\\n}\\n\\n// Updates a single range in the selection.\\nfunction replaceOneSelection(doc, i, range, options) {\\n var ranges = doc.sel.ranges.slice(0);\\n ranges[i] = range;\\n setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);\\n}\\n\\n// Reset the selection to a single range.\\nfunction setSimpleSelection(doc, anchor, head, options) {\\n setSelection(doc, simpleSelection(anchor, head), options);\\n}\\n\\n// Give beforeSelectionChange handlers a change to influence a\\n// selection update.\\nfunction filterSelectionChange(doc, sel, options) {\\n var obj = {\\n ranges: sel.ranges,\\n update: function(ranges) {\\n var this$1 = this;\\n\\n this.ranges = [];\\n for (var i = 0; i < ranges.length; i++)\\n { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\\n clipPos(doc, ranges[i].head)); }\\n },\\n origin: options && options.origin\\n };\\n signal(doc, \\\"beforeSelectionChange\\\", doc, obj);\\n if (doc.cm) { signal(doc.cm, \\\"beforeSelectionChange\\\", doc.cm, obj); }\\n if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) }\\n else { return sel }\\n}\\n\\nfunction setSelectionReplaceHistory(doc, sel, options) {\\n var done = doc.history.done, last = lst(done);\\n if (last && last.ranges) {\\n done[done.length - 1] = sel;\\n setSelectionNoUndo(doc, sel, options);\\n } else {\\n setSelection(doc, sel, options);\\n }\\n}\\n\\n// Set a new selection.\\nfunction setSelection(doc, sel, options) {\\n setSelectionNoUndo(doc, sel, options);\\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\\n}\\n\\nfunction setSelectionNoUndo(doc, sel, options) {\\n if (hasHandler(doc, \\\"beforeSelectionChange\\\") || doc.cm && hasHandler(doc.cm, \\\"beforeSelectionChange\\\"))\\n { sel = filterSelectionChange(doc, sel, options); }\\n\\n var bias = options && options.bias ||\\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\\n\\n if (!(options && options.scroll === false) && doc.cm)\\n { ensureCursorVisible(doc.cm); }\\n}\\n\\nfunction setSelectionInner(doc, sel) {\\n if (sel.equals(doc.sel)) { return }\\n\\n doc.sel = sel;\\n\\n if (doc.cm) {\\n doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;\\n signalCursorActivity(doc.cm);\\n }\\n signalLater(doc, \\\"cursorActivity\\\", doc);\\n}\\n\\n// Verify that the selection does not partially select any atomic\\n// marked ranges.\\nfunction reCheckSelection(doc) {\\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\\n}\\n\\n// Return a selection that does not partially select any atomic\\n// ranges.\\nfunction skipAtomicInSelection(doc, sel, bias, mayClear) {\\n var out;\\n for (var i = 0; i < sel.ranges.length; i++) {\\n var range = sel.ranges[i];\\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\\n if (out || newAnchor != range.anchor || newHead != range.head) {\\n if (!out) { out = sel.ranges.slice(0, i); }\\n out[i] = new Range(newAnchor, newHead);\\n }\\n }\\n return out ? normalizeSelection(out, sel.primIndex) : sel\\n}\\n\\nfunction skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\\n var line = getLine(doc, pos.line);\\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\\n var sp = line.markedSpans[i], m = sp.marker;\\n if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\\n (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\\n if (mayClear) {\\n signal(m, \\\"beforeCursorEnter\\\");\\n if (m.explicitlyCleared) {\\n if (!line.markedSpans) { break }\\n else {--i; continue}\\n }\\n }\\n if (!m.atomic) { continue }\\n\\n if (oldPos) {\\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\\n if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\\n }\\n\\n var far = m.find(dir < 0 ? -1 : 1);\\n if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\\n }\\n } }\\n return pos\\n}\\n\\n// Ensure a given position is not inside an atomic range.\\nfunction skipAtomic(doc, pos, oldPos, bias, mayClear) {\\n var dir = bias || 1;\\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\\n if (!found) {\\n doc.cantEdit = true;\\n return Pos(doc.first, 0)\\n }\\n return found\\n}\\n\\nfunction movePos(doc, pos, dir, line) {\\n if (dir < 0 && pos.ch == 0) {\\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\\n else { return null }\\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\\n else { return null }\\n } else {\\n return new Pos(pos.line, pos.ch + dir)\\n }\\n}\\n\\nfunction selectAll(cm) {\\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\\n}\\n\\n// UPDATING\\n\\n// Allow \\\"beforeChange\\\" event handlers to influence a change\\nfunction filterChange(doc, change, update) {\\n var obj = {\\n canceled: false,\\n from: change.from,\\n to: change.to,\\n text: change.text,\\n origin: change.origin,\\n cancel: function () { return obj.canceled = true; }\\n };\\n if (update) { obj.update = function (from, to, text, origin) {\\n if (from) { obj.from = clipPos(doc, from); }\\n if (to) { obj.to = clipPos(doc, to); }\\n if (text) { obj.text = text; }\\n if (origin !== undefined) { obj.origin = origin; }\\n }; }\\n signal(doc, \\\"beforeChange\\\", doc, obj);\\n if (doc.cm) { signal(doc.cm, \\\"beforeChange\\\", doc.cm, obj); }\\n\\n if (obj.canceled) { return null }\\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\\n}\\n\\n// Apply a change to a document, and add it to the document's\\n// history, and propagating it to all linked documents.\\nfunction makeChange(doc, change, ignoreReadOnly) {\\n if (doc.cm) {\\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\\n if (doc.cm.state.suppressEdits) { return }\\n }\\n\\n if (hasHandler(doc, \\\"beforeChange\\\") || doc.cm && hasHandler(doc.cm, \\\"beforeChange\\\")) {\\n change = filterChange(doc, change, true);\\n if (!change) { return }\\n }\\n\\n // Possibly split or suppress the update based on the presence\\n // of read-only spans in its range.\\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\\n if (split) {\\n for (var i = split.length - 1; i >= 0; --i)\\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\\\"\\\"] : change.text}); }\\n } else {\\n makeChangeInner(doc, change);\\n }\\n}\\n\\nfunction makeChangeInner(doc, change) {\\n if (change.text.length == 1 && change.text[0] == \\\"\\\" && cmp(change.from, change.to) == 0) { return }\\n var selAfter = computeSelAfterChange(doc, change);\\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\\n\\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\\n var rebased = [];\\n\\n linkedDocs(doc, function (doc, sharedHist) {\\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\\n rebaseHist(doc.history, change);\\n rebased.push(doc.history);\\n }\\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\\n });\\n}\\n\\n// Revert a change stored in a document's history.\\nfunction makeChangeFromHistory(doc, type, allowSelectionOnly) {\\n if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) { return }\\n\\n var hist = doc.history, event, selAfter = doc.sel;\\n var source = type == \\\"undo\\\" ? hist.done : hist.undone, dest = type == \\\"undo\\\" ? hist.undone : hist.done;\\n\\n // Verify that there is a useable event (so that ctrl-z won't\\n // needlessly clear selection events)\\n var i = 0;\\n for (; i < source.length; i++) {\\n event = source[i];\\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\\n { break }\\n }\\n if (i == source.length) { return }\\n hist.lastOrigin = hist.lastSelOrigin = null;\\n\\n for (;;) {\\n event = source.pop();\\n if (event.ranges) {\\n pushSelectionToHistory(event, dest);\\n if (allowSelectionOnly && !event.equals(doc.sel)) {\\n setSelection(doc, event, {clearRedo: false});\\n return\\n }\\n selAfter = event;\\n }\\n else { break }\\n }\\n\\n // Build up a reverse change object to add to the opposite history\\n // stack (redo when undoing, and vice versa).\\n var antiChanges = [];\\n pushSelectionToHistory(selAfter, dest);\\n dest.push({changes: antiChanges, generation: hist.generation});\\n hist.generation = event.generation || ++hist.maxGeneration;\\n\\n var filter = hasHandler(doc, \\\"beforeChange\\\") || doc.cm && hasHandler(doc.cm, \\\"beforeChange\\\");\\n\\n var loop = function ( i ) {\\n var change = event.changes[i];\\n change.origin = type;\\n if (filter && !filterChange(doc, change, false)) {\\n source.length = 0;\\n return {}\\n }\\n\\n antiChanges.push(historyChangeFromChange(doc, change));\\n\\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\\n var rebased = [];\\n\\n // Propagate to the linked documents\\n linkedDocs(doc, function (doc, sharedHist) {\\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\\n rebaseHist(doc.history, change);\\n rebased.push(doc.history);\\n }\\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\\n });\\n };\\n\\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\\n var returned = loop( i$1 );\\n\\n if ( returned ) return returned.v;\\n }\\n}\\n\\n// Sub-views need their line numbers shifted when text is added\\n// above or below them in the parent document.\\nfunction shiftDoc(doc, distance) {\\n if (distance == 0) { return }\\n doc.first += distance;\\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\\n Pos(range.anchor.line + distance, range.anchor.ch),\\n Pos(range.head.line + distance, range.head.ch)\\n ); }), doc.sel.primIndex);\\n if (doc.cm) {\\n regChange(doc.cm, doc.first, doc.first - distance, distance);\\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\\n { regLineChange(doc.cm, l, \\\"gutter\\\"); }\\n }\\n}\\n\\n// More lower-level change function, handling only a single document\\n// (not linked ones).\\nfunction makeChangeSingleDoc(doc, change, selAfter, spans) {\\n if (doc.cm && !doc.cm.curOp)\\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\\n\\n if (change.to.line < doc.first) {\\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\\n return\\n }\\n if (change.from.line > doc.lastLine()) { return }\\n\\n // Clip the change to the size of this doc\\n if (change.from.line < doc.first) {\\n var shift = change.text.length - 1 - (doc.first - change.from.line);\\n shiftDoc(doc, shift);\\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\\n text: [lst(change.text)], origin: change.origin};\\n }\\n var last = doc.lastLine();\\n if (change.to.line > last) {\\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\\n text: [change.text[0]], origin: change.origin};\\n }\\n\\n change.removed = getBetween(doc, change.from, change.to);\\n\\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\\n else { updateDoc(doc, change, spans); }\\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\\n}\\n\\n// Handle the interaction of a change to a document with the editor\\n// that this document is part of.\\nfunction makeChangeSingleDocInEditor(cm, change, spans) {\\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\\n\\n var recomputeMaxLength = false, checkWidthStart = from.line;\\n if (!cm.options.lineWrapping) {\\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\\n doc.iter(checkWidthStart, to.line + 1, function (line) {\\n if (line == display.maxLine) {\\n recomputeMaxLength = true;\\n return true\\n }\\n });\\n }\\n\\n if (doc.sel.contains(change.from, change.to) > -1)\\n { signalCursorActivity(cm); }\\n\\n updateDoc(doc, change, spans, estimateHeight(cm));\\n\\n if (!cm.options.lineWrapping) {\\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\\n var len = lineLength(line);\\n if (len > display.maxLineLength) {\\n display.maxLine = line;\\n display.maxLineLength = len;\\n display.maxLineChanged = true;\\n recomputeMaxLength = false;\\n }\\n });\\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\\n }\\n\\n retreatFrontier(doc, from.line);\\n startWorker(cm, 400);\\n\\n var lendiff = change.text.length - (to.line - from.line) - 1;\\n // Remember that these lines changed, for updating the display\\n if (change.full)\\n { regChange(cm); }\\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\\n { regLineChange(cm, from.line, \\\"text\\\"); }\\n else\\n { regChange(cm, from.line, to.line + 1, lendiff); }\\n\\n var changesHandler = hasHandler(cm, \\\"changes\\\"), changeHandler = hasHandler(cm, \\\"change\\\");\\n if (changeHandler || changesHandler) {\\n var obj = {\\n from: from, to: to,\\n text: change.text,\\n removed: change.removed,\\n origin: change.origin\\n };\\n if (changeHandler) { signalLater(cm, \\\"change\\\", cm, obj); }\\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\\n }\\n cm.display.selForContextMenu = null;\\n}\\n\\nfunction replaceRange(doc, code, from, to, origin) {\\n if (!to) { to = from; }\\n if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }\\n if (typeof code == \\\"string\\\") { code = doc.splitLines(code); }\\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\\n}\\n\\n// Rebasing/resetting history to deal with externally-sourced changes\\n\\nfunction rebaseHistSelSingle(pos, from, to, diff) {\\n if (to < pos.line) {\\n pos.line += diff;\\n } else if (from < pos.line) {\\n pos.line = from;\\n pos.ch = 0;\\n }\\n}\\n\\n// Tries to rebase an array of history events given a change in the\\n// document. If the change touches the same lines as the event, the\\n// event, and everything 'behind' it, is discarded. If the change is\\n// before the event, the event's positions are updated. Uses a\\n// copy-on-write scheme for the positions, to avoid having to\\n// reallocate them all on every rebase, but also avoid problems with\\n// shared position objects being unsafely updated.\\nfunction rebaseHistArray(array, from, to, diff) {\\n for (var i = 0; i < array.length; ++i) {\\n var sub = array[i], ok = true;\\n if (sub.ranges) {\\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\\n for (var j = 0; j < sub.ranges.length; j++) {\\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\\n }\\n continue\\n }\\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\\n var cur = sub.changes[j$1];\\n if (to < cur.from.line) {\\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\\n } else if (from <= cur.to.line) {\\n ok = false;\\n break\\n }\\n }\\n if (!ok) {\\n array.splice(0, i + 1);\\n i = 0;\\n }\\n }\\n}\\n\\nfunction rebaseHist(hist, change) {\\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\\n rebaseHistArray(hist.done, from, to, diff);\\n rebaseHistArray(hist.undone, from, to, diff);\\n}\\n\\n// Utility for applying a change to a line by handle or number,\\n// returning the number and optionally registering the line as\\n// changed.\\nfunction changeLine(doc, handle, changeType, op) {\\n var no = handle, line = handle;\\n if (typeof handle == \\\"number\\\") { line = getLine(doc, clipLine(doc, handle)); }\\n else { no = lineNo(handle); }\\n if (no == null) { return null }\\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\\n return line\\n}\\n\\n// The document is represented as a BTree consisting of leaves, with\\n// chunk of lines in them, and branches, with up to ten leaves or\\n// other branch nodes below them. The top node is always a branch\\n// node, and is the document object itself (meaning it has\\n// additional methods and properties).\\n//\\n// All nodes have parent links. The tree is used both to go from\\n// line numbers to line objects, and to go from objects to numbers.\\n// It also indexes by height, and is used to convert between height\\n// and line object, and to find the total height of the document.\\n//\\n// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\\n\\nfunction LeafChunk(lines) {\\n var this$1 = this;\\n\\n this.lines = lines;\\n this.parent = null;\\n var height = 0;\\n for (var i = 0; i < lines.length; ++i) {\\n lines[i].parent = this$1;\\n height += lines[i].height;\\n }\\n this.height = height;\\n}\\n\\nLeafChunk.prototype = {\\n chunkSize: function chunkSize() { return this.lines.length },\\n\\n // Remove the n lines at offset 'at'.\\n removeInner: function removeInner(at, n) {\\n var this$1 = this;\\n\\n for (var i = at, e = at + n; i < e; ++i) {\\n var line = this$1.lines[i];\\n this$1.height -= line.height;\\n cleanUpLine(line);\\n signalLater(line, \\\"delete\\\");\\n }\\n this.lines.splice(at, n);\\n },\\n\\n // Helper used to collapse a small branch into a single leaf.\\n collapse: function collapse(lines) {\\n lines.push.apply(lines, this.lines);\\n },\\n\\n // Insert the given array of lines at offset 'at', count them as\\n // having the given height.\\n insertInner: function insertInner(at, lines, height) {\\n var this$1 = this;\\n\\n this.height += height;\\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\\n },\\n\\n // Used to iterate over a part of the tree.\\n iterN: function iterN(at, n, op) {\\n var this$1 = this;\\n\\n for (var e = at + n; at < e; ++at)\\n { if (op(this$1.lines[at])) { return true } }\\n }\\n};\\n\\nfunction BranchChunk(children) {\\n var this$1 = this;\\n\\n this.children = children;\\n var size = 0, height = 0;\\n for (var i = 0; i < children.length; ++i) {\\n var ch = children[i];\\n size += ch.chunkSize(); height += ch.height;\\n ch.parent = this$1;\\n }\\n this.size = size;\\n this.height = height;\\n this.parent = null;\\n}\\n\\nBranchChunk.prototype = {\\n chunkSize: function chunkSize() { return this.size },\\n\\n removeInner: function removeInner(at, n) {\\n var this$1 = this;\\n\\n this.size -= n;\\n for (var i = 0; i < this.children.length; ++i) {\\n var child = this$1.children[i], sz = child.chunkSize();\\n if (at < sz) {\\n var rm = Math.min(n, sz - at), oldHeight = child.height;\\n child.removeInner(at, rm);\\n this$1.height -= oldHeight - child.height;\\n if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\\n if ((n -= rm) == 0) { break }\\n at = 0;\\n } else { at -= sz; }\\n }\\n // If the result is smaller than 25 lines, ensure that it is a\\n // single leaf node.\\n if (this.size - n < 25 &&\\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\\n var lines = [];\\n this.collapse(lines);\\n this.children = [new LeafChunk(lines)];\\n this.children[0].parent = this;\\n }\\n },\\n\\n collapse: function collapse(lines) {\\n var this$1 = this;\\n\\n for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\\n },\\n\\n insertInner: function insertInner(at, lines, height) {\\n var this$1 = this;\\n\\n this.size += lines.length;\\n this.height += height;\\n for (var i = 0; i < this.children.length; ++i) {\\n var child = this$1.children[i], sz = child.chunkSize();\\n if (at <= sz) {\\n child.insertInner(at, lines, height);\\n if (child.lines && child.lines.length > 50) {\\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\\n var remaining = child.lines.length % 25 + 25;\\n for (var pos = remaining; pos < child.lines.length;) {\\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\\n child.height -= leaf.height;\\n this$1.children.splice(++i, 0, leaf);\\n leaf.parent = this$1;\\n }\\n child.lines = child.lines.slice(0, remaining);\\n this$1.maybeSpill();\\n }\\n break\\n }\\n at -= sz;\\n }\\n },\\n\\n // When a node has grown, check whether it should be split.\\n maybeSpill: function maybeSpill() {\\n if (this.children.length <= 10) { return }\\n var me = this;\\n do {\\n var spilled = me.children.splice(me.children.length - 5, 5);\\n var sibling = new BranchChunk(spilled);\\n if (!me.parent) { // Become the parent node\\n var copy = new BranchChunk(me.children);\\n copy.parent = me;\\n me.children = [copy, sibling];\\n me = copy;\\n } else {\\n me.size -= sibling.size;\\n me.height -= sibling.height;\\n var myIndex = indexOf(me.parent.children, me);\\n me.parent.children.splice(myIndex + 1, 0, sibling);\\n }\\n sibling.parent = me.parent;\\n } while (me.children.length > 10)\\n me.parent.maybeSpill();\\n },\\n\\n iterN: function iterN(at, n, op) {\\n var this$1 = this;\\n\\n for (var i = 0; i < this.children.length; ++i) {\\n var child = this$1.children[i], sz = child.chunkSize();\\n if (at < sz) {\\n var used = Math.min(n, sz - at);\\n if (child.iterN(at, used, op)) { return true }\\n if ((n -= used) == 0) { break }\\n at = 0;\\n } else { at -= sz; }\\n }\\n }\\n};\\n\\n// Line widgets are block elements displayed above or below a line.\\n\\nvar LineWidget = function(doc, node, options) {\\n var this$1 = this;\\n\\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\\n { this$1[opt] = options[opt]; } } }\\n this.doc = doc;\\n this.node = node;\\n};\\n\\nLineWidget.prototype.clear = function () {\\n var this$1 = this;\\n\\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\\n if (no == null || !ws) { return }\\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\\n if (!ws.length) { line.widgets = null; }\\n var height = widgetHeight(this);\\n updateLineHeight(line, Math.max(0, line.height - height));\\n if (cm) {\\n runInOp(cm, function () {\\n adjustScrollWhenAboveVisible(cm, line, -height);\\n regLineChange(cm, no, \\\"widget\\\");\\n });\\n signalLater(cm, \\\"lineWidgetCleared\\\", cm, this, no);\\n }\\n};\\n\\nLineWidget.prototype.changed = function () {\\n var this$1 = this;\\n\\n var oldH = this.height, cm = this.doc.cm, line = this.line;\\n this.height = null;\\n var diff = widgetHeight(this) - oldH;\\n if (!diff) { return }\\n updateLineHeight(line, line.height + diff);\\n if (cm) {\\n runInOp(cm, function () {\\n cm.curOp.forceUpdate = true;\\n adjustScrollWhenAboveVisible(cm, line, diff);\\n signalLater(cm, \\\"lineWidgetChanged\\\", cm, this$1, lineNo(line));\\n });\\n }\\n};\\neventMixin(LineWidget);\\n\\nfunction adjustScrollWhenAboveVisible(cm, line, diff) {\\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\\n { addToScrollTop(cm, diff); }\\n}\\n\\nfunction addLineWidget(doc, handle, node, options) {\\n var widget = new LineWidget(doc, node, options);\\n var cm = doc.cm;\\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\\n changeLine(doc, handle, \\\"widget\\\", function (line) {\\n var widgets = line.widgets || (line.widgets = []);\\n if (widget.insertAt == null) { widgets.push(widget); }\\n else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\\n widget.line = line;\\n if (cm && !lineIsHidden(doc, line)) {\\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\\n updateLineHeight(line, line.height + widgetHeight(widget));\\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\\n cm.curOp.forceUpdate = true;\\n }\\n return true\\n });\\n signalLater(cm, \\\"lineWidgetAdded\\\", cm, widget, typeof handle == \\\"number\\\" ? handle : lineNo(handle));\\n return widget\\n}\\n\\n// TEXTMARKERS\\n\\n// Created with markText and setBookmark methods. A TextMarker is a\\n// handle that can be used to clear or find a marked position in the\\n// document. Line objects hold arrays (markedSpans) containing\\n// {from, to, marker} object pointing to such marker objects, and\\n// indicating that such a marker is present on that line. Multiple\\n// lines may point to the same marker when it spans across lines.\\n// The spans will have null for their from/to properties when the\\n// marker continues beyond the start/end of the line. Markers have\\n// links back to the lines they currently touch.\\n\\n// Collapsed markers have unique ids, in order to be able to order\\n// them, which is needed for uniquely determining an outer marker\\n// when they overlap (they may nest, but not partially overlap).\\nvar nextMarkerId = 0;\\n\\nvar TextMarker = function(doc, type) {\\n this.lines = [];\\n this.type = type;\\n this.doc = doc;\\n this.id = ++nextMarkerId;\\n};\\n\\n// Clear the marker.\\nTextMarker.prototype.clear = function () {\\n var this$1 = this;\\n\\n if (this.explicitlyCleared) { return }\\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\\n if (withOp) { startOperation(cm); }\\n if (hasHandler(this, \\\"clear\\\")) {\\n var found = this.find();\\n if (found) { signalLater(this, \\\"clear\\\", found.from, found.to); }\\n }\\n var min = null, max = null;\\n for (var i = 0; i < this.lines.length; ++i) {\\n var line = this$1.lines[i];\\n var span = getMarkedSpanFor(line.markedSpans, this$1);\\n if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \\\"text\\\"); }\\n else if (cm) {\\n if (span.to != null) { max = lineNo(line); }\\n if (span.from != null) { min = lineNo(line); }\\n }\\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\\n if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\\n { updateLineHeight(line, textHeight(cm.display)); }\\n }\\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\\n var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\\n if (len > cm.display.maxLineLength) {\\n cm.display.maxLine = visual;\\n cm.display.maxLineLength = len;\\n cm.display.maxLineChanged = true;\\n }\\n } }\\n\\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\\n this.lines.length = 0;\\n this.explicitlyCleared = true;\\n if (this.atomic && this.doc.cantEdit) {\\n this.doc.cantEdit = false;\\n if (cm) { reCheckSelection(cm.doc); }\\n }\\n if (cm) { signalLater(cm, \\\"markerCleared\\\", cm, this, min, max); }\\n if (withOp) { endOperation(cm); }\\n if (this.parent) { this.parent.clear(); }\\n};\\n\\n// Find the position of the marker in the document. Returns a {from,\\n// to} object by default. Side can be passed to get a specific side\\n// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\\n// Pos objects returned contain a line object, rather than a line\\n// number (used to prevent looking up the same line twice).\\nTextMarker.prototype.find = function (side, lineObj) {\\n var this$1 = this;\\n\\n if (side == null && this.type == \\\"bookmark\\\") { side = 1; }\\n var from, to;\\n for (var i = 0; i < this.lines.length; ++i) {\\n var line = this$1.lines[i];\\n var span = getMarkedSpanFor(line.markedSpans, this$1);\\n if (span.from != null) {\\n from = Pos(lineObj ? line : lineNo(line), span.from);\\n if (side == -1) { return from }\\n }\\n if (span.to != null) {\\n to = Pos(lineObj ? line : lineNo(line), span.to);\\n if (side == 1) { return to }\\n }\\n }\\n return from && {from: from, to: to}\\n};\\n\\n// Signals that the marker's widget changed, and surrounding layout\\n// should be recomputed.\\nTextMarker.prototype.changed = function () {\\n var this$1 = this;\\n\\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\\n if (!pos || !cm) { return }\\n runInOp(cm, function () {\\n var line = pos.line, lineN = lineNo(pos.line);\\n var view = findViewForLine(cm, lineN);\\n if (view) {\\n clearLineMeasurementCacheFor(view);\\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\\n }\\n cm.curOp.updateMaxLine = true;\\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\\n var oldHeight = widget.height;\\n widget.height = null;\\n var dHeight = widgetHeight(widget) - oldHeight;\\n if (dHeight)\\n { updateLineHeight(line, line.height + dHeight); }\\n }\\n signalLater(cm, \\\"markerChanged\\\", cm, this$1);\\n });\\n};\\n\\nTextMarker.prototype.attachLine = function (line) {\\n if (!this.lines.length && this.doc.cm) {\\n var op = this.doc.cm.curOp;\\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\\n }\\n this.lines.push(line);\\n};\\n\\nTextMarker.prototype.detachLine = function (line) {\\n this.lines.splice(indexOf(this.lines, line), 1);\\n if (!this.lines.length && this.doc.cm) {\\n var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\\n }\\n};\\neventMixin(TextMarker);\\n\\n// Create a marker, wire it up to the right lines, and\\nfunction markText(doc, from, to, options, type) {\\n // Shared markers (across linked documents) are handled separately\\n // (markTextShared will call out to this again, once per\\n // document).\\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\\n // Ensure we are in an operation.\\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\\n\\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\\n if (options) { copyObj(options, marker, false); }\\n // Don't connect empty markers unless clearWhenEmpty is false\\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\\n { return marker }\\n if (marker.replacedWith) {\\n // Showing up as a widget implies collapsed (widget replaces text)\\n marker.collapsed = true;\\n marker.widgetNode = eltP(\\\"span\\\", [marker.replacedWith], \\\"CodeMirror-widget\\\");\\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\\\"cm-ignore-events\\\", \\\"true\\\"); }\\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\\n }\\n if (marker.collapsed) {\\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\\n { throw new Error(\\\"Inserting collapsed marker partially overlapping an existing one\\\") }\\n seeCollapsedSpans();\\n }\\n\\n if (marker.addToHistory)\\n { addChangeToHistory(doc, {from: from, to: to, origin: \\\"markText\\\"}, doc.sel, NaN); }\\n\\n var curLine = from.line, cm = doc.cm, updateMaxLine;\\n doc.iter(curLine, to.line + 1, function (line) {\\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\\n { updateMaxLine = true; }\\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\\n addMarkedSpan(line, new MarkedSpan(marker,\\n curLine == from.line ? from.ch : null,\\n curLine == to.line ? to.ch : null));\\n ++curLine;\\n });\\n // lineIsHidden depends on the presence of the spans, so needs a second pass\\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\\n }); }\\n\\n if (marker.clearOnEnter) { on(marker, \\\"beforeCursorEnter\\\", function () { return marker.clear(); }); }\\n\\n if (marker.readOnly) {\\n seeReadOnlySpans();\\n if (doc.history.done.length || doc.history.undone.length)\\n { doc.clearHistory(); }\\n }\\n if (marker.collapsed) {\\n marker.id = ++nextMarkerId;\\n marker.atomic = true;\\n }\\n if (cm) {\\n // Sync editor state\\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\\n if (marker.collapsed)\\n { regChange(cm, from.line, to.line + 1); }\\n else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css)\\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \\\"text\\\"); } }\\n if (marker.atomic) { reCheckSelection(cm.doc); }\\n signalLater(cm, \\\"markerAdded\\\", cm, marker);\\n }\\n return marker\\n}\\n\\n// SHARED TEXTMARKERS\\n\\n// A shared marker spans multiple linked documents. It is\\n// implemented as a meta-marker-object controlling multiple normal\\n// markers.\\nvar SharedTextMarker = function(markers, primary) {\\n var this$1 = this;\\n\\n this.markers = markers;\\n this.primary = primary;\\n for (var i = 0; i < markers.length; ++i)\\n { markers[i].parent = this$1; }\\n};\\n\\nSharedTextMarker.prototype.clear = function () {\\n var this$1 = this;\\n\\n if (this.explicitlyCleared) { return }\\n this.explicitlyCleared = true;\\n for (var i = 0; i < this.markers.length; ++i)\\n { this$1.markers[i].clear(); }\\n signalLater(this, \\\"clear\\\");\\n};\\n\\nSharedTextMarker.prototype.find = function (side, lineObj) {\\n return this.primary.find(side, lineObj)\\n};\\neventMixin(SharedTextMarker);\\n\\nfunction markTextShared(doc, from, to, options, type) {\\n options = copyObj(options);\\n options.shared = false;\\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\\n var widget = options.widgetNode;\\n linkedDocs(doc, function (doc) {\\n if (widget) { options.widgetNode = widget.cloneNode(true); }\\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\\n for (var i = 0; i < doc.linked.length; ++i)\\n { if (doc.linked[i].isParent) { return } }\\n primary = lst(markers);\\n });\\n return new SharedTextMarker(markers, primary)\\n}\\n\\nfunction findSharedMarkers(doc) {\\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\\n}\\n\\nfunction copySharedMarkers(doc, markers) {\\n for (var i = 0; i < markers.length; i++) {\\n var marker = markers[i], pos = marker.find();\\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\\n if (cmp(mFrom, mTo)) {\\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\\n marker.markers.push(subMark);\\n subMark.parent = marker;\\n }\\n }\\n}\\n\\nfunction detachSharedMarkers(markers) {\\n var loop = function ( i ) {\\n var marker = markers[i], linked = [marker.primary.doc];\\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\\n for (var j = 0; j < marker.markers.length; j++) {\\n var subMarker = marker.markers[j];\\n if (indexOf(linked, subMarker.doc) == -1) {\\n subMarker.parent = null;\\n marker.markers.splice(j--, 1);\\n }\\n }\\n };\\n\\n for (var i = 0; i < markers.length; i++) loop( i );\\n}\\n\\nvar nextDocId = 0;\\nvar Doc = function(text, mode, firstLine, lineSep, direction) {\\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\\n if (firstLine == null) { firstLine = 0; }\\n\\n BranchChunk.call(this, [new LeafChunk([new Line(\\\"\\\", null)])]);\\n this.first = firstLine;\\n this.scrollTop = this.scrollLeft = 0;\\n this.cantEdit = false;\\n this.cleanGeneration = 1;\\n this.modeFrontier = this.highlightFrontier = firstLine;\\n var start = Pos(firstLine, 0);\\n this.sel = simpleSelection(start);\\n this.history = new History(null);\\n this.id = ++nextDocId;\\n this.modeOption = mode;\\n this.lineSep = lineSep;\\n this.direction = (direction == \\\"rtl\\\") ? \\\"rtl\\\" : \\\"ltr\\\";\\n this.extend = false;\\n\\n if (typeof text == \\\"string\\\") { text = this.splitLines(text); }\\n updateDoc(this, {from: start, to: start, text: text});\\n setSelection(this, simpleSelection(start), sel_dontScroll);\\n};\\n\\nDoc.prototype = createObj(BranchChunk.prototype, {\\n constructor: Doc,\\n // Iterate over the document. Supports two forms -- with only one\\n // argument, it calls that for each line in the document. With\\n // three, it iterates over the range given by the first two (with\\n // the second being non-inclusive).\\n iter: function(from, to, op) {\\n if (op) { this.iterN(from - this.first, to - from, op); }\\n else { this.iterN(this.first, this.first + this.size, from); }\\n },\\n\\n // Non-public interface for adding and removing lines.\\n insert: function(at, lines) {\\n var height = 0;\\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\\n this.insertInner(at - this.first, lines, height);\\n },\\n remove: function(at, n) { this.removeInner(at - this.first, n); },\\n\\n // From here, the methods are part of the public interface. Most\\n // are also available from CodeMirror (editor) instances.\\n\\n getValue: function(lineSep) {\\n var lines = getLines(this, this.first, this.first + this.size);\\n if (lineSep === false) { return lines }\\n return lines.join(lineSep || this.lineSeparator())\\n },\\n setValue: docMethodOp(function(code) {\\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\\n text: this.splitLines(code), origin: \\\"setValue\\\", full: true}, true);\\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\\n setSelection(this, simpleSelection(top), sel_dontScroll);\\n }),\\n replaceRange: function(code, from, to, origin) {\\n from = clipPos(this, from);\\n to = to ? clipPos(this, to) : from;\\n replaceRange(this, code, from, to, origin);\\n },\\n getRange: function(from, to, lineSep) {\\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\\n if (lineSep === false) { return lines }\\n return lines.join(lineSep || this.lineSeparator())\\n },\\n\\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\\n\\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\\n getLineNumber: function(line) {return lineNo(line)},\\n\\n getLineHandleVisualStart: function(line) {\\n if (typeof line == \\\"number\\\") { line = getLine(this, line); }\\n return visualLine(line)\\n },\\n\\n lineCount: function() {return this.size},\\n firstLine: function() {return this.first},\\n lastLine: function() {return this.first + this.size - 1},\\n\\n clipPos: function(pos) {return clipPos(this, pos)},\\n\\n getCursor: function(start) {\\n var range$$1 = this.sel.primary(), pos;\\n if (start == null || start == \\\"head\\\") { pos = range$$1.head; }\\n else if (start == \\\"anchor\\\") { pos = range$$1.anchor; }\\n else if (start == \\\"end\\\" || start == \\\"to\\\" || start === false) { pos = range$$1.to(); }\\n else { pos = range$$1.from(); }\\n return pos\\n },\\n listSelections: function() { return this.sel.ranges },\\n somethingSelected: function() {return this.sel.somethingSelected()},\\n\\n setCursor: docMethodOp(function(line, ch, options) {\\n setSimpleSelection(this, clipPos(this, typeof line == \\\"number\\\" ? Pos(line, ch || 0) : line), null, options);\\n }),\\n setSelection: docMethodOp(function(anchor, head, options) {\\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\\n }),\\n extendSelection: docMethodOp(function(head, other, options) {\\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\\n }),\\n extendSelections: docMethodOp(function(heads, options) {\\n extendSelections(this, clipPosArray(this, heads), options);\\n }),\\n extendSelectionsBy: docMethodOp(function(f, options) {\\n var heads = map(this.sel.ranges, f);\\n extendSelections(this, clipPosArray(this, heads), options);\\n }),\\n setSelections: docMethodOp(function(ranges, primary, options) {\\n var this$1 = this;\\n\\n if (!ranges.length) { return }\\n var out = [];\\n for (var i = 0; i < ranges.length; i++)\\n { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\\n clipPos(this$1, ranges[i].head)); }\\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\\n setSelection(this, normalizeSelection(out, primary), options);\\n }),\\n addSelection: docMethodOp(function(anchor, head, options) {\\n var ranges = this.sel.ranges.slice(0);\\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\\n setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);\\n }),\\n\\n getSelection: function(lineSep) {\\n var this$1 = this;\\n\\n var ranges = this.sel.ranges, lines;\\n for (var i = 0; i < ranges.length; i++) {\\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\\n lines = lines ? lines.concat(sel) : sel;\\n }\\n if (lineSep === false) { return lines }\\n else { return lines.join(lineSep || this.lineSeparator()) }\\n },\\n getSelections: function(lineSep) {\\n var this$1 = this;\\n\\n var parts = [], ranges = this.sel.ranges;\\n for (var i = 0; i < ranges.length; i++) {\\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\\n if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\\n parts[i] = sel;\\n }\\n return parts\\n },\\n replaceSelection: function(code, collapse, origin) {\\n var dup = [];\\n for (var i = 0; i < this.sel.ranges.length; i++)\\n { dup[i] = code; }\\n this.replaceSelections(dup, collapse, origin || \\\"+input\\\");\\n },\\n replaceSelections: docMethodOp(function(code, collapse, origin) {\\n var this$1 = this;\\n\\n var changes = [], sel = this.sel;\\n for (var i = 0; i < sel.ranges.length; i++) {\\n var range$$1 = sel.ranges[i];\\n changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\\n }\\n var newSel = collapse && collapse != \\\"end\\\" && computeReplacedSel(this, changes, collapse);\\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\\n { makeChange(this$1, changes[i$1]); }\\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\\n else if (this.cm) { ensureCursorVisible(this.cm); }\\n }),\\n undo: docMethodOp(function() {makeChangeFromHistory(this, \\\"undo\\\");}),\\n redo: docMethodOp(function() {makeChangeFromHistory(this, \\\"redo\\\");}),\\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \\\"undo\\\", true);}),\\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \\\"redo\\\", true);}),\\n\\n setExtending: function(val) {this.extend = val;},\\n getExtending: function() {return this.extend},\\n\\n historySize: function() {\\n var hist = this.history, done = 0, undone = 0;\\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\\n return {undo: done, redo: undone}\\n },\\n clearHistory: function() {this.history = new History(this.history.maxGeneration);},\\n\\n markClean: function() {\\n this.cleanGeneration = this.changeGeneration(true);\\n },\\n changeGeneration: function(forceSplit) {\\n if (forceSplit)\\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\\n return this.history.generation\\n },\\n isClean: function (gen) {\\n return this.history.generation == (gen || this.cleanGeneration)\\n },\\n\\n getHistory: function() {\\n return {done: copyHistoryArray(this.history.done),\\n undone: copyHistoryArray(this.history.undone)}\\n },\\n setHistory: function(histData) {\\n var hist = this.history = new History(this.history.maxGeneration);\\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\\n },\\n\\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\\n return changeLine(this, line, \\\"gutter\\\", function (line) {\\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\\n markers[gutterID] = value;\\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\\n return true\\n })\\n }),\\n\\n clearGutter: docMethodOp(function(gutterID) {\\n var this$1 = this;\\n\\n this.iter(function (line) {\\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\\n changeLine(this$1, line, \\\"gutter\\\", function () {\\n line.gutterMarkers[gutterID] = null;\\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\\n return true\\n });\\n }\\n });\\n }),\\n\\n lineInfo: function(line) {\\n var n;\\n if (typeof line == \\\"number\\\") {\\n if (!isLine(this, line)) { return null }\\n n = line;\\n line = getLine(this, line);\\n if (!line) { return null }\\n } else {\\n n = lineNo(line);\\n if (n == null) { return null }\\n }\\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\\n widgets: line.widgets}\\n },\\n\\n addLineClass: docMethodOp(function(handle, where, cls) {\\n return changeLine(this, handle, where == \\\"gutter\\\" ? \\\"gutter\\\" : \\\"class\\\", function (line) {\\n var prop = where == \\\"text\\\" ? \\\"textClass\\\"\\n : where == \\\"background\\\" ? \\\"bgClass\\\"\\n : where == \\\"gutter\\\" ? \\\"gutterClass\\\" : \\\"wrapClass\\\";\\n if (!line[prop]) { line[prop] = cls; }\\n else if (classTest(cls).test(line[prop])) { return false }\\n else { line[prop] += \\\" \\\" + cls; }\\n return true\\n })\\n }),\\n removeLineClass: docMethodOp(function(handle, where, cls) {\\n return changeLine(this, handle, where == \\\"gutter\\\" ? \\\"gutter\\\" : \\\"class\\\", function (line) {\\n var prop = where == \\\"text\\\" ? \\\"textClass\\\"\\n : where == \\\"background\\\" ? \\\"bgClass\\\"\\n : where == \\\"gutter\\\" ? \\\"gutterClass\\\" : \\\"wrapClass\\\";\\n var cur = line[prop];\\n if (!cur) { return false }\\n else if (cls == null) { line[prop] = null; }\\n else {\\n var found = cur.match(classTest(cls));\\n if (!found) { return false }\\n var end = found.index + found[0].length;\\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \\\"\\\" : \\\" \\\") + cur.slice(end) || null;\\n }\\n return true\\n })\\n }),\\n\\n addLineWidget: docMethodOp(function(handle, node, options) {\\n return addLineWidget(this, handle, node, options)\\n }),\\n removeLineWidget: function(widget) { widget.clear(); },\\n\\n markText: function(from, to, options) {\\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \\\"range\\\")\\n },\\n setBookmark: function(pos, options) {\\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\\n insertLeft: options && options.insertLeft,\\n clearWhenEmpty: false, shared: options && options.shared,\\n handleMouseEvents: options && options.handleMouseEvents};\\n pos = clipPos(this, pos);\\n return markText(this, pos, pos, realOpts, \\\"bookmark\\\")\\n },\\n findMarksAt: function(pos) {\\n pos = clipPos(this, pos);\\n var markers = [], spans = getLine(this, pos.line).markedSpans;\\n if (spans) { for (var i = 0; i < spans.length; ++i) {\\n var span = spans[i];\\n if ((span.from == null || span.from <= pos.ch) &&\\n (span.to == null || span.to >= pos.ch))\\n { markers.push(span.marker.parent || span.marker); }\\n } }\\n return markers\\n },\\n findMarks: function(from, to, filter) {\\n from = clipPos(this, from); to = clipPos(this, to);\\n var found = [], lineNo$$1 = from.line;\\n this.iter(from.line, to.line + 1, function (line) {\\n var spans = line.markedSpans;\\n if (spans) { for (var i = 0; i < spans.length; i++) {\\n var span = spans[i];\\n if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\\n span.from == null && lineNo$$1 != from.line ||\\n span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\\n (!filter || filter(span.marker)))\\n { found.push(span.marker.parent || span.marker); }\\n } }\\n ++lineNo$$1;\\n });\\n return found\\n },\\n getAllMarks: function() {\\n var markers = [];\\n this.iter(function (line) {\\n var sps = line.markedSpans;\\n if (sps) { for (var i = 0; i < sps.length; ++i)\\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\\n });\\n return markers\\n },\\n\\n posFromIndex: function(off) {\\n var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\\n this.iter(function (line) {\\n var sz = line.text.length + sepSize;\\n if (sz > off) { ch = off; return true }\\n off -= sz;\\n ++lineNo$$1;\\n });\\n return clipPos(this, Pos(lineNo$$1, ch))\\n },\\n indexFromPos: function (coords) {\\n coords = clipPos(this, coords);\\n var index = coords.ch;\\n if (coords.line < this.first || coords.ch < 0) { return 0 }\\n var sepSize = this.lineSeparator().length;\\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\\n index += line.text.length + sepSize;\\n });\\n return index\\n },\\n\\n copy: function(copyHistory) {\\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\\n this.modeOption, this.first, this.lineSep, this.direction);\\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\\n doc.sel = this.sel;\\n doc.extend = false;\\n if (copyHistory) {\\n doc.history.undoDepth = this.history.undoDepth;\\n doc.setHistory(this.getHistory());\\n }\\n return doc\\n },\\n\\n linkedDoc: function(options) {\\n if (!options) { options = {}; }\\n var from = this.first, to = this.first + this.size;\\n if (options.from != null && options.from > from) { from = options.from; }\\n if (options.to != null && options.to < to) { to = options.to; }\\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\\n if (options.sharedHist) { copy.history = this.history\\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\\n copySharedMarkers(copy, findSharedMarkers(this));\\n return copy\\n },\\n unlinkDoc: function(other) {\\n var this$1 = this;\\n\\n if (other instanceof CodeMirror$1) { other = other.doc; }\\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\\n var link = this$1.linked[i];\\n if (link.doc != other) { continue }\\n this$1.linked.splice(i, 1);\\n other.unlinkDoc(this$1);\\n detachSharedMarkers(findSharedMarkers(this$1));\\n break\\n } }\\n // If the histories were shared, split them again\\n if (other.history == this.history) {\\n var splitIds = [other.id];\\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\\n other.history = new History(null);\\n other.history.done = copyHistoryArray(this.history.done, splitIds);\\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\\n }\\n },\\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\\n\\n getMode: function() {return this.mode},\\n getEditor: function() {return this.cm},\\n\\n splitLines: function(str) {\\n if (this.lineSep) { return str.split(this.lineSep) }\\n return splitLinesAuto(str)\\n },\\n lineSeparator: function() { return this.lineSep || \\\"\\\\n\\\" },\\n\\n setDirection: docMethodOp(function (dir) {\\n if (dir != \\\"rtl\\\") { dir = \\\"ltr\\\"; }\\n if (dir == this.direction) { return }\\n this.direction = dir;\\n this.iter(function (line) { return line.order = null; });\\n if (this.cm) { directionChanged(this.cm); }\\n })\\n});\\n\\n// Public alias.\\nDoc.prototype.eachLine = Doc.prototype.iter;\\n\\n// Kludge to work around strange IE behavior where it'll sometimes\\n// re-fire a series of drag-related events right after the drop (#1551)\\nvar lastDrop = 0;\\n\\nfunction onDrop(e) {\\n var cm = this;\\n clearDragCursor(cm);\\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\\n { return }\\n e_preventDefault(e);\\n if (ie) { lastDrop = +new Date; }\\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\\n if (!pos || cm.isReadOnly()) { return }\\n // Might be a file drop, in which case we simply extract the text\\n // and insert it.\\n if (files && files.length && window.FileReader && window.File) {\\n var n = files.length, text = Array(n), read = 0;\\n var loadFile = function (file, i) {\\n if (cm.options.allowDropFileTypes &&\\n indexOf(cm.options.allowDropFileTypes, file.type) == -1)\\n { return }\\n\\n var reader = new FileReader;\\n reader.onload = operation(cm, function () {\\n var content = reader.result;\\n if (/[\\\\x00-\\\\x08\\\\x0e-\\\\x1f]{2}/.test(content)) { content = \\\"\\\"; }\\n text[i] = content;\\n if (++read == n) {\\n pos = clipPos(cm.doc, pos);\\n var change = {from: pos, to: pos,\\n text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\\n origin: \\\"paste\\\"};\\n makeChange(cm.doc, change);\\n setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\\n }\\n });\\n reader.readAsText(file);\\n };\\n for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\\n } else { // Normal drop\\n // Don't do a replace if the drop happened inside of the selected text.\\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\\n cm.state.draggingText(e);\\n // Ensure the editor is re-focused\\n setTimeout(function () { return cm.display.input.focus(); }, 20);\\n return\\n }\\n try {\\n var text$1 = e.dataTransfer.getData(\\\"Text\\\");\\n if (text$1) {\\n var selected;\\n if (cm.state.draggingText && !cm.state.draggingText.copy)\\n { selected = cm.listSelections(); }\\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\\n { replaceRange(cm.doc, \\\"\\\", selected[i$1].anchor, selected[i$1].head, \\\"drag\\\"); } }\\n cm.replaceSelection(text$1, \\\"around\\\", \\\"paste\\\");\\n cm.display.input.focus();\\n }\\n }\\n catch(e){}\\n }\\n}\\n\\nfunction onDragStart(cm, e) {\\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\\n\\n e.dataTransfer.setData(\\\"Text\\\", cm.getSelection());\\n e.dataTransfer.effectAllowed = \\\"copyMove\\\";\\n\\n // Use dummy image instead of default browsers image.\\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\\n if (e.dataTransfer.setDragImage && !safari) {\\n var img = elt(\\\"img\\\", null, null, \\\"position: fixed; left: 0; top: 0;\\\");\\n img.src = \\\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\\\";\\n if (presto) {\\n img.width = img.height = 1;\\n cm.display.wrapper.appendChild(img);\\n // Force a relayout, or Opera won't use our image for some obscure reason\\n img._top = img.offsetTop;\\n }\\n e.dataTransfer.setDragImage(img, 0, 0);\\n if (presto) { img.parentNode.removeChild(img); }\\n }\\n}\\n\\nfunction onDragOver(cm, e) {\\n var pos = posFromMouse(cm, e);\\n if (!pos) { return }\\n var frag = document.createDocumentFragment();\\n drawSelectionCursor(cm, pos, frag);\\n if (!cm.display.dragCursor) {\\n cm.display.dragCursor = elt(\\\"div\\\", null, \\\"CodeMirror-cursors CodeMirror-dragcursors\\\");\\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\\n }\\n removeChildrenAndAdd(cm.display.dragCursor, frag);\\n}\\n\\nfunction clearDragCursor(cm) {\\n if (cm.display.dragCursor) {\\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\\n cm.display.dragCursor = null;\\n }\\n}\\n\\n// These must be handled carefully, because naively registering a\\n// handler for each editor will cause the editors to never be\\n// garbage collected.\\n\\nfunction forEachCodeMirror(f) {\\n if (!document.getElementsByClassName) { return }\\n var byClass = document.getElementsByClassName(\\\"CodeMirror\\\");\\n for (var i = 0; i < byClass.length; i++) {\\n var cm = byClass[i].CodeMirror;\\n if (cm) { f(cm); }\\n }\\n}\\n\\nvar globalsRegistered = false;\\nfunction ensureGlobalHandlers() {\\n if (globalsRegistered) { return }\\n registerGlobalHandlers();\\n globalsRegistered = true;\\n}\\nfunction registerGlobalHandlers() {\\n // When the window resizes, we need to refresh active editors.\\n var resizeTimer;\\n on(window, \\\"resize\\\", function () {\\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\\n resizeTimer = null;\\n forEachCodeMirror(onResize);\\n }, 100); }\\n });\\n // When the window loses focus, we want to show the editor as blurred\\n on(window, \\\"blur\\\", function () { return forEachCodeMirror(onBlur); });\\n}\\n// Called when the window resizes\\nfunction onResize(cm) {\\n var d = cm.display;\\n if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth)\\n { return }\\n // Might be a text scaling operation, clear size caches.\\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\\n d.scrollbarsClipped = false;\\n cm.setSize();\\n}\\n\\nvar keyNames = {\\n 3: \\\"Enter\\\", 8: \\\"Backspace\\\", 9: \\\"Tab\\\", 13: \\\"Enter\\\", 16: \\\"Shift\\\", 17: \\\"Ctrl\\\", 18: \\\"Alt\\\",\\n 19: \\\"Pause\\\", 20: \\\"CapsLock\\\", 27: \\\"Esc\\\", 32: \\\"Space\\\", 33: \\\"PageUp\\\", 34: \\\"PageDown\\\", 35: \\\"End\\\",\\n 36: \\\"Home\\\", 37: \\\"Left\\\", 38: \\\"Up\\\", 39: \\\"Right\\\", 40: \\\"Down\\\", 44: \\\"PrintScrn\\\", 45: \\\"Insert\\\",\\n 46: \\\"Delete\\\", 59: \\\";\\\", 61: \\\"=\\\", 91: \\\"Mod\\\", 92: \\\"Mod\\\", 93: \\\"Mod\\\",\\n 106: \\\"*\\\", 107: \\\"=\\\", 109: \\\"-\\\", 110: \\\".\\\", 111: \\\"/\\\", 127: \\\"Delete\\\",\\n 173: \\\"-\\\", 186: \\\";\\\", 187: \\\"=\\\", 188: \\\",\\\", 189: \\\"-\\\", 190: \\\".\\\", 191: \\\"/\\\", 192: \\\"`\\\", 219: \\\"[\\\", 220: \\\"\\\\\\\\\\\",\\n 221: \\\"]\\\", 222: \\\"'\\\", 63232: \\\"Up\\\", 63233: \\\"Down\\\", 63234: \\\"Left\\\", 63235: \\\"Right\\\", 63272: \\\"Delete\\\",\\n 63273: \\\"Home\\\", 63275: \\\"End\\\", 63276: \\\"PageUp\\\", 63277: \\\"PageDown\\\", 63302: \\\"Insert\\\"\\n};\\n\\n// Number keys\\nfor (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\\n// Alphabetic keys\\nfor (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\\n// Function keys\\nfor (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \\\"F\\\" + i$2; }\\n\\nvar keyMap = {};\\n\\nkeyMap.basic = {\\n \\\"Left\\\": \\\"goCharLeft\\\", \\\"Right\\\": \\\"goCharRight\\\", \\\"Up\\\": \\\"goLineUp\\\", \\\"Down\\\": \\\"goLineDown\\\",\\n \\\"End\\\": \\\"goLineEnd\\\", \\\"Home\\\": \\\"goLineStartSmart\\\", \\\"PageUp\\\": \\\"goPageUp\\\", \\\"PageDown\\\": \\\"goPageDown\\\",\\n \\\"Delete\\\": \\\"delCharAfter\\\", \\\"Backspace\\\": \\\"delCharBefore\\\", \\\"Shift-Backspace\\\": \\\"delCharBefore\\\",\\n \\\"Tab\\\": \\\"defaultTab\\\", \\\"Shift-Tab\\\": \\\"indentAuto\\\",\\n \\\"Enter\\\": \\\"newlineAndIndent\\\", \\\"Insert\\\": \\\"toggleOverwrite\\\",\\n \\\"Esc\\\": \\\"singleSelection\\\"\\n};\\n// Note that the save and find-related commands aren't defined by\\n// default. User code or addons can define them. Unknown commands\\n// are simply ignored.\\nkeyMap.pcDefault = {\\n \\\"Ctrl-A\\\": \\\"selectAll\\\", \\\"Ctrl-D\\\": \\\"deleteLine\\\", \\\"Ctrl-Z\\\": \\\"undo\\\", \\\"Shift-Ctrl-Z\\\": \\\"redo\\\", \\\"Ctrl-Y\\\": \\\"redo\\\",\\n \\\"Ctrl-Home\\\": \\\"goDocStart\\\", \\\"Ctrl-End\\\": \\\"goDocEnd\\\", \\\"Ctrl-Up\\\": \\\"goLineUp\\\", \\\"Ctrl-Down\\\": \\\"goLineDown\\\",\\n \\\"Ctrl-Left\\\": \\\"goGroupLeft\\\", \\\"Ctrl-Right\\\": \\\"goGroupRight\\\", \\\"Alt-Left\\\": \\\"goLineStart\\\", \\\"Alt-Right\\\": \\\"goLineEnd\\\",\\n \\\"Ctrl-Backspace\\\": \\\"delGroupBefore\\\", \\\"Ctrl-Delete\\\": \\\"delGroupAfter\\\", \\\"Ctrl-S\\\": \\\"save\\\", \\\"Ctrl-F\\\": \\\"find\\\",\\n \\\"Ctrl-G\\\": \\\"findNext\\\", \\\"Shift-Ctrl-G\\\": \\\"findPrev\\\", \\\"Shift-Ctrl-F\\\": \\\"replace\\\", \\\"Shift-Ctrl-R\\\": \\\"replaceAll\\\",\\n \\\"Ctrl-[\\\": \\\"indentLess\\\", \\\"Ctrl-]\\\": \\\"indentMore\\\",\\n \\\"Ctrl-U\\\": \\\"undoSelection\\\", \\\"Shift-Ctrl-U\\\": \\\"redoSelection\\\", \\\"Alt-U\\\": \\\"redoSelection\\\",\\n fallthrough: \\\"basic\\\"\\n};\\n// Very basic readline/emacs-style bindings, which are standard on Mac.\\nkeyMap.emacsy = {\\n \\\"Ctrl-F\\\": \\\"goCharRight\\\", \\\"Ctrl-B\\\": \\\"goCharLeft\\\", \\\"Ctrl-P\\\": \\\"goLineUp\\\", \\\"Ctrl-N\\\": \\\"goLineDown\\\",\\n \\\"Alt-F\\\": \\\"goWordRight\\\", \\\"Alt-B\\\": \\\"goWordLeft\\\", \\\"Ctrl-A\\\": \\\"goLineStart\\\", \\\"Ctrl-E\\\": \\\"goLineEnd\\\",\\n \\\"Ctrl-V\\\": \\\"goPageDown\\\", \\\"Shift-Ctrl-V\\\": \\\"goPageUp\\\", \\\"Ctrl-D\\\": \\\"delCharAfter\\\", \\\"Ctrl-H\\\": \\\"delCharBefore\\\",\\n \\\"Alt-D\\\": \\\"delWordAfter\\\", \\\"Alt-Backspace\\\": \\\"delWordBefore\\\", \\\"Ctrl-K\\\": \\\"killLine\\\", \\\"Ctrl-T\\\": \\\"transposeChars\\\",\\n \\\"Ctrl-O\\\": \\\"openLine\\\"\\n};\\nkeyMap.macDefault = {\\n \\\"Cmd-A\\\": \\\"selectAll\\\", \\\"Cmd-D\\\": \\\"deleteLine\\\", \\\"Cmd-Z\\\": \\\"undo\\\", \\\"Shift-Cmd-Z\\\": \\\"redo\\\", \\\"Cmd-Y\\\": \\\"redo\\\",\\n \\\"Cmd-Home\\\": \\\"goDocStart\\\", \\\"Cmd-Up\\\": \\\"goDocStart\\\", \\\"Cmd-End\\\": \\\"goDocEnd\\\", \\\"Cmd-Down\\\": \\\"goDocEnd\\\", \\\"Alt-Left\\\": \\\"goGroupLeft\\\",\\n \\\"Alt-Right\\\": \\\"goGroupRight\\\", \\\"Cmd-Left\\\": \\\"goLineLeft\\\", \\\"Cmd-Right\\\": \\\"goLineRight\\\", \\\"Alt-Backspace\\\": \\\"delGroupBefore\\\",\\n \\\"Ctrl-Alt-Backspace\\\": \\\"delGroupAfter\\\", \\\"Alt-Delete\\\": \\\"delGroupAfter\\\", \\\"Cmd-S\\\": \\\"save\\\", \\\"Cmd-F\\\": \\\"find\\\",\\n \\\"Cmd-G\\\": \\\"findNext\\\", \\\"Shift-Cmd-G\\\": \\\"findPrev\\\", \\\"Cmd-Alt-F\\\": \\\"replace\\\", \\\"Shift-Cmd-Alt-F\\\": \\\"replaceAll\\\",\\n \\\"Cmd-[\\\": \\\"indentLess\\\", \\\"Cmd-]\\\": \\\"indentMore\\\", \\\"Cmd-Backspace\\\": \\\"delWrappedLineLeft\\\", \\\"Cmd-Delete\\\": \\\"delWrappedLineRight\\\",\\n \\\"Cmd-U\\\": \\\"undoSelection\\\", \\\"Shift-Cmd-U\\\": \\\"redoSelection\\\", \\\"Ctrl-Up\\\": \\\"goDocStart\\\", \\\"Ctrl-Down\\\": \\\"goDocEnd\\\",\\n fallthrough: [\\\"basic\\\", \\\"emacsy\\\"]\\n};\\nkeyMap[\\\"default\\\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\\n\\n// KEYMAP DISPATCH\\n\\nfunction normalizeKeyName(name) {\\n var parts = name.split(/-(?!$)/);\\n name = parts[parts.length - 1];\\n var alt, ctrl, shift, cmd;\\n for (var i = 0; i < parts.length - 1; i++) {\\n var mod = parts[i];\\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\\n else { throw new Error(\\\"Unrecognized modifier name: \\\" + mod) }\\n }\\n if (alt) { name = \\\"Alt-\\\" + name; }\\n if (ctrl) { name = \\\"Ctrl-\\\" + name; }\\n if (cmd) { name = \\\"Cmd-\\\" + name; }\\n if (shift) { name = \\\"Shift-\\\" + name; }\\n return name\\n}\\n\\n// This is a kludge to keep keymaps mostly working as raw objects\\n// (backwards compatibility) while at the same time support features\\n// like normalization and multi-stroke key bindings. It compiles a\\n// new normalized keymap, and then updates the old object to reflect\\n// this.\\nfunction normalizeKeyMap(keymap) {\\n var copy = {};\\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\\n var value = keymap[keyname];\\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\\n if (value == \\\"...\\\") { delete keymap[keyname]; continue }\\n\\n var keys = map(keyname.split(\\\" \\\"), normalizeKeyName);\\n for (var i = 0; i < keys.length; i++) {\\n var val = (void 0), name = (void 0);\\n if (i == keys.length - 1) {\\n name = keys.join(\\\" \\\");\\n val = value;\\n } else {\\n name = keys.slice(0, i + 1).join(\\\" \\\");\\n val = \\\"...\\\";\\n }\\n var prev = copy[name];\\n if (!prev) { copy[name] = val; }\\n else if (prev != val) { throw new Error(\\\"Inconsistent bindings for \\\" + name) }\\n }\\n delete keymap[keyname];\\n } }\\n for (var prop in copy) { keymap[prop] = copy[prop]; }\\n return keymap\\n}\\n\\nfunction lookupKey(key, map$$1, handle, context) {\\n map$$1 = getKeyMap(map$$1);\\n var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\\n if (found === false) { return \\\"nothing\\\" }\\n if (found === \\\"...\\\") { return \\\"multi\\\" }\\n if (found != null && handle(found)) { return \\\"handled\\\" }\\n\\n if (map$$1.fallthrough) {\\n if (Object.prototype.toString.call(map$$1.fallthrough) != \\\"[object Array]\\\")\\n { return lookupKey(key, map$$1.fallthrough, handle, context) }\\n for (var i = 0; i < map$$1.fallthrough.length; i++) {\\n var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\\n if (result) { return result }\\n }\\n }\\n}\\n\\n// Modifier key presses don't count as 'real' key presses for the\\n// purpose of keymap fallthrough.\\nfunction isModifierKey(value) {\\n var name = typeof value == \\\"string\\\" ? value : keyNames[value.keyCode];\\n return name == \\\"Ctrl\\\" || name == \\\"Alt\\\" || name == \\\"Shift\\\" || name == \\\"Mod\\\"\\n}\\n\\nfunction addModifierNames(name, event, noShift) {\\n var base = name;\\n if (event.altKey && base != \\\"Alt\\\") { name = \\\"Alt-\\\" + name; }\\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \\\"Ctrl\\\") { name = \\\"Ctrl-\\\" + name; }\\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \\\"Cmd\\\") { name = \\\"Cmd-\\\" + name; }\\n if (!noShift && event.shiftKey && base != \\\"Shift\\\") { name = \\\"Shift-\\\" + name; }\\n return name\\n}\\n\\n// Look up the name of a key as indicated by an event object.\\nfunction keyName(event, noShift) {\\n if (presto && event.keyCode == 34 && event[\\\"char\\\"]) { return false }\\n var name = keyNames[event.keyCode];\\n if (name == null || event.altGraphKey) { return false }\\n return addModifierNames(name, event, noShift)\\n}\\n\\nfunction getKeyMap(val) {\\n return typeof val == \\\"string\\\" ? keyMap[val] : val\\n}\\n\\n// Helper for deleting text near the selection(s), used to implement\\n// backspace, delete, and similar functionality.\\nfunction deleteNearSelection(cm, compute) {\\n var ranges = cm.doc.sel.ranges, kill = [];\\n // Build up a set of ranges to kill first, merging overlapping\\n // ranges.\\n for (var i = 0; i < ranges.length; i++) {\\n var toKill = compute(ranges[i]);\\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\\n var replaced = kill.pop();\\n if (cmp(replaced.from, toKill.from) < 0) {\\n toKill.from = replaced.from;\\n break\\n }\\n }\\n kill.push(toKill);\\n }\\n // Next, remove those actual ranges.\\n runInOp(cm, function () {\\n for (var i = kill.length - 1; i >= 0; i--)\\n { replaceRange(cm.doc, \\\"\\\", kill[i].from, kill[i].to, \\\"+delete\\\"); }\\n ensureCursorVisible(cm);\\n });\\n}\\n\\n// Commands are parameter-less actions that can be performed on an\\n// editor, mostly used for keybindings.\\nvar commands = {\\n selectAll: selectAll,\\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\\\"anchor\\\"), cm.getCursor(\\\"head\\\"), sel_dontScroll); },\\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\\n if (range.empty()) {\\n var len = getLine(cm.doc, range.head.line).text.length;\\n if (range.head.ch == len && range.head.line < cm.lastLine())\\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\\n else\\n { return {from: range.head, to: Pos(range.head.line, len)} }\\n } else {\\n return {from: range.from(), to: range.to()}\\n }\\n }); },\\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\\n from: Pos(range.from().line, 0),\\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\\n }); }); },\\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\\n from: Pos(range.from().line, 0), to: range.from()\\n }); }); },\\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\\n var top = cm.charCoords(range.head, \\\"div\\\").top + 5;\\n var leftPos = cm.coordsChar({left: 0, top: top}, \\\"div\\\");\\n return {from: leftPos, to: range.from()}\\n }); },\\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\\n var top = cm.charCoords(range.head, \\\"div\\\").top + 5;\\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \\\"div\\\");\\n return {from: range.from(), to: rightPos }\\n }); },\\n undo: function (cm) { return cm.undo(); },\\n redo: function (cm) { return cm.redo(); },\\n undoSelection: function (cm) { return cm.undoSelection(); },\\n redoSelection: function (cm) { return cm.redoSelection(); },\\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\\n {origin: \\\"+move\\\", bias: 1}\\n ); },\\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\\n {origin: \\\"+move\\\", bias: 1}\\n ); },\\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\\n {origin: \\\"+move\\\", bias: -1}\\n ); },\\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\\n var top = cm.cursorCoords(range.head, \\\"div\\\").top + 5;\\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \\\"div\\\")\\n }, sel_move); },\\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\\n var top = cm.cursorCoords(range.head, \\\"div\\\").top + 5;\\n return cm.coordsChar({left: 0, top: top}, \\\"div\\\")\\n }, sel_move); },\\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\\n var top = cm.cursorCoords(range.head, \\\"div\\\").top + 5;\\n var pos = cm.coordsChar({left: 0, top: top}, \\\"div\\\");\\n if (pos.ch < cm.getLine(pos.line).search(/\\\\S/)) { return lineStartSmart(cm, range.head) }\\n return pos\\n }, sel_move); },\\n goLineUp: function (cm) { return cm.moveV(-1, \\\"line\\\"); },\\n goLineDown: function (cm) { return cm.moveV(1, \\\"line\\\"); },\\n goPageUp: function (cm) { return cm.moveV(-1, \\\"page\\\"); },\\n goPageDown: function (cm) { return cm.moveV(1, \\\"page\\\"); },\\n goCharLeft: function (cm) { return cm.moveH(-1, \\\"char\\\"); },\\n goCharRight: function (cm) { return cm.moveH(1, \\\"char\\\"); },\\n goColumnLeft: function (cm) { return cm.moveH(-1, \\\"column\\\"); },\\n goColumnRight: function (cm) { return cm.moveH(1, \\\"column\\\"); },\\n goWordLeft: function (cm) { return cm.moveH(-1, \\\"word\\\"); },\\n goGroupRight: function (cm) { return cm.moveH(1, \\\"group\\\"); },\\n goGroupLeft: function (cm) { return cm.moveH(-1, \\\"group\\\"); },\\n goWordRight: function (cm) { return cm.moveH(1, \\\"word\\\"); },\\n delCharBefore: function (cm) { return cm.deleteH(-1, \\\"char\\\"); },\\n delCharAfter: function (cm) { return cm.deleteH(1, \\\"char\\\"); },\\n delWordBefore: function (cm) { return cm.deleteH(-1, \\\"word\\\"); },\\n delWordAfter: function (cm) { return cm.deleteH(1, \\\"word\\\"); },\\n delGroupBefore: function (cm) { return cm.deleteH(-1, \\\"group\\\"); },\\n delGroupAfter: function (cm) { return cm.deleteH(1, \\\"group\\\"); },\\n indentAuto: function (cm) { return cm.indentSelection(\\\"smart\\\"); },\\n indentMore: function (cm) { return cm.indentSelection(\\\"add\\\"); },\\n indentLess: function (cm) { return cm.indentSelection(\\\"subtract\\\"); },\\n insertTab: function (cm) { return cm.replaceSelection(\\\"\\\\t\\\"); },\\n insertSoftTab: function (cm) {\\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\\n for (var i = 0; i < ranges.length; i++) {\\n var pos = ranges[i].from();\\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\\n spaces.push(spaceStr(tabSize - col % tabSize));\\n }\\n cm.replaceSelections(spaces);\\n },\\n defaultTab: function (cm) {\\n if (cm.somethingSelected()) { cm.indentSelection(\\\"add\\\"); }\\n else { cm.execCommand(\\\"insertTab\\\"); }\\n },\\n // Swap the two chars left and right of each selection's head.\\n // Move cursor behind the two swapped characters afterwards.\\n //\\n // Doesn't consider line feeds a character.\\n // Doesn't scan more than one line above to find a character.\\n // Doesn't do anything on an empty line.\\n // Doesn't do anything with non-empty selections.\\n transposeChars: function (cm) { return runInOp(cm, function () {\\n var ranges = cm.listSelections(), newSel = [];\\n for (var i = 0; i < ranges.length; i++) {\\n if (!ranges[i].empty()) { continue }\\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\\n if (line) {\\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\\n if (cur.ch > 0) {\\n cur = new Pos(cur.line, cur.ch + 1);\\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\\n Pos(cur.line, cur.ch - 2), cur, \\\"+transpose\\\");\\n } else if (cur.line > cm.doc.first) {\\n var prev = getLine(cm.doc, cur.line - 1).text;\\n if (prev) {\\n cur = new Pos(cur.line, 1);\\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\\n prev.charAt(prev.length - 1),\\n Pos(cur.line - 1, prev.length - 1), cur, \\\"+transpose\\\");\\n }\\n }\\n }\\n newSel.push(new Range(cur, cur));\\n }\\n cm.setSelections(newSel);\\n }); },\\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\\n var sels = cm.listSelections();\\n for (var i = sels.length - 1; i >= 0; i--)\\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \\\"+input\\\"); }\\n sels = cm.listSelections();\\n for (var i$1 = 0; i$1 < sels.length; i$1++)\\n { cm.indentLine(sels[i$1].from().line, null, true); }\\n ensureCursorVisible(cm);\\n }); },\\n openLine: function (cm) { return cm.replaceSelection(\\\"\\\\n\\\", \\\"start\\\"); },\\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\\n};\\n\\n\\nfunction lineStart(cm, lineN) {\\n var line = getLine(cm.doc, lineN);\\n var visual = visualLine(line);\\n if (visual != line) { lineN = lineNo(visual); }\\n return endOfLine(true, cm, visual, lineN, 1)\\n}\\nfunction lineEnd(cm, lineN) {\\n var line = getLine(cm.doc, lineN);\\n var visual = visualLineEnd(line);\\n if (visual != line) { lineN = lineNo(visual); }\\n return endOfLine(true, cm, line, lineN, -1)\\n}\\nfunction lineStartSmart(cm, pos) {\\n var start = lineStart(cm, pos.line);\\n var line = getLine(cm.doc, start.line);\\n var order = getOrder(line, cm.doc.direction);\\n if (!order || order[0].level == 0) {\\n var firstNonWS = Math.max(0, line.text.search(/\\\\S/));\\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\\n }\\n return start\\n}\\n\\n// Run a handler that was bound to a key.\\nfunction doHandleBinding(cm, bound, dropShift) {\\n if (typeof bound == \\\"string\\\") {\\n bound = commands[bound];\\n if (!bound) { return false }\\n }\\n // Ensure previous input has been read, so that the handler sees a\\n // consistent view of the document\\n cm.display.input.ensurePolled();\\n var prevShift = cm.display.shift, done = false;\\n try {\\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\\n if (dropShift) { cm.display.shift = false; }\\n done = bound(cm) != Pass;\\n } finally {\\n cm.display.shift = prevShift;\\n cm.state.suppressEdits = false;\\n }\\n return done\\n}\\n\\nfunction lookupKeyForEditor(cm, name, handle) {\\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\\n if (result) { return result }\\n }\\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\\n || lookupKey(name, cm.options.keyMap, handle, cm)\\n}\\n\\n// Note that, despite the name, this function is also used to check\\n// for bound mouse clicks.\\n\\nvar stopSeq = new Delayed;\\nfunction dispatchKey(cm, name, e, handle) {\\n var seq = cm.state.keySeq;\\n if (seq) {\\n if (isModifierKey(name)) { return \\\"handled\\\" }\\n stopSeq.set(50, function () {\\n if (cm.state.keySeq == seq) {\\n cm.state.keySeq = null;\\n cm.display.input.reset();\\n }\\n });\\n name = seq + \\\" \\\" + name;\\n }\\n var result = lookupKeyForEditor(cm, name, handle);\\n\\n if (result == \\\"multi\\\")\\n { cm.state.keySeq = name; }\\n if (result == \\\"handled\\\")\\n { signalLater(cm, \\\"keyHandled\\\", cm, name, e); }\\n\\n if (result == \\\"handled\\\" || result == \\\"multi\\\") {\\n e_preventDefault(e);\\n restartBlink(cm);\\n }\\n\\n if (seq && !result && /\\\\'$/.test(name)) {\\n e_preventDefault(e);\\n return true\\n }\\n return !!result\\n}\\n\\n// Handle a key from the keydown event.\\nfunction handleKeyBinding(cm, e) {\\n var name = keyName(e, true);\\n if (!name) { return false }\\n\\n if (e.shiftKey && !cm.state.keySeq) {\\n // First try to resolve full name (including 'Shift-'). Failing\\n // that, see if there is a cursor-motion command (starting with\\n // 'go') bound to the keyname without 'Shift-'.\\n return dispatchKey(cm, \\\"Shift-\\\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\\n || dispatchKey(cm, name, e, function (b) {\\n if (typeof b == \\\"string\\\" ? /^go[A-Z]/.test(b) : b.motion)\\n { return doHandleBinding(cm, b) }\\n })\\n } else {\\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\\n }\\n}\\n\\n// Handle a key from the keypress event\\nfunction handleCharBinding(cm, e, ch) {\\n return dispatchKey(cm, \\\"'\\\" + ch + \\\"'\\\", e, function (b) { return doHandleBinding(cm, b, true); })\\n}\\n\\nvar lastStoppedKey = null;\\nfunction onKeyDown(e) {\\n var cm = this;\\n cm.curOp.focus = activeElt();\\n if (signalDOMEvent(cm, e)) { return }\\n // IE does strange things with escape.\\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\\n var code = e.keyCode;\\n cm.display.shift = code == 16 || e.shiftKey;\\n var handled = handleKeyBinding(cm, e);\\n if (presto) {\\n lastStoppedKey = handled ? code : null;\\n // Opera has no cut event... we try to at least catch the key combo\\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\\n { cm.replaceSelection(\\\"\\\", null, \\\"cut\\\"); }\\n }\\n\\n // Turn mouse into crosshair when Alt is held on Mac.\\n if (code == 18 && !/\\\\bCodeMirror-crosshair\\\\b/.test(cm.display.lineDiv.className))\\n { showCrossHair(cm); }\\n}\\n\\nfunction showCrossHair(cm) {\\n var lineDiv = cm.display.lineDiv;\\n addClass(lineDiv, \\\"CodeMirror-crosshair\\\");\\n\\n function up(e) {\\n if (e.keyCode == 18 || !e.altKey) {\\n rmClass(lineDiv, \\\"CodeMirror-crosshair\\\");\\n off(document, \\\"keyup\\\", up);\\n off(document, \\\"mouseover\\\", up);\\n }\\n }\\n on(document, \\\"keyup\\\", up);\\n on(document, \\\"mouseover\\\", up);\\n}\\n\\nfunction onKeyUp(e) {\\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\\n signalDOMEvent(this, e);\\n}\\n\\nfunction onKeyPress(e) {\\n var cm = this;\\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\\n var keyCode = e.keyCode, charCode = e.charCode;\\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\\n // Some browsers fire keypress events for backspace\\n if (ch == \\\"\\\\x08\\\") { return }\\n if (handleCharBinding(cm, e, ch)) { return }\\n cm.display.input.onKeyPress(e);\\n}\\n\\nvar DOUBLECLICK_DELAY = 400;\\n\\nvar PastClick = function(time, pos, button) {\\n this.time = time;\\n this.pos = pos;\\n this.button = button;\\n};\\n\\nPastClick.prototype.compare = function (time, pos, button) {\\n return this.time + DOUBLECLICK_DELAY > time &&\\n cmp(pos, this.pos) == 0 && button == this.button\\n};\\n\\nvar lastClick;\\nvar lastDoubleClick;\\nfunction clickRepeat(pos, button) {\\n var now = +new Date;\\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\\n lastClick = lastDoubleClick = null;\\n return \\\"triple\\\"\\n } else if (lastClick && lastClick.compare(now, pos, button)) {\\n lastDoubleClick = new PastClick(now, pos, button);\\n lastClick = null;\\n return \\\"double\\\"\\n } else {\\n lastClick = new PastClick(now, pos, button);\\n lastDoubleClick = null;\\n return \\\"single\\\"\\n }\\n}\\n\\n// A mouse down can be a single click, double click, triple click,\\n// start of selection drag, start of text drag, new cursor\\n// (ctrl-click), rectangle drag (alt-drag), or xwin\\n// middle-click-paste. Or it might be a click on something we should\\n// not interfere with, such as a scrollbar or widget.\\nfunction onMouseDown(e) {\\n var cm = this, display = cm.display;\\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\\n display.input.ensurePolled();\\n display.shift = e.shiftKey;\\n\\n if (eventInWidget(display, e)) {\\n if (!webkit) {\\n // Briefly turn off draggability, to allow widgets to do\\n // normal dragging things.\\n display.scroller.draggable = false;\\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\\n }\\n return\\n }\\n if (clickInGutter(cm, e)) { return }\\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \\\"single\\\";\\n window.focus();\\n\\n // #3261: make sure, that we're not starting a second selection\\n if (button == 1 && cm.state.selectingText)\\n { cm.state.selectingText(e); }\\n\\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\\n\\n if (button == 1) {\\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\\n } else if (button == 2) {\\n if (pos) { extendSelection(cm.doc, pos); }\\n setTimeout(function () { return display.input.focus(); }, 20);\\n } else if (button == 3) {\\n if (captureRightClick) { onContextMenu(cm, e); }\\n else { delayBlurEvent(cm); }\\n }\\n}\\n\\nfunction handleMappedButton(cm, button, pos, repeat, event) {\\n var name = \\\"Click\\\";\\n if (repeat == \\\"double\\\") { name = \\\"Double\\\" + name; }\\n else if (repeat == \\\"triple\\\") { name = \\\"Triple\\\" + name; }\\n name = (button == 1 ? \\\"Left\\\" : button == 2 ? \\\"Middle\\\" : \\\"Right\\\") + name;\\n\\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\\n if (typeof bound == \\\"string\\\") { bound = commands[bound]; }\\n if (!bound) { return false }\\n var done = false;\\n try {\\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\\n done = bound(cm, pos) != Pass;\\n } finally {\\n cm.state.suppressEdits = false;\\n }\\n return done\\n })\\n}\\n\\nfunction configureMouse(cm, repeat, event) {\\n var option = cm.getOption(\\\"configureMouse\\\");\\n var value = option ? option(cm, repeat, event) : {};\\n if (value.unit == null) {\\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\\n value.unit = rect ? \\\"rectangle\\\" : repeat == \\\"single\\\" ? \\\"char\\\" : repeat == \\\"double\\\" ? \\\"word\\\" : \\\"line\\\";\\n }\\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\\n return value\\n}\\n\\nfunction leftButtonDown(cm, pos, repeat, event) {\\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\\n else { cm.curOp.focus = activeElt(); }\\n\\n var behavior = configureMouse(cm, repeat, event);\\n\\n var sel = cm.doc.sel, contained;\\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\\n repeat == \\\"single\\\" && (contained = sel.contains(pos)) > -1 &&\\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\\n { leftButtonStartDrag(cm, event, pos, behavior); }\\n else\\n { leftButtonSelect(cm, event, pos, behavior); }\\n}\\n\\n// Start a text drag. When it ends, see if any dragging actually\\n// happen, and treat as a click if it didn't.\\nfunction leftButtonStartDrag(cm, event, pos, behavior) {\\n var display = cm.display, moved = false;\\n var dragEnd = operation(cm, function (e) {\\n if (webkit) { display.scroller.draggable = false; }\\n cm.state.draggingText = false;\\n off(document, \\\"mouseup\\\", dragEnd);\\n off(document, \\\"mousemove\\\", mouseMove);\\n off(display.scroller, \\\"dragstart\\\", dragStart);\\n off(display.scroller, \\\"drop\\\", dragEnd);\\n if (!moved) {\\n e_preventDefault(e);\\n if (!behavior.addNew)\\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\\n if (webkit || ie && ie_version == 9)\\n { setTimeout(function () {document.body.focus(); display.input.focus();}, 20); }\\n else\\n { display.input.focus(); }\\n }\\n });\\n var mouseMove = function(e2) {\\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\\n };\\n var dragStart = function () { return moved = true; };\\n // Let the drag handler handle this.\\n if (webkit) { display.scroller.draggable = true; }\\n cm.state.draggingText = dragEnd;\\n dragEnd.copy = !behavior.moveOnDrag;\\n // IE's approach to draggable\\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\\n on(document, \\\"mouseup\\\", dragEnd);\\n on(document, \\\"mousemove\\\", mouseMove);\\n on(display.scroller, \\\"dragstart\\\", dragStart);\\n on(display.scroller, \\\"drop\\\", dragEnd);\\n\\n delayBlurEvent(cm);\\n setTimeout(function () { return display.input.focus(); }, 20);\\n}\\n\\nfunction rangeForUnit(cm, pos, unit) {\\n if (unit == \\\"char\\\") { return new Range(pos, pos) }\\n if (unit == \\\"word\\\") { return cm.findWordAt(pos) }\\n if (unit == \\\"line\\\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\\n var result = unit(cm, pos);\\n return new Range(result.from, result.to)\\n}\\n\\n// Normal selection, as opposed to text dragging.\\nfunction leftButtonSelect(cm, event, start, behavior) {\\n var display = cm.display, doc = cm.doc;\\n e_preventDefault(event);\\n\\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\\n if (behavior.addNew && !behavior.extend) {\\n ourIndex = doc.sel.contains(start);\\n if (ourIndex > -1)\\n { ourRange = ranges[ourIndex]; }\\n else\\n { ourRange = new Range(start, start); }\\n } else {\\n ourRange = doc.sel.primary();\\n ourIndex = doc.sel.primIndex;\\n }\\n\\n if (behavior.unit == \\\"rectangle\\\") {\\n if (!behavior.addNew) { ourRange = new Range(start, start); }\\n start = posFromMouse(cm, event, true, true);\\n ourIndex = -1;\\n } else {\\n var range$$1 = rangeForUnit(cm, start, behavior.unit);\\n if (behavior.extend)\\n { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); }\\n else\\n { ourRange = range$$1; }\\n }\\n\\n if (!behavior.addNew) {\\n ourIndex = 0;\\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\\n startSel = doc.sel;\\n } else if (ourIndex == -1) {\\n ourIndex = ranges.length;\\n setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),\\n {scroll: false, origin: \\\"*mouse\\\"});\\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \\\"char\\\" && !behavior.extend) {\\n setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\\n {scroll: false, origin: \\\"*mouse\\\"});\\n startSel = doc.sel;\\n } else {\\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\\n }\\n\\n var lastPos = start;\\n function extendTo(pos) {\\n if (cmp(lastPos, pos) == 0) { return }\\n lastPos = pos;\\n\\n if (behavior.unit == \\\"rectangle\\\") {\\n var ranges = [], tabSize = cm.options.tabSize;\\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\\n line <= end; line++) {\\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\\n if (left == right)\\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\\n else if (text.length > leftPos)\\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\\n }\\n if (!ranges.length) { ranges.push(new Range(start, start)); }\\n setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\\n {origin: \\\"*mouse\\\", scroll: false});\\n cm.scrollIntoView(pos);\\n } else {\\n var oldRange = ourRange;\\n var range$$1 = rangeForUnit(cm, pos, behavior.unit);\\n var anchor = oldRange.anchor, head;\\n if (cmp(range$$1.anchor, anchor) > 0) {\\n head = range$$1.head;\\n anchor = minPos(oldRange.from(), range$$1.anchor);\\n } else {\\n head = range$$1.anchor;\\n anchor = maxPos(oldRange.to(), range$$1.head);\\n }\\n var ranges$1 = startSel.ranges.slice(0);\\n ranges$1[ourIndex] = new Range(clipPos(doc, anchor), head);\\n setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse);\\n }\\n }\\n\\n var editorSize = display.wrapper.getBoundingClientRect();\\n // Used to ensure timeout re-tries don't fire when another extend\\n // happened in the meantime (clearTimeout isn't reliable -- at\\n // least on Chrome, the timeouts still happen even when cleared,\\n // if the clear happens after their scheduled firing time).\\n var counter = 0;\\n\\n function extend(e) {\\n var curCount = ++counter;\\n var cur = posFromMouse(cm, e, true, behavior.unit == \\\"rectangle\\\");\\n if (!cur) { return }\\n if (cmp(cur, lastPos) != 0) {\\n cm.curOp.focus = activeElt();\\n extendTo(cur);\\n var visible = visibleLines(display, doc);\\n if (cur.line >= visible.to || cur.line < visible.from)\\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\\n } else {\\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\\n if (outside) { setTimeout(operation(cm, function () {\\n if (counter != curCount) { return }\\n display.scroller.scrollTop += outside;\\n extend(e);\\n }), 50); }\\n }\\n }\\n\\n function done(e) {\\n cm.state.selectingText = false;\\n counter = Infinity;\\n e_preventDefault(e);\\n display.input.focus();\\n off(document, \\\"mousemove\\\", move);\\n off(document, \\\"mouseup\\\", up);\\n doc.history.lastSelOrigin = null;\\n }\\n\\n var move = operation(cm, function (e) {\\n if (!e_button(e)) { done(e); }\\n else { extend(e); }\\n });\\n var up = operation(cm, done);\\n cm.state.selectingText = up;\\n on(document, \\\"mousemove\\\", move);\\n on(document, \\\"mouseup\\\", up);\\n}\\n\\n\\n// Determines whether an event happened in the gutter, and fires the\\n// handlers for the corresponding event.\\nfunction gutterEvent(cm, e, type, prevent) {\\n var mX, mY;\\n try { mX = e.clientX; mY = e.clientY; }\\n catch(e) { return false }\\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\\n if (prevent) { e_preventDefault(e); }\\n\\n var display = cm.display;\\n var lineBox = display.lineDiv.getBoundingClientRect();\\n\\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\\n mY -= lineBox.top - display.viewOffset;\\n\\n for (var i = 0; i < cm.options.gutters.length; ++i) {\\n var g = display.gutters.childNodes[i];\\n if (g && g.getBoundingClientRect().right >= mX) {\\n var line = lineAtHeight(cm.doc, mY);\\n var gutter = cm.options.gutters[i];\\n signal(cm, type, cm, line, gutter, e);\\n return e_defaultPrevented(e)\\n }\\n }\\n}\\n\\nfunction clickInGutter(cm, e) {\\n return gutterEvent(cm, e, \\\"gutterClick\\\", true)\\n}\\n\\n// CONTEXT MENU HANDLING\\n\\n// To make the context menu work, we need to briefly unhide the\\n// textarea (making it as unobtrusive as possible) to let the\\n// right-click take effect on it.\\nfunction onContextMenu(cm, e) {\\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\\n if (signalDOMEvent(cm, e, \\\"contextmenu\\\")) { return }\\n cm.display.input.onContextMenu(e);\\n}\\n\\nfunction contextMenuInGutter(cm, e) {\\n if (!hasHandler(cm, \\\"gutterContextMenu\\\")) { return false }\\n return gutterEvent(cm, e, \\\"gutterContextMenu\\\", false)\\n}\\n\\nfunction themeChanged(cm) {\\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\\\s*cm-s-\\\\S+/g, \\\"\\\") +\\n cm.options.theme.replace(/(^|\\\\s)\\\\s*/g, \\\" cm-s-\\\");\\n clearCaches(cm);\\n}\\n\\nvar Init = {toString: function(){return \\\"CodeMirror.Init\\\"}};\\n\\nvar defaults = {};\\nvar optionHandlers = {};\\n\\nfunction defineOptions(CodeMirror) {\\n var optionHandlers = CodeMirror.optionHandlers;\\n\\n function option(name, deflt, handle, notOnInit) {\\n CodeMirror.defaults[name] = deflt;\\n if (handle) { optionHandlers[name] =\\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\\n }\\n\\n CodeMirror.defineOption = option;\\n\\n // Passed to option handlers when there is no old value.\\n CodeMirror.Init = Init;\\n\\n // These two are, on init, called from the constructor because they\\n // have to be initialized before the editor can start at all.\\n option(\\\"value\\\", \\\"\\\", function (cm, val) { return cm.setValue(val); }, true);\\n option(\\\"mode\\\", null, function (cm, val) {\\n cm.doc.modeOption = val;\\n loadMode(cm);\\n }, true);\\n\\n option(\\\"indentUnit\\\", 2, loadMode, true);\\n option(\\\"indentWithTabs\\\", false);\\n option(\\\"smartIndent\\\", true);\\n option(\\\"tabSize\\\", 4, function (cm) {\\n resetModeState(cm);\\n clearCaches(cm);\\n regChange(cm);\\n }, true);\\n option(\\\"lineSeparator\\\", null, function (cm, val) {\\n cm.doc.lineSep = val;\\n if (!val) { return }\\n var newBreaks = [], lineNo = cm.doc.first;\\n cm.doc.iter(function (line) {\\n for (var pos = 0;;) {\\n var found = line.text.indexOf(val, pos);\\n if (found == -1) { break }\\n pos = found + val.length;\\n newBreaks.push(Pos(lineNo, found));\\n }\\n lineNo++;\\n });\\n for (var i = newBreaks.length - 1; i >= 0; i--)\\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\\n });\\n option(\\\"specialChars\\\", /[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u061c\\\\u200b-\\\\u200f\\\\u2028\\\\u2029\\\\ufeff]/g, function (cm, val, old) {\\n cm.state.specialChars = new RegExp(val.source + (val.test(\\\"\\\\t\\\") ? \\\"\\\" : \\\"|\\\\t\\\"), \\\"g\\\");\\n if (old != Init) { cm.refresh(); }\\n });\\n option(\\\"specialCharPlaceholder\\\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\\n option(\\\"electricChars\\\", true);\\n option(\\\"inputStyle\\\", mobile ? \\\"contenteditable\\\" : \\\"textarea\\\", function () {\\n throw new Error(\\\"inputStyle can not (yet) be changed in a running editor\\\") // FIXME\\n }, true);\\n option(\\\"spellcheck\\\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\\n option(\\\"rtlMoveVisually\\\", !windows);\\n option(\\\"wholeLineUpdateBefore\\\", true);\\n\\n option(\\\"theme\\\", \\\"default\\\", function (cm) {\\n themeChanged(cm);\\n guttersChanged(cm);\\n }, true);\\n option(\\\"keyMap\\\", \\\"default\\\", function (cm, val, old) {\\n var next = getKeyMap(val);\\n var prev = old != Init && getKeyMap(old);\\n if (prev && prev.detach) { prev.detach(cm, next); }\\n if (next.attach) { next.attach(cm, prev || null); }\\n });\\n option(\\\"extraKeys\\\", null);\\n option(\\\"configureMouse\\\", null);\\n\\n option(\\\"lineWrapping\\\", false, wrappingChanged, true);\\n option(\\\"gutters\\\", [], function (cm) {\\n setGuttersForLineNumbers(cm.options);\\n guttersChanged(cm);\\n }, true);\\n option(\\\"fixedGutter\\\", true, function (cm, val) {\\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \\\"px\\\" : \\\"0\\\";\\n cm.refresh();\\n }, true);\\n option(\\\"coverGutterNextToScrollbar\\\", false, function (cm) { return updateScrollbars(cm); }, true);\\n option(\\\"scrollbarStyle\\\", \\\"native\\\", function (cm) {\\n initScrollbars(cm);\\n updateScrollbars(cm);\\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\\n }, true);\\n option(\\\"lineNumbers\\\", false, function (cm) {\\n setGuttersForLineNumbers(cm.options);\\n guttersChanged(cm);\\n }, true);\\n option(\\\"firstLineNumber\\\", 1, guttersChanged, true);\\n option(\\\"lineNumberFormatter\\\", function (integer) { return integer; }, guttersChanged, true);\\n option(\\\"showCursorWhenSelecting\\\", false, updateSelection, true);\\n\\n option(\\\"resetSelectionOnContextMenu\\\", true);\\n option(\\\"lineWiseCopyCut\\\", true);\\n option(\\\"pasteLinesPerSelection\\\", true);\\n\\n option(\\\"readOnly\\\", false, function (cm, val) {\\n if (val == \\\"nocursor\\\") {\\n onBlur(cm);\\n cm.display.input.blur();\\n }\\n cm.display.input.readOnlyChanged(val);\\n });\\n option(\\\"disableInput\\\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\\n option(\\\"dragDrop\\\", true, dragDropChanged);\\n option(\\\"allowDropFileTypes\\\", null);\\n\\n option(\\\"cursorBlinkRate\\\", 530);\\n option(\\\"cursorScrollMargin\\\", 0);\\n option(\\\"cursorHeight\\\", 1, updateSelection, true);\\n option(\\\"singleCursorHeightPerLine\\\", true, updateSelection, true);\\n option(\\\"workTime\\\", 100);\\n option(\\\"workDelay\\\", 100);\\n option(\\\"flattenSpans\\\", true, resetModeState, true);\\n option(\\\"addModeClass\\\", false, resetModeState, true);\\n option(\\\"pollInterval\\\", 100);\\n option(\\\"undoDepth\\\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\\n option(\\\"historyEventDelay\\\", 1250);\\n option(\\\"viewportMargin\\\", 10, function (cm) { return cm.refresh(); }, true);\\n option(\\\"maxHighlightLength\\\", 10000, resetModeState, true);\\n option(\\\"moveInputWithCursor\\\", true, function (cm, val) {\\n if (!val) { cm.display.input.resetPosition(); }\\n });\\n\\n option(\\\"tabindex\\\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \\\"\\\"; });\\n option(\\\"autofocus\\\", null);\\n option(\\\"direction\\\", \\\"ltr\\\", function (cm, val) { return cm.doc.setDirection(val); }, true);\\n}\\n\\nfunction guttersChanged(cm) {\\n updateGutters(cm);\\n regChange(cm);\\n alignHorizontally(cm);\\n}\\n\\nfunction dragDropChanged(cm, value, old) {\\n var wasOn = old && old != Init;\\n if (!value != !wasOn) {\\n var funcs = cm.display.dragFunctions;\\n var toggle = value ? on : off;\\n toggle(cm.display.scroller, \\\"dragstart\\\", funcs.start);\\n toggle(cm.display.scroller, \\\"dragenter\\\", funcs.enter);\\n toggle(cm.display.scroller, \\\"dragover\\\", funcs.over);\\n toggle(cm.display.scroller, \\\"dragleave\\\", funcs.leave);\\n toggle(cm.display.scroller, \\\"drop\\\", funcs.drop);\\n }\\n}\\n\\nfunction wrappingChanged(cm) {\\n if (cm.options.lineWrapping) {\\n addClass(cm.display.wrapper, \\\"CodeMirror-wrap\\\");\\n cm.display.sizer.style.minWidth = \\\"\\\";\\n cm.display.sizerWidth = null;\\n } else {\\n rmClass(cm.display.wrapper, \\\"CodeMirror-wrap\\\");\\n findMaxLine(cm);\\n }\\n estimateLineHeights(cm);\\n regChange(cm);\\n clearCaches(cm);\\n setTimeout(function () { return updateScrollbars(cm); }, 100);\\n}\\n\\n// A CodeMirror instance represents an editor. This is the object\\n// that user code is usually dealing with.\\n\\nfunction CodeMirror$1(place, options) {\\n var this$1 = this;\\n\\n if (!(this instanceof CodeMirror$1)) { return new CodeMirror$1(place, options) }\\n\\n this.options = options = options ? copyObj(options) : {};\\n // Determine effective options based on given values and defaults.\\n copyObj(defaults, options, false);\\n setGuttersForLineNumbers(options);\\n\\n var doc = options.value;\\n if (typeof doc == \\\"string\\\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\\n this.doc = doc;\\n\\n var input = new CodeMirror$1.inputStyles[options.inputStyle](this);\\n var display = this.display = new Display(place, doc, input);\\n display.wrapper.CodeMirror = this;\\n updateGutters(this);\\n themeChanged(this);\\n if (options.lineWrapping)\\n { this.display.wrapper.className += \\\" CodeMirror-wrap\\\"; }\\n initScrollbars(this);\\n\\n this.state = {\\n keyMaps: [], // stores maps added by addKeyMap\\n overlays: [], // highlighting overlays, as added by addOverlay\\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\\n overwrite: false,\\n delayingBlurEvent: false,\\n focused: false,\\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\\n pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll\\n selectingText: false,\\n draggingText: false,\\n highlight: new Delayed(), // stores highlight worker timeout\\n keySeq: null, // Unfinished key sequence\\n specialChars: null\\n };\\n\\n if (options.autofocus && !mobile) { display.input.focus(); }\\n\\n // Override magic textarea content restore that IE sometimes does\\n // on our hidden textarea on reload\\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\\n\\n registerEventHandlers(this);\\n ensureGlobalHandlers();\\n\\n startOperation(this);\\n this.curOp.forceUpdate = true;\\n attachDoc(this, doc);\\n\\n if ((options.autofocus && !mobile) || this.hasFocus())\\n { setTimeout(bind(onFocus, this), 20); }\\n else\\n { onBlur(this); }\\n\\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\\n { optionHandlers[opt](this$1, options[opt], Init); } }\\n maybeUpdateLineNumberWidth(this);\\n if (options.finishInit) { options.finishInit(this); }\\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\\n endOperation(this);\\n // Suppress optimizelegibility in Webkit, since it breaks text\\n // measuring on line wrapping boundaries.\\n if (webkit && options.lineWrapping &&\\n getComputedStyle(display.lineDiv).textRendering == \\\"optimizelegibility\\\")\\n { display.lineDiv.style.textRendering = \\\"auto\\\"; }\\n}\\n\\n// The default configuration options.\\nCodeMirror$1.defaults = defaults;\\n// Functions to run when options are changed.\\nCodeMirror$1.optionHandlers = optionHandlers;\\n\\n// Attach the necessary event handlers when initializing the editor\\nfunction registerEventHandlers(cm) {\\n var d = cm.display;\\n on(d.scroller, \\\"mousedown\\\", operation(cm, onMouseDown));\\n // Older IE's will not fire a second mousedown for a double click\\n if (ie && ie_version < 11)\\n { on(d.scroller, \\\"dblclick\\\", operation(cm, function (e) {\\n if (signalDOMEvent(cm, e)) { return }\\n var pos = posFromMouse(cm, e);\\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\\n e_preventDefault(e);\\n var word = cm.findWordAt(pos);\\n extendSelection(cm.doc, word.anchor, word.head);\\n })); }\\n else\\n { on(d.scroller, \\\"dblclick\\\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\\n // Some browsers fire contextmenu *after* opening the menu, at\\n // which point we can't mess with it anymore. Context menu is\\n // handled in onMouseDown for these browsers.\\n if (!captureRightClick) { on(d.scroller, \\\"contextmenu\\\", function (e) { return onContextMenu(cm, e); }); }\\n\\n // Used to suppress mouse event handling when a touch happens\\n var touchFinished, prevTouch = {end: 0};\\n function finishTouch() {\\n if (d.activeTouch) {\\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\\n prevTouch = d.activeTouch;\\n prevTouch.end = +new Date;\\n }\\n }\\n function isMouseLikeTouchEvent(e) {\\n if (e.touches.length != 1) { return false }\\n var touch = e.touches[0];\\n return touch.radiusX <= 1 && touch.radiusY <= 1\\n }\\n function farAway(touch, other) {\\n if (other.left == null) { return true }\\n var dx = other.left - touch.left, dy = other.top - touch.top;\\n return dx * dx + dy * dy > 20 * 20\\n }\\n on(d.scroller, \\\"touchstart\\\", function (e) {\\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) {\\n d.input.ensurePolled();\\n clearTimeout(touchFinished);\\n var now = +new Date;\\n d.activeTouch = {start: now, moved: false,\\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\\n if (e.touches.length == 1) {\\n d.activeTouch.left = e.touches[0].pageX;\\n d.activeTouch.top = e.touches[0].pageY;\\n }\\n }\\n });\\n on(d.scroller, \\\"touchmove\\\", function () {\\n if (d.activeTouch) { d.activeTouch.moved = true; }\\n });\\n on(d.scroller, \\\"touchend\\\", function (e) {\\n var touch = d.activeTouch;\\n if (touch && !eventInWidget(d, e) && touch.left != null &&\\n !touch.moved && new Date - touch.start < 300) {\\n var pos = cm.coordsChar(d.activeTouch, \\\"page\\\"), range;\\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\\n { range = new Range(pos, pos); }\\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\\n { range = cm.findWordAt(pos); }\\n else // Triple tap\\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\\n cm.setSelection(range.anchor, range.head);\\n cm.focus();\\n e_preventDefault(e);\\n }\\n finishTouch();\\n });\\n on(d.scroller, \\\"touchcancel\\\", finishTouch);\\n\\n // Sync scrolling between fake scrollbars and real scrollable\\n // area, ensure viewport is updated when scrolling.\\n on(d.scroller, \\\"scroll\\\", function () {\\n if (d.scroller.clientHeight) {\\n updateScrollTop(cm, d.scroller.scrollTop);\\n setScrollLeft(cm, d.scroller.scrollLeft, true);\\n signal(cm, \\\"scroll\\\", cm);\\n }\\n });\\n\\n // Listen to wheel events in order to try and update the viewport on time.\\n on(d.scroller, \\\"mousewheel\\\", function (e) { return onScrollWheel(cm, e); });\\n on(d.scroller, \\\"DOMMouseScroll\\\", function (e) { return onScrollWheel(cm, e); });\\n\\n // Prevent wrapper from ever scrolling\\n on(d.wrapper, \\\"scroll\\\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\\n\\n d.dragFunctions = {\\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\\n start: function (e) { return onDragStart(cm, e); },\\n drop: operation(cm, onDrop),\\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\\n };\\n\\n var inp = d.input.getField();\\n on(inp, \\\"keyup\\\", function (e) { return onKeyUp.call(cm, e); });\\n on(inp, \\\"keydown\\\", operation(cm, onKeyDown));\\n on(inp, \\\"keypress\\\", operation(cm, onKeyPress));\\n on(inp, \\\"focus\\\", function (e) { return onFocus(cm, e); });\\n on(inp, \\\"blur\\\", function (e) { return onBlur(cm, e); });\\n}\\n\\nvar initHooks = [];\\nCodeMirror$1.defineInitHook = function (f) { return initHooks.push(f); };\\n\\n// Indent the given line. The how parameter can be \\\"smart\\\",\\n// \\\"add\\\"/null, \\\"subtract\\\", or \\\"prev\\\". When aggressive is false\\n// (typically set to true for forced single-line indents), empty\\n// lines are not indented, and places where the mode returns Pass\\n// are left alone.\\nfunction indentLine(cm, n, how, aggressive) {\\n var doc = cm.doc, state;\\n if (how == null) { how = \\\"add\\\"; }\\n if (how == \\\"smart\\\") {\\n // Fall back to \\\"prev\\\" when the mode doesn't have an indentation\\n // method.\\n if (!doc.mode.indent) { how = \\\"prev\\\"; }\\n else { state = getContextBefore(cm, n).state; }\\n }\\n\\n var tabSize = cm.options.tabSize;\\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\\n if (line.stateAfter) { line.stateAfter = null; }\\n var curSpaceString = line.text.match(/^\\\\s*/)[0], indentation;\\n if (!aggressive && !/\\\\S/.test(line.text)) {\\n indentation = 0;\\n how = \\\"not\\\";\\n } else if (how == \\\"smart\\\") {\\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\\n if (indentation == Pass || indentation > 150) {\\n if (!aggressive) { return }\\n how = \\\"prev\\\";\\n }\\n }\\n if (how == \\\"prev\\\") {\\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\\n else { indentation = 0; }\\n } else if (how == \\\"add\\\") {\\n indentation = curSpace + cm.options.indentUnit;\\n } else if (how == \\\"subtract\\\") {\\n indentation = curSpace - cm.options.indentUnit;\\n } else if (typeof how == \\\"number\\\") {\\n indentation = curSpace + how;\\n }\\n indentation = Math.max(0, indentation);\\n\\n var indentString = \\\"\\\", pos = 0;\\n if (cm.options.indentWithTabs)\\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \\\"\\\\t\\\";} }\\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\\n\\n if (indentString != curSpaceString) {\\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \\\"+input\\\");\\n line.stateAfter = null;\\n return true\\n } else {\\n // Ensure that, if the cursor was in the whitespace at the start\\n // of the line, it is moved to the end of that space.\\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\\n var range = doc.sel.ranges[i$1];\\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\\n var pos$1 = Pos(n, curSpaceString.length);\\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\\n break\\n }\\n }\\n }\\n}\\n\\n// This will be set to a {lineWise: bool, text: [string]} object, so\\n// that, when pasting, we know what kind of selections the copied\\n// text was made out of.\\nvar lastCopied = null;\\n\\nfunction setLastCopied(newLastCopied) {\\n lastCopied = newLastCopied;\\n}\\n\\nfunction applyTextInput(cm, inserted, deleted, sel, origin) {\\n var doc = cm.doc;\\n cm.display.shift = false;\\n if (!sel) { sel = doc.sel; }\\n\\n var paste = cm.state.pasteIncoming || origin == \\\"paste\\\";\\n var textLines = splitLinesAuto(inserted), multiPaste = null;\\n // When pasing N lines into N selections, insert one line per selection\\n if (paste && sel.ranges.length > 1) {\\n if (lastCopied && lastCopied.text.join(\\\"\\\\n\\\") == inserted) {\\n if (sel.ranges.length % lastCopied.text.length == 0) {\\n multiPaste = [];\\n for (var i = 0; i < lastCopied.text.length; i++)\\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\\n }\\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\\n multiPaste = map(textLines, function (l) { return [l]; });\\n }\\n }\\n\\n var updateInput;\\n // Normal behavior is to insert the new text into every selection\\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\\n var range$$1 = sel.ranges[i$1];\\n var from = range$$1.from(), to = range$$1.to();\\n if (range$$1.empty()) {\\n if (deleted && deleted > 0) // Handle deletion\\n { from = Pos(from.line, from.ch - deleted); }\\n else if (cm.state.overwrite && !paste) // Handle overwrite\\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\\n else if (lastCopied && lastCopied.lineWise && lastCopied.text.join(\\\"\\\\n\\\") == inserted)\\n { from = to = Pos(from.line, 0); }\\n }\\n updateInput = cm.curOp.updateInput;\\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\\n origin: origin || (paste ? \\\"paste\\\" : cm.state.cutIncoming ? \\\"cut\\\" : \\\"+input\\\")};\\n makeChange(cm.doc, changeEvent);\\n signalLater(cm, \\\"inputRead\\\", cm, changeEvent);\\n }\\n if (inserted && !paste)\\n { triggerElectric(cm, inserted); }\\n\\n ensureCursorVisible(cm);\\n cm.curOp.updateInput = updateInput;\\n cm.curOp.typing = true;\\n cm.state.pasteIncoming = cm.state.cutIncoming = false;\\n}\\n\\nfunction handlePaste(e, cm) {\\n var pasted = e.clipboardData && e.clipboardData.getData(\\\"Text\\\");\\n if (pasted) {\\n e.preventDefault();\\n if (!cm.isReadOnly() && !cm.options.disableInput)\\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \\\"paste\\\"); }); }\\n return true\\n }\\n}\\n\\nfunction triggerElectric(cm, inserted) {\\n // When an 'electric' character is inserted, immediately trigger a reindent\\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\\n var sel = cm.doc.sel;\\n\\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\\n var range$$1 = sel.ranges[i];\\n if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\\n var mode = cm.getModeAt(range$$1.head);\\n var indented = false;\\n if (mode.electricChars) {\\n for (var j = 0; j < mode.electricChars.length; j++)\\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\\n indented = indentLine(cm, range$$1.head.line, \\\"smart\\\");\\n break\\n } }\\n } else if (mode.electricInput) {\\n if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\\n { indented = indentLine(cm, range$$1.head.line, \\\"smart\\\"); }\\n }\\n if (indented) { signalLater(cm, \\\"electricInput\\\", cm, range$$1.head.line); }\\n }\\n}\\n\\nfunction copyableRanges(cm) {\\n var text = [], ranges = [];\\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\\n var line = cm.doc.sel.ranges[i].head.line;\\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\\n ranges.push(lineRange);\\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\\n }\\n return {text: text, ranges: ranges}\\n}\\n\\nfunction disableBrowserMagic(field, spellcheck) {\\n field.setAttribute(\\\"autocorrect\\\", \\\"off\\\");\\n field.setAttribute(\\\"autocapitalize\\\", \\\"off\\\");\\n field.setAttribute(\\\"spellcheck\\\", !!spellcheck);\\n}\\n\\nfunction hiddenTextarea() {\\n var te = elt(\\\"textarea\\\", null, null, \\\"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\\\");\\n var div = elt(\\\"div\\\", [te], null, \\\"overflow: hidden; position: relative; width: 3px; height: 0px;\\\");\\n // The textarea is kept positioned near the cursor to prevent the\\n // fact that it'll be scrolled into view on input from scrolling\\n // our fake cursor out of view. On webkit, when wrap=off, paste is\\n // very slow. So make the area wide instead.\\n if (webkit) { te.style.width = \\\"1000px\\\"; }\\n else { te.setAttribute(\\\"wrap\\\", \\\"off\\\"); }\\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\\n if (ios) { te.style.border = \\\"1px solid black\\\"; }\\n disableBrowserMagic(te);\\n return div\\n}\\n\\n// The publicly visible API. Note that methodOp(f) means\\n// 'wrap f in an operation, performed on its `this` parameter'.\\n\\n// This is not the complete set of editor methods. Most of the\\n// methods defined on the Doc type are also injected into\\n// CodeMirror.prototype, for backwards compatibility and\\n// convenience.\\n\\nvar addEditorMethods = function(CodeMirror) {\\n var optionHandlers = CodeMirror.optionHandlers;\\n\\n var helpers = CodeMirror.helpers = {};\\n\\n CodeMirror.prototype = {\\n constructor: CodeMirror,\\n focus: function(){window.focus(); this.display.input.focus();},\\n\\n setOption: function(option, value) {\\n var options = this.options, old = options[option];\\n if (options[option] == value && option != \\\"mode\\\") { return }\\n options[option] = value;\\n if (optionHandlers.hasOwnProperty(option))\\n { operation(this, optionHandlers[option])(this, value, old); }\\n signal(this, \\\"optionChange\\\", this, option);\\n },\\n\\n getOption: function(option) {return this.options[option]},\\n getDoc: function() {return this.doc},\\n\\n addKeyMap: function(map$$1, bottom) {\\n this.state.keyMaps[bottom ? \\\"push\\\" : \\\"unshift\\\"](getKeyMap(map$$1));\\n },\\n removeKeyMap: function(map$$1) {\\n var maps = this.state.keyMaps;\\n for (var i = 0; i < maps.length; ++i)\\n { if (maps[i] == map$$1 || maps[i].name == map$$1) {\\n maps.splice(i, 1);\\n return true\\n } }\\n },\\n\\n addOverlay: methodOp(function(spec, options) {\\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\\n if (mode.startState) { throw new Error(\\\"Overlays may not be stateful.\\\") }\\n insertSorted(this.state.overlays,\\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\\n priority: (options && options.priority) || 0},\\n function (overlay) { return overlay.priority; });\\n this.state.modeGen++;\\n regChange(this);\\n }),\\n removeOverlay: methodOp(function(spec) {\\n var this$1 = this;\\n\\n var overlays = this.state.overlays;\\n for (var i = 0; i < overlays.length; ++i) {\\n var cur = overlays[i].modeSpec;\\n if (cur == spec || typeof spec == \\\"string\\\" && cur.name == spec) {\\n overlays.splice(i, 1);\\n this$1.state.modeGen++;\\n regChange(this$1);\\n return\\n }\\n }\\n }),\\n\\n indentLine: methodOp(function(n, dir, aggressive) {\\n if (typeof dir != \\\"string\\\" && typeof dir != \\\"number\\\") {\\n if (dir == null) { dir = this.options.smartIndent ? \\\"smart\\\" : \\\"prev\\\"; }\\n else { dir = dir ? \\\"add\\\" : \\\"subtract\\\"; }\\n }\\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\\n }),\\n indentSelection: methodOp(function(how) {\\n var this$1 = this;\\n\\n var ranges = this.doc.sel.ranges, end = -1;\\n for (var i = 0; i < ranges.length; i++) {\\n var range$$1 = ranges[i];\\n if (!range$$1.empty()) {\\n var from = range$$1.from(), to = range$$1.to();\\n var start = Math.max(end, from.line);\\n end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\\n for (var j = start; j < end; ++j)\\n { indentLine(this$1, j, how); }\\n var newRanges = this$1.doc.sel.ranges;\\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\\n { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\\n } else if (range$$1.head.line > end) {\\n indentLine(this$1, range$$1.head.line, how, true);\\n end = range$$1.head.line;\\n if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\\n }\\n }\\n }),\\n\\n // Fetch the parser token for a given character. Useful for hacks\\n // that want to inspect the mode state (say, for completion).\\n getTokenAt: function(pos, precise) {\\n return takeToken(this, pos, precise)\\n },\\n\\n getLineTokens: function(line, precise) {\\n return takeToken(this, Pos(line), precise, true)\\n },\\n\\n getTokenTypeAt: function(pos) {\\n pos = clipPos(this.doc, pos);\\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\\n var type;\\n if (ch == 0) { type = styles[2]; }\\n else { for (;;) {\\n var mid = (before + after) >> 1;\\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\\n else { type = styles[mid * 2 + 2]; break }\\n } }\\n var cut = type ? type.indexOf(\\\"overlay \\\") : -1;\\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\\n },\\n\\n getModeAt: function(pos) {\\n var mode = this.doc.mode;\\n if (!mode.innerMode) { return mode }\\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\\n },\\n\\n getHelper: function(pos, type) {\\n return this.getHelpers(pos, type)[0]\\n },\\n\\n getHelpers: function(pos, type) {\\n var this$1 = this;\\n\\n var found = [];\\n if (!helpers.hasOwnProperty(type)) { return found }\\n var help = helpers[type], mode = this.getModeAt(pos);\\n if (typeof mode[type] == \\\"string\\\") {\\n if (help[mode[type]]) { found.push(help[mode[type]]); }\\n } else if (mode[type]) {\\n for (var i = 0; i < mode[type].length; i++) {\\n var val = help[mode[type][i]];\\n if (val) { found.push(val); }\\n }\\n } else if (mode.helperType && help[mode.helperType]) {\\n found.push(help[mode.helperType]);\\n } else if (help[mode.name]) {\\n found.push(help[mode.name]);\\n }\\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\\n var cur = help._global[i$1];\\n if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\\n { found.push(cur.val); }\\n }\\n return found\\n },\\n\\n getStateAfter: function(line, precise) {\\n var doc = this.doc;\\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\\n return getContextBefore(this, line + 1, precise).state\\n },\\n\\n cursorCoords: function(start, mode) {\\n var pos, range$$1 = this.doc.sel.primary();\\n if (start == null) { pos = range$$1.head; }\\n else if (typeof start == \\\"object\\\") { pos = clipPos(this.doc, start); }\\n else { pos = start ? range$$1.from() : range$$1.to(); }\\n return cursorCoords(this, pos, mode || \\\"page\\\")\\n },\\n\\n charCoords: function(pos, mode) {\\n return charCoords(this, clipPos(this.doc, pos), mode || \\\"page\\\")\\n },\\n\\n coordsChar: function(coords, mode) {\\n coords = fromCoordSystem(this, coords, mode || \\\"page\\\");\\n return coordsChar(this, coords.left, coords.top)\\n },\\n\\n lineAtHeight: function(height, mode) {\\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \\\"page\\\").top;\\n return lineAtHeight(this.doc, height + this.display.viewOffset)\\n },\\n heightAtLine: function(line, mode, includeWidgets) {\\n var end = false, lineObj;\\n if (typeof line == \\\"number\\\") {\\n var last = this.doc.first + this.doc.size - 1;\\n if (line < this.doc.first) { line = this.doc.first; }\\n else if (line > last) { line = last; end = true; }\\n lineObj = getLine(this.doc, line);\\n } else {\\n lineObj = line;\\n }\\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \\\"page\\\", includeWidgets || end).top +\\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\\n },\\n\\n defaultTextHeight: function() { return textHeight(this.display) },\\n defaultCharWidth: function() { return charWidth(this.display) },\\n\\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\\n\\n addWidget: function(pos, node, scroll, vert, horiz) {\\n var display = this.display;\\n pos = cursorCoords(this, clipPos(this.doc, pos));\\n var top = pos.bottom, left = pos.left;\\n node.style.position = \\\"absolute\\\";\\n node.setAttribute(\\\"cm-ignore-events\\\", \\\"true\\\");\\n this.display.input.setUneditable(node);\\n display.sizer.appendChild(node);\\n if (vert == \\\"over\\\") {\\n top = pos.top;\\n } else if (vert == \\\"above\\\" || vert == \\\"near\\\") {\\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\\n // Default to positioning above (if specified and possible); otherwise default to positioning below\\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\\n { top = pos.top - node.offsetHeight; }\\n else if (pos.bottom + node.offsetHeight <= vspace)\\n { top = pos.bottom; }\\n if (left + node.offsetWidth > hspace)\\n { left = hspace - node.offsetWidth; }\\n }\\n node.style.top = top + \\\"px\\\";\\n node.style.left = node.style.right = \\\"\\\";\\n if (horiz == \\\"right\\\") {\\n left = display.sizer.clientWidth - node.offsetWidth;\\n node.style.right = \\\"0px\\\";\\n } else {\\n if (horiz == \\\"left\\\") { left = 0; }\\n else if (horiz == \\\"middle\\\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\\n node.style.left = left + \\\"px\\\";\\n }\\n if (scroll)\\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\\n },\\n\\n triggerOnKeyDown: methodOp(onKeyDown),\\n triggerOnKeyPress: methodOp(onKeyPress),\\n triggerOnKeyUp: onKeyUp,\\n triggerOnMouseDown: methodOp(onMouseDown),\\n\\n execCommand: function(cmd) {\\n if (commands.hasOwnProperty(cmd))\\n { return commands[cmd].call(null, this) }\\n },\\n\\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\\n\\n findPosH: function(from, amount, unit, visually) {\\n var this$1 = this;\\n\\n var dir = 1;\\n if (amount < 0) { dir = -1; amount = -amount; }\\n var cur = clipPos(this.doc, from);\\n for (var i = 0; i < amount; ++i) {\\n cur = findPosH(this$1.doc, cur, dir, unit, visually);\\n if (cur.hitSide) { break }\\n }\\n return cur\\n },\\n\\n moveH: methodOp(function(dir, unit) {\\n var this$1 = this;\\n\\n this.extendSelectionsBy(function (range$$1) {\\n if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\\n { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\\n else\\n { return dir < 0 ? range$$1.from() : range$$1.to() }\\n }, sel_move);\\n }),\\n\\n deleteH: methodOp(function(dir, unit) {\\n var sel = this.doc.sel, doc = this.doc;\\n if (sel.somethingSelected())\\n { doc.replaceSelection(\\\"\\\", null, \\\"+delete\\\"); }\\n else\\n { deleteNearSelection(this, function (range$$1) {\\n var other = findPosH(doc, range$$1.head, dir, unit, false);\\n return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\\n }); }\\n }),\\n\\n findPosV: function(from, amount, unit, goalColumn) {\\n var this$1 = this;\\n\\n var dir = 1, x = goalColumn;\\n if (amount < 0) { dir = -1; amount = -amount; }\\n var cur = clipPos(this.doc, from);\\n for (var i = 0; i < amount; ++i) {\\n var coords = cursorCoords(this$1, cur, \\\"div\\\");\\n if (x == null) { x = coords.left; }\\n else { coords.left = x; }\\n cur = findPosV(this$1, coords, dir, unit);\\n if (cur.hitSide) { break }\\n }\\n return cur\\n },\\n\\n moveV: methodOp(function(dir, unit) {\\n var this$1 = this;\\n\\n var doc = this.doc, goals = [];\\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\\n doc.extendSelectionsBy(function (range$$1) {\\n if (collapse)\\n { return dir < 0 ? range$$1.from() : range$$1.to() }\\n var headPos = cursorCoords(this$1, range$$1.head, \\\"div\\\");\\n if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\\n goals.push(headPos.left);\\n var pos = findPosV(this$1, headPos, dir, unit);\\n if (unit == \\\"page\\\" && range$$1 == doc.sel.primary())\\n { addToScrollTop(this$1, charCoords(this$1, pos, \\\"div\\\").top - headPos.top); }\\n return pos\\n }, sel_move);\\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\\n }),\\n\\n // Find the word at the given position (as returned by coordsChar).\\n findWordAt: function(pos) {\\n var doc = this.doc, line = getLine(doc, pos.line).text;\\n var start = pos.ch, end = pos.ch;\\n if (line) {\\n var helper = this.getHelper(pos, \\\"wordChars\\\");\\n if ((pos.sticky == \\\"before\\\" || end == line.length) && start) { --start; } else { ++end; }\\n var startChar = line.charAt(start);\\n var check = isWordChar(startChar, helper)\\n ? function (ch) { return isWordChar(ch, helper); }\\n : /\\\\s/.test(startChar) ? function (ch) { return /\\\\s/.test(ch); }\\n : function (ch) { return (!/\\\\s/.test(ch) && !isWordChar(ch)); };\\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\\n while (end < line.length && check(line.charAt(end))) { ++end; }\\n }\\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\\n },\\n\\n toggleOverwrite: function(value) {\\n if (value != null && value == this.state.overwrite) { return }\\n if (this.state.overwrite = !this.state.overwrite)\\n { addClass(this.display.cursorDiv, \\\"CodeMirror-overwrite\\\"); }\\n else\\n { rmClass(this.display.cursorDiv, \\\"CodeMirror-overwrite\\\"); }\\n\\n signal(this, \\\"overwriteToggle\\\", this, this.state.overwrite);\\n },\\n hasFocus: function() { return this.display.input.getField() == activeElt() },\\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\\n\\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\\n getScrollInfo: function() {\\n var scroller = this.display.scroller;\\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\\n },\\n\\n scrollIntoView: methodOp(function(range$$1, margin) {\\n if (range$$1 == null) {\\n range$$1 = {from: this.doc.sel.primary().head, to: null};\\n if (margin == null) { margin = this.options.cursorScrollMargin; }\\n } else if (typeof range$$1 == \\\"number\\\") {\\n range$$1 = {from: Pos(range$$1, 0), to: null};\\n } else if (range$$1.from == null) {\\n range$$1 = {from: range$$1, to: null};\\n }\\n if (!range$$1.to) { range$$1.to = range$$1.from; }\\n range$$1.margin = margin || 0;\\n\\n if (range$$1.from.line != null) {\\n scrollToRange(this, range$$1);\\n } else {\\n scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\\n }\\n }),\\n\\n setSize: methodOp(function(width, height) {\\n var this$1 = this;\\n\\n var interpret = function (val) { return typeof val == \\\"number\\\" || /^\\\\d+$/.test(String(val)) ? val + \\\"px\\\" : val; };\\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\\n var lineNo$$1 = this.display.viewFrom;\\n this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \\\"widget\\\"); break } } }\\n ++lineNo$$1;\\n });\\n this.curOp.forceUpdate = true;\\n signal(this, \\\"refresh\\\", this);\\n }),\\n\\n operation: function(f){return runInOp(this, f)},\\n startOperation: function(){return startOperation(this)},\\n endOperation: function(){return endOperation(this)},\\n\\n refresh: methodOp(function() {\\n var oldHeight = this.display.cachedTextHeight;\\n regChange(this);\\n this.curOp.forceUpdate = true;\\n clearCaches(this);\\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\\n updateGutterSpace(this);\\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\\n { estimateLineHeights(this); }\\n signal(this, \\\"refresh\\\", this);\\n }),\\n\\n swapDoc: methodOp(function(doc) {\\n var old = this.doc;\\n old.cm = null;\\n attachDoc(this, doc);\\n clearCaches(this);\\n this.display.input.reset();\\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\\n this.curOp.forceScroll = true;\\n signalLater(this, \\\"swapDoc\\\", this, old);\\n return old\\n }),\\n\\n getInputField: function(){return this.display.input.getField()},\\n getWrapperElement: function(){return this.display.wrapper},\\n getScrollerElement: function(){return this.display.scroller},\\n getGutterElement: function(){return this.display.gutters}\\n };\\n eventMixin(CodeMirror);\\n\\n CodeMirror.registerHelper = function(type, name, value) {\\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\\n helpers[type][name] = value;\\n };\\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\\n CodeMirror.registerHelper(type, name, value);\\n helpers[type]._global.push({pred: predicate, val: value});\\n };\\n};\\n\\n// Used for horizontal relative motion. Dir is -1 or 1 (left or\\n// right), unit can be \\\"char\\\", \\\"column\\\" (like char, but doesn't\\n// cross line boundaries), \\\"word\\\" (across next word), or \\\"group\\\" (to\\n// the start of next group of word or non-word-non-whitespace\\n// chars). The visually param controls whether, in right-to-left\\n// text, direction 1 means to move towards the next index in the\\n// string, or towards the character to the right of the current\\n// position. The resulting position will have a hitSide=true\\n// property if it reached the end of the document.\\nfunction findPosH(doc, pos, dir, unit, visually) {\\n var oldPos = pos;\\n var origDir = dir;\\n var lineObj = getLine(doc, pos.line);\\n function findNextLine() {\\n var l = pos.line + dir;\\n if (l < doc.first || l >= doc.first + doc.size) { return false }\\n pos = new Pos(l, pos.ch, pos.sticky);\\n return lineObj = getLine(doc, l)\\n }\\n function moveOnce(boundToLine) {\\n var next;\\n if (visually) {\\n next = moveVisually(doc.cm, lineObj, pos, dir);\\n } else {\\n next = moveLogically(lineObj, pos, dir);\\n }\\n if (next == null) {\\n if (!boundToLine && findNextLine())\\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\\n else\\n { return false }\\n } else {\\n pos = next;\\n }\\n return true\\n }\\n\\n if (unit == \\\"char\\\") {\\n moveOnce();\\n } else if (unit == \\\"column\\\") {\\n moveOnce(true);\\n } else if (unit == \\\"word\\\" || unit == \\\"group\\\") {\\n var sawType = null, group = unit == \\\"group\\\";\\n var helper = doc.cm && doc.cm.getHelper(pos, \\\"wordChars\\\");\\n for (var first = true;; first = false) {\\n if (dir < 0 && !moveOnce(!first)) { break }\\n var cur = lineObj.text.charAt(pos.ch) || \\\"\\\\n\\\";\\n var type = isWordChar(cur, helper) ? \\\"w\\\"\\n : group && cur == \\\"\\\\n\\\" ? \\\"n\\\"\\n : !group || /\\\\s/.test(cur) ? null\\n : \\\"p\\\";\\n if (group && !first && !type) { type = \\\"s\\\"; }\\n if (sawType && sawType != type) {\\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \\\"after\\\";}\\n break\\n }\\n\\n if (type) { sawType = type; }\\n if (dir > 0 && !moveOnce(!first)) { break }\\n }\\n }\\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\\n return result\\n}\\n\\n// For relative vertical movement. Dir may be -1 or 1. Unit can be\\n// \\\"page\\\" or \\\"line\\\". The resulting position will have a hitSide=true\\n// property if it reached the end of the document.\\nfunction findPosV(cm, pos, dir, unit) {\\n var doc = cm.doc, x = pos.left, y;\\n if (unit == \\\"page\\\") {\\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\\n\\n } else if (unit == \\\"line\\\") {\\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\\n }\\n var target;\\n for (;;) {\\n target = coordsChar(cm, x, y);\\n if (!target.outside) { break }\\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\\n y += dir * 5;\\n }\\n return target\\n}\\n\\n// CONTENTEDITABLE INPUT STYLE\\n\\nvar ContentEditableInput = function(cm) {\\n this.cm = cm;\\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\\n this.polling = new Delayed();\\n this.composing = null;\\n this.gracePeriod = false;\\n this.readDOMTimeout = null;\\n};\\n\\nContentEditableInput.prototype.init = function (display) {\\n var this$1 = this;\\n\\n var input = this, cm = input.cm;\\n var div = input.div = display.lineDiv;\\n disableBrowserMagic(div, cm.options.spellcheck);\\n\\n on(div, \\\"paste\\\", function (e) {\\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\\n });\\n\\n on(div, \\\"compositionstart\\\", function (e) {\\n this$1.composing = {data: e.data, done: false};\\n });\\n on(div, \\\"compositionupdate\\\", function (e) {\\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\\n });\\n on(div, \\\"compositionend\\\", function (e) {\\n if (this$1.composing) {\\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\\n this$1.composing.done = true;\\n }\\n });\\n\\n on(div, \\\"touchstart\\\", function () { return input.forceCompositionEnd(); });\\n\\n on(div, \\\"input\\\", function () {\\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\\n });\\n\\n function onCopyCut(e) {\\n if (signalDOMEvent(cm, e)) { return }\\n if (cm.somethingSelected()) {\\n setLastCopied({lineWise: false, text: cm.getSelections()});\\n if (e.type == \\\"cut\\\") { cm.replaceSelection(\\\"\\\", null, \\\"cut\\\"); }\\n } else if (!cm.options.lineWiseCopyCut) {\\n return\\n } else {\\n var ranges = copyableRanges(cm);\\n setLastCopied({lineWise: true, text: ranges.text});\\n if (e.type == \\\"cut\\\") {\\n cm.operation(function () {\\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\\n cm.replaceSelection(\\\"\\\", null, \\\"cut\\\");\\n });\\n }\\n }\\n if (e.clipboardData) {\\n e.clipboardData.clearData();\\n var content = lastCopied.text.join(\\\"\\\\n\\\");\\n // iOS exposes the clipboard API, but seems to discard content inserted into it\\n e.clipboardData.setData(\\\"Text\\\", content);\\n if (e.clipboardData.getData(\\\"Text\\\") == content) {\\n e.preventDefault();\\n return\\n }\\n }\\n // Old-fashioned briefly-focus-a-textarea hack\\n var kludge = hiddenTextarea(), te = kludge.firstChild;\\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\\n te.value = lastCopied.text.join(\\\"\\\\n\\\");\\n var hadFocus = document.activeElement;\\n selectInput(te);\\n setTimeout(function () {\\n cm.display.lineSpace.removeChild(kludge);\\n hadFocus.focus();\\n if (hadFocus == div) { input.showPrimarySelection(); }\\n }, 50);\\n }\\n on(div, \\\"copy\\\", onCopyCut);\\n on(div, \\\"cut\\\", onCopyCut);\\n};\\n\\nContentEditableInput.prototype.prepareSelection = function () {\\n var result = prepareSelection(this.cm, false);\\n result.focus = this.cm.state.focused;\\n return result\\n};\\n\\nContentEditableInput.prototype.showSelection = function (info, takeFocus) {\\n if (!info || !this.cm.display.view.length) { return }\\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\\n this.showMultipleSelections(info);\\n};\\n\\nContentEditableInput.prototype.showPrimarySelection = function () {\\n var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\\n var from = prim.from(), to = prim.to();\\n\\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\\n sel.removeAllRanges();\\n return\\n }\\n\\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\\n cmp(maxPos(curAnchor, curFocus), to) == 0)\\n { return }\\n\\n var view = cm.display.view;\\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\\n {node: view[0].measure.map[2], offset: 0};\\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\\n if (!end) {\\n var measure = view[view.length - 1].measure;\\n var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\\n end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\\n }\\n\\n if (!start || !end) {\\n sel.removeAllRanges();\\n return\\n }\\n\\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\\n try { rng = range(start.node, start.offset, end.offset, end.node); }\\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\\n if (rng) {\\n if (!gecko && cm.state.focused) {\\n sel.collapse(start.node, start.offset);\\n if (!rng.collapsed) {\\n sel.removeAllRanges();\\n sel.addRange(rng);\\n }\\n } else {\\n sel.removeAllRanges();\\n sel.addRange(rng);\\n }\\n if (old && sel.anchorNode == null) { sel.addRange(old); }\\n else if (gecko) { this.startGracePeriod(); }\\n }\\n this.rememberSelection();\\n};\\n\\nContentEditableInput.prototype.startGracePeriod = function () {\\n var this$1 = this;\\n\\n clearTimeout(this.gracePeriod);\\n this.gracePeriod = setTimeout(function () {\\n this$1.gracePeriod = false;\\n if (this$1.selectionChanged())\\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\\n }, 20);\\n};\\n\\nContentEditableInput.prototype.showMultipleSelections = function (info) {\\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\\n};\\n\\nContentEditableInput.prototype.rememberSelection = function () {\\n var sel = window.getSelection();\\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\\n};\\n\\nContentEditableInput.prototype.selectionInEditor = function () {\\n var sel = window.getSelection();\\n if (!sel.rangeCount) { return false }\\n var node = sel.getRangeAt(0).commonAncestorContainer;\\n return contains(this.div, node)\\n};\\n\\nContentEditableInput.prototype.focus = function () {\\n if (this.cm.options.readOnly != \\\"nocursor\\\") {\\n if (!this.selectionInEditor())\\n { this.showSelection(this.prepareSelection(), true); }\\n this.div.focus();\\n }\\n};\\nContentEditableInput.prototype.blur = function () { this.div.blur(); };\\nContentEditableInput.prototype.getField = function () { return this.div };\\n\\nContentEditableInput.prototype.supportsTouch = function () { return true };\\n\\nContentEditableInput.prototype.receivedFocus = function () {\\n var input = this;\\n if (this.selectionInEditor())\\n { this.pollSelection(); }\\n else\\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\\n\\n function poll() {\\n if (input.cm.state.focused) {\\n input.pollSelection();\\n input.polling.set(input.cm.options.pollInterval, poll);\\n }\\n }\\n this.polling.set(this.cm.options.pollInterval, poll);\\n};\\n\\nContentEditableInput.prototype.selectionChanged = function () {\\n var sel = window.getSelection();\\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\\n};\\n\\nContentEditableInput.prototype.pollSelection = function () {\\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\\n var sel = window.getSelection(), cm = this.cm;\\n // On Android Chrome (version 56, at least), backspacing into an\\n // uneditable block element will put the cursor in that element,\\n // and then, because it's not editable, hide the virtual keyboard.\\n // Because Android doesn't allow us to actually detect backspace\\n // presses in a sane way, this code checks for when that happens\\n // and simulates a backspace press in this case.\\n if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\\n this.cm.triggerOnKeyDown({type: \\\"keydown\\\", keyCode: 8, preventDefault: Math.abs});\\n this.blur();\\n this.focus();\\n return\\n }\\n if (this.composing) { return }\\n this.rememberSelection();\\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\\n if (anchor && head) { runInOp(cm, function () {\\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\\n }); }\\n};\\n\\nContentEditableInput.prototype.pollContent = function () {\\n if (this.readDOMTimeout != null) {\\n clearTimeout(this.readDOMTimeout);\\n this.readDOMTimeout = null;\\n }\\n\\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\\n var from = sel.from(), to = sel.to();\\n if (from.ch == 0 && from.line > cm.firstLine())\\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\\n { to = Pos(to.line + 1, 0); }\\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\\n\\n var fromIndex, fromLine, fromNode;\\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\\n fromLine = lineNo(display.view[0].line);\\n fromNode = display.view[0].node;\\n } else {\\n fromLine = lineNo(display.view[fromIndex].line);\\n fromNode = display.view[fromIndex - 1].node.nextSibling;\\n }\\n var toIndex = findViewIndex(cm, to.line);\\n var toLine, toNode;\\n if (toIndex == display.view.length - 1) {\\n toLine = display.viewTo - 1;\\n toNode = display.lineDiv.lastChild;\\n } else {\\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\\n toNode = display.view[toIndex + 1].node.previousSibling;\\n }\\n\\n if (!fromNode) { return false }\\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\\n while (newText.length > 1 && oldText.length > 1) {\\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\\n else { break }\\n }\\n\\n var cutFront = 0, cutEnd = 0;\\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\\n { ++cutFront; }\\n var newBot = lst(newText), oldBot = lst(oldText);\\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\\n while (cutEnd < maxCutEnd &&\\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\\n { ++cutEnd; }\\n // Try to move start of change to start of selection if ambiguous\\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\\n while (cutFront && cutFront > from.ch &&\\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\\n cutFront--;\\n cutEnd++;\\n }\\n }\\n\\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\\\u200b+/, \\\"\\\");\\n newText[0] = newText[0].slice(cutFront).replace(/\\\\u200b+$/, \\\"\\\");\\n\\n var chFrom = Pos(fromLine, cutFront);\\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\\n replaceRange(cm.doc, newText, chFrom, chTo, \\\"+input\\\");\\n return true\\n }\\n};\\n\\nContentEditableInput.prototype.ensurePolled = function () {\\n this.forceCompositionEnd();\\n};\\nContentEditableInput.prototype.reset = function () {\\n this.forceCompositionEnd();\\n};\\nContentEditableInput.prototype.forceCompositionEnd = function () {\\n if (!this.composing) { return }\\n clearTimeout(this.readDOMTimeout);\\n this.composing = null;\\n this.updateFromDOM();\\n this.div.blur();\\n this.div.focus();\\n};\\nContentEditableInput.prototype.readFromDOMSoon = function () {\\n var this$1 = this;\\n\\n if (this.readDOMTimeout != null) { return }\\n this.readDOMTimeout = setTimeout(function () {\\n this$1.readDOMTimeout = null;\\n if (this$1.composing) {\\n if (this$1.composing.done) { this$1.composing = null; }\\n else { return }\\n }\\n this$1.updateFromDOM();\\n }, 80);\\n};\\n\\nContentEditableInput.prototype.updateFromDOM = function () {\\n var this$1 = this;\\n\\n if (this.cm.isReadOnly() || !this.pollContent())\\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\\n};\\n\\nContentEditableInput.prototype.setUneditable = function (node) {\\n node.contentEditable = \\\"false\\\";\\n};\\n\\nContentEditableInput.prototype.onKeyPress = function (e) {\\n if (e.charCode == 0) { return }\\n e.preventDefault();\\n if (!this.cm.isReadOnly())\\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\\n};\\n\\nContentEditableInput.prototype.readOnlyChanged = function (val) {\\n this.div.contentEditable = String(val != \\\"nocursor\\\");\\n};\\n\\nContentEditableInput.prototype.onContextMenu = function () {};\\nContentEditableInput.prototype.resetPosition = function () {};\\n\\nContentEditableInput.prototype.needsContentAttribute = true;\\n\\nfunction posToDOM(cm, pos) {\\n var view = findViewForLine(cm, pos.line);\\n if (!view || view.hidden) { return null }\\n var line = getLine(cm.doc, pos.line);\\n var info = mapFromLineView(view, line, pos.line);\\n\\n var order = getOrder(line, cm.doc.direction), side = \\\"left\\\";\\n if (order) {\\n var partPos = getBidiPartAt(order, pos.ch);\\n side = partPos % 2 ? \\\"right\\\" : \\\"left\\\";\\n }\\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\\n result.offset = result.collapse == \\\"right\\\" ? result.end : result.start;\\n return result\\n}\\n\\nfunction isInGutter(node) {\\n for (var scan = node; scan; scan = scan.parentNode)\\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\\n return false\\n}\\n\\nfunction badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\\n\\nfunction domTextBetween(cm, from, to, fromLine, toLine) {\\n var text = \\\"\\\", closing = false, lineSep = cm.doc.lineSeparator();\\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\\n function close() {\\n if (closing) {\\n text += lineSep;\\n closing = false;\\n }\\n }\\n function addText(str) {\\n if (str) {\\n close();\\n text += str;\\n }\\n }\\n function walk(node) {\\n if (node.nodeType == 1) {\\n var cmText = node.getAttribute(\\\"cm-text\\\");\\n if (cmText != null) {\\n addText(cmText || node.textContent.replace(/\\\\u200b/g, \\\"\\\"));\\n return\\n }\\n var markerID = node.getAttribute(\\\"cm-marker\\\"), range$$1;\\n if (markerID) {\\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\\n if (found.length && (range$$1 = found[0].find()))\\n { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\\n return\\n }\\n if (node.getAttribute(\\\"contenteditable\\\") == \\\"false\\\") { return }\\n var isBlock = /^(pre|div|p)$/i.test(node.nodeName);\\n if (isBlock) { close(); }\\n for (var i = 0; i < node.childNodes.length; i++)\\n { walk(node.childNodes[i]); }\\n if (isBlock) { closing = true; }\\n } else if (node.nodeType == 3) {\\n addText(node.nodeValue);\\n }\\n }\\n for (;;) {\\n walk(from);\\n if (from == to) { break }\\n from = from.nextSibling;\\n }\\n return text\\n}\\n\\nfunction domToPos(cm, node, offset) {\\n var lineNode;\\n if (node == cm.display.lineDiv) {\\n lineNode = cm.display.lineDiv.childNodes[offset];\\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\\n node = null; offset = 0;\\n } else {\\n for (lineNode = node;; lineNode = lineNode.parentNode) {\\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\\n }\\n }\\n for (var i = 0; i < cm.display.view.length; i++) {\\n var lineView = cm.display.view[i];\\n if (lineView.node == lineNode)\\n { return locateNodeInLineView(lineView, node, offset) }\\n }\\n}\\n\\nfunction locateNodeInLineView(lineView, node, offset) {\\n var wrapper = lineView.text.firstChild, bad = false;\\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\\n if (node == wrapper) {\\n bad = true;\\n node = wrapper.childNodes[offset];\\n offset = 0;\\n if (!node) {\\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\\n return badPos(Pos(lineNo(line), line.text.length), bad)\\n }\\n }\\n\\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\\n textNode = node.firstChild;\\n if (offset) { offset = textNode.nodeValue.length; }\\n }\\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\\n var measure = lineView.measure, maps = measure.maps;\\n\\n function find(textNode, topNode, offset) {\\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\\n var map$$1 = i < 0 ? measure.map : maps[i];\\n for (var j = 0; j < map$$1.length; j += 3) {\\n var curNode = map$$1[j + 2];\\n if (curNode == textNode || curNode == topNode) {\\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\\n var ch = map$$1[j] + offset;\\n if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\\n return Pos(line, ch)\\n }\\n }\\n }\\n }\\n var found = find(textNode, topNode, offset);\\n if (found) { return badPos(found, bad) }\\n\\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\\n found = find(after, after.firstChild, 0);\\n if (found)\\n { return badPos(Pos(found.line, found.ch - dist), bad) }\\n else\\n { dist += after.textContent.length; }\\n }\\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\\n found = find(before, before.firstChild, -1);\\n if (found)\\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\\n else\\n { dist$1 += before.textContent.length; }\\n }\\n}\\n\\n// TEXTAREA INPUT STYLE\\n\\nvar TextareaInput = function(cm) {\\n this.cm = cm;\\n // See input.poll and input.reset\\n this.prevInput = \\\"\\\";\\n\\n // Flag that indicates whether we expect input to appear real soon\\n // now (after some event like 'keypress' or 'input') and are\\n // polling intensively.\\n this.pollingFast = false;\\n // Self-resetting timeout for the poller\\n this.polling = new Delayed();\\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\\n this.hasSelection = false;\\n this.composing = null;\\n};\\n\\nTextareaInput.prototype.init = function (display) {\\n var this$1 = this;\\n\\n var input = this, cm = this.cm;\\n\\n // Wraps and hides input textarea\\n var div = this.wrapper = hiddenTextarea();\\n // The semihidden textarea that is focused when the editor is\\n // focused, and receives input.\\n var te = this.textarea = div.firstChild;\\n display.wrapper.insertBefore(div, display.wrapper.firstChild);\\n\\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\\n if (ios) { te.style.width = \\\"0px\\\"; }\\n\\n on(te, \\\"input\\\", function () {\\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\\n input.poll();\\n });\\n\\n on(te, \\\"paste\\\", function (e) {\\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\\n\\n cm.state.pasteIncoming = true;\\n input.fastPoll();\\n });\\n\\n function prepareCopyCut(e) {\\n if (signalDOMEvent(cm, e)) { return }\\n if (cm.somethingSelected()) {\\n setLastCopied({lineWise: false, text: cm.getSelections()});\\n } else if (!cm.options.lineWiseCopyCut) {\\n return\\n } else {\\n var ranges = copyableRanges(cm);\\n setLastCopied({lineWise: true, text: ranges.text});\\n if (e.type == \\\"cut\\\") {\\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\\n } else {\\n input.prevInput = \\\"\\\";\\n te.value = ranges.text.join(\\\"\\\\n\\\");\\n selectInput(te);\\n }\\n }\\n if (e.type == \\\"cut\\\") { cm.state.cutIncoming = true; }\\n }\\n on(te, \\\"cut\\\", prepareCopyCut);\\n on(te, \\\"copy\\\", prepareCopyCut);\\n\\n on(display.scroller, \\\"paste\\\", function (e) {\\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\\n cm.state.pasteIncoming = true;\\n input.focus();\\n });\\n\\n // Prevent normal selection in the editor (we handle our own)\\n on(display.lineSpace, \\\"selectstart\\\", function (e) {\\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\\n });\\n\\n on(te, \\\"compositionstart\\\", function () {\\n var start = cm.getCursor(\\\"from\\\");\\n if (input.composing) { input.composing.range.clear(); }\\n input.composing = {\\n start: start,\\n range: cm.markText(start, cm.getCursor(\\\"to\\\"), {className: \\\"CodeMirror-composing\\\"})\\n };\\n });\\n on(te, \\\"compositionend\\\", function () {\\n if (input.composing) {\\n input.poll();\\n input.composing.range.clear();\\n input.composing = null;\\n }\\n });\\n};\\n\\nTextareaInput.prototype.prepareSelection = function () {\\n // Redraw the selection and/or cursor\\n var cm = this.cm, display = cm.display, doc = cm.doc;\\n var result = prepareSelection(cm);\\n\\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\\n if (cm.options.moveInputWithCursor) {\\n var headPos = cursorCoords(cm, doc.sel.primary().head, \\\"div\\\");\\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\\n headPos.top + lineOff.top - wrapOff.top));\\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\\n headPos.left + lineOff.left - wrapOff.left));\\n }\\n\\n return result\\n};\\n\\nTextareaInput.prototype.showSelection = function (drawn) {\\n var cm = this.cm, display = cm.display;\\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\\n if (drawn.teTop != null) {\\n this.wrapper.style.top = drawn.teTop + \\\"px\\\";\\n this.wrapper.style.left = drawn.teLeft + \\\"px\\\";\\n }\\n};\\n\\n// Reset the input to correspond to the selection (or to be empty,\\n// when not typing and nothing is selected)\\nTextareaInput.prototype.reset = function (typing) {\\n if (this.contextMenuPending || this.composing) { return }\\n var cm = this.cm;\\n if (cm.somethingSelected()) {\\n this.prevInput = \\\"\\\";\\n var content = cm.getSelection();\\n this.textarea.value = content;\\n if (cm.state.focused) { selectInput(this.textarea); }\\n if (ie && ie_version >= 9) { this.hasSelection = content; }\\n } else if (!typing) {\\n this.prevInput = this.textarea.value = \\\"\\\";\\n if (ie && ie_version >= 9) { this.hasSelection = null; }\\n }\\n};\\n\\nTextareaInput.prototype.getField = function () { return this.textarea };\\n\\nTextareaInput.prototype.supportsTouch = function () { return false };\\n\\nTextareaInput.prototype.focus = function () {\\n if (this.cm.options.readOnly != \\\"nocursor\\\" && (!mobile || activeElt() != this.textarea)) {\\n try { this.textarea.focus(); }\\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\\n }\\n};\\n\\nTextareaInput.prototype.blur = function () { this.textarea.blur(); };\\n\\nTextareaInput.prototype.resetPosition = function () {\\n this.wrapper.style.top = this.wrapper.style.left = 0;\\n};\\n\\nTextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\\n\\n// Poll for input changes, using the normal rate of polling. This\\n// runs as long as the editor is focused.\\nTextareaInput.prototype.slowPoll = function () {\\n var this$1 = this;\\n\\n if (this.pollingFast) { return }\\n this.polling.set(this.cm.options.pollInterval, function () {\\n this$1.poll();\\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\\n });\\n};\\n\\n// When an event has just come in that is likely to add or change\\n// something in the input textarea, we poll faster, to ensure that\\n// the change appears on the screen quickly.\\nTextareaInput.prototype.fastPoll = function () {\\n var missed = false, input = this;\\n input.pollingFast = true;\\n function p() {\\n var changed = input.poll();\\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\\n else {input.pollingFast = false; input.slowPoll();}\\n }\\n input.polling.set(20, p);\\n};\\n\\n// Read input from the textarea, and update the document to match.\\n// When something is selected, it is present in the textarea, and\\n// selected (unless it is huge, in which case a placeholder is\\n// used). When nothing is selected, the cursor sits after previously\\n// seen text (can be empty), which is stored in prevInput (we must\\n// not reset the textarea when typing, because that breaks IME).\\nTextareaInput.prototype.poll = function () {\\n var this$1 = this;\\n\\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\\n // Since this is called a *lot*, try to bail out as cheaply as\\n // possible when it is clear that nothing happened. hasSelection\\n // will be the case when there is a lot of text in the textarea,\\n // in which case reading its value would be expensive.\\n if (this.contextMenuPending || !cm.state.focused ||\\n (hasSelection(input) && !prevInput && !this.composing) ||\\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\\n { return false }\\n\\n var text = input.value;\\n // If nothing changed, bail.\\n if (text == prevInput && !cm.somethingSelected()) { return false }\\n // Work around nonsensical selection resetting in IE9/10, and\\n // inexplicable appearance of private area unicode characters on\\n // some key combos in Mac (#2689).\\n if (ie && ie_version >= 9 && this.hasSelection === text ||\\n mac && /[\\\\uf700-\\\\uf7ff]/.test(text)) {\\n cm.display.input.reset();\\n return false\\n }\\n\\n if (cm.doc.sel == cm.display.selForContextMenu) {\\n var first = text.charCodeAt(0);\\n if (first == 0x200b && !prevInput) { prevInput = \\\"\\\\u200b\\\"; }\\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\\\"undo\\\") }\\n }\\n // Find the part of the input that is actually new\\n var same = 0, l = Math.min(prevInput.length, text.length);\\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\\n\\n runInOp(cm, function () {\\n applyTextInput(cm, text.slice(same), prevInput.length - same,\\n null, this$1.composing ? \\\"*compose\\\" : null);\\n\\n // Don't leave long text in the textarea, since it makes further polling slow\\n if (text.length > 1000 || text.indexOf(\\\"\\\\n\\\") > -1) { input.value = this$1.prevInput = \\\"\\\"; }\\n else { this$1.prevInput = text; }\\n\\n if (this$1.composing) {\\n this$1.composing.range.clear();\\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\\\"to\\\"),\\n {className: \\\"CodeMirror-composing\\\"});\\n }\\n });\\n return true\\n};\\n\\nTextareaInput.prototype.ensurePolled = function () {\\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\\n};\\n\\nTextareaInput.prototype.onKeyPress = function () {\\n if (ie && ie_version >= 9) { this.hasSelection = null; }\\n this.fastPoll();\\n};\\n\\nTextareaInput.prototype.onContextMenu = function (e) {\\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\\n if (!pos || presto) { return } // Opera is difficult.\\n\\n // Reset the current text selection only if the click is done outside of the selection\\n // and 'resetSelectionOnContextMenu' option is true.\\n var reset = cm.options.resetSelectionOnContextMenu;\\n if (reset && cm.doc.sel.contains(pos) == -1)\\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\\n\\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\\n input.wrapper.style.cssText = \\\"position: absolute\\\";\\n var wrapperBox = input.wrapper.getBoundingClientRect();\\n te.style.cssText = \\\"position: absolute; width: 30px; height: 30px;\\\\n top: \\\" + (e.clientY - wrapperBox.top - 5) + \\\"px; left: \\\" + (e.clientX - wrapperBox.left - 5) + \\\"px;\\\\n z-index: 1000; background: \\\" + (ie ? \\\"rgba(255, 255, 255, .05)\\\" : \\\"transparent\\\") + \\\";\\\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\\\";\\n var oldScrollY;\\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\\n display.input.focus();\\n if (webkit) { window.scrollTo(null, oldScrollY); }\\n display.input.reset();\\n // Adds \\\"Select all\\\" to context menu in FF\\n if (!cm.somethingSelected()) { te.value = input.prevInput = \\\" \\\"; }\\n input.contextMenuPending = true;\\n display.selForContextMenu = cm.doc.sel;\\n clearTimeout(display.detectingSelectAll);\\n\\n // Select-all will be greyed out if there's nothing to select, so\\n // this adds a zero-width space so that we can later check whether\\n // it got selected.\\n function prepareSelectAllHack() {\\n if (te.selectionStart != null) {\\n var selected = cm.somethingSelected();\\n var extval = \\\"\\\\u200b\\\" + (selected ? te.value : \\\"\\\");\\n te.value = \\\"\\\\u21da\\\"; // Used to catch context-menu undo\\n te.value = extval;\\n input.prevInput = selected ? \\\"\\\" : \\\"\\\\u200b\\\";\\n te.selectionStart = 1; te.selectionEnd = extval.length;\\n // Re-set this, in case some other handler touched the\\n // selection in the meantime.\\n display.selForContextMenu = cm.doc.sel;\\n }\\n }\\n function rehide() {\\n input.contextMenuPending = false;\\n input.wrapper.style.cssText = oldWrapperCSS;\\n te.style.cssText = oldCSS;\\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\\n\\n // Try to detect the user choosing select-all\\n if (te.selectionStart != null) {\\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\\n var i = 0, poll = function () {\\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\\n te.selectionEnd > 0 && input.prevInput == \\\"\\\\u200b\\\") {\\n operation(cm, selectAll)(cm);\\n } else if (i++ < 10) {\\n display.detectingSelectAll = setTimeout(poll, 500);\\n } else {\\n display.selForContextMenu = null;\\n display.input.reset();\\n }\\n };\\n display.detectingSelectAll = setTimeout(poll, 200);\\n }\\n }\\n\\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\\n if (captureRightClick) {\\n e_stop(e);\\n var mouseup = function () {\\n off(window, \\\"mouseup\\\", mouseup);\\n setTimeout(rehide, 20);\\n };\\n on(window, \\\"mouseup\\\", mouseup);\\n } else {\\n setTimeout(rehide, 50);\\n }\\n};\\n\\nTextareaInput.prototype.readOnlyChanged = function (val) {\\n if (!val) { this.reset(); }\\n this.textarea.disabled = val == \\\"nocursor\\\";\\n};\\n\\nTextareaInput.prototype.setUneditable = function () {};\\n\\nTextareaInput.prototype.needsContentAttribute = false;\\n\\nfunction fromTextArea(textarea, options) {\\n options = options ? copyObj(options) : {};\\n options.value = textarea.value;\\n if (!options.tabindex && textarea.tabIndex)\\n { options.tabindex = textarea.tabIndex; }\\n if (!options.placeholder && textarea.placeholder)\\n { options.placeholder = textarea.placeholder; }\\n // Set autofocus to true if this textarea is focused, or if it has\\n // autofocus and no other element is focused.\\n if (options.autofocus == null) {\\n var hasFocus = activeElt();\\n options.autofocus = hasFocus == textarea ||\\n textarea.getAttribute(\\\"autofocus\\\") != null && hasFocus == document.body;\\n }\\n\\n function save() {textarea.value = cm.getValue();}\\n\\n var realSubmit;\\n if (textarea.form) {\\n on(textarea.form, \\\"submit\\\", save);\\n // Deplorable hack to make the submit method do the right thing.\\n if (!options.leaveSubmitMethodAlone) {\\n var form = textarea.form;\\n realSubmit = form.submit;\\n try {\\n var wrappedSubmit = form.submit = function () {\\n save();\\n form.submit = realSubmit;\\n form.submit();\\n form.submit = wrappedSubmit;\\n };\\n } catch(e) {}\\n }\\n }\\n\\n options.finishInit = function (cm) {\\n cm.save = save;\\n cm.getTextArea = function () { return textarea; };\\n cm.toTextArea = function () {\\n cm.toTextArea = isNaN; // Prevent this from being ran twice\\n save();\\n textarea.parentNode.removeChild(cm.getWrapperElement());\\n textarea.style.display = \\\"\\\";\\n if (textarea.form) {\\n off(textarea.form, \\\"submit\\\", save);\\n if (typeof textarea.form.submit == \\\"function\\\")\\n { textarea.form.submit = realSubmit; }\\n }\\n };\\n };\\n\\n textarea.style.display = \\\"none\\\";\\n var cm = CodeMirror$1(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\\n options);\\n return cm\\n}\\n\\nfunction addLegacyProps(CodeMirror) {\\n CodeMirror.off = off;\\n CodeMirror.on = on;\\n CodeMirror.wheelEventPixels = wheelEventPixels;\\n CodeMirror.Doc = Doc;\\n CodeMirror.splitLines = splitLinesAuto;\\n CodeMirror.countColumn = countColumn;\\n CodeMirror.findColumn = findColumn;\\n CodeMirror.isWordChar = isWordCharBasic;\\n CodeMirror.Pass = Pass;\\n CodeMirror.signal = signal;\\n CodeMirror.Line = Line;\\n CodeMirror.changeEnd = changeEnd;\\n CodeMirror.scrollbarModel = scrollbarModel;\\n CodeMirror.Pos = Pos;\\n CodeMirror.cmpPos = cmp;\\n CodeMirror.modes = modes;\\n CodeMirror.mimeModes = mimeModes;\\n CodeMirror.resolveMode = resolveMode;\\n CodeMirror.getMode = getMode;\\n CodeMirror.modeExtensions = modeExtensions;\\n CodeMirror.extendMode = extendMode;\\n CodeMirror.copyState = copyState;\\n CodeMirror.startState = startState;\\n CodeMirror.innerMode = innerMode;\\n CodeMirror.commands = commands;\\n CodeMirror.keyMap = keyMap;\\n CodeMirror.keyName = keyName;\\n CodeMirror.isModifierKey = isModifierKey;\\n CodeMirror.lookupKey = lookupKey;\\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\\n CodeMirror.StringStream = StringStream;\\n CodeMirror.SharedTextMarker = SharedTextMarker;\\n CodeMirror.TextMarker = TextMarker;\\n CodeMirror.LineWidget = LineWidget;\\n CodeMirror.e_preventDefault = e_preventDefault;\\n CodeMirror.e_stopPropagation = e_stopPropagation;\\n CodeMirror.e_stop = e_stop;\\n CodeMirror.addClass = addClass;\\n CodeMirror.contains = contains;\\n CodeMirror.rmClass = rmClass;\\n CodeMirror.keyNames = keyNames;\\n}\\n\\n// EDITOR CONSTRUCTOR\\n\\ndefineOptions(CodeMirror$1);\\n\\naddEditorMethods(CodeMirror$1);\\n\\n// Set up methods on CodeMirror's prototype to redirect to the editor's document.\\nvar dontDelegate = \\\"iter insert remove copy getEditor constructor\\\".split(\\\" \\\");\\nfor (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\\n { CodeMirror$1.prototype[prop] = (function(method) {\\n return function() {return method.apply(this.doc, arguments)}\\n })(Doc.prototype[prop]); } }\\n\\neventMixin(Doc);\\n\\n// INPUT HANDLING\\n\\nCodeMirror$1.inputStyles = {\\\"textarea\\\": TextareaInput, \\\"contenteditable\\\": ContentEditableInput};\\n\\n// MODE DEFINITION AND QUERYING\\n\\n// Extra arguments are stored as the mode's dependencies, which is\\n// used by (legacy) mechanisms like loadmode.js to automatically\\n// load a mode. (Preferred mechanism is the require/define calls.)\\nCodeMirror$1.defineMode = function(name/*, mode, …*/) {\\n if (!CodeMirror$1.defaults.mode && name != \\\"null\\\") { CodeMirror$1.defaults.mode = name; }\\n defineMode.apply(this, arguments);\\n};\\n\\nCodeMirror$1.defineMIME = defineMIME;\\n\\n// Minimal default mode.\\nCodeMirror$1.defineMode(\\\"null\\\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\\nCodeMirror$1.defineMIME(\\\"text/plain\\\", \\\"null\\\");\\n\\n// EXTENSIONS\\n\\nCodeMirror$1.defineExtension = function (name, func) {\\n CodeMirror$1.prototype[name] = func;\\n};\\nCodeMirror$1.defineDocExtension = function (name, func) {\\n Doc.prototype[name] = func;\\n};\\n\\nCodeMirror$1.fromTextArea = fromTextArea;\\n\\naddLegacyProps(CodeMirror$1);\\n\\nCodeMirror$1.version = \\\"5.28.0\\\";\\n\\nreturn CodeMirror$1;\\n\\n})));\\n\\n\\n/***/ }),\\n/* 347 */,\\n/* 348 */,\\n/* 349 */,\\n/* 350 */,\\n/* 351 */,\\n/* 352 */,\\n/* 353 */,\\n/* 354 */,\\n/* 355 */,\\n/* 356 */,\\n/* 357 */,\\n/* 358 */,\\n/* 359 */,\\n/* 360 */,\\n/* 361 */,\\n/* 362 */,\\n/* 363 */\\n/***/ (function(module, exports) {\\n\\n/*\\n\\tMIT License http://www.opensource.org/licenses/mit-license.php\\n\\tAuthor Tobias Koppers @sokra\\n*/\\n// css base code, injected by the css-loader\\nmodule.exports = function(useSourceMap) {\\n\\tvar list = [];\\n\\n\\t// return the list of modules as css string\\n\\tlist.toString = function toString() {\\n\\t\\treturn this.map(function (item) {\\n\\t\\t\\tvar content = cssWithMappingToString(item, useSourceMap);\\n\\t\\t\\tif(item[2]) {\\n\\t\\t\\t\\treturn \\\"@media \\\" + item[2] + \\\"{\\\" + content + \\\"}\\\";\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn content;\\n\\t\\t\\t}\\n\\t\\t}).join(\\\"\\\");\\n\\t};\\n\\n\\t// import a list of modules into the list\\n\\tlist.i = function(modules, mediaQuery) {\\n\\t\\tif(typeof modules === \\\"string\\\")\\n\\t\\t\\tmodules = [[null, modules, \\\"\\\"]];\\n\\t\\tvar alreadyImportedModules = {};\\n\\t\\tfor(var i = 0; i < this.length; i++) {\\n\\t\\t\\tvar id = this[i][0];\\n\\t\\t\\tif(typeof id === \\\"number\\\")\\n\\t\\t\\t\\talreadyImportedModules[id] = true;\\n\\t\\t}\\n\\t\\tfor(i = 0; i < modules.length; i++) {\\n\\t\\t\\tvar item = modules[i];\\n\\t\\t\\t// skip already imported module\\n\\t\\t\\t// this implementation is not 100% perfect for weird media query combinations\\n\\t\\t\\t// when a module is imported multiple times with different media queries.\\n\\t\\t\\t// I hope this will never occur (Hey this way we have smaller bundles)\\n\\t\\t\\tif(typeof item[0] !== \\\"number\\\" || !alreadyImportedModules[item[0]]) {\\n\\t\\t\\t\\tif(mediaQuery && !item[2]) {\\n\\t\\t\\t\\t\\titem[2] = mediaQuery;\\n\\t\\t\\t\\t} else if(mediaQuery) {\\n\\t\\t\\t\\t\\titem[2] = \\\"(\\\" + item[2] + \\\") and (\\\" + mediaQuery + \\\")\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tlist.push(item);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\treturn list;\\n};\\n\\nfunction cssWithMappingToString(item, useSourceMap) {\\n\\tvar content = item[1] || '';\\n\\tvar cssMapping = item[3];\\n\\tif (!cssMapping) {\\n\\t\\treturn content;\\n\\t}\\n\\n\\tif (useSourceMap && typeof btoa === 'function') {\\n\\t\\tvar sourceMapping = toComment(cssMapping);\\n\\t\\tvar sourceURLs = cssMapping.sources.map(function (source) {\\n\\t\\t\\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\\n\\t\\t});\\n\\n\\t\\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\\\n');\\n\\t}\\n\\n\\treturn [content].join('\\\\n');\\n}\\n\\n// Adapted from convert-source-map (MIT)\\nfunction toComment(sourceMap) {\\n\\t// eslint-disable-next-line no-undef\\n\\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\\n\\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\\n\\n\\treturn '/*# ' + data + ' */';\\n}\\n\\n\\n/***/ }),\\n/* 364 */\\n/***/ (function(module, exports, __webpack_require__) {\\n\\n/*\\n MIT License http://www.opensource.org/licenses/mit-license.php\\n Author Tobias Koppers @sokra\\n Modified by Evan You @yyx990803\\n*/\\n\\nvar hasDocument = typeof document !== 'undefined'\\n\\nif (typeof DEBUG !== 'undefined' && DEBUG) {\\n if (!hasDocument) {\\n throw new Error(\\n 'vue-style-loader cannot be used in a non-browser environment. ' +\\n \\\"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\\\"\\n ) }\\n}\\n\\nvar listToStyles = __webpack_require__(198)\\n\\n/*\\ntype StyleObject = {\\n id: number;\\n parts: Array\\n}\\n\\ntype StyleObjectPart = {\\n css: string;\\n media: string;\\n sourceMap: ?string\\n}\\n*/\\n\\nvar stylesInDom = {/*\\n [id: number]: {\\n id: number,\\n refs: number,\\n parts: Array<(obj?: StyleObjectPart) => void>\\n }\\n*/}\\n\\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\\nvar singletonElement = null\\nvar singletonCounter = 0\\nvar isProduction = false\\nvar noop = function () {}\\n\\n// Force single-tag solution on IE6-9, which has a hard limit on the # of