1 line
264 KiB
JSON
1 line
264 KiB
JSON
{"ast":null,"code":"import _typeof from \"D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/qingge-Market/qingge-vue/vue/node_modules/@babel/runtime/helpers/esm/typeof.js\";\nimport \"core-js/modules/es.error.cause.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.string.trim.js\";\nimport \"core-js/modules/web.dom-collections.for-each.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.object.keys.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.freeze.js\";\nimport \"core-js/modules/es.array.sort.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.regexp.constructor.js\";\nimport \"core-js/modules/es.regexp.dot-all.js\";\nimport \"core-js/modules/es.regexp.sticky.js\";\nimport \"core-js/modules/es.string.repeat.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/es.regexp.test.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport \"core-js/modules/es.string.match.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport \"core-js/modules/es.number.to-fixed.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.symbol.to-string-tag.js\";\nimport \"core-js/modules/es.json.to-string-tag.js\";\nimport \"core-js/modules/es.math.to-string-tag.js\";\nimport \"core-js/modules/es.string.search.js\";\n\n/*!\n * vue-router v3.5.3\n * (c) 2021 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 (!condition) {\n typeof console !== 'undefined' && console.warn(\"[vue-router] \" + message);\n }\n}\n\nfunction extend(a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n\n return a;\n}\n/* */\n\n\nvar encodeReserveRE = /[!'()*]/g;\n\nvar encodeReserveReplacer = function encodeReserveReplacer(c) {\n return '%' + c.charCodeAt(0).toString(16);\n};\n\nvar commaRE = /%2C/g; // fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\n\nvar encode = function encode(str) {\n return encodeURIComponent(str).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n};\n\nfunction decode(str) {\n try {\n return decodeURIComponent(str);\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\");\n }\n }\n\n return str;\n}\n\nfunction resolveQuery(query, extraQuery, _parseQuery) {\n if (extraQuery === void 0) extraQuery = {};\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value) ? value.map(castQueryParamValue) : castQueryParamValue(value);\n }\n\n return parsedQuery;\n}\n\nvar castQueryParamValue = function castQueryParamValue(value) {\n return value == null || _typeof(value) === 'object' ? value : String(value);\n};\n\nfunction parseQuery(query) {\n var res = {};\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 ? decode(parts.join('=')) : 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 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\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) {\n return x.length > 0;\n }).join('&') : null;\n return res ? \"?\" + res : '';\n}\n/* */\n\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute(record, location, redirectedFrom, router) {\n var stringifyQuery = router && router.options.stringifyQuery;\n var query = location.query || {};\n\n try {\n query = clone(query);\n } catch (e) {}\n\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: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n\n return Object.freeze(route);\n}\n\nfunction clone(value) {\n if (Array.isArray(value)) {\n return value.map(clone);\n } else if (value && _typeof(value) === 'object') {\n var res = {};\n\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n\n return res;\n } else {\n return value;\n }\n} // the starting route that represents the initial state\n\n\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch(record) {\n var res = [];\n\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n\n return res;\n}\n\nfunction getFullPath(ref, _stringifyQuery) {\n var path = ref.path;\n var query = ref.query;\n if (query === void 0) query = {};\n var hash = ref.hash;\n if (hash === void 0) hash = '';\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash;\n}\n\nfunction isSameRoute(a, b, onlyPath) {\n if (b === START) {\n return a === b;\n } else if (!b) {\n return false;\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath || a.hash === b.hash && isObjectEqual(a.query, b.query));\n } else if (a.name && b.name) {\n return a.name === b.name && (onlyPath || a.hash === b.hash && isObjectEqual(a.query, b.query) && isObjectEqual(a.params, b.params));\n } else {\n return false;\n }\n}\n\nfunction isObjectEqual(a, b) {\n if (a === void 0) a = {};\n if (b === void 0) b = {}; // handle null value #1566\n\n if (!a || !b) {\n return a === b;\n }\n\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n\n if (bKey !== key) {\n return false;\n }\n\n var bVal = b[key]; // query values can be null and undefined\n\n if (aVal == null || bVal == null) {\n return aVal === bVal;\n } // check nested equality\n\n\n if (_typeof(aVal) === 'object' && _typeof(bVal) === 'object') {\n return isObjectEqual(aVal, bVal);\n }\n\n return String(aVal) === String(bVal);\n });\n}\n\nfunction isIncludedRoute(current, target) {\n return current.path.replace(trailingSlashRE, '/').indexOf(target.path.replace(trailingSlashRE, '/')) === 0 && (!target.hash || current.hash === target.hash) && queryIncludes(current.query, target.query);\n}\n\nfunction queryIncludes(current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction handleRouteEntered(route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n\n if (!instance || !cbs) {\n continue;\n }\n\n delete record.enteredCbs[name];\n\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) {\n cbs[i$1](instance);\n }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\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; // used by devtools to display a router-view badge\n\n data.routerView = true; // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {}); // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n\n var depth = 0;\n var inactive = false;\n\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n\n if (vnodeData.routerView) {\n depth++;\n }\n\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n\n parent = parent.$parent;\n }\n\n data.routerViewDepth = depth; // render previous view if the tree is inactive and kept-alive\n\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n\n return h(cachedComponent, data, children);\n } else {\n // render previous empty view\n return h();\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name]; // render empty node if no matched route or no config component\n\n if (!matched || !component) {\n cache[name] = null;\n return h();\n } // cache component\n\n\n cache[name] = {\n component: component\n }; // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n\n if (val && current !== vm || !val && current === vm) {\n matched.instances[name] = val;\n }\n } // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;\n\n (data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n }; // register instance in init hook\n // in case kept-alive component be actived when routes changed\n\n\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive && vnode.componentInstance && vnode.componentInstance !== matched.instances[name]) {\n matched.instances[name] = vnode.componentInstance;\n } // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n\n\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name]; // save route and configProps in cache\n\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children);\n }\n};\n\nfunction fillPropsinData(component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass); // pass non-declared props as attrs\n\n var attrs = data.attrs = data.attrs || {};\n\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps(route, config) {\n switch (_typeof(config)) {\n case 'undefined':\n return;\n\n case 'object':\n return config;\n\n case 'function':\n return config(route);\n\n case 'boolean':\n return config ? route.params : undefined;\n\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"props in \\\"\" + route.path + \"\\\" is a \" + _typeof(config) + \", \" + \"expecting an object, function or boolean.\");\n }\n\n }\n}\n/* */\n\n\nfunction resolvePath(relative, base, append) {\n var firstChar = relative.charAt(0);\n\n if (firstChar === '/') {\n return relative;\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative;\n }\n\n var stack = base.split('/'); // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n } // resolve relative path\n\n\n var segments = relative.replace(/^\\//, '').split('/');\n\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n } // ensure leading slash\n\n\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 var hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n\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 isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n/**\n * Expose `pathToRegexp`.\n */\n\n\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\n\nvar PATH_REGEXP = new RegExp([// Match escaped characters that would otherwise appear in future matches.\n// This allows the user to escape special characters that won't transform.\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+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].join('|'), 'g');\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\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; // Ignore already escaped sequences.\n\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]; // Push the current path onto the tokens.\n\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 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 } // Match any characters still remaining.\n\n\n if (index < str.length) {\n path += str.substr(index);\n } // If the path exists, push it onto the end.\n\n\n if (path) {\n tokens.push(path);\n }\n\n return tokens;\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 */\n\n\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeURIComponentPretty(str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeAsterisk(str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\n\n\nfunction tokensToFunction(tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length); // Compile all the patterns before compilation.\n\n for (var i = 0; i < tokens.length; i++) {\n if (_typeof(tokens[i]) === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\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 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 (isarray(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 * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\n\n\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1');\n}\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\n\n\nfunction escapeGroup(group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1');\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 */\n\n\nfunction attachKeys(re, keys) {\n re.keys = keys;\n return re;\n}\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\n\n\nfunction flags(options) {\n return options && options.sensitive ? '' : 'i';\n}\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\n\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 * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\n\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 return attachKeys(regexp, keys);\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 */\n\n\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options);\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 */\n\n\nfunction tokensToRegExp(tokens, keys, options) {\n if (!isarray(keys)) {\n options =\n /** @type {!Object} */\n keys || options;\n keys = [];\n }\n\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var route = ''; // Iterate over the tokens and create our regexp string.\n\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 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; // 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\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 * 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 */\n\n\nfunction pathToRegexp(path, keys, options) {\n if (!isarray(keys)) {\n options =\n /** @type {!Object} */\n keys || options;\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path,\n /** @type {!Array} */\n keys);\n }\n\n if (isarray(path)) {\n return arrayToRegexp(\n /** @type {!Array} */\n path,\n /** @type {!Array} */\n keys, options);\n }\n\n return stringToRegexp(\n /** @type {string} */\n path,\n /** @type {!Array} */\n keys, options);\n}\n\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n/* */\n// $flow-disable-line\n\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams(path, params, routeMsg) {\n params = params || {};\n\n try {\n var filler = regexpCompileCache[path] || (regexpCompileCache[path] = pathToRegexp_1.compile(path)); // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n\n if (typeof params.pathMatch === 'string') {\n params[0] = params.pathMatch;\n }\n\n return filler(params, {\n pretty: true\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', \"missing param for \" + routeMsg + \": \" + e.message);\n }\n\n return '';\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n/* */\n\n\nfunction normalizeLocation(raw, current, append, router) {\n var next = typeof raw === 'string' ? {\n path: raw\n } : raw; // named target\n\n if (next._normalized) {\n return next;\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n\n if (params && _typeof(params) === 'object') {\n next.params = extend({}, params);\n }\n\n return next;\n } // relative params\n\n\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, \"path \" + current.path);\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n\n return next;\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = current && current.path || '/';\n var path = parsedPath.path ? resolvePath(parsedPath.path, basePath, append || next.append) : basePath;\n var query = resolveQuery(parsedPath.query, next.query, router && router.options.parseQuery);\n var hash = next.hash || parsedPath.hash;\n\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/* */\n// work around weird flow bug\n\n\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function noop() {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render(h) {\n var this$1 = this;\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 var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass; // Support global empty active class\n\n var activeClassFallback = globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null ? 'router-link-exact-active' : globalExactActiveClass;\n var activeClass = this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null ? exactActiveClassFallback : this.exactActiveClass;\n var compareTarget = route.redirectedFrom ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router) : route;\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath ? classes[exactActiveClass] : isIncludedRoute(current, compareTarget);\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function handler(e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = {\n click: guardEvent\n };\n\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n var scopedSlot = !this.$scopedSlots.$hasNormal && this.$scopedSlots.default && this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n\n if (scopedSlot.length === 1) {\n return scopedSlot[0];\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"<router-link> with to=\\\"\" + this.to + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\");\n }\n\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(false, \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\");\n warnedTagProp = true;\n }\n\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(false, \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\");\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = {\n href: href,\n 'aria-current': ariaCurrentValue\n };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = a.data = extend({}, a.data);\n aData.on = aData.on || {}; // transform existing events in both objects into arrays so we can push later\n\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n } // append new listeners for router-link\n\n\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> 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) {\n return;\n } // don't redirect when preventDefault called\n\n\n if (e.defaultPrevented) {\n return;\n } // don't redirect on right click\n\n\n if (e.button !== undefined && e.button !== 0) {\n return;\n } // don't redirect if `target=\"_blank\"`\n\n\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n\n if (/\\b_blank\\b/i.test(target)) {\n return;\n }\n } // this may be a Weex event which doesn't have this method\n\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n return true;\n}\n\nfunction findAnchor(children) {\n if (children) {\n var child;\n\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n\n if (child.tag === 'a') {\n return child;\n }\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 && _Vue === Vue) {\n return;\n }\n\n install.installed = true;\n _Vue = Vue;\n\n var isDef = function isDef(v) {\n return v !== undefined;\n };\n\n var registerInstance = function registerInstance(vm, callVal) {\n var i = vm.$options._parentVnode;\n\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\n this._router.init(this);\n\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = this.$parent && this.$parent._routerRoot || this;\n }\n\n registerInstance(this, this);\n },\n destroyed: function destroyed() {\n registerInstance(this);\n }\n });\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get() {\n return this._routerRoot._router;\n }\n });\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get() {\n return this._routerRoot._route;\n }\n });\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n var strats = Vue.config.optionMergeStrategies; // use the same hook merging strategy for route hooks\n\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n/* */\n\n\nvar inBrowser = typeof window !== 'undefined';\n/* */\n\nfunction createRouteMap(routes, oldPathList, oldPathMap, oldNameMap, parentRoute) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || []; // $flow-disable-line\n\n var pathMap = oldPathMap || Object.create(null); // $flow-disable-line\n\n var nameMap = oldNameMap || Object.create(null);\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n }); // ensure wildcard routes are always at the end\n\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 if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList // check for missing leading slash\n .filter(function (path) {\n return path && path.charAt(0) !== '*' && path.charAt(0) !== '/';\n });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) {\n return \"- \" + path;\n }).join('\\n');\n warn(false, \"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames);\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n };\n}\n\nfunction addRouteRecord(pathList, pathMap, nameMap, route, parent, matchAs) {\n var path = route.path;\n var name = route.name;\n\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(typeof route.component !== 'string', \"route config \\\"component\\\" for path: \" + String(path || name) + \" cannot be a \" + \"string id. Use an actual component instead.\");\n warn( // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path), \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" + \"your path is correctly encoded before passing it to the router. Use \" + \"encodeURI to encode static segments of your path.\");\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\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 || {\n default: route.component\n },\n alias: route.alias ? typeof route.alias === 'string' ? [route.alias] : route.alias : [],\n instances: {},\n enteredCbs: {},\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 ? {} : route.components ? route.props : {\n default: route.props\n }\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 (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) {\n return /^\\/?$/.test(child.path);\n })) {\n warn(false, \"Named Route '\" + route.name + \"' has a default child route. \" + \"When navigating to this named route (:to=\\\"{name: '\" + route.name + \"'\\\"), \" + \"the default child route will not be rendered. Remove the name from \" + \"this route and use the name of the default child route for named \" + \"links instead.\");\n }\n }\n\n route.children.forEach(function (child) {\n var childMatchAs = matchAs ? cleanPath(matchAs + \"/\" + child.path) : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(false, \"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\"); // skip in dev to make it work\n\n continue;\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(pathList, pathMap, nameMap, aliasRoute, parent, record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(false, \"Duplicate named routes definition: \" + \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + record.path + \"\\\" }\");\n }\n }\n}\n\nfunction compileRouteRegex(path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\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\n return regex;\n}\n\nfunction normalizePath(path, parent, strict) {\n if (!strict) {\n path = path.replace(/\\/$/, '');\n }\n\n if (path[0] === '/') {\n return path;\n }\n\n if (parent == null) {\n return path;\n }\n\n return cleanPath(parent.path + \"/\" + path);\n}\n/* */\n\n\nfunction createMatcher(routes, router) {\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 addRoute(parentOrRoute, route) {\n var parent = _typeof(parentOrRoute) !== 'object' ? nameMap[parentOrRoute] : undefined; // $flow-disable-line\n\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); // add aliases of parent\n\n if (parent && parent.alias.length) {\n createRouteMap( // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) {\n return {\n path: alias,\n children: [route]\n };\n }), pathList, pathMap, nameMap, parent);\n }\n }\n\n function getRoutes() {\n return pathList.map(function (path) {\n return pathMap[path];\n });\n }\n\n function match(raw, currentRoute, redirectedFrom) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n\n if (process.env.NODE_ENV !== 'production') {\n warn(record, \"Route with name '\" + name + \"' does not exist\");\n }\n\n if (!record) {\n return _createRoute(null, location);\n }\n\n var paramNames = record.regex.keys.filter(function (key) {\n return !key.optional;\n }).map(function (key) {\n return key.name;\n });\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 location.path = fillParams(record.path, location.params, \"named route \\\"\" + name + \"\\\"\");\n return _createRoute(record, location, redirectedFrom);\n } else if (location.path) {\n location.params = {};\n\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom);\n }\n }\n } // no match\n\n\n return _createRoute(null, location);\n }\n\n function redirect(record, location) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function' ? originalRedirect(createRoute(record, location, null, router)) : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = {\n path: redirect\n };\n }\n\n if (!redirect || _typeof(redirect) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(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\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, \"redirect failed: named route \\\"\" + name + \"\\\" not found.\");\n }\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); // 2. resolve params\n\n var resolvedPath = fillParams(rawPath, params, \"redirect route with path \\\"\" + rawPath + \"\\\"\"); // 3. rematch with existing query and hash\n\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"invalid redirect option: \" + JSON.stringify(redirect));\n }\n\n return _createRoute(null, location);\n }\n }\n\n function alias(record, location, matchAs) {\n var aliasedPath = fillParams(matchAs, location.params, \"aliased route with path \\\"\" + matchAs + \"\\\"\");\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\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\n return _createRoute(null, location);\n }\n\n function _createRoute(record, location, redirectedFrom) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location);\n }\n\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs);\n }\n\n return createRoute(record, location, redirectedFrom, router);\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n };\n}\n\nfunction matchRoute(regex, path, params) {\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\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\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// use User Timing api (if present) for more accurate key precision\n\n\nvar Time = inBrowser && window.performance && window.performance.now ? window.performance : Date;\n\nfunction genStateKey() {\n return Time.now().toFixed(3);\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey() {\n return _key;\n}\n\nfunction setStateKey(key) {\n return _key = key;\n}\n/* */\n\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll() {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n } // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n\n\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, ''); // preserve existing history state as it could be overriden by the user\n\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n };\n}\n\nfunction handleScroll(router, to, from, isPop) {\n if (!router.app) {\n return;\n }\n\n var behavior = router.options.scrollBehavior;\n\n if (!behavior) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n } // wait until re-render finishes before scrolling\n\n\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(router, to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return;\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition(shouldScroll, position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition() {\n var key = getStateKey();\n\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState(e) {\n saveScrollPosition();\n\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition() {\n var key = getStateKey();\n\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\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition(shouldScroll, position) {\n var isObject = _typeof(shouldScroll) === 'object';\n\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\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 // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n/* */\n\n\nvar supportsPushState = inBrowser && function () {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n return false;\n }\n\n return window.history && typeof window.history.pushState === 'function';\n}();\n\nfunction pushState(url, replace) {\n saveScrollPosition(); // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n\n var history = window.history;\n\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({\n key: setStateKey(genStateKey())\n }, '', 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 step(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\n step(0);\n} // When changing thing, also edit router.d.ts\n\n\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError(from, to) {\n return createRouterError(from, to, NavigationFailureType.redirected, \"Redirected when going from \\\"\" + from.fullPath + \"\\\" to \\\"\" + stringifyRoute(to) + \"\\\" via a navigation guard.\");\n}\n\nfunction createNavigationDuplicatedError(from, to) {\n var error = createRouterError(from, to, NavigationFailureType.duplicated, \"Avoided redundant navigation to current location: \\\"\" + from.fullPath + \"\\\".\"); // backwards compatible with the first introduction of Errors\n\n error.name = 'NavigationDuplicated';\n return error;\n}\n\nfunction createNavigationCancelledError(from, to) {\n return createRouterError(from, to, NavigationFailureType.cancelled, \"Navigation cancelled from \\\"\" + from.fullPath + \"\\\" to \\\"\" + to.fullPath + \"\\\" with a new navigation.\");\n}\n\nfunction createNavigationAbortedError(from, to) {\n return createRouterError(from, to, NavigationFailureType.aborted, \"Navigation aborted from \\\"\" + from.fullPath + \"\\\" to \\\"\" + to.fullPath + \"\\\" via a navigation guard.\");\n}\n\nfunction createRouterError(from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n return error;\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute(to) {\n if (typeof to === 'string') {\n return to;\n }\n\n if ('path' in to) {\n return to.path;\n }\n\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) {\n location[key] = to[key];\n }\n });\n return JSON.stringify(location, null, 2);\n}\n\nfunction isError(err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1;\n}\n\nfunction isNavigationFailure(err, errorType) {\n return isError(err) && err._isRouter && (errorType == null || err.type === errorType);\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 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 var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n } // save resolved on async factory in case it's used elsewhere\n\n\n def.resolved = typeof resolvedDef === 'function' ? resolvedDef : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n\n if (pending <= 0) {\n next();\n }\n });\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n\n if (!error) {\n error = isError(reason) ? reason : new Error(msg);\n next(error);\n }\n });\n var res;\n\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\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\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) {\n next();\n }\n };\n}\n\nfunction flatMapComponents(matched, fn) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return fn(m.components[key], m.instances[key], m, key);\n });\n }));\n}\n\nfunction flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n\nvar hasSymbol = typeof Symbol === 'function' && _typeof(Symbol.toStringTag) === 'symbol';\n\nfunction isESModule(obj) {\n return obj.__esModule || hasSymbol && obj[Symbol.toStringTag] === 'Module';\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.\n\n\nfunction once(fn) {\n var called = false;\n return function () {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n if (called) {\n return;\n }\n\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); // start with a route object that stands for \"nowhere\"\n\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\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\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 var route; // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n }); // Exception should still be thrown\n\n throw e;\n }\n\n var prev = this.current;\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n }); // fire ready cbs once\n\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n\n if (err && !this$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition(route, onComplete, onAbort) {\n var this$1 = this;\n var current = this.current;\n this.pending = route;\n\n var abort = function abort(err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n\n console.error(err);\n }\n }\n\n onAbort && onAbort(err);\n };\n\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n\n if (isSameRoute(route, current) && // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex && route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]) {\n this.ensureURL();\n\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n\n return abort(createNavigationDuplicatedError(current, route));\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 var queue = [].concat( // in-component leave guards\n extractLeaveGuards(deactivated), // global before hooks\n this.router.beforeHooks, // in-component update hooks\n extractUpdateHooks(updated), // in-config enter guards\n activated.map(function (m) {\n return m.beforeEnter;\n }), // async components\n resolveAsyncComponents(activated));\n\n var iterator = function iterator(hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route));\n }\n\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (typeof to === 'string' || _typeof(to) === 'object' && (typeof to.path === 'string' || typeof to.name === 'string')) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n\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 // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route));\n }\n\n this$1.pending = null;\n onComplete(route);\n\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute(route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners() {// Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown() {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = []; // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase(base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = baseEl && baseEl.getAttribute('href') || '/'; // strip full URL origin\n\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n } // make sure there's the starting slash\n\n\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n } // remove trailing slash\n\n\n return base.replace(/\\/$/, '');\n}\n\nfunction resolveQueue(current, next) {\n var i;\n var max = Math.max(current.length, next.length);\n\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break;\n }\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(records, name, bind, reverse) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n\n if (guard) {\n return Array.isArray(guard) ? guard.map(function (guard) {\n 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(def, key) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\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(activated) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key);\n });\n}\n\nfunction bindEnterGuard(guard, match, key) {\n return function routeEnterGuard(to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n\n match.enteredCbs[key].push(cb);\n }\n\n next(cb);\n });\n };\n}\n/* */\n\n\nvar HTML5History = /*@__PURE__*/function (History) {\n function HTML5History(router, base) {\n History.call(this, router, base);\n this._startLocation = getLocation(this.base);\n }\n\n if (History) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create(History && History.prototype);\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners() {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return;\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function handleRoutingEvent() {\n var current = this$1.current; // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n\n var location = getLocation(this$1.base);\n\n if (this$1.current === START && location === this$1._startLocation) {\n return;\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\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 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 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 var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase(); // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n\n if (base && (pathLowerCase === baseLowerCase || pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0)) {\n path = path.slice(base.length);\n }\n\n return (path || '/') + window.location.search + window.location.hash;\n}\n/* */\n\n\nvar HashHistory = /*@__PURE__*/function (History) {\n function HashHistory(router, base, fallback) {\n History.call(this, router, base); // check history fallback deeplinking\n\n if (fallback && checkFallback(this.base)) {\n return;\n }\n\n ensureSlash();\n }\n\n if (History) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create(History && History.prototype);\n HashHistory.prototype.constructor = HashHistory; // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n\n HashHistory.prototype.setupListeners = function setupListeners() {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return;\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function handleRoutingEvent() {\n var current = this$1.current;\n\n if (!ensureSlash()) {\n return;\n }\n\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(eventType, handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\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\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\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true;\n }\n}\n\nfunction ensureSlash() {\n var path = getHash();\n\n if (path.charAt(0) === '/') {\n return true;\n }\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('#'); // empty path\n\n if (index < 0) {\n return '';\n }\n\n href = href.slice(index + 1);\n return href;\n}\n\nfunction getUrl(path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return base + \"#\" + path;\n}\n\nfunction pushHash(path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash(path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n/* */\n\n\nvar AbstractHistory = /*@__PURE__*/function (History) {\n function AbstractHistory(router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if (History) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create(History && History.prototype);\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\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 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 var targetIndex = this.index + n;\n\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return;\n }\n\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n var prev = this$1.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n }, function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\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() {// noop\n };\n\n return AbstractHistory;\n}(History);\n/* */\n\n\nvar VueRouter = function VueRouter(options) {\n if (options === void 0) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\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 var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n\n if (this.fallback) {\n mode = 'hash';\n }\n\n if (!inBrowser) {\n mode = 'abstract';\n }\n\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break;\n\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break;\n\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break;\n\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, \"invalid mode: \" + mode);\n }\n\n }\n};\n\nvar prototypeAccessors = {\n currentRoute: {\n configurable: true\n }\n};\n\nVueRouter.prototype.match = function match(raw, current, redirectedFrom) {\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\n/* Vue component instance */\n) {\n var this$1 = this;\n process.env.NODE_ENV !== 'production' && assert(install.installed, \"not installed. Make sure to call `Vue.use(VueRouter)` \" + \"before creating root instance.\");\n this.apps.push(app); // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n\n if (index > -1) {\n this$1.apps.splice(index, 1);\n } // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n\n\n if (this$1.app === app) {\n this$1.app = this$1.apps[0] || null;\n }\n\n if (!this$1.app) {\n this$1.history.teardown();\n }\n }); // main app previously initialized\n // return as we don't need to set up new history listener\n\n if (this.app) {\n return;\n }\n\n this.app = app;\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function handleInitialScroll(routeOrError) {\n var from = history.current;\n var expectScroll = this$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1, routeOrError, from, false);\n }\n };\n\n var setupListeners = function setupListeners(routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n\n history.transitionTo(history.getCurrentLocation(), setupListeners, setupListeners);\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 var this$1 = this; // $flow-disable-line\n\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n });\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this; // $flow-disable-line\n\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n });\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\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 ? to.matched ? to : this.resolve(to).route : this.currentRoute;\n\n if (!route) {\n return [];\n }\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(to, current, append) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\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.getRoutes = function getRoutes() {\n return this.matcher.getRoutes();\n};\n\nVueRouter.prototype.addRoute = function addRoute(parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes(routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n\n this.matcher.addRoutes(routes);\n\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\n if (i > -1) {\n list.splice(i, 1);\n }\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 = '3.5.3';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/qingge-Market/qingge-vue/vue/node_modules/vue-router/dist/vue-router.esm.js"],"names":["assert","condition","message","Error","warn","console","extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","err","process","env","NODE_ENV","resolveQuery","query","extraQuery","_parseQuery","parse","parseQuery","parsedQuery","e","value","Array","isArray","map","castQueryParamValue","String","res","trim","split","forEach","param","parts","shift","val","length","join","undefined","push","stringifyQuery","obj","Object","keys","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","options","clone","route","name","meta","path","hash","params","fullPath","getFullPath","matched","formatMatch","freeze","START","unshift","parent","ref","_stringifyQuery","stringify","isSameRoute","onlyPath","isObjectEqual","aKeys","sort","bKeys","every","i","aVal","bKey","bVal","isIncludedRoute","current","target","indexOf","queryIncludes","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","props","type","default","render","_","children","data","routerView","h","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","vm","hook","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","attrs","config","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","segment","parsePath","hashIndex","slice","queryIndex","cleanPath","isarray","arr","prototype","call","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","encodeAsterisk","matches","flags","opts","pretty","token","TypeError","JSON","j","test","attachKeys","re","sensitive","regexpToRegexp","groups","source","match","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","basePath","toTypes","eventTypes","noop","warnedCustomSlot","warnedTagProp","warnedEventProp","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","handler","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","$options","propsData","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","_Vue","install","Vue","installed","isDef","v","registerInstance","callVal","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","history","destroyed","defineProperty","get","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","splice","found","pathNames","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","some","childMatchAs","aliases","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","targetRecord","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","state","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","saveScrollPosition","pageXOffset","y","pageYOffset","getElementPosition","el","docEl","document","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","isObject","selector","getElementById","querySelector","style","scrollTo","supportsPushState","ua","navigator","userAgent","pushState","url","runQueue","queue","fn","cb","step","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","error","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","reject","reason","msg","comp","flatten","concat","apply","hasSymbol","Symbol","toStringTag","__esModule","called","args","arguments","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","updated","deactivated","activated","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","enterGuards","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","baseEl","max","Math","extractGuards","records","bind","reverse","guards","guard","extractGuard","bindGuard","boundRouteGuard","bindEnterGuard","routeEnterGuard","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","n","fromRoute","getCurrentLocation","pathname","pathLowerCase","toLowerCase","baseLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","$once","handleInitialScroll","routeOrError","beforeEach","registerHook","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","list","version","START_LOCATION","use"],"mappings":"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","sourcesContent":["/*!\n * vue-router v3.5.3\n * (c) 2021 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 (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\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\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\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 process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\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 ? decode(parts.join('=')) : 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\n ? Object.keys(obj)\n .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 })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\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: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\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, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\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 // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\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\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\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 // used by devtools to display a router-view badge\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 var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && 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 var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\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 register 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 // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\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 (process.env.NODE_ENV !== 'production') {\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\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 isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = 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), 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, options) {\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 + ')$', flags(options));\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 (isarray(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 && 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 (!isarray(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 (!isarray(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 (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\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._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\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\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\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(\n this.to,\n current,\n this.append\n );\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 =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> 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 && _Vue === Vue) { 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('RouterView', View);\n Vue.component('RouterLink', 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 createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\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 if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\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 (process.env.NODE_ENV !== 'production') {\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(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\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 alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n 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 (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\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 (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\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 (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { 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\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 addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\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 (process.env.NODE_ENV !== 'production') {\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 location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\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 (process.env.NODE_ENV !== 'production') {\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 (process.env.NODE_ENV !== 'production') {\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 (process.env.NODE_ENV !== 'production') {\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 addRoute: addRoute,\n getRoutes: getRoutes,\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 if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\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// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\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 (process.env.NODE_ENV !== 'production') {\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.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\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 handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\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\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\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 // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (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 && typeof window.history.pushState === 'function'\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 // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', 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// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\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 (isESModule(resolvedDef)) {\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 process.env.NODE_ENV !== '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\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\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 this.listeners = [];\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 (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\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 var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\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 // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> 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) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === this$1._startLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\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 var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.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 ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.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 if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.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(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.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(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\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(cleanPath(base + '/#' + location));\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 // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.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(\n location,\n 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 },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\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(\n route,\n function () {\n var prev = this$1.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\n }\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 if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\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 =\n 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 (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\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 process.env.NODE_ENV !== 'production' &&\n 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 // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n\n if (!this$1.app) { this$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\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 var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\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(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\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.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\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 = '3.5.3';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n"]},"metadata":{},"sourceType":"module"} |