mirror of
				https://github.com/MHSanaei/3x-ui.git
				synced 2025-10-26 01:54:41 +00:00 
			
		
		
		
	
		
			
	
	
		
			8827 lines
		
	
	
	
		
			309 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			8827 lines
		
	
	
	
		
			309 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | /*! | ||
|  |  * Vue.js v2.7.16 | ||
|  |  * (c) 2014-2023 Evan You | ||
|  |  * Released under the MIT License. | ||
|  |  */ | ||
|  | (function (global, factory) { | ||
|  |   typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
|  |   typeof define === 'function' && define.amd ? define(factory) : | ||
|  |   (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Vue = factory()); | ||
|  | })(this, (function () { 'use strict'; | ||
|  | 
 | ||
|  |   var emptyObject = Object.freeze({}); | ||
|  |   var isArray = Array.isArray; | ||
|  |   // These helpers produce better VM code in JS engines due to their
 | ||
|  |   // explicitness and function inlining.
 | ||
|  |   function isUndef(v) { | ||
|  |       return v === undefined || v === null; | ||
|  |   } | ||
|  |   function isDef(v) { | ||
|  |       return v !== undefined && v !== null; | ||
|  |   } | ||
|  |   function isTrue(v) { | ||
|  |       return v === true; | ||
|  |   } | ||
|  |   function isFalse(v) { | ||
|  |       return v === false; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Check if value is primitive. | ||
|  |    */ | ||
|  |   function isPrimitive(value) { | ||
|  |       return (typeof value === 'string' || | ||
|  |           typeof value === 'number' || | ||
|  |           // $flow-disable-line
 | ||
|  |           typeof value === 'symbol' || | ||
|  |           typeof value === 'boolean'); | ||
|  |   } | ||
|  |   function isFunction(value) { | ||
|  |       return typeof value === 'function'; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Quick object check - this is primarily used to tell | ||
|  |    * objects from primitive values when we know the value | ||
|  |    * is a JSON-compliant type. | ||
|  |    */ | ||
|  |   function isObject(obj) { | ||
|  |       return obj !== null && typeof obj === 'object'; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Get the raw type string of a value, e.g., [object Object]. | ||
|  |    */ | ||
|  |   var _toString = Object.prototype.toString; | ||
|  |   function toRawType(value) { | ||
|  |       return _toString.call(value).slice(8, -1); | ||
|  |   } | ||
|  |   /** | ||
|  |    * Strict object type check. Only returns true | ||
|  |    * for plain JavaScript objects. | ||
|  |    */ | ||
|  |   function isPlainObject(obj) { | ||
|  |       return _toString.call(obj) === '[object Object]'; | ||
|  |   } | ||
|  |   function isRegExp(v) { | ||
|  |       return _toString.call(v) === '[object RegExp]'; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Check if val is a valid array index. | ||
|  |    */ | ||
|  |   function isValidArrayIndex(val) { | ||
|  |       var n = parseFloat(String(val)); | ||
|  |       return n >= 0 && Math.floor(n) === n && isFinite(val); | ||
|  |   } | ||
|  |   function isPromise(val) { | ||
|  |       return (isDef(val) && | ||
|  |           typeof val.then === 'function' && | ||
|  |           typeof val.catch === 'function'); | ||
|  |   } | ||
|  |   /** | ||
|  |    * Convert a value to a string that is actually rendered. | ||
|  |    */ | ||
|  |   function toString(val) { | ||
|  |       return val == null | ||
|  |           ? '' | ||
|  |           : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) | ||
|  |               ? JSON.stringify(val, replacer, 2) | ||
|  |               : String(val); | ||
|  |   } | ||
|  |   function replacer(_key, val) { | ||
|  |       // avoid circular deps from v3
 | ||
|  |       if (val && val.__v_isRef) { | ||
|  |           return val.value; | ||
|  |       } | ||
|  |       return val; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Convert an input value to a number for persistence. | ||
|  |    * If the conversion fails, return original string. | ||
|  |    */ | ||
|  |   function toNumber(val) { | ||
|  |       var n = parseFloat(val); | ||
|  |       return isNaN(n) ? val : n; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Make a map and return a function for checking if a key | ||
|  |    * is in that map. | ||
|  |    */ | ||
|  |   function makeMap(str, expectsLowerCase) { | ||
|  |       var map = Object.create(null); | ||
|  |       var list = str.split(','); | ||
|  |       for (var i = 0; i < list.length; i++) { | ||
|  |           map[list[i]] = true; | ||
|  |       } | ||
|  |       return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; }; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Check if a tag is a built-in tag. | ||
|  |    */ | ||
|  |   var isBuiltInTag = makeMap('slot,component', true); | ||
|  |   /** | ||
|  |    * Check if an attribute is a reserved attribute. | ||
|  |    */ | ||
|  |   var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); | ||
|  |   /** | ||
|  |    * Remove an item from an array. | ||
|  |    */ | ||
|  |   function remove$2(arr, item) { | ||
|  |       var len = arr.length; | ||
|  |       if (len) { | ||
|  |           // fast path for the only / last item
 | ||
|  |           if (item === arr[len - 1]) { | ||
|  |               arr.length = len - 1; | ||
|  |               return; | ||
|  |           } | ||
|  |           var index = arr.indexOf(item); | ||
|  |           if (index > -1) { | ||
|  |               return arr.splice(index, 1); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Check whether an object has the property. | ||
|  |    */ | ||
|  |   var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
|  |   function hasOwn(obj, key) { | ||
|  |       return hasOwnProperty.call(obj, key); | ||
|  |   } | ||
|  |   /** | ||
|  |    * Create a cached version of a pure function. | ||
|  |    */ | ||
|  |   function cached(fn) { | ||
|  |       var cache = Object.create(null); | ||
|  |       return function cachedFn(str) { | ||
|  |           var hit = cache[str]; | ||
|  |           return hit || (cache[str] = fn(str)); | ||
|  |       }; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Camelize a hyphen-delimited string. | ||
|  |    */ | ||
|  |   var camelizeRE = /-(\w)/g; | ||
|  |   var camelize = cached(function (str) { | ||
|  |       return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); }); | ||
|  |   }); | ||
|  |   /** | ||
|  |    * Capitalize a string. | ||
|  |    */ | ||
|  |   var capitalize = cached(function (str) { | ||
|  |       return str.charAt(0).toUpperCase() + str.slice(1); | ||
|  |   }); | ||
|  |   /** | ||
|  |    * Hyphenate a camelCase string. | ||
|  |    */ | ||
|  |   var hyphenateRE = /\B([A-Z])/g; | ||
|  |   var hyphenate = cached(function (str) { | ||
|  |       return str.replace(hyphenateRE, '-$1').toLowerCase(); | ||
|  |   }); | ||
|  |   /** | ||
|  |    * Simple bind polyfill for environments that do not support it, | ||
|  |    * e.g., PhantomJS 1.x. Technically, we don't need this anymore | ||
|  |    * since native bind is now performant enough in most browsers. | ||
|  |    * But removing it would mean breaking code that was able to run in | ||
|  |    * PhantomJS 1.x, so this must be kept for backward compatibility. | ||
|  |    */ | ||
|  |   /* istanbul ignore next */ | ||
|  |   function polyfillBind(fn, ctx) { | ||
|  |       function boundFn(a) { | ||
|  |           var l = arguments.length; | ||
|  |           return l | ||
|  |               ? l > 1 | ||
|  |                   ? fn.apply(ctx, arguments) | ||
|  |                   : fn.call(ctx, a) | ||
|  |               : fn.call(ctx); | ||
|  |       } | ||
|  |       boundFn._length = fn.length; | ||
|  |       return boundFn; | ||
|  |   } | ||
|  |   function nativeBind(fn, ctx) { | ||
|  |       return fn.bind(ctx); | ||
|  |   } | ||
|  |   // @ts-expect-error bind cannot be `undefined`
 | ||
|  |   var bind = Function.prototype.bind ? nativeBind : polyfillBind; | ||
|  |   /** | ||
|  |    * Convert an Array-like object to a real Array. | ||
|  |    */ | ||
|  |   function toArray(list, start) { | ||
|  |       start = start || 0; | ||
|  |       var i = list.length - start; | ||
|  |       var ret = new Array(i); | ||
|  |       while (i--) { | ||
|  |           ret[i] = list[i + start]; | ||
|  |       } | ||
|  |       return ret; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Mix properties into target object. | ||
|  |    */ | ||
|  |   function extend(to, _from) { | ||
|  |       for (var key in _from) { | ||
|  |           to[key] = _from[key]; | ||
|  |       } | ||
|  |       return to; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Merge an Array of Objects into a single Object. | ||
|  |    */ | ||
|  |   function toObject(arr) { | ||
|  |       var res = {}; | ||
|  |       for (var i = 0; i < arr.length; i++) { | ||
|  |           if (arr[i]) { | ||
|  |               extend(res, arr[i]); | ||
|  |           } | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  |   /* eslint-disable no-unused-vars */ | ||
|  |   /** | ||
|  |    * Perform no operation. | ||
|  |    * Stubbing args to make Flow happy without leaving useless transpiled code | ||
|  |    * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
 | ||
|  |    */ | ||
|  |   function noop(a, b, c) { } | ||
|  |   /** | ||
|  |    * Always return false. | ||
|  |    */ | ||
|  |   var no = function (a, b, c) { return false; }; | ||
|  |   /* eslint-enable no-unused-vars */ | ||
|  |   /** | ||
|  |    * Return the same value. | ||
|  |    */ | ||
|  |   var identity = function (_) { return _; }; | ||
|  |   /** | ||
|  |    * Check if two values are loosely equal - that is, | ||
|  |    * if they are plain objects, do they have the same shape? | ||
|  |    */ | ||
|  |   function looseEqual(a, b) { | ||
|  |       if (a === b) | ||
|  |           return true; | ||
|  |       var isObjectA = isObject(a); | ||
|  |       var isObjectB = isObject(b); | ||
|  |       if (isObjectA && isObjectB) { | ||
|  |           try { | ||
|  |               var isArrayA = Array.isArray(a); | ||
|  |               var isArrayB = Array.isArray(b); | ||
|  |               if (isArrayA && isArrayB) { | ||
|  |                   return (a.length === b.length && | ||
|  |                       a.every(function (e, i) { | ||
|  |                           return looseEqual(e, b[i]); | ||
|  |                       })); | ||
|  |               } | ||
|  |               else if (a instanceof Date && b instanceof Date) { | ||
|  |                   return a.getTime() === b.getTime(); | ||
|  |               } | ||
|  |               else if (!isArrayA && !isArrayB) { | ||
|  |                   var keysA = Object.keys(a); | ||
|  |                   var keysB = Object.keys(b); | ||
|  |                   return (keysA.length === keysB.length && | ||
|  |                       keysA.every(function (key) { | ||
|  |                           return looseEqual(a[key], b[key]); | ||
|  |                       })); | ||
|  |               } | ||
|  |               else { | ||
|  |                   /* istanbul ignore next */ | ||
|  |                   return false; | ||
|  |               } | ||
|  |           } | ||
|  |           catch (e) { | ||
|  |               /* istanbul ignore next */ | ||
|  |               return false; | ||
|  |           } | ||
|  |       } | ||
|  |       else if (!isObjectA && !isObjectB) { | ||
|  |           return String(a) === String(b); | ||
|  |       } | ||
|  |       else { | ||
|  |           return false; | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Return the first index at which a loosely equal value can be | ||
|  |    * found in the array (if value is a plain object, the array must | ||
|  |    * contain an object of the same shape), or -1 if it is not present. | ||
|  |    */ | ||
|  |   function looseIndexOf(arr, val) { | ||
|  |       for (var i = 0; i < arr.length; i++) { | ||
|  |           if (looseEqual(arr[i], val)) | ||
|  |               return i; | ||
|  |       } | ||
|  |       return -1; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Ensure a function is called only once. | ||
|  |    */ | ||
|  |   function once(fn) { | ||
|  |       var called = false; | ||
|  |       return function () { | ||
|  |           if (!called) { | ||
|  |               called = true; | ||
|  |               fn.apply(this, arguments); | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  |   // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill
 | ||
|  |   function hasChanged(x, y) { | ||
|  |       if (x === y) { | ||
|  |           return x === 0 && 1 / x !== 1 / y; | ||
|  |       } | ||
|  |       else { | ||
|  |           return x === x || y === y; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   var SSR_ATTR = 'data-server-rendered'; | ||
|  |   var ASSET_TYPES = ['component', 'directive', 'filter']; | ||
|  |   var LIFECYCLE_HOOKS = [ | ||
|  |       'beforeCreate', | ||
|  |       'created', | ||
|  |       'beforeMount', | ||
|  |       'mounted', | ||
|  |       'beforeUpdate', | ||
|  |       'updated', | ||
|  |       'beforeDestroy', | ||
|  |       'destroyed', | ||
|  |       'activated', | ||
|  |       'deactivated', | ||
|  |       'errorCaptured', | ||
|  |       'serverPrefetch', | ||
|  |       'renderTracked', | ||
|  |       'renderTriggered' | ||
|  |   ]; | ||
|  | 
 | ||
|  |   var config = { | ||
|  |       /** | ||
|  |        * Option merge strategies (used in core/util/options) | ||
|  |        */ | ||
|  |       // $flow-disable-line
 | ||
|  |       optionMergeStrategies: Object.create(null), | ||
|  |       /** | ||
|  |        * Whether to suppress warnings. | ||
|  |        */ | ||
|  |       silent: false, | ||
|  |       /** | ||
|  |        * Show production mode tip message on boot? | ||
|  |        */ | ||
|  |       productionTip: true, | ||
|  |       /** | ||
|  |        * Whether to enable devtools | ||
|  |        */ | ||
|  |       devtools: true, | ||
|  |       /** | ||
|  |        * Whether to record perf | ||
|  |        */ | ||
|  |       performance: false, | ||
|  |       /** | ||
|  |        * Error handler for watcher errors | ||
|  |        */ | ||
|  |       errorHandler: null, | ||
|  |       /** | ||
|  |        * Warn handler for watcher warns | ||
|  |        */ | ||
|  |       warnHandler: null, | ||
|  |       /** | ||
|  |        * Ignore certain custom elements | ||
|  |        */ | ||
|  |       ignoredElements: [], | ||
|  |       /** | ||
|  |        * Custom user key aliases for v-on | ||
|  |        */ | ||
|  |       // $flow-disable-line
 | ||
|  |       keyCodes: Object.create(null), | ||
|  |       /** | ||
|  |        * Check if a tag is reserved so that it cannot be registered as a | ||
|  |        * component. This is platform-dependent and may be overwritten. | ||
|  |        */ | ||
|  |       isReservedTag: no, | ||
|  |       /** | ||
|  |        * Check if an attribute is reserved so that it cannot be used as a component | ||
|  |        * prop. This is platform-dependent and may be overwritten. | ||
|  |        */ | ||
|  |       isReservedAttr: no, | ||
|  |       /** | ||
|  |        * Check if a tag is an unknown element. | ||
|  |        * Platform-dependent. | ||
|  |        */ | ||
|  |       isUnknownElement: no, | ||
|  |       /** | ||
|  |        * Get the namespace of an element | ||
|  |        */ | ||
|  |       getTagNamespace: noop, | ||
|  |       /** | ||
|  |        * Parse the real tag name for the specific platform. | ||
|  |        */ | ||
|  |       parsePlatformTagName: identity, | ||
|  |       /** | ||
|  |        * Check if an attribute must be bound using property, e.g. value | ||
|  |        * Platform-dependent. | ||
|  |        */ | ||
|  |       mustUseProp: no, | ||
|  |       /** | ||
|  |        * Perform updates asynchronously. Intended to be used by Vue Test Utils | ||
|  |        * This will significantly reduce performance if set to false. | ||
|  |        */ | ||
|  |       async: true, | ||
|  |       /** | ||
|  |        * Exposed for legacy reasons | ||
|  |        */ | ||
|  |       _lifecycleHooks: LIFECYCLE_HOOKS | ||
|  |   }; | ||
|  | 
 | ||
|  |   /** | ||
|  |    * unicode letters used for parsing html tags, component names and property paths. | ||
|  |    * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
 | ||
|  |    * skipping \u10000-\uEFFFF due to it freezing up PhantomJS | ||
|  |    */ | ||
|  |   var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/; | ||
|  |   /** | ||
|  |    * Check if a string starts with $ or _ | ||
|  |    */ | ||
|  |   function isReserved(str) { | ||
|  |       var c = (str + '').charCodeAt(0); | ||
|  |       return c === 0x24 || c === 0x5f; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Define a property. | ||
|  |    */ | ||
|  |   function def(obj, key, val, enumerable) { | ||
|  |       Object.defineProperty(obj, key, { | ||
|  |           value: val, | ||
|  |           enumerable: !!enumerable, | ||
|  |           writable: true, | ||
|  |           configurable: true | ||
|  |       }); | ||
|  |   } | ||
|  |   /** | ||
|  |    * Parse simple path. | ||
|  |    */ | ||
|  |   var bailRE = new RegExp("[^".concat(unicodeRegExp.source, ".$_\\d]")); | ||
|  |   function parsePath(path) { | ||
|  |       if (bailRE.test(path)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var segments = path.split('.'); | ||
|  |       return function (obj) { | ||
|  |           for (var i = 0; i < segments.length; i++) { | ||
|  |               if (!obj) | ||
|  |                   return; | ||
|  |               obj = obj[segments[i]]; | ||
|  |           } | ||
|  |           return obj; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   // can we use __proto__?
 | ||
|  |   var hasProto = '__proto__' in {}; | ||
|  |   // Browser environment sniffing
 | ||
|  |   var inBrowser = typeof window !== 'undefined'; | ||
|  |   var UA = inBrowser && window.navigator.userAgent.toLowerCase(); | ||
|  |   var isIE = UA && /msie|trident/.test(UA); | ||
|  |   var isIE9 = UA && UA.indexOf('msie 9.0') > 0; | ||
|  |   var isEdge = UA && UA.indexOf('edge/') > 0; | ||
|  |   UA && UA.indexOf('android') > 0; | ||
|  |   var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA); | ||
|  |   UA && /chrome\/\d+/.test(UA) && !isEdge; | ||
|  |   UA && /phantomjs/.test(UA); | ||
|  |   var isFF = UA && UA.match(/firefox\/(\d+)/); | ||
|  |   // Firefox has a "watch" function on Object.prototype...
 | ||
|  |   // @ts-expect-error firebox support
 | ||
|  |   var nativeWatch = {}.watch; | ||
|  |   var supportsPassive = false; | ||
|  |   if (inBrowser) { | ||
|  |       try { | ||
|  |           var opts = {}; | ||
|  |           Object.defineProperty(opts, 'passive', { | ||
|  |               get: function () { | ||
|  |                   /* istanbul ignore next */ | ||
|  |                   supportsPassive = true; | ||
|  |               } | ||
|  |           }); // https://github.com/facebook/flow/issues/285
 | ||
|  |           window.addEventListener('test-passive', null, opts); | ||
|  |       } | ||
|  |       catch (e) { } | ||
|  |   } | ||
|  |   // this needs to be lazy-evaled because vue may be required before
 | ||
|  |   // vue-server-renderer can set VUE_ENV
 | ||
|  |   var _isServer; | ||
|  |   var isServerRendering = function () { | ||
|  |       if (_isServer === undefined) { | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (!inBrowser && typeof global !== 'undefined') { | ||
|  |               // detect presence of vue-server-renderer and avoid
 | ||
|  |               // Webpack shimming the process
 | ||
|  |               _isServer = | ||
|  |                   global['process'] && global['process'].env.VUE_ENV === 'server'; | ||
|  |           } | ||
|  |           else { | ||
|  |               _isServer = false; | ||
|  |           } | ||
|  |       } | ||
|  |       return _isServer; | ||
|  |   }; | ||
|  |   // detect devtools
 | ||
|  |   var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; | ||
|  |   /* istanbul ignore next */ | ||
|  |   function isNative(Ctor) { | ||
|  |       return typeof Ctor === 'function' && /native code/.test(Ctor.toString()); | ||
|  |   } | ||
|  |   var hasSymbol = typeof Symbol !== 'undefined' && | ||
|  |       isNative(Symbol) && | ||
|  |       typeof Reflect !== 'undefined' && | ||
|  |       isNative(Reflect.ownKeys); | ||
|  |   var _Set; // $flow-disable-line
 | ||
|  |   /* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) { | ||
|  |       // use native Set when available.
 | ||
|  |       _Set = Set; | ||
|  |   } | ||
|  |   else { | ||
|  |       // a non-standard Set polyfill that only works with primitive keys.
 | ||
|  |       _Set = /** @class */ (function () { | ||
|  |           function Set() { | ||
|  |               this.set = Object.create(null); | ||
|  |           } | ||
|  |           Set.prototype.has = function (key) { | ||
|  |               return this.set[key] === true; | ||
|  |           }; | ||
|  |           Set.prototype.add = function (key) { | ||
|  |               this.set[key] = true; | ||
|  |           }; | ||
|  |           Set.prototype.clear = function () { | ||
|  |               this.set = Object.create(null); | ||
|  |           }; | ||
|  |           return Set; | ||
|  |       }()); | ||
|  |   } | ||
|  | 
 | ||
|  |   var currentInstance = null; | ||
|  |   /** | ||
|  |    * This is exposed for compatibility with v3 (e.g. some functions in VueUse | ||
|  |    * relies on it). Do not use this internally, just use `currentInstance`. | ||
|  |    * | ||
|  |    * @internal this function needs manual type declaration because it relies | ||
|  |    * on previously manually authored types from Vue 2 | ||
|  |    */ | ||
|  |   function getCurrentInstance() { | ||
|  |       return currentInstance && { proxy: currentInstance }; | ||
|  |   } | ||
|  |   /** | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   function setCurrentInstance(vm) { | ||
|  |       if (vm === void 0) { vm = null; } | ||
|  |       if (!vm) | ||
|  |           currentInstance && currentInstance._scope.off(); | ||
|  |       currentInstance = vm; | ||
|  |       vm && vm._scope.on(); | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   var VNode = /** @class */ (function () { | ||
|  |       function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) { | ||
|  |           this.tag = tag; | ||
|  |           this.data = data; | ||
|  |           this.children = children; | ||
|  |           this.text = text; | ||
|  |           this.elm = elm; | ||
|  |           this.ns = undefined; | ||
|  |           this.context = context; | ||
|  |           this.fnContext = undefined; | ||
|  |           this.fnOptions = undefined; | ||
|  |           this.fnScopeId = undefined; | ||
|  |           this.key = data && data.key; | ||
|  |           this.componentOptions = componentOptions; | ||
|  |           this.componentInstance = undefined; | ||
|  |           this.parent = undefined; | ||
|  |           this.raw = false; | ||
|  |           this.isStatic = false; | ||
|  |           this.isRootInsert = true; | ||
|  |           this.isComment = false; | ||
|  |           this.isCloned = false; | ||
|  |           this.isOnce = false; | ||
|  |           this.asyncFactory = asyncFactory; | ||
|  |           this.asyncMeta = undefined; | ||
|  |           this.isAsyncPlaceholder = false; | ||
|  |       } | ||
|  |       Object.defineProperty(VNode.prototype, "child", { | ||
|  |           // DEPRECATED: alias for componentInstance for backwards compat.
 | ||
|  |           /* istanbul ignore next */ | ||
|  |           get: function () { | ||
|  |               return this.componentInstance; | ||
|  |           }, | ||
|  |           enumerable: false, | ||
|  |           configurable: true | ||
|  |       }); | ||
|  |       return VNode; | ||
|  |   }()); | ||
|  |   var createEmptyVNode = function (text) { | ||
|  |       if (text === void 0) { text = ''; } | ||
|  |       var node = new VNode(); | ||
|  |       node.text = text; | ||
|  |       node.isComment = true; | ||
|  |       return node; | ||
|  |   }; | ||
|  |   function createTextVNode(val) { | ||
|  |       return new VNode(undefined, undefined, undefined, String(val)); | ||
|  |   } | ||
|  |   // optimized shallow clone
 | ||
|  |   // used for static nodes and slot nodes because they may be reused across
 | ||
|  |   // multiple renders, cloning them avoids errors when DOM manipulations rely
 | ||
|  |   // on their elm reference.
 | ||
|  |   function cloneVNode(vnode) { | ||
|  |       var cloned = new VNode(vnode.tag, vnode.data,  | ||
|  |       // #7975
 | ||
|  |       // clone children array to avoid mutating original in case of cloning
 | ||
|  |       // a child.
 | ||
|  |       vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory); | ||
|  |       cloned.ns = vnode.ns; | ||
|  |       cloned.isStatic = vnode.isStatic; | ||
|  |       cloned.key = vnode.key; | ||
|  |       cloned.isComment = vnode.isComment; | ||
|  |       cloned.fnContext = vnode.fnContext; | ||
|  |       cloned.fnOptions = vnode.fnOptions; | ||
|  |       cloned.fnScopeId = vnode.fnScopeId; | ||
|  |       cloned.asyncMeta = vnode.asyncMeta; | ||
|  |       cloned.isCloned = true; | ||
|  |       return cloned; | ||
|  |   } | ||
|  | 
 | ||
|  |   /****************************************************************************** | ||
|  |   Copyright (c) Microsoft Corporation. | ||
|  | 
 | ||
|  |   Permission to use, copy, modify, and/or distribute this software for any | ||
|  |   purpose with or without fee is hereby granted. | ||
|  | 
 | ||
|  |   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | ||
|  |   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | ||
|  |   AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | ||
|  |   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | ||
|  |   LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR | ||
|  |   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | ||
|  |   PERFORMANCE OF THIS SOFTWARE. | ||
|  |   ***************************************************************************** */ | ||
|  | 
 | ||
|  |   var __assign = function() { | ||
|  |       __assign = Object.assign || function __assign(t) { | ||
|  |           for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
|  |               s = arguments[i]; | ||
|  |               for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; | ||
|  |           } | ||
|  |           return t; | ||
|  |       }; | ||
|  |       return __assign.apply(this, arguments); | ||
|  |   }; | ||
|  | 
 | ||
|  |   typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { | ||
|  |       var e = new Error(message); | ||
|  |       return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; | ||
|  |   }; | ||
|  | 
 | ||
|  |   var uid$2 = 0; | ||
|  |   var pendingCleanupDeps = []; | ||
|  |   var cleanupDeps = function () { | ||
|  |       for (var i = 0; i < pendingCleanupDeps.length; i++) { | ||
|  |           var dep = pendingCleanupDeps[i]; | ||
|  |           dep.subs = dep.subs.filter(function (s) { return s; }); | ||
|  |           dep._pending = false; | ||
|  |       } | ||
|  |       pendingCleanupDeps.length = 0; | ||
|  |   }; | ||
|  |   /** | ||
|  |    * A dep is an observable that can have multiple | ||
|  |    * directives subscribing to it. | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   var Dep = /** @class */ (function () { | ||
|  |       function Dep() { | ||
|  |           // pending subs cleanup
 | ||
|  |           this._pending = false; | ||
|  |           this.id = uid$2++; | ||
|  |           this.subs = []; | ||
|  |       } | ||
|  |       Dep.prototype.addSub = function (sub) { | ||
|  |           this.subs.push(sub); | ||
|  |       }; | ||
|  |       Dep.prototype.removeSub = function (sub) { | ||
|  |           // #12696 deps with massive amount of subscribers are extremely slow to
 | ||
|  |           // clean up in Chromium
 | ||
|  |           // to workaround this, we unset the sub for now, and clear them on
 | ||
|  |           // next scheduler flush.
 | ||
|  |           this.subs[this.subs.indexOf(sub)] = null; | ||
|  |           if (!this._pending) { | ||
|  |               this._pending = true; | ||
|  |               pendingCleanupDeps.push(this); | ||
|  |           } | ||
|  |       }; | ||
|  |       Dep.prototype.depend = function (info) { | ||
|  |           if (Dep.target) { | ||
|  |               Dep.target.addDep(this); | ||
|  |               if (info && Dep.target.onTrack) { | ||
|  |                   Dep.target.onTrack(__assign({ effect: Dep.target }, info)); | ||
|  |               } | ||
|  |           } | ||
|  |       }; | ||
|  |       Dep.prototype.notify = function (info) { | ||
|  |           // stabilize the subscriber list first
 | ||
|  |           var subs = this.subs.filter(function (s) { return s; }); | ||
|  |           if (!config.async) { | ||
|  |               // subs aren't sorted in scheduler if not running async
 | ||
|  |               // we need to sort them now to make sure they fire in correct
 | ||
|  |               // order
 | ||
|  |               subs.sort(function (a, b) { return a.id - b.id; }); | ||
|  |           } | ||
|  |           for (var i = 0, l = subs.length; i < l; i++) { | ||
|  |               var sub = subs[i]; | ||
|  |               if (info) { | ||
|  |                   sub.onTrigger && | ||
|  |                       sub.onTrigger(__assign({ effect: subs[i] }, info)); | ||
|  |               } | ||
|  |               sub.update(); | ||
|  |           } | ||
|  |       }; | ||
|  |       return Dep; | ||
|  |   }()); | ||
|  |   // The current target watcher being evaluated.
 | ||
|  |   // This is globally unique because only one watcher
 | ||
|  |   // can be evaluated at a time.
 | ||
|  |   Dep.target = null; | ||
|  |   var targetStack = []; | ||
|  |   function pushTarget(target) { | ||
|  |       targetStack.push(target); | ||
|  |       Dep.target = target; | ||
|  |   } | ||
|  |   function popTarget() { | ||
|  |       targetStack.pop(); | ||
|  |       Dep.target = targetStack[targetStack.length - 1]; | ||
|  |   } | ||
|  | 
 | ||
|  |   /* | ||
|  |    * not type checking this file because flow doesn't play well with | ||
|  |    * dynamically accessing methods on Array prototype | ||
|  |    */ | ||
|  |   var arrayProto = Array.prototype; | ||
|  |   var arrayMethods = Object.create(arrayProto); | ||
|  |   var methodsToPatch = [ | ||
|  |       'push', | ||
|  |       'pop', | ||
|  |       'shift', | ||
|  |       'unshift', | ||
|  |       'splice', | ||
|  |       'sort', | ||
|  |       'reverse' | ||
|  |   ]; | ||
|  |   /** | ||
|  |    * Intercept mutating methods and emit events | ||
|  |    */ | ||
|  |   methodsToPatch.forEach(function (method) { | ||
|  |       // cache original method
 | ||
|  |       var original = arrayProto[method]; | ||
|  |       def(arrayMethods, method, function mutator() { | ||
|  |           var args = []; | ||
|  |           for (var _i = 0; _i < arguments.length; _i++) { | ||
|  |               args[_i] = arguments[_i]; | ||
|  |           } | ||
|  |           var result = original.apply(this, args); | ||
|  |           var ob = this.__ob__; | ||
|  |           var inserted; | ||
|  |           switch (method) { | ||
|  |               case 'push': | ||
|  |               case 'unshift': | ||
|  |                   inserted = args; | ||
|  |                   break; | ||
|  |               case 'splice': | ||
|  |                   inserted = args.slice(2); | ||
|  |                   break; | ||
|  |           } | ||
|  |           if (inserted) | ||
|  |               ob.observeArray(inserted); | ||
|  |           // notify change
 | ||
|  |           { | ||
|  |               ob.dep.notify({ | ||
|  |                   type: "array mutation" /* TriggerOpTypes.ARRAY_MUTATION */, | ||
|  |                   target: this, | ||
|  |                   key: method | ||
|  |               }); | ||
|  |           } | ||
|  |           return result; | ||
|  |       }); | ||
|  |   }); | ||
|  | 
 | ||
|  |   var arrayKeys = Object.getOwnPropertyNames(arrayMethods); | ||
|  |   var NO_INITIAL_VALUE = {}; | ||
|  |   /** | ||
|  |    * In some cases we may want to disable observation inside a component's | ||
|  |    * update computation. | ||
|  |    */ | ||
|  |   var shouldObserve = true; | ||
|  |   function toggleObserving(value) { | ||
|  |       shouldObserve = value; | ||
|  |   } | ||
|  |   // ssr mock dep
 | ||
|  |   var mockDep = { | ||
|  |       notify: noop, | ||
|  |       depend: noop, | ||
|  |       addSub: noop, | ||
|  |       removeSub: noop | ||
|  |   }; | ||
|  |   /** | ||
|  |    * Observer class that is attached to each observed | ||
|  |    * object. Once attached, the observer converts the target | ||
|  |    * object's property keys into getter/setters that | ||
|  |    * collect dependencies and dispatch updates. | ||
|  |    */ | ||
|  |   var Observer = /** @class */ (function () { | ||
|  |       function Observer(value, shallow, mock) { | ||
|  |           if (shallow === void 0) { shallow = false; } | ||
|  |           if (mock === void 0) { mock = false; } | ||
|  |           this.value = value; | ||
|  |           this.shallow = shallow; | ||
|  |           this.mock = mock; | ||
|  |           // this.value = value
 | ||
|  |           this.dep = mock ? mockDep : new Dep(); | ||
|  |           this.vmCount = 0; | ||
|  |           def(value, '__ob__', this); | ||
|  |           if (isArray(value)) { | ||
|  |               if (!mock) { | ||
|  |                   if (hasProto) { | ||
|  |                       value.__proto__ = arrayMethods; | ||
|  |                       /* eslint-enable no-proto */ | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       for (var i = 0, l = arrayKeys.length; i < l; i++) { | ||
|  |                           var key = arrayKeys[i]; | ||
|  |                           def(value, key, arrayMethods[key]); | ||
|  |                       } | ||
|  |                   } | ||
|  |               } | ||
|  |               if (!shallow) { | ||
|  |                   this.observeArray(value); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               /** | ||
|  |                * Walk through all properties and convert them into | ||
|  |                * getter/setters. This method should only be called when | ||
|  |                * value type is Object. | ||
|  |                */ | ||
|  |               var keys = Object.keys(value); | ||
|  |               for (var i = 0; i < keys.length; i++) { | ||
|  |                   var key = keys[i]; | ||
|  |                   defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       /** | ||
|  |        * Observe a list of Array items. | ||
|  |        */ | ||
|  |       Observer.prototype.observeArray = function (value) { | ||
|  |           for (var i = 0, l = value.length; i < l; i++) { | ||
|  |               observe(value[i], false, this.mock); | ||
|  |           } | ||
|  |       }; | ||
|  |       return Observer; | ||
|  |   }()); | ||
|  |   // helpers
 | ||
|  |   /** | ||
|  |    * Attempt to create an observer instance for a value, | ||
|  |    * returns the new observer if successfully observed, | ||
|  |    * or the existing observer if the value already has one. | ||
|  |    */ | ||
|  |   function observe(value, shallow, ssrMockReactivity) { | ||
|  |       if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { | ||
|  |           return value.__ob__; | ||
|  |       } | ||
|  |       if (shouldObserve && | ||
|  |           (ssrMockReactivity || !isServerRendering()) && | ||
|  |           (isArray(value) || isPlainObject(value)) && | ||
|  |           Object.isExtensible(value) && | ||
|  |           !value.__v_skip /* ReactiveFlags.SKIP */ && | ||
|  |           !isRef(value) && | ||
|  |           !(value instanceof VNode)) { | ||
|  |           return new Observer(value, shallow, ssrMockReactivity); | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Define a reactive property on an Object. | ||
|  |    */ | ||
|  |   function defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) { | ||
|  |       if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; } | ||
|  |       var dep = new Dep(); | ||
|  |       var property = Object.getOwnPropertyDescriptor(obj, key); | ||
|  |       if (property && property.configurable === false) { | ||
|  |           return; | ||
|  |       } | ||
|  |       // cater for pre-defined getter/setters
 | ||
|  |       var getter = property && property.get; | ||
|  |       var setter = property && property.set; | ||
|  |       if ((!getter || setter) && | ||
|  |           (val === NO_INITIAL_VALUE || arguments.length === 2)) { | ||
|  |           val = obj[key]; | ||
|  |       } | ||
|  |       var childOb = shallow ? val && val.__ob__ : observe(val, false, mock); | ||
|  |       Object.defineProperty(obj, key, { | ||
|  |           enumerable: true, | ||
|  |           configurable: true, | ||
|  |           get: function reactiveGetter() { | ||
|  |               var value = getter ? getter.call(obj) : val; | ||
|  |               if (Dep.target) { | ||
|  |                   { | ||
|  |                       dep.depend({ | ||
|  |                           target: obj, | ||
|  |                           type: "get" /* TrackOpTypes.GET */, | ||
|  |                           key: key | ||
|  |                       }); | ||
|  |                   } | ||
|  |                   if (childOb) { | ||
|  |                       childOb.dep.depend(); | ||
|  |                       if (isArray(value)) { | ||
|  |                           dependArray(value); | ||
|  |                       } | ||
|  |                   } | ||
|  |               } | ||
|  |               return isRef(value) && !shallow ? value.value : value; | ||
|  |           }, | ||
|  |           set: function reactiveSetter(newVal) { | ||
|  |               var value = getter ? getter.call(obj) : val; | ||
|  |               if (!hasChanged(value, newVal)) { | ||
|  |                   return; | ||
|  |               } | ||
|  |               if (customSetter) { | ||
|  |                   customSetter(); | ||
|  |               } | ||
|  |               if (setter) { | ||
|  |                   setter.call(obj, newVal); | ||
|  |               } | ||
|  |               else if (getter) { | ||
|  |                   // #7981: for accessor properties without setter
 | ||
|  |                   return; | ||
|  |               } | ||
|  |               else if (!shallow && isRef(value) && !isRef(newVal)) { | ||
|  |                   value.value = newVal; | ||
|  |                   return; | ||
|  |               } | ||
|  |               else { | ||
|  |                   val = newVal; | ||
|  |               } | ||
|  |               childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock); | ||
|  |               { | ||
|  |                   dep.notify({ | ||
|  |                       type: "set" /* TriggerOpTypes.SET */, | ||
|  |                       target: obj, | ||
|  |                       key: key, | ||
|  |                       newValue: newVal, | ||
|  |                       oldValue: value | ||
|  |                   }); | ||
|  |               } | ||
|  |           } | ||
|  |       }); | ||
|  |       return dep; | ||
|  |   } | ||
|  |   function set(target, key, val) { | ||
|  |       if ((isUndef(target) || isPrimitive(target))) { | ||
|  |           warn("Cannot set reactive property on undefined, null, or primitive value: ".concat(target)); | ||
|  |       } | ||
|  |       if (isReadonly(target)) { | ||
|  |           warn("Set operation on key \"".concat(key, "\" failed: target is readonly.")); | ||
|  |           return; | ||
|  |       } | ||
|  |       var ob = target.__ob__; | ||
|  |       if (isArray(target) && isValidArrayIndex(key)) { | ||
|  |           target.length = Math.max(target.length, key); | ||
|  |           target.splice(key, 1, val); | ||
|  |           // when mocking for SSR, array methods are not hijacked
 | ||
|  |           if (ob && !ob.shallow && ob.mock) { | ||
|  |               observe(val, false, true); | ||
|  |           } | ||
|  |           return val; | ||
|  |       } | ||
|  |       if (key in target && !(key in Object.prototype)) { | ||
|  |           target[key] = val; | ||
|  |           return val; | ||
|  |       } | ||
|  |       if (target._isVue || (ob && ob.vmCount)) { | ||
|  |           warn('Avoid adding reactive properties to a Vue instance or its root $data ' + | ||
|  |                   'at runtime - declare it upfront in the data option.'); | ||
|  |           return val; | ||
|  |       } | ||
|  |       if (!ob) { | ||
|  |           target[key] = val; | ||
|  |           return val; | ||
|  |       } | ||
|  |       defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock); | ||
|  |       { | ||
|  |           ob.dep.notify({ | ||
|  |               type: "add" /* TriggerOpTypes.ADD */, | ||
|  |               target: target, | ||
|  |               key: key, | ||
|  |               newValue: val, | ||
|  |               oldValue: undefined | ||
|  |           }); | ||
|  |       } | ||
|  |       return val; | ||
|  |   } | ||
|  |   function del(target, key) { | ||
|  |       if ((isUndef(target) || isPrimitive(target))) { | ||
|  |           warn("Cannot delete reactive property on undefined, null, or primitive value: ".concat(target)); | ||
|  |       } | ||
|  |       if (isArray(target) && isValidArrayIndex(key)) { | ||
|  |           target.splice(key, 1); | ||
|  |           return; | ||
|  |       } | ||
|  |       var ob = target.__ob__; | ||
|  |       if (target._isVue || (ob && ob.vmCount)) { | ||
|  |           warn('Avoid deleting properties on a Vue instance or its root $data ' + | ||
|  |                   '- just set it to null.'); | ||
|  |           return; | ||
|  |       } | ||
|  |       if (isReadonly(target)) { | ||
|  |           warn("Delete operation on key \"".concat(key, "\" failed: target is readonly.")); | ||
|  |           return; | ||
|  |       } | ||
|  |       if (!hasOwn(target, key)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       delete target[key]; | ||
|  |       if (!ob) { | ||
|  |           return; | ||
|  |       } | ||
|  |       { | ||
|  |           ob.dep.notify({ | ||
|  |               type: "delete" /* TriggerOpTypes.DELETE */, | ||
|  |               target: target, | ||
|  |               key: key | ||
|  |           }); | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Collect dependencies on array elements when the array is touched, since | ||
|  |    * we cannot intercept array element access like property getters. | ||
|  |    */ | ||
|  |   function dependArray(value) { | ||
|  |       for (var e = void 0, i = 0, l = value.length; i < l; i++) { | ||
|  |           e = value[i]; | ||
|  |           if (e && e.__ob__) { | ||
|  |               e.__ob__.dep.depend(); | ||
|  |           } | ||
|  |           if (isArray(e)) { | ||
|  |               dependArray(e); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function reactive(target) { | ||
|  |       makeReactive(target, false); | ||
|  |       return target; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Return a shallowly-reactive copy of the original object, where only the root | ||
|  |    * level properties are reactive. It also does not auto-unwrap refs (even at the | ||
|  |    * root level). | ||
|  |    */ | ||
|  |   function shallowReactive(target) { | ||
|  |       makeReactive(target, true); | ||
|  |       def(target, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true); | ||
|  |       return target; | ||
|  |   } | ||
|  |   function makeReactive(target, shallow) { | ||
|  |       // if trying to observe a readonly proxy, return the readonly version.
 | ||
|  |       if (!isReadonly(target)) { | ||
|  |           { | ||
|  |               if (isArray(target)) { | ||
|  |                   warn("Avoid using Array as root value for ".concat(shallow ? "shallowReactive()" : "reactive()", " as it cannot be tracked in watch() or watchEffect(). Use ").concat(shallow ? "shallowRef()" : "ref()", " instead. This is a Vue-2-only limitation.")); | ||
|  |               } | ||
|  |               var existingOb = target && target.__ob__; | ||
|  |               if (existingOb && existingOb.shallow !== shallow) { | ||
|  |                   warn("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow.")); | ||
|  |               } | ||
|  |           } | ||
|  |           var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */); | ||
|  |           if (!ob) { | ||
|  |               if (target == null || isPrimitive(target)) { | ||
|  |                   warn("value cannot be made reactive: ".concat(String(target))); | ||
|  |               } | ||
|  |               if (isCollectionType(target)) { | ||
|  |                   warn("Vue 2 does not support reactive collection types such as Map or Set."); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function isReactive(value) { | ||
|  |       if (isReadonly(value)) { | ||
|  |           return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]); | ||
|  |       } | ||
|  |       return !!(value && value.__ob__); | ||
|  |   } | ||
|  |   function isShallow(value) { | ||
|  |       return !!(value && value.__v_isShallow); | ||
|  |   } | ||
|  |   function isReadonly(value) { | ||
|  |       return !!(value && value.__v_isReadonly); | ||
|  |   } | ||
|  |   function isProxy(value) { | ||
|  |       return isReactive(value) || isReadonly(value); | ||
|  |   } | ||
|  |   function toRaw(observed) { | ||
|  |       var raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */]; | ||
|  |       return raw ? toRaw(raw) : observed; | ||
|  |   } | ||
|  |   function markRaw(value) { | ||
|  |       // non-extensible objects won't be observed anyway
 | ||
|  |       if (Object.isExtensible(value)) { | ||
|  |           def(value, "__v_skip" /* ReactiveFlags.SKIP */, true); | ||
|  |       } | ||
|  |       return value; | ||
|  |   } | ||
|  |   /** | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   function isCollectionType(value) { | ||
|  |       var type = toRawType(value); | ||
|  |       return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet'); | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   var RefFlag = "__v_isRef"; | ||
|  |   function isRef(r) { | ||
|  |       return !!(r && r.__v_isRef === true); | ||
|  |   } | ||
|  |   function ref$1(value) { | ||
|  |       return createRef(value, false); | ||
|  |   } | ||
|  |   function shallowRef(value) { | ||
|  |       return createRef(value, true); | ||
|  |   } | ||
|  |   function createRef(rawValue, shallow) { | ||
|  |       if (isRef(rawValue)) { | ||
|  |           return rawValue; | ||
|  |       } | ||
|  |       var ref = {}; | ||
|  |       def(ref, RefFlag, true); | ||
|  |       def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, shallow); | ||
|  |       def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering())); | ||
|  |       return ref; | ||
|  |   } | ||
|  |   function triggerRef(ref) { | ||
|  |       if (!ref.dep) { | ||
|  |           warn("received object is not a triggerable ref."); | ||
|  |       } | ||
|  |       { | ||
|  |           ref.dep && | ||
|  |               ref.dep.notify({ | ||
|  |                   type: "set" /* TriggerOpTypes.SET */, | ||
|  |                   target: ref, | ||
|  |                   key: 'value' | ||
|  |               }); | ||
|  |       } | ||
|  |   } | ||
|  |   function unref(ref) { | ||
|  |       return isRef(ref) ? ref.value : ref; | ||
|  |   } | ||
|  |   function proxyRefs(objectWithRefs) { | ||
|  |       if (isReactive(objectWithRefs)) { | ||
|  |           return objectWithRefs; | ||
|  |       } | ||
|  |       var proxy = {}; | ||
|  |       var keys = Object.keys(objectWithRefs); | ||
|  |       for (var i = 0; i < keys.length; i++) { | ||
|  |           proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]); | ||
|  |       } | ||
|  |       return proxy; | ||
|  |   } | ||
|  |   function proxyWithRefUnwrap(target, source, key) { | ||
|  |       Object.defineProperty(target, key, { | ||
|  |           enumerable: true, | ||
|  |           configurable: true, | ||
|  |           get: function () { | ||
|  |               var val = source[key]; | ||
|  |               if (isRef(val)) { | ||
|  |                   return val.value; | ||
|  |               } | ||
|  |               else { | ||
|  |                   var ob = val && val.__ob__; | ||
|  |                   if (ob) | ||
|  |                       ob.dep.depend(); | ||
|  |                   return val; | ||
|  |               } | ||
|  |           }, | ||
|  |           set: function (value) { | ||
|  |               var oldValue = source[key]; | ||
|  |               if (isRef(oldValue) && !isRef(value)) { | ||
|  |                   oldValue.value = value; | ||
|  |               } | ||
|  |               else { | ||
|  |                   source[key] = value; | ||
|  |               } | ||
|  |           } | ||
|  |       }); | ||
|  |   } | ||
|  |   function customRef(factory) { | ||
|  |       var dep = new Dep(); | ||
|  |       var _a = factory(function () { | ||
|  |           { | ||
|  |               dep.depend({ | ||
|  |                   target: ref, | ||
|  |                   type: "get" /* TrackOpTypes.GET */, | ||
|  |                   key: 'value' | ||
|  |               }); | ||
|  |           } | ||
|  |       }, function () { | ||
|  |           { | ||
|  |               dep.notify({ | ||
|  |                   target: ref, | ||
|  |                   type: "set" /* TriggerOpTypes.SET */, | ||
|  |                   key: 'value' | ||
|  |               }); | ||
|  |           } | ||
|  |       }), get = _a.get, set = _a.set; | ||
|  |       var ref = { | ||
|  |           get value() { | ||
|  |               return get(); | ||
|  |           }, | ||
|  |           set value(newVal) { | ||
|  |               set(newVal); | ||
|  |           } | ||
|  |       }; | ||
|  |       def(ref, RefFlag, true); | ||
|  |       return ref; | ||
|  |   } | ||
|  |   function toRefs(object) { | ||
|  |       if (!isReactive(object)) { | ||
|  |           warn("toRefs() expects a reactive object but received a plain one."); | ||
|  |       } | ||
|  |       var ret = isArray(object) ? new Array(object.length) : {}; | ||
|  |       for (var key in object) { | ||
|  |           ret[key] = toRef(object, key); | ||
|  |       } | ||
|  |       return ret; | ||
|  |   } | ||
|  |   function toRef(object, key, defaultValue) { | ||
|  |       var val = object[key]; | ||
|  |       if (isRef(val)) { | ||
|  |           return val; | ||
|  |       } | ||
|  |       var ref = { | ||
|  |           get value() { | ||
|  |               var val = object[key]; | ||
|  |               return val === undefined ? defaultValue : val; | ||
|  |           }, | ||
|  |           set value(newVal) { | ||
|  |               object[key] = newVal; | ||
|  |           } | ||
|  |       }; | ||
|  |       def(ref, RefFlag, true); | ||
|  |       return ref; | ||
|  |   } | ||
|  | 
 | ||
|  |   var rawToReadonlyFlag = "__v_rawToReadonly"; | ||
|  |   var rawToShallowReadonlyFlag = "__v_rawToShallowReadonly"; | ||
|  |   function readonly(target) { | ||
|  |       return createReadonly(target, false); | ||
|  |   } | ||
|  |   function createReadonly(target, shallow) { | ||
|  |       if (!isPlainObject(target)) { | ||
|  |           { | ||
|  |               if (isArray(target)) { | ||
|  |                   warn("Vue 2 does not support readonly arrays."); | ||
|  |               } | ||
|  |               else if (isCollectionType(target)) { | ||
|  |                   warn("Vue 2 does not support readonly collection types such as Map or Set."); | ||
|  |               } | ||
|  |               else { | ||
|  |                   warn("value cannot be made readonly: ".concat(typeof target)); | ||
|  |               } | ||
|  |           } | ||
|  |           return target; | ||
|  |       } | ||
|  |       if (!Object.isExtensible(target)) { | ||
|  |           warn("Vue 2 does not support creating readonly proxy for non-extensible object."); | ||
|  |       } | ||
|  |       // already a readonly object
 | ||
|  |       if (isReadonly(target)) { | ||
|  |           return target; | ||
|  |       } | ||
|  |       // already has a readonly proxy
 | ||
|  |       var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag; | ||
|  |       var existingProxy = target[existingFlag]; | ||
|  |       if (existingProxy) { | ||
|  |           return existingProxy; | ||
|  |       } | ||
|  |       var proxy = Object.create(Object.getPrototypeOf(target)); | ||
|  |       def(target, existingFlag, proxy); | ||
|  |       def(proxy, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, true); | ||
|  |       def(proxy, "__v_raw" /* ReactiveFlags.RAW */, target); | ||
|  |       if (isRef(target)) { | ||
|  |           def(proxy, RefFlag, true); | ||
|  |       } | ||
|  |       if (shallow || isShallow(target)) { | ||
|  |           def(proxy, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true); | ||
|  |       } | ||
|  |       var keys = Object.keys(target); | ||
|  |       for (var i = 0; i < keys.length; i++) { | ||
|  |           defineReadonlyProperty(proxy, target, keys[i], shallow); | ||
|  |       } | ||
|  |       return proxy; | ||
|  |   } | ||
|  |   function defineReadonlyProperty(proxy, target, key, shallow) { | ||
|  |       Object.defineProperty(proxy, key, { | ||
|  |           enumerable: true, | ||
|  |           configurable: true, | ||
|  |           get: function () { | ||
|  |               var val = target[key]; | ||
|  |               return shallow || !isPlainObject(val) ? val : readonly(val); | ||
|  |           }, | ||
|  |           set: function () { | ||
|  |               warn("Set operation on key \"".concat(key, "\" failed: target is readonly.")); | ||
|  |           } | ||
|  |       }); | ||
|  |   } | ||
|  |   /** | ||
|  |    * Returns a reactive-copy of the original object, where only the root level | ||
|  |    * properties are readonly, and does NOT unwrap refs nor recursively convert | ||
|  |    * returned properties. | ||
|  |    * This is used for creating the props proxy object for stateful components. | ||
|  |    */ | ||
|  |   function shallowReadonly(target) { | ||
|  |       return createReadonly(target, true); | ||
|  |   } | ||
|  | 
 | ||
|  |   function computed(getterOrOptions, debugOptions) { | ||
|  |       var getter; | ||
|  |       var setter; | ||
|  |       var onlyGetter = isFunction(getterOrOptions); | ||
|  |       if (onlyGetter) { | ||
|  |           getter = getterOrOptions; | ||
|  |           setter = function () { | ||
|  |                   warn('Write operation failed: computed value is readonly'); | ||
|  |               } | ||
|  |               ; | ||
|  |       } | ||
|  |       else { | ||
|  |           getter = getterOrOptions.get; | ||
|  |           setter = getterOrOptions.set; | ||
|  |       } | ||
|  |       var watcher = isServerRendering() | ||
|  |           ? null | ||
|  |           : new Watcher(currentInstance, getter, noop, { lazy: true }); | ||
|  |       if (watcher && debugOptions) { | ||
|  |           watcher.onTrack = debugOptions.onTrack; | ||
|  |           watcher.onTrigger = debugOptions.onTrigger; | ||
|  |       } | ||
|  |       var ref = { | ||
|  |           // some libs rely on the presence effect for checking computed refs
 | ||
|  |           // from normal refs, but the implementation doesn't matter
 | ||
|  |           effect: watcher, | ||
|  |           get value() { | ||
|  |               if (watcher) { | ||
|  |                   if (watcher.dirty) { | ||
|  |                       watcher.evaluate(); | ||
|  |                   } | ||
|  |                   if (Dep.target) { | ||
|  |                       if (Dep.target.onTrack) { | ||
|  |                           Dep.target.onTrack({ | ||
|  |                               effect: Dep.target, | ||
|  |                               target: ref, | ||
|  |                               type: "get" /* TrackOpTypes.GET */, | ||
|  |                               key: 'value' | ||
|  |                           }); | ||
|  |                       } | ||
|  |                       watcher.depend(); | ||
|  |                   } | ||
|  |                   return watcher.value; | ||
|  |               } | ||
|  |               else { | ||
|  |                   return getter(); | ||
|  |               } | ||
|  |           }, | ||
|  |           set value(newVal) { | ||
|  |               setter(newVal); | ||
|  |           } | ||
|  |       }; | ||
|  |       def(ref, RefFlag, true); | ||
|  |       def(ref, "__v_isReadonly" /* ReactiveFlags.IS_READONLY */, onlyGetter); | ||
|  |       return ref; | ||
|  |   } | ||
|  | 
 | ||
|  |   var WATCHER = "watcher"; | ||
|  |   var WATCHER_CB = "".concat(WATCHER, " callback"); | ||
|  |   var WATCHER_GETTER = "".concat(WATCHER, " getter"); | ||
|  |   var WATCHER_CLEANUP = "".concat(WATCHER, " cleanup"); | ||
|  |   // Simple effect.
 | ||
|  |   function watchEffect(effect, options) { | ||
|  |       return doWatch(effect, null, options); | ||
|  |   } | ||
|  |   function watchPostEffect(effect, options) { | ||
|  |       return doWatch(effect, null, (__assign(__assign({}, options), { flush: 'post' }) )); | ||
|  |   } | ||
|  |   function watchSyncEffect(effect, options) { | ||
|  |       return doWatch(effect, null, (__assign(__assign({}, options), { flush: 'sync' }) )); | ||
|  |   } | ||
|  |   // initial value for watchers to trigger on undefined initial values
 | ||
|  |   var INITIAL_WATCHER_VALUE = {}; | ||
|  |   // implementation
 | ||
|  |   function watch(source, cb, options) { | ||
|  |       if (typeof cb !== 'function') { | ||
|  |           warn("`watch(fn, options?)` signature has been moved to a separate API. " + | ||
|  |               "Use `watchEffect(fn, options?)` instead. `watch` now only " + | ||
|  |               "supports `watch(source, cb, options?) signature."); | ||
|  |       } | ||
|  |       return doWatch(source, cb, options); | ||
|  |   } | ||
|  |   function doWatch(source, cb, _a) { | ||
|  |       var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger; | ||
|  |       if (!cb) { | ||
|  |           if (immediate !== undefined) { | ||
|  |               warn("watch() \"immediate\" option is only respected when using the " + | ||
|  |                   "watch(source, callback, options?) signature."); | ||
|  |           } | ||
|  |           if (deep !== undefined) { | ||
|  |               warn("watch() \"deep\" option is only respected when using the " + | ||
|  |                   "watch(source, callback, options?) signature."); | ||
|  |           } | ||
|  |       } | ||
|  |       var warnInvalidSource = function (s) { | ||
|  |           warn("Invalid watch source: ".concat(s, ". A watch source can only be a getter/effect ") + | ||
|  |               "function, a ref, a reactive object, or an array of these types."); | ||
|  |       }; | ||
|  |       var instance = currentInstance; | ||
|  |       var call = function (fn, type, args) { | ||
|  |           if (args === void 0) { args = null; } | ||
|  |           var res = invokeWithErrorHandling(fn, null, args, instance, type); | ||
|  |           if (deep && res && res.__ob__) | ||
|  |               res.__ob__.dep.depend(); | ||
|  |           return res; | ||
|  |       }; | ||
|  |       var getter; | ||
|  |       var forceTrigger = false; | ||
|  |       var isMultiSource = false; | ||
|  |       if (isRef(source)) { | ||
|  |           getter = function () { return source.value; }; | ||
|  |           forceTrigger = isShallow(source); | ||
|  |       } | ||
|  |       else if (isReactive(source)) { | ||
|  |           getter = function () { | ||
|  |               source.__ob__.dep.depend(); | ||
|  |               return source; | ||
|  |           }; | ||
|  |           deep = true; | ||
|  |       } | ||
|  |       else if (isArray(source)) { | ||
|  |           isMultiSource = true; | ||
|  |           forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); }); | ||
|  |           getter = function () { | ||
|  |               return source.map(function (s) { | ||
|  |                   if (isRef(s)) { | ||
|  |                       return s.value; | ||
|  |                   } | ||
|  |                   else if (isReactive(s)) { | ||
|  |                       s.__ob__.dep.depend(); | ||
|  |                       return traverse(s); | ||
|  |                   } | ||
|  |                   else if (isFunction(s)) { | ||
|  |                       return call(s, WATCHER_GETTER); | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       warnInvalidSource(s); | ||
|  |                   } | ||
|  |               }); | ||
|  |           }; | ||
|  |       } | ||
|  |       else if (isFunction(source)) { | ||
|  |           if (cb) { | ||
|  |               // getter with cb
 | ||
|  |               getter = function () { return call(source, WATCHER_GETTER); }; | ||
|  |           } | ||
|  |           else { | ||
|  |               // no cb -> simple effect
 | ||
|  |               getter = function () { | ||
|  |                   if (instance && instance._isDestroyed) { | ||
|  |                       return; | ||
|  |                   } | ||
|  |                   if (cleanup) { | ||
|  |                       cleanup(); | ||
|  |                   } | ||
|  |                   return call(source, WATCHER, [onCleanup]); | ||
|  |               }; | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           getter = noop; | ||
|  |           warnInvalidSource(source); | ||
|  |       } | ||
|  |       if (cb && deep) { | ||
|  |           var baseGetter_1 = getter; | ||
|  |           getter = function () { return traverse(baseGetter_1()); }; | ||
|  |       } | ||
|  |       var cleanup; | ||
|  |       var onCleanup = function (fn) { | ||
|  |           cleanup = watcher.onStop = function () { | ||
|  |               call(fn, WATCHER_CLEANUP); | ||
|  |           }; | ||
|  |       }; | ||
|  |       // in SSR there is no need to setup an actual effect, and it should be noop
 | ||
|  |       // unless it's eager
 | ||
|  |       if (isServerRendering()) { | ||
|  |           // we will also not call the invalidate callback (+ runner is not set up)
 | ||
|  |           onCleanup = noop; | ||
|  |           if (!cb) { | ||
|  |               getter(); | ||
|  |           } | ||
|  |           else if (immediate) { | ||
|  |               call(cb, WATCHER_CB, [ | ||
|  |                   getter(), | ||
|  |                   isMultiSource ? [] : undefined, | ||
|  |                   onCleanup | ||
|  |               ]); | ||
|  |           } | ||
|  |           return noop; | ||
|  |       } | ||
|  |       var watcher = new Watcher(currentInstance, getter, noop, { | ||
|  |           lazy: true | ||
|  |       }); | ||
|  |       watcher.noRecurse = !cb; | ||
|  |       var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE; | ||
|  |       // overwrite default run
 | ||
|  |       watcher.run = function () { | ||
|  |           if (!watcher.active) { | ||
|  |               return; | ||
|  |           } | ||
|  |           if (cb) { | ||
|  |               // watch(source, cb)
 | ||
|  |               var newValue = watcher.get(); | ||
|  |               if (deep || | ||
|  |                   forceTrigger || | ||
|  |                   (isMultiSource | ||
|  |                       ? newValue.some(function (v, i) { | ||
|  |                           return hasChanged(v, oldValue[i]); | ||
|  |                       }) | ||
|  |                       : hasChanged(newValue, oldValue))) { | ||
|  |                   // cleanup before running cb again
 | ||
|  |                   if (cleanup) { | ||
|  |                       cleanup(); | ||
|  |                   } | ||
|  |                   call(cb, WATCHER_CB, [ | ||
|  |                       newValue, | ||
|  |                       // pass undefined as the old value when it's changed for the first time
 | ||
|  |                       oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, | ||
|  |                       onCleanup | ||
|  |                   ]); | ||
|  |                   oldValue = newValue; | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               // watchEffect
 | ||
|  |               watcher.get(); | ||
|  |           } | ||
|  |       }; | ||
|  |       if (flush === 'sync') { | ||
|  |           watcher.update = watcher.run; | ||
|  |       } | ||
|  |       else if (flush === 'post') { | ||
|  |           watcher.post = true; | ||
|  |           watcher.update = function () { return queueWatcher(watcher); }; | ||
|  |       } | ||
|  |       else { | ||
|  |           // pre
 | ||
|  |           watcher.update = function () { | ||
|  |               if (instance && instance === currentInstance && !instance._isMounted) { | ||
|  |                   // pre-watcher triggered before
 | ||
|  |                   var buffer = instance._preWatchers || (instance._preWatchers = []); | ||
|  |                   if (buffer.indexOf(watcher) < 0) | ||
|  |                       buffer.push(watcher); | ||
|  |               } | ||
|  |               else { | ||
|  |                   queueWatcher(watcher); | ||
|  |               } | ||
|  |           }; | ||
|  |       } | ||
|  |       { | ||
|  |           watcher.onTrack = onTrack; | ||
|  |           watcher.onTrigger = onTrigger; | ||
|  |       } | ||
|  |       // initial run
 | ||
|  |       if (cb) { | ||
|  |           if (immediate) { | ||
|  |               watcher.run(); | ||
|  |           } | ||
|  |           else { | ||
|  |               oldValue = watcher.get(); | ||
|  |           } | ||
|  |       } | ||
|  |       else if (flush === 'post' && instance) { | ||
|  |           instance.$once('hook:mounted', function () { return watcher.get(); }); | ||
|  |       } | ||
|  |       else { | ||
|  |           watcher.get(); | ||
|  |       } | ||
|  |       return function () { | ||
|  |           watcher.teardown(); | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   var activeEffectScope; | ||
|  |   var EffectScope = /** @class */ (function () { | ||
|  |       function EffectScope(detached) { | ||
|  |           if (detached === void 0) { detached = false; } | ||
|  |           this.detached = detached; | ||
|  |           /** | ||
|  |            * @internal | ||
|  |            */ | ||
|  |           this.active = true; | ||
|  |           /** | ||
|  |            * @internal | ||
|  |            */ | ||
|  |           this.effects = []; | ||
|  |           /** | ||
|  |            * @internal | ||
|  |            */ | ||
|  |           this.cleanups = []; | ||
|  |           this.parent = activeEffectScope; | ||
|  |           if (!detached && activeEffectScope) { | ||
|  |               this.index = | ||
|  |                   (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; | ||
|  |           } | ||
|  |       } | ||
|  |       EffectScope.prototype.run = function (fn) { | ||
|  |           if (this.active) { | ||
|  |               var currentEffectScope = activeEffectScope; | ||
|  |               try { | ||
|  |                   activeEffectScope = this; | ||
|  |                   return fn(); | ||
|  |               } | ||
|  |               finally { | ||
|  |                   activeEffectScope = currentEffectScope; | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               warn("cannot run an inactive effect scope."); | ||
|  |           } | ||
|  |       }; | ||
|  |       /** | ||
|  |        * This should only be called on non-detached scopes | ||
|  |        * @internal | ||
|  |        */ | ||
|  |       EffectScope.prototype.on = function () { | ||
|  |           activeEffectScope = this; | ||
|  |       }; | ||
|  |       /** | ||
|  |        * This should only be called on non-detached scopes | ||
|  |        * @internal | ||
|  |        */ | ||
|  |       EffectScope.prototype.off = function () { | ||
|  |           activeEffectScope = this.parent; | ||
|  |       }; | ||
|  |       EffectScope.prototype.stop = function (fromParent) { | ||
|  |           if (this.active) { | ||
|  |               var i = void 0, l = void 0; | ||
|  |               for (i = 0, l = this.effects.length; i < l; i++) { | ||
|  |                   this.effects[i].teardown(); | ||
|  |               } | ||
|  |               for (i = 0, l = this.cleanups.length; i < l; i++) { | ||
|  |                   this.cleanups[i](); | ||
|  |               } | ||
|  |               if (this.scopes) { | ||
|  |                   for (i = 0, l = this.scopes.length; i < l; i++) { | ||
|  |                       this.scopes[i].stop(true); | ||
|  |                   } | ||
|  |               } | ||
|  |               // nested scope, dereference from parent to avoid memory leaks
 | ||
|  |               if (!this.detached && this.parent && !fromParent) { | ||
|  |                   // optimized O(1) removal
 | ||
|  |                   var last = this.parent.scopes.pop(); | ||
|  |                   if (last && last !== this) { | ||
|  |                       this.parent.scopes[this.index] = last; | ||
|  |                       last.index = this.index; | ||
|  |                   } | ||
|  |               } | ||
|  |               this.parent = undefined; | ||
|  |               this.active = false; | ||
|  |           } | ||
|  |       }; | ||
|  |       return EffectScope; | ||
|  |   }()); | ||
|  |   function effectScope(detached) { | ||
|  |       return new EffectScope(detached); | ||
|  |   } | ||
|  |   /** | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   function recordEffectScope(effect, scope) { | ||
|  |       if (scope === void 0) { scope = activeEffectScope; } | ||
|  |       if (scope && scope.active) { | ||
|  |           scope.effects.push(effect); | ||
|  |       } | ||
|  |   } | ||
|  |   function getCurrentScope() { | ||
|  |       return activeEffectScope; | ||
|  |   } | ||
|  |   function onScopeDispose(fn) { | ||
|  |       if (activeEffectScope) { | ||
|  |           activeEffectScope.cleanups.push(fn); | ||
|  |       } | ||
|  |       else { | ||
|  |           warn("onScopeDispose() is called when there is no active effect scope" + | ||
|  |               " to be associated with."); | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function provide(key, value) { | ||
|  |       if (!currentInstance) { | ||
|  |           { | ||
|  |               warn("provide() can only be used inside setup()."); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           // TS doesn't allow symbol as index type
 | ||
|  |           resolveProvided(currentInstance)[key] = value; | ||
|  |       } | ||
|  |   } | ||
|  |   function resolveProvided(vm) { | ||
|  |       // by default an instance inherits its parent's provides object
 | ||
|  |       // but when it needs to provide values of its own, it creates its
 | ||
|  |       // own provides object using parent provides object as prototype.
 | ||
|  |       // this way in `inject` we can simply look up injections from direct
 | ||
|  |       // parent and let the prototype chain do the work.
 | ||
|  |       var existing = vm._provided; | ||
|  |       var parentProvides = vm.$parent && vm.$parent._provided; | ||
|  |       if (parentProvides === existing) { | ||
|  |           return (vm._provided = Object.create(parentProvides)); | ||
|  |       } | ||
|  |       else { | ||
|  |           return existing; | ||
|  |       } | ||
|  |   } | ||
|  |   function inject(key, defaultValue, treatDefaultAsFactory) { | ||
|  |       if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; } | ||
|  |       // fallback to `currentRenderingInstance` so that this can be called in
 | ||
|  |       // a functional component
 | ||
|  |       var instance = currentInstance; | ||
|  |       if (instance) { | ||
|  |           // #2400
 | ||
|  |           // to support `app.use` plugins,
 | ||
|  |           // fallback to appContext's `provides` if the instance is at root
 | ||
|  |           var provides = instance.$parent && instance.$parent._provided; | ||
|  |           if (provides && key in provides) { | ||
|  |               // TS doesn't allow symbol as index type
 | ||
|  |               return provides[key]; | ||
|  |           } | ||
|  |           else if (arguments.length > 1) { | ||
|  |               return treatDefaultAsFactory && isFunction(defaultValue) | ||
|  |                   ? defaultValue.call(instance) | ||
|  |                   : defaultValue; | ||
|  |           } | ||
|  |           else { | ||
|  |               warn("injection \"".concat(String(key), "\" not found.")); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           warn("inject() can only be used inside setup() or functional components."); | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   var normalizeEvent = cached(function (name) { | ||
|  |       var passive = name.charAt(0) === '&'; | ||
|  |       name = passive ? name.slice(1) : name; | ||
|  |       var once = name.charAt(0) === '~'; // Prefixed last, checked first
 | ||
|  |       name = once ? name.slice(1) : name; | ||
|  |       var capture = name.charAt(0) === '!'; | ||
|  |       name = capture ? name.slice(1) : name; | ||
|  |       return { | ||
|  |           name: name, | ||
|  |           once: once, | ||
|  |           capture: capture, | ||
|  |           passive: passive | ||
|  |       }; | ||
|  |   }); | ||
|  |   function createFnInvoker(fns, vm) { | ||
|  |       function invoker() { | ||
|  |           var fns = invoker.fns; | ||
|  |           if (isArray(fns)) { | ||
|  |               var cloned = fns.slice(); | ||
|  |               for (var i = 0; i < cloned.length; i++) { | ||
|  |                   invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler"); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               // return handler return value for single handlers
 | ||
|  |               return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler"); | ||
|  |           } | ||
|  |       } | ||
|  |       invoker.fns = fns; | ||
|  |       return invoker; | ||
|  |   } | ||
|  |   function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) { | ||
|  |       var name, cur, old, event; | ||
|  |       for (name in on) { | ||
|  |           cur = on[name]; | ||
|  |           old = oldOn[name]; | ||
|  |           event = normalizeEvent(name); | ||
|  |           if (isUndef(cur)) { | ||
|  |               warn("Invalid handler for event \"".concat(event.name, "\": got ") + String(cur), vm); | ||
|  |           } | ||
|  |           else if (isUndef(old)) { | ||
|  |               if (isUndef(cur.fns)) { | ||
|  |                   cur = on[name] = createFnInvoker(cur, vm); | ||
|  |               } | ||
|  |               if (isTrue(event.once)) { | ||
|  |                   cur = on[name] = createOnceHandler(event.name, cur, event.capture); | ||
|  |               } | ||
|  |               add(event.name, cur, event.capture, event.passive, event.params); | ||
|  |           } | ||
|  |           else if (cur !== old) { | ||
|  |               old.fns = cur; | ||
|  |               on[name] = old; | ||
|  |           } | ||
|  |       } | ||
|  |       for (name in oldOn) { | ||
|  |           if (isUndef(on[name])) { | ||
|  |               event = normalizeEvent(name); | ||
|  |               remove(event.name, oldOn[name], event.capture); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function mergeVNodeHook(def, hookKey, hook) { | ||
|  |       if (def instanceof VNode) { | ||
|  |           def = def.data.hook || (def.data.hook = {}); | ||
|  |       } | ||
|  |       var invoker; | ||
|  |       var oldHook = def[hookKey]; | ||
|  |       function wrappedHook() { | ||
|  |           hook.apply(this, arguments); | ||
|  |           // important: remove merged hook to ensure it's called only once
 | ||
|  |           // and prevent memory leak
 | ||
|  |           remove$2(invoker.fns, wrappedHook); | ||
|  |       } | ||
|  |       if (isUndef(oldHook)) { | ||
|  |           // no existing hook
 | ||
|  |           invoker = createFnInvoker([wrappedHook]); | ||
|  |       } | ||
|  |       else { | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { | ||
|  |               // already a merged invoker
 | ||
|  |               invoker = oldHook; | ||
|  |               invoker.fns.push(wrappedHook); | ||
|  |           } | ||
|  |           else { | ||
|  |               // existing plain hook
 | ||
|  |               invoker = createFnInvoker([oldHook, wrappedHook]); | ||
|  |           } | ||
|  |       } | ||
|  |       invoker.merged = true; | ||
|  |       def[hookKey] = invoker; | ||
|  |   } | ||
|  | 
 | ||
|  |   function extractPropsFromVNodeData(data, Ctor, tag) { | ||
|  |       // we are only extracting raw values here.
 | ||
|  |       // validation and default values are handled in the child
 | ||
|  |       // component itself.
 | ||
|  |       var propOptions = Ctor.options.props; | ||
|  |       if (isUndef(propOptions)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var res = {}; | ||
|  |       var attrs = data.attrs, props = data.props; | ||
|  |       if (isDef(attrs) || isDef(props)) { | ||
|  |           for (var key in propOptions) { | ||
|  |               var altKey = hyphenate(key); | ||
|  |               { | ||
|  |                   var keyInLowerCase = key.toLowerCase(); | ||
|  |                   if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) { | ||
|  |                       tip("Prop \"".concat(keyInLowerCase, "\" is passed to component ") + | ||
|  |                           "".concat(formatComponentName( | ||
|  |                           // @ts-expect-error tag is string
 | ||
|  |                           tag || Ctor), ", but the declared prop name is") + | ||
|  |                           " \"".concat(key, "\". ") + | ||
|  |                           "Note that HTML attributes are case-insensitive and camelCased " + | ||
|  |                           "props need to use their kebab-case equivalents when using in-DOM " + | ||
|  |                           "templates. You should probably use \"".concat(altKey, "\" instead of \"").concat(key, "\".")); | ||
|  |                   } | ||
|  |               } | ||
|  |               checkProp(res, props, key, altKey, true) || | ||
|  |                   checkProp(res, attrs, key, altKey, false); | ||
|  |           } | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  |   function checkProp(res, hash, key, altKey, preserve) { | ||
|  |       if (isDef(hash)) { | ||
|  |           if (hasOwn(hash, key)) { | ||
|  |               res[key] = hash[key]; | ||
|  |               if (!preserve) { | ||
|  |                   delete hash[key]; | ||
|  |               } | ||
|  |               return true; | ||
|  |           } | ||
|  |           else if (hasOwn(hash, altKey)) { | ||
|  |               res[key] = hash[altKey]; | ||
|  |               if (!preserve) { | ||
|  |                   delete hash[altKey]; | ||
|  |               } | ||
|  |               return true; | ||
|  |           } | ||
|  |       } | ||
|  |       return false; | ||
|  |   } | ||
|  | 
 | ||
|  |   // The template compiler attempts to minimize the need for normalization by
 | ||
|  |   // statically analyzing the template at compile time.
 | ||
|  |   //
 | ||
|  |   // For plain HTML markup, normalization can be completely skipped because the
 | ||
|  |   // generated render function is guaranteed to return Array<VNode>. There are
 | ||
|  |   // two cases where extra normalization is needed:
 | ||
|  |   // 1. When the children contains components - because a functional component
 | ||
|  |   // may return an Array instead of a single root. In this case, just a simple
 | ||
|  |   // normalization is needed - if any child is an Array, we flatten the whole
 | ||
|  |   // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
 | ||
|  |   // because functional components already normalize their own children.
 | ||
|  |   function simpleNormalizeChildren(children) { | ||
|  |       for (var i = 0; i < children.length; i++) { | ||
|  |           if (isArray(children[i])) { | ||
|  |               return Array.prototype.concat.apply([], children); | ||
|  |           } | ||
|  |       } | ||
|  |       return children; | ||
|  |   } | ||
|  |   // 2. When the children contains constructs that always generated nested Arrays,
 | ||
|  |   // e.g. <template>, <slot>, v-for, or when the children is provided by user
 | ||
|  |   // with hand-written render functions / JSX. In such cases a full normalization
 | ||
|  |   // is needed to cater to all possible types of children values.
 | ||
|  |   function normalizeChildren(children) { | ||
|  |       return isPrimitive(children) | ||
|  |           ? [createTextVNode(children)] | ||
|  |           : isArray(children) | ||
|  |               ? normalizeArrayChildren(children) | ||
|  |               : undefined; | ||
|  |   } | ||
|  |   function isTextNode(node) { | ||
|  |       return isDef(node) && isDef(node.text) && isFalse(node.isComment); | ||
|  |   } | ||
|  |   function normalizeArrayChildren(children, nestedIndex) { | ||
|  |       var res = []; | ||
|  |       var i, c, lastIndex, last; | ||
|  |       for (i = 0; i < children.length; i++) { | ||
|  |           c = children[i]; | ||
|  |           if (isUndef(c) || typeof c === 'boolean') | ||
|  |               continue; | ||
|  |           lastIndex = res.length - 1; | ||
|  |           last = res[lastIndex]; | ||
|  |           //  nested
 | ||
|  |           if (isArray(c)) { | ||
|  |               if (c.length > 0) { | ||
|  |                   c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i)); | ||
|  |                   // merge adjacent text nodes
 | ||
|  |                   if (isTextNode(c[0]) && isTextNode(last)) { | ||
|  |                       res[lastIndex] = createTextVNode(last.text + c[0].text); | ||
|  |                       c.shift(); | ||
|  |                   } | ||
|  |                   res.push.apply(res, c); | ||
|  |               } | ||
|  |           } | ||
|  |           else if (isPrimitive(c)) { | ||
|  |               if (isTextNode(last)) { | ||
|  |                   // merge adjacent text nodes
 | ||
|  |                   // this is necessary for SSR hydration because text nodes are
 | ||
|  |                   // essentially merged when rendered to HTML strings
 | ||
|  |                   res[lastIndex] = createTextVNode(last.text + c); | ||
|  |               } | ||
|  |               else if (c !== '') { | ||
|  |                   // convert primitive to vnode
 | ||
|  |                   res.push(createTextVNode(c)); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               if (isTextNode(c) && isTextNode(last)) { | ||
|  |                   // merge adjacent text nodes
 | ||
|  |                   res[lastIndex] = createTextVNode(last.text + c.text); | ||
|  |               } | ||
|  |               else { | ||
|  |                   // default key for nested array children (likely generated by v-for)
 | ||
|  |                   if (isTrue(children._isVList) && | ||
|  |                       isDef(c.tag) && | ||
|  |                       isUndef(c.key) && | ||
|  |                       isDef(nestedIndex)) { | ||
|  |                       c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__"); | ||
|  |                   } | ||
|  |                   res.push(c); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Runtime helper for rendering v-for lists. | ||
|  |    */ | ||
|  |   function renderList(val, render) { | ||
|  |       var ret = null, i, l, keys, key; | ||
|  |       if (isArray(val) || typeof val === 'string') { | ||
|  |           ret = new Array(val.length); | ||
|  |           for (i = 0, l = val.length; i < l; i++) { | ||
|  |               ret[i] = render(val[i], i); | ||
|  |           } | ||
|  |       } | ||
|  |       else if (typeof val === 'number') { | ||
|  |           ret = new Array(val); | ||
|  |           for (i = 0; i < val; i++) { | ||
|  |               ret[i] = render(i + 1, i); | ||
|  |           } | ||
|  |       } | ||
|  |       else if (isObject(val)) { | ||
|  |           if (hasSymbol && val[Symbol.iterator]) { | ||
|  |               ret = []; | ||
|  |               var iterator = val[Symbol.iterator](); | ||
|  |               var result = iterator.next(); | ||
|  |               while (!result.done) { | ||
|  |                   ret.push(render(result.value, ret.length)); | ||
|  |                   result = iterator.next(); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               keys = Object.keys(val); | ||
|  |               ret = new Array(keys.length); | ||
|  |               for (i = 0, l = keys.length; i < l; i++) { | ||
|  |                   key = keys[i]; | ||
|  |                   ret[i] = render(val[key], key, i); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       if (!isDef(ret)) { | ||
|  |           ret = []; | ||
|  |       } | ||
|  |       ret._isVList = true; | ||
|  |       return ret; | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Runtime helper for rendering <slot> | ||
|  |    */ | ||
|  |   function renderSlot(name, fallbackRender, props, bindObject) { | ||
|  |       var scopedSlotFn = this.$scopedSlots[name]; | ||
|  |       var nodes; | ||
|  |       if (scopedSlotFn) { | ||
|  |           // scoped slot
 | ||
|  |           props = props || {}; | ||
|  |           if (bindObject) { | ||
|  |               if (!isObject(bindObject)) { | ||
|  |                   warn('slot v-bind without argument expects an Object', this); | ||
|  |               } | ||
|  |               props = extend(extend({}, bindObject), props); | ||
|  |           } | ||
|  |           nodes = | ||
|  |               scopedSlotFn(props) || | ||
|  |                   (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); | ||
|  |       } | ||
|  |       else { | ||
|  |           nodes = | ||
|  |               this.$slots[name] || | ||
|  |                   (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); | ||
|  |       } | ||
|  |       var target = props && props.slot; | ||
|  |       if (target) { | ||
|  |           return this.$createElement('template', { slot: target }, nodes); | ||
|  |       } | ||
|  |       else { | ||
|  |           return nodes; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Runtime helper for resolving filters | ||
|  |    */ | ||
|  |   function resolveFilter(id) { | ||
|  |       return resolveAsset(this.$options, 'filters', id, true) || identity; | ||
|  |   } | ||
|  | 
 | ||
|  |   function isKeyNotMatch(expect, actual) { | ||
|  |       if (isArray(expect)) { | ||
|  |           return expect.indexOf(actual) === -1; | ||
|  |       } | ||
|  |       else { | ||
|  |           return expect !== actual; | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Runtime helper for checking keyCodes from config. | ||
|  |    * exposed as Vue.prototype._k | ||
|  |    * passing in eventKeyName as last argument separately for backwards compat | ||
|  |    */ | ||
|  |   function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) { | ||
|  |       var mappedKeyCode = config.keyCodes[key] || builtInKeyCode; | ||
|  |       if (builtInKeyName && eventKeyName && !config.keyCodes[key]) { | ||
|  |           return isKeyNotMatch(builtInKeyName, eventKeyName); | ||
|  |       } | ||
|  |       else if (mappedKeyCode) { | ||
|  |           return isKeyNotMatch(mappedKeyCode, eventKeyCode); | ||
|  |       } | ||
|  |       else if (eventKeyName) { | ||
|  |           return hyphenate(eventKeyName) !== key; | ||
|  |       } | ||
|  |       return eventKeyCode === undefined; | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Runtime helper for merging v-bind="object" into a VNode's data. | ||
|  |    */ | ||
|  |   function bindObjectProps(data, tag, value, asProp, isSync) { | ||
|  |       if (value) { | ||
|  |           if (!isObject(value)) { | ||
|  |               warn('v-bind without argument expects an Object or Array value', this); | ||
|  |           } | ||
|  |           else { | ||
|  |               if (isArray(value)) { | ||
|  |                   value = toObject(value); | ||
|  |               } | ||
|  |               var hash = void 0; | ||
|  |               var _loop_1 = function (key) { | ||
|  |                   if (key === 'class' || key === 'style' || isReservedAttribute(key)) { | ||
|  |                       hash = data; | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       var type = data.attrs && data.attrs.type; | ||
|  |                       hash = | ||
|  |                           asProp || config.mustUseProp(tag, type, key) | ||
|  |                               ? data.domProps || (data.domProps = {}) | ||
|  |                               : data.attrs || (data.attrs = {}); | ||
|  |                   } | ||
|  |                   var camelizedKey = camelize(key); | ||
|  |                   var hyphenatedKey = hyphenate(key); | ||
|  |                   if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) { | ||
|  |                       hash[key] = value[key]; | ||
|  |                       if (isSync) { | ||
|  |                           var on = data.on || (data.on = {}); | ||
|  |                           on["update:".concat(key)] = function ($event) { | ||
|  |                               value[key] = $event; | ||
|  |                           }; | ||
|  |                       } | ||
|  |                   } | ||
|  |               }; | ||
|  |               for (var key in value) { | ||
|  |                   _loop_1(key); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       return data; | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Runtime helper for rendering static trees. | ||
|  |    */ | ||
|  |   function renderStatic(index, isInFor) { | ||
|  |       var cached = this._staticTrees || (this._staticTrees = []); | ||
|  |       var tree = cached[index]; | ||
|  |       // if has already-rendered static tree and not inside v-for,
 | ||
|  |       // we can reuse the same tree.
 | ||
|  |       if (tree && !isInFor) { | ||
|  |           return tree; | ||
|  |       } | ||
|  |       // otherwise, render a fresh tree.
 | ||
|  |       tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates
 | ||
|  |       ); | ||
|  |       markStatic(tree, "__static__".concat(index), false); | ||
|  |       return tree; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Runtime helper for v-once. | ||
|  |    * Effectively it means marking the node as static with a unique key. | ||
|  |    */ | ||
|  |   function markOnce(tree, index, key) { | ||
|  |       markStatic(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true); | ||
|  |       return tree; | ||
|  |   } | ||
|  |   function markStatic(tree, key, isOnce) { | ||
|  |       if (isArray(tree)) { | ||
|  |           for (var i = 0; i < tree.length; i++) { | ||
|  |               if (tree[i] && typeof tree[i] !== 'string') { | ||
|  |                   markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           markStaticNode(tree, key, isOnce); | ||
|  |       } | ||
|  |   } | ||
|  |   function markStaticNode(node, key, isOnce) { | ||
|  |       node.isStatic = true; | ||
|  |       node.key = key; | ||
|  |       node.isOnce = isOnce; | ||
|  |   } | ||
|  | 
 | ||
|  |   function bindObjectListeners(data, value) { | ||
|  |       if (value) { | ||
|  |           if (!isPlainObject(value)) { | ||
|  |               warn('v-on without argument expects an Object value', this); | ||
|  |           } | ||
|  |           else { | ||
|  |               var on = (data.on = data.on ? extend({}, data.on) : {}); | ||
|  |               for (var key in value) { | ||
|  |                   var existing = on[key]; | ||
|  |                   var ours = value[key]; | ||
|  |                   on[key] = existing ? [].concat(existing, ours) : ours; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       return data; | ||
|  |   } | ||
|  | 
 | ||
|  |   function resolveScopedSlots(fns, res,  | ||
|  |   // the following are added in 2.6
 | ||
|  |   hasDynamicKeys, contentHashKey) { | ||
|  |       res = res || { $stable: !hasDynamicKeys }; | ||
|  |       for (var i = 0; i < fns.length; i++) { | ||
|  |           var slot = fns[i]; | ||
|  |           if (isArray(slot)) { | ||
|  |               resolveScopedSlots(slot, res, hasDynamicKeys); | ||
|  |           } | ||
|  |           else if (slot) { | ||
|  |               // marker for reverse proxying v-slot without scope on this.$slots
 | ||
|  |               // @ts-expect-error
 | ||
|  |               if (slot.proxy) { | ||
|  |                   // @ts-expect-error
 | ||
|  |                   slot.fn.proxy = true; | ||
|  |               } | ||
|  |               res[slot.key] = slot.fn; | ||
|  |           } | ||
|  |       } | ||
|  |       if (contentHashKey) { | ||
|  |           res.$key = contentHashKey; | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  | 
 | ||
|  |   // helper to process dynamic keys for dynamic arguments in v-bind and v-on.
 | ||
|  |   function bindDynamicKeys(baseObj, values) { | ||
|  |       for (var i = 0; i < values.length; i += 2) { | ||
|  |           var key = values[i]; | ||
|  |           if (typeof key === 'string' && key) { | ||
|  |               baseObj[values[i]] = values[i + 1]; | ||
|  |           } | ||
|  |           else if (key !== '' && key !== null) { | ||
|  |               // null is a special value for explicitly removing a binding
 | ||
|  |               warn("Invalid value for dynamic directive argument (expected string or null): ".concat(key), this); | ||
|  |           } | ||
|  |       } | ||
|  |       return baseObj; | ||
|  |   } | ||
|  |   // helper to dynamically append modifier runtime markers to event names.
 | ||
|  |   // ensure only append when value is already string, otherwise it will be cast
 | ||
|  |   // to string and cause the type check to miss.
 | ||
|  |   function prependModifier(value, symbol) { | ||
|  |       return typeof value === 'string' ? symbol + value : value; | ||
|  |   } | ||
|  | 
 | ||
|  |   function installRenderHelpers(target) { | ||
|  |       target._o = markOnce; | ||
|  |       target._n = toNumber; | ||
|  |       target._s = toString; | ||
|  |       target._l = renderList; | ||
|  |       target._t = renderSlot; | ||
|  |       target._q = looseEqual; | ||
|  |       target._i = looseIndexOf; | ||
|  |       target._m = renderStatic; | ||
|  |       target._f = resolveFilter; | ||
|  |       target._k = checkKeyCodes; | ||
|  |       target._b = bindObjectProps; | ||
|  |       target._v = createTextVNode; | ||
|  |       target._e = createEmptyVNode; | ||
|  |       target._u = resolveScopedSlots; | ||
|  |       target._g = bindObjectListeners; | ||
|  |       target._d = bindDynamicKeys; | ||
|  |       target._p = prependModifier; | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Runtime helper for resolving raw children VNodes into a slot object. | ||
|  |    */ | ||
|  |   function resolveSlots(children, context) { | ||
|  |       if (!children || !children.length) { | ||
|  |           return {}; | ||
|  |       } | ||
|  |       var slots = {}; | ||
|  |       for (var i = 0, l = children.length; i < l; i++) { | ||
|  |           var child = children[i]; | ||
|  |           var data = child.data; | ||
|  |           // remove slot attribute if the node is resolved as a Vue slot node
 | ||
|  |           if (data && data.attrs && data.attrs.slot) { | ||
|  |               delete data.attrs.slot; | ||
|  |           } | ||
|  |           // named slots should only be respected if the vnode was rendered in the
 | ||
|  |           // same context.
 | ||
|  |           if ((child.context === context || child.fnContext === context) && | ||
|  |               data && | ||
|  |               data.slot != null) { | ||
|  |               var name_1 = data.slot; | ||
|  |               var slot = slots[name_1] || (slots[name_1] = []); | ||
|  |               if (child.tag === 'template') { | ||
|  |                   slot.push.apply(slot, child.children || []); | ||
|  |               } | ||
|  |               else { | ||
|  |                   slot.push(child); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               (slots.default || (slots.default = [])).push(child); | ||
|  |           } | ||
|  |       } | ||
|  |       // ignore slots that contains only whitespace
 | ||
|  |       for (var name_2 in slots) { | ||
|  |           if (slots[name_2].every(isWhitespace)) { | ||
|  |               delete slots[name_2]; | ||
|  |           } | ||
|  |       } | ||
|  |       return slots; | ||
|  |   } | ||
|  |   function isWhitespace(node) { | ||
|  |       return (node.isComment && !node.asyncFactory) || node.text === ' '; | ||
|  |   } | ||
|  | 
 | ||
|  |   function isAsyncPlaceholder(node) { | ||
|  |       // @ts-expect-error not really boolean type
 | ||
|  |       return node.isComment && node.asyncFactory; | ||
|  |   } | ||
|  | 
 | ||
|  |   function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) { | ||
|  |       var res; | ||
|  |       var hasNormalSlots = Object.keys(normalSlots).length > 0; | ||
|  |       var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots; | ||
|  |       var key = scopedSlots && scopedSlots.$key; | ||
|  |       if (!scopedSlots) { | ||
|  |           res = {}; | ||
|  |       } | ||
|  |       else if (scopedSlots._normalized) { | ||
|  |           // fast path 1: child component re-render only, parent did not change
 | ||
|  |           return scopedSlots._normalized; | ||
|  |       } | ||
|  |       else if (isStable && | ||
|  |           prevScopedSlots && | ||
|  |           prevScopedSlots !== emptyObject && | ||
|  |           key === prevScopedSlots.$key && | ||
|  |           !hasNormalSlots && | ||
|  |           !prevScopedSlots.$hasNormal) { | ||
|  |           // fast path 2: stable scoped slots w/ no normal slots to proxy,
 | ||
|  |           // only need to normalize once
 | ||
|  |           return prevScopedSlots; | ||
|  |       } | ||
|  |       else { | ||
|  |           res = {}; | ||
|  |           for (var key_1 in scopedSlots) { | ||
|  |               if (scopedSlots[key_1] && key_1[0] !== '$') { | ||
|  |                   res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       // expose normal slots on scopedSlots
 | ||
|  |       for (var key_2 in normalSlots) { | ||
|  |           if (!(key_2 in res)) { | ||
|  |               res[key_2] = proxyNormalSlot(normalSlots, key_2); | ||
|  |           } | ||
|  |       } | ||
|  |       // avoriaz seems to mock a non-extensible $scopedSlots object
 | ||
|  |       // and when that is passed down this would cause an error
 | ||
|  |       if (scopedSlots && Object.isExtensible(scopedSlots)) { | ||
|  |           scopedSlots._normalized = res; | ||
|  |       } | ||
|  |       def(res, '$stable', isStable); | ||
|  |       def(res, '$key', key); | ||
|  |       def(res, '$hasNormal', hasNormalSlots); | ||
|  |       return res; | ||
|  |   } | ||
|  |   function normalizeScopedSlot(vm, normalSlots, key, fn) { | ||
|  |       var normalized = function () { | ||
|  |           var cur = currentInstance; | ||
|  |           setCurrentInstance(vm); | ||
|  |           var res = arguments.length ? fn.apply(null, arguments) : fn({}); | ||
|  |           res = | ||
|  |               res && typeof res === 'object' && !isArray(res) | ||
|  |                   ? [res] // single vnode
 | ||
|  |                   : normalizeChildren(res); | ||
|  |           var vnode = res && res[0]; | ||
|  |           setCurrentInstance(cur); | ||
|  |           return res && | ||
|  |               (!vnode || | ||
|  |                   (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391
 | ||
|  |               ? undefined | ||
|  |               : res; | ||
|  |       }; | ||
|  |       // this is a slot using the new v-slot syntax without scope. although it is
 | ||
|  |       // compiled as a scoped slot, render fn users would expect it to be present
 | ||
|  |       // on this.$slots because the usage is semantically a normal slot.
 | ||
|  |       if (fn.proxy) { | ||
|  |           Object.defineProperty(normalSlots, key, { | ||
|  |               get: normalized, | ||
|  |               enumerable: true, | ||
|  |               configurable: true | ||
|  |           }); | ||
|  |       } | ||
|  |       return normalized; | ||
|  |   } | ||
|  |   function proxyNormalSlot(slots, key) { | ||
|  |       return function () { return slots[key]; }; | ||
|  |   } | ||
|  | 
 | ||
|  |   function initSetup(vm) { | ||
|  |       var options = vm.$options; | ||
|  |       var setup = options.setup; | ||
|  |       if (setup) { | ||
|  |           var ctx = (vm._setupContext = createSetupContext(vm)); | ||
|  |           setCurrentInstance(vm); | ||
|  |           pushTarget(); | ||
|  |           var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, "setup"); | ||
|  |           popTarget(); | ||
|  |           setCurrentInstance(); | ||
|  |           if (isFunction(setupResult)) { | ||
|  |               // render function
 | ||
|  |               // @ts-ignore
 | ||
|  |               options.render = setupResult; | ||
|  |           } | ||
|  |           else if (isObject(setupResult)) { | ||
|  |               // bindings
 | ||
|  |               if (setupResult instanceof VNode) { | ||
|  |                   warn("setup() should not return VNodes directly - " + | ||
|  |                       "return a render function instead."); | ||
|  |               } | ||
|  |               vm._setupState = setupResult; | ||
|  |               // __sfc indicates compiled bindings from <script setup>
 | ||
|  |               if (!setupResult.__sfc) { | ||
|  |                   for (var key in setupResult) { | ||
|  |                       if (!isReserved(key)) { | ||
|  |                           proxyWithRefUnwrap(vm, setupResult, key); | ||
|  |                       } | ||
|  |                       else { | ||
|  |                           warn("Avoid using variables that start with _ or $ in setup()."); | ||
|  |                       } | ||
|  |                   } | ||
|  |               } | ||
|  |               else { | ||
|  |                   // exposed for compiled render fn
 | ||
|  |                   var proxy = (vm._setupProxy = {}); | ||
|  |                   for (var key in setupResult) { | ||
|  |                       if (key !== '__sfc') { | ||
|  |                           proxyWithRefUnwrap(proxy, setupResult, key); | ||
|  |                       } | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |           else if (setupResult !== undefined) { | ||
|  |               warn("setup() should return an object. Received: ".concat(setupResult === null ? 'null' : typeof setupResult)); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function createSetupContext(vm) { | ||
|  |       var exposeCalled = false; | ||
|  |       return { | ||
|  |           get attrs() { | ||
|  |               if (!vm._attrsProxy) { | ||
|  |                   var proxy = (vm._attrsProxy = {}); | ||
|  |                   def(proxy, '_v_attr_proxy', true); | ||
|  |                   syncSetupProxy(proxy, vm.$attrs, emptyObject, vm, '$attrs'); | ||
|  |               } | ||
|  |               return vm._attrsProxy; | ||
|  |           }, | ||
|  |           get listeners() { | ||
|  |               if (!vm._listenersProxy) { | ||
|  |                   var proxy = (vm._listenersProxy = {}); | ||
|  |                   syncSetupProxy(proxy, vm.$listeners, emptyObject, vm, '$listeners'); | ||
|  |               } | ||
|  |               return vm._listenersProxy; | ||
|  |           }, | ||
|  |           get slots() { | ||
|  |               return initSlotsProxy(vm); | ||
|  |           }, | ||
|  |           emit: bind(vm.$emit, vm), | ||
|  |           expose: function (exposed) { | ||
|  |               { | ||
|  |                   if (exposeCalled) { | ||
|  |                       warn("expose() should be called only once per setup().", vm); | ||
|  |                   } | ||
|  |                   exposeCalled = true; | ||
|  |               } | ||
|  |               if (exposed) { | ||
|  |                   Object.keys(exposed).forEach(function (key) { | ||
|  |                       return proxyWithRefUnwrap(vm, exposed, key); | ||
|  |                   }); | ||
|  |               } | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  |   function syncSetupProxy(to, from, prev, instance, type) { | ||
|  |       var changed = false; | ||
|  |       for (var key in from) { | ||
|  |           if (!(key in to)) { | ||
|  |               changed = true; | ||
|  |               defineProxyAttr(to, key, instance, type); | ||
|  |           } | ||
|  |           else if (from[key] !== prev[key]) { | ||
|  |               changed = true; | ||
|  |           } | ||
|  |       } | ||
|  |       for (var key in to) { | ||
|  |           if (!(key in from)) { | ||
|  |               changed = true; | ||
|  |               delete to[key]; | ||
|  |           } | ||
|  |       } | ||
|  |       return changed; | ||
|  |   } | ||
|  |   function defineProxyAttr(proxy, key, instance, type) { | ||
|  |       Object.defineProperty(proxy, key, { | ||
|  |           enumerable: true, | ||
|  |           configurable: true, | ||
|  |           get: function () { | ||
|  |               return instance[type][key]; | ||
|  |           } | ||
|  |       }); | ||
|  |   } | ||
|  |   function initSlotsProxy(vm) { | ||
|  |       if (!vm._slotsProxy) { | ||
|  |           syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots); | ||
|  |       } | ||
|  |       return vm._slotsProxy; | ||
|  |   } | ||
|  |   function syncSetupSlots(to, from) { | ||
|  |       for (var key in from) { | ||
|  |           to[key] = from[key]; | ||
|  |       } | ||
|  |       for (var key in to) { | ||
|  |           if (!(key in from)) { | ||
|  |               delete to[key]; | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * @internal use manual type def because public setup context type relies on | ||
|  |    * legacy VNode types | ||
|  |    */ | ||
|  |   function useSlots() { | ||
|  |       return getContext().slots; | ||
|  |   } | ||
|  |   /** | ||
|  |    * @internal use manual type def because public setup context type relies on | ||
|  |    * legacy VNode types | ||
|  |    */ | ||
|  |   function useAttrs() { | ||
|  |       return getContext().attrs; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Vue 2 only | ||
|  |    * @internal use manual type def because public setup context type relies on | ||
|  |    * legacy VNode types | ||
|  |    */ | ||
|  |   function useListeners() { | ||
|  |       return getContext().listeners; | ||
|  |   } | ||
|  |   function getContext() { | ||
|  |       if (!currentInstance) { | ||
|  |           warn("useContext() called without active instance."); | ||
|  |       } | ||
|  |       var vm = currentInstance; | ||
|  |       return vm._setupContext || (vm._setupContext = createSetupContext(vm)); | ||
|  |   } | ||
|  |   /** | ||
|  |    * Runtime helper for merging default declarations. Imported by compiled code | ||
|  |    * only. | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   function mergeDefaults(raw, defaults) { | ||
|  |       var props = isArray(raw) | ||
|  |           ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {}) | ||
|  |           : raw; | ||
|  |       for (var key in defaults) { | ||
|  |           var opt = props[key]; | ||
|  |           if (opt) { | ||
|  |               if (isArray(opt) || isFunction(opt)) { | ||
|  |                   props[key] = { type: opt, default: defaults[key] }; | ||
|  |               } | ||
|  |               else { | ||
|  |                   opt.default = defaults[key]; | ||
|  |               } | ||
|  |           } | ||
|  |           else if (opt === null) { | ||
|  |               props[key] = { default: defaults[key] }; | ||
|  |           } | ||
|  |           else { | ||
|  |               warn("props default key \"".concat(key, "\" has no corresponding declaration.")); | ||
|  |           } | ||
|  |       } | ||
|  |       return props; | ||
|  |   } | ||
|  | 
 | ||
|  |   function initRender(vm) { | ||
|  |       vm._vnode = null; // the root of the child tree
 | ||
|  |       vm._staticTrees = null; // v-once cached trees
 | ||
|  |       var options = vm.$options; | ||
|  |       var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree
 | ||
|  |       var renderContext = parentVnode && parentVnode.context; | ||
|  |       vm.$slots = resolveSlots(options._renderChildren, renderContext); | ||
|  |       vm.$scopedSlots = parentVnode | ||
|  |           ? normalizeScopedSlots(vm.$parent, parentVnode.data.scopedSlots, vm.$slots) | ||
|  |           : emptyObject; | ||
|  |       // bind the createElement fn to this instance
 | ||
|  |       // so that we get proper render context inside it.
 | ||
|  |       // args order: tag, data, children, normalizationType, alwaysNormalize
 | ||
|  |       // internal version is used by render functions compiled from templates
 | ||
|  |       // @ts-expect-error
 | ||
|  |       vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); }; | ||
|  |       // normalization is always applied for the public version, used in
 | ||
|  |       // user-written render functions.
 | ||
|  |       // @ts-expect-error
 | ||
|  |       vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); }; | ||
|  |       // $attrs & $listeners are exposed for easier HOC creation.
 | ||
|  |       // they need to be reactive so that HOCs using them are always updated
 | ||
|  |       var parentData = parentVnode && parentVnode.data; | ||
|  |       /* istanbul ignore else */ | ||
|  |       { | ||
|  |           defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, function () { | ||
|  |               !isUpdatingChildComponent && warn("$attrs is readonly.", vm); | ||
|  |           }, true); | ||
|  |           defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () { | ||
|  |               !isUpdatingChildComponent && warn("$listeners is readonly.", vm); | ||
|  |           }, true); | ||
|  |       } | ||
|  |   } | ||
|  |   var currentRenderingInstance = null; | ||
|  |   function renderMixin(Vue) { | ||
|  |       // install runtime convenience helpers
 | ||
|  |       installRenderHelpers(Vue.prototype); | ||
|  |       Vue.prototype.$nextTick = function (fn) { | ||
|  |           return nextTick(fn, this); | ||
|  |       }; | ||
|  |       Vue.prototype._render = function () { | ||
|  |           var vm = this; | ||
|  |           var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode; | ||
|  |           if (_parentVnode && vm._isMounted) { | ||
|  |               vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots); | ||
|  |               if (vm._slotsProxy) { | ||
|  |                   syncSetupSlots(vm._slotsProxy, vm.$scopedSlots); | ||
|  |               } | ||
|  |           } | ||
|  |           // set parent vnode. this allows render functions to have access
 | ||
|  |           // to the data on the placeholder node.
 | ||
|  |           vm.$vnode = _parentVnode; | ||
|  |           // render self
 | ||
|  |           var prevInst = currentInstance; | ||
|  |           var prevRenderInst = currentRenderingInstance; | ||
|  |           var vnode; | ||
|  |           try { | ||
|  |               setCurrentInstance(vm); | ||
|  |               currentRenderingInstance = vm; | ||
|  |               vnode = render.call(vm._renderProxy, vm.$createElement); | ||
|  |           } | ||
|  |           catch (e) { | ||
|  |               handleError(e, vm, "render"); | ||
|  |               // return error render result,
 | ||
|  |               // or previous vnode to prevent render error causing blank component
 | ||
|  |               /* istanbul ignore else */ | ||
|  |               if (vm.$options.renderError) { | ||
|  |                   try { | ||
|  |                       vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e); | ||
|  |                   } | ||
|  |                   catch (e) { | ||
|  |                       handleError(e, vm, "renderError"); | ||
|  |                       vnode = vm._vnode; | ||
|  |                   } | ||
|  |               } | ||
|  |               else { | ||
|  |                   vnode = vm._vnode; | ||
|  |               } | ||
|  |           } | ||
|  |           finally { | ||
|  |               currentRenderingInstance = prevRenderInst; | ||
|  |               setCurrentInstance(prevInst); | ||
|  |           } | ||
|  |           // if the returned array contains only a single node, allow it
 | ||
|  |           if (isArray(vnode) && vnode.length === 1) { | ||
|  |               vnode = vnode[0]; | ||
|  |           } | ||
|  |           // return empty vnode in case the render function errored out
 | ||
|  |           if (!(vnode instanceof VNode)) { | ||
|  |               if (isArray(vnode)) { | ||
|  |                   warn('Multiple root nodes returned from render function. Render function ' + | ||
|  |                       'should return a single root node.', vm); | ||
|  |               } | ||
|  |               vnode = createEmptyVNode(); | ||
|  |           } | ||
|  |           // set parent
 | ||
|  |           vnode.parent = _parentVnode; | ||
|  |           return vnode; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   function ensureCtor(comp, base) { | ||
|  |       if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) { | ||
|  |           comp = comp.default; | ||
|  |       } | ||
|  |       return isObject(comp) ? base.extend(comp) : comp; | ||
|  |   } | ||
|  |   function createAsyncPlaceholder(factory, data, context, children, tag) { | ||
|  |       var node = createEmptyVNode(); | ||
|  |       node.asyncFactory = factory; | ||
|  |       node.asyncMeta = { data: data, context: context, children: children, tag: tag }; | ||
|  |       return node; | ||
|  |   } | ||
|  |   function resolveAsyncComponent(factory, baseCtor) { | ||
|  |       if (isTrue(factory.error) && isDef(factory.errorComp)) { | ||
|  |           return factory.errorComp; | ||
|  |       } | ||
|  |       if (isDef(factory.resolved)) { | ||
|  |           return factory.resolved; | ||
|  |       } | ||
|  |       var owner = currentRenderingInstance; | ||
|  |       if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) { | ||
|  |           // already pending
 | ||
|  |           factory.owners.push(owner); | ||
|  |       } | ||
|  |       if (isTrue(factory.loading) && isDef(factory.loadingComp)) { | ||
|  |           return factory.loadingComp; | ||
|  |       } | ||
|  |       if (owner && !isDef(factory.owners)) { | ||
|  |           var owners_1 = (factory.owners = [owner]); | ||
|  |           var sync_1 = true; | ||
|  |           var timerLoading_1 = null; | ||
|  |           var timerTimeout_1 = null; | ||
|  |           owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); }); | ||
|  |           var forceRender_1 = function (renderCompleted) { | ||
|  |               for (var i = 0, l = owners_1.length; i < l; i++) { | ||
|  |                   owners_1[i].$forceUpdate(); | ||
|  |               } | ||
|  |               if (renderCompleted) { | ||
|  |                   owners_1.length = 0; | ||
|  |                   if (timerLoading_1 !== null) { | ||
|  |                       clearTimeout(timerLoading_1); | ||
|  |                       timerLoading_1 = null; | ||
|  |                   } | ||
|  |                   if (timerTimeout_1 !== null) { | ||
|  |                       clearTimeout(timerTimeout_1); | ||
|  |                       timerTimeout_1 = null; | ||
|  |                   } | ||
|  |               } | ||
|  |           }; | ||
|  |           var resolve = once(function (res) { | ||
|  |               // cache resolved
 | ||
|  |               factory.resolved = ensureCtor(res, baseCtor); | ||
|  |               // invoke callbacks only if this is not a synchronous resolve
 | ||
|  |               // (async resolves are shimmed as synchronous during SSR)
 | ||
|  |               if (!sync_1) { | ||
|  |                   forceRender_1(true); | ||
|  |               } | ||
|  |               else { | ||
|  |                   owners_1.length = 0; | ||
|  |               } | ||
|  |           }); | ||
|  |           var reject_1 = once(function (reason) { | ||
|  |               warn("Failed to resolve async component: ".concat(String(factory)) + | ||
|  |                       (reason ? "\nReason: ".concat(reason) : '')); | ||
|  |               if (isDef(factory.errorComp)) { | ||
|  |                   factory.error = true; | ||
|  |                   forceRender_1(true); | ||
|  |               } | ||
|  |           }); | ||
|  |           var res_1 = factory(resolve, reject_1); | ||
|  |           if (isObject(res_1)) { | ||
|  |               if (isPromise(res_1)) { | ||
|  |                   // () => Promise
 | ||
|  |                   if (isUndef(factory.resolved)) { | ||
|  |                       res_1.then(resolve, reject_1); | ||
|  |                   } | ||
|  |               } | ||
|  |               else if (isPromise(res_1.component)) { | ||
|  |                   res_1.component.then(resolve, reject_1); | ||
|  |                   if (isDef(res_1.error)) { | ||
|  |                       factory.errorComp = ensureCtor(res_1.error, baseCtor); | ||
|  |                   } | ||
|  |                   if (isDef(res_1.loading)) { | ||
|  |                       factory.loadingComp = ensureCtor(res_1.loading, baseCtor); | ||
|  |                       if (res_1.delay === 0) { | ||
|  |                           factory.loading = true; | ||
|  |                       } | ||
|  |                       else { | ||
|  |                           // @ts-expect-error NodeJS timeout type
 | ||
|  |                           timerLoading_1 = setTimeout(function () { | ||
|  |                               timerLoading_1 = null; | ||
|  |                               if (isUndef(factory.resolved) && isUndef(factory.error)) { | ||
|  |                                   factory.loading = true; | ||
|  |                                   forceRender_1(false); | ||
|  |                               } | ||
|  |                           }, res_1.delay || 200); | ||
|  |                       } | ||
|  |                   } | ||
|  |                   if (isDef(res_1.timeout)) { | ||
|  |                       // @ts-expect-error NodeJS timeout type
 | ||
|  |                       timerTimeout_1 = setTimeout(function () { | ||
|  |                           timerTimeout_1 = null; | ||
|  |                           if (isUndef(factory.resolved)) { | ||
|  |                               reject_1("timeout (".concat(res_1.timeout, "ms)") ); | ||
|  |                           } | ||
|  |                       }, res_1.timeout); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |           sync_1 = false; | ||
|  |           // return in case resolved synchronously
 | ||
|  |           return factory.loading ? factory.loadingComp : factory.resolved; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function getFirstComponentChild(children) { | ||
|  |       if (isArray(children)) { | ||
|  |           for (var i = 0; i < children.length; i++) { | ||
|  |               var c = children[i]; | ||
|  |               if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) { | ||
|  |                   return c; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   var SIMPLE_NORMALIZE = 1; | ||
|  |   var ALWAYS_NORMALIZE = 2; | ||
|  |   // wrapper function for providing a more flexible interface
 | ||
|  |   // without getting yelled at by flow
 | ||
|  |   function createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) { | ||
|  |       if (isArray(data) || isPrimitive(data)) { | ||
|  |           normalizationType = children; | ||
|  |           children = data; | ||
|  |           data = undefined; | ||
|  |       } | ||
|  |       if (isTrue(alwaysNormalize)) { | ||
|  |           normalizationType = ALWAYS_NORMALIZE; | ||
|  |       } | ||
|  |       return _createElement(context, tag, data, children, normalizationType); | ||
|  |   } | ||
|  |   function _createElement(context, tag, data, children, normalizationType) { | ||
|  |       if (isDef(data) && isDef(data.__ob__)) { | ||
|  |           warn("Avoid using observed data object as vnode data: ".concat(JSON.stringify(data), "\n") + 'Always create fresh vnode data objects in each render!', context); | ||
|  |           return createEmptyVNode(); | ||
|  |       } | ||
|  |       // object syntax in v-bind
 | ||
|  |       if (isDef(data) && isDef(data.is)) { | ||
|  |           tag = data.is; | ||
|  |       } | ||
|  |       if (!tag) { | ||
|  |           // in case of component :is set to falsy value
 | ||
|  |           return createEmptyVNode(); | ||
|  |       } | ||
|  |       // warn against non-primitive key
 | ||
|  |       if (isDef(data) && isDef(data.key) && !isPrimitive(data.key)) { | ||
|  |           warn('Avoid using non-primitive value as key, ' + | ||
|  |               'use string/number value instead.', context); | ||
|  |       } | ||
|  |       // support single function children as default scoped slot
 | ||
|  |       if (isArray(children) && isFunction(children[0])) { | ||
|  |           data = data || {}; | ||
|  |           data.scopedSlots = { default: children[0] }; | ||
|  |           children.length = 0; | ||
|  |       } | ||
|  |       if (normalizationType === ALWAYS_NORMALIZE) { | ||
|  |           children = normalizeChildren(children); | ||
|  |       } | ||
|  |       else if (normalizationType === SIMPLE_NORMALIZE) { | ||
|  |           children = simpleNormalizeChildren(children); | ||
|  |       } | ||
|  |       var vnode, ns; | ||
|  |       if (typeof tag === 'string') { | ||
|  |           var Ctor = void 0; | ||
|  |           ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag); | ||
|  |           if (config.isReservedTag(tag)) { | ||
|  |               // platform built-in elements
 | ||
|  |               if (isDef(data) && | ||
|  |                   isDef(data.nativeOn) && | ||
|  |                   data.tag !== 'component') { | ||
|  |                   warn("The .native modifier for v-on is only valid on components but it was used on <".concat(tag, ">."), context); | ||
|  |               } | ||
|  |               vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context); | ||
|  |           } | ||
|  |           else if ((!data || !data.pre) && | ||
|  |               isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) { | ||
|  |               // component
 | ||
|  |               vnode = createComponent(Ctor, data, context, children, tag); | ||
|  |           } | ||
|  |           else { | ||
|  |               // unknown or unlisted namespaced elements
 | ||
|  |               // check at runtime because it may get assigned a namespace when its
 | ||
|  |               // parent normalizes children
 | ||
|  |               vnode = new VNode(tag, data, children, undefined, undefined, context); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           // direct component options / constructor
 | ||
|  |           vnode = createComponent(tag, data, context, children); | ||
|  |       } | ||
|  |       if (isArray(vnode)) { | ||
|  |           return vnode; | ||
|  |       } | ||
|  |       else if (isDef(vnode)) { | ||
|  |           if (isDef(ns)) | ||
|  |               applyNS(vnode, ns); | ||
|  |           if (isDef(data)) | ||
|  |               registerDeepBindings(data); | ||
|  |           return vnode; | ||
|  |       } | ||
|  |       else { | ||
|  |           return createEmptyVNode(); | ||
|  |       } | ||
|  |   } | ||
|  |   function applyNS(vnode, ns, force) { | ||
|  |       vnode.ns = ns; | ||
|  |       if (vnode.tag === 'foreignObject') { | ||
|  |           // use default namespace inside foreignObject
 | ||
|  |           ns = undefined; | ||
|  |           force = true; | ||
|  |       } | ||
|  |       if (isDef(vnode.children)) { | ||
|  |           for (var i = 0, l = vnode.children.length; i < l; i++) { | ||
|  |               var child = vnode.children[i]; | ||
|  |               if (isDef(child.tag) && | ||
|  |                   (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) { | ||
|  |                   applyNS(child, ns, force); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   // ref #5318
 | ||
|  |   // necessary to ensure parent re-render when deep bindings like :style and
 | ||
|  |   // :class are used on slot nodes
 | ||
|  |   function registerDeepBindings(data) { | ||
|  |       if (isObject(data.style)) { | ||
|  |           traverse(data.style); | ||
|  |       } | ||
|  |       if (isObject(data.class)) { | ||
|  |           traverse(data.class); | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * @internal this function needs manual public type declaration because it relies | ||
|  |    * on previously manually authored types from Vue 2 | ||
|  |    */ | ||
|  |   function h(type, props, children) { | ||
|  |       if (!currentInstance) { | ||
|  |           warn("globally imported h() can only be invoked when there is an active " + | ||
|  |                   "component instance, e.g. synchronously in a component's render or setup function."); | ||
|  |       } | ||
|  |       return createElement$1(currentInstance, type, props, children, 2, true); | ||
|  |   } | ||
|  | 
 | ||
|  |   function handleError(err, vm, info) { | ||
|  |       // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
 | ||
|  |       // See: https://github.com/vuejs/vuex/issues/1505
 | ||
|  |       pushTarget(); | ||
|  |       try { | ||
|  |           if (vm) { | ||
|  |               var cur = vm; | ||
|  |               while ((cur = cur.$parent)) { | ||
|  |                   var hooks = cur.$options.errorCaptured; | ||
|  |                   if (hooks) { | ||
|  |                       for (var i = 0; i < hooks.length; i++) { | ||
|  |                           try { | ||
|  |                               var capture = hooks[i].call(cur, err, vm, info) === false; | ||
|  |                               if (capture) | ||
|  |                                   return; | ||
|  |                           } | ||
|  |                           catch (e) { | ||
|  |                               globalHandleError(e, cur, 'errorCaptured hook'); | ||
|  |                           } | ||
|  |                       } | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |           globalHandleError(err, vm, info); | ||
|  |       } | ||
|  |       finally { | ||
|  |           popTarget(); | ||
|  |       } | ||
|  |   } | ||
|  |   function invokeWithErrorHandling(handler, context, args, vm, info) { | ||
|  |       var res; | ||
|  |       try { | ||
|  |           res = args ? handler.apply(context, args) : handler.call(context); | ||
|  |           if (res && !res._isVue && isPromise(res) && !res._handled) { | ||
|  |               res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); }); | ||
|  |               res._handled = true; | ||
|  |           } | ||
|  |       } | ||
|  |       catch (e) { | ||
|  |           handleError(e, vm, info); | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  |   function globalHandleError(err, vm, info) { | ||
|  |       if (config.errorHandler) { | ||
|  |           try { | ||
|  |               return config.errorHandler.call(null, err, vm, info); | ||
|  |           } | ||
|  |           catch (e) { | ||
|  |               // if the user intentionally throws the original error in the handler,
 | ||
|  |               // do not log it twice
 | ||
|  |               if (e !== err) { | ||
|  |                   logError(e, null, 'config.errorHandler'); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       logError(err, vm, info); | ||
|  |   } | ||
|  |   function logError(err, vm, info) { | ||
|  |       { | ||
|  |           warn("Error in ".concat(info, ": \"").concat(err.toString(), "\""), vm); | ||
|  |       } | ||
|  |       /* istanbul ignore else */ | ||
|  |       if (inBrowser && typeof console !== 'undefined') { | ||
|  |           console.error(err); | ||
|  |       } | ||
|  |       else { | ||
|  |           throw err; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   /* globals MutationObserver */ | ||
|  |   var isUsingMicroTask = false; | ||
|  |   var callbacks = []; | ||
|  |   var pending = false; | ||
|  |   function flushCallbacks() { | ||
|  |       pending = false; | ||
|  |       var copies = callbacks.slice(0); | ||
|  |       callbacks.length = 0; | ||
|  |       for (var i = 0; i < copies.length; i++) { | ||
|  |           copies[i](); | ||
|  |       } | ||
|  |   } | ||
|  |   // Here we have async deferring wrappers using microtasks.
 | ||
|  |   // In 2.5 we used (macro) tasks (in combination with microtasks).
 | ||
|  |   // However, it has subtle problems when state is changed right before repaint
 | ||
|  |   // (e.g. #6813, out-in transitions).
 | ||
|  |   // Also, using (macro) tasks in event handler would cause some weird behaviors
 | ||
|  |   // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
 | ||
|  |   // So we now use microtasks everywhere, again.
 | ||
|  |   // A major drawback of this tradeoff is that there are some scenarios
 | ||
|  |   // where microtasks have too high a priority and fire in between supposedly
 | ||
|  |   // sequential events (e.g. #4521, #6690, which have workarounds)
 | ||
|  |   // or even between bubbling of the same event (#6566).
 | ||
|  |   var timerFunc; | ||
|  |   // The nextTick behavior leverages the microtask queue, which can be accessed
 | ||
|  |   // via either native Promise.then or MutationObserver.
 | ||
|  |   // MutationObserver has wider support, however it is seriously bugged in
 | ||
|  |   // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
 | ||
|  |   // completely stops working after triggering a few times... so, if native
 | ||
|  |   // Promise is available, we will use it:
 | ||
|  |   /* istanbul ignore next, $flow-disable-line */ | ||
|  |   if (typeof Promise !== 'undefined' && isNative(Promise)) { | ||
|  |       var p_1 = Promise.resolve(); | ||
|  |       timerFunc = function () { | ||
|  |           p_1.then(flushCallbacks); | ||
|  |           // In problematic UIWebViews, Promise.then doesn't completely break, but
 | ||
|  |           // it can get stuck in a weird state where callbacks are pushed into the
 | ||
|  |           // microtask queue but the queue isn't being flushed, until the browser
 | ||
|  |           // needs to do some other work, e.g. handle a timer. Therefore we can
 | ||
|  |           // "force" the microtask queue to be flushed by adding an empty timer.
 | ||
|  |           if (isIOS) | ||
|  |               setTimeout(noop); | ||
|  |       }; | ||
|  |       isUsingMicroTask = true; | ||
|  |   } | ||
|  |   else if (!isIE && | ||
|  |       typeof MutationObserver !== 'undefined' && | ||
|  |       (isNative(MutationObserver) || | ||
|  |           // PhantomJS and iOS 7.x
 | ||
|  |           MutationObserver.toString() === '[object MutationObserverConstructor]')) { | ||
|  |       // Use MutationObserver where native Promise is not available,
 | ||
|  |       // e.g. PhantomJS, iOS7, Android 4.4
 | ||
|  |       // (#6466 MutationObserver is unreliable in IE11)
 | ||
|  |       var counter_1 = 1; | ||
|  |       var observer = new MutationObserver(flushCallbacks); | ||
|  |       var textNode_1 = document.createTextNode(String(counter_1)); | ||
|  |       observer.observe(textNode_1, { | ||
|  |           characterData: true | ||
|  |       }); | ||
|  |       timerFunc = function () { | ||
|  |           counter_1 = (counter_1 + 1) % 2; | ||
|  |           textNode_1.data = String(counter_1); | ||
|  |       }; | ||
|  |       isUsingMicroTask = true; | ||
|  |   } | ||
|  |   else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { | ||
|  |       // Fallback to setImmediate.
 | ||
|  |       // Technically it leverages the (macro) task queue,
 | ||
|  |       // but it is still a better choice than setTimeout.
 | ||
|  |       timerFunc = function () { | ||
|  |           setImmediate(flushCallbacks); | ||
|  |       }; | ||
|  |   } | ||
|  |   else { | ||
|  |       // Fallback to setTimeout.
 | ||
|  |       timerFunc = function () { | ||
|  |           setTimeout(flushCallbacks, 0); | ||
|  |       }; | ||
|  |   } | ||
|  |   /** | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   function nextTick(cb, ctx) { | ||
|  |       var _resolve; | ||
|  |       callbacks.push(function () { | ||
|  |           if (cb) { | ||
|  |               try { | ||
|  |                   cb.call(ctx); | ||
|  |               } | ||
|  |               catch (e) { | ||
|  |                   handleError(e, ctx, 'nextTick'); | ||
|  |               } | ||
|  |           } | ||
|  |           else if (_resolve) { | ||
|  |               _resolve(ctx); | ||
|  |           } | ||
|  |       }); | ||
|  |       if (!pending) { | ||
|  |           pending = true; | ||
|  |           timerFunc(); | ||
|  |       } | ||
|  |       // $flow-disable-line
 | ||
|  |       if (!cb && typeof Promise !== 'undefined') { | ||
|  |           return new Promise(function (resolve) { | ||
|  |               _resolve = resolve; | ||
|  |           }); | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function useCssModule(name) { | ||
|  |       /* istanbul ignore else */ | ||
|  |       { | ||
|  |           { | ||
|  |               warn("useCssModule() is not supported in the global build."); | ||
|  |           } | ||
|  |           return emptyObject; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Runtime helper for SFC's CSS variable injection feature. | ||
|  |    * @private | ||
|  |    */ | ||
|  |   function useCssVars(getter) { | ||
|  |       if (!inBrowser && !false) | ||
|  |           return; | ||
|  |       var instance = currentInstance; | ||
|  |       if (!instance) { | ||
|  |           warn("useCssVars is called without current active component instance."); | ||
|  |           return; | ||
|  |       } | ||
|  |       watchPostEffect(function () { | ||
|  |           var el = instance.$el; | ||
|  |           var vars = getter(instance, instance._setupProxy); | ||
|  |           if (el && el.nodeType === 1) { | ||
|  |               var style = el.style; | ||
|  |               for (var key in vars) { | ||
|  |                   style.setProperty("--".concat(key), vars[key]); | ||
|  |               } | ||
|  |           } | ||
|  |       }); | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * v3-compatible async component API. | ||
|  |    * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts | ||
|  |    * because it relies on existing manual types | ||
|  |    */ | ||
|  |   function defineAsyncComponent(source) { | ||
|  |       if (isFunction(source)) { | ||
|  |           source = { loader: source }; | ||
|  |       } | ||
|  |       var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out
 | ||
|  |       _b = source.suspensible, // undefined = never times out
 | ||
|  |       suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true
 | ||
|  |       userOnError = source.onError; | ||
|  |       if (suspensible) { | ||
|  |           warn("The suspensible option for async components is not supported in Vue2. It is ignored."); | ||
|  |       } | ||
|  |       var pendingRequest = null; | ||
|  |       var retries = 0; | ||
|  |       var retry = function () { | ||
|  |           retries++; | ||
|  |           pendingRequest = null; | ||
|  |           return load(); | ||
|  |       }; | ||
|  |       var load = function () { | ||
|  |           var thisRequest; | ||
|  |           return (pendingRequest || | ||
|  |               (thisRequest = pendingRequest = | ||
|  |                   loader() | ||
|  |                       .catch(function (err) { | ||
|  |                       err = err instanceof Error ? err : new Error(String(err)); | ||
|  |                       if (userOnError) { | ||
|  |                           return new Promise(function (resolve, reject) { | ||
|  |                               var userRetry = function () { return resolve(retry()); }; | ||
|  |                               var userFail = function () { return reject(err); }; | ||
|  |                               userOnError(err, userRetry, userFail, retries + 1); | ||
|  |                           }); | ||
|  |                       } | ||
|  |                       else { | ||
|  |                           throw err; | ||
|  |                       } | ||
|  |                   }) | ||
|  |                       .then(function (comp) { | ||
|  |                       if (thisRequest !== pendingRequest && pendingRequest) { | ||
|  |                           return pendingRequest; | ||
|  |                       } | ||
|  |                       if (!comp) { | ||
|  |                           warn("Async component loader resolved to undefined. " + | ||
|  |                               "If you are using retry(), make sure to return its return value."); | ||
|  |                       } | ||
|  |                       // interop module default
 | ||
|  |                       if (comp && | ||
|  |                           (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) { | ||
|  |                           comp = comp.default; | ||
|  |                       } | ||
|  |                       if (comp && !isObject(comp) && !isFunction(comp)) { | ||
|  |                           throw new Error("Invalid async component load result: ".concat(comp)); | ||
|  |                       } | ||
|  |                       return comp; | ||
|  |                   }))); | ||
|  |       }; | ||
|  |       return function () { | ||
|  |           var component = load(); | ||
|  |           return { | ||
|  |               component: component, | ||
|  |               delay: delay, | ||
|  |               timeout: timeout, | ||
|  |               error: errorComponent, | ||
|  |               loading: loadingComponent | ||
|  |           }; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   function createLifeCycle(hookName) { | ||
|  |       return function (fn, target) { | ||
|  |           if (target === void 0) { target = currentInstance; } | ||
|  |           if (!target) { | ||
|  |               warn("".concat(formatName(hookName), " is called when there is no active component instance to be ") + | ||
|  |                       "associated with. " + | ||
|  |                       "Lifecycle injection APIs can only be used during execution of setup()."); | ||
|  |               return; | ||
|  |           } | ||
|  |           return injectHook(target, hookName, fn); | ||
|  |       }; | ||
|  |   } | ||
|  |   function formatName(name) { | ||
|  |       if (name === 'beforeDestroy') { | ||
|  |           name = 'beforeUnmount'; | ||
|  |       } | ||
|  |       else if (name === 'destroyed') { | ||
|  |           name = 'unmounted'; | ||
|  |       } | ||
|  |       return "on".concat(name[0].toUpperCase() + name.slice(1)); | ||
|  |   } | ||
|  |   function injectHook(instance, hookName, fn) { | ||
|  |       var options = instance.$options; | ||
|  |       options[hookName] = mergeLifecycleHook(options[hookName], fn); | ||
|  |   } | ||
|  |   var onBeforeMount = createLifeCycle('beforeMount'); | ||
|  |   var onMounted = createLifeCycle('mounted'); | ||
|  |   var onBeforeUpdate = createLifeCycle('beforeUpdate'); | ||
|  |   var onUpdated = createLifeCycle('updated'); | ||
|  |   var onBeforeUnmount = createLifeCycle('beforeDestroy'); | ||
|  |   var onUnmounted = createLifeCycle('destroyed'); | ||
|  |   var onActivated = createLifeCycle('activated'); | ||
|  |   var onDeactivated = createLifeCycle('deactivated'); | ||
|  |   var onServerPrefetch = createLifeCycle('serverPrefetch'); | ||
|  |   var onRenderTracked = createLifeCycle('renderTracked'); | ||
|  |   var onRenderTriggered = createLifeCycle('renderTriggered'); | ||
|  |   var injectErrorCapturedHook = createLifeCycle('errorCaptured'); | ||
|  |   function onErrorCaptured(hook, target) { | ||
|  |       if (target === void 0) { target = currentInstance; } | ||
|  |       injectErrorCapturedHook(hook, target); | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Note: also update dist/vue.runtime.mjs when adding new exports to this file. | ||
|  |    */ | ||
|  |   var version = '2.7.16'; | ||
|  |   /** | ||
|  |    * @internal type is manually declared in <root>/types/v3-define-component.d.ts | ||
|  |    */ | ||
|  |   function defineComponent(options) { | ||
|  |       return options; | ||
|  |   } | ||
|  | 
 | ||
|  |   var vca = /*#__PURE__*/Object.freeze({ | ||
|  |     __proto__: null, | ||
|  |     version: version, | ||
|  |     defineComponent: defineComponent, | ||
|  |     ref: ref$1, | ||
|  |     shallowRef: shallowRef, | ||
|  |     isRef: isRef, | ||
|  |     toRef: toRef, | ||
|  |     toRefs: toRefs, | ||
|  |     unref: unref, | ||
|  |     proxyRefs: proxyRefs, | ||
|  |     customRef: customRef, | ||
|  |     triggerRef: triggerRef, | ||
|  |     reactive: reactive, | ||
|  |     isReactive: isReactive, | ||
|  |     isReadonly: isReadonly, | ||
|  |     isShallow: isShallow, | ||
|  |     isProxy: isProxy, | ||
|  |     shallowReactive: shallowReactive, | ||
|  |     markRaw: markRaw, | ||
|  |     toRaw: toRaw, | ||
|  |     readonly: readonly, | ||
|  |     shallowReadonly: shallowReadonly, | ||
|  |     computed: computed, | ||
|  |     watch: watch, | ||
|  |     watchEffect: watchEffect, | ||
|  |     watchPostEffect: watchPostEffect, | ||
|  |     watchSyncEffect: watchSyncEffect, | ||
|  |     EffectScope: EffectScope, | ||
|  |     effectScope: effectScope, | ||
|  |     onScopeDispose: onScopeDispose, | ||
|  |     getCurrentScope: getCurrentScope, | ||
|  |     provide: provide, | ||
|  |     inject: inject, | ||
|  |     h: h, | ||
|  |     getCurrentInstance: getCurrentInstance, | ||
|  |     useSlots: useSlots, | ||
|  |     useAttrs: useAttrs, | ||
|  |     useListeners: useListeners, | ||
|  |     mergeDefaults: mergeDefaults, | ||
|  |     nextTick: nextTick, | ||
|  |     set: set, | ||
|  |     del: del, | ||
|  |     useCssModule: useCssModule, | ||
|  |     useCssVars: useCssVars, | ||
|  |     defineAsyncComponent: defineAsyncComponent, | ||
|  |     onBeforeMount: onBeforeMount, | ||
|  |     onMounted: onMounted, | ||
|  |     onBeforeUpdate: onBeforeUpdate, | ||
|  |     onUpdated: onUpdated, | ||
|  |     onBeforeUnmount: onBeforeUnmount, | ||
|  |     onUnmounted: onUnmounted, | ||
|  |     onActivated: onActivated, | ||
|  |     onDeactivated: onDeactivated, | ||
|  |     onServerPrefetch: onServerPrefetch, | ||
|  |     onRenderTracked: onRenderTracked, | ||
|  |     onRenderTriggered: onRenderTriggered, | ||
|  |     onErrorCaptured: onErrorCaptured | ||
|  |   }); | ||
|  | 
 | ||
|  |   var seenObjects = new _Set(); | ||
|  |   /** | ||
|  |    * Recursively traverse an object to evoke all converted | ||
|  |    * getters, so that every nested property inside the object | ||
|  |    * is collected as a "deep" dependency. | ||
|  |    */ | ||
|  |   function traverse(val) { | ||
|  |       _traverse(val, seenObjects); | ||
|  |       seenObjects.clear(); | ||
|  |       return val; | ||
|  |   } | ||
|  |   function _traverse(val, seen) { | ||
|  |       var i, keys; | ||
|  |       var isA = isArray(val); | ||
|  |       if ((!isA && !isObject(val)) || | ||
|  |           val.__v_skip /* ReactiveFlags.SKIP */ || | ||
|  |           Object.isFrozen(val) || | ||
|  |           val instanceof VNode) { | ||
|  |           return; | ||
|  |       } | ||
|  |       if (val.__ob__) { | ||
|  |           var depId = val.__ob__.dep.id; | ||
|  |           if (seen.has(depId)) { | ||
|  |               return; | ||
|  |           } | ||
|  |           seen.add(depId); | ||
|  |       } | ||
|  |       if (isA) { | ||
|  |           i = val.length; | ||
|  |           while (i--) | ||
|  |               _traverse(val[i], seen); | ||
|  |       } | ||
|  |       else if (isRef(val)) { | ||
|  |           _traverse(val.value, seen); | ||
|  |       } | ||
|  |       else { | ||
|  |           keys = Object.keys(val); | ||
|  |           i = keys.length; | ||
|  |           while (i--) | ||
|  |               _traverse(val[keys[i]], seen); | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   var uid$1 = 0; | ||
|  |   /** | ||
|  |    * A watcher parses an expression, collects dependencies, | ||
|  |    * and fires callback when the expression value changes. | ||
|  |    * This is used for both the $watch() api and directives. | ||
|  |    * @internal | ||
|  |    */ | ||
|  |   var Watcher = /** @class */ (function () { | ||
|  |       function Watcher(vm, expOrFn, cb, options, isRenderWatcher) { | ||
|  |           recordEffectScope(this,  | ||
|  |           // if the active effect scope is manually created (not a component scope),
 | ||
|  |           // prioritize it
 | ||
|  |           activeEffectScope && !activeEffectScope._vm | ||
|  |               ? activeEffectScope | ||
|  |               : vm | ||
|  |                   ? vm._scope | ||
|  |                   : undefined); | ||
|  |           if ((this.vm = vm) && isRenderWatcher) { | ||
|  |               vm._watcher = this; | ||
|  |           } | ||
|  |           // options
 | ||
|  |           if (options) { | ||
|  |               this.deep = !!options.deep; | ||
|  |               this.user = !!options.user; | ||
|  |               this.lazy = !!options.lazy; | ||
|  |               this.sync = !!options.sync; | ||
|  |               this.before = options.before; | ||
|  |               { | ||
|  |                   this.onTrack = options.onTrack; | ||
|  |                   this.onTrigger = options.onTrigger; | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               this.deep = this.user = this.lazy = this.sync = false; | ||
|  |           } | ||
|  |           this.cb = cb; | ||
|  |           this.id = ++uid$1; // uid for batching
 | ||
|  |           this.active = true; | ||
|  |           this.post = false; | ||
|  |           this.dirty = this.lazy; // for lazy watchers
 | ||
|  |           this.deps = []; | ||
|  |           this.newDeps = []; | ||
|  |           this.depIds = new _Set(); | ||
|  |           this.newDepIds = new _Set(); | ||
|  |           this.expression = expOrFn.toString() ; | ||
|  |           // parse expression for getter
 | ||
|  |           if (isFunction(expOrFn)) { | ||
|  |               this.getter = expOrFn; | ||
|  |           } | ||
|  |           else { | ||
|  |               this.getter = parsePath(expOrFn); | ||
|  |               if (!this.getter) { | ||
|  |                   this.getter = noop; | ||
|  |                   warn("Failed watching path: \"".concat(expOrFn, "\" ") + | ||
|  |                           'Watcher only accepts simple dot-delimited paths. ' + | ||
|  |                           'For full control, use a function instead.', vm); | ||
|  |               } | ||
|  |           } | ||
|  |           this.value = this.lazy ? undefined : this.get(); | ||
|  |       } | ||
|  |       /** | ||
|  |        * Evaluate the getter, and re-collect dependencies. | ||
|  |        */ | ||
|  |       Watcher.prototype.get = function () { | ||
|  |           pushTarget(this); | ||
|  |           var value; | ||
|  |           var vm = this.vm; | ||
|  |           try { | ||
|  |               value = this.getter.call(vm, vm); | ||
|  |           } | ||
|  |           catch (e) { | ||
|  |               if (this.user) { | ||
|  |                   handleError(e, vm, "getter for watcher \"".concat(this.expression, "\"")); | ||
|  |               } | ||
|  |               else { | ||
|  |                   throw e; | ||
|  |               } | ||
|  |           } | ||
|  |           finally { | ||
|  |               // "touch" every property so they are all tracked as
 | ||
|  |               // dependencies for deep watching
 | ||
|  |               if (this.deep) { | ||
|  |                   traverse(value); | ||
|  |               } | ||
|  |               popTarget(); | ||
|  |               this.cleanupDeps(); | ||
|  |           } | ||
|  |           return value; | ||
|  |       }; | ||
|  |       /** | ||
|  |        * Add a dependency to this directive. | ||
|  |        */ | ||
|  |       Watcher.prototype.addDep = function (dep) { | ||
|  |           var id = dep.id; | ||
|  |           if (!this.newDepIds.has(id)) { | ||
|  |               this.newDepIds.add(id); | ||
|  |               this.newDeps.push(dep); | ||
|  |               if (!this.depIds.has(id)) { | ||
|  |                   dep.addSub(this); | ||
|  |               } | ||
|  |           } | ||
|  |       }; | ||
|  |       /** | ||
|  |        * Clean up for dependency collection. | ||
|  |        */ | ||
|  |       Watcher.prototype.cleanupDeps = function () { | ||
|  |           var i = this.deps.length; | ||
|  |           while (i--) { | ||
|  |               var dep = this.deps[i]; | ||
|  |               if (!this.newDepIds.has(dep.id)) { | ||
|  |                   dep.removeSub(this); | ||
|  |               } | ||
|  |           } | ||
|  |           var tmp = this.depIds; | ||
|  |           this.depIds = this.newDepIds; | ||
|  |           this.newDepIds = tmp; | ||
|  |           this.newDepIds.clear(); | ||
|  |           tmp = this.deps; | ||
|  |           this.deps = this.newDeps; | ||
|  |           this.newDeps = tmp; | ||
|  |           this.newDeps.length = 0; | ||
|  |       }; | ||
|  |       /** | ||
|  |        * Subscriber interface. | ||
|  |        * Will be called when a dependency changes. | ||
|  |        */ | ||
|  |       Watcher.prototype.update = function () { | ||
|  |           /* istanbul ignore else */ | ||
|  |           if (this.lazy) { | ||
|  |               this.dirty = true; | ||
|  |           } | ||
|  |           else if (this.sync) { | ||
|  |               this.run(); | ||
|  |           } | ||
|  |           else { | ||
|  |               queueWatcher(this); | ||
|  |           } | ||
|  |       }; | ||
|  |       /** | ||
|  |        * Scheduler job interface. | ||
|  |        * Will be called by the scheduler. | ||
|  |        */ | ||
|  |       Watcher.prototype.run = function () { | ||
|  |           if (this.active) { | ||
|  |               var value = this.get(); | ||
|  |               if (value !== this.value || | ||
|  |                   // Deep watchers and watchers on Object/Arrays should fire even
 | ||
|  |                   // when the value is the same, because the value may
 | ||
|  |                   // have mutated.
 | ||
|  |                   isObject(value) || | ||
|  |                   this.deep) { | ||
|  |                   // set new value
 | ||
|  |                   var oldValue = this.value; | ||
|  |                   this.value = value; | ||
|  |                   if (this.user) { | ||
|  |                       var info = "callback for watcher \"".concat(this.expression, "\""); | ||
|  |                       invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info); | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       this.cb.call(this.vm, value, oldValue); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |       }; | ||
|  |       /** | ||
|  |        * Evaluate the value of the watcher. | ||
|  |        * This only gets called for lazy watchers. | ||
|  |        */ | ||
|  |       Watcher.prototype.evaluate = function () { | ||
|  |           this.value = this.get(); | ||
|  |           this.dirty = false; | ||
|  |       }; | ||
|  |       /** | ||
|  |        * Depend on all deps collected by this watcher. | ||
|  |        */ | ||
|  |       Watcher.prototype.depend = function () { | ||
|  |           var i = this.deps.length; | ||
|  |           while (i--) { | ||
|  |               this.deps[i].depend(); | ||
|  |           } | ||
|  |       }; | ||
|  |       /** | ||
|  |        * Remove self from all dependencies' subscriber list. | ||
|  |        */ | ||
|  |       Watcher.prototype.teardown = function () { | ||
|  |           if (this.vm && !this.vm._isBeingDestroyed) { | ||
|  |               remove$2(this.vm._scope.effects, this); | ||
|  |           } | ||
|  |           if (this.active) { | ||
|  |               var i = this.deps.length; | ||
|  |               while (i--) { | ||
|  |                   this.deps[i].removeSub(this); | ||
|  |               } | ||
|  |               this.active = false; | ||
|  |               if (this.onStop) { | ||
|  |                   this.onStop(); | ||
|  |               } | ||
|  |           } | ||
|  |       }; | ||
|  |       return Watcher; | ||
|  |   }()); | ||
|  | 
 | ||
|  |   var mark; | ||
|  |   var measure; | ||
|  |   { | ||
|  |       var perf_1 = inBrowser && window.performance; | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (perf_1 && | ||
|  |           // @ts-ignore
 | ||
|  |           perf_1.mark && | ||
|  |           // @ts-ignore
 | ||
|  |           perf_1.measure && | ||
|  |           // @ts-ignore
 | ||
|  |           perf_1.clearMarks && | ||
|  |           // @ts-ignore
 | ||
|  |           perf_1.clearMeasures) { | ||
|  |           mark = function (tag) { return perf_1.mark(tag); }; | ||
|  |           measure = function (name, startTag, endTag) { | ||
|  |               perf_1.measure(name, startTag, endTag); | ||
|  |               perf_1.clearMarks(startTag); | ||
|  |               perf_1.clearMarks(endTag); | ||
|  |               // perf.clearMeasures(name)
 | ||
|  |           }; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function initEvents(vm) { | ||
|  |       vm._events = Object.create(null); | ||
|  |       vm._hasHookEvent = false; | ||
|  |       // init parent attached events
 | ||
|  |       var listeners = vm.$options._parentListeners; | ||
|  |       if (listeners) { | ||
|  |           updateComponentListeners(vm, listeners); | ||
|  |       } | ||
|  |   } | ||
|  |   var target$1; | ||
|  |   function add$1(event, fn) { | ||
|  |       target$1.$on(event, fn); | ||
|  |   } | ||
|  |   function remove$1(event, fn) { | ||
|  |       target$1.$off(event, fn); | ||
|  |   } | ||
|  |   function createOnceHandler$1(event, fn) { | ||
|  |       var _target = target$1; | ||
|  |       return function onceHandler() { | ||
|  |           var res = fn.apply(null, arguments); | ||
|  |           if (res !== null) { | ||
|  |               _target.$off(event, onceHandler); | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  |   function updateComponentListeners(vm, listeners, oldListeners) { | ||
|  |       target$1 = vm; | ||
|  |       updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm); | ||
|  |       target$1 = undefined; | ||
|  |   } | ||
|  |   function eventsMixin(Vue) { | ||
|  |       var hookRE = /^hook:/; | ||
|  |       Vue.prototype.$on = function (event, fn) { | ||
|  |           var vm = this; | ||
|  |           if (isArray(event)) { | ||
|  |               for (var i = 0, l = event.length; i < l; i++) { | ||
|  |                   vm.$on(event[i], fn); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               (vm._events[event] || (vm._events[event] = [])).push(fn); | ||
|  |               // optimize hook:event cost by using a boolean flag marked at registration
 | ||
|  |               // instead of a hash lookup
 | ||
|  |               if (hookRE.test(event)) { | ||
|  |                   vm._hasHookEvent = true; | ||
|  |               } | ||
|  |           } | ||
|  |           return vm; | ||
|  |       }; | ||
|  |       Vue.prototype.$once = function (event, fn) { | ||
|  |           var vm = this; | ||
|  |           function on() { | ||
|  |               vm.$off(event, on); | ||
|  |               fn.apply(vm, arguments); | ||
|  |           } | ||
|  |           on.fn = fn; | ||
|  |           vm.$on(event, on); | ||
|  |           return vm; | ||
|  |       }; | ||
|  |       Vue.prototype.$off = function (event, fn) { | ||
|  |           var vm = this; | ||
|  |           // all
 | ||
|  |           if (!arguments.length) { | ||
|  |               vm._events = Object.create(null); | ||
|  |               return vm; | ||
|  |           } | ||
|  |           // array of events
 | ||
|  |           if (isArray(event)) { | ||
|  |               for (var i_1 = 0, l = event.length; i_1 < l; i_1++) { | ||
|  |                   vm.$off(event[i_1], fn); | ||
|  |               } | ||
|  |               return vm; | ||
|  |           } | ||
|  |           // specific event
 | ||
|  |           var cbs = vm._events[event]; | ||
|  |           if (!cbs) { | ||
|  |               return vm; | ||
|  |           } | ||
|  |           if (!fn) { | ||
|  |               vm._events[event] = null; | ||
|  |               return vm; | ||
|  |           } | ||
|  |           // specific handler
 | ||
|  |           var cb; | ||
|  |           var i = cbs.length; | ||
|  |           while (i--) { | ||
|  |               cb = cbs[i]; | ||
|  |               if (cb === fn || cb.fn === fn) { | ||
|  |                   cbs.splice(i, 1); | ||
|  |                   break; | ||
|  |               } | ||
|  |           } | ||
|  |           return vm; | ||
|  |       }; | ||
|  |       Vue.prototype.$emit = function (event) { | ||
|  |           var vm = this; | ||
|  |           { | ||
|  |               var lowerCaseEvent = event.toLowerCase(); | ||
|  |               if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) { | ||
|  |                   tip("Event \"".concat(lowerCaseEvent, "\" is emitted in component ") + | ||
|  |                       "".concat(formatComponentName(vm), " but the handler is registered for \"").concat(event, "\". ") + | ||
|  |                       "Note that HTML attributes are case-insensitive and you cannot use " + | ||
|  |                       "v-on to listen to camelCase events when using in-DOM templates. " + | ||
|  |                       "You should probably use \"".concat(hyphenate(event), "\" instead of \"").concat(event, "\".")); | ||
|  |               } | ||
|  |           } | ||
|  |           var cbs = vm._events[event]; | ||
|  |           if (cbs) { | ||
|  |               cbs = cbs.length > 1 ? toArray(cbs) : cbs; | ||
|  |               var args = toArray(arguments, 1); | ||
|  |               var info = "event handler for \"".concat(event, "\""); | ||
|  |               for (var i = 0, l = cbs.length; i < l; i++) { | ||
|  |                   invokeWithErrorHandling(cbs[i], vm, args, vm, info); | ||
|  |               } | ||
|  |           } | ||
|  |           return vm; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   var activeInstance = null; | ||
|  |   var isUpdatingChildComponent = false; | ||
|  |   function setActiveInstance(vm) { | ||
|  |       var prevActiveInstance = activeInstance; | ||
|  |       activeInstance = vm; | ||
|  |       return function () { | ||
|  |           activeInstance = prevActiveInstance; | ||
|  |       }; | ||
|  |   } | ||
|  |   function initLifecycle(vm) { | ||
|  |       var options = vm.$options; | ||
|  |       // locate first non-abstract parent
 | ||
|  |       var parent = options.parent; | ||
|  |       if (parent && !options.abstract) { | ||
|  |           while (parent.$options.abstract && parent.$parent) { | ||
|  |               parent = parent.$parent; | ||
|  |           } | ||
|  |           parent.$children.push(vm); | ||
|  |       } | ||
|  |       vm.$parent = parent; | ||
|  |       vm.$root = parent ? parent.$root : vm; | ||
|  |       vm.$children = []; | ||
|  |       vm.$refs = {}; | ||
|  |       vm._provided = parent ? parent._provided : Object.create(null); | ||
|  |       vm._watcher = null; | ||
|  |       vm._inactive = null; | ||
|  |       vm._directInactive = false; | ||
|  |       vm._isMounted = false; | ||
|  |       vm._isDestroyed = false; | ||
|  |       vm._isBeingDestroyed = false; | ||
|  |   } | ||
|  |   function lifecycleMixin(Vue) { | ||
|  |       Vue.prototype._update = function (vnode, hydrating) { | ||
|  |           var vm = this; | ||
|  |           var prevEl = vm.$el; | ||
|  |           var prevVnode = vm._vnode; | ||
|  |           var restoreActiveInstance = setActiveInstance(vm); | ||
|  |           vm._vnode = vnode; | ||
|  |           // Vue.prototype.__patch__ is injected in entry points
 | ||
|  |           // based on the rendering backend used.
 | ||
|  |           if (!prevVnode) { | ||
|  |               // initial render
 | ||
|  |               vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */); | ||
|  |           } | ||
|  |           else { | ||
|  |               // updates
 | ||
|  |               vm.$el = vm.__patch__(prevVnode, vnode); | ||
|  |           } | ||
|  |           restoreActiveInstance(); | ||
|  |           // update __vue__ reference
 | ||
|  |           if (prevEl) { | ||
|  |               prevEl.__vue__ = null; | ||
|  |           } | ||
|  |           if (vm.$el) { | ||
|  |               vm.$el.__vue__ = vm; | ||
|  |           } | ||
|  |           // if parent is an HOC, update its $el as well
 | ||
|  |           var wrapper = vm; | ||
|  |           while (wrapper && | ||
|  |               wrapper.$vnode && | ||
|  |               wrapper.$parent && | ||
|  |               wrapper.$vnode === wrapper.$parent._vnode) { | ||
|  |               wrapper.$parent.$el = wrapper.$el; | ||
|  |               wrapper = wrapper.$parent; | ||
|  |           } | ||
|  |           // updated hook is called by the scheduler to ensure that children are
 | ||
|  |           // updated in a parent's updated hook.
 | ||
|  |       }; | ||
|  |       Vue.prototype.$forceUpdate = function () { | ||
|  |           var vm = this; | ||
|  |           if (vm._watcher) { | ||
|  |               vm._watcher.update(); | ||
|  |           } | ||
|  |       }; | ||
|  |       Vue.prototype.$destroy = function () { | ||
|  |           var vm = this; | ||
|  |           if (vm._isBeingDestroyed) { | ||
|  |               return; | ||
|  |           } | ||
|  |           callHook$1(vm, 'beforeDestroy'); | ||
|  |           vm._isBeingDestroyed = true; | ||
|  |           // remove self from parent
 | ||
|  |           var parent = vm.$parent; | ||
|  |           if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) { | ||
|  |               remove$2(parent.$children, vm); | ||
|  |           } | ||
|  |           // teardown scope. this includes both the render watcher and other
 | ||
|  |           // watchers created
 | ||
|  |           vm._scope.stop(); | ||
|  |           // remove reference from data ob
 | ||
|  |           // frozen object may not have observer.
 | ||
|  |           if (vm._data.__ob__) { | ||
|  |               vm._data.__ob__.vmCount--; | ||
|  |           } | ||
|  |           // call the last hook...
 | ||
|  |           vm._isDestroyed = true; | ||
|  |           // invoke destroy hooks on current rendered tree
 | ||
|  |           vm.__patch__(vm._vnode, null); | ||
|  |           // fire destroyed hook
 | ||
|  |           callHook$1(vm, 'destroyed'); | ||
|  |           // turn off all instance listeners.
 | ||
|  |           vm.$off(); | ||
|  |           // remove __vue__ reference
 | ||
|  |           if (vm.$el) { | ||
|  |               vm.$el.__vue__ = null; | ||
|  |           } | ||
|  |           // release circular reference (#6759)
 | ||
|  |           if (vm.$vnode) { | ||
|  |               vm.$vnode.parent = null; | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  |   function mountComponent(vm, el, hydrating) { | ||
|  |       vm.$el = el; | ||
|  |       if (!vm.$options.render) { | ||
|  |           // @ts-expect-error invalid type
 | ||
|  |           vm.$options.render = createEmptyVNode; | ||
|  |           { | ||
|  |               /* istanbul ignore if */ | ||
|  |               if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') || | ||
|  |                   vm.$options.el || | ||
|  |                   el) { | ||
|  |                   warn('You are using the runtime-only build of Vue where the template ' + | ||
|  |                       'compiler is not available. Either pre-compile the templates into ' + | ||
|  |                       'render functions, or use the compiler-included build.', vm); | ||
|  |               } | ||
|  |               else { | ||
|  |                   warn('Failed to mount component: template or render function not defined.', vm); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       callHook$1(vm, 'beforeMount'); | ||
|  |       var updateComponent; | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (config.performance && mark) { | ||
|  |           updateComponent = function () { | ||
|  |               var name = vm._name; | ||
|  |               var id = vm._uid; | ||
|  |               var startTag = "vue-perf-start:".concat(id); | ||
|  |               var endTag = "vue-perf-end:".concat(id); | ||
|  |               mark(startTag); | ||
|  |               var vnode = vm._render(); | ||
|  |               mark(endTag); | ||
|  |               measure("vue ".concat(name, " render"), startTag, endTag); | ||
|  |               mark(startTag); | ||
|  |               vm._update(vnode, hydrating); | ||
|  |               mark(endTag); | ||
|  |               measure("vue ".concat(name, " patch"), startTag, endTag); | ||
|  |           }; | ||
|  |       } | ||
|  |       else { | ||
|  |           updateComponent = function () { | ||
|  |               vm._update(vm._render(), hydrating); | ||
|  |           }; | ||
|  |       } | ||
|  |       var watcherOptions = { | ||
|  |           before: function () { | ||
|  |               if (vm._isMounted && !vm._isDestroyed) { | ||
|  |                   callHook$1(vm, 'beforeUpdate'); | ||
|  |               } | ||
|  |           } | ||
|  |       }; | ||
|  |       { | ||
|  |           watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); }; | ||
|  |           watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); }; | ||
|  |       } | ||
|  |       // we set this to vm._watcher inside the watcher's constructor
 | ||
|  |       // since the watcher's initial patch may call $forceUpdate (e.g. inside child
 | ||
|  |       // component's mounted hook), which relies on vm._watcher being already defined
 | ||
|  |       new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */); | ||
|  |       hydrating = false; | ||
|  |       // flush buffer for flush: "pre" watchers queued in setup()
 | ||
|  |       var preWatchers = vm._preWatchers; | ||
|  |       if (preWatchers) { | ||
|  |           for (var i = 0; i < preWatchers.length; i++) { | ||
|  |               preWatchers[i].run(); | ||
|  |           } | ||
|  |       } | ||
|  |       // manually mounted instance, call mounted on self
 | ||
|  |       // mounted is called for render-created child components in its inserted hook
 | ||
|  |       if (vm.$vnode == null) { | ||
|  |           vm._isMounted = true; | ||
|  |           callHook$1(vm, 'mounted'); | ||
|  |       } | ||
|  |       return vm; | ||
|  |   } | ||
|  |   function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) { | ||
|  |       { | ||
|  |           isUpdatingChildComponent = true; | ||
|  |       } | ||
|  |       // determine whether component has slot children
 | ||
|  |       // we need to do this before overwriting $options._renderChildren.
 | ||
|  |       // check if there are dynamic scopedSlots (hand-written or compiled but with
 | ||
|  |       // dynamic slot names). Static scoped slots compiled from template has the
 | ||
|  |       // "$stable" marker.
 | ||
|  |       var newScopedSlots = parentVnode.data.scopedSlots; | ||
|  |       var oldScopedSlots = vm.$scopedSlots; | ||
|  |       var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) || | ||
|  |           (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) || | ||
|  |           (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) || | ||
|  |           (!newScopedSlots && vm.$scopedSlots.$key)); | ||
|  |       // Any static slot children from the parent may have changed during parent's
 | ||
|  |       // update. Dynamic scoped slots may also have changed. In such cases, a forced
 | ||
|  |       // update is necessary to ensure correctness.
 | ||
|  |       var needsForceUpdate = !!(renderChildren || // has new static slots
 | ||
|  |           vm.$options._renderChildren || // has old static slots
 | ||
|  |           hasDynamicScopedSlot); | ||
|  |       var prevVNode = vm.$vnode; | ||
|  |       vm.$options._parentVnode = parentVnode; | ||
|  |       vm.$vnode = parentVnode; // update vm's placeholder node without re-render
 | ||
|  |       if (vm._vnode) { | ||
|  |           // update child tree's parent
 | ||
|  |           vm._vnode.parent = parentVnode; | ||
|  |       } | ||
|  |       vm.$options._renderChildren = renderChildren; | ||
|  |       // update $attrs and $listeners hash
 | ||
|  |       // these are also reactive so they may trigger child update if the child
 | ||
|  |       // used them during render
 | ||
|  |       var attrs = parentVnode.data.attrs || emptyObject; | ||
|  |       if (vm._attrsProxy) { | ||
|  |           // force update if attrs are accessed and has changed since it may be
 | ||
|  |           // passed to a child component.
 | ||
|  |           if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) { | ||
|  |               needsForceUpdate = true; | ||
|  |           } | ||
|  |       } | ||
|  |       vm.$attrs = attrs; | ||
|  |       // update listeners
 | ||
|  |       listeners = listeners || emptyObject; | ||
|  |       var prevListeners = vm.$options._parentListeners; | ||
|  |       if (vm._listenersProxy) { | ||
|  |           syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners'); | ||
|  |       } | ||
|  |       vm.$listeners = vm.$options._parentListeners = listeners; | ||
|  |       updateComponentListeners(vm, listeners, prevListeners); | ||
|  |       // update props
 | ||
|  |       if (propsData && vm.$options.props) { | ||
|  |           toggleObserving(false); | ||
|  |           var props = vm._props; | ||
|  |           var propKeys = vm.$options._propKeys || []; | ||
|  |           for (var i = 0; i < propKeys.length; i++) { | ||
|  |               var key = propKeys[i]; | ||
|  |               var propOptions = vm.$options.props; // wtf flow?
 | ||
|  |               props[key] = validateProp(key, propOptions, propsData, vm); | ||
|  |           } | ||
|  |           toggleObserving(true); | ||
|  |           // keep a copy of raw propsData
 | ||
|  |           vm.$options.propsData = propsData; | ||
|  |       } | ||
|  |       // resolve slots + force update if has children
 | ||
|  |       if (needsForceUpdate) { | ||
|  |           vm.$slots = resolveSlots(renderChildren, parentVnode.context); | ||
|  |           vm.$forceUpdate(); | ||
|  |       } | ||
|  |       { | ||
|  |           isUpdatingChildComponent = false; | ||
|  |       } | ||
|  |   } | ||
|  |   function isInInactiveTree(vm) { | ||
|  |       while (vm && (vm = vm.$parent)) { | ||
|  |           if (vm._inactive) | ||
|  |               return true; | ||
|  |       } | ||
|  |       return false; | ||
|  |   } | ||
|  |   function activateChildComponent(vm, direct) { | ||
|  |       if (direct) { | ||
|  |           vm._directInactive = false; | ||
|  |           if (isInInactiveTree(vm)) { | ||
|  |               return; | ||
|  |           } | ||
|  |       } | ||
|  |       else if (vm._directInactive) { | ||
|  |           return; | ||
|  |       } | ||
|  |       if (vm._inactive || vm._inactive === null) { | ||
|  |           vm._inactive = false; | ||
|  |           for (var i = 0; i < vm.$children.length; i++) { | ||
|  |               activateChildComponent(vm.$children[i]); | ||
|  |           } | ||
|  |           callHook$1(vm, 'activated'); | ||
|  |       } | ||
|  |   } | ||
|  |   function deactivateChildComponent(vm, direct) { | ||
|  |       if (direct) { | ||
|  |           vm._directInactive = true; | ||
|  |           if (isInInactiveTree(vm)) { | ||
|  |               return; | ||
|  |           } | ||
|  |       } | ||
|  |       if (!vm._inactive) { | ||
|  |           vm._inactive = true; | ||
|  |           for (var i = 0; i < vm.$children.length; i++) { | ||
|  |               deactivateChildComponent(vm.$children[i]); | ||
|  |           } | ||
|  |           callHook$1(vm, 'deactivated'); | ||
|  |       } | ||
|  |   } | ||
|  |   function callHook$1(vm, hook, args, setContext) { | ||
|  |       if (setContext === void 0) { setContext = true; } | ||
|  |       // #7573 disable dep collection when invoking lifecycle hooks
 | ||
|  |       pushTarget(); | ||
|  |       var prevInst = currentInstance; | ||
|  |       var prevScope = getCurrentScope(); | ||
|  |       setContext && setCurrentInstance(vm); | ||
|  |       var handlers = vm.$options[hook]; | ||
|  |       var info = "".concat(hook, " hook"); | ||
|  |       if (handlers) { | ||
|  |           for (var i = 0, j = handlers.length; i < j; i++) { | ||
|  |               invokeWithErrorHandling(handlers[i], vm, args || null, vm, info); | ||
|  |           } | ||
|  |       } | ||
|  |       if (vm._hasHookEvent) { | ||
|  |           vm.$emit('hook:' + hook); | ||
|  |       } | ||
|  |       if (setContext) { | ||
|  |           setCurrentInstance(prevInst); | ||
|  |           prevScope && prevScope.on(); | ||
|  |       } | ||
|  |       popTarget(); | ||
|  |   } | ||
|  | 
 | ||
|  |   var MAX_UPDATE_COUNT = 100; | ||
|  |   var queue = []; | ||
|  |   var activatedChildren = []; | ||
|  |   var has = {}; | ||
|  |   var circular = {}; | ||
|  |   var waiting = false; | ||
|  |   var flushing = false; | ||
|  |   var index = 0; | ||
|  |   /** | ||
|  |    * Reset the scheduler's state. | ||
|  |    */ | ||
|  |   function resetSchedulerState() { | ||
|  |       index = queue.length = activatedChildren.length = 0; | ||
|  |       has = {}; | ||
|  |       { | ||
|  |           circular = {}; | ||
|  |       } | ||
|  |       waiting = flushing = false; | ||
|  |   } | ||
|  |   // Async edge case #6566 requires saving the timestamp when event listeners are
 | ||
|  |   // attached. However, calling performance.now() has a perf overhead especially
 | ||
|  |   // if the page has thousands of event listeners. Instead, we take a timestamp
 | ||
|  |   // every time the scheduler flushes and use that for all event listeners
 | ||
|  |   // attached during that flush.
 | ||
|  |   var currentFlushTimestamp = 0; | ||
|  |   // Async edge case fix requires storing an event listener's attach timestamp.
 | ||
|  |   var getNow = Date.now; | ||
|  |   // Determine what event timestamp the browser is using. Annoyingly, the
 | ||
|  |   // timestamp can either be hi-res (relative to page load) or low-res
 | ||
|  |   // (relative to UNIX epoch), so in order to compare time we have to use the
 | ||
|  |   // same timestamp type when saving the flush timestamp.
 | ||
|  |   // All IE versions use low-res event timestamps, and have problematic clock
 | ||
|  |   // implementations (#9632)
 | ||
|  |   if (inBrowser && !isIE) { | ||
|  |       var performance_1 = window.performance; | ||
|  |       if (performance_1 && | ||
|  |           typeof performance_1.now === 'function' && | ||
|  |           getNow() > document.createEvent('Event').timeStamp) { | ||
|  |           // if the event timestamp, although evaluated AFTER the Date.now(), is
 | ||
|  |           // smaller than it, it means the event is using a hi-res timestamp,
 | ||
|  |           // and we need to use the hi-res version for event listener timestamps as
 | ||
|  |           // well.
 | ||
|  |           getNow = function () { return performance_1.now(); }; | ||
|  |       } | ||
|  |   } | ||
|  |   var sortCompareFn = function (a, b) { | ||
|  |       if (a.post) { | ||
|  |           if (!b.post) | ||
|  |               return 1; | ||
|  |       } | ||
|  |       else if (b.post) { | ||
|  |           return -1; | ||
|  |       } | ||
|  |       return a.id - b.id; | ||
|  |   }; | ||
|  |   /** | ||
|  |    * Flush both queues and run the watchers. | ||
|  |    */ | ||
|  |   function flushSchedulerQueue() { | ||
|  |       currentFlushTimestamp = getNow(); | ||
|  |       flushing = true; | ||
|  |       var watcher, id; | ||
|  |       // Sort queue before flush.
 | ||
|  |       // This ensures that:
 | ||
|  |       // 1. Components are updated from parent to child. (because parent is always
 | ||
|  |       //    created before the child)
 | ||
|  |       // 2. A component's user watchers are run before its render watcher (because
 | ||
|  |       //    user watchers are created before the render watcher)
 | ||
|  |       // 3. If a component is destroyed during a parent component's watcher run,
 | ||
|  |       //    its watchers can be skipped.
 | ||
|  |       queue.sort(sortCompareFn); | ||
|  |       // do not cache length because more watchers might be pushed
 | ||
|  |       // as we run existing watchers
 | ||
|  |       for (index = 0; index < queue.length; index++) { | ||
|  |           watcher = queue[index]; | ||
|  |           if (watcher.before) { | ||
|  |               watcher.before(); | ||
|  |           } | ||
|  |           id = watcher.id; | ||
|  |           has[id] = null; | ||
|  |           watcher.run(); | ||
|  |           // in dev build, check and stop circular updates.
 | ||
|  |           if (has[id] != null) { | ||
|  |               circular[id] = (circular[id] || 0) + 1; | ||
|  |               if (circular[id] > MAX_UPDATE_COUNT) { | ||
|  |                   warn('You may have an infinite update loop ' + | ||
|  |                       (watcher.user | ||
|  |                           ? "in watcher with expression \"".concat(watcher.expression, "\"") | ||
|  |                           : "in a component render function."), watcher.vm); | ||
|  |                   break; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       // keep copies of post queues before resetting state
 | ||
|  |       var activatedQueue = activatedChildren.slice(); | ||
|  |       var updatedQueue = queue.slice(); | ||
|  |       resetSchedulerState(); | ||
|  |       // call component updated and activated hooks
 | ||
|  |       callActivatedHooks(activatedQueue); | ||
|  |       callUpdatedHooks(updatedQueue); | ||
|  |       cleanupDeps(); | ||
|  |       // devtool hook
 | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (devtools && config.devtools) { | ||
|  |           devtools.emit('flush'); | ||
|  |       } | ||
|  |   } | ||
|  |   function callUpdatedHooks(queue) { | ||
|  |       var i = queue.length; | ||
|  |       while (i--) { | ||
|  |           var watcher = queue[i]; | ||
|  |           var vm = watcher.vm; | ||
|  |           if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) { | ||
|  |               callHook$1(vm, 'updated'); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Queue a kept-alive component that was activated during patch. | ||
|  |    * The queue will be processed after the entire tree has been patched. | ||
|  |    */ | ||
|  |   function queueActivatedComponent(vm) { | ||
|  |       // setting _inactive to false here so that a render function can
 | ||
|  |       // rely on checking whether it's in an inactive tree (e.g. router-view)
 | ||
|  |       vm._inactive = false; | ||
|  |       activatedChildren.push(vm); | ||
|  |   } | ||
|  |   function callActivatedHooks(queue) { | ||
|  |       for (var i = 0; i < queue.length; i++) { | ||
|  |           queue[i]._inactive = true; | ||
|  |           activateChildComponent(queue[i], true /* true */); | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Push a watcher into the watcher queue. | ||
|  |    * Jobs with duplicate IDs will be skipped unless it's | ||
|  |    * pushed when the queue is being flushed. | ||
|  |    */ | ||
|  |   function queueWatcher(watcher) { | ||
|  |       var id = watcher.id; | ||
|  |       if (has[id] != null) { | ||
|  |           return; | ||
|  |       } | ||
|  |       if (watcher === Dep.target && watcher.noRecurse) { | ||
|  |           return; | ||
|  |       } | ||
|  |       has[id] = true; | ||
|  |       if (!flushing) { | ||
|  |           queue.push(watcher); | ||
|  |       } | ||
|  |       else { | ||
|  |           // if already flushing, splice the watcher based on its id
 | ||
|  |           // if already past its id, it will be run next immediately.
 | ||
|  |           var i = queue.length - 1; | ||
|  |           while (i > index && queue[i].id > watcher.id) { | ||
|  |               i--; | ||
|  |           } | ||
|  |           queue.splice(i + 1, 0, watcher); | ||
|  |       } | ||
|  |       // queue the flush
 | ||
|  |       if (!waiting) { | ||
|  |           waiting = true; | ||
|  |           if (!config.async) { | ||
|  |               flushSchedulerQueue(); | ||
|  |               return; | ||
|  |           } | ||
|  |           nextTick(flushSchedulerQueue); | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function initProvide(vm) { | ||
|  |       var provideOption = vm.$options.provide; | ||
|  |       if (provideOption) { | ||
|  |           var provided = isFunction(provideOption) | ||
|  |               ? provideOption.call(vm) | ||
|  |               : provideOption; | ||
|  |           if (!isObject(provided)) { | ||
|  |               return; | ||
|  |           } | ||
|  |           var source = resolveProvided(vm); | ||
|  |           // IE9 doesn't support Object.getOwnPropertyDescriptors so we have to
 | ||
|  |           // iterate the keys ourselves.
 | ||
|  |           var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided); | ||
|  |           for (var i = 0; i < keys.length; i++) { | ||
|  |               var key = keys[i]; | ||
|  |               Object.defineProperty(source, key, Object.getOwnPropertyDescriptor(provided, key)); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function initInjections(vm) { | ||
|  |       var result = resolveInject(vm.$options.inject, vm); | ||
|  |       if (result) { | ||
|  |           toggleObserving(false); | ||
|  |           Object.keys(result).forEach(function (key) { | ||
|  |               /* istanbul ignore else */ | ||
|  |               { | ||
|  |                   defineReactive(vm, key, result[key], function () { | ||
|  |                       warn("Avoid mutating an injected value directly since the changes will be " + | ||
|  |                           "overwritten whenever the provided component re-renders. " + | ||
|  |                           "injection being mutated: \"".concat(key, "\""), vm); | ||
|  |                   }); | ||
|  |               } | ||
|  |           }); | ||
|  |           toggleObserving(true); | ||
|  |       } | ||
|  |   } | ||
|  |   function resolveInject(inject, vm) { | ||
|  |       if (inject) { | ||
|  |           // inject is :any because flow is not smart enough to figure out cached
 | ||
|  |           var result = Object.create(null); | ||
|  |           var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject); | ||
|  |           for (var i = 0; i < keys.length; i++) { | ||
|  |               var key = keys[i]; | ||
|  |               // #6574 in case the inject object is observed...
 | ||
|  |               if (key === '__ob__') | ||
|  |                   continue; | ||
|  |               var provideKey = inject[key].from; | ||
|  |               if (provideKey in vm._provided) { | ||
|  |                   result[key] = vm._provided[provideKey]; | ||
|  |               } | ||
|  |               else if ('default' in inject[key]) { | ||
|  |                   var provideDefault = inject[key].default; | ||
|  |                   result[key] = isFunction(provideDefault) | ||
|  |                       ? provideDefault.call(vm) | ||
|  |                       : provideDefault; | ||
|  |               } | ||
|  |               else { | ||
|  |                   warn("Injection \"".concat(key, "\" not found"), vm); | ||
|  |               } | ||
|  |           } | ||
|  |           return result; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function FunctionalRenderContext(data, props, children, parent, Ctor) { | ||
|  |       var _this = this; | ||
|  |       var options = Ctor.options; | ||
|  |       // ensure the createElement function in functional components
 | ||
|  |       // gets a unique context - this is necessary for correct named slot check
 | ||
|  |       var contextVm; | ||
|  |       if (hasOwn(parent, '_uid')) { | ||
|  |           contextVm = Object.create(parent); | ||
|  |           contextVm._original = parent; | ||
|  |       } | ||
|  |       else { | ||
|  |           // the context vm passed in is a functional context as well.
 | ||
|  |           // in this case we want to make sure we are able to get a hold to the
 | ||
|  |           // real context instance.
 | ||
|  |           contextVm = parent; | ||
|  |           // @ts-ignore
 | ||
|  |           parent = parent._original; | ||
|  |       } | ||
|  |       var isCompiled = isTrue(options._compiled); | ||
|  |       var needNormalization = !isCompiled; | ||
|  |       this.data = data; | ||
|  |       this.props = props; | ||
|  |       this.children = children; | ||
|  |       this.parent = parent; | ||
|  |       this.listeners = data.on || emptyObject; | ||
|  |       this.injections = resolveInject(options.inject, parent); | ||
|  |       this.slots = function () { | ||
|  |           if (!_this.$slots) { | ||
|  |               normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent))); | ||
|  |           } | ||
|  |           return _this.$slots; | ||
|  |       }; | ||
|  |       Object.defineProperty(this, 'scopedSlots', { | ||
|  |           enumerable: true, | ||
|  |           get: function () { | ||
|  |               return normalizeScopedSlots(parent, data.scopedSlots, this.slots()); | ||
|  |           } | ||
|  |       }); | ||
|  |       // support for compiled functional template
 | ||
|  |       if (isCompiled) { | ||
|  |           // exposing $options for renderStatic()
 | ||
|  |           this.$options = options; | ||
|  |           // pre-resolve slots for renderSlot()
 | ||
|  |           this.$slots = this.slots(); | ||
|  |           this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots); | ||
|  |       } | ||
|  |       if (options._scopeId) { | ||
|  |           this._c = function (a, b, c, d) { | ||
|  |               var vnode = createElement$1(contextVm, a, b, c, d, needNormalization); | ||
|  |               if (vnode && !isArray(vnode)) { | ||
|  |                   vnode.fnScopeId = options._scopeId; | ||
|  |                   vnode.fnContext = parent; | ||
|  |               } | ||
|  |               return vnode; | ||
|  |           }; | ||
|  |       } | ||
|  |       else { | ||
|  |           this._c = function (a, b, c, d) { | ||
|  |               return createElement$1(contextVm, a, b, c, d, needNormalization); | ||
|  |           }; | ||
|  |       } | ||
|  |   } | ||
|  |   installRenderHelpers(FunctionalRenderContext.prototype); | ||
|  |   function createFunctionalComponent(Ctor, propsData, data, contextVm, children) { | ||
|  |       var options = Ctor.options; | ||
|  |       var props = {}; | ||
|  |       var propOptions = options.props; | ||
|  |       if (isDef(propOptions)) { | ||
|  |           for (var key in propOptions) { | ||
|  |               props[key] = validateProp(key, propOptions, propsData || emptyObject); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           if (isDef(data.attrs)) | ||
|  |               mergeProps(props, data.attrs); | ||
|  |           if (isDef(data.props)) | ||
|  |               mergeProps(props, data.props); | ||
|  |       } | ||
|  |       var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor); | ||
|  |       var vnode = options.render.call(null, renderContext._c, renderContext); | ||
|  |       if (vnode instanceof VNode) { | ||
|  |           return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext); | ||
|  |       } | ||
|  |       else if (isArray(vnode)) { | ||
|  |           var vnodes = normalizeChildren(vnode) || []; | ||
|  |           var res = new Array(vnodes.length); | ||
|  |           for (var i = 0; i < vnodes.length; i++) { | ||
|  |               res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext); | ||
|  |           } | ||
|  |           return res; | ||
|  |       } | ||
|  |   } | ||
|  |   function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) { | ||
|  |       // #7817 clone node before setting fnContext, otherwise if the node is reused
 | ||
|  |       // (e.g. it was from a cached normal slot) the fnContext causes named slots
 | ||
|  |       // that should not be matched to match.
 | ||
|  |       var clone = cloneVNode(vnode); | ||
|  |       clone.fnContext = contextVm; | ||
|  |       clone.fnOptions = options; | ||
|  |       { | ||
|  |           (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = | ||
|  |               renderContext; | ||
|  |       } | ||
|  |       if (data.slot) { | ||
|  |           (clone.data || (clone.data = {})).slot = data.slot; | ||
|  |       } | ||
|  |       return clone; | ||
|  |   } | ||
|  |   function mergeProps(to, from) { | ||
|  |       for (var key in from) { | ||
|  |           to[camelize(key)] = from[key]; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function getComponentName(options) { | ||
|  |       return options.name || options.__name || options._componentTag; | ||
|  |   } | ||
|  |   // inline hooks to be invoked on component VNodes during patch
 | ||
|  |   var componentVNodeHooks = { | ||
|  |       init: function (vnode, hydrating) { | ||
|  |           if (vnode.componentInstance && | ||
|  |               !vnode.componentInstance._isDestroyed && | ||
|  |               vnode.data.keepAlive) { | ||
|  |               // kept-alive components, treat as a patch
 | ||
|  |               var mountedNode = vnode; // work around flow
 | ||
|  |               componentVNodeHooks.prepatch(mountedNode, mountedNode); | ||
|  |           } | ||
|  |           else { | ||
|  |               var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance)); | ||
|  |               child.$mount(hydrating ? vnode.elm : undefined, hydrating); | ||
|  |           } | ||
|  |       }, | ||
|  |       prepatch: function (oldVnode, vnode) { | ||
|  |           var options = vnode.componentOptions; | ||
|  |           var child = (vnode.componentInstance = oldVnode.componentInstance); | ||
|  |           updateChildComponent(child, options.propsData, // updated props
 | ||
|  |           options.listeners, // updated listeners
 | ||
|  |           vnode, // new parent vnode
 | ||
|  |           options.children // new children
 | ||
|  |           ); | ||
|  |       }, | ||
|  |       insert: function (vnode) { | ||
|  |           var context = vnode.context, componentInstance = vnode.componentInstance; | ||
|  |           if (!componentInstance._isMounted) { | ||
|  |               componentInstance._isMounted = true; | ||
|  |               callHook$1(componentInstance, 'mounted'); | ||
|  |           } | ||
|  |           if (vnode.data.keepAlive) { | ||
|  |               if (context._isMounted) { | ||
|  |                   // vue-router#1212
 | ||
|  |                   // During updates, a kept-alive component's child components may
 | ||
|  |                   // change, so directly walking the tree here may call activated hooks
 | ||
|  |                   // on incorrect children. Instead we push them into a queue which will
 | ||
|  |                   // be processed after the whole patch process ended.
 | ||
|  |                   queueActivatedComponent(componentInstance); | ||
|  |               } | ||
|  |               else { | ||
|  |                   activateChildComponent(componentInstance, true /* direct */); | ||
|  |               } | ||
|  |           } | ||
|  |       }, | ||
|  |       destroy: function (vnode) { | ||
|  |           var componentInstance = vnode.componentInstance; | ||
|  |           if (!componentInstance._isDestroyed) { | ||
|  |               if (!vnode.data.keepAlive) { | ||
|  |                   componentInstance.$destroy(); | ||
|  |               } | ||
|  |               else { | ||
|  |                   deactivateChildComponent(componentInstance, true /* direct */); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   }; | ||
|  |   var hooksToMerge = Object.keys(componentVNodeHooks); | ||
|  |   function createComponent(Ctor, data, context, children, tag) { | ||
|  |       if (isUndef(Ctor)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var baseCtor = context.$options._base; | ||
|  |       // plain options object: turn it into a constructor
 | ||
|  |       if (isObject(Ctor)) { | ||
|  |           Ctor = baseCtor.extend(Ctor); | ||
|  |       } | ||
|  |       // if at this stage it's not a constructor or an async component factory,
 | ||
|  |       // reject.
 | ||
|  |       if (typeof Ctor !== 'function') { | ||
|  |           { | ||
|  |               warn("Invalid Component definition: ".concat(String(Ctor)), context); | ||
|  |           } | ||
|  |           return; | ||
|  |       } | ||
|  |       // async component
 | ||
|  |       var asyncFactory; | ||
|  |       // @ts-expect-error
 | ||
|  |       if (isUndef(Ctor.cid)) { | ||
|  |           asyncFactory = Ctor; | ||
|  |           Ctor = resolveAsyncComponent(asyncFactory, baseCtor); | ||
|  |           if (Ctor === undefined) { | ||
|  |               // return a placeholder node for async component, which is rendered
 | ||
|  |               // as a comment node but preserves all the raw information for the node.
 | ||
|  |               // the information will be used for async server-rendering and hydration.
 | ||
|  |               return createAsyncPlaceholder(asyncFactory, data, context, children, tag); | ||
|  |           } | ||
|  |       } | ||
|  |       data = data || {}; | ||
|  |       // resolve constructor options in case global mixins are applied after
 | ||
|  |       // component constructor creation
 | ||
|  |       resolveConstructorOptions(Ctor); | ||
|  |       // transform component v-model data into props & events
 | ||
|  |       if (isDef(data.model)) { | ||
|  |           // @ts-expect-error
 | ||
|  |           transformModel(Ctor.options, data); | ||
|  |       } | ||
|  |       // extract props
 | ||
|  |       // @ts-expect-error
 | ||
|  |       var propsData = extractPropsFromVNodeData(data, Ctor, tag); | ||
|  |       // functional component
 | ||
|  |       // @ts-expect-error
 | ||
|  |       if (isTrue(Ctor.options.functional)) { | ||
|  |           return createFunctionalComponent(Ctor, propsData, data, context, children); | ||
|  |       } | ||
|  |       // extract listeners, since these needs to be treated as
 | ||
|  |       // child component listeners instead of DOM listeners
 | ||
|  |       var listeners = data.on; | ||
|  |       // replace with listeners with .native modifier
 | ||
|  |       // so it gets processed during parent component patch.
 | ||
|  |       data.on = data.nativeOn; | ||
|  |       // @ts-expect-error
 | ||
|  |       if (isTrue(Ctor.options.abstract)) { | ||
|  |           // abstract components do not keep anything
 | ||
|  |           // other than props & listeners & slot
 | ||
|  |           // work around flow
 | ||
|  |           var slot = data.slot; | ||
|  |           data = {}; | ||
|  |           if (slot) { | ||
|  |               data.slot = slot; | ||
|  |           } | ||
|  |       } | ||
|  |       // install component management hooks onto the placeholder node
 | ||
|  |       installComponentHooks(data); | ||
|  |       // return a placeholder vnode
 | ||
|  |       // @ts-expect-error
 | ||
|  |       var name = getComponentName(Ctor.options) || tag; | ||
|  |       var vnode = new VNode( | ||
|  |       // @ts-expect-error
 | ||
|  |       "vue-component-".concat(Ctor.cid).concat(name ? "-".concat(name) : ''), data, undefined, undefined, undefined, context,  | ||
|  |       // @ts-expect-error
 | ||
|  |       { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory); | ||
|  |       return vnode; | ||
|  |   } | ||
|  |   function createComponentInstanceForVnode( | ||
|  |   // we know it's MountedComponentVNode but flow doesn't
 | ||
|  |   vnode,  | ||
|  |   // activeInstance in lifecycle state
 | ||
|  |   parent) { | ||
|  |       var options = { | ||
|  |           _isComponent: true, | ||
|  |           _parentVnode: vnode, | ||
|  |           parent: parent | ||
|  |       }; | ||
|  |       // check inline-template render functions
 | ||
|  |       var inlineTemplate = vnode.data.inlineTemplate; | ||
|  |       if (isDef(inlineTemplate)) { | ||
|  |           options.render = inlineTemplate.render; | ||
|  |           options.staticRenderFns = inlineTemplate.staticRenderFns; | ||
|  |       } | ||
|  |       return new vnode.componentOptions.Ctor(options); | ||
|  |   } | ||
|  |   function installComponentHooks(data) { | ||
|  |       var hooks = data.hook || (data.hook = {}); | ||
|  |       for (var i = 0; i < hooksToMerge.length; i++) { | ||
|  |           var key = hooksToMerge[i]; | ||
|  |           var existing = hooks[key]; | ||
|  |           var toMerge = componentVNodeHooks[key]; | ||
|  |           // @ts-expect-error
 | ||
|  |           if (existing !== toMerge && !(existing && existing._merged)) { | ||
|  |               hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge; | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function mergeHook(f1, f2) { | ||
|  |       var merged = function (a, b) { | ||
|  |           // flow complains about extra args which is why we use any
 | ||
|  |           f1(a, b); | ||
|  |           f2(a, b); | ||
|  |       }; | ||
|  |       merged._merged = true; | ||
|  |       return merged; | ||
|  |   } | ||
|  |   // transform component v-model info (value and callback) into
 | ||
|  |   // prop and event handler respectively.
 | ||
|  |   function transformModel(options, data) { | ||
|  |       var prop = (options.model && options.model.prop) || 'value'; | ||
|  |       var event = (options.model && options.model.event) || 'input'; | ||
|  |       (data.attrs || (data.attrs = {}))[prop] = data.model.value; | ||
|  |       var on = data.on || (data.on = {}); | ||
|  |       var existing = on[event]; | ||
|  |       var callback = data.model.callback; | ||
|  |       if (isDef(existing)) { | ||
|  |           if (isArray(existing) | ||
|  |               ? existing.indexOf(callback) === -1 | ||
|  |               : existing !== callback) { | ||
|  |               on[event] = [callback].concat(existing); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           on[event] = callback; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   var warn = noop; | ||
|  |   var tip = noop; | ||
|  |   var generateComponentTrace; // work around flow check
 | ||
|  |   var formatComponentName; | ||
|  |   { | ||
|  |       var hasConsole_1 = typeof console !== 'undefined'; | ||
|  |       var classifyRE_1 = /(?:^|[-_])(\w)/g; | ||
|  |       var classify_1 = function (str) { | ||
|  |           return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, ''); | ||
|  |       }; | ||
|  |       warn = function (msg, vm) { | ||
|  |           if (vm === void 0) { vm = currentInstance; } | ||
|  |           var trace = vm ? generateComponentTrace(vm) : ''; | ||
|  |           if (config.warnHandler) { | ||
|  |               config.warnHandler.call(null, msg, vm, trace); | ||
|  |           } | ||
|  |           else if (hasConsole_1 && !config.silent) { | ||
|  |               console.error("[Vue warn]: ".concat(msg).concat(trace)); | ||
|  |           } | ||
|  |       }; | ||
|  |       tip = function (msg, vm) { | ||
|  |           if (hasConsole_1 && !config.silent) { | ||
|  |               console.warn("[Vue tip]: ".concat(msg) + (vm ? generateComponentTrace(vm) : '')); | ||
|  |           } | ||
|  |       }; | ||
|  |       formatComponentName = function (vm, includeFile) { | ||
|  |           if (vm.$root === vm) { | ||
|  |               return '<Root>'; | ||
|  |           } | ||
|  |           var options = isFunction(vm) && vm.cid != null | ||
|  |               ? vm.options | ||
|  |               : vm._isVue | ||
|  |                   ? vm.$options || vm.constructor.options | ||
|  |                   : vm; | ||
|  |           var name = getComponentName(options); | ||
|  |           var file = options.__file; | ||
|  |           if (!name && file) { | ||
|  |               var match = file.match(/([^/\\]+)\.vue$/); | ||
|  |               name = match && match[1]; | ||
|  |           } | ||
|  |           return ((name ? "<".concat(classify_1(name), ">") : "<Anonymous>") + | ||
|  |               (file && includeFile !== false ? " at ".concat(file) : '')); | ||
|  |       }; | ||
|  |       var repeat_1 = function (str, n) { | ||
|  |           var res = ''; | ||
|  |           while (n) { | ||
|  |               if (n % 2 === 1) | ||
|  |                   res += str; | ||
|  |               if (n > 1) | ||
|  |                   str += str; | ||
|  |               n >>= 1; | ||
|  |           } | ||
|  |           return res; | ||
|  |       }; | ||
|  |       generateComponentTrace = function (vm) { | ||
|  |           if (vm._isVue && vm.$parent) { | ||
|  |               var tree = []; | ||
|  |               var currentRecursiveSequence = 0; | ||
|  |               while (vm) { | ||
|  |                   if (tree.length > 0) { | ||
|  |                       var last = tree[tree.length - 1]; | ||
|  |                       if (last.constructor === vm.constructor) { | ||
|  |                           currentRecursiveSequence++; | ||
|  |                           vm = vm.$parent; | ||
|  |                           continue; | ||
|  |                       } | ||
|  |                       else if (currentRecursiveSequence > 0) { | ||
|  |                           tree[tree.length - 1] = [last, currentRecursiveSequence]; | ||
|  |                           currentRecursiveSequence = 0; | ||
|  |                       } | ||
|  |                   } | ||
|  |                   tree.push(vm); | ||
|  |                   vm = vm.$parent; | ||
|  |               } | ||
|  |               return ('\n\nfound in\n\n' + | ||
|  |                   tree | ||
|  |                       .map(function (vm, i) { | ||
|  |                       return "".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm) | ||
|  |                           ? "".concat(formatComponentName(vm[0]), "... (").concat(vm[1], " recursive calls)") | ||
|  |                           : formatComponentName(vm)); | ||
|  |                   }) | ||
|  |                       .join('\n')); | ||
|  |           } | ||
|  |           else { | ||
|  |               return "\n\n(found in ".concat(formatComponentName(vm), ")"); | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Option overwriting strategies are functions that handle | ||
|  |    * how to merge a parent option value and a child option | ||
|  |    * value into the final value. | ||
|  |    */ | ||
|  |   var strats = config.optionMergeStrategies; | ||
|  |   /** | ||
|  |    * Options with restrictions | ||
|  |    */ | ||
|  |   { | ||
|  |       strats.el = strats.propsData = function (parent, child, vm, key) { | ||
|  |           if (!vm) { | ||
|  |               warn("option \"".concat(key, "\" can only be used during instance ") + | ||
|  |                   'creation with the `new` keyword.'); | ||
|  |           } | ||
|  |           return defaultStrat(parent, child); | ||
|  |       }; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Helper that recursively merges two data objects together. | ||
|  |    */ | ||
|  |   function mergeData(to, from, recursive) { | ||
|  |       if (recursive === void 0) { recursive = true; } | ||
|  |       if (!from) | ||
|  |           return to; | ||
|  |       var key, toVal, fromVal; | ||
|  |       var keys = hasSymbol | ||
|  |           ? Reflect.ownKeys(from) | ||
|  |           : Object.keys(from); | ||
|  |       for (var i = 0; i < keys.length; i++) { | ||
|  |           key = keys[i]; | ||
|  |           // in case the object is already observed...
 | ||
|  |           if (key === '__ob__') | ||
|  |               continue; | ||
|  |           toVal = to[key]; | ||
|  |           fromVal = from[key]; | ||
|  |           if (!recursive || !hasOwn(to, key)) { | ||
|  |               set(to, key, fromVal); | ||
|  |           } | ||
|  |           else if (toVal !== fromVal && | ||
|  |               isPlainObject(toVal) && | ||
|  |               isPlainObject(fromVal)) { | ||
|  |               mergeData(toVal, fromVal); | ||
|  |           } | ||
|  |       } | ||
|  |       return to; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Data | ||
|  |    */ | ||
|  |   function mergeDataOrFn(parentVal, childVal, vm) { | ||
|  |       if (!vm) { | ||
|  |           // in a Vue.extend merge, both should be functions
 | ||
|  |           if (!childVal) { | ||
|  |               return parentVal; | ||
|  |           } | ||
|  |           if (!parentVal) { | ||
|  |               return childVal; | ||
|  |           } | ||
|  |           // when parentVal & childVal are both present,
 | ||
|  |           // we need to return a function that returns the
 | ||
|  |           // merged result of both functions... no need to
 | ||
|  |           // check if parentVal is a function here because
 | ||
|  |           // it has to be a function to pass previous merges.
 | ||
|  |           return function mergedDataFn() { | ||
|  |               return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal); | ||
|  |           }; | ||
|  |       } | ||
|  |       else { | ||
|  |           return function mergedInstanceDataFn() { | ||
|  |               // instance merge
 | ||
|  |               var instanceData = isFunction(childVal) | ||
|  |                   ? childVal.call(vm, vm) | ||
|  |                   : childVal; | ||
|  |               var defaultData = isFunction(parentVal) | ||
|  |                   ? parentVal.call(vm, vm) | ||
|  |                   : parentVal; | ||
|  |               if (instanceData) { | ||
|  |                   return mergeData(instanceData, defaultData); | ||
|  |               } | ||
|  |               else { | ||
|  |                   return defaultData; | ||
|  |               } | ||
|  |           }; | ||
|  |       } | ||
|  |   } | ||
|  |   strats.data = function (parentVal, childVal, vm) { | ||
|  |       if (!vm) { | ||
|  |           if (childVal && typeof childVal !== 'function') { | ||
|  |               warn('The "data" option should be a function ' + | ||
|  |                       'that returns a per-instance value in component ' + | ||
|  |                       'definitions.', vm); | ||
|  |               return parentVal; | ||
|  |           } | ||
|  |           return mergeDataOrFn(parentVal, childVal); | ||
|  |       } | ||
|  |       return mergeDataOrFn(parentVal, childVal, vm); | ||
|  |   }; | ||
|  |   /** | ||
|  |    * Hooks and props are merged as arrays. | ||
|  |    */ | ||
|  |   function mergeLifecycleHook(parentVal, childVal) { | ||
|  |       var res = childVal | ||
|  |           ? parentVal | ||
|  |               ? parentVal.concat(childVal) | ||
|  |               : isArray(childVal) | ||
|  |                   ? childVal | ||
|  |                   : [childVal] | ||
|  |           : parentVal; | ||
|  |       return res ? dedupeHooks(res) : res; | ||
|  |   } | ||
|  |   function dedupeHooks(hooks) { | ||
|  |       var res = []; | ||
|  |       for (var i = 0; i < hooks.length; i++) { | ||
|  |           if (res.indexOf(hooks[i]) === -1) { | ||
|  |               res.push(hooks[i]); | ||
|  |           } | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  |   LIFECYCLE_HOOKS.forEach(function (hook) { | ||
|  |       strats[hook] = mergeLifecycleHook; | ||
|  |   }); | ||
|  |   /** | ||
|  |    * Assets | ||
|  |    * | ||
|  |    * When a vm is present (instance creation), we need to do | ||
|  |    * a three-way merge between constructor options, instance | ||
|  |    * options and parent options. | ||
|  |    */ | ||
|  |   function mergeAssets(parentVal, childVal, vm, key) { | ||
|  |       var res = Object.create(parentVal || null); | ||
|  |       if (childVal) { | ||
|  |           assertObjectType(key, childVal, vm); | ||
|  |           return extend(res, childVal); | ||
|  |       } | ||
|  |       else { | ||
|  |           return res; | ||
|  |       } | ||
|  |   } | ||
|  |   ASSET_TYPES.forEach(function (type) { | ||
|  |       strats[type + 's'] = mergeAssets; | ||
|  |   }); | ||
|  |   /** | ||
|  |    * Watchers. | ||
|  |    * | ||
|  |    * Watchers hashes should not overwrite one | ||
|  |    * another, so we merge them as arrays. | ||
|  |    */ | ||
|  |   strats.watch = function (parentVal, childVal, vm, key) { | ||
|  |       // work around Firefox's Object.prototype.watch...
 | ||
|  |       //@ts-expect-error work around
 | ||
|  |       if (parentVal === nativeWatch) | ||
|  |           parentVal = undefined; | ||
|  |       //@ts-expect-error work around
 | ||
|  |       if (childVal === nativeWatch) | ||
|  |           childVal = undefined; | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (!childVal) | ||
|  |           return Object.create(parentVal || null); | ||
|  |       { | ||
|  |           assertObjectType(key, childVal, vm); | ||
|  |       } | ||
|  |       if (!parentVal) | ||
|  |           return childVal; | ||
|  |       var ret = {}; | ||
|  |       extend(ret, parentVal); | ||
|  |       for (var key_1 in childVal) { | ||
|  |           var parent_1 = ret[key_1]; | ||
|  |           var child = childVal[key_1]; | ||
|  |           if (parent_1 && !isArray(parent_1)) { | ||
|  |               parent_1 = [parent_1]; | ||
|  |           } | ||
|  |           ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child]; | ||
|  |       } | ||
|  |       return ret; | ||
|  |   }; | ||
|  |   /** | ||
|  |    * Other object hashes. | ||
|  |    */ | ||
|  |   strats.props = | ||
|  |       strats.methods = | ||
|  |           strats.inject = | ||
|  |               strats.computed = | ||
|  |                   function (parentVal, childVal, vm, key) { | ||
|  |                       if (childVal && true) { | ||
|  |                           assertObjectType(key, childVal, vm); | ||
|  |                       } | ||
|  |                       if (!parentVal) | ||
|  |                           return childVal; | ||
|  |                       var ret = Object.create(null); | ||
|  |                       extend(ret, parentVal); | ||
|  |                       if (childVal) | ||
|  |                           extend(ret, childVal); | ||
|  |                       return ret; | ||
|  |                   }; | ||
|  |   strats.provide = function (parentVal, childVal) { | ||
|  |       if (!parentVal) | ||
|  |           return childVal; | ||
|  |       return function () { | ||
|  |           var ret = Object.create(null); | ||
|  |           mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal); | ||
|  |           if (childVal) { | ||
|  |               mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive
 | ||
|  |               ); | ||
|  |           } | ||
|  |           return ret; | ||
|  |       }; | ||
|  |   }; | ||
|  |   /** | ||
|  |    * Default strategy. | ||
|  |    */ | ||
|  |   var defaultStrat = function (parentVal, childVal) { | ||
|  |       return childVal === undefined ? parentVal : childVal; | ||
|  |   }; | ||
|  |   /** | ||
|  |    * Validate component names | ||
|  |    */ | ||
|  |   function checkComponents(options) { | ||
|  |       for (var key in options.components) { | ||
|  |           validateComponentName(key); | ||
|  |       } | ||
|  |   } | ||
|  |   function validateComponentName(name) { | ||
|  |       if (!new RegExp("^[a-zA-Z][\\-\\.0-9_".concat(unicodeRegExp.source, "]*$")).test(name)) { | ||
|  |           warn('Invalid component name: "' + | ||
|  |               name + | ||
|  |               '". Component names ' + | ||
|  |               'should conform to valid custom element name in html5 specification.'); | ||
|  |       } | ||
|  |       if (isBuiltInTag(name) || config.isReservedTag(name)) { | ||
|  |           warn('Do not use built-in or reserved HTML elements as component ' + | ||
|  |               'id: ' + | ||
|  |               name); | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Ensure all props option syntax are normalized into the | ||
|  |    * Object-based format. | ||
|  |    */ | ||
|  |   function normalizeProps(options, vm) { | ||
|  |       var props = options.props; | ||
|  |       if (!props) | ||
|  |           return; | ||
|  |       var res = {}; | ||
|  |       var i, val, name; | ||
|  |       if (isArray(props)) { | ||
|  |           i = props.length; | ||
|  |           while (i--) { | ||
|  |               val = props[i]; | ||
|  |               if (typeof val === 'string') { | ||
|  |                   name = camelize(val); | ||
|  |                   res[name] = { type: null }; | ||
|  |               } | ||
|  |               else { | ||
|  |                   warn('props must be strings when using array syntax.'); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       else if (isPlainObject(props)) { | ||
|  |           for (var key in props) { | ||
|  |               val = props[key]; | ||
|  |               name = camelize(key); | ||
|  |               res[name] = isPlainObject(val) ? val : { type: val }; | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           warn("Invalid value for option \"props\": expected an Array or an Object, " + | ||
|  |               "but got ".concat(toRawType(props), "."), vm); | ||
|  |       } | ||
|  |       options.props = res; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Normalize all injections into Object-based format | ||
|  |    */ | ||
|  |   function normalizeInject(options, vm) { | ||
|  |       var inject = options.inject; | ||
|  |       if (!inject) | ||
|  |           return; | ||
|  |       var normalized = (options.inject = {}); | ||
|  |       if (isArray(inject)) { | ||
|  |           for (var i = 0; i < inject.length; i++) { | ||
|  |               normalized[inject[i]] = { from: inject[i] }; | ||
|  |           } | ||
|  |       } | ||
|  |       else if (isPlainObject(inject)) { | ||
|  |           for (var key in inject) { | ||
|  |               var val = inject[key]; | ||
|  |               normalized[key] = isPlainObject(val) | ||
|  |                   ? extend({ from: key }, val) | ||
|  |                   : { from: val }; | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           warn("Invalid value for option \"inject\": expected an Array or an Object, " + | ||
|  |               "but got ".concat(toRawType(inject), "."), vm); | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Normalize raw function directives into object format. | ||
|  |    */ | ||
|  |   function normalizeDirectives$1(options) { | ||
|  |       var dirs = options.directives; | ||
|  |       if (dirs) { | ||
|  |           for (var key in dirs) { | ||
|  |               var def = dirs[key]; | ||
|  |               if (isFunction(def)) { | ||
|  |                   dirs[key] = { bind: def, update: def }; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function assertObjectType(name, value, vm) { | ||
|  |       if (!isPlainObject(value)) { | ||
|  |           warn("Invalid value for option \"".concat(name, "\": expected an Object, ") + | ||
|  |               "but got ".concat(toRawType(value), "."), vm); | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Merge two option objects into a new one. | ||
|  |    * Core utility used in both instantiation and inheritance. | ||
|  |    */ | ||
|  |   function mergeOptions(parent, child, vm) { | ||
|  |       { | ||
|  |           checkComponents(child); | ||
|  |       } | ||
|  |       if (isFunction(child)) { | ||
|  |           // @ts-expect-error
 | ||
|  |           child = child.options; | ||
|  |       } | ||
|  |       normalizeProps(child, vm); | ||
|  |       normalizeInject(child, vm); | ||
|  |       normalizeDirectives$1(child); | ||
|  |       // Apply extends and mixins on the child options,
 | ||
|  |       // but only if it is a raw options object that isn't
 | ||
|  |       // the result of another mergeOptions call.
 | ||
|  |       // Only merged options has the _base property.
 | ||
|  |       if (!child._base) { | ||
|  |           if (child.extends) { | ||
|  |               parent = mergeOptions(parent, child.extends, vm); | ||
|  |           } | ||
|  |           if (child.mixins) { | ||
|  |               for (var i = 0, l = child.mixins.length; i < l; i++) { | ||
|  |                   parent = mergeOptions(parent, child.mixins[i], vm); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       var options = {}; | ||
|  |       var key; | ||
|  |       for (key in parent) { | ||
|  |           mergeField(key); | ||
|  |       } | ||
|  |       for (key in child) { | ||
|  |           if (!hasOwn(parent, key)) { | ||
|  |               mergeField(key); | ||
|  |           } | ||
|  |       } | ||
|  |       function mergeField(key) { | ||
|  |           var strat = strats[key] || defaultStrat; | ||
|  |           options[key] = strat(parent[key], child[key], vm, key); | ||
|  |       } | ||
|  |       return options; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Resolve an asset. | ||
|  |    * This function is used because child instances need access | ||
|  |    * to assets defined in its ancestor chain. | ||
|  |    */ | ||
|  |   function resolveAsset(options, type, id, warnMissing) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (typeof id !== 'string') { | ||
|  |           return; | ||
|  |       } | ||
|  |       var assets = options[type]; | ||
|  |       // check local registration variations first
 | ||
|  |       if (hasOwn(assets, id)) | ||
|  |           return assets[id]; | ||
|  |       var camelizedId = camelize(id); | ||
|  |       if (hasOwn(assets, camelizedId)) | ||
|  |           return assets[camelizedId]; | ||
|  |       var PascalCaseId = capitalize(camelizedId); | ||
|  |       if (hasOwn(assets, PascalCaseId)) | ||
|  |           return assets[PascalCaseId]; | ||
|  |       // fallback to prototype chain
 | ||
|  |       var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; | ||
|  |       if (warnMissing && !res) { | ||
|  |           warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id); | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  | 
 | ||
|  |   function validateProp(key, propOptions, propsData, vm) { | ||
|  |       var prop = propOptions[key]; | ||
|  |       var absent = !hasOwn(propsData, key); | ||
|  |       var value = propsData[key]; | ||
|  |       // boolean casting
 | ||
|  |       var booleanIndex = getTypeIndex(Boolean, prop.type); | ||
|  |       if (booleanIndex > -1) { | ||
|  |           if (absent && !hasOwn(prop, 'default')) { | ||
|  |               value = false; | ||
|  |           } | ||
|  |           else if (value === '' || value === hyphenate(key)) { | ||
|  |               // only cast empty string / same name to boolean if
 | ||
|  |               // boolean has higher priority
 | ||
|  |               var stringIndex = getTypeIndex(String, prop.type); | ||
|  |               if (stringIndex < 0 || booleanIndex < stringIndex) { | ||
|  |                   value = true; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       // check default value
 | ||
|  |       if (value === undefined) { | ||
|  |           value = getPropDefaultValue(vm, prop, key); | ||
|  |           // since the default value is a fresh copy,
 | ||
|  |           // make sure to observe it.
 | ||
|  |           var prevShouldObserve = shouldObserve; | ||
|  |           toggleObserving(true); | ||
|  |           observe(value); | ||
|  |           toggleObserving(prevShouldObserve); | ||
|  |       } | ||
|  |       { | ||
|  |           assertProp(prop, key, value, vm, absent); | ||
|  |       } | ||
|  |       return value; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Get the default value of a prop. | ||
|  |    */ | ||
|  |   function getPropDefaultValue(vm, prop, key) { | ||
|  |       // no default, return undefined
 | ||
|  |       if (!hasOwn(prop, 'default')) { | ||
|  |           return undefined; | ||
|  |       } | ||
|  |       var def = prop.default; | ||
|  |       // warn against non-factory defaults for Object & Array
 | ||
|  |       if (isObject(def)) { | ||
|  |           warn('Invalid default value for prop "' + | ||
|  |               key + | ||
|  |               '": ' + | ||
|  |               'Props with type Object/Array must use a factory function ' + | ||
|  |               'to return the default value.', vm); | ||
|  |       } | ||
|  |       // the raw prop value was also undefined from previous render,
 | ||
|  |       // return previous default value to avoid unnecessary watcher trigger
 | ||
|  |       if (vm && | ||
|  |           vm.$options.propsData && | ||
|  |           vm.$options.propsData[key] === undefined && | ||
|  |           vm._props[key] !== undefined) { | ||
|  |           return vm._props[key]; | ||
|  |       } | ||
|  |       // call factory function for non-Function types
 | ||
|  |       // a value is Function if its prototype is function even across different execution context
 | ||
|  |       return isFunction(def) && getType(prop.type) !== 'Function' | ||
|  |           ? def.call(vm) | ||
|  |           : def; | ||
|  |   } | ||
|  |   /** | ||
|  |    * Assert whether a prop is valid. | ||
|  |    */ | ||
|  |   function assertProp(prop, name, value, vm, absent) { | ||
|  |       if (prop.required && absent) { | ||
|  |           warn('Missing required prop: "' + name + '"', vm); | ||
|  |           return; | ||
|  |       } | ||
|  |       if (value == null && !prop.required) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var type = prop.type; | ||
|  |       var valid = !type || type === true; | ||
|  |       var expectedTypes = []; | ||
|  |       if (type) { | ||
|  |           if (!isArray(type)) { | ||
|  |               type = [type]; | ||
|  |           } | ||
|  |           for (var i = 0; i < type.length && !valid; i++) { | ||
|  |               var assertedType = assertType(value, type[i], vm); | ||
|  |               expectedTypes.push(assertedType.expectedType || ''); | ||
|  |               valid = assertedType.valid; | ||
|  |           } | ||
|  |       } | ||
|  |       var haveExpectedTypes = expectedTypes.some(function (t) { return t; }); | ||
|  |       if (!valid && haveExpectedTypes) { | ||
|  |           warn(getInvalidTypeMessage(name, value, expectedTypes), vm); | ||
|  |           return; | ||
|  |       } | ||
|  |       var validator = prop.validator; | ||
|  |       if (validator) { | ||
|  |           if (!validator(value)) { | ||
|  |               warn('Invalid prop: custom validator check failed for prop "' + name + '".', vm); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/; | ||
|  |   function assertType(value, type, vm) { | ||
|  |       var valid; | ||
|  |       var expectedType = getType(type); | ||
|  |       if (simpleCheckRE.test(expectedType)) { | ||
|  |           var t = typeof value; | ||
|  |           valid = t === expectedType.toLowerCase(); | ||
|  |           // for primitive wrapper objects
 | ||
|  |           if (!valid && t === 'object') { | ||
|  |               valid = value instanceof type; | ||
|  |           } | ||
|  |       } | ||
|  |       else if (expectedType === 'Object') { | ||
|  |           valid = isPlainObject(value); | ||
|  |       } | ||
|  |       else if (expectedType === 'Array') { | ||
|  |           valid = isArray(value); | ||
|  |       } | ||
|  |       else { | ||
|  |           try { | ||
|  |               valid = value instanceof type; | ||
|  |           } | ||
|  |           catch (e) { | ||
|  |               warn('Invalid prop type: "' + String(type) + '" is not a constructor', vm); | ||
|  |               valid = false; | ||
|  |           } | ||
|  |       } | ||
|  |       return { | ||
|  |           valid: valid, | ||
|  |           expectedType: expectedType | ||
|  |       }; | ||
|  |   } | ||
|  |   var functionTypeCheckRE = /^\s*function (\w+)/; | ||
|  |   /** | ||
|  |    * Use function string name to check built-in types, | ||
|  |    * because a simple equality check will fail when running | ||
|  |    * across different vms / iframes. | ||
|  |    */ | ||
|  |   function getType(fn) { | ||
|  |       var match = fn && fn.toString().match(functionTypeCheckRE); | ||
|  |       return match ? match[1] : ''; | ||
|  |   } | ||
|  |   function isSameType(a, b) { | ||
|  |       return getType(a) === getType(b); | ||
|  |   } | ||
|  |   function getTypeIndex(type, expectedTypes) { | ||
|  |       if (!isArray(expectedTypes)) { | ||
|  |           return isSameType(expectedTypes, type) ? 0 : -1; | ||
|  |       } | ||
|  |       for (var i = 0, len = expectedTypes.length; i < len; i++) { | ||
|  |           if (isSameType(expectedTypes[i], type)) { | ||
|  |               return i; | ||
|  |           } | ||
|  |       } | ||
|  |       return -1; | ||
|  |   } | ||
|  |   function getInvalidTypeMessage(name, value, expectedTypes) { | ||
|  |       var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") + | ||
|  |           " Expected ".concat(expectedTypes.map(capitalize).join(', ')); | ||
|  |       var expectedType = expectedTypes[0]; | ||
|  |       var receivedType = toRawType(value); | ||
|  |       // check if we need to specify expected value
 | ||
|  |       if (expectedTypes.length === 1 && | ||
|  |           isExplicable(expectedType) && | ||
|  |           isExplicable(typeof value) && | ||
|  |           !isBoolean(expectedType, receivedType)) { | ||
|  |           message += " with value ".concat(styleValue(value, expectedType)); | ||
|  |       } | ||
|  |       message += ", got ".concat(receivedType, " "); | ||
|  |       // check if we need to specify received value
 | ||
|  |       if (isExplicable(receivedType)) { | ||
|  |           message += "with value ".concat(styleValue(value, receivedType), "."); | ||
|  |       } | ||
|  |       return message; | ||
|  |   } | ||
|  |   function styleValue(value, type) { | ||
|  |       if (type === 'String') { | ||
|  |           return "\"".concat(value, "\""); | ||
|  |       } | ||
|  |       else if (type === 'Number') { | ||
|  |           return "".concat(Number(value)); | ||
|  |       } | ||
|  |       else { | ||
|  |           return "".concat(value); | ||
|  |       } | ||
|  |   } | ||
|  |   var EXPLICABLE_TYPES = ['string', 'number', 'boolean']; | ||
|  |   function isExplicable(value) { | ||
|  |       return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; }); | ||
|  |   } | ||
|  |   function isBoolean() { | ||
|  |       var args = []; | ||
|  |       for (var _i = 0; _i < arguments.length; _i++) { | ||
|  |           args[_i] = arguments[_i]; | ||
|  |       } | ||
|  |       return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; }); | ||
|  |   } | ||
|  | 
 | ||
|  |   /* not type checking this file because flow doesn't play well with Proxy */ | ||
|  |   var initProxy; | ||
|  |   { | ||
|  |       var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + | ||
|  |           'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + | ||
|  |           'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' + | ||
|  |           'require' // for Webpack/Browserify
 | ||
|  |       ); | ||
|  |       var warnNonPresent_1 = function (target, key) { | ||
|  |           warn("Property or method \"".concat(key, "\" is not defined on the instance but ") + | ||
|  |               'referenced during render. Make sure that this property is reactive, ' + | ||
|  |               'either in the data option, or for class-based components, by ' + | ||
|  |               'initializing the property. ' + | ||
|  |               'See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target); | ||
|  |       }; | ||
|  |       var warnReservedPrefix_1 = function (target, key) { | ||
|  |           warn("Property \"".concat(key, "\" must be accessed with \"$data.").concat(key, "\" because ") + | ||
|  |               'properties starting with "$" or "_" are not proxied in the Vue instance to ' + | ||
|  |               'prevent conflicts with Vue internals. ' + | ||
|  |               'See: https://v2.vuejs.org/v2/api/#data', target); | ||
|  |       }; | ||
|  |       var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy); | ||
|  |       if (hasProxy_1) { | ||
|  |           var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact'); | ||
|  |           config.keyCodes = new Proxy(config.keyCodes, { | ||
|  |               set: function (target, key, value) { | ||
|  |                   if (isBuiltInModifier_1(key)) { | ||
|  |                       warn("Avoid overwriting built-in modifier in config.keyCodes: .".concat(key)); | ||
|  |                       return false; | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       target[key] = value; | ||
|  |                       return true; | ||
|  |                   } | ||
|  |               } | ||
|  |           }); | ||
|  |       } | ||
|  |       var hasHandler_1 = { | ||
|  |           has: function (target, key) { | ||
|  |               var has = key in target; | ||
|  |               var isAllowed = allowedGlobals_1(key) || | ||
|  |                   (typeof key === 'string' && | ||
|  |                       key.charAt(0) === '_' && | ||
|  |                       !(key in target.$data)); | ||
|  |               if (!has && !isAllowed) { | ||
|  |                   if (key in target.$data) | ||
|  |                       warnReservedPrefix_1(target, key); | ||
|  |                   else | ||
|  |                       warnNonPresent_1(target, key); | ||
|  |               } | ||
|  |               return has || !isAllowed; | ||
|  |           } | ||
|  |       }; | ||
|  |       var getHandler_1 = { | ||
|  |           get: function (target, key) { | ||
|  |               if (typeof key === 'string' && !(key in target)) { | ||
|  |                   if (key in target.$data) | ||
|  |                       warnReservedPrefix_1(target, key); | ||
|  |                   else | ||
|  |                       warnNonPresent_1(target, key); | ||
|  |               } | ||
|  |               return target[key]; | ||
|  |           } | ||
|  |       }; | ||
|  |       initProxy = function initProxy(vm) { | ||
|  |           if (hasProxy_1) { | ||
|  |               // determine which proxy handler to use
 | ||
|  |               var options = vm.$options; | ||
|  |               var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1; | ||
|  |               vm._renderProxy = new Proxy(vm, handlers); | ||
|  |           } | ||
|  |           else { | ||
|  |               vm._renderProxy = vm; | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   var sharedPropertyDefinition = { | ||
|  |       enumerable: true, | ||
|  |       configurable: true, | ||
|  |       get: noop, | ||
|  |       set: noop | ||
|  |   }; | ||
|  |   function proxy(target, sourceKey, key) { | ||
|  |       sharedPropertyDefinition.get = function proxyGetter() { | ||
|  |           return this[sourceKey][key]; | ||
|  |       }; | ||
|  |       sharedPropertyDefinition.set = function proxySetter(val) { | ||
|  |           this[sourceKey][key] = val; | ||
|  |       }; | ||
|  |       Object.defineProperty(target, key, sharedPropertyDefinition); | ||
|  |   } | ||
|  |   function initState(vm) { | ||
|  |       var opts = vm.$options; | ||
|  |       if (opts.props) | ||
|  |           initProps$1(vm, opts.props); | ||
|  |       // Composition API
 | ||
|  |       initSetup(vm); | ||
|  |       if (opts.methods) | ||
|  |           initMethods(vm, opts.methods); | ||
|  |       if (opts.data) { | ||
|  |           initData(vm); | ||
|  |       } | ||
|  |       else { | ||
|  |           var ob = observe((vm._data = {})); | ||
|  |           ob && ob.vmCount++; | ||
|  |       } | ||
|  |       if (opts.computed) | ||
|  |           initComputed$1(vm, opts.computed); | ||
|  |       if (opts.watch && opts.watch !== nativeWatch) { | ||
|  |           initWatch(vm, opts.watch); | ||
|  |       } | ||
|  |   } | ||
|  |   function initProps$1(vm, propsOptions) { | ||
|  |       var propsData = vm.$options.propsData || {}; | ||
|  |       var props = (vm._props = shallowReactive({})); | ||
|  |       // cache prop keys so that future props updates can iterate using Array
 | ||
|  |       // instead of dynamic object key enumeration.
 | ||
|  |       var keys = (vm.$options._propKeys = []); | ||
|  |       var isRoot = !vm.$parent; | ||
|  |       // root instance props should be converted
 | ||
|  |       if (!isRoot) { | ||
|  |           toggleObserving(false); | ||
|  |       } | ||
|  |       var _loop_1 = function (key) { | ||
|  |           keys.push(key); | ||
|  |           var value = validateProp(key, propsOptions, propsData, vm); | ||
|  |           /* istanbul ignore else */ | ||
|  |           { | ||
|  |               var hyphenatedKey = hyphenate(key); | ||
|  |               if (isReservedAttribute(hyphenatedKey) || | ||
|  |                   config.isReservedAttr(hyphenatedKey)) { | ||
|  |                   warn("\"".concat(hyphenatedKey, "\" is a reserved attribute and cannot be used as component prop."), vm); | ||
|  |               } | ||
|  |               defineReactive(props, key, value, function () { | ||
|  |                   if (!isRoot && !isUpdatingChildComponent) { | ||
|  |                       warn("Avoid mutating a prop directly since the value will be " + | ||
|  |                           "overwritten whenever the parent component re-renders. " + | ||
|  |                           "Instead, use a data or computed property based on the prop's " + | ||
|  |                           "value. Prop being mutated: \"".concat(key, "\""), vm); | ||
|  |                   } | ||
|  |               }, true /* shallow */); | ||
|  |           } | ||
|  |           // static props are already proxied on the component's prototype
 | ||
|  |           // during Vue.extend(). We only need to proxy props defined at
 | ||
|  |           // instantiation here.
 | ||
|  |           if (!(key in vm)) { | ||
|  |               proxy(vm, "_props", key); | ||
|  |           } | ||
|  |       }; | ||
|  |       for (var key in propsOptions) { | ||
|  |           _loop_1(key); | ||
|  |       } | ||
|  |       toggleObserving(true); | ||
|  |   } | ||
|  |   function initData(vm) { | ||
|  |       var data = vm.$options.data; | ||
|  |       data = vm._data = isFunction(data) ? getData(data, vm) : data || {}; | ||
|  |       if (!isPlainObject(data)) { | ||
|  |           data = {}; | ||
|  |           warn('data functions should return an object:\n' + | ||
|  |                   'https://v2.vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm); | ||
|  |       } | ||
|  |       // proxy data on instance
 | ||
|  |       var keys = Object.keys(data); | ||
|  |       var props = vm.$options.props; | ||
|  |       var methods = vm.$options.methods; | ||
|  |       var i = keys.length; | ||
|  |       while (i--) { | ||
|  |           var key = keys[i]; | ||
|  |           { | ||
|  |               if (methods && hasOwn(methods, key)) { | ||
|  |                   warn("Method \"".concat(key, "\" has already been defined as a data property."), vm); | ||
|  |               } | ||
|  |           } | ||
|  |           if (props && hasOwn(props, key)) { | ||
|  |               warn("The data property \"".concat(key, "\" is already declared as a prop. ") + | ||
|  |                       "Use prop default value instead.", vm); | ||
|  |           } | ||
|  |           else if (!isReserved(key)) { | ||
|  |               proxy(vm, "_data", key); | ||
|  |           } | ||
|  |       } | ||
|  |       // observe data
 | ||
|  |       var ob = observe(data); | ||
|  |       ob && ob.vmCount++; | ||
|  |   } | ||
|  |   function getData(data, vm) { | ||
|  |       // #7573 disable dep collection when invoking data getters
 | ||
|  |       pushTarget(); | ||
|  |       try { | ||
|  |           return data.call(vm, vm); | ||
|  |       } | ||
|  |       catch (e) { | ||
|  |           handleError(e, vm, "data()"); | ||
|  |           return {}; | ||
|  |       } | ||
|  |       finally { | ||
|  |           popTarget(); | ||
|  |       } | ||
|  |   } | ||
|  |   var computedWatcherOptions = { lazy: true }; | ||
|  |   function initComputed$1(vm, computed) { | ||
|  |       // $flow-disable-line
 | ||
|  |       var watchers = (vm._computedWatchers = Object.create(null)); | ||
|  |       // computed properties are just getters during SSR
 | ||
|  |       var isSSR = isServerRendering(); | ||
|  |       for (var key in computed) { | ||
|  |           var userDef = computed[key]; | ||
|  |           var getter = isFunction(userDef) ? userDef : userDef.get; | ||
|  |           if (getter == null) { | ||
|  |               warn("Getter is missing for computed property \"".concat(key, "\"."), vm); | ||
|  |           } | ||
|  |           if (!isSSR) { | ||
|  |               // create internal watcher for the computed property.
 | ||
|  |               watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions); | ||
|  |           } | ||
|  |           // component-defined computed properties are already defined on the
 | ||
|  |           // component prototype. We only need to define computed properties defined
 | ||
|  |           // at instantiation here.
 | ||
|  |           if (!(key in vm)) { | ||
|  |               defineComputed(vm, key, userDef); | ||
|  |           } | ||
|  |           else { | ||
|  |               if (key in vm.$data) { | ||
|  |                   warn("The computed property \"".concat(key, "\" is already defined in data."), vm); | ||
|  |               } | ||
|  |               else if (vm.$options.props && key in vm.$options.props) { | ||
|  |                   warn("The computed property \"".concat(key, "\" is already defined as a prop."), vm); | ||
|  |               } | ||
|  |               else if (vm.$options.methods && key in vm.$options.methods) { | ||
|  |                   warn("The computed property \"".concat(key, "\" is already defined as a method."), vm); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function defineComputed(target, key, userDef) { | ||
|  |       var shouldCache = !isServerRendering(); | ||
|  |       if (isFunction(userDef)) { | ||
|  |           sharedPropertyDefinition.get = shouldCache | ||
|  |               ? createComputedGetter(key) | ||
|  |               : createGetterInvoker(userDef); | ||
|  |           sharedPropertyDefinition.set = noop; | ||
|  |       } | ||
|  |       else { | ||
|  |           sharedPropertyDefinition.get = userDef.get | ||
|  |               ? shouldCache && userDef.cache !== false | ||
|  |                   ? createComputedGetter(key) | ||
|  |                   : createGetterInvoker(userDef.get) | ||
|  |               : noop; | ||
|  |           sharedPropertyDefinition.set = userDef.set || noop; | ||
|  |       } | ||
|  |       if (sharedPropertyDefinition.set === noop) { | ||
|  |           sharedPropertyDefinition.set = function () { | ||
|  |               warn("Computed property \"".concat(key, "\" was assigned to but it has no setter."), this); | ||
|  |           }; | ||
|  |       } | ||
|  |       Object.defineProperty(target, key, sharedPropertyDefinition); | ||
|  |   } | ||
|  |   function createComputedGetter(key) { | ||
|  |       return function computedGetter() { | ||
|  |           var watcher = this._computedWatchers && this._computedWatchers[key]; | ||
|  |           if (watcher) { | ||
|  |               if (watcher.dirty) { | ||
|  |                   watcher.evaluate(); | ||
|  |               } | ||
|  |               if (Dep.target) { | ||
|  |                   if (Dep.target.onTrack) { | ||
|  |                       Dep.target.onTrack({ | ||
|  |                           effect: Dep.target, | ||
|  |                           target: this, | ||
|  |                           type: "get" /* TrackOpTypes.GET */, | ||
|  |                           key: key | ||
|  |                       }); | ||
|  |                   } | ||
|  |                   watcher.depend(); | ||
|  |               } | ||
|  |               return watcher.value; | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  |   function createGetterInvoker(fn) { | ||
|  |       return function computedGetter() { | ||
|  |           return fn.call(this, this); | ||
|  |       }; | ||
|  |   } | ||
|  |   function initMethods(vm, methods) { | ||
|  |       var props = vm.$options.props; | ||
|  |       for (var key in methods) { | ||
|  |           { | ||
|  |               if (typeof methods[key] !== 'function') { | ||
|  |                   warn("Method \"".concat(key, "\" has type \"").concat(typeof methods[key], "\" in the component definition. ") + | ||
|  |                       "Did you reference the function correctly?", vm); | ||
|  |               } | ||
|  |               if (props && hasOwn(props, key)) { | ||
|  |                   warn("Method \"".concat(key, "\" has already been defined as a prop."), vm); | ||
|  |               } | ||
|  |               if (key in vm && isReserved(key)) { | ||
|  |                   warn("Method \"".concat(key, "\" conflicts with an existing Vue instance method. ") + | ||
|  |                       "Avoid defining component methods that start with _ or $."); | ||
|  |               } | ||
|  |           } | ||
|  |           vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm); | ||
|  |       } | ||
|  |   } | ||
|  |   function initWatch(vm, watch) { | ||
|  |       for (var key in watch) { | ||
|  |           var handler = watch[key]; | ||
|  |           if (isArray(handler)) { | ||
|  |               for (var i = 0; i < handler.length; i++) { | ||
|  |                   createWatcher(vm, key, handler[i]); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               createWatcher(vm, key, handler); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function createWatcher(vm, expOrFn, handler, options) { | ||
|  |       if (isPlainObject(handler)) { | ||
|  |           options = handler; | ||
|  |           handler = handler.handler; | ||
|  |       } | ||
|  |       if (typeof handler === 'string') { | ||
|  |           handler = vm[handler]; | ||
|  |       } | ||
|  |       return vm.$watch(expOrFn, handler, options); | ||
|  |   } | ||
|  |   function stateMixin(Vue) { | ||
|  |       // flow somehow has problems with directly declared definition object
 | ||
|  |       // when using Object.defineProperty, so we have to procedurally build up
 | ||
|  |       // the object here.
 | ||
|  |       var dataDef = {}; | ||
|  |       dataDef.get = function () { | ||
|  |           return this._data; | ||
|  |       }; | ||
|  |       var propsDef = {}; | ||
|  |       propsDef.get = function () { | ||
|  |           return this._props; | ||
|  |       }; | ||
|  |       { | ||
|  |           dataDef.set = function () { | ||
|  |               warn('Avoid replacing instance root $data. ' + | ||
|  |                   'Use nested data properties instead.', this); | ||
|  |           }; | ||
|  |           propsDef.set = function () { | ||
|  |               warn("$props is readonly.", this); | ||
|  |           }; | ||
|  |       } | ||
|  |       Object.defineProperty(Vue.prototype, '$data', dataDef); | ||
|  |       Object.defineProperty(Vue.prototype, '$props', propsDef); | ||
|  |       Vue.prototype.$set = set; | ||
|  |       Vue.prototype.$delete = del; | ||
|  |       Vue.prototype.$watch = function (expOrFn, cb, options) { | ||
|  |           var vm = this; | ||
|  |           if (isPlainObject(cb)) { | ||
|  |               return createWatcher(vm, expOrFn, cb, options); | ||
|  |           } | ||
|  |           options = options || {}; | ||
|  |           options.user = true; | ||
|  |           var watcher = new Watcher(vm, expOrFn, cb, options); | ||
|  |           if (options.immediate) { | ||
|  |               var info = "callback for immediate watcher \"".concat(watcher.expression, "\""); | ||
|  |               pushTarget(); | ||
|  |               invokeWithErrorHandling(cb, vm, [watcher.value], vm, info); | ||
|  |               popTarget(); | ||
|  |           } | ||
|  |           return function unwatchFn() { | ||
|  |               watcher.teardown(); | ||
|  |           }; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   var uid = 0; | ||
|  |   function initMixin$1(Vue) { | ||
|  |       Vue.prototype._init = function (options) { | ||
|  |           var vm = this; | ||
|  |           // a uid
 | ||
|  |           vm._uid = uid++; | ||
|  |           var startTag, endTag; | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (config.performance && mark) { | ||
|  |               startTag = "vue-perf-start:".concat(vm._uid); | ||
|  |               endTag = "vue-perf-end:".concat(vm._uid); | ||
|  |               mark(startTag); | ||
|  |           } | ||
|  |           // a flag to mark this as a Vue instance without having to do instanceof
 | ||
|  |           // check
 | ||
|  |           vm._isVue = true; | ||
|  |           // avoid instances from being observed
 | ||
|  |           vm.__v_skip = true; | ||
|  |           // effect scope
 | ||
|  |           vm._scope = new EffectScope(true /* detached */); | ||
|  |           // #13134 edge case where a child component is manually created during the
 | ||
|  |           // render of a parent component
 | ||
|  |           vm._scope.parent = undefined; | ||
|  |           vm._scope._vm = true; | ||
|  |           // merge options
 | ||
|  |           if (options && options._isComponent) { | ||
|  |               // optimize internal component instantiation
 | ||
|  |               // since dynamic options merging is pretty slow, and none of the
 | ||
|  |               // internal component options needs special treatment.
 | ||
|  |               initInternalComponent(vm, options); | ||
|  |           } | ||
|  |           else { | ||
|  |               vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm); | ||
|  |           } | ||
|  |           /* istanbul ignore else */ | ||
|  |           { | ||
|  |               initProxy(vm); | ||
|  |           } | ||
|  |           // expose real self
 | ||
|  |           vm._self = vm; | ||
|  |           initLifecycle(vm); | ||
|  |           initEvents(vm); | ||
|  |           initRender(vm); | ||
|  |           callHook$1(vm, 'beforeCreate', undefined, false /* setContext */); | ||
|  |           initInjections(vm); // resolve injections before data/props
 | ||
|  |           initState(vm); | ||
|  |           initProvide(vm); // resolve provide after data/props
 | ||
|  |           callHook$1(vm, 'created'); | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (config.performance && mark) { | ||
|  |               vm._name = formatComponentName(vm, false); | ||
|  |               mark(endTag); | ||
|  |               measure("vue ".concat(vm._name, " init"), startTag, endTag); | ||
|  |           } | ||
|  |           if (vm.$options.el) { | ||
|  |               vm.$mount(vm.$options.el); | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  |   function initInternalComponent(vm, options) { | ||
|  |       var opts = (vm.$options = Object.create(vm.constructor.options)); | ||
|  |       // doing this because it's faster than dynamic enumeration.
 | ||
|  |       var parentVnode = options._parentVnode; | ||
|  |       opts.parent = options.parent; | ||
|  |       opts._parentVnode = parentVnode; | ||
|  |       var vnodeComponentOptions = parentVnode.componentOptions; | ||
|  |       opts.propsData = vnodeComponentOptions.propsData; | ||
|  |       opts._parentListeners = vnodeComponentOptions.listeners; | ||
|  |       opts._renderChildren = vnodeComponentOptions.children; | ||
|  |       opts._componentTag = vnodeComponentOptions.tag; | ||
|  |       if (options.render) { | ||
|  |           opts.render = options.render; | ||
|  |           opts.staticRenderFns = options.staticRenderFns; | ||
|  |       } | ||
|  |   } | ||
|  |   function resolveConstructorOptions(Ctor) { | ||
|  |       var options = Ctor.options; | ||
|  |       if (Ctor.super) { | ||
|  |           var superOptions = resolveConstructorOptions(Ctor.super); | ||
|  |           var cachedSuperOptions = Ctor.superOptions; | ||
|  |           if (superOptions !== cachedSuperOptions) { | ||
|  |               // super option changed,
 | ||
|  |               // need to resolve new options.
 | ||
|  |               Ctor.superOptions = superOptions; | ||
|  |               // check if there are any late-modified/attached options (#4976)
 | ||
|  |               var modifiedOptions = resolveModifiedOptions(Ctor); | ||
|  |               // update base extend options
 | ||
|  |               if (modifiedOptions) { | ||
|  |                   extend(Ctor.extendOptions, modifiedOptions); | ||
|  |               } | ||
|  |               options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions); | ||
|  |               if (options.name) { | ||
|  |                   options.components[options.name] = Ctor; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       return options; | ||
|  |   } | ||
|  |   function resolveModifiedOptions(Ctor) { | ||
|  |       var modified; | ||
|  |       var latest = Ctor.options; | ||
|  |       var sealed = Ctor.sealedOptions; | ||
|  |       for (var key in latest) { | ||
|  |           if (latest[key] !== sealed[key]) { | ||
|  |               if (!modified) | ||
|  |                   modified = {}; | ||
|  |               modified[key] = latest[key]; | ||
|  |           } | ||
|  |       } | ||
|  |       return modified; | ||
|  |   } | ||
|  | 
 | ||
|  |   function Vue(options) { | ||
|  |       if (!(this instanceof Vue)) { | ||
|  |           warn('Vue is a constructor and should be called with the `new` keyword'); | ||
|  |       } | ||
|  |       this._init(options); | ||
|  |   } | ||
|  |   //@ts-expect-error Vue has function type
 | ||
|  |   initMixin$1(Vue); | ||
|  |   //@ts-expect-error Vue has function type
 | ||
|  |   stateMixin(Vue); | ||
|  |   //@ts-expect-error Vue has function type
 | ||
|  |   eventsMixin(Vue); | ||
|  |   //@ts-expect-error Vue has function type
 | ||
|  |   lifecycleMixin(Vue); | ||
|  |   //@ts-expect-error Vue has function type
 | ||
|  |   renderMixin(Vue); | ||
|  | 
 | ||
|  |   function initUse(Vue) { | ||
|  |       Vue.use = function (plugin) { | ||
|  |           var installedPlugins = this._installedPlugins || (this._installedPlugins = []); | ||
|  |           if (installedPlugins.indexOf(plugin) > -1) { | ||
|  |               return this; | ||
|  |           } | ||
|  |           // additional parameters
 | ||
|  |           var args = toArray(arguments, 1); | ||
|  |           args.unshift(this); | ||
|  |           if (isFunction(plugin.install)) { | ||
|  |               plugin.install.apply(plugin, args); | ||
|  |           } | ||
|  |           else if (isFunction(plugin)) { | ||
|  |               plugin.apply(null, args); | ||
|  |           } | ||
|  |           installedPlugins.push(plugin); | ||
|  |           return this; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   function initMixin(Vue) { | ||
|  |       Vue.mixin = function (mixin) { | ||
|  |           this.options = mergeOptions(this.options, mixin); | ||
|  |           return this; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   function initExtend(Vue) { | ||
|  |       /** | ||
|  |        * Each instance constructor, including Vue, has a unique | ||
|  |        * cid. This enables us to create wrapped "child | ||
|  |        * constructors" for prototypal inheritance and cache them. | ||
|  |        */ | ||
|  |       Vue.cid = 0; | ||
|  |       var cid = 1; | ||
|  |       /** | ||
|  |        * Class inheritance | ||
|  |        */ | ||
|  |       Vue.extend = function (extendOptions) { | ||
|  |           extendOptions = extendOptions || {}; | ||
|  |           var Super = this; | ||
|  |           var SuperId = Super.cid; | ||
|  |           var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {}); | ||
|  |           if (cachedCtors[SuperId]) { | ||
|  |               return cachedCtors[SuperId]; | ||
|  |           } | ||
|  |           var name = getComponentName(extendOptions) || getComponentName(Super.options); | ||
|  |           if (name) { | ||
|  |               validateComponentName(name); | ||
|  |           } | ||
|  |           var Sub = function VueComponent(options) { | ||
|  |               this._init(options); | ||
|  |           }; | ||
|  |           Sub.prototype = Object.create(Super.prototype); | ||
|  |           Sub.prototype.constructor = Sub; | ||
|  |           Sub.cid = cid++; | ||
|  |           Sub.options = mergeOptions(Super.options, extendOptions); | ||
|  |           Sub['super'] = Super; | ||
|  |           // For props and computed properties, we define the proxy getters on
 | ||
|  |           // the Vue instances at extension time, on the extended prototype. This
 | ||
|  |           // avoids Object.defineProperty calls for each instance created.
 | ||
|  |           if (Sub.options.props) { | ||
|  |               initProps(Sub); | ||
|  |           } | ||
|  |           if (Sub.options.computed) { | ||
|  |               initComputed(Sub); | ||
|  |           } | ||
|  |           // allow further extension/mixin/plugin usage
 | ||
|  |           Sub.extend = Super.extend; | ||
|  |           Sub.mixin = Super.mixin; | ||
|  |           Sub.use = Super.use; | ||
|  |           // create asset registers, so extended classes
 | ||
|  |           // can have their private assets too.
 | ||
|  |           ASSET_TYPES.forEach(function (type) { | ||
|  |               Sub[type] = Super[type]; | ||
|  |           }); | ||
|  |           // enable recursive self-lookup
 | ||
|  |           if (name) { | ||
|  |               Sub.options.components[name] = Sub; | ||
|  |           } | ||
|  |           // keep a reference to the super options at extension time.
 | ||
|  |           // later at instantiation we can check if Super's options have
 | ||
|  |           // been updated.
 | ||
|  |           Sub.superOptions = Super.options; | ||
|  |           Sub.extendOptions = extendOptions; | ||
|  |           Sub.sealedOptions = extend({}, Sub.options); | ||
|  |           // cache constructor
 | ||
|  |           cachedCtors[SuperId] = Sub; | ||
|  |           return Sub; | ||
|  |       }; | ||
|  |   } | ||
|  |   function initProps(Comp) { | ||
|  |       var props = Comp.options.props; | ||
|  |       for (var key in props) { | ||
|  |           proxy(Comp.prototype, "_props", key); | ||
|  |       } | ||
|  |   } | ||
|  |   function initComputed(Comp) { | ||
|  |       var computed = Comp.options.computed; | ||
|  |       for (var key in computed) { | ||
|  |           defineComputed(Comp.prototype, key, computed[key]); | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function initAssetRegisters(Vue) { | ||
|  |       /** | ||
|  |        * Create asset registration methods. | ||
|  |        */ | ||
|  |       ASSET_TYPES.forEach(function (type) { | ||
|  |           // @ts-expect-error function is not exact same type
 | ||
|  |           Vue[type] = function (id, definition) { | ||
|  |               if (!definition) { | ||
|  |                   return this.options[type + 's'][id]; | ||
|  |               } | ||
|  |               else { | ||
|  |                   /* istanbul ignore if */ | ||
|  |                   if (type === 'component') { | ||
|  |                       validateComponentName(id); | ||
|  |                   } | ||
|  |                   if (type === 'component' && isPlainObject(definition)) { | ||
|  |                       // @ts-expect-error
 | ||
|  |                       definition.name = definition.name || id; | ||
|  |                       definition = this.options._base.extend(definition); | ||
|  |                   } | ||
|  |                   if (type === 'directive' && isFunction(definition)) { | ||
|  |                       definition = { bind: definition, update: definition }; | ||
|  |                   } | ||
|  |                   this.options[type + 's'][id] = definition; | ||
|  |                   return definition; | ||
|  |               } | ||
|  |           }; | ||
|  |       }); | ||
|  |   } | ||
|  | 
 | ||
|  |   function _getComponentName(opts) { | ||
|  |       return opts && (getComponentName(opts.Ctor.options) || opts.tag); | ||
|  |   } | ||
|  |   function matches(pattern, name) { | ||
|  |       if (isArray(pattern)) { | ||
|  |           return pattern.indexOf(name) > -1; | ||
|  |       } | ||
|  |       else if (typeof pattern === 'string') { | ||
|  |           return pattern.split(',').indexOf(name) > -1; | ||
|  |       } | ||
|  |       else if (isRegExp(pattern)) { | ||
|  |           return pattern.test(name); | ||
|  |       } | ||
|  |       /* istanbul ignore next */ | ||
|  |       return false; | ||
|  |   } | ||
|  |   function pruneCache(keepAliveInstance, filter) { | ||
|  |       var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode, $vnode = keepAliveInstance.$vnode; | ||
|  |       for (var key in cache) { | ||
|  |           var entry = cache[key]; | ||
|  |           if (entry) { | ||
|  |               var name_1 = entry.name; | ||
|  |               if (name_1 && !filter(name_1)) { | ||
|  |                   pruneCacheEntry(cache, key, keys, _vnode); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       $vnode.componentOptions.children = undefined; | ||
|  |   } | ||
|  |   function pruneCacheEntry(cache, key, keys, current) { | ||
|  |       var entry = cache[key]; | ||
|  |       if (entry && (!current || entry.tag !== current.tag)) { | ||
|  |           // @ts-expect-error can be undefined
 | ||
|  |           entry.componentInstance.$destroy(); | ||
|  |       } | ||
|  |       cache[key] = null; | ||
|  |       remove$2(keys, key); | ||
|  |   } | ||
|  |   var patternTypes = [String, RegExp, Array]; | ||
|  |   // TODO defineComponent
 | ||
|  |   var KeepAlive = { | ||
|  |       name: 'keep-alive', | ||
|  |       abstract: true, | ||
|  |       props: { | ||
|  |           include: patternTypes, | ||
|  |           exclude: patternTypes, | ||
|  |           max: [String, Number] | ||
|  |       }, | ||
|  |       methods: { | ||
|  |           cacheVNode: function () { | ||
|  |               var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache; | ||
|  |               if (vnodeToCache) { | ||
|  |                   var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions; | ||
|  |                   cache[keyToCache] = { | ||
|  |                       name: _getComponentName(componentOptions), | ||
|  |                       tag: tag, | ||
|  |                       componentInstance: componentInstance | ||
|  |                   }; | ||
|  |                   keys.push(keyToCache); | ||
|  |                   // prune oldest entry
 | ||
|  |                   if (this.max && keys.length > parseInt(this.max)) { | ||
|  |                       pruneCacheEntry(cache, keys[0], keys, this._vnode); | ||
|  |                   } | ||
|  |                   this.vnodeToCache = null; | ||
|  |               } | ||
|  |           } | ||
|  |       }, | ||
|  |       created: function () { | ||
|  |           this.cache = Object.create(null); | ||
|  |           this.keys = []; | ||
|  |       }, | ||
|  |       destroyed: function () { | ||
|  |           for (var key in this.cache) { | ||
|  |               pruneCacheEntry(this.cache, key, this.keys); | ||
|  |           } | ||
|  |       }, | ||
|  |       mounted: function () { | ||
|  |           var _this = this; | ||
|  |           this.cacheVNode(); | ||
|  |           this.$watch('include', function (val) { | ||
|  |               pruneCache(_this, function (name) { return matches(val, name); }); | ||
|  |           }); | ||
|  |           this.$watch('exclude', function (val) { | ||
|  |               pruneCache(_this, function (name) { return !matches(val, name); }); | ||
|  |           }); | ||
|  |       }, | ||
|  |       updated: function () { | ||
|  |           this.cacheVNode(); | ||
|  |       }, | ||
|  |       render: function () { | ||
|  |           var slot = this.$slots.default; | ||
|  |           var vnode = getFirstComponentChild(slot); | ||
|  |           var componentOptions = vnode && vnode.componentOptions; | ||
|  |           if (componentOptions) { | ||
|  |               // check pattern
 | ||
|  |               var name_2 = _getComponentName(componentOptions); | ||
|  |               var _a = this, include = _a.include, exclude = _a.exclude; | ||
|  |               if ( | ||
|  |               // not included
 | ||
|  |               (include && (!name_2 || !matches(include, name_2))) || | ||
|  |                   // excluded
 | ||
|  |                   (exclude && name_2 && matches(exclude, name_2))) { | ||
|  |                   return vnode; | ||
|  |               } | ||
|  |               var _b = this, cache = _b.cache, keys = _b.keys; | ||
|  |               var key = vnode.key == null | ||
|  |                   ? // same constructor may get registered as different local components
 | ||
|  |                       // so cid alone is not enough (#3269)
 | ||
|  |                       componentOptions.Ctor.cid + | ||
|  |                           (componentOptions.tag ? "::".concat(componentOptions.tag) : '') | ||
|  |                   : vnode.key; | ||
|  |               if (cache[key]) { | ||
|  |                   vnode.componentInstance = cache[key].componentInstance; | ||
|  |                   // make current key freshest
 | ||
|  |                   remove$2(keys, key); | ||
|  |                   keys.push(key); | ||
|  |               } | ||
|  |               else { | ||
|  |                   // delay setting the cache until update
 | ||
|  |                   this.vnodeToCache = vnode; | ||
|  |                   this.keyToCache = key; | ||
|  |               } | ||
|  |               // @ts-expect-error can vnode.data can be undefined
 | ||
|  |               vnode.data.keepAlive = true; | ||
|  |           } | ||
|  |           return vnode || (slot && slot[0]); | ||
|  |       } | ||
|  |   }; | ||
|  | 
 | ||
|  |   var builtInComponents = { | ||
|  |       KeepAlive: KeepAlive | ||
|  |   }; | ||
|  | 
 | ||
|  |   function initGlobalAPI(Vue) { | ||
|  |       // config
 | ||
|  |       var configDef = {}; | ||
|  |       configDef.get = function () { return config; }; | ||
|  |       { | ||
|  |           configDef.set = function () { | ||
|  |               warn('Do not replace the Vue.config object, set individual fields instead.'); | ||
|  |           }; | ||
|  |       } | ||
|  |       Object.defineProperty(Vue, 'config', configDef); | ||
|  |       // exposed util methods.
 | ||
|  |       // NOTE: these are not considered part of the public API - avoid relying on
 | ||
|  |       // them unless you are aware of the risk.
 | ||
|  |       Vue.util = { | ||
|  |           warn: warn, | ||
|  |           extend: extend, | ||
|  |           mergeOptions: mergeOptions, | ||
|  |           defineReactive: defineReactive | ||
|  |       }; | ||
|  |       Vue.set = set; | ||
|  |       Vue.delete = del; | ||
|  |       Vue.nextTick = nextTick; | ||
|  |       // 2.6 explicit observable API
 | ||
|  |       Vue.observable = function (obj) { | ||
|  |           observe(obj); | ||
|  |           return obj; | ||
|  |       }; | ||
|  |       Vue.options = Object.create(null); | ||
|  |       ASSET_TYPES.forEach(function (type) { | ||
|  |           Vue.options[type + 's'] = Object.create(null); | ||
|  |       }); | ||
|  |       // this is used to identify the "base" constructor to extend all plain-object
 | ||
|  |       // components with in Weex's multi-instance scenarios.
 | ||
|  |       Vue.options._base = Vue; | ||
|  |       extend(Vue.options.components, builtInComponents); | ||
|  |       initUse(Vue); | ||
|  |       initMixin(Vue); | ||
|  |       initExtend(Vue); | ||
|  |       initAssetRegisters(Vue); | ||
|  |   } | ||
|  | 
 | ||
|  |   initGlobalAPI(Vue); | ||
|  |   Object.defineProperty(Vue.prototype, '$isServer', { | ||
|  |       get: isServerRendering | ||
|  |   }); | ||
|  |   Object.defineProperty(Vue.prototype, '$ssrContext', { | ||
|  |       get: function () { | ||
|  |           /* istanbul ignore next */ | ||
|  |           return this.$vnode && this.$vnode.ssrContext; | ||
|  |       } | ||
|  |   }); | ||
|  |   // expose FunctionalRenderContext for ssr runtime helper installation
 | ||
|  |   Object.defineProperty(Vue, 'FunctionalRenderContext', { | ||
|  |       value: FunctionalRenderContext | ||
|  |   }); | ||
|  |   Vue.version = version; | ||
|  | 
 | ||
|  |   // these are reserved for web because they are directly compiled away
 | ||
|  |   // during template compilation
 | ||
|  |   var isReservedAttr = makeMap('style,class'); | ||
|  |   // attributes that should be using props for binding
 | ||
|  |   var acceptValue = makeMap('input,textarea,option,select,progress'); | ||
|  |   var mustUseProp = function (tag, type, attr) { | ||
|  |       return ((attr === 'value' && acceptValue(tag) && type !== 'button') || | ||
|  |           (attr === 'selected' && tag === 'option') || | ||
|  |           (attr === 'checked' && tag === 'input') || | ||
|  |           (attr === 'muted' && tag === 'video')); | ||
|  |   }; | ||
|  |   var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck'); | ||
|  |   var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only'); | ||
|  |   var convertEnumeratedValue = function (key, value) { | ||
|  |       return isFalsyAttrValue(value) || value === 'false' | ||
|  |           ? 'false' | ||
|  |           : // allow arbitrary string value for contenteditable
 | ||
|  |               key === 'contenteditable' && isValidContentEditableValue(value) | ||
|  |                   ? value | ||
|  |                   : 'true'; | ||
|  |   }; | ||
|  |   var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + | ||
|  |       'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + | ||
|  |       'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + | ||
|  |       'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + | ||
|  |       'required,reversed,scoped,seamless,selected,sortable,' + | ||
|  |       'truespeed,typemustmatch,visible'); | ||
|  |   var xlinkNS = 'http://www.w3.org/1999/xlink'; | ||
|  |   var isXlink = function (name) { | ||
|  |       return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'; | ||
|  |   }; | ||
|  |   var getXlinkProp = function (name) { | ||
|  |       return isXlink(name) ? name.slice(6, name.length) : ''; | ||
|  |   }; | ||
|  |   var isFalsyAttrValue = function (val) { | ||
|  |       return val == null || val === false; | ||
|  |   }; | ||
|  | 
 | ||
|  |   function genClassForVnode(vnode) { | ||
|  |       var data = vnode.data; | ||
|  |       var parentNode = vnode; | ||
|  |       var childNode = vnode; | ||
|  |       while (isDef(childNode.componentInstance)) { | ||
|  |           childNode = childNode.componentInstance._vnode; | ||
|  |           if (childNode && childNode.data) { | ||
|  |               data = mergeClassData(childNode.data, data); | ||
|  |           } | ||
|  |       } | ||
|  |       // @ts-expect-error parentNode.parent not VNodeWithData
 | ||
|  |       while (isDef((parentNode = parentNode.parent))) { | ||
|  |           if (parentNode && parentNode.data) { | ||
|  |               data = mergeClassData(data, parentNode.data); | ||
|  |           } | ||
|  |       } | ||
|  |       return renderClass(data.staticClass, data.class); | ||
|  |   } | ||
|  |   function mergeClassData(child, parent) { | ||
|  |       return { | ||
|  |           staticClass: concat(child.staticClass, parent.staticClass), | ||
|  |           class: isDef(child.class) ? [child.class, parent.class] : parent.class | ||
|  |       }; | ||
|  |   } | ||
|  |   function renderClass(staticClass, dynamicClass) { | ||
|  |       if (isDef(staticClass) || isDef(dynamicClass)) { | ||
|  |           return concat(staticClass, stringifyClass(dynamicClass)); | ||
|  |       } | ||
|  |       /* istanbul ignore next */ | ||
|  |       return ''; | ||
|  |   } | ||
|  |   function concat(a, b) { | ||
|  |       return a ? (b ? a + ' ' + b : a) : b || ''; | ||
|  |   } | ||
|  |   function stringifyClass(value) { | ||
|  |       if (Array.isArray(value)) { | ||
|  |           return stringifyArray(value); | ||
|  |       } | ||
|  |       if (isObject(value)) { | ||
|  |           return stringifyObject(value); | ||
|  |       } | ||
|  |       if (typeof value === 'string') { | ||
|  |           return value; | ||
|  |       } | ||
|  |       /* istanbul ignore next */ | ||
|  |       return ''; | ||
|  |   } | ||
|  |   function stringifyArray(value) { | ||
|  |       var res = ''; | ||
|  |       var stringified; | ||
|  |       for (var i = 0, l = value.length; i < l; i++) { | ||
|  |           if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') { | ||
|  |               if (res) | ||
|  |                   res += ' '; | ||
|  |               res += stringified; | ||
|  |           } | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  |   function stringifyObject(value) { | ||
|  |       var res = ''; | ||
|  |       for (var key in value) { | ||
|  |           if (value[key]) { | ||
|  |               if (res) | ||
|  |                   res += ' '; | ||
|  |               res += key; | ||
|  |           } | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  | 
 | ||
|  |   var namespaceMap = { | ||
|  |       svg: 'http://www.w3.org/2000/svg', | ||
|  |       math: 'http://www.w3.org/1998/Math/MathML' | ||
|  |   }; | ||
|  |   var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' + | ||
|  |       'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + | ||
|  |       'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + | ||
|  |       'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + | ||
|  |       's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + | ||
|  |       'embed,object,param,source,canvas,script,noscript,del,ins,' + | ||
|  |       'caption,col,colgroup,table,thead,tbody,td,th,tr,' + | ||
|  |       'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + | ||
|  |       'output,progress,select,textarea,' + | ||
|  |       'details,dialog,menu,menuitem,summary,' + | ||
|  |       'content,element,shadow,template,blockquote,iframe,tfoot'); | ||
|  |   // this map is intentionally selective, only covering SVG elements that may
 | ||
|  |   // contain child elements.
 | ||
|  |   var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + | ||
|  |       'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + | ||
|  |       'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true); | ||
|  |   var isReservedTag = function (tag) { | ||
|  |       return isHTMLTag(tag) || isSVG(tag); | ||
|  |   }; | ||
|  |   function getTagNamespace(tag) { | ||
|  |       if (isSVG(tag)) { | ||
|  |           return 'svg'; | ||
|  |       } | ||
|  |       // basic support for MathML
 | ||
|  |       // note it doesn't support other MathML elements being component roots
 | ||
|  |       if (tag === 'math') { | ||
|  |           return 'math'; | ||
|  |       } | ||
|  |   } | ||
|  |   var unknownElementCache = Object.create(null); | ||
|  |   function isUnknownElement(tag) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (!inBrowser) { | ||
|  |           return true; | ||
|  |       } | ||
|  |       if (isReservedTag(tag)) { | ||
|  |           return false; | ||
|  |       } | ||
|  |       tag = tag.toLowerCase(); | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (unknownElementCache[tag] != null) { | ||
|  |           return unknownElementCache[tag]; | ||
|  |       } | ||
|  |       var el = document.createElement(tag); | ||
|  |       if (tag.indexOf('-') > -1) { | ||
|  |           // https://stackoverflow.com/a/28210364/1070244
 | ||
|  |           return (unknownElementCache[tag] = | ||
|  |               el.constructor === window.HTMLUnknownElement || | ||
|  |                   el.constructor === window.HTMLElement); | ||
|  |       } | ||
|  |       else { | ||
|  |           return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString())); | ||
|  |       } | ||
|  |   } | ||
|  |   var isTextInputType = makeMap('text,number,password,search,email,tel,url'); | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Query an element selector if it's not an element already. | ||
|  |    */ | ||
|  |   function query(el) { | ||
|  |       if (typeof el === 'string') { | ||
|  |           var selected = document.querySelector(el); | ||
|  |           if (!selected) { | ||
|  |               warn('Cannot find element: ' + el); | ||
|  |               return document.createElement('div'); | ||
|  |           } | ||
|  |           return selected; | ||
|  |       } | ||
|  |       else { | ||
|  |           return el; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function createElement(tagName, vnode) { | ||
|  |       var elm = document.createElement(tagName); | ||
|  |       if (tagName !== 'select') { | ||
|  |           return elm; | ||
|  |       } | ||
|  |       // false or null will remove the attribute but undefined will not
 | ||
|  |       if (vnode.data && | ||
|  |           vnode.data.attrs && | ||
|  |           vnode.data.attrs.multiple !== undefined) { | ||
|  |           elm.setAttribute('multiple', 'multiple'); | ||
|  |       } | ||
|  |       return elm; | ||
|  |   } | ||
|  |   function createElementNS(namespace, tagName) { | ||
|  |       return document.createElementNS(namespaceMap[namespace], tagName); | ||
|  |   } | ||
|  |   function createTextNode(text) { | ||
|  |       return document.createTextNode(text); | ||
|  |   } | ||
|  |   function createComment(text) { | ||
|  |       return document.createComment(text); | ||
|  |   } | ||
|  |   function insertBefore(parentNode, newNode, referenceNode) { | ||
|  |       parentNode.insertBefore(newNode, referenceNode); | ||
|  |   } | ||
|  |   function removeChild(node, child) { | ||
|  |       node.removeChild(child); | ||
|  |   } | ||
|  |   function appendChild(node, child) { | ||
|  |       node.appendChild(child); | ||
|  |   } | ||
|  |   function parentNode(node) { | ||
|  |       return node.parentNode; | ||
|  |   } | ||
|  |   function nextSibling(node) { | ||
|  |       return node.nextSibling; | ||
|  |   } | ||
|  |   function tagName(node) { | ||
|  |       return node.tagName; | ||
|  |   } | ||
|  |   function setTextContent(node, text) { | ||
|  |       node.textContent = text; | ||
|  |   } | ||
|  |   function setStyleScope(node, scopeId) { | ||
|  |       node.setAttribute(scopeId, ''); | ||
|  |   } | ||
|  | 
 | ||
|  |   var nodeOps = /*#__PURE__*/Object.freeze({ | ||
|  |     __proto__: null, | ||
|  |     createElement: createElement, | ||
|  |     createElementNS: createElementNS, | ||
|  |     createTextNode: createTextNode, | ||
|  |     createComment: createComment, | ||
|  |     insertBefore: insertBefore, | ||
|  |     removeChild: removeChild, | ||
|  |     appendChild: appendChild, | ||
|  |     parentNode: parentNode, | ||
|  |     nextSibling: nextSibling, | ||
|  |     tagName: tagName, | ||
|  |     setTextContent: setTextContent, | ||
|  |     setStyleScope: setStyleScope | ||
|  |   }); | ||
|  | 
 | ||
|  |   var ref = { | ||
|  |       create: function (_, vnode) { | ||
|  |           registerRef(vnode); | ||
|  |       }, | ||
|  |       update: function (oldVnode, vnode) { | ||
|  |           if (oldVnode.data.ref !== vnode.data.ref) { | ||
|  |               registerRef(oldVnode, true); | ||
|  |               registerRef(vnode); | ||
|  |           } | ||
|  |       }, | ||
|  |       destroy: function (vnode) { | ||
|  |           registerRef(vnode, true); | ||
|  |       } | ||
|  |   }; | ||
|  |   function registerRef(vnode, isRemoval) { | ||
|  |       var ref = vnode.data.ref; | ||
|  |       if (!isDef(ref)) | ||
|  |           return; | ||
|  |       var vm = vnode.context; | ||
|  |       var refValue = vnode.componentInstance || vnode.elm; | ||
|  |       var value = isRemoval ? null : refValue; | ||
|  |       var $refsValue = isRemoval ? undefined : refValue; | ||
|  |       if (isFunction(ref)) { | ||
|  |           invokeWithErrorHandling(ref, vm, [value], vm, "template ref function"); | ||
|  |           return; | ||
|  |       } | ||
|  |       var isFor = vnode.data.refInFor; | ||
|  |       var _isString = typeof ref === 'string' || typeof ref === 'number'; | ||
|  |       var _isRef = isRef(ref); | ||
|  |       var refs = vm.$refs; | ||
|  |       if (_isString || _isRef) { | ||
|  |           if (isFor) { | ||
|  |               var existing = _isString ? refs[ref] : ref.value; | ||
|  |               if (isRemoval) { | ||
|  |                   isArray(existing) && remove$2(existing, refValue); | ||
|  |               } | ||
|  |               else { | ||
|  |                   if (!isArray(existing)) { | ||
|  |                       if (_isString) { | ||
|  |                           refs[ref] = [refValue]; | ||
|  |                           setSetupRef(vm, ref, refs[ref]); | ||
|  |                       } | ||
|  |                       else { | ||
|  |                           ref.value = [refValue]; | ||
|  |                       } | ||
|  |                   } | ||
|  |                   else if (!existing.includes(refValue)) { | ||
|  |                       existing.push(refValue); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |           else if (_isString) { | ||
|  |               if (isRemoval && refs[ref] !== refValue) { | ||
|  |                   return; | ||
|  |               } | ||
|  |               refs[ref] = $refsValue; | ||
|  |               setSetupRef(vm, ref, value); | ||
|  |           } | ||
|  |           else if (_isRef) { | ||
|  |               if (isRemoval && ref.value !== refValue) { | ||
|  |                   return; | ||
|  |               } | ||
|  |               ref.value = value; | ||
|  |           } | ||
|  |           else { | ||
|  |               warn("Invalid template ref type: ".concat(typeof ref)); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function setSetupRef(_a, key, val) { | ||
|  |       var _setupState = _a._setupState; | ||
|  |       if (_setupState && hasOwn(_setupState, key)) { | ||
|  |           if (isRef(_setupState[key])) { | ||
|  |               _setupState[key].value = val; | ||
|  |           } | ||
|  |           else { | ||
|  |               _setupState[key] = val; | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Virtual DOM patching algorithm based on Snabbdom by | ||
|  |    * Simon Friis Vindum (@paldepind) | ||
|  |    * Licensed under the MIT License | ||
|  |    * https://github.com/paldepind/snabbdom/blob/master/LICENSE
 | ||
|  |    * | ||
|  |    * modified by Evan You (@yyx990803) | ||
|  |    * | ||
|  |    * Not type-checking this because this file is perf-critical and the cost | ||
|  |    * of making flow understand it is not worth it. | ||
|  |    */ | ||
|  |   var emptyNode = new VNode('', {}, []); | ||
|  |   var hooks = ['create', 'activate', 'update', 'remove', 'destroy']; | ||
|  |   function sameVnode(a, b) { | ||
|  |       return (a.key === b.key && | ||
|  |           a.asyncFactory === b.asyncFactory && | ||
|  |           ((a.tag === b.tag && | ||
|  |               a.isComment === b.isComment && | ||
|  |               isDef(a.data) === isDef(b.data) && | ||
|  |               sameInputType(a, b)) || | ||
|  |               (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error)))); | ||
|  |   } | ||
|  |   function sameInputType(a, b) { | ||
|  |       if (a.tag !== 'input') | ||
|  |           return true; | ||
|  |       var i; | ||
|  |       var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type; | ||
|  |       var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type; | ||
|  |       return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB)); | ||
|  |   } | ||
|  |   function createKeyToOldIdx(children, beginIdx, endIdx) { | ||
|  |       var i, key; | ||
|  |       var map = {}; | ||
|  |       for (i = beginIdx; i <= endIdx; ++i) { | ||
|  |           key = children[i].key; | ||
|  |           if (isDef(key)) | ||
|  |               map[key] = i; | ||
|  |       } | ||
|  |       return map; | ||
|  |   } | ||
|  |   function createPatchFunction(backend) { | ||
|  |       var i, j; | ||
|  |       var cbs = {}; | ||
|  |       var modules = backend.modules, nodeOps = backend.nodeOps; | ||
|  |       for (i = 0; i < hooks.length; ++i) { | ||
|  |           cbs[hooks[i]] = []; | ||
|  |           for (j = 0; j < modules.length; ++j) { | ||
|  |               if (isDef(modules[j][hooks[i]])) { | ||
|  |                   cbs[hooks[i]].push(modules[j][hooks[i]]); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       function emptyNodeAt(elm) { | ||
|  |           return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm); | ||
|  |       } | ||
|  |       function createRmCb(childElm, listeners) { | ||
|  |           function remove() { | ||
|  |               if (--remove.listeners === 0) { | ||
|  |                   removeNode(childElm); | ||
|  |               } | ||
|  |           } | ||
|  |           remove.listeners = listeners; | ||
|  |           return remove; | ||
|  |       } | ||
|  |       function removeNode(el) { | ||
|  |           var parent = nodeOps.parentNode(el); | ||
|  |           // element may have already been removed due to v-html / v-text
 | ||
|  |           if (isDef(parent)) { | ||
|  |               nodeOps.removeChild(parent, el); | ||
|  |           } | ||
|  |       } | ||
|  |       function isUnknownElement(vnode, inVPre) { | ||
|  |           return (!inVPre && | ||
|  |               !vnode.ns && | ||
|  |               !(config.ignoredElements.length && | ||
|  |                   config.ignoredElements.some(function (ignore) { | ||
|  |                       return isRegExp(ignore) | ||
|  |                           ? ignore.test(vnode.tag) | ||
|  |                           : ignore === vnode.tag; | ||
|  |                   })) && | ||
|  |               config.isUnknownElement(vnode.tag)); | ||
|  |       } | ||
|  |       var creatingElmInVPre = 0; | ||
|  |       function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) { | ||
|  |           if (isDef(vnode.elm) && isDef(ownerArray)) { | ||
|  |               // This vnode was used in a previous render!
 | ||
|  |               // now it's used as a new node, overwriting its elm would cause
 | ||
|  |               // potential patch errors down the road when it's used as an insertion
 | ||
|  |               // reference node. Instead, we clone the node on-demand before creating
 | ||
|  |               // associated DOM element for it.
 | ||
|  |               vnode = ownerArray[index] = cloneVNode(vnode); | ||
|  |           } | ||
|  |           vnode.isRootInsert = !nested; // for transition enter check
 | ||
|  |           if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) { | ||
|  |               return; | ||
|  |           } | ||
|  |           var data = vnode.data; | ||
|  |           var children = vnode.children; | ||
|  |           var tag = vnode.tag; | ||
|  |           if (isDef(tag)) { | ||
|  |               { | ||
|  |                   if (data && data.pre) { | ||
|  |                       creatingElmInVPre++; | ||
|  |                   } | ||
|  |                   if (isUnknownElement(vnode, creatingElmInVPre)) { | ||
|  |                       warn('Unknown custom element: <' + | ||
|  |                           tag + | ||
|  |                           '> - did you ' + | ||
|  |                           'register the component correctly? For recursive components, ' + | ||
|  |                           'make sure to provide the "name" option.', vnode.context); | ||
|  |                   } | ||
|  |               } | ||
|  |               vnode.elm = vnode.ns | ||
|  |                   ? nodeOps.createElementNS(vnode.ns, tag) | ||
|  |                   : nodeOps.createElement(tag, vnode); | ||
|  |               setScope(vnode); | ||
|  |               createChildren(vnode, children, insertedVnodeQueue); | ||
|  |               if (isDef(data)) { | ||
|  |                   invokeCreateHooks(vnode, insertedVnodeQueue); | ||
|  |               } | ||
|  |               insert(parentElm, vnode.elm, refElm); | ||
|  |               if (data && data.pre) { | ||
|  |                   creatingElmInVPre--; | ||
|  |               } | ||
|  |           } | ||
|  |           else if (isTrue(vnode.isComment)) { | ||
|  |               vnode.elm = nodeOps.createComment(vnode.text); | ||
|  |               insert(parentElm, vnode.elm, refElm); | ||
|  |           } | ||
|  |           else { | ||
|  |               vnode.elm = nodeOps.createTextNode(vnode.text); | ||
|  |               insert(parentElm, vnode.elm, refElm); | ||
|  |           } | ||
|  |       } | ||
|  |       function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) { | ||
|  |           var i = vnode.data; | ||
|  |           if (isDef(i)) { | ||
|  |               var isReactivated = isDef(vnode.componentInstance) && i.keepAlive; | ||
|  |               if (isDef((i = i.hook)) && isDef((i = i.init))) { | ||
|  |                   i(vnode, false /* hydrating */); | ||
|  |               } | ||
|  |               // after calling the init hook, if the vnode is a child component
 | ||
|  |               // it should've created a child instance and mounted it. the child
 | ||
|  |               // component also has set the placeholder vnode's elm.
 | ||
|  |               // in that case we can just return the element and be done.
 | ||
|  |               if (isDef(vnode.componentInstance)) { | ||
|  |                   initComponent(vnode, insertedVnodeQueue); | ||
|  |                   insert(parentElm, vnode.elm, refElm); | ||
|  |                   if (isTrue(isReactivated)) { | ||
|  |                       reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm); | ||
|  |                   } | ||
|  |                   return true; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       function initComponent(vnode, insertedVnodeQueue) { | ||
|  |           if (isDef(vnode.data.pendingInsert)) { | ||
|  |               insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert); | ||
|  |               vnode.data.pendingInsert = null; | ||
|  |           } | ||
|  |           vnode.elm = vnode.componentInstance.$el; | ||
|  |           if (isPatchable(vnode)) { | ||
|  |               invokeCreateHooks(vnode, insertedVnodeQueue); | ||
|  |               setScope(vnode); | ||
|  |           } | ||
|  |           else { | ||
|  |               // empty component root.
 | ||
|  |               // skip all element-related modules except for ref (#3455)
 | ||
|  |               registerRef(vnode); | ||
|  |               // make sure to invoke the insert hook
 | ||
|  |               insertedVnodeQueue.push(vnode); | ||
|  |           } | ||
|  |       } | ||
|  |       function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) { | ||
|  |           var i; | ||
|  |           // hack for #4339: a reactivated component with inner transition
 | ||
|  |           // does not trigger because the inner node's created hooks are not called
 | ||
|  |           // again. It's not ideal to involve module-specific logic in here but
 | ||
|  |           // there doesn't seem to be a better way to do it.
 | ||
|  |           var innerNode = vnode; | ||
|  |           while (innerNode.componentInstance) { | ||
|  |               innerNode = innerNode.componentInstance._vnode; | ||
|  |               if (isDef((i = innerNode.data)) && isDef((i = i.transition))) { | ||
|  |                   for (i = 0; i < cbs.activate.length; ++i) { | ||
|  |                       cbs.activate[i](emptyNode, innerNode); | ||
|  |                   } | ||
|  |                   insertedVnodeQueue.push(innerNode); | ||
|  |                   break; | ||
|  |               } | ||
|  |           } | ||
|  |           // unlike a newly created component,
 | ||
|  |           // a reactivated keep-alive component doesn't insert itself
 | ||
|  |           insert(parentElm, vnode.elm, refElm); | ||
|  |       } | ||
|  |       function insert(parent, elm, ref) { | ||
|  |           if (isDef(parent)) { | ||
|  |               if (isDef(ref)) { | ||
|  |                   if (nodeOps.parentNode(ref) === parent) { | ||
|  |                       nodeOps.insertBefore(parent, elm, ref); | ||
|  |                   } | ||
|  |               } | ||
|  |               else { | ||
|  |                   nodeOps.appendChild(parent, elm); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       function createChildren(vnode, children, insertedVnodeQueue) { | ||
|  |           if (isArray(children)) { | ||
|  |               { | ||
|  |                   checkDuplicateKeys(children); | ||
|  |               } | ||
|  |               for (var i_1 = 0; i_1 < children.length; ++i_1) { | ||
|  |                   createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1); | ||
|  |               } | ||
|  |           } | ||
|  |           else if (isPrimitive(vnode.text)) { | ||
|  |               nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text))); | ||
|  |           } | ||
|  |       } | ||
|  |       function isPatchable(vnode) { | ||
|  |           while (vnode.componentInstance) { | ||
|  |               vnode = vnode.componentInstance._vnode; | ||
|  |           } | ||
|  |           return isDef(vnode.tag); | ||
|  |       } | ||
|  |       function invokeCreateHooks(vnode, insertedVnodeQueue) { | ||
|  |           for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) { | ||
|  |               cbs.create[i_2](emptyNode, vnode); | ||
|  |           } | ||
|  |           i = vnode.data.hook; // Reuse variable
 | ||
|  |           if (isDef(i)) { | ||
|  |               if (isDef(i.create)) | ||
|  |                   i.create(emptyNode, vnode); | ||
|  |               if (isDef(i.insert)) | ||
|  |                   insertedVnodeQueue.push(vnode); | ||
|  |           } | ||
|  |       } | ||
|  |       // set scope id attribute for scoped CSS.
 | ||
|  |       // this is implemented as a special case to avoid the overhead
 | ||
|  |       // of going through the normal attribute patching process.
 | ||
|  |       function setScope(vnode) { | ||
|  |           var i; | ||
|  |           if (isDef((i = vnode.fnScopeId))) { | ||
|  |               nodeOps.setStyleScope(vnode.elm, i); | ||
|  |           } | ||
|  |           else { | ||
|  |               var ancestor = vnode; | ||
|  |               while (ancestor) { | ||
|  |                   if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) { | ||
|  |                       nodeOps.setStyleScope(vnode.elm, i); | ||
|  |                   } | ||
|  |                   ancestor = ancestor.parent; | ||
|  |               } | ||
|  |           } | ||
|  |           // for slot content they should also get the scopeId from the host instance.
 | ||
|  |           if (isDef((i = activeInstance)) && | ||
|  |               i !== vnode.context && | ||
|  |               i !== vnode.fnContext && | ||
|  |               isDef((i = i.$options._scopeId))) { | ||
|  |               nodeOps.setStyleScope(vnode.elm, i); | ||
|  |           } | ||
|  |       } | ||
|  |       function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) { | ||
|  |           for (; startIdx <= endIdx; ++startIdx) { | ||
|  |               createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx); | ||
|  |           } | ||
|  |       } | ||
|  |       function invokeDestroyHook(vnode) { | ||
|  |           var i, j; | ||
|  |           var data = vnode.data; | ||
|  |           if (isDef(data)) { | ||
|  |               if (isDef((i = data.hook)) && isDef((i = i.destroy))) | ||
|  |                   i(vnode); | ||
|  |               for (i = 0; i < cbs.destroy.length; ++i) | ||
|  |                   cbs.destroy[i](vnode); | ||
|  |           } | ||
|  |           if (isDef((i = vnode.children))) { | ||
|  |               for (j = 0; j < vnode.children.length; ++j) { | ||
|  |                   invokeDestroyHook(vnode.children[j]); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       function removeVnodes(vnodes, startIdx, endIdx) { | ||
|  |           for (; startIdx <= endIdx; ++startIdx) { | ||
|  |               var ch = vnodes[startIdx]; | ||
|  |               if (isDef(ch)) { | ||
|  |                   if (isDef(ch.tag)) { | ||
|  |                       removeAndInvokeRemoveHook(ch); | ||
|  |                       invokeDestroyHook(ch); | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       // Text node
 | ||
|  |                       removeNode(ch.elm); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       function removeAndInvokeRemoveHook(vnode, rm) { | ||
|  |           if (isDef(rm) || isDef(vnode.data)) { | ||
|  |               var i_3; | ||
|  |               var listeners = cbs.remove.length + 1; | ||
|  |               if (isDef(rm)) { | ||
|  |                   // we have a recursively passed down rm callback
 | ||
|  |                   // increase the listeners count
 | ||
|  |                   rm.listeners += listeners; | ||
|  |               } | ||
|  |               else { | ||
|  |                   // directly removing
 | ||
|  |                   rm = createRmCb(vnode.elm, listeners); | ||
|  |               } | ||
|  |               // recursively invoke hooks on child component root node
 | ||
|  |               if (isDef((i_3 = vnode.componentInstance)) && | ||
|  |                   isDef((i_3 = i_3._vnode)) && | ||
|  |                   isDef(i_3.data)) { | ||
|  |                   removeAndInvokeRemoveHook(i_3, rm); | ||
|  |               } | ||
|  |               for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) { | ||
|  |                   cbs.remove[i_3](vnode, rm); | ||
|  |               } | ||
|  |               if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) { | ||
|  |                   i_3(vnode, rm); | ||
|  |               } | ||
|  |               else { | ||
|  |                   rm(); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               removeNode(vnode.elm); | ||
|  |           } | ||
|  |       } | ||
|  |       function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) { | ||
|  |           var oldStartIdx = 0; | ||
|  |           var newStartIdx = 0; | ||
|  |           var oldEndIdx = oldCh.length - 1; | ||
|  |           var oldStartVnode = oldCh[0]; | ||
|  |           var oldEndVnode = oldCh[oldEndIdx]; | ||
|  |           var newEndIdx = newCh.length - 1; | ||
|  |           var newStartVnode = newCh[0]; | ||
|  |           var newEndVnode = newCh[newEndIdx]; | ||
|  |           var oldKeyToIdx, idxInOld, vnodeToMove, refElm; | ||
|  |           // removeOnly is a special flag used only by <transition-group>
 | ||
|  |           // to ensure removed elements stay in correct relative positions
 | ||
|  |           // during leaving transitions
 | ||
|  |           var canMove = !removeOnly; | ||
|  |           { | ||
|  |               checkDuplicateKeys(newCh); | ||
|  |           } | ||
|  |           while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { | ||
|  |               if (isUndef(oldStartVnode)) { | ||
|  |                   oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
 | ||
|  |               } | ||
|  |               else if (isUndef(oldEndVnode)) { | ||
|  |                   oldEndVnode = oldCh[--oldEndIdx]; | ||
|  |               } | ||
|  |               else if (sameVnode(oldStartVnode, newStartVnode)) { | ||
|  |                   patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); | ||
|  |                   oldStartVnode = oldCh[++oldStartIdx]; | ||
|  |                   newStartVnode = newCh[++newStartIdx]; | ||
|  |               } | ||
|  |               else if (sameVnode(oldEndVnode, newEndVnode)) { | ||
|  |                   patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); | ||
|  |                   oldEndVnode = oldCh[--oldEndIdx]; | ||
|  |                   newEndVnode = newCh[--newEndIdx]; | ||
|  |               } | ||
|  |               else if (sameVnode(oldStartVnode, newEndVnode)) { | ||
|  |                   // Vnode moved right
 | ||
|  |                   patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx); | ||
|  |                   canMove && | ||
|  |                       nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)); | ||
|  |                   oldStartVnode = oldCh[++oldStartIdx]; | ||
|  |                   newEndVnode = newCh[--newEndIdx]; | ||
|  |               } | ||
|  |               else if (sameVnode(oldEndVnode, newStartVnode)) { | ||
|  |                   // Vnode moved left
 | ||
|  |                   patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); | ||
|  |                   canMove && | ||
|  |                       nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); | ||
|  |                   oldEndVnode = oldCh[--oldEndIdx]; | ||
|  |                   newStartVnode = newCh[++newStartIdx]; | ||
|  |               } | ||
|  |               else { | ||
|  |                   if (isUndef(oldKeyToIdx)) | ||
|  |                       oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); | ||
|  |                   idxInOld = isDef(newStartVnode.key) | ||
|  |                       ? oldKeyToIdx[newStartVnode.key] | ||
|  |                       : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx); | ||
|  |                   if (isUndef(idxInOld)) { | ||
|  |                       // New element
 | ||
|  |                       createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       vnodeToMove = oldCh[idxInOld]; | ||
|  |                       if (sameVnode(vnodeToMove, newStartVnode)) { | ||
|  |                           patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx); | ||
|  |                           oldCh[idxInOld] = undefined; | ||
|  |                           canMove && | ||
|  |                               nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm); | ||
|  |                       } | ||
|  |                       else { | ||
|  |                           // same key but different element. treat as new element
 | ||
|  |                           createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx); | ||
|  |                       } | ||
|  |                   } | ||
|  |                   newStartVnode = newCh[++newStartIdx]; | ||
|  |               } | ||
|  |           } | ||
|  |           if (oldStartIdx > oldEndIdx) { | ||
|  |               refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm; | ||
|  |               addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); | ||
|  |           } | ||
|  |           else if (newStartIdx > newEndIdx) { | ||
|  |               removeVnodes(oldCh, oldStartIdx, oldEndIdx); | ||
|  |           } | ||
|  |       } | ||
|  |       function checkDuplicateKeys(children) { | ||
|  |           var seenKeys = {}; | ||
|  |           for (var i_4 = 0; i_4 < children.length; i_4++) { | ||
|  |               var vnode = children[i_4]; | ||
|  |               var key = vnode.key; | ||
|  |               if (isDef(key)) { | ||
|  |                   if (seenKeys[key]) { | ||
|  |                       warn("Duplicate keys detected: '".concat(key, "'. This may cause an update error."), vnode.context); | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       seenKeys[key] = true; | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       function findIdxInOld(node, oldCh, start, end) { | ||
|  |           for (var i_5 = start; i_5 < end; i_5++) { | ||
|  |               var c = oldCh[i_5]; | ||
|  |               if (isDef(c) && sameVnode(node, c)) | ||
|  |                   return i_5; | ||
|  |           } | ||
|  |       } | ||
|  |       function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) { | ||
|  |           if (oldVnode === vnode) { | ||
|  |               return; | ||
|  |           } | ||
|  |           if (isDef(vnode.elm) && isDef(ownerArray)) { | ||
|  |               // clone reused vnode
 | ||
|  |               vnode = ownerArray[index] = cloneVNode(vnode); | ||
|  |           } | ||
|  |           var elm = (vnode.elm = oldVnode.elm); | ||
|  |           if (isTrue(oldVnode.isAsyncPlaceholder)) { | ||
|  |               if (isDef(vnode.asyncFactory.resolved)) { | ||
|  |                   hydrate(oldVnode.elm, vnode, insertedVnodeQueue); | ||
|  |               } | ||
|  |               else { | ||
|  |                   vnode.isAsyncPlaceholder = true; | ||
|  |               } | ||
|  |               return; | ||
|  |           } | ||
|  |           // reuse element for static trees.
 | ||
|  |           // note we only do this if the vnode is cloned -
 | ||
|  |           // if the new node is not cloned it means the render functions have been
 | ||
|  |           // reset by the hot-reload-api and we need to do a proper re-render.
 | ||
|  |           if (isTrue(vnode.isStatic) && | ||
|  |               isTrue(oldVnode.isStatic) && | ||
|  |               vnode.key === oldVnode.key && | ||
|  |               (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) { | ||
|  |               vnode.componentInstance = oldVnode.componentInstance; | ||
|  |               return; | ||
|  |           } | ||
|  |           var i; | ||
|  |           var data = vnode.data; | ||
|  |           if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) { | ||
|  |               i(oldVnode, vnode); | ||
|  |           } | ||
|  |           var oldCh = oldVnode.children; | ||
|  |           var ch = vnode.children; | ||
|  |           if (isDef(data) && isPatchable(vnode)) { | ||
|  |               for (i = 0; i < cbs.update.length; ++i) | ||
|  |                   cbs.update[i](oldVnode, vnode); | ||
|  |               if (isDef((i = data.hook)) && isDef((i = i.update))) | ||
|  |                   i(oldVnode, vnode); | ||
|  |           } | ||
|  |           if (isUndef(vnode.text)) { | ||
|  |               if (isDef(oldCh) && isDef(ch)) { | ||
|  |                   if (oldCh !== ch) | ||
|  |                       updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); | ||
|  |               } | ||
|  |               else if (isDef(ch)) { | ||
|  |                   { | ||
|  |                       checkDuplicateKeys(ch); | ||
|  |                   } | ||
|  |                   if (isDef(oldVnode.text)) | ||
|  |                       nodeOps.setTextContent(elm, ''); | ||
|  |                   addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); | ||
|  |               } | ||
|  |               else if (isDef(oldCh)) { | ||
|  |                   removeVnodes(oldCh, 0, oldCh.length - 1); | ||
|  |               } | ||
|  |               else if (isDef(oldVnode.text)) { | ||
|  |                   nodeOps.setTextContent(elm, ''); | ||
|  |               } | ||
|  |           } | ||
|  |           else if (oldVnode.text !== vnode.text) { | ||
|  |               nodeOps.setTextContent(elm, vnode.text); | ||
|  |           } | ||
|  |           if (isDef(data)) { | ||
|  |               if (isDef((i = data.hook)) && isDef((i = i.postpatch))) | ||
|  |                   i(oldVnode, vnode); | ||
|  |           } | ||
|  |       } | ||
|  |       function invokeInsertHook(vnode, queue, initial) { | ||
|  |           // delay insert hooks for component root nodes, invoke them after the
 | ||
|  |           // element is really inserted
 | ||
|  |           if (isTrue(initial) && isDef(vnode.parent)) { | ||
|  |               vnode.parent.data.pendingInsert = queue; | ||
|  |           } | ||
|  |           else { | ||
|  |               for (var i_6 = 0; i_6 < queue.length; ++i_6) { | ||
|  |                   queue[i_6].data.hook.insert(queue[i_6]); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       var hydrationBailed = false; | ||
|  |       // list of modules that can skip create hook during hydration because they
 | ||
|  |       // are already rendered on the client or has no need for initialization
 | ||
|  |       // Note: style is excluded because it relies on initial clone for future
 | ||
|  |       // deep updates (#7063).
 | ||
|  |       var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); | ||
|  |       // Note: this is a browser-only function so we can assume elms are DOM nodes.
 | ||
|  |       function hydrate(elm, vnode, insertedVnodeQueue, inVPre) { | ||
|  |           var i; | ||
|  |           var tag = vnode.tag, data = vnode.data, children = vnode.children; | ||
|  |           inVPre = inVPre || (data && data.pre); | ||
|  |           vnode.elm = elm; | ||
|  |           if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) { | ||
|  |               vnode.isAsyncPlaceholder = true; | ||
|  |               return true; | ||
|  |           } | ||
|  |           // assert node match
 | ||
|  |           { | ||
|  |               if (!assertNodeMatch(elm, vnode, inVPre)) { | ||
|  |                   return false; | ||
|  |               } | ||
|  |           } | ||
|  |           if (isDef(data)) { | ||
|  |               if (isDef((i = data.hook)) && isDef((i = i.init))) | ||
|  |                   i(vnode, true /* hydrating */); | ||
|  |               if (isDef((i = vnode.componentInstance))) { | ||
|  |                   // child component. it should have hydrated its own tree.
 | ||
|  |                   initComponent(vnode, insertedVnodeQueue); | ||
|  |                   return true; | ||
|  |               } | ||
|  |           } | ||
|  |           if (isDef(tag)) { | ||
|  |               if (isDef(children)) { | ||
|  |                   // empty element, allow client to pick up and populate children
 | ||
|  |                   if (!elm.hasChildNodes()) { | ||
|  |                       createChildren(vnode, children, insertedVnodeQueue); | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       // v-html and domProps: innerHTML
 | ||
|  |                       if (isDef((i = data)) && | ||
|  |                           isDef((i = i.domProps)) && | ||
|  |                           isDef((i = i.innerHTML))) { | ||
|  |                           if (i !== elm.innerHTML) { | ||
|  |                               /* istanbul ignore if */ | ||
|  |                               if (typeof console !== 'undefined' && | ||
|  |                                   !hydrationBailed) { | ||
|  |                                   hydrationBailed = true; | ||
|  |                                   console.warn('Parent: ', elm); | ||
|  |                                   console.warn('server innerHTML: ', i); | ||
|  |                                   console.warn('client innerHTML: ', elm.innerHTML); | ||
|  |                               } | ||
|  |                               return false; | ||
|  |                           } | ||
|  |                       } | ||
|  |                       else { | ||
|  |                           // iterate and compare children lists
 | ||
|  |                           var childrenMatch = true; | ||
|  |                           var childNode = elm.firstChild; | ||
|  |                           for (var i_7 = 0; i_7 < children.length; i_7++) { | ||
|  |                               if (!childNode || | ||
|  |                                   !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) { | ||
|  |                                   childrenMatch = false; | ||
|  |                                   break; | ||
|  |                               } | ||
|  |                               childNode = childNode.nextSibling; | ||
|  |                           } | ||
|  |                           // if childNode is not null, it means the actual childNodes list is
 | ||
|  |                           // longer than the virtual children list.
 | ||
|  |                           if (!childrenMatch || childNode) { | ||
|  |                               /* istanbul ignore if */ | ||
|  |                               if (typeof console !== 'undefined' && | ||
|  |                                   !hydrationBailed) { | ||
|  |                                   hydrationBailed = true; | ||
|  |                                   console.warn('Parent: ', elm); | ||
|  |                                   console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children); | ||
|  |                               } | ||
|  |                               return false; | ||
|  |                           } | ||
|  |                       } | ||
|  |                   } | ||
|  |               } | ||
|  |               if (isDef(data)) { | ||
|  |                   var fullInvoke = false; | ||
|  |                   for (var key in data) { | ||
|  |                       if (!isRenderedModule(key)) { | ||
|  |                           fullInvoke = true; | ||
|  |                           invokeCreateHooks(vnode, insertedVnodeQueue); | ||
|  |                           break; | ||
|  |                       } | ||
|  |                   } | ||
|  |                   if (!fullInvoke && data['class']) { | ||
|  |                       // ensure collecting deps for deep class bindings for future updates
 | ||
|  |                       traverse(data['class']); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |           else if (elm.data !== vnode.text) { | ||
|  |               elm.data = vnode.text; | ||
|  |           } | ||
|  |           return true; | ||
|  |       } | ||
|  |       function assertNodeMatch(node, vnode, inVPre) { | ||
|  |           if (isDef(vnode.tag)) { | ||
|  |               return (vnode.tag.indexOf('vue-component') === 0 || | ||
|  |                   (!isUnknownElement(vnode, inVPre) && | ||
|  |                       vnode.tag.toLowerCase() === | ||
|  |                           (node.tagName && node.tagName.toLowerCase()))); | ||
|  |           } | ||
|  |           else { | ||
|  |               return node.nodeType === (vnode.isComment ? 8 : 3); | ||
|  |           } | ||
|  |       } | ||
|  |       return function patch(oldVnode, vnode, hydrating, removeOnly) { | ||
|  |           if (isUndef(vnode)) { | ||
|  |               if (isDef(oldVnode)) | ||
|  |                   invokeDestroyHook(oldVnode); | ||
|  |               return; | ||
|  |           } | ||
|  |           var isInitialPatch = false; | ||
|  |           var insertedVnodeQueue = []; | ||
|  |           if (isUndef(oldVnode)) { | ||
|  |               // empty mount (likely as component), create new root element
 | ||
|  |               isInitialPatch = true; | ||
|  |               createElm(vnode, insertedVnodeQueue); | ||
|  |           } | ||
|  |           else { | ||
|  |               var isRealElement = isDef(oldVnode.nodeType); | ||
|  |               if (!isRealElement && sameVnode(oldVnode, vnode)) { | ||
|  |                   // patch existing root node
 | ||
|  |                   patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); | ||
|  |               } | ||
|  |               else { | ||
|  |                   if (isRealElement) { | ||
|  |                       // mounting to a real element
 | ||
|  |                       // check if this is server-rendered content and if we can perform
 | ||
|  |                       // a successful hydration.
 | ||
|  |                       if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) { | ||
|  |                           oldVnode.removeAttribute(SSR_ATTR); | ||
|  |                           hydrating = true; | ||
|  |                       } | ||
|  |                       if (isTrue(hydrating)) { | ||
|  |                           if (hydrate(oldVnode, vnode, insertedVnodeQueue)) { | ||
|  |                               invokeInsertHook(vnode, insertedVnodeQueue, true); | ||
|  |                               return oldVnode; | ||
|  |                           } | ||
|  |                           else { | ||
|  |                               warn('The client-side rendered virtual DOM tree is not matching ' + | ||
|  |                                   'server-rendered content. This is likely caused by incorrect ' + | ||
|  |                                   'HTML markup, for example nesting block-level elements inside ' + | ||
|  |                                   '<p>, or missing <tbody>. Bailing hydration and performing ' + | ||
|  |                                   'full client-side render.'); | ||
|  |                           } | ||
|  |                       } | ||
|  |                       // either not server-rendered, or hydration failed.
 | ||
|  |                       // create an empty node and replace it
 | ||
|  |                       oldVnode = emptyNodeAt(oldVnode); | ||
|  |                   } | ||
|  |                   // replacing existing element
 | ||
|  |                   var oldElm = oldVnode.elm; | ||
|  |                   var parentElm = nodeOps.parentNode(oldElm); | ||
|  |                   // create new node
 | ||
|  |                   createElm(vnode, insertedVnodeQueue,  | ||
|  |                   // extremely rare edge case: do not insert if old element is in a
 | ||
|  |                   // leaving transition. Only happens when combining transition +
 | ||
|  |                   // keep-alive + HOCs. (#4590)
 | ||
|  |                   oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)); | ||
|  |                   // update parent placeholder node element, recursively
 | ||
|  |                   if (isDef(vnode.parent)) { | ||
|  |                       var ancestor = vnode.parent; | ||
|  |                       var patchable = isPatchable(vnode); | ||
|  |                       while (ancestor) { | ||
|  |                           for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) { | ||
|  |                               cbs.destroy[i_8](ancestor); | ||
|  |                           } | ||
|  |                           ancestor.elm = vnode.elm; | ||
|  |                           if (patchable) { | ||
|  |                               for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) { | ||
|  |                                   cbs.create[i_9](emptyNode, ancestor); | ||
|  |                               } | ||
|  |                               // #6513
 | ||
|  |                               // invoke insert hooks that may have been merged by create hooks.
 | ||
|  |                               // e.g. for directives that uses the "inserted" hook.
 | ||
|  |                               var insert_1 = ancestor.data.hook.insert; | ||
|  |                               if (insert_1.merged) { | ||
|  |                                   // start at index 1 to avoid re-invoking component mounted hook
 | ||
|  |                                   // clone insert hooks to avoid being mutated during iteration.
 | ||
|  |                                   // e.g. for customed directives under transition group.
 | ||
|  |                                   var cloned = insert_1.fns.slice(1); | ||
|  |                                   for (var i_10 = 0; i_10 < cloned.length; i_10++) { | ||
|  |                                       cloned[i_10](); | ||
|  |                                   } | ||
|  |                               } | ||
|  |                           } | ||
|  |                           else { | ||
|  |                               registerRef(ancestor); | ||
|  |                           } | ||
|  |                           ancestor = ancestor.parent; | ||
|  |                       } | ||
|  |                   } | ||
|  |                   // destroy old node
 | ||
|  |                   if (isDef(parentElm)) { | ||
|  |                       removeVnodes([oldVnode], 0, 0); | ||
|  |                   } | ||
|  |                   else if (isDef(oldVnode.tag)) { | ||
|  |                       invokeDestroyHook(oldVnode); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |           invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch); | ||
|  |           return vnode.elm; | ||
|  |       }; | ||
|  |   } | ||
|  | 
 | ||
|  |   var directives = { | ||
|  |       create: updateDirectives, | ||
|  |       update: updateDirectives, | ||
|  |       destroy: function unbindDirectives(vnode) { | ||
|  |           // @ts-expect-error emptyNode is not VNodeWithData
 | ||
|  |           updateDirectives(vnode, emptyNode); | ||
|  |       } | ||
|  |   }; | ||
|  |   function updateDirectives(oldVnode, vnode) { | ||
|  |       if (oldVnode.data.directives || vnode.data.directives) { | ||
|  |           _update(oldVnode, vnode); | ||
|  |       } | ||
|  |   } | ||
|  |   function _update(oldVnode, vnode) { | ||
|  |       var isCreate = oldVnode === emptyNode; | ||
|  |       var isDestroy = vnode === emptyNode; | ||
|  |       var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context); | ||
|  |       var newDirs = normalizeDirectives(vnode.data.directives, vnode.context); | ||
|  |       var dirsWithInsert = []; | ||
|  |       var dirsWithPostpatch = []; | ||
|  |       var key, oldDir, dir; | ||
|  |       for (key in newDirs) { | ||
|  |           oldDir = oldDirs[key]; | ||
|  |           dir = newDirs[key]; | ||
|  |           if (!oldDir) { | ||
|  |               // new directive, bind
 | ||
|  |               callHook(dir, 'bind', vnode, oldVnode); | ||
|  |               if (dir.def && dir.def.inserted) { | ||
|  |                   dirsWithInsert.push(dir); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               // existing directive, update
 | ||
|  |               dir.oldValue = oldDir.value; | ||
|  |               dir.oldArg = oldDir.arg; | ||
|  |               callHook(dir, 'update', vnode, oldVnode); | ||
|  |               if (dir.def && dir.def.componentUpdated) { | ||
|  |                   dirsWithPostpatch.push(dir); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       if (dirsWithInsert.length) { | ||
|  |           var callInsert = function () { | ||
|  |               for (var i = 0; i < dirsWithInsert.length; i++) { | ||
|  |                   callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode); | ||
|  |               } | ||
|  |           }; | ||
|  |           if (isCreate) { | ||
|  |               mergeVNodeHook(vnode, 'insert', callInsert); | ||
|  |           } | ||
|  |           else { | ||
|  |               callInsert(); | ||
|  |           } | ||
|  |       } | ||
|  |       if (dirsWithPostpatch.length) { | ||
|  |           mergeVNodeHook(vnode, 'postpatch', function () { | ||
|  |               for (var i = 0; i < dirsWithPostpatch.length; i++) { | ||
|  |                   callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode); | ||
|  |               } | ||
|  |           }); | ||
|  |       } | ||
|  |       if (!isCreate) { | ||
|  |           for (key in oldDirs) { | ||
|  |               if (!newDirs[key]) { | ||
|  |                   // no longer present, unbind
 | ||
|  |                   callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   var emptyModifiers = Object.create(null); | ||
|  |   function normalizeDirectives(dirs, vm) { | ||
|  |       var res = Object.create(null); | ||
|  |       if (!dirs) { | ||
|  |           // $flow-disable-line
 | ||
|  |           return res; | ||
|  |       } | ||
|  |       var i, dir; | ||
|  |       for (i = 0; i < dirs.length; i++) { | ||
|  |           dir = dirs[i]; | ||
|  |           if (!dir.modifiers) { | ||
|  |               // $flow-disable-line
 | ||
|  |               dir.modifiers = emptyModifiers; | ||
|  |           } | ||
|  |           res[getRawDirName(dir)] = dir; | ||
|  |           if (vm._setupState && vm._setupState.__sfc) { | ||
|  |               var setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name); | ||
|  |               if (typeof setupDef === 'function') { | ||
|  |                   dir.def = { | ||
|  |                       bind: setupDef, | ||
|  |                       update: setupDef, | ||
|  |                   }; | ||
|  |               } | ||
|  |               else { | ||
|  |                   dir.def = setupDef; | ||
|  |               } | ||
|  |           } | ||
|  |           dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true); | ||
|  |       } | ||
|  |       // $flow-disable-line
 | ||
|  |       return res; | ||
|  |   } | ||
|  |   function getRawDirName(dir) { | ||
|  |       return (dir.rawName || "".concat(dir.name, ".").concat(Object.keys(dir.modifiers || {}).join('.'))); | ||
|  |   } | ||
|  |   function callHook(dir, hook, vnode, oldVnode, isDestroy) { | ||
|  |       var fn = dir.def && dir.def[hook]; | ||
|  |       if (fn) { | ||
|  |           try { | ||
|  |               fn(vnode.elm, dir, vnode, oldVnode, isDestroy); | ||
|  |           } | ||
|  |           catch (e) { | ||
|  |               handleError(e, vnode.context, "directive ".concat(dir.name, " ").concat(hook, " hook")); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   var baseModules = [ref, directives]; | ||
|  | 
 | ||
|  |   function updateAttrs(oldVnode, vnode) { | ||
|  |       var opts = vnode.componentOptions; | ||
|  |       if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) { | ||
|  |           return; | ||
|  |       } | ||
|  |       if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var key, cur, old; | ||
|  |       var elm = vnode.elm; | ||
|  |       var oldAttrs = oldVnode.data.attrs || {}; | ||
|  |       var attrs = vnode.data.attrs || {}; | ||
|  |       // clone observed objects, as the user probably wants to mutate it
 | ||
|  |       if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) { | ||
|  |           attrs = vnode.data.attrs = extend({}, attrs); | ||
|  |       } | ||
|  |       for (key in attrs) { | ||
|  |           cur = attrs[key]; | ||
|  |           old = oldAttrs[key]; | ||
|  |           if (old !== cur) { | ||
|  |               setAttr(elm, key, cur, vnode.data.pre); | ||
|  |           } | ||
|  |       } | ||
|  |       // #4391: in IE9, setting type can reset value for input[type=radio]
 | ||
|  |       // #6666: IE/Edge forces progress value down to 1 before setting a max
 | ||
|  |       /* istanbul ignore if */ | ||
|  |       if ((isIE || isEdge) && attrs.value !== oldAttrs.value) { | ||
|  |           setAttr(elm, 'value', attrs.value); | ||
|  |       } | ||
|  |       for (key in oldAttrs) { | ||
|  |           if (isUndef(attrs[key])) { | ||
|  |               if (isXlink(key)) { | ||
|  |                   elm.removeAttributeNS(xlinkNS, getXlinkProp(key)); | ||
|  |               } | ||
|  |               else if (!isEnumeratedAttr(key)) { | ||
|  |                   elm.removeAttribute(key); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function setAttr(el, key, value, isInPre) { | ||
|  |       if (isInPre || el.tagName.indexOf('-') > -1) { | ||
|  |           baseSetAttr(el, key, value); | ||
|  |       } | ||
|  |       else if (isBooleanAttr(key)) { | ||
|  |           // set attribute for blank value
 | ||
|  |           // e.g. <option disabled>Select one</option>
 | ||
|  |           if (isFalsyAttrValue(value)) { | ||
|  |               el.removeAttribute(key); | ||
|  |           } | ||
|  |           else { | ||
|  |               // technically allowfullscreen is a boolean attribute for <iframe>,
 | ||
|  |               // but Flash expects a value of "true" when used on <embed> tag
 | ||
|  |               value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key; | ||
|  |               el.setAttribute(key, value); | ||
|  |           } | ||
|  |       } | ||
|  |       else if (isEnumeratedAttr(key)) { | ||
|  |           el.setAttribute(key, convertEnumeratedValue(key, value)); | ||
|  |       } | ||
|  |       else if (isXlink(key)) { | ||
|  |           if (isFalsyAttrValue(value)) { | ||
|  |               el.removeAttributeNS(xlinkNS, getXlinkProp(key)); | ||
|  |           } | ||
|  |           else { | ||
|  |               el.setAttributeNS(xlinkNS, key, value); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           baseSetAttr(el, key, value); | ||
|  |       } | ||
|  |   } | ||
|  |   function baseSetAttr(el, key, value) { | ||
|  |       if (isFalsyAttrValue(value)) { | ||
|  |           el.removeAttribute(key); | ||
|  |       } | ||
|  |       else { | ||
|  |           // #7138: IE10 & 11 fires input event when setting placeholder on
 | ||
|  |           // <textarea>... block the first input event and remove the blocker
 | ||
|  |           // immediately.
 | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (isIE && | ||
|  |               !isIE9 && | ||
|  |               el.tagName === 'TEXTAREA' && | ||
|  |               key === 'placeholder' && | ||
|  |               value !== '' && | ||
|  |               !el.__ieph) { | ||
|  |               var blocker_1 = function (e) { | ||
|  |                   e.stopImmediatePropagation(); | ||
|  |                   el.removeEventListener('input', blocker_1); | ||
|  |               }; | ||
|  |               el.addEventListener('input', blocker_1); | ||
|  |               // $flow-disable-line
 | ||
|  |               el.__ieph = true; /* IE placeholder patched */ | ||
|  |           } | ||
|  |           el.setAttribute(key, value); | ||
|  |       } | ||
|  |   } | ||
|  |   var attrs = { | ||
|  |       create: updateAttrs, | ||
|  |       update: updateAttrs | ||
|  |   }; | ||
|  | 
 | ||
|  |   function updateClass(oldVnode, vnode) { | ||
|  |       var el = vnode.elm; | ||
|  |       var data = vnode.data; | ||
|  |       var oldData = oldVnode.data; | ||
|  |       if (isUndef(data.staticClass) && | ||
|  |           isUndef(data.class) && | ||
|  |           (isUndef(oldData) || | ||
|  |               (isUndef(oldData.staticClass) && isUndef(oldData.class)))) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var cls = genClassForVnode(vnode); | ||
|  |       // handle transition classes
 | ||
|  |       var transitionClass = el._transitionClasses; | ||
|  |       if (isDef(transitionClass)) { | ||
|  |           cls = concat(cls, stringifyClass(transitionClass)); | ||
|  |       } | ||
|  |       // set the class
 | ||
|  |       if (cls !== el._prevClass) { | ||
|  |           el.setAttribute('class', cls); | ||
|  |           el._prevClass = cls; | ||
|  |       } | ||
|  |   } | ||
|  |   var klass = { | ||
|  |       create: updateClass, | ||
|  |       update: updateClass | ||
|  |   }; | ||
|  | 
 | ||
|  |   // in some cases, the event used has to be determined at runtime
 | ||
|  |   // so we used some reserved tokens during compile.
 | ||
|  |   var RANGE_TOKEN = '__r'; | ||
|  |   var CHECKBOX_RADIO_TOKEN = '__c'; | ||
|  | 
 | ||
|  |   // normalize v-model event tokens that can only be determined at runtime.
 | ||
|  |   // it's important to place the event as the first in the array because
 | ||
|  |   // the whole point is ensuring the v-model callback gets called before
 | ||
|  |   // user-attached handlers.
 | ||
|  |   function normalizeEvents(on) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (isDef(on[RANGE_TOKEN])) { | ||
|  |           // IE input[type=range] only supports `change` event
 | ||
|  |           var event_1 = isIE ? 'change' : 'input'; | ||
|  |           on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []); | ||
|  |           delete on[RANGE_TOKEN]; | ||
|  |       } | ||
|  |       // This was originally intended to fix #4521 but no longer necessary
 | ||
|  |       // after 2.5. Keeping it for backwards compat with generated code from < 2.4
 | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (isDef(on[CHECKBOX_RADIO_TOKEN])) { | ||
|  |           on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []); | ||
|  |           delete on[CHECKBOX_RADIO_TOKEN]; | ||
|  |       } | ||
|  |   } | ||
|  |   var target; | ||
|  |   function createOnceHandler(event, handler, capture) { | ||
|  |       var _target = target; // save current target element in closure
 | ||
|  |       return function onceHandler() { | ||
|  |           var res = handler.apply(null, arguments); | ||
|  |           if (res !== null) { | ||
|  |               remove(event, onceHandler, capture, _target); | ||
|  |           } | ||
|  |       }; | ||
|  |   } | ||
|  |   // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp
 | ||
|  |   // implementation and does not fire microtasks in between event propagation, so
 | ||
|  |   // safe to exclude.
 | ||
|  |   var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53); | ||
|  |   function add(name, handler, capture, passive) { | ||
|  |       // async edge case #6566: inner click event triggers patch, event handler
 | ||
|  |       // attached to outer element during patch, and triggered again. This
 | ||
|  |       // happens because browsers fire microtask ticks between event propagation.
 | ||
|  |       // the solution is simple: we save the timestamp when a handler is attached,
 | ||
|  |       // and the handler would only fire if the event passed to it was fired
 | ||
|  |       // AFTER it was attached.
 | ||
|  |       if (useMicrotaskFix) { | ||
|  |           var attachedTimestamp_1 = currentFlushTimestamp; | ||
|  |           var original_1 = handler; | ||
|  |           //@ts-expect-error
 | ||
|  |           handler = original_1._wrapper = function (e) { | ||
|  |               if ( | ||
|  |               // no bubbling, should always fire.
 | ||
|  |               // this is just a safety net in case event.timeStamp is unreliable in
 | ||
|  |               // certain weird environments...
 | ||
|  |               e.target === e.currentTarget || | ||
|  |                   // event is fired after handler attachment
 | ||
|  |                   e.timeStamp >= attachedTimestamp_1 || | ||
|  |                   // bail for environments that have buggy event.timeStamp implementations
 | ||
|  |                   // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
 | ||
|  |                   // #9681 QtWebEngine event.timeStamp is negative value
 | ||
|  |                   e.timeStamp <= 0 || | ||
|  |                   // #9448 bail if event is fired in another document in a multi-page
 | ||
|  |                   // electron/nw.js app, since event.timeStamp will be using a different
 | ||
|  |                   // starting reference
 | ||
|  |                   e.target.ownerDocument !== document) { | ||
|  |                   return original_1.apply(this, arguments); | ||
|  |               } | ||
|  |           }; | ||
|  |       } | ||
|  |       target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture); | ||
|  |   } | ||
|  |   function remove(name, handler, capture, _target) { | ||
|  |       (_target || target).removeEventListener(name,  | ||
|  |       //@ts-expect-error
 | ||
|  |       handler._wrapper || handler, capture); | ||
|  |   } | ||
|  |   function updateDOMListeners(oldVnode, vnode) { | ||
|  |       if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var on = vnode.data.on || {}; | ||
|  |       var oldOn = oldVnode.data.on || {}; | ||
|  |       // vnode is empty when removing all listeners,
 | ||
|  |       // and use old vnode dom element
 | ||
|  |       target = vnode.elm || oldVnode.elm; | ||
|  |       normalizeEvents(on); | ||
|  |       updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context); | ||
|  |       target = undefined; | ||
|  |   } | ||
|  |   var events = { | ||
|  |       create: updateDOMListeners, | ||
|  |       update: updateDOMListeners, | ||
|  |       // @ts-expect-error emptyNode has actually data
 | ||
|  |       destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); } | ||
|  |   }; | ||
|  | 
 | ||
|  |   var svgContainer; | ||
|  |   function updateDOMProps(oldVnode, vnode) { | ||
|  |       if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var key, cur; | ||
|  |       var elm = vnode.elm; | ||
|  |       var oldProps = oldVnode.data.domProps || {}; | ||
|  |       var props = vnode.data.domProps || {}; | ||
|  |       // clone observed objects, as the user probably wants to mutate it
 | ||
|  |       if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) { | ||
|  |           props = vnode.data.domProps = extend({}, props); | ||
|  |       } | ||
|  |       for (key in oldProps) { | ||
|  |           if (!(key in props)) { | ||
|  |               elm[key] = ''; | ||
|  |           } | ||
|  |       } | ||
|  |       for (key in props) { | ||
|  |           cur = props[key]; | ||
|  |           // ignore children if the node has textContent or innerHTML,
 | ||
|  |           // as these will throw away existing DOM nodes and cause removal errors
 | ||
|  |           // on subsequent patches (#3360)
 | ||
|  |           if (key === 'textContent' || key === 'innerHTML') { | ||
|  |               if (vnode.children) | ||
|  |                   vnode.children.length = 0; | ||
|  |               if (cur === oldProps[key]) | ||
|  |                   continue; | ||
|  |               // #6601 work around Chrome version <= 55 bug where single textNode
 | ||
|  |               // replaced by innerHTML/textContent retains its parentNode property
 | ||
|  |               if (elm.childNodes.length === 1) { | ||
|  |                   elm.removeChild(elm.childNodes[0]); | ||
|  |               } | ||
|  |           } | ||
|  |           if (key === 'value' && elm.tagName !== 'PROGRESS') { | ||
|  |               // store value as _value as well since
 | ||
|  |               // non-string values will be stringified
 | ||
|  |               elm._value = cur; | ||
|  |               // avoid resetting cursor position when value is the same
 | ||
|  |               var strCur = isUndef(cur) ? '' : String(cur); | ||
|  |               if (shouldUpdateValue(elm, strCur)) { | ||
|  |                   elm.value = strCur; | ||
|  |               } | ||
|  |           } | ||
|  |           else if (key === 'innerHTML' && | ||
|  |               isSVG(elm.tagName) && | ||
|  |               isUndef(elm.innerHTML)) { | ||
|  |               // IE doesn't support innerHTML for SVG elements
 | ||
|  |               svgContainer = svgContainer || document.createElement('div'); | ||
|  |               svgContainer.innerHTML = "<svg>".concat(cur, "</svg>"); | ||
|  |               var svg = svgContainer.firstChild; | ||
|  |               while (elm.firstChild) { | ||
|  |                   elm.removeChild(elm.firstChild); | ||
|  |               } | ||
|  |               while (svg.firstChild) { | ||
|  |                   elm.appendChild(svg.firstChild); | ||
|  |               } | ||
|  |           } | ||
|  |           else if ( | ||
|  |           // skip the update if old and new VDOM state is the same.
 | ||
|  |           // `value` is handled separately because the DOM value may be temporarily
 | ||
|  |           // out of sync with VDOM state due to focus, composition and modifiers.
 | ||
|  |           // This  #4521 by skipping the unnecessary `checked` update.
 | ||
|  |           cur !== oldProps[key]) { | ||
|  |               // some property updates can throw
 | ||
|  |               // e.g. `value` on <progress> w/ non-finite value
 | ||
|  |               try { | ||
|  |                   elm[key] = cur; | ||
|  |               } | ||
|  |               catch (e) { } | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function shouldUpdateValue(elm, checkVal) { | ||
|  |       return ( | ||
|  |       //@ts-expect-error
 | ||
|  |       !elm.composing && | ||
|  |           (elm.tagName === 'OPTION' || | ||
|  |               isNotInFocusAndDirty(elm, checkVal) || | ||
|  |               isDirtyWithModifiers(elm, checkVal))); | ||
|  |   } | ||
|  |   function isNotInFocusAndDirty(elm, checkVal) { | ||
|  |       // return true when textbox (.number and .trim) loses focus and its value is
 | ||
|  |       // not equal to the updated value
 | ||
|  |       var notInFocus = true; | ||
|  |       // #6157
 | ||
|  |       // work around IE bug when accessing document.activeElement in an iframe
 | ||
|  |       try { | ||
|  |           notInFocus = document.activeElement !== elm; | ||
|  |       } | ||
|  |       catch (e) { } | ||
|  |       return notInFocus && elm.value !== checkVal; | ||
|  |   } | ||
|  |   function isDirtyWithModifiers(elm, newVal) { | ||
|  |       var value = elm.value; | ||
|  |       var modifiers = elm._vModifiers; // injected by v-model runtime
 | ||
|  |       if (isDef(modifiers)) { | ||
|  |           if (modifiers.number) { | ||
|  |               return toNumber(value) !== toNumber(newVal); | ||
|  |           } | ||
|  |           if (modifiers.trim) { | ||
|  |               return value.trim() !== newVal.trim(); | ||
|  |           } | ||
|  |       } | ||
|  |       return value !== newVal; | ||
|  |   } | ||
|  |   var domProps = { | ||
|  |       create: updateDOMProps, | ||
|  |       update: updateDOMProps | ||
|  |   }; | ||
|  | 
 | ||
|  |   var parseStyleText = cached(function (cssText) { | ||
|  |       var res = {}; | ||
|  |       var listDelimiter = /;(?![^(]*\))/g; | ||
|  |       var propertyDelimiter = /:(.+)/; | ||
|  |       cssText.split(listDelimiter).forEach(function (item) { | ||
|  |           if (item) { | ||
|  |               var tmp = item.split(propertyDelimiter); | ||
|  |               tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim()); | ||
|  |           } | ||
|  |       }); | ||
|  |       return res; | ||
|  |   }); | ||
|  |   // merge static and dynamic style data on the same vnode
 | ||
|  |   function normalizeStyleData(data) { | ||
|  |       var style = normalizeStyleBinding(data.style); | ||
|  |       // static style is pre-processed into an object during compilation
 | ||
|  |       // and is always a fresh object, so it's safe to merge into it
 | ||
|  |       return data.staticStyle ? extend(data.staticStyle, style) : style; | ||
|  |   } | ||
|  |   // normalize possible array / string values into Object
 | ||
|  |   function normalizeStyleBinding(bindingStyle) { | ||
|  |       if (Array.isArray(bindingStyle)) { | ||
|  |           return toObject(bindingStyle); | ||
|  |       } | ||
|  |       if (typeof bindingStyle === 'string') { | ||
|  |           return parseStyleText(bindingStyle); | ||
|  |       } | ||
|  |       return bindingStyle; | ||
|  |   } | ||
|  |   /** | ||
|  |    * parent component style should be after child's | ||
|  |    * so that parent component's style could override it | ||
|  |    */ | ||
|  |   function getStyle(vnode, checkChild) { | ||
|  |       var res = {}; | ||
|  |       var styleData; | ||
|  |       if (checkChild) { | ||
|  |           var childNode = vnode; | ||
|  |           while (childNode.componentInstance) { | ||
|  |               childNode = childNode.componentInstance._vnode; | ||
|  |               if (childNode && | ||
|  |                   childNode.data && | ||
|  |                   (styleData = normalizeStyleData(childNode.data))) { | ||
|  |                   extend(res, styleData); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       if ((styleData = normalizeStyleData(vnode.data))) { | ||
|  |           extend(res, styleData); | ||
|  |       } | ||
|  |       var parentNode = vnode; | ||
|  |       // @ts-expect-error parentNode.parent not VNodeWithData
 | ||
|  |       while ((parentNode = parentNode.parent)) { | ||
|  |           if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) { | ||
|  |               extend(res, styleData); | ||
|  |           } | ||
|  |       } | ||
|  |       return res; | ||
|  |   } | ||
|  | 
 | ||
|  |   var cssVarRE = /^--/; | ||
|  |   var importantRE = /\s*!important$/; | ||
|  |   var setProp = function (el, name, val) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (cssVarRE.test(name)) { | ||
|  |           el.style.setProperty(name, val); | ||
|  |       } | ||
|  |       else if (importantRE.test(val)) { | ||
|  |           el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important'); | ||
|  |       } | ||
|  |       else { | ||
|  |           var normalizedName = normalize(name); | ||
|  |           if (Array.isArray(val)) { | ||
|  |               // Support values array created by autoprefixer, e.g.
 | ||
|  |               // {display: ["-webkit-box", "-ms-flexbox", "flex"]}
 | ||
|  |               // Set them one by one, and the browser will only set those it can recognize
 | ||
|  |               for (var i = 0, len = val.length; i < len; i++) { | ||
|  |                   el.style[normalizedName] = val[i]; | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               el.style[normalizedName] = val; | ||
|  |           } | ||
|  |       } | ||
|  |   }; | ||
|  |   var vendorNames = ['Webkit', 'Moz', 'ms']; | ||
|  |   var emptyStyle; | ||
|  |   var normalize = cached(function (prop) { | ||
|  |       emptyStyle = emptyStyle || document.createElement('div').style; | ||
|  |       prop = camelize(prop); | ||
|  |       if (prop !== 'filter' && prop in emptyStyle) { | ||
|  |           return prop; | ||
|  |       } | ||
|  |       var capName = prop.charAt(0).toUpperCase() + prop.slice(1); | ||
|  |       for (var i = 0; i < vendorNames.length; i++) { | ||
|  |           var name_1 = vendorNames[i] + capName; | ||
|  |           if (name_1 in emptyStyle) { | ||
|  |               return name_1; | ||
|  |           } | ||
|  |       } | ||
|  |   }); | ||
|  |   function updateStyle(oldVnode, vnode) { | ||
|  |       var data = vnode.data; | ||
|  |       var oldData = oldVnode.data; | ||
|  |       if (isUndef(data.staticStyle) && | ||
|  |           isUndef(data.style) && | ||
|  |           isUndef(oldData.staticStyle) && | ||
|  |           isUndef(oldData.style)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var cur, name; | ||
|  |       var el = vnode.elm; | ||
|  |       var oldStaticStyle = oldData.staticStyle; | ||
|  |       var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; | ||
|  |       // if static style exists, stylebinding already merged into it when doing normalizeStyleData
 | ||
|  |       var oldStyle = oldStaticStyle || oldStyleBinding; | ||
|  |       var style = normalizeStyleBinding(vnode.data.style) || {}; | ||
|  |       // store normalized style under a different key for next diff
 | ||
|  |       // make sure to clone it if it's reactive, since the user likely wants
 | ||
|  |       // to mutate it.
 | ||
|  |       vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style; | ||
|  |       var newStyle = getStyle(vnode, true); | ||
|  |       for (name in oldStyle) { | ||
|  |           if (isUndef(newStyle[name])) { | ||
|  |               setProp(el, name, ''); | ||
|  |           } | ||
|  |       } | ||
|  |       for (name in newStyle) { | ||
|  |           cur = newStyle[name]; | ||
|  |           // ie9 setting to null has no effect, must use empty string
 | ||
|  |           setProp(el, name, cur == null ? '' : cur); | ||
|  |       } | ||
|  |   } | ||
|  |   var style = { | ||
|  |       create: updateStyle, | ||
|  |       update: updateStyle | ||
|  |   }; | ||
|  | 
 | ||
|  |   var whitespaceRE = /\s+/; | ||
|  |   /** | ||
|  |    * Add class with compatibility for SVG since classList is not supported on | ||
|  |    * SVG elements in IE | ||
|  |    */ | ||
|  |   function addClass(el, cls) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (!cls || !(cls = cls.trim())) { | ||
|  |           return; | ||
|  |       } | ||
|  |       /* istanbul ignore else */ | ||
|  |       if (el.classList) { | ||
|  |           if (cls.indexOf(' ') > -1) { | ||
|  |               cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); }); | ||
|  |           } | ||
|  |           else { | ||
|  |               el.classList.add(cls); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           var cur = " ".concat(el.getAttribute('class') || '', " "); | ||
|  |           if (cur.indexOf(' ' + cls + ' ') < 0) { | ||
|  |               el.setAttribute('class', (cur + cls).trim()); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   /** | ||
|  |    * Remove class with compatibility for SVG since classList is not supported on | ||
|  |    * SVG elements in IE | ||
|  |    */ | ||
|  |   function removeClass(el, cls) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (!cls || !(cls = cls.trim())) { | ||
|  |           return; | ||
|  |       } | ||
|  |       /* istanbul ignore else */ | ||
|  |       if (el.classList) { | ||
|  |           if (cls.indexOf(' ') > -1) { | ||
|  |               cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); }); | ||
|  |           } | ||
|  |           else { | ||
|  |               el.classList.remove(cls); | ||
|  |           } | ||
|  |           if (!el.classList.length) { | ||
|  |               el.removeAttribute('class'); | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           var cur = " ".concat(el.getAttribute('class') || '', " "); | ||
|  |           var tar = ' ' + cls + ' '; | ||
|  |           while (cur.indexOf(tar) >= 0) { | ||
|  |               cur = cur.replace(tar, ' '); | ||
|  |           } | ||
|  |           cur = cur.trim(); | ||
|  |           if (cur) { | ||
|  |               el.setAttribute('class', cur); | ||
|  |           } | ||
|  |           else { | ||
|  |               el.removeAttribute('class'); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   function resolveTransition(def) { | ||
|  |       if (!def) { | ||
|  |           return; | ||
|  |       } | ||
|  |       /* istanbul ignore else */ | ||
|  |       if (typeof def === 'object') { | ||
|  |           var res = {}; | ||
|  |           if (def.css !== false) { | ||
|  |               extend(res, autoCssTransition(def.name || 'v')); | ||
|  |           } | ||
|  |           extend(res, def); | ||
|  |           return res; | ||
|  |       } | ||
|  |       else if (typeof def === 'string') { | ||
|  |           return autoCssTransition(def); | ||
|  |       } | ||
|  |   } | ||
|  |   var autoCssTransition = cached(function (name) { | ||
|  |       return { | ||
|  |           enterClass: "".concat(name, "-enter"), | ||
|  |           enterToClass: "".concat(name, "-enter-to"), | ||
|  |           enterActiveClass: "".concat(name, "-enter-active"), | ||
|  |           leaveClass: "".concat(name, "-leave"), | ||
|  |           leaveToClass: "".concat(name, "-leave-to"), | ||
|  |           leaveActiveClass: "".concat(name, "-leave-active") | ||
|  |       }; | ||
|  |   }); | ||
|  |   var hasTransition = inBrowser && !isIE9; | ||
|  |   var TRANSITION = 'transition'; | ||
|  |   var ANIMATION = 'animation'; | ||
|  |   // Transition property/event sniffing
 | ||
|  |   var transitionProp = 'transition'; | ||
|  |   var transitionEndEvent = 'transitionend'; | ||
|  |   var animationProp = 'animation'; | ||
|  |   var animationEndEvent = 'animationend'; | ||
|  |   if (hasTransition) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (window.ontransitionend === undefined && | ||
|  |           window.onwebkittransitionend !== undefined) { | ||
|  |           transitionProp = 'WebkitTransition'; | ||
|  |           transitionEndEvent = 'webkitTransitionEnd'; | ||
|  |       } | ||
|  |       if (window.onanimationend === undefined && | ||
|  |           window.onwebkitanimationend !== undefined) { | ||
|  |           animationProp = 'WebkitAnimation'; | ||
|  |           animationEndEvent = 'webkitAnimationEnd'; | ||
|  |       } | ||
|  |   } | ||
|  |   // binding to window is necessary to make hot reload work in IE in strict mode
 | ||
|  |   var raf = inBrowser | ||
|  |       ? window.requestAnimationFrame | ||
|  |           ? window.requestAnimationFrame.bind(window) | ||
|  |           : setTimeout | ||
|  |       : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); }; | ||
|  |   function nextFrame(fn) { | ||
|  |       raf(function () { | ||
|  |           // @ts-expect-error
 | ||
|  |           raf(fn); | ||
|  |       }); | ||
|  |   } | ||
|  |   function addTransitionClass(el, cls) { | ||
|  |       var transitionClasses = el._transitionClasses || (el._transitionClasses = []); | ||
|  |       if (transitionClasses.indexOf(cls) < 0) { | ||
|  |           transitionClasses.push(cls); | ||
|  |           addClass(el, cls); | ||
|  |       } | ||
|  |   } | ||
|  |   function removeTransitionClass(el, cls) { | ||
|  |       if (el._transitionClasses) { | ||
|  |           remove$2(el._transitionClasses, cls); | ||
|  |       } | ||
|  |       removeClass(el, cls); | ||
|  |   } | ||
|  |   function whenTransitionEnds(el, expectedType, cb) { | ||
|  |       var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount; | ||
|  |       if (!type) | ||
|  |           return cb(); | ||
|  |       var event = type === TRANSITION ? transitionEndEvent : animationEndEvent; | ||
|  |       var ended = 0; | ||
|  |       var end = function () { | ||
|  |           el.removeEventListener(event, onEnd); | ||
|  |           cb(); | ||
|  |       }; | ||
|  |       var onEnd = function (e) { | ||
|  |           if (e.target === el) { | ||
|  |               if (++ended >= propCount) { | ||
|  |                   end(); | ||
|  |               } | ||
|  |           } | ||
|  |       }; | ||
|  |       setTimeout(function () { | ||
|  |           if (ended < propCount) { | ||
|  |               end(); | ||
|  |           } | ||
|  |       }, timeout + 1); | ||
|  |       el.addEventListener(event, onEnd); | ||
|  |   } | ||
|  |   var transformRE = /\b(transform|all)(,|$)/; | ||
|  |   function getTransitionInfo(el, expectedType) { | ||
|  |       var styles = window.getComputedStyle(el); | ||
|  |       // JSDOM may return undefined for transition properties
 | ||
|  |       var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', '); | ||
|  |       var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', '); | ||
|  |       var transitionTimeout = getTimeout(transitionDelays, transitionDurations); | ||
|  |       var animationDelays = (styles[animationProp + 'Delay'] || '').split(', '); | ||
|  |       var animationDurations = (styles[animationProp + 'Duration'] || '').split(', '); | ||
|  |       var animationTimeout = getTimeout(animationDelays, animationDurations); | ||
|  |       var type; | ||
|  |       var timeout = 0; | ||
|  |       var propCount = 0; | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (expectedType === TRANSITION) { | ||
|  |           if (transitionTimeout > 0) { | ||
|  |               type = TRANSITION; | ||
|  |               timeout = transitionTimeout; | ||
|  |               propCount = transitionDurations.length; | ||
|  |           } | ||
|  |       } | ||
|  |       else if (expectedType === ANIMATION) { | ||
|  |           if (animationTimeout > 0) { | ||
|  |               type = ANIMATION; | ||
|  |               timeout = animationTimeout; | ||
|  |               propCount = animationDurations.length; | ||
|  |           } | ||
|  |       } | ||
|  |       else { | ||
|  |           timeout = Math.max(transitionTimeout, animationTimeout); | ||
|  |           type = | ||
|  |               timeout > 0 | ||
|  |                   ? transitionTimeout > animationTimeout | ||
|  |                       ? TRANSITION | ||
|  |                       : ANIMATION | ||
|  |                   : null; | ||
|  |           propCount = type | ||
|  |               ? type === TRANSITION | ||
|  |                   ? transitionDurations.length | ||
|  |                   : animationDurations.length | ||
|  |               : 0; | ||
|  |       } | ||
|  |       var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']); | ||
|  |       return { | ||
|  |           type: type, | ||
|  |           timeout: timeout, | ||
|  |           propCount: propCount, | ||
|  |           hasTransform: hasTransform | ||
|  |       }; | ||
|  |   } | ||
|  |   function getTimeout(delays, durations) { | ||
|  |       /* istanbul ignore next */ | ||
|  |       while (delays.length < durations.length) { | ||
|  |           delays = delays.concat(delays); | ||
|  |       } | ||
|  |       return Math.max.apply(null, durations.map(function (d, i) { | ||
|  |           return toMs(d) + toMs(delays[i]); | ||
|  |       })); | ||
|  |   } | ||
|  |   // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers
 | ||
|  |   // in a locale-dependent way, using a comma instead of a dot.
 | ||
|  |   // If comma is not replaced with a dot, the input will be rounded down (i.e. acting
 | ||
|  |   // as a floor function) causing unexpected behaviors
 | ||
|  |   function toMs(s) { | ||
|  |       return Number(s.slice(0, -1).replace(',', '.')) * 1000; | ||
|  |   } | ||
|  | 
 | ||
|  |   function enter(vnode, toggleDisplay) { | ||
|  |       var el = vnode.elm; | ||
|  |       // call leave callback now
 | ||
|  |       if (isDef(el._leaveCb)) { | ||
|  |           el._leaveCb.cancelled = true; | ||
|  |           el._leaveCb(); | ||
|  |       } | ||
|  |       var data = resolveTransition(vnode.data.transition); | ||
|  |       if (isUndef(data)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (isDef(el._enterCb) || el.nodeType !== 1) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration; | ||
|  |       // activeInstance will always be the <transition> component managing this
 | ||
|  |       // transition. One edge case to check is when the <transition> is placed
 | ||
|  |       // as the root node of a child component. In that case we need to check
 | ||
|  |       // <transition>'s parent for appear check.
 | ||
|  |       var context = activeInstance; | ||
|  |       var transitionNode = activeInstance.$vnode; | ||
|  |       while (transitionNode && transitionNode.parent) { | ||
|  |           context = transitionNode.context; | ||
|  |           transitionNode = transitionNode.parent; | ||
|  |       } | ||
|  |       var isAppear = !context._isMounted || !vnode.isRootInsert; | ||
|  |       if (isAppear && !appear && appear !== '') { | ||
|  |           return; | ||
|  |       } | ||
|  |       var startClass = isAppear && appearClass ? appearClass : enterClass; | ||
|  |       var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass; | ||
|  |       var toClass = isAppear && appearToClass ? appearToClass : enterToClass; | ||
|  |       var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter; | ||
|  |       var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter; | ||
|  |       var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter; | ||
|  |       var enterCancelledHook = isAppear | ||
|  |           ? appearCancelled || enterCancelled | ||
|  |           : enterCancelled; | ||
|  |       var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration); | ||
|  |       if (explicitEnterDuration != null) { | ||
|  |           checkDuration(explicitEnterDuration, 'enter', vnode); | ||
|  |       } | ||
|  |       var expectsCSS = css !== false && !isIE9; | ||
|  |       var userWantsControl = getHookArgumentsLength(enterHook); | ||
|  |       var cb = (el._enterCb = once(function () { | ||
|  |           if (expectsCSS) { | ||
|  |               removeTransitionClass(el, toClass); | ||
|  |               removeTransitionClass(el, activeClass); | ||
|  |           } | ||
|  |           // @ts-expect-error
 | ||
|  |           if (cb.cancelled) { | ||
|  |               if (expectsCSS) { | ||
|  |                   removeTransitionClass(el, startClass); | ||
|  |               } | ||
|  |               enterCancelledHook && enterCancelledHook(el); | ||
|  |           } | ||
|  |           else { | ||
|  |               afterEnterHook && afterEnterHook(el); | ||
|  |           } | ||
|  |           el._enterCb = null; | ||
|  |       })); | ||
|  |       if (!vnode.data.show) { | ||
|  |           // remove pending leave element on enter by injecting an insert hook
 | ||
|  |           mergeVNodeHook(vnode, 'insert', function () { | ||
|  |               var parent = el.parentNode; | ||
|  |               var pendingNode = parent && parent._pending && parent._pending[vnode.key]; | ||
|  |               if (pendingNode && | ||
|  |                   pendingNode.tag === vnode.tag && | ||
|  |                   pendingNode.elm._leaveCb) { | ||
|  |                   pendingNode.elm._leaveCb(); | ||
|  |               } | ||
|  |               enterHook && enterHook(el, cb); | ||
|  |           }); | ||
|  |       } | ||
|  |       // start enter transition
 | ||
|  |       beforeEnterHook && beforeEnterHook(el); | ||
|  |       if (expectsCSS) { | ||
|  |           addTransitionClass(el, startClass); | ||
|  |           addTransitionClass(el, activeClass); | ||
|  |           nextFrame(function () { | ||
|  |               removeTransitionClass(el, startClass); | ||
|  |               // @ts-expect-error
 | ||
|  |               if (!cb.cancelled) { | ||
|  |                   addTransitionClass(el, toClass); | ||
|  |                   if (!userWantsControl) { | ||
|  |                       if (isValidDuration(explicitEnterDuration)) { | ||
|  |                           setTimeout(cb, explicitEnterDuration); | ||
|  |                       } | ||
|  |                       else { | ||
|  |                           whenTransitionEnds(el, type, cb); | ||
|  |                       } | ||
|  |                   } | ||
|  |               } | ||
|  |           }); | ||
|  |       } | ||
|  |       if (vnode.data.show) { | ||
|  |           toggleDisplay && toggleDisplay(); | ||
|  |           enterHook && enterHook(el, cb); | ||
|  |       } | ||
|  |       if (!expectsCSS && !userWantsControl) { | ||
|  |           cb(); | ||
|  |       } | ||
|  |   } | ||
|  |   function leave(vnode, rm) { | ||
|  |       var el = vnode.elm; | ||
|  |       // call enter callback now
 | ||
|  |       if (isDef(el._enterCb)) { | ||
|  |           el._enterCb.cancelled = true; | ||
|  |           el._enterCb(); | ||
|  |       } | ||
|  |       var data = resolveTransition(vnode.data.transition); | ||
|  |       if (isUndef(data) || el.nodeType !== 1) { | ||
|  |           return rm(); | ||
|  |       } | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (isDef(el._leaveCb)) { | ||
|  |           return; | ||
|  |       } | ||
|  |       var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration; | ||
|  |       var expectsCSS = css !== false && !isIE9; | ||
|  |       var userWantsControl = getHookArgumentsLength(leave); | ||
|  |       var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration); | ||
|  |       if (isDef(explicitLeaveDuration)) { | ||
|  |           checkDuration(explicitLeaveDuration, 'leave', vnode); | ||
|  |       } | ||
|  |       var cb = (el._leaveCb = once(function () { | ||
|  |           if (el.parentNode && el.parentNode._pending) { | ||
|  |               el.parentNode._pending[vnode.key] = null; | ||
|  |           } | ||
|  |           if (expectsCSS) { | ||
|  |               removeTransitionClass(el, leaveToClass); | ||
|  |               removeTransitionClass(el, leaveActiveClass); | ||
|  |           } | ||
|  |           // @ts-expect-error
 | ||
|  |           if (cb.cancelled) { | ||
|  |               if (expectsCSS) { | ||
|  |                   removeTransitionClass(el, leaveClass); | ||
|  |               } | ||
|  |               leaveCancelled && leaveCancelled(el); | ||
|  |           } | ||
|  |           else { | ||
|  |               rm(); | ||
|  |               afterLeave && afterLeave(el); | ||
|  |           } | ||
|  |           el._leaveCb = null; | ||
|  |       })); | ||
|  |       if (delayLeave) { | ||
|  |           delayLeave(performLeave); | ||
|  |       } | ||
|  |       else { | ||
|  |           performLeave(); | ||
|  |       } | ||
|  |       function performLeave() { | ||
|  |           // the delayed leave may have already been cancelled
 | ||
|  |           // @ts-expect-error
 | ||
|  |           if (cb.cancelled) { | ||
|  |               return; | ||
|  |           } | ||
|  |           // record leaving element
 | ||
|  |           if (!vnode.data.show && el.parentNode) { | ||
|  |               (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = | ||
|  |                   vnode; | ||
|  |           } | ||
|  |           beforeLeave && beforeLeave(el); | ||
|  |           if (expectsCSS) { | ||
|  |               addTransitionClass(el, leaveClass); | ||
|  |               addTransitionClass(el, leaveActiveClass); | ||
|  |               nextFrame(function () { | ||
|  |                   removeTransitionClass(el, leaveClass); | ||
|  |                   // @ts-expect-error
 | ||
|  |                   if (!cb.cancelled) { | ||
|  |                       addTransitionClass(el, leaveToClass); | ||
|  |                       if (!userWantsControl) { | ||
|  |                           if (isValidDuration(explicitLeaveDuration)) { | ||
|  |                               setTimeout(cb, explicitLeaveDuration); | ||
|  |                           } | ||
|  |                           else { | ||
|  |                               whenTransitionEnds(el, type, cb); | ||
|  |                           } | ||
|  |                       } | ||
|  |                   } | ||
|  |               }); | ||
|  |           } | ||
|  |           leave && leave(el, cb); | ||
|  |           if (!expectsCSS && !userWantsControl) { | ||
|  |               cb(); | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   // only used in dev mode
 | ||
|  |   function checkDuration(val, name, vnode) { | ||
|  |       if (typeof val !== 'number') { | ||
|  |           warn("<transition> explicit ".concat(name, " duration is not a valid number - ") + | ||
|  |               "got ".concat(JSON.stringify(val), "."), vnode.context); | ||
|  |       } | ||
|  |       else if (isNaN(val)) { | ||
|  |           warn("<transition> explicit ".concat(name, " duration is NaN - ") + | ||
|  |               'the duration expression might be incorrect.', vnode.context); | ||
|  |       } | ||
|  |   } | ||
|  |   function isValidDuration(val) { | ||
|  |       return typeof val === 'number' && !isNaN(val); | ||
|  |   } | ||
|  |   /** | ||
|  |    * Normalize a transition hook's argument length. The hook may be: | ||
|  |    * - a merged hook (invoker) with the original in .fns | ||
|  |    * - a wrapped component method (check ._length) | ||
|  |    * - a plain function (.length) | ||
|  |    */ | ||
|  |   function getHookArgumentsLength(fn) { | ||
|  |       if (isUndef(fn)) { | ||
|  |           return false; | ||
|  |       } | ||
|  |       // @ts-expect-error
 | ||
|  |       var invokerFns = fn.fns; | ||
|  |       if (isDef(invokerFns)) { | ||
|  |           // invoker
 | ||
|  |           return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns); | ||
|  |       } | ||
|  |       else { | ||
|  |           // @ts-expect-error
 | ||
|  |           return (fn._length || fn.length) > 1; | ||
|  |       } | ||
|  |   } | ||
|  |   function _enter(_, vnode) { | ||
|  |       if (vnode.data.show !== true) { | ||
|  |           enter(vnode); | ||
|  |       } | ||
|  |   } | ||
|  |   var transition = inBrowser | ||
|  |       ? { | ||
|  |           create: _enter, | ||
|  |           activate: _enter, | ||
|  |           remove: function (vnode, rm) { | ||
|  |               /* istanbul ignore else */ | ||
|  |               if (vnode.data.show !== true) { | ||
|  |                   // @ts-expect-error
 | ||
|  |                   leave(vnode, rm); | ||
|  |               } | ||
|  |               else { | ||
|  |                   rm(); | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       : {}; | ||
|  | 
 | ||
|  |   var platformModules = [attrs, klass, events, domProps, style, transition]; | ||
|  | 
 | ||
|  |   // the directive module should be applied last, after all
 | ||
|  |   // built-in modules have been applied.
 | ||
|  |   var modules = platformModules.concat(baseModules); | ||
|  |   var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules }); | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Not type checking this file because flow doesn't like attaching | ||
|  |    * properties to Elements. | ||
|  |    */ | ||
|  |   /* istanbul ignore if */ | ||
|  |   if (isIE9) { | ||
|  |       // http://www.matts411.com/post/internet-explorer-9-oninput/
 | ||
|  |       document.addEventListener('selectionchange', function () { | ||
|  |           var el = document.activeElement; | ||
|  |           // @ts-expect-error
 | ||
|  |           if (el && el.vmodel) { | ||
|  |               trigger(el, 'input'); | ||
|  |           } | ||
|  |       }); | ||
|  |   } | ||
|  |   var directive = { | ||
|  |       inserted: function (el, binding, vnode, oldVnode) { | ||
|  |           if (vnode.tag === 'select') { | ||
|  |               // #6903
 | ||
|  |               if (oldVnode.elm && !oldVnode.elm._vOptions) { | ||
|  |                   mergeVNodeHook(vnode, 'postpatch', function () { | ||
|  |                       directive.componentUpdated(el, binding, vnode); | ||
|  |                   }); | ||
|  |               } | ||
|  |               else { | ||
|  |                   setSelected(el, binding, vnode.context); | ||
|  |               } | ||
|  |               el._vOptions = [].map.call(el.options, getValue); | ||
|  |           } | ||
|  |           else if (vnode.tag === 'textarea' || isTextInputType(el.type)) { | ||
|  |               el._vModifiers = binding.modifiers; | ||
|  |               if (!binding.modifiers.lazy) { | ||
|  |                   el.addEventListener('compositionstart', onCompositionStart); | ||
|  |                   el.addEventListener('compositionend', onCompositionEnd); | ||
|  |                   // Safari < 10.2 & UIWebView doesn't fire compositionend when
 | ||
|  |                   // switching focus before confirming composition choice
 | ||
|  |                   // this also fixes the issue where some browsers e.g. iOS Chrome
 | ||
|  |                   // fires "change" instead of "input" on autocomplete.
 | ||
|  |                   el.addEventListener('change', onCompositionEnd); | ||
|  |                   /* istanbul ignore if */ | ||
|  |                   if (isIE9) { | ||
|  |                       el.vmodel = true; | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |       }, | ||
|  |       componentUpdated: function (el, binding, vnode) { | ||
|  |           if (vnode.tag === 'select') { | ||
|  |               setSelected(el, binding, vnode.context); | ||
|  |               // in case the options rendered by v-for have changed,
 | ||
|  |               // it's possible that the value is out-of-sync with the rendered options.
 | ||
|  |               // detect such cases and filter out values that no longer has a matching
 | ||
|  |               // option in the DOM.
 | ||
|  |               var prevOptions_1 = el._vOptions; | ||
|  |               var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue)); | ||
|  |               if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) { | ||
|  |                   // trigger change event if
 | ||
|  |                   // no matching option found for at least one value
 | ||
|  |                   var needReset = el.multiple | ||
|  |                       ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); }) | ||
|  |                       : binding.value !== binding.oldValue && | ||
|  |                           hasNoMatchingOption(binding.value, curOptions_1); | ||
|  |                   if (needReset) { | ||
|  |                       trigger(el, 'change'); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |   }; | ||
|  |   function setSelected(el, binding, vm) { | ||
|  |       actuallySetSelected(el, binding, vm); | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (isIE || isEdge) { | ||
|  |           setTimeout(function () { | ||
|  |               actuallySetSelected(el, binding, vm); | ||
|  |           }, 0); | ||
|  |       } | ||
|  |   } | ||
|  |   function actuallySetSelected(el, binding, vm) { | ||
|  |       var value = binding.value; | ||
|  |       var isMultiple = el.multiple; | ||
|  |       if (isMultiple && !Array.isArray(value)) { | ||
|  |           warn("<select multiple v-model=\"".concat(binding.expression, "\"> ") + | ||
|  |                   "expects an Array value for its binding, but got ".concat(Object.prototype.toString | ||
|  |                       .call(value) | ||
|  |                       .slice(8, -1)), vm); | ||
|  |           return; | ||
|  |       } | ||
|  |       var selected, option; | ||
|  |       for (var i = 0, l = el.options.length; i < l; i++) { | ||
|  |           option = el.options[i]; | ||
|  |           if (isMultiple) { | ||
|  |               selected = looseIndexOf(value, getValue(option)) > -1; | ||
|  |               if (option.selected !== selected) { | ||
|  |                   option.selected = selected; | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               if (looseEqual(getValue(option), value)) { | ||
|  |                   if (el.selectedIndex !== i) { | ||
|  |                       el.selectedIndex = i; | ||
|  |                   } | ||
|  |                   return; | ||
|  |               } | ||
|  |           } | ||
|  |       } | ||
|  |       if (!isMultiple) { | ||
|  |           el.selectedIndex = -1; | ||
|  |       } | ||
|  |   } | ||
|  |   function hasNoMatchingOption(value, options) { | ||
|  |       return options.every(function (o) { return !looseEqual(o, value); }); | ||
|  |   } | ||
|  |   function getValue(option) { | ||
|  |       return '_value' in option ? option._value : option.value; | ||
|  |   } | ||
|  |   function onCompositionStart(e) { | ||
|  |       e.target.composing = true; | ||
|  |   } | ||
|  |   function onCompositionEnd(e) { | ||
|  |       // prevent triggering an input event for no reason
 | ||
|  |       if (!e.target.composing) | ||
|  |           return; | ||
|  |       e.target.composing = false; | ||
|  |       trigger(e.target, 'input'); | ||
|  |   } | ||
|  |   function trigger(el, type) { | ||
|  |       var e = document.createEvent('HTMLEvents'); | ||
|  |       e.initEvent(type, true, true); | ||
|  |       el.dispatchEvent(e); | ||
|  |   } | ||
|  | 
 | ||
|  |   // recursively search for possible transition defined inside the component root
 | ||
|  |   function locateNode(vnode) { | ||
|  |       // @ts-expect-error
 | ||
|  |       return vnode.componentInstance && (!vnode.data || !vnode.data.transition) | ||
|  |           ? locateNode(vnode.componentInstance._vnode) | ||
|  |           : vnode; | ||
|  |   } | ||
|  |   var show = { | ||
|  |       bind: function (el, _a, vnode) { | ||
|  |           var value = _a.value; | ||
|  |           vnode = locateNode(vnode); | ||
|  |           var transition = vnode.data && vnode.data.transition; | ||
|  |           var originalDisplay = (el.__vOriginalDisplay = | ||
|  |               el.style.display === 'none' ? '' : el.style.display); | ||
|  |           if (value && transition) { | ||
|  |               vnode.data.show = true; | ||
|  |               enter(vnode, function () { | ||
|  |                   el.style.display = originalDisplay; | ||
|  |               }); | ||
|  |           } | ||
|  |           else { | ||
|  |               el.style.display = value ? originalDisplay : 'none'; | ||
|  |           } | ||
|  |       }, | ||
|  |       update: function (el, _a, vnode) { | ||
|  |           var value = _a.value, oldValue = _a.oldValue; | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (!value === !oldValue) | ||
|  |               return; | ||
|  |           vnode = locateNode(vnode); | ||
|  |           var transition = vnode.data && vnode.data.transition; | ||
|  |           if (transition) { | ||
|  |               vnode.data.show = true; | ||
|  |               if (value) { | ||
|  |                   enter(vnode, function () { | ||
|  |                       el.style.display = el.__vOriginalDisplay; | ||
|  |                   }); | ||
|  |               } | ||
|  |               else { | ||
|  |                   leave(vnode, function () { | ||
|  |                       el.style.display = 'none'; | ||
|  |                   }); | ||
|  |               } | ||
|  |           } | ||
|  |           else { | ||
|  |               el.style.display = value ? el.__vOriginalDisplay : 'none'; | ||
|  |           } | ||
|  |       }, | ||
|  |       unbind: function (el, binding, vnode, oldVnode, isDestroy) { | ||
|  |           if (!isDestroy) { | ||
|  |               el.style.display = el.__vOriginalDisplay; | ||
|  |           } | ||
|  |       } | ||
|  |   }; | ||
|  | 
 | ||
|  |   var platformDirectives = { | ||
|  |       model: directive, | ||
|  |       show: show | ||
|  |   }; | ||
|  | 
 | ||
|  |   // Provides transition support for a single element/component.
 | ||
|  |   var transitionProps = { | ||
|  |       name: String, | ||
|  |       appear: Boolean, | ||
|  |       css: Boolean, | ||
|  |       mode: String, | ||
|  |       type: String, | ||
|  |       enterClass: String, | ||
|  |       leaveClass: String, | ||
|  |       enterToClass: String, | ||
|  |       leaveToClass: String, | ||
|  |       enterActiveClass: String, | ||
|  |       leaveActiveClass: String, | ||
|  |       appearClass: String, | ||
|  |       appearActiveClass: String, | ||
|  |       appearToClass: String, | ||
|  |       duration: [Number, String, Object] | ||
|  |   }; | ||
|  |   // in case the child is also an abstract component, e.g. <keep-alive>
 | ||
|  |   // we want to recursively retrieve the real component to be rendered
 | ||
|  |   function getRealChild(vnode) { | ||
|  |       var compOptions = vnode && vnode.componentOptions; | ||
|  |       if (compOptions && compOptions.Ctor.options.abstract) { | ||
|  |           return getRealChild(getFirstComponentChild(compOptions.children)); | ||
|  |       } | ||
|  |       else { | ||
|  |           return vnode; | ||
|  |       } | ||
|  |   } | ||
|  |   function extractTransitionData(comp) { | ||
|  |       var data = {}; | ||
|  |       var options = comp.$options; | ||
|  |       // props
 | ||
|  |       for (var key in options.propsData) { | ||
|  |           data[key] = comp[key]; | ||
|  |       } | ||
|  |       // events.
 | ||
|  |       // extract listeners and pass them directly to the transition methods
 | ||
|  |       var listeners = options._parentListeners; | ||
|  |       for (var key in listeners) { | ||
|  |           data[camelize(key)] = listeners[key]; | ||
|  |       } | ||
|  |       return data; | ||
|  |   } | ||
|  |   function placeholder(h, rawChild) { | ||
|  |       // @ts-expect-error
 | ||
|  |       if (/\d-keep-alive$/.test(rawChild.tag)) { | ||
|  |           return h('keep-alive', { | ||
|  |               props: rawChild.componentOptions.propsData | ||
|  |           }); | ||
|  |       } | ||
|  |   } | ||
|  |   function hasParentTransition(vnode) { | ||
|  |       while ((vnode = vnode.parent)) { | ||
|  |           if (vnode.data.transition) { | ||
|  |               return true; | ||
|  |           } | ||
|  |       } | ||
|  |   } | ||
|  |   function isSameChild(child, oldChild) { | ||
|  |       return oldChild.key === child.key && oldChild.tag === child.tag; | ||
|  |   } | ||
|  |   var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); }; | ||
|  |   var isVShowDirective = function (d) { return d.name === 'show'; }; | ||
|  |   var Transition = { | ||
|  |       name: 'transition', | ||
|  |       props: transitionProps, | ||
|  |       abstract: true, | ||
|  |       render: function (h) { | ||
|  |           var _this = this; | ||
|  |           var children = this.$slots.default; | ||
|  |           if (!children) { | ||
|  |               return; | ||
|  |           } | ||
|  |           // filter out text nodes (possible whitespaces)
 | ||
|  |           children = children.filter(isNotTextNode); | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (!children.length) { | ||
|  |               return; | ||
|  |           } | ||
|  |           // warn multiple elements
 | ||
|  |           if (children.length > 1) { | ||
|  |               warn('<transition> can only be used on a single element. Use ' + | ||
|  |                   '<transition-group> for lists.', this.$parent); | ||
|  |           } | ||
|  |           var mode = this.mode; | ||
|  |           // warn invalid mode
 | ||
|  |           if (mode && mode !== 'in-out' && mode !== 'out-in') { | ||
|  |               warn('invalid <transition> mode: ' + mode, this.$parent); | ||
|  |           } | ||
|  |           var rawChild = children[0]; | ||
|  |           // if this is a component root node and the component's
 | ||
|  |           // parent container node also has transition, skip.
 | ||
|  |           if (hasParentTransition(this.$vnode)) { | ||
|  |               return rawChild; | ||
|  |           } | ||
|  |           // apply transition data to child
 | ||
|  |           // use getRealChild() to ignore abstract components e.g. keep-alive
 | ||
|  |           var child = getRealChild(rawChild); | ||
|  |           /* istanbul ignore if */ | ||
|  |           if (!child) { | ||
|  |               return rawChild; | ||
|  |           } | ||
|  |           if (this._leaving) { | ||
|  |               return placeholder(h, rawChild); | ||
|  |           } | ||
|  |           // ensure a key that is unique to the vnode type and to this transition
 | ||
|  |           // component instance. This key will be used to remove pending leaving nodes
 | ||
|  |           // during entering.
 | ||
|  |           var id = "__transition-".concat(this._uid, "-"); | ||
|  |           child.key = | ||
|  |               child.key == null | ||
|  |                   ? child.isComment | ||
|  |                       ? id + 'comment' | ||
|  |                       : id + child.tag | ||
|  |                   : isPrimitive(child.key) | ||
|  |                       ? String(child.key).indexOf(id) === 0 | ||
|  |                           ? child.key | ||
|  |                           : id + child.key | ||
|  |                       : child.key; | ||
|  |           var data = ((child.data || (child.data = {})).transition = | ||
|  |               extractTransitionData(this)); | ||
|  |           var oldRawChild = this._vnode; | ||
|  |           var oldChild = getRealChild(oldRawChild); | ||
|  |           // mark v-show
 | ||
|  |           // so that the transition module can hand over the control to the directive
 | ||
|  |           if (child.data.directives && child.data.directives.some(isVShowDirective)) { | ||
|  |               child.data.show = true; | ||
|  |           } | ||
|  |           if (oldChild && | ||
|  |               oldChild.data && | ||
|  |               !isSameChild(child, oldChild) && | ||
|  |               !isAsyncPlaceholder(oldChild) && | ||
|  |               // #6687 component root is a comment node
 | ||
|  |               !(oldChild.componentInstance && | ||
|  |                   oldChild.componentInstance._vnode.isComment)) { | ||
|  |               // replace old child transition data with fresh one
 | ||
|  |               // important for dynamic transitions!
 | ||
|  |               var oldData = (oldChild.data.transition = extend({}, data)); | ||
|  |               // handle transition mode
 | ||
|  |               if (mode === 'out-in') { | ||
|  |                   // return placeholder node and queue update when leave finishes
 | ||
|  |                   this._leaving = true; | ||
|  |                   mergeVNodeHook(oldData, 'afterLeave', function () { | ||
|  |                       _this._leaving = false; | ||
|  |                       _this.$forceUpdate(); | ||
|  |                   }); | ||
|  |                   return placeholder(h, rawChild); | ||
|  |               } | ||
|  |               else if (mode === 'in-out') { | ||
|  |                   if (isAsyncPlaceholder(child)) { | ||
|  |                       return oldRawChild; | ||
|  |                   } | ||
|  |                   var delayedLeave_1; | ||
|  |                   var performLeave = function () { | ||
|  |                       delayedLeave_1(); | ||
|  |                   }; | ||
|  |                   mergeVNodeHook(data, 'afterEnter', performLeave); | ||
|  |                   mergeVNodeHook(data, 'enterCancelled', performLeave); | ||
|  |                   mergeVNodeHook(oldData, 'delayLeave', function (leave) { | ||
|  |                       delayedLeave_1 = leave; | ||
|  |                   }); | ||
|  |               } | ||
|  |           } | ||
|  |           return rawChild; | ||
|  |       } | ||
|  |   }; | ||
|  | 
 | ||
|  |   // Provides transition support for list items.
 | ||
|  |   var props = extend({ | ||
|  |       tag: String, | ||
|  |       moveClass: String | ||
|  |   }, transitionProps); | ||
|  |   delete props.mode; | ||
|  |   var TransitionGroup = { | ||
|  |       props: props, | ||
|  |       beforeMount: function () { | ||
|  |           var _this = this; | ||
|  |           var update = this._update; | ||
|  |           this._update = function (vnode, hydrating) { | ||
|  |               var restoreActiveInstance = setActiveInstance(_this); | ||
|  |               // force removing pass
 | ||
|  |               _this.__patch__(_this._vnode, _this.kept, false, // hydrating
 | ||
|  |               true // removeOnly (!important, avoids unnecessary moves)
 | ||
|  |               ); | ||
|  |               _this._vnode = _this.kept; | ||
|  |               restoreActiveInstance(); | ||
|  |               update.call(_this, vnode, hydrating); | ||
|  |           }; | ||
|  |       }, | ||
|  |       render: function (h) { | ||
|  |           var tag = this.tag || this.$vnode.data.tag || 'span'; | ||
|  |           var map = Object.create(null); | ||
|  |           var prevChildren = (this.prevChildren = this.children); | ||
|  |           var rawChildren = this.$slots.default || []; | ||
|  |           var children = (this.children = []); | ||
|  |           var transitionData = extractTransitionData(this); | ||
|  |           for (var i = 0; i < rawChildren.length; i++) { | ||
|  |               var c = rawChildren[i]; | ||
|  |               if (c.tag) { | ||
|  |                   if (c.key != null && String(c.key).indexOf('__vlist') !== 0) { | ||
|  |                       children.push(c); | ||
|  |                       map[c.key] = c; | ||
|  |                       (c.data || (c.data = {})).transition = transitionData; | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       var opts = c.componentOptions; | ||
|  |                       var name_1 = opts | ||
|  |                           ? getComponentName(opts.Ctor.options) || opts.tag || '' | ||
|  |                           : c.tag; | ||
|  |                       warn("<transition-group> children must be keyed: <".concat(name_1, ">")); | ||
|  |                   } | ||
|  |               } | ||
|  |           } | ||
|  |           if (prevChildren) { | ||
|  |               var kept = []; | ||
|  |               var removed = []; | ||
|  |               for (var i = 0; i < prevChildren.length; i++) { | ||
|  |                   var c = prevChildren[i]; | ||
|  |                   c.data.transition = transitionData; | ||
|  |                   // @ts-expect-error .getBoundingClientRect is not typed in Node
 | ||
|  |                   c.data.pos = c.elm.getBoundingClientRect(); | ||
|  |                   if (map[c.key]) { | ||
|  |                       kept.push(c); | ||
|  |                   } | ||
|  |                   else { | ||
|  |                       removed.push(c); | ||
|  |                   } | ||
|  |               } | ||
|  |               this.kept = h(tag, null, kept); | ||
|  |               this.removed = removed; | ||
|  |           } | ||
|  |           return h(tag, null, children); | ||
|  |       }, | ||
|  |       updated: function () { | ||
|  |           var children = this.prevChildren; | ||
|  |           var moveClass = this.moveClass || (this.name || 'v') + '-move'; | ||
|  |           if (!children.length || !this.hasMove(children[0].elm, moveClass)) { | ||
|  |               return; | ||
|  |           } | ||
|  |           // we divide the work into three loops to avoid mixing DOM reads and writes
 | ||
|  |           // in each iteration - which helps prevent layout thrashing.
 | ||
|  |           children.forEach(callPendingCbs); | ||
|  |           children.forEach(recordPosition); | ||
|  |           children.forEach(applyTranslation); | ||
|  |           // force reflow to put everything in position
 | ||
|  |           // assign to this to avoid being removed in tree-shaking
 | ||
|  |           // $flow-disable-line
 | ||
|  |           this._reflow = document.body.offsetHeight; | ||
|  |           children.forEach(function (c) { | ||
|  |               if (c.data.moved) { | ||
|  |                   var el_1 = c.elm; | ||
|  |                   var s = el_1.style; | ||
|  |                   addTransitionClass(el_1, moveClass); | ||
|  |                   s.transform = s.WebkitTransform = s.transitionDuration = ''; | ||
|  |                   el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) { | ||
|  |                       if (e && e.target !== el_1) { | ||
|  |                           return; | ||
|  |                       } | ||
|  |                       if (!e || /transform$/.test(e.propertyName)) { | ||
|  |                           el_1.removeEventListener(transitionEndEvent, cb); | ||
|  |                           el_1._moveCb = null; | ||
|  |                           removeTransitionClass(el_1, moveClass); | ||
|  |                       } | ||
|  |                   })); | ||
|  |               } | ||
|  |           }); | ||
|  |       }, | ||
|  |       methods: { | ||
|  |           hasMove: function (el, moveClass) { | ||
|  |               /* istanbul ignore if */ | ||
|  |               if (!hasTransition) { | ||
|  |                   return false; | ||
|  |               } | ||
|  |               /* istanbul ignore if */ | ||
|  |               if (this._hasMove) { | ||
|  |                   return this._hasMove; | ||
|  |               } | ||
|  |               // Detect whether an element with the move class applied has
 | ||
|  |               // CSS transitions. Since the element may be inside an entering
 | ||
|  |               // transition at this very moment, we make a clone of it and remove
 | ||
|  |               // all other transition classes applied to ensure only the move class
 | ||
|  |               // is applied.
 | ||
|  |               var clone = el.cloneNode(); | ||
|  |               if (el._transitionClasses) { | ||
|  |                   el._transitionClasses.forEach(function (cls) { | ||
|  |                       removeClass(clone, cls); | ||
|  |                   }); | ||
|  |               } | ||
|  |               addClass(clone, moveClass); | ||
|  |               clone.style.display = 'none'; | ||
|  |               this.$el.appendChild(clone); | ||
|  |               var info = getTransitionInfo(clone); | ||
|  |               this.$el.removeChild(clone); | ||
|  |               return (this._hasMove = info.hasTransform); | ||
|  |           } | ||
|  |       } | ||
|  |   }; | ||
|  |   function callPendingCbs(c) { | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (c.elm._moveCb) { | ||
|  |           c.elm._moveCb(); | ||
|  |       } | ||
|  |       /* istanbul ignore if */ | ||
|  |       if (c.elm._enterCb) { | ||
|  |           c.elm._enterCb(); | ||
|  |       } | ||
|  |   } | ||
|  |   function recordPosition(c) { | ||
|  |       c.data.newPos = c.elm.getBoundingClientRect(); | ||
|  |   } | ||
|  |   function applyTranslation(c) { | ||
|  |       var oldPos = c.data.pos; | ||
|  |       var newPos = c.data.newPos; | ||
|  |       var dx = oldPos.left - newPos.left; | ||
|  |       var dy = oldPos.top - newPos.top; | ||
|  |       if (dx || dy) { | ||
|  |           c.data.moved = true; | ||
|  |           var s = c.elm.style; | ||
|  |           s.transform = s.WebkitTransform = "translate(".concat(dx, "px,").concat(dy, "px)"); | ||
|  |           s.transitionDuration = '0s'; | ||
|  |       } | ||
|  |   } | ||
|  | 
 | ||
|  |   var platformComponents = { | ||
|  |       Transition: Transition, | ||
|  |       TransitionGroup: TransitionGroup | ||
|  |   }; | ||
|  | 
 | ||
|  |   // install platform specific utils
 | ||
|  |   Vue.config.mustUseProp = mustUseProp; | ||
|  |   Vue.config.isReservedTag = isReservedTag; | ||
|  |   Vue.config.isReservedAttr = isReservedAttr; | ||
|  |   Vue.config.getTagNamespace = getTagNamespace; | ||
|  |   Vue.config.isUnknownElement = isUnknownElement; | ||
|  |   // install platform runtime directives & components
 | ||
|  |   extend(Vue.options.directives, platformDirectives); | ||
|  |   extend(Vue.options.components, platformComponents); | ||
|  |   // install platform patch function
 | ||
|  |   Vue.prototype.__patch__ = inBrowser ? patch : noop; | ||
|  |   // public mount method
 | ||
|  |   Vue.prototype.$mount = function (el, hydrating) { | ||
|  |       el = el && inBrowser ? query(el) : undefined; | ||
|  |       return mountComponent(this, el, hydrating); | ||
|  |   }; | ||
|  |   // devtools global hook
 | ||
|  |   /* istanbul ignore next */ | ||
|  |   if (inBrowser) { | ||
|  |       setTimeout(function () { | ||
|  |           if (config.devtools) { | ||
|  |               if (devtools) { | ||
|  |                   devtools.emit('init', Vue); | ||
|  |               } | ||
|  |               else { | ||
|  |                   // @ts-expect-error
 | ||
|  |                   console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\n' + | ||
|  |                       'https://github.com/vuejs/vue-devtools'); | ||
|  |               } | ||
|  |           } | ||
|  |           if (config.productionTip !== false && | ||
|  |               typeof console !== 'undefined') { | ||
|  |               // @ts-expect-error
 | ||
|  |               console[console.info ? 'info' : 'log']("You are running Vue in development mode.\n" + | ||
|  |                   "Make sure to turn on production mode when deploying for production.\n" + | ||
|  |                   "See more tips at https://vuejs.org/guide/deployment.html"); | ||
|  |           } | ||
|  |       }, 0); | ||
|  |   } | ||
|  | 
 | ||
|  |   extend(Vue, vca); | ||
|  | 
 | ||
|  |   return Vue; | ||
|  | 
 | ||
|  | })); |