/*!*Vue.jsv2.6.14*(c)2014-2021EvanYou*ReleasedundertheMITLicense.*/(function (global, base_factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = base_factory() : typeof define === 'function' && define.amd ? define(base_factory) :(global = global || self, global.Vue = base_factory());}(this, function () { 'use strict'; /**/ var emptyObject = Object.freeze({}); //ThesehelpersproducebetterVMcodeinJSenginesduetotheir// explicitness and function inlining.functionisUndef(v){returnv===undefined||v===null}functionisDef(v){returnv!==undefined&&v!==null}functionisTrue(v){returnv===true}functionisFalse(v){returnv===false}/** * Check if value is primitive. */functionisPrimitive(value){return(typeofvalue==='string'||typeofvalue==='number'||// $flow-disable-base_linetypeofvalue==='symbol'||typeofvalue==='boolean')}/** * Quick object check - this is primarily used to tell * Objects from primitive values when we know the value * is a JSON-compliant type. */functionisObject(obj){returnobj!==null&&typeofobj==='object'}/** * Get the raw type string of a value, e.g., [object Object]. */var_toString=Object.prototype.toString;functiontoRawType(value){return_toString.call(value).slice(8,-1)}/** * Strict object type check. Only returns true * for plain JavaScript objects. */functionisPlainObject(obj){return_toString.call(obj)==='[object Object]'}functionisRegExp(v){return_toString.call(v)==='[object RegExp]'}/** * Check if val is a valid array index. */functionisValidArrayIndex(val){varn=parseFloat(String(val));returnn>=0&&Math.floor(n)===n&&isFinite(val)}functionisPromise(val){return(isDef(val)&&typeofval.then==='function'&&typeofval.catch==='function')}/** * Convert a value to a string that is actually rendered. */functiontoString(val){returnval==null?'':Array.isArray(val)||(isPlainObject(val)&&val.toString===_toString)?JSON.stringify(val,null,2):String(val)}/** * Convert an input value to a number for persistence. * If the conversion fails, return original string. */functiontoNumber(val){varn=parseFloat(val);returnisNaN(n)?val:n}/** * Make a map and return a function for checking if a key * is in that map. */functionmakeMap(str,expectsLowerCase){varmap=Object.create(null);varlist=str.split(',');for(vari=0;i<list.length;i++){map[list[i]]=true;}returnexpectsLowerCase?function(val){returnmap[val.toLowerCase()];}:function(val){returnmap[val];}}/** * Check if a tag is a built-in tag. */varisBuiltInTag=makeMap('slot,component',true);/** * Check if an attribute is a reserved attribute. */varisReservedAttribute=makeMap('key,ref,slot,slot-scope,is');/** * Remove an item from an array. */functionremove(arr,item){if(arr.length){varindex=arr.indexOf(item);if(index>-1){returnarr.splice(index,1)}}}/** * Check whether an object has the property. */varhasOwnProperty=Object.prototype.hasOwnProperty;functionhasOwn(obj,key){returnhasOwnProperty.call(obj,key)}/** * Create a cached version of a pure function. */functioncached(fn){varcache=Object.create(null);return(functioncachedFn(str){varhit=cache[str];returnhit||(cache[str]=fn(str))})}/** * Camelize a hyphen-delimited string. */varcamelizeRE=/-(\w)/g;varcamelize=cached(function(str){returnstr.replace(camelizeRE,function(_,c){returnc?c.toUpperCase():'';})});/** * Capitalize a string. */varcapitalize=cached(function(str){returnstr.charAt(0).toUpperCase()+str.slice(1)});/** * Hyphenate a camelCase string. */varhyphenateRE=/\B([A-Z])/g;varhyphenate=cached(function(str){returnstr.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 */functionpolyfillBind(fn,ctx){functionboundFn(a){varl=arguments.length;returnl?l>1?fn.apply(ctx,arguments):fn.call(ctx,a):fn.call(ctx)}boundFn._length=fn.length;returnboundFn}functionnativeBind(fn,ctx){returnfn.bind(ctx)}varbind=Function.prototype.bind?nativeBind:polyfillBind;/** * Convert an Array-like object to a real Array. */functiontoArray(list,start){start=start||0;vari=list.length-start;varret=newArray(i);while(i--){ret[i]=list[i+start];}returnret}/** * Mix properties into target object. */functionextend(to,_from){for(varkeyin_from){to[key]=_from[key];}returnto}/** * Merge an Array of Objects into a single Object. */functiontoObject(arr){varres={};for(vari=0;i<arr.length;i++){if(arr[i]){extend(res,arr[i]);}}returnres}/* 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) {} /***Alwaysreturnfalse.*/ var no = function (a, b, c) { return false; }; /*eslint-enableno-unused-vars*/ /***Returnthesamevalue.*/ var identity = function (_) { return _; }; /***Generateastringcontainingstatickeysfromcompilermodules.*/ function genStaticKeys (modules) { return modules.reduce(function (keys, m) { return keys.concat(m.staticKeys || []) }, []).join(',') } /***Checkiftwovaluesarelooselyequal-thatis,*iftheyareplainobjects,dotheyhavethesameshape?*/ 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 { /*istanbulignorenext*/ return false } } catch (e) { /*istanbulignorenext*/ return false } } else if (!isObjectA && !isObjectB) { return String(a) === String(b) } else { return false } } /***Returnthefirstindexatwhichalooselyequalvaluecanbe*foundinthearray(ifvalueisaplainobject,thearraymust*containanobjectofthesameshape),or-1ifitisnotpresent.*/ function looseIndexOf (arr, val) { for (var i = 0; i < arr.length; i++) { if (looseEqual(arr[i], val)) { return i } } return -1 } /***Ensureafunctioniscalledonlyonce.*/ function once (fn) { var called = false; return function () { if (!called) { called = true; fn.apply(this, arguments); } } } 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']; /**/ var config = ({ /***Optionmergestrategies(usedincore/util/options)*/ //$flow-disable-base_lineoptionMergeStrategies:Object.create(null),/** * Whether to suppress warnings. */silent:false,/** * Show production mode tip message on boot? */productionTip:"development"!=='production',/** * Whether to enable devtools */devtools:"development"!=='production',/** * 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-base_linekeyCodes: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-\uEFFFFduetoitfreezingupPhantomJS*/ 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 _ */functionisReserved(str){varc=(str+'').charCodeAt(0);returnc===0x24||c===0x5F}/** * Define a property. */functiondef(obj,key,val,enumerable){Object.defineProperty(obj,key,{value:val,enumerable:!!enumerable,writable:true,configurable:true});}/** * Parse simple path. */varbailRE=newRegExp(("[^"+(unicodeRegExp.source)+".$_\\d]"));functionparsePath(path){if(bailRE.test(path)){return}varsegments=path.split('.');returnfunction(obj){for(vari=0;i<segments.length;i++){if(!obj){return}obj=obj[segments[i]];}returnobj}}/* */// can we use __proto__?varhasProto='__proto__'in{};// Browser environment sniffingvarinBrowser=typeofwindow!=='undefined';varinWeex=typeofWXEnvironment!=='undefined'&&!!WXEnvironment.platform;varweexPlatform=inWeex&&WXEnvironment.platform.toLowerCase();varUA=inBrowser&&window.navigator.userAgent.toLowerCase();varisIE=UA&&/msie|trident/.test(UA);varisIE9=UA&&UA.indexOf('msie 9.0')>0;varisEdge=UA&&UA.indexOf('edge/')>0;varisAndroid=(UA&&UA.indexOf('android')>0)||(weexPlatform==='android');varisIOS=(UA&&/iphone|ipad|ipod|ios/.test(UA))||(weexPlatform==='ios');varisChrome=UA&&/chrome\/\d+/.test(UA)&&!isEdge;varisPhantomJS=UA&&/phantomjs/.test(UA);varisFF=UA&&UA.match(/firefox\/(\d+)/);// Firefox has a "watch" function on Object.prototype...varnativeWatch=({}).watch;varsupportsPassive=false;if(inBrowser){try{varopts={};Object.defineProperty(opts,'passive',({get:functionget(){/* istanbul ignore next */supportsPassive=true;}}));// https://github.com/facebook/flow/issues/285window.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_ENVvar_isServer;varisServerRendering=function(){if(_isServer===undefined){/* istanbul ignore if */if(!inBrowser&&!inWeex&&typeofglobal!=='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 devtoolsvardevtools=inBrowser&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;/* istanbul ignore next */functionisNative(Ctor){returntypeofCtor==='function'&&/native code/.test(Ctor.toString())}varhasSymbol=typeofSymbol!=='undefined'&&isNative(Symbol)&&typeofReflect!=='undefined'&&isNative(Reflect.ownKeys);var_Set;/* istanbul ignore if */// $flow-disable-base_lineif(typeofSet!=='undefined'&&isNative(Set)){// use native Set when available._Set=Set;}else{// a non-standard Set polyfill that only works with primitive keys._Set=/*@__PURE__*/(function(){functionSet(){this.set=Object.create(null);}Set.prototype.has=functionhas(key){returnthis.set[key]===true};Set.prototype.add=functionadd(key){this.set[key]=true;};Set.prototype.clear=functionclear(){this.set=Object.create(null);};returnSet;}());}/* */varwarn=noop;vartip=noop;vargenerateComponentTrace=(noop);// work around flow checkvarformatComponentName=(noop);{varhasConsole=typeofconsole!=='undefined';varclassifyRE=/(?:^|[-_])(\w)/g;varclassify=function(str){returnstr.replace(classifyRE,function(c){returnc.toUpperCase();}).replace(/[-_]/g,'');};warn=function(msg,vm){vartrace=vm?generateComponentTrace(vm):'';if(config.warnHandler){config.warnHandler.call(null,msg,vm,trace);}elseif(hasConsole&&(!config.silent)){console.error(("[Vue warn]: "+msg+trace));}};tip=function(msg,vm){if(hasConsole&&(!config.silent)){console.warn("[Vue tip]: "+msg+(vm?generateComponentTrace(vm):''));}};formatComponentName=function(vm,includeFile){if(vm.$root===vm){return'<Root>'}varoptions=typeofvm==='function'&&vm.cid!=null?vm.options:vm._isVue?vm.$options||vm.constructor.options:vm;varname=options.name||options._componentTag;varfile=options.__file;if(!name&&file){varmatch=file.match(/([^/\\]+)\.vue$/);name=match&&match[1];}return((name?("<"+(classify(name))+">"):"<Anonymous>")+(file&&includeFile!==false?(" at "+file):''))};varrepeat=function(str,n){varres='';while(n){if(n%2===1){res+=str;}if(n>1){str+=str;}n>>=1;}returnres};generateComponentTrace=function(vm){if(vm._isVue&&vm.$parent){vartree=[];varcurrentRecursiveSequence=0;while(vm){if(tree.length>0){varlast=tree[tree.length-1];if(last.constructor===vm.constructor){currentRecursiveSequence++;vm=vm.$parent;continue}elseif(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(""+(i===0?'---> ':repeat(' ',5+i*2))+(Array.isArray(vm)?((formatComponentName(vm[0]))+"... ("+(vm[1])+" recursive calls)"):formatComponentName(vm)));}).join('\n')}else{return("\n\n(found in "+(formatComponentName(vm))+")")}};}/* */varuid=0;/** * A dep is an observable that can have multiple * directives subscribing to it. */varDep=functionDep(){this.id=uid++;this.subs=[];};Dep.prototype.addSub=functionaddSub(sub){this.subs.push(sub);};Dep.prototype.removeSub=functionremoveSub(sub){remove(this.subs,sub);};Dep.prototype.depend=functiondepend(){if(Dep.target){Dep.target.addDep(this);}};Dep.prototype.notify=functionnotify(){// stabilize the subscriber list firstvarsubs=this.subs.slice();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// ordersubs.sort(function(a,b){returna.id-b.id;});}for(vari=0,l=subs.length;i<l;i++){subs[i].update();}};// The current target watcher being evaluated.// This is globally unique because only one watcher// can be evaluated at a time.Dep.target=null;vartargetStack=[];functionpushTarget(target){targetStack.push(target);Dep.target=target;}functionpopTarget(){targetStack.pop();Dep.target=targetStack[targetStack.length-1];}/* */varVNode=functionVNode(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;};varprototypeAccessors={child:{configurable:true}};// DEPRECATED: alias for componentInstance for backwards compat./* istanbul ignore next */prototypeAccessors.child.get=function(){returnthis.componentInstance};Object.defineProperties(VNode.prototype,prototypeAccessors);varcreateEmptyVNode=function(text){if(text===void0)text='';varnode=newVNode();node.text=text;node.isComment=true;returnnode};functioncreateTextVNode(val){returnnewVNode(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.functioncloneVNode(vnode){varcloned=newVNode(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;returncloned}/* * not type checking this file because flow doesn't play well with * dynamically accessing methods on Array prototype */vararrayProto=Array.prototype;vararrayMethods=Object.create(arrayProto);varmethodsToPatch=['push','pop','shift','unshift','splice','sort','reverse'];/** * Intercept mutating methods and emit events */methodsToPatch.forEach(function(method){// cache original methodvaroriginal=arrayProto[method];def(arrayMethods,method,functionmutator(){varargs=[],len=arguments.length;while(len--)args[len]=arguments[len];varresult=original.apply(this,args);varob=this.__ob__;varinserted;switch(method){case'push':case'unshift':inserted=args;breakcase'splice':inserted=args.slice(2);break}if(inserted){ob.observeArray(inserted);}// notify changeob.dep.notify();returnresult});});/* */vararrayKeys=Object.getOwnPropertyNames(arrayMethods);/** * In some cases we may want to disable observation inside a component's * update computation. */varshouldObserve=true;functiontoggleObserving(value){shouldObserve=value;}/** * Observer class that is attached to each observed * object. Once attached, the observer converts the target * object's property keys into getter/settersthat*collectdependenciesanddispatchupdates.*/ var Observer = function Observer (value) { this.value = value; this.dep = new Dep(); this.vmCount = 0; def(value, '__ob__', this); if (Array.isArray(value)) { if (hasProto) { protoAugment(value, arrayMethods); } else { copyAugment(value, arrayMethods, arrayKeys); } this.observeArray(value); } else { this.walk(value); } }; /***Walkthroughallpropertiesandconverttheminto*getter/setters.Thismethodshouldonlybecalledwhen*valuetypeisObject.*/ Observer.prototype.walk = function walk (obj) { var keys = Object.keys(obj); for (var i = 0; i < keys.length; i++) { defineReactive$$1(obj, keys[i]); } }; /***ObservealistofArrayitems.*/ Observer.prototype.observeArray = function observeArray (items) { for (var i = 0, l = items.length; i < l; i++) { observe(items[i]); } }; //helpers/***AugmentatargetObjectorArraybyintercepting*theprototypechainusing__proto__*/ function protoAugment (target, src) { /*eslint-disableno-proto*/ target.__proto__ = src; /*eslint-enableno-proto*/ } /***AugmentatargetObjectorArraybydefining*hiddenproperties.*/ /*istanbulignorenext*/ function copyAugment (target, src, keys) { for (var i = 0, l = keys.length; i < l; i++) { var key = keys[i]; def(target, key, src[key]); } } /***Attempttocreateanobserverinstanceforavalue,*returnsthenewobserverifsuccessfullyobserved,*ortheexistingobserverifthevaluealreadyhasone.*/ function observe (value, asRootData) { if (!isObject(value) || value instanceof VNode) { return } var ob; if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { ob = value.__ob__; } else if ( shouldObserve && !isServerRendering() &&(Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) { ob = new Observer(value); } if (asRootData && ob) { ob.vmCount++; } return ob } /***DefineareactivepropertyonanObject.*/ function defineReactive$$1 ( obj, key, val, customSetter, shallow) { var dep = new Dep(); var property = Object.getOwnPropertyDescriptor(obj, key); if (property && property.configurable === false) { return } //caterforpre-definedgetter/settersvargetter=property&&property.get;varsetter=property&&property.set;if((!getter||setter)&&arguments.length===2){val=obj[key];}varchildOb=!shallow&&observe(val);Object.defineProperty(obj,key,{enumerable:true,configurable:true,get:functionreactiveGetter(){varvalue=getter?getter.call(obj):val;if(Dep.target){dep.depend();if(childOb){childOb.dep.depend();if(Array.isArray(value)){dependArray(value);}}}returnvalue},set:functionreactiveSetter(newVal){varvalue=getter?getter.call(obj):val;/* eslint-disable no-self-compare */if(newVal===value||(newVal!==newVal&&value!==value)){return}/* eslint-enable no-self-compare */if(customSetter){customSetter();}// #7981: for accessor properties without setterif(getter&&!setter){return}if(setter){setter.call(obj,newVal);}else{val=newVal;}childOb=!shallow&&observe(newVal);dep.notify();}});}/** * Set a property on an object. Adds the new property and * triggers change notification if the property doesn't * already exist. */functionset(target,key,val){if(isUndef(target)||isPrimitive(target)){warn(("Cannot set reactive property on undefined, null, or primitive value: "+((target))));}if(Array.isArray(target)&&isValidArrayIndex(key)){target.length=Math.max(target.length,key);target.splice(key,1,val);returnval}if(keyintarget&&!(keyinObject.prototype)){target[key]=val;returnval}varob=(target).__ob__;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.');returnval}if(!ob){target[key]=val;returnval}defineReactive$$1(ob.value,key,val);ob.dep.notify();returnval}/** * Delete a property and trigger change if necessary. */functiondel(target,key){if(isUndef(target)||isPrimitive(target)){warn(("Cannot delete reactive property on undefined, null, or primitive value: "+((target))));}if(Array.isArray(target)&&isValidArrayIndex(key)){target.splice(key,1);return}varob=(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(!hasOwn(target,key)){return}deletetarget[key];if(!ob){return}ob.dep.notify();}/** * Collect dependencies on array elements when the array is touched, since * we cannot intercept array element access like property getters. */functiondependArray(value){for(vare=(void0),i=0,l=value.length;i<l;i++){e=value[i];e&&e.__ob__&&e.__ob__.dep.depend();if(Array.isArray(e)){dependArray(e);}}}/* *//** * Option overwriting strategies are functions that handle * how to merge a parent option value and a child option * value into the final value. */varstrats=config.optionMergeStrategies;/** * Options with restrictions */{strats.el=strats.propsData=function(parent,child,vm,key){if(!vm){warn("option \""+key+"\" can only be used during instance "+'creation with the `new` keyword.');}returndefaultStrat(parent,child)};}/** * Helper that recursively merges two data objects together. */functionmergeData(to,from){if(!from){returnto}varkey,toVal,fromVal;varkeys=hasSymbol?Reflect.ownKeys(from):Object.keys(from);for(vari=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(!hasOwn(to,key)){set(to,key,fromVal);}elseif(toVal!==fromVal&&isPlainObject(toVal)&&isPlainObject(fromVal)){mergeData(toVal,fromVal);}}returnto}/** * Data */functionmergeDataOrFn(parentVal,childVal,vm){if(!vm){// in a Vue.extend merge, both should be functionsif(!childVal){returnparentVal}if(!parentVal){returnchildVal}// 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.returnfunctionmergedDataFn(){returnmergeData(typeofchildVal==='function'?childVal.call(this,this):childVal,typeofparentVal==='function'?parentVal.call(this,this):parentVal)}}else{returnfunctionmergedInstanceDataFn(){// instance mergevarinstanceData=typeofchildVal==='function'?childVal.call(vm,vm):childVal;vardefaultData=typeofparentVal==='function'?parentVal.call(vm,vm):parentVal;if(instanceData){returnmergeData(instanceData,defaultData)}else{returndefaultData}}}}strats.data=function(parentVal,childVal,vm){if(!vm){if(childVal&&typeofchildVal!=='function'){warn('The "data" option should be a function '+'that returns a per-instance value in component '+'definitions.',vm);returnparentVal}returnmergeDataOrFn(parentVal,childVal)}returnmergeDataOrFn(parentVal,childVal,vm)};/** * Hooks and props are merged as arrays. */functionmergeHook(parentVal,childVal){varres=childVal?parentVal?parentVal.concat(childVal):Array.isArray(childVal)?childVal:[childVal]:parentVal;returnres?dedupeHooks(res):res}functiondedupeHooks(hooks){varres=[];for(vari=0;i<hooks.length;i++){if(res.indexOf(hooks[i])===-1){res.push(hooks[i]);}}returnres}LIFECYCLE_HOOKS.forEach(function(hook){strats[hook]=mergeHook;});/** * Assets * * When a vm is present (instance creation), we need to do * a three-way merge between constructor options, instance * options and parent options. */functionmergeAssets(parentVal,childVal,vm,key){varres=Object.create(parentVal||null);if(childVal){assertObjectType(key,childVal,vm);returnextend(res,childVal)}else{returnres}}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...if(parentVal===nativeWatch){parentVal=undefined;}if(childVal===nativeWatch){childVal=undefined;}/* istanbul ignore if */if(!childVal){returnObject.create(parentVal||null)}{assertObjectType(key,childVal,vm);}if(!parentVal){returnchildVal}varret={};extend(ret,parentVal);for(varkey$1inchildVal){varparent=ret[key$1];varchild=childVal[key$1];if(parent&&!Array.isArray(parent)){parent=[parent];}ret[key$1]=parent?parent.concat(child):Array.isArray(child)?child:[child];}returnret};/** * Other object hashes. */strats.props=strats.methods=strats.inject=strats.computed=function(parentVal,childVal,vm,key){if(childVal&&"development"!=='production'){assertObjectType(key,childVal,vm);}if(!parentVal){returnchildVal}varret=Object.create(null);extend(ret,parentVal);if(childVal){extend(ret,childVal);}returnret};strats.provide=mergeDataOrFn;/** * Default strategy. */vardefaultStrat=function(parentVal,childVal){returnchildVal===undefined?parentVal:childVal};/** * Validate component names */functioncheckComponents(options){for(varkeyinoptions.components){validateComponentName(key);}}functionvalidateComponentName(name){if(!newRegExp(("^[a-zA-Z][\\-\\.0-9_"+(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. */functionnormalizeProps(options,vm){varprops=options.props;if(!props){return}varres={};vari,val,name;if(Array.isArray(props)){i=props.length;while(i--){val=props[i];if(typeofval==='string'){name=camelize(val);res[name]={type:null};}else{warn('props must be strings when using array syntax.');}}}elseif(isPlainObject(props)){for(varkeyinprops){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 "+(toRawType(props))+".",vm);}options.props=res;}/** * Normalize all injections into Object-based format */functionnormalizeInject(options,vm){varinject=options.inject;if(!inject){return}varnormalized=options.inject={};if(Array.isArray(inject)){for(vari=0;i<inject.length;i++){normalized[inject[i]]={from:inject[i]};}}elseif(isPlainObject(inject)){for(varkeyininject){varval=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 "+(toRawType(inject))+".",vm);}}/** * Normalize raw function directives into object format. */functionnormalizeDirectives(options){vardirs=options.directives;if(dirs){for(varkeyindirs){vardef$$1=dirs[key];if(typeofdef$$1==='function'){dirs[key]={bind:def$$1,update:def$$1};}}}}functionassertObjectType(name,value,vm){if(!isPlainObject(value)){warn("Invalid value for option \""+name+"\": expected an Object, "+"but got "+(toRawType(value))+".",vm);}}/** * Merge two option objects into a new one. * Core utility used in both instantiation and inheritance. */functionmergeOptions(parent,child,vm){{checkComponents(child);}if(typeofchild==='function'){child=child.options;}normalizeProps(child,vm);normalizeInject(child,vm);normalizeDirectives(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(vari=0,l=child.mixins.length;i<l;i++){parent=mergeOptions(parent,child.mixins[i],vm);}}}varoptions={};varkey;for(keyinparent){mergeField(key);}for(keyinchild){if(!hasOwn(parent,key)){mergeField(key);}}functionmergeField(key){varstrat=strats[key]||defaultStrat;options[key]=strat(parent[key],child[key],vm,key);}returnoptions}/** * Resolve an asset. * This function is used because child instances need access * to assets defined in its ancestor chain. */functionresolveAsset(options,type,id,warnMissing){/* istanbul ignore if */if(typeofid!=='string'){return}varassets=options[type];// check local registration variations firstif(hasOwn(assets,id)){returnassets[id]}varcamelizedId=camelize(id);if(hasOwn(assets,camelizedId)){returnassets[camelizedId]}varPascalCaseId=capitalize(camelizedId);if(hasOwn(assets,PascalCaseId)){returnassets[PascalCaseId]}// fallback to prototype chainvarres=assets[id]||assets[camelizedId]||assets[PascalCaseId];if(warnMissing&&!res){warn('Failed to resolve '+type.slice(0,-1)+': '+id,options);}returnres}/* */functionvalidateProp(key,propOptions,propsData,vm){varprop=propOptions[key];varabsent=!hasOwn(propsData,key);varvalue=propsData[key];// boolean castingvarbooleanIndex=getTypeIndex(Boolean,prop.type);if(booleanIndex>-1){if(absent&&!hasOwn(prop,'default')){value=false;}elseif(value===''||value===hyphenate(key)){// only cast empty string / same name to boolean if// boolean has higher priorityvarstringIndex=getTypeIndex(String,prop.type);if(stringIndex<0||booleanIndex<stringIndex){value=true;}}}// check default valueif(value===undefined){value=getPropDefaultValue(vm,prop,key);// since the default value is a fresh copy,// make sure to observe it.varprevShouldObserve=shouldObserve;toggleObserving(true);observe(value);toggleObserving(prevShouldObserve);}{assertProp(prop,key,value,vm,absent);}returnvalue}/** * Get the default value of a prop. */functiongetPropDefaultValue(vm,prop,key){// no default, return undefinedif(!hasOwn(prop,'default')){returnundefined}vardef=prop.default;// warn against non-base_factory defaults for Object & Arrayif(isObject(def)){warn('Invalid default value for prop "'+key+'": '+'Props with type Object/Array must use a base_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 triggerif(vm&&vm.$options.propsData&&vm.$options.propsData[key]===undefined&&vm._props[key]!==undefined){returnvm._props[key]}// call base_factory function for non-Function types// a value is Function if its prototype is function even across different execution contextreturntypeofdef==='function'&&getType(prop.type)!=='Function'?def.call(vm):def}/** * Assert whether a prop is valid. */functionassertProp(prop,name,value,vm,absent){if(prop.required&&absent){warn('Missing required prop: "'+name+'"',vm);return}if(value==null&&!prop.required){return}vartype=prop.type;varvalid=!type||type===true;varexpectedTypes=[];if(type){if(!Array.isArray(type)){type=[type];}for(vari=0;i<type.length&&!valid;i++){varassertedType=assertType(value,type[i],vm);expectedTypes.push(assertedType.expectedType||'');valid=assertedType.valid;}}varhaveExpectedTypes=expectedTypes.some(function(t){returnt;});if(!valid&&haveExpectedTypes){warn(getInvalidTypeMessage(name,value,expectedTypes),vm);return}varvalidator=prop.validator;if(validator){if(!validator(value)){warn('Invalid prop: custom validator check failed for prop "'+name+'".',vm);}}}varsimpleCheckRE=/^(String|Number|Boolean|Function|Symbol|BigInt)$/;functionassertType(value,type,vm){varvalid;varexpectedType=getType(type);if(simpleCheckRE.test(expectedType)){vart=typeofvalue;valid=t===expectedType.toLowerCase();// for primitive wrapper objectsif(!valid&&t==='object'){valid=valueinstanceoftype;}}elseif(expectedType==='Object'){valid=isPlainObject(value);}elseif(expectedType==='Array'){valid=Array.isArray(value);}else{try{valid=valueinstanceoftype;}catch(e){warn('Invalid prop type: "'+String(type)+'" is not a constructor',vm);valid=false;}}return{valid:valid,expectedType:expectedType}}varfunctionTypeCheckRE=/^\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 (!Array.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 \"" + name + "\"." + " Expected " + (expectedTypes.map(capitalize).join(', ')); var expectedType = expectedTypes[0]; var receivedType = toRawType(value); //checkifweneedtospecifyexpectedvalueif(expectedTypes.length===1&&isExplicable(expectedType)&&isExplicable(typeofvalue)&&!isBoolean(expectedType,receivedType)){message+=" with value "+(styleValue(value,expectedType));}message+=", got "+receivedType+" ";// check if we need to specify received valueif(isExplicable(receivedType)){message+="with value "+(styleValue(value,receivedType))+".";}returnmessage}functionstyleValue(value,type){if(type==='String'){return("\""+value+"\"")}elseif(type==='Number'){return(""+(Number(value)))}else{return(""+value)}}varEXPLICABLE_TYPES=['string','number','boolean'];functionisExplicable(value){returnEXPLICABLE_TYPES.some(function(elem){returnvalue.toLowerCase()===elem;})}functionisBoolean(){varargs=[],len=arguments.length;while(len--)args[len]=arguments[len];returnargs.some(function(elem){returnelem.toLowerCase()==='boolean';})}/* */functionhandleError(err,vm,info){// Deactivate deps tracking while processing error handler to avoid possible infinite rendering.// See: https://github.com/vuejs/vuex/issues/1505pushTarget();try{if(vm){varcur=vm;while((cur=cur.$parent)){varhooks=cur.$options.errorCaptured;if(hooks){for(vari=0;i<hooks.length;i++){try{varcapture=hooks[i].call(cur,err,vm,info)===false;if(capture){return}}catch(e){globalHandleError(e,cur,'errorCaptured hook');}}}}}globalHandleError(err,vm,info);}finally{popTarget();}}functioninvokeWithErrorHandling(handler,context,args,vm,info){varres;try{res=args?handler.apply(context,args):handler.call(context);if(res&&!res._isVue&&isPromise(res)&&!res._handled){res.catch(function(e){returnhandleError(e,vm,info+" (Promise/async)");});// issue #9511// avoid catch triggering multiple times when nested callsres._handled=true;}}catch(e){handleError(e,vm,info);}returnres}functionglobalHandleError(err,vm,info){if(config.errorHandler){try{returnconfig.errorHandler.call(null,err,vm,info)}catch(e){// if the user intentionally throws the original error in the handler,// do not log it twiceif(e!==err){logError(e,null,'config.errorHandler');}}}logError(err,vm,info);}functionlogError(err,vm,info){{warn(("Error in "+info+": \""+(err.toString())+"\""),vm);}/* istanbul ignore else */if((inBrowser||inWeex)&&typeofconsole!=='undefined'){console.error(err);}else{throwerr}}/* */varisUsingMicroTask=false;varcallbacks=[];varpending=false;functionflushCallbacks(){pending=false;varcopies=callbacks.slice(0);callbacks.length=0;for(vari=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).vartimerFunc;// 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-base_line */if(typeofPromise!=='undefined'&&isNative(Promise)){varp=Promise.resolve();timerFunc=function(){p.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;}elseif(!isIE&&typeofMutationObserver!=='undefined'&&(isNative(MutationObserver)||// PhantomJS and iOS 7.xMutationObserver.toString()==='[object MutationObserverConstructor]')){// Use MutationObserver where native Promise is not available,// e.g. PhantomJS, iOS7, Android 4.4// (#6466 MutationObserver is unreliable in IE11)varcounter=1;varobserver=newMutationObserver(flushCallbacks);vartextNode=document.createTextNode(String(counter));observer.observe(textNode,{characterData:true});timerFunc=function(){counter=(counter+1)%2;textNode.data=String(counter);};isUsingMicroTask=true;}elseif(typeofsetImmediate!=='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);};}functionnextTick(cb,ctx){var_resolve;callbacks.push(function(){if(cb){try{cb.call(ctx);}catch(e){handleError(e,ctx,'nextTick');}}elseif(_resolve){_resolve(ctx);}});if(!pending){pending=true;timerFunc();}// $flow-disable-base_lineif(!cb&&typeofPromise!=='undefined'){returnnewPromise(function(resolve){_resolve=resolve;})}}/* */varmark;varmeasure;{varperf=inBrowser&&window.performance;/* istanbul ignore if */if(perf&&perf.mark&&perf.measure&&perf.clearMarks&&perf.clearMeasures){mark=function(tag){returnperf.mark(tag);};measure=function(name,startTag,endTag){perf.measure(name,startTag,endTag);perf.clearMarks(startTag);perf.clearMarks(endTag);// perf.clearMeasures(name)};}}/* not type checking this file because flow doesn't play well with Proxy */varinitProxy;{varallowedGlobals=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);varwarnNonPresent=function(target,key){warn("Property or method \""+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://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',target);};varwarnReservedPrefix=function(target,key){warn("Property \""+key+"\" must be accessed with \"$data."+key+"\" because "+'properties starting with "$" or "_" are not proxied in the Vue instance to '+'prevent conflicts with Vue internals. '+'See: https://vuejs.org/v2/api/#data',target);};varhasProxy=typeofProxy!=='undefined'&&isNative(Proxy);if(hasProxy){varisBuiltInModifier=makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');config.keyCodes=newProxy(config.keyCodes,{set:functionset(target,key,value){if(isBuiltInModifier(key)){warn(("Avoid overwriting built-in modifier in config.keyCodes: ."+key));returnfalse}else{target[key]=value;returntrue}}});}varhasHandler={has:functionhas(target,key){varhas=keyintarget;varisAllowed=allowedGlobals(key)||(typeofkey==='string'&&key.charAt(0)==='_'&&!(keyintarget.$data));if(!has&&!isAllowed){if(keyintarget.$data){warnReservedPrefix(target,key);}else{warnNonPresent(target,key);}}returnhas||!isAllowed}};vargetHandler={get:functionget(target,key){if(typeofkey==='string'&&!(keyintarget)){if(keyintarget.$data){warnReservedPrefix(target,key);}else{warnNonPresent(target,key);}}returntarget[key]}};initProxy=functioninitProxy(vm){if(hasProxy){// determine which proxy handler to usevaroptions=vm.$options;varhandlers=options.render&&options.render._withStripped?getHandler:hasHandler;vm._renderProxy=newProxy(vm,handlers);}else{vm._renderProxy=vm;}};}/* */varseenObjects=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. */functiontraverse(val){_traverse(val,seenObjects);seenObjects.clear();}function_traverse(val,seen){vari,keys;varisA=Array.isArray(val);if((!isA&&!isObject(val))||Object.isFrozen(val)||valinstanceofVNode){return}if(val.__ob__){vardepId=val.__ob__.dep.id;if(seen.has(depId)){return}seen.add(depId);}if(isA){i=val.length;while(i--){_traverse(val[i],seen);}}else{keys=Object.keys(val);i=keys.length;while(i--){_traverse(val[keys[i]],seen);}}}/* */varnormalizeEvent=cached(function(name){varpassive=name.charAt(0)==='&';name=passive?name.slice(1):name;varonce$$1=name.charAt(0)==='~';// Prefixed last, checked firstname=once$$1?name.slice(1):name;varcapture=name.charAt(0)==='!';name=capture?name.slice(1):name;return{name:name,once:once$$1,capture:capture,passive:passive}});functioncreateFnInvoker(fns,vm){functioninvoker(){vararguments$1=arguments;varfns=invoker.fns;if(Array.isArray(fns)){varcloned=fns.slice();for(vari=0;i<cloned.length;i++){invokeWithErrorHandling(cloned[i],null,arguments$1,vm,"v-on handler");}}else{// return handler return value for single handlersreturninvokeWithErrorHandling(fns,null,arguments,vm,"v-on handler")}}invoker.fns=fns;returninvoker}functionupdateListeners(on,oldOn,add,remove$$1,createOnceHandler,vm){varname,def$$1,cur,old,event;for(nameinon){def$$1=cur=on[name];old=oldOn[name];event=normalizeEvent(name);if(isUndef(cur)){warn("Invalid handler for event \""+(event.name)+"\": got "+String(cur),vm);}elseif(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);}elseif(cur!==old){old.fns=cur;on[name]=old;}}for(nameinoldOn){if(isUndef(on[name])){event=normalizeEvent(name);remove$$1(event.name,oldOn[name],event.capture);}}}/* */functionmergeVNodeHook(def,hookKey,hook){if(definstanceofVNode){def=def.data.hook||(def.data.hook={});}varinvoker;varoldHook=def[hookKey];functionwrappedHook(){hook.apply(this,arguments);// important: remove merged hook to ensure it's called only once// and prevent memory leakremove(invoker.fns,wrappedHook);}if(isUndef(oldHook)){// no existing hookinvoker=createFnInvoker([wrappedHook]);}else{/* istanbul ignore if */if(isDef(oldHook.fns)&&isTrue(oldHook.merged)){// already a merged invokerinvoker=oldHook;invoker.fns.push(wrappedHook);}else{// existing plain hookinvoker=createFnInvoker([oldHook,wrappedHook]);}}invoker.merged=true;def[hookKey]=invoker;}/* */functionextractPropsFromVNodeData(data,Ctor,tag){// we are only extracting raw values here.// validation and default values are handled in the child// component itself.varpropOptions=Ctor.options.props;if(isUndef(propOptions)){return}varres={};varattrs=data.attrs;varprops=data.props;if(isDef(attrs)||isDef(props)){for(varkeyinpropOptions){varaltKey=hyphenate(key);{varkeyInLowerCase=key.toLowerCase();if(key!==keyInLowerCase&&attrs&&hasOwn(attrs,keyInLowerCase)){tip("Prop \""+keyInLowerCase+"\" is passed to component "+(formatComponentName(tag||Ctor))+", but the declared prop name is"+" \""+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 \""+altKey+"\" instead of \""+key+"\".");}}checkProp(res,props,key,altKey,true)||checkProp(res,attrs,key,altKey,false);}}returnres}functioncheckProp(res,hash,key,altKey,preserve){if(isDef(hash)){if(hasOwn(hash,key)){res[key]=hash[key];if(!preserve){deletehash[key];}returntrue}elseif(hasOwn(hash,altKey)){res[key]=hash[altKey];if(!preserve){deletehash[altKey];}returntrue}}returnfalse}/* */// 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.functionsimpleNormalizeChildren(children){for(vari=0;i<children.length;i++){if(Array.isArray(children[i])){returnArray.prototype.concat.apply([],children)}}returnchildren}// 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.functionnormalizeChildren(children){returnisPrimitive(children)?[createTextVNode(children)]:Array.isArray(children)?normalizeArrayChildren(children):undefined}functionisTextNode(node){returnisDef(node)&&isDef(node.text)&&isFalse(node.isComment)}functionnormalizeArrayChildren(children,nestedIndex){varres=[];vari,c,lastIndex,last;for(i=0;i<children.length;i++){c=children[i];if(isUndef(c)||typeofc==='boolean'){continue}lastIndex=res.length-1;last=res[lastIndex];// nestedif(Array.isArray(c)){if(c.length>0){c=normalizeArrayChildren(c,((nestedIndex||'')+"_"+i));// merge adjacent text nodesif(isTextNode(c[0])&&isTextNode(last)){res[lastIndex]=createTextVNode(last.text+(c[0]).text);c.shift();}res.push.apply(res,c);}}elseif(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 stringsres[lastIndex]=createTextVNode(last.text+c);}elseif(c!==''){// convert primitive to vnoderes.push(createTextVNode(c));}}else{if(isTextNode(c)&&isTextNode(last)){// merge adjacent text nodesres[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"+nestedIndex+"_"+i+"__";}res.push(c);}}}returnres}/* */functioninitProvide(vm){varprovide=vm.$options.provide;if(provide){vm._provided=typeofprovide==='function'?provide.call(vm):provide;}}functioninitInjections(vm){varresult=resolveInject(vm.$options.inject,vm);if(result){toggleObserving(false);Object.keys(result).forEach(function(key){/* istanbul ignore else */{defineReactive$$1(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: \""+key+"\"",vm);});}});toggleObserving(true);}}functionresolveInject(inject,vm){if(inject){// inject is :any because flow is not smart enough to figure out cachedvarresult=Object.create(null);varkeys=hasSymbol?Reflect.ownKeys(inject):Object.keys(inject);for(vari=0;i<keys.length;i++){varkey=keys[i];// #6574 in case the inject object is observed...if(key==='__ob__'){continue}varprovideKey=inject[key].from;varsource=vm;while(source){if(source._provided&&hasOwn(source._provided,provideKey)){result[key]=source._provided[provideKey];break}source=source.$parent;}if(!source){if('default'ininject[key]){varprovideDefault=inject[key].default;result[key]=typeofprovideDefault==='function'?provideDefault.call(vm):provideDefault;}else{warn(("Injection \""+key+"\" not found"),vm);}}}returnresult}}/* *//** * Runtime helper for resolving raw children VNodes into a slot object. */functionresolveSlots(children,context){if(!children||!children.length){return{}}varslots={};for(vari=0,l=children.length;i<l;i++){varchild=children[i];vardata=child.data;// remove slot attribute if the node is resolved as a Vue slot nodeif(data&&data.attrs&&data.attrs.slot){deletedata.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){varname=data.slot;varslot=(slots[name]||(slots[name]=[]));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 whitespacefor(varname$1inslots){if(slots[name$1].every(isWhitespace)){deleteslots[name$1];}}returnslots}functionisWhitespace(node){return(node.isComment&&!node.asyncFactory)||node.text===' '}/* */functionisAsyncPlaceholder(node){returnnode.isComment&&node.asyncFactory}/* */functionnormalizeScopedSlots(slots,normalSlots,prevSlots){varres;varhasNormalSlots=Object.keys(normalSlots).length>0;varisStable=slots?!!slots.$stable:!hasNormalSlots;varkey=slots&&slots.$key;if(!slots){res={};}elseif(slots._normalized){// fast path 1: child component re-render only, parent did not changereturnslots._normalized}elseif(isStable&&prevSlots&&prevSlots!==emptyObject&&key===prevSlots.$key&&!hasNormalSlots&&!prevSlots.$hasNormal){// fast path 2: stable scoped slots w/ no normal slots to proxy,// only need to normalize oncereturnprevSlots}else{res={};for(varkey$1inslots){if(slots[key$1]&&key$1[0]!=='$'){res[key$1]=normalizeScopedSlot(normalSlots,key$1,slots[key$1]);}}}// expose normal slots on scopedSlotsfor(varkey$2innormalSlots){if(!(key$2inres)){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 errorif(slots&&Object.isExtensible(slots)){(slots)._normalized=res;}def(res,'$stable',isStable);def(res,'$key',key);def(res,'$hasNormal',hasNormalSlots);returnres}functionnormalizeScopedSlot(normalSlots,key,fn){varnormalized=function(){varres=arguments.length?fn.apply(null,arguments):fn({});res=res&&typeofres==='object'&&!Array.isArray(res)?[res]// single vnode:normalizeChildren(res);varvnode=res&&res[0];returnres&&(!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});}returnnormalized}functionproxyNormalSlot(slots,key){returnfunction(){returnslots[key];}}/* *//** * Runtime helper for rendering v-for lists. */functionrenderList(val,render){varret,i,l,keys,key;if(Array.isArray(val)||typeofval==='string'){ret=newArray(val.length);for(i=0,l=val.length;i<l;i++){ret[i]=render(val[i],i);}}elseif(typeofval==='number'){ret=newArray(val);for(i=0;i<val;i++){ret[i]=render(i+1,i);}}elseif(isObject(val)){if(hasSymbol&&val[Symbol.iterator]){ret=[];variterator=val[Symbol.iterator]();varresult=iterator.next();while(!result.done){ret.push(render(result.value,ret.length));result=iterator.next();}}else{keys=Object.keys(val);ret=newArray(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;returnret}/* *//** * Runtime helper for rendering <slot> */functionrenderSlot(name,fallbackRender,props,bindObject){varscopedSlotFn=this.$scopedSlots[name];varnodes;if(scopedSlotFn){// scoped slotprops=props||{};if(bindObject){if(!isObject(bindObject)){warn('slot v-bind without argument expects an Object',this);}props=extend(extend({},bindObject),props);}nodes=scopedSlotFn(props)||(typeoffallbackRender==='function'?fallbackRender():fallbackRender);}else{nodes=this.$slots[name]||(typeoffallbackRender==='function'?fallbackRender():fallbackRender);}vartarget=props&&props.slot;if(target){returnthis.$createElement('template',{slot:target},nodes)}else{returnnodes}}/* *//** * Runtime helper for resolving filters */functionresolveFilter(id){returnresolveAsset(this.$options,'filters',id,true)||identity}/* */functionisKeyNotMatch(expect,actual){if(Array.isArray(expect)){returnexpect.indexOf(actual)===-1}else{returnexpect!==actual}}/** * Runtime helper for checking keyCodes from config. * exposed as Vue.prototype._k * passing in eventKeyName as last argument separately for backwards compat */functioncheckKeyCodes(eventKeyCode,key,builtInKeyCode,eventKeyName,builtInKeyName){varmappedKeyCode=config.keyCodes[key]||builtInKeyCode;if(builtInKeyName&&eventKeyName&&!config.keyCodes[key]){returnisKeyNotMatch(builtInKeyName,eventKeyName)}elseif(mappedKeyCode){returnisKeyNotMatch(mappedKeyCode,eventKeyCode)}elseif(eventKeyName){returnhyphenate(eventKeyName)!==key}returneventKeyCode===undefined}/* *//** * Runtime helper for merging v-bind="object" into a VNode's data. */functionbindObjectProps(data,tag,value,asProp,isSync){if(value){if(!isObject(value)){warn('v-bind without argument expects an Object or Array value',this);}else{if(Array.isArray(value)){value=toObject(value);}varhash;varloop=function(key){if(key==='class'||key==='style'||isReservedAttribute(key)){hash=data;}else{vartype=data.attrs&&data.attrs.type;hash=asProp||config.mustUseProp(tag,type,key)?data.domProps||(data.domProps={}):data.attrs||(data.attrs={});}varcamelizedKey=camelize(key);varhyphenatedKey=hyphenate(key);if(!(camelizedKeyinhash)&&!(hyphenatedKeyinhash)){hash[key]=value[key];if(isSync){varon=data.on||(data.on={});on[("update:"+key)]=function($event){value[key]=$event;};}}};for(varkeyinvalue)loop(key);}}returndata}/* *//** * Runtime helper for rendering static trees. */functionrenderStatic(index,isInFor){varcached=this._staticTrees||(this._staticTrees=[]);vartree=cached[index];// if has already-rendered static tree and not inside v-for,// we can reuse the same tree.if(tree&&!isInFor){returntree}// otherwise, render a fresh tree.tree=cached[index]=this.$options.staticRenderFns[index].call(this._renderProxy,null,this// for render fns generated for functional component templates);markStatic(tree,("__static__"+index),false);returntree}/** * Runtime helper for v-once. * Effectively it means marking the node as static with a unique key. */functionmarkOnce(tree,index,key){markStatic(tree,("__once__"+index+(key?("_"+key):"")),true);returntree}functionmarkStatic(tree,key,isOnce){if(Array.isArray(tree)){for(vari=0;i<tree.length;i++){if(tree[i]&&typeoftree[i]!=='string'){markStaticNode(tree[i],(key+"_"+i),isOnce);}}}else{markStaticNode(tree,key,isOnce);}}functionmarkStaticNode(node,key,isOnce){node.isStatic=true;node.key=key;node.isOnce=isOnce;}/* */functionbindObjectListeners(data,value){if(value){if(!isPlainObject(value)){warn('v-on without argument expects an Object value',this);}else{varon=data.on=data.on?extend({},data.on):{};for(varkeyinvalue){varexisting=on[key];varours=value[key];on[key]=existing?[].concat(existing,ours):ours;}}}returndata}/* */functionresolveScopedSlots(fns,// see flow/vnoderes,// the following are added in 2.6hasDynamicKeys,contentHashKey){res=res||{$stable:!hasDynamicKeys};for(vari=0;i<fns.length;i++){varslot=fns[i];if(Array.isArray(slot)){resolveScopedSlots(slot,res,hasDynamicKeys);}elseif(slot){// marker for reverse proxying v-slot without scope on this.$slotsif(slot.proxy){slot.fn.proxy=true;}res[slot.key]=slot.fn;}}if(contentHashKey){(res).$key=contentHashKey;}returnres}/* */functionbindDynamicKeys(baseObj,values){for(vari=0;i<values.length;i+=2){varkey=values[i];if(typeofkey==='string'&&key){baseObj[values[i]]=values[i+1];}elseif(key!==''&&key!==null){// null is a special value for explicitly removing a bindingwarn(("Invalid value for dynamic directive argument (expected string or null): "+key),this);}}returnbaseObj}// 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.functionprependModifier(value,symbol){returntypeofvalue==='string'?symbol+value:value}/* */functioninstallRenderHelpers(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;}/* */functionFunctionalRenderContext(data,props,children,parent,Ctor){varthis$1=this;varoptions=Ctor.options;// ensure the createElement function in functional components// gets a unique context - this is necessary for correct named slot checkvarcontextVm;if(hasOwn(parent,'_uid')){contextVm=Object.create(parent);// $flow-disable-base_linecontextVm._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;// $flow-disable-base_lineparent=parent._original;}varisCompiled=isTrue(options._compiled);varneedNormalization=!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$1.$slots){normalizeScopedSlots(data.scopedSlots,this$1.$slots=resolveSlots(children,parent));}returnthis$1.$slots};Object.defineProperty(this,'scopedSlots',({enumerable:true,get:functionget(){returnnormalizeScopedSlots(data.scopedSlots,this.slots())}}));// support for compiled functional templateif(isCompiled){// exposing $options for renderStatic()this.$options=options;// pre-resolve slots for renderSlot()this.$slots=this.slots();this.$scopedSlots=normalizeScopedSlots(data.scopedSlots,this.$slots);}if(options._scopeId){this._c=function(a,b,c,d){varvnode=createElement(contextVm,a,b,c,d,needNormalization);if(vnode&&!Array.isArray(vnode)){vnode.fnScopeId=options._scopeId;vnode.fnContext=parent;}returnvnode};}else{this._c=function(a,b,c,d){returncreateElement(contextVm,a,b,c,d,needNormalization);};}}installRenderHelpers(FunctionalRenderContext.prototype);functioncreateFunctionalComponent(Ctor,propsData,data,contextVm,children){varoptions=Ctor.options;varprops={};varpropOptions=options.props;if(isDef(propOptions)){for(varkeyinpropOptions){props[key]=validateProp(key,propOptions,propsData||emptyObject);}}else{if(isDef(data.attrs)){mergeProps(props,data.attrs);}if(isDef(data.props)){mergeProps(props,data.props);}}varrenderContext=newFunctionalRenderContext(data,props,children,contextVm,Ctor);varvnode=options.render.call(null,renderContext._c,renderContext);if(vnodeinstanceofVNode){returncloneAndMarkFunctionalResult(vnode,data,renderContext.parent,options,renderContext)}elseif(Array.isArray(vnode)){varvnodes=normalizeChildren(vnode)||[];varres=newArray(vnodes.length);for(vari=0;i<vnodes.length;i++){res[i]=cloneAndMarkFunctionalResult(vnodes[i],data,renderContext.parent,options,renderContext);}returnres}}functioncloneAndMarkFunctionalResult(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.varclone=cloneVNode(vnode);clone.fnContext=contextVm;clone.fnOptions=options;{(clone.devtoolsMeta=clone.devtoolsMeta||{}).renderContext=renderContext;}if(data.slot){(clone.data||(clone.data={})).slot=data.slot;}returnclone}functionmergeProps(to,from){for(varkeyinfrom){to[camelize(key)]=from[key];}}/* *//* *//* *//* */// inline hooks to be invoked on component VNodes during patchvarcomponentVNodeHooks={init:functioninit(vnode,hydrating){if(vnode.componentInstance&&!vnode.componentInstance._isDestroyed&&vnode.data.keepAlive){// kept-alive components, treat as a patchvarmountedNode=vnode;// work around flowcomponentVNodeHooks.prepatch(mountedNode,mountedNode);}else{varchild=vnode.componentInstance=createComponentInstanceForVnode(vnode,activeInstance);child.$mount(hydrating?vnode.elm:undefined,hydrating);}},prepatch:functionprepatch(oldVnode,vnode){varoptions=vnode.componentOptions;varchild=vnode.componentInstance=oldVnode.componentInstance;updateChildComponent(child,options.propsData,// updated propsoptions.listeners,// updated listenersvnode,// new parent vnodeoptions.children// new children);},insert:functioninsert(vnode){varcontext=vnode.context;varcomponentInstance=vnode.componentInstance;if(!componentInstance._isMounted){componentInstance._isMounted=true;callHook(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:functiondestroy(vnode){varcomponentInstance=vnode.componentInstance;if(!componentInstance._isDestroyed){if(!vnode.data.keepAlive){componentInstance.$destroy();}else{deactivateChildComponent(componentInstance,true/* direct */);}}}};varhooksToMerge=Object.keys(componentVNodeHooks);functioncreateComponent(Ctor,data,context,children,tag){if(isUndef(Ctor)){return}varbaseCtor=context.$options._base;// plain options object: turn it into a constructorif(isObject(Ctor)){Ctor=baseCtor.extend(Ctor);}// if at this stage it's not a constructor or an async component base_factory,// reject.if(typeofCtor!=='function'){{warn(("Invalid Component definition: "+(String(Ctor))),context);}return}// async componentvarasyncFactory;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.returncreateAsyncPlaceholder(asyncFactory,data,context,children,tag)}}data=data||{};// resolve constructor options in case global mixins are applied after// component constructor creationresolveConstructorOptions(Ctor);// transform component v-model data into props & eventsif(isDef(data.model)){transformModel(Ctor.options,data);}// extract propsvarpropsData=extractPropsFromVNodeData(data,Ctor,tag);// functional componentif(isTrue(Ctor.options.functional)){returncreateFunctionalComponent(Ctor,propsData,data,context,children)}// extract listeners, since these needs to be treated as// child component listeners instead of DOM listenersvarlisteners=data.on;// replace with listeners with .native modifier// so it gets processed during parent component patch.data.on=data.nativeOn;if(isTrue(Ctor.options.abstract)){// abstract components do not keep anything// other than props & listeners & slot// work around flowvarslot=data.slot;data={};if(slot){data.slot=slot;}}// install component management hooks onto the placeholder nodeinstallComponentHooks(data);// return a placeholder vnodevarname=Ctor.options.name||tag;varvnode=newVNode(("vue-component-"+(Ctor.cid)+(name?("-"+name):'')),data,undefined,undefined,undefined,context,{Ctor:Ctor,propsData:propsData,listeners:listeners,tag:tag,children:children},asyncFactory);returnvnode}functioncreateComponentInstanceForVnode(// we know it's MountedComponentVNode but flow doesn'tvnode,// activeInstance in lifecycle stateparent){varoptions={_isComponent:true,_parentVnode:vnode,parent:parent};// check inline-template render functionsvarinlineTemplate=vnode.data.inlineTemplate;if(isDef(inlineTemplate)){options.render=inlineTemplate.render;options.staticRenderFns=inlineTemplate.staticRenderFns;}returnnewvnode.componentOptions.Ctor(options)}functioninstallComponentHooks(data){varhooks=data.hook||(data.hook={});for(vari=0;i<hooksToMerge.length;i++){varkey=hooksToMerge[i];varexisting=hooks[key];vartoMerge=componentVNodeHooks[key];if(existing!==toMerge&&!(existing&&existing._merged)){hooks[key]=existing?mergeHook$1(toMerge,existing):toMerge;}}}functionmergeHook$1(f1,f2){varmerged=function(a,b){// flow complains about extra args which is why we use anyf1(a,b);f2(a,b);};merged._merged=true;returnmerged}// transform component v-model info (value and callback) into// prop and event handler respectively.functiontransformModel(options,data){varprop=(options.model&&options.model.prop)||'value';varevent=(options.model&&options.model.event)||'input';(data.attrs||(data.attrs={}))[prop]=data.model.value;varon=data.on||(data.on={});varexisting=on[event];varcallback=data.model.callback;if(isDef(existing)){if(Array.isArray(existing)?existing.indexOf(callback)===-1:existing!==callback){on[event]=[callback].concat(existing);}}else{on[event]=callback;}}/* */varSIMPLE_NORMALIZE=1;varALWAYS_NORMALIZE=2;// wrapper function for providing a more flexible interface// without getting yelled at by flowfunctioncreateElement(context,tag,data,children,normalizationType,alwaysNormalize){if(Array.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: "+(JSON.stringify(data))+"\n"+'Always create fresh vnode data objects in each render!',context);returncreateEmptyVNode()}// object syntax in v-bindif(isDef(data)&&isDef(data.is)){tag=data.is;}if(!tag){// in case of component :is set to falsy valuereturncreateEmptyVNode()}// warn against non-primitive keyif(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 slotif(Array.isArray(children)&&typeofchildren[0]==='function'){data=data||{};data.scopedSlots={default:children[0]};children.length=0;}if(normalizationType===ALWAYS_NORMALIZE){children=normalizeChildren(children);}elseif(normalizationType===SIMPLE_NORMALIZE){children=simpleNormalizeChildren(children);}varvnode,ns;if(typeoftag==='string'){varCtor;ns=(context.$vnode&&context.$vnode.ns)||config.getTagNamespace(tag);if(config.isReservedTag(tag)){// platform built-in elementsif(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 <"+tag+">."),context);}vnode=newVNode(config.parsePlatformTagName(tag),data,children,undefined,undefined,context);}elseif((!data||!data.pre)&&isDef(Ctor=resolveAsset(context.$options,'components',tag))){// componentvnode=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 childrenvnode=newVNode(tag,data,children,undefined,undefined,context);}}else{// direct component options / constructorvnode=createComponent(tag,data,context,children);}if(Array.isArray(vnode)){returnvnode}elseif(isDef(vnode)){if(isDef(ns)){applyNS(vnode,ns);}if(isDef(data)){registerDeepBindings(data);}returnvnode}else{returncreateEmptyVNode()}}functionapplyNS(vnode,ns,force){vnode.ns=ns;if(vnode.tag==='foreignObject'){// use default namespace inside foreignObjectns=undefined;force=true;}if(isDef(vnode.children)){for(vari=0,l=vnode.children.length;i<l;i++){varchild=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 nodesfunctionregisterDeepBindings(data){if(isObject(data.style)){traverse(data.style);}if(isObject(data.class)){traverse(data.class);}}/* */functioninitRender(vm){vm._vnode=null;// the root of the child treevm._staticTrees=null;// v-once cached treesvaroptions=vm.$options;varparentVnode=vm.$vnode=options._parentVnode;// the placeholder node in parent treevarrenderContext=parentVnode&&parentVnode.context;vm.$slots=resolveSlots(options._renderChildren,renderContext);vm.$scopedSlots=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 templatesvm._c=function(a,b,c,d){returncreateElement(vm,a,b,c,d,false);};// normalization is always applied for the public version, used in// user-written render functions.vm.$createElement=function(a,b,c,d){returncreateElement(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 updatedvarparentData=parentVnode&&parentVnode.data;/* istanbul ignore else */{defineReactive$$1(vm,'$attrs',parentData&&parentData.attrs||emptyObject,function(){!isUpdatingChildComponent&&warn("$attrs is readonly.",vm);},true);defineReactive$$1(vm,'$listeners',options._parentListeners||emptyObject,function(){!isUpdatingChildComponent&&warn("$listeners is readonly.",vm);},true);}}varcurrentRenderingInstance=null;functionrenderMixin(Vue){// install runtime convenience helpersinstallRenderHelpers(Vue.prototype);Vue.prototype.$nextTick=function(fn){returnnextTick(fn,this)};Vue.prototype._render=function(){varvm=this;varref=vm.$options;varrender=ref.render;var_parentVnode=ref._parentVnode;if(_parentVnode){vm.$scopedSlots=normalizeScopedSlots(_parentVnode.data.scopedSlots,vm.$slots,vm.$scopedSlots);}// set parent vnode. this allows render functions to have access// to the data on the placeholder node.vm.$vnode=_parentVnode;// render selfvarvnode;try{// There's no need to maintain a stack because all render fns are called// separately from one another. Nested component's render fns are called// when parent component is patched.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=null;}// if the returned array contains only a single node, allow itif(Array.isArray(vnode)&&vnode.length===1){vnode=vnode[0];}// return empty vnode in case the render function errored outif(!(vnodeinstanceofVNode)){if(Array.isArray(vnode)){warn('Multiple root nodes returned from render function. Render function '+'should return a single root node.',vm);}vnode=createEmptyVNode();}// set parentvnode.parent=_parentVnode;returnvnode};}/* */functionensureCtor(comp,base){if(comp.__esModule||(hasSymbol&&comp[Symbol.toStringTag]==='Module')){comp=comp.default;}returnisObject(comp)?base.extend(comp):comp}functioncreateAsyncPlaceholder(base_factory,data,context,children,tag){varnode=createEmptyVNode();node.asyncFactory=base_factory;node.asyncMeta={data:data,context:context,children:children,tag:tag};returnnode}functionresolveAsyncComponent(base_factory,baseCtor){if(isTrue(base_factory.error)&&isDef(base_factory.errorComp)){returnbase_factory.errorComp}if(isDef(base_factory.resolved)){returnbase_factory.resolved}varowner=currentRenderingInstance;if(owner&&isDef(base_factory.owners)&&base_factory.owners.indexOf(owner)===-1){// already pendingbase_factory.owners.push(owner);}if(isTrue(base_factory.loading)&&isDef(base_factory.loadingComp)){returnbase_factory.loadingComp}if(owner&&!isDef(base_factory.owners)){varowners=base_factory.owners=[owner];varsync=true;vartimerLoading=null;vartimerTimeout=null;(owner).$on('hook:destroyed',function(){returnremove(owners,owner);});varforceRender=function(renderCompleted){for(vari=0,l=owners.length;i<l;i++){(owners[i]).$forceUpdate();}if(renderCompleted){owners.length=0;if(timerLoading!==null){clearTimeout(timerLoading);timerLoading=null;}if(timerTimeout!==null){clearTimeout(timerTimeout);timerTimeout=null;}}};varresolve=once(function(res){// cache resolvedbase_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){forceRender(true);}else{owners.length=0;}});varreject=once(function(reason){warn("Failed to resolve async component: "+(String(base_factory))+(reason?("\nReason: "+reason):''));if(isDef(base_factory.errorComp)){base_factory.error=true;forceRender(true);}});varres=base_factory(resolve,reject);if(isObject(res)){if(isPromise(res)){// () => Promiseif(isUndef(base_factory.resolved)){res.then(resolve,reject);}}elseif(isPromise(res.component)){res.component.then(resolve,reject);if(isDef(res.error)){base_factory.errorComp=ensureCtor(res.error,baseCtor);}if(isDef(res.loading)){base_factory.loadingComp=ensureCtor(res.loading,baseCtor);if(res.delay===0){base_factory.loading=true;}else{timerLoading=setTimeout(function(){timerLoading=null;if(isUndef(base_factory.resolved)&&isUndef(base_factory.error)){base_factory.loading=true;forceRender(false);}},res.delay||200);}}if(isDef(res.timeout)){timerTimeout=setTimeout(function(){timerTimeout=null;if(isUndef(base_factory.resolved)){reject("timeout ("+(res.timeout)+"ms)");}},res.timeout);}}}sync=false;// return in case resolved synchronouslyreturnbase_factory.loading?base_factory.loadingComp:base_factory.resolved}}/* */functiongetFirstComponentChild(children){if(Array.isArray(children)){for(vari=0;i<children.length;i++){varc=children[i];if(isDef(c)&&(isDef(c.componentOptions)||isAsyncPlaceholder(c))){returnc}}}}/* *//* */functioninitEvents(vm){vm._events=Object.create(null);vm._hasHookEvent=false;// init parent attached eventsvarlisteners=vm.$options._parentListeners;if(listeners){updateComponentListeners(vm,listeners);}}vartarget;functionadd(event,fn){target.$on(event,fn);}functionremove$1(event,fn){target.$off(event,fn);}functioncreateOnceHandler(event,fn){var_target=target;returnfunctiononceHandler(){varres=fn.apply(null,arguments);if(res!==null){_target.$off(event,onceHandler);}}}functionupdateComponentListeners(vm,listeners,oldListeners){target=vm;updateListeners(listeners,oldListeners||{},add,remove$1,createOnceHandler,vm);target=undefined;}functioneventsMixin(Vue){varhookRE=/^hook:/;Vue.prototype.$on=function(event,fn){varvm=this;if(Array.isArray(event)){for(vari=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 lookupif(hookRE.test(event)){vm._hasHookEvent=true;}}returnvm};Vue.prototype.$once=function(event,fn){varvm=this;functionon(){vm.$off(event,on);fn.apply(vm,arguments);}on.fn=fn;vm.$on(event,on);returnvm};Vue.prototype.$off=function(event,fn){varvm=this;// allif(!arguments.length){vm._events=Object.create(null);returnvm}// array of eventsif(Array.isArray(event)){for(vari$1=0,l=event.length;i$1<l;i$1++){vm.$off(event[i$1],fn);}returnvm}// specific eventvarcbs=vm._events[event];if(!cbs){returnvm}if(!fn){vm._events[event]=null;returnvm}// specific handlervarcb;vari=cbs.length;while(i--){cb=cbs[i];if(cb===fn||cb.fn===fn){cbs.splice(i,1);break}}returnvm};Vue.prototype.$emit=function(event){varvm=this;{varlowerCaseEvent=event.toLowerCase();if(lowerCaseEvent!==event&&vm._events[lowerCaseEvent]){tip("Event \""+lowerCaseEvent+"\" is emitted in component "+(formatComponentName(vm))+" but the handler is registered for \""+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 \""+(hyphenate(event))+"\" instead of \""+event+"\".");}}varcbs=vm._events[event];if(cbs){cbs=cbs.length>1?toArray(cbs):cbs;varargs=toArray(arguments,1);varinfo="event handler for \""+event+"\"";for(vari=0,l=cbs.length;i<l;i++){invokeWithErrorHandling(cbs[i],vm,args,vm,info);}}returnvm};}/* */varactiveInstance=null;varisUpdatingChildComponent=false;functionsetActiveInstance(vm){varprevActiveInstance=activeInstance;activeInstance=vm;returnfunction(){activeInstance=prevActiveInstance;}}functioninitLifecycle(vm){varoptions=vm.$options;// locate first non-abstract parentvarparent=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._watcher=null;vm._inactive=null;vm._directInactive=false;vm._isMounted=false;vm._isDestroyed=false;vm._isBeingDestroyed=false;}functionlifecycleMixin(Vue){Vue.prototype._update=function(vnode,hydrating){varvm=this;varprevEl=vm.$el;varprevVnode=vm._vnode;varrestoreActiveInstance=setActiveInstance(vm);vm._vnode=vnode;// Vue.prototype.__patch__ is injected in entry points// based on the rendering backend used.if(!prevVnode){// initial rendervm.$el=vm.__patch__(vm.$el,vnode,hydrating,false/* removeOnly */);}else{// updatesvm.$el=vm.__patch__(prevVnode,vnode);}restoreActiveInstance();// update __vue__ referenceif(prevEl){prevEl.__vue__=null;}if(vm.$el){vm.$el.__vue__=vm;}// if parent is an HOC, update its $el as wellif(vm.$vnode&&vm.$parent&&vm.$vnode===vm.$parent._vnode){vm.$parent.$el=vm.$el;}// updated hook is called by the scheduler to ensure that children are// updated in a parent's updated hook.};Vue.prototype.$forceUpdate=function(){varvm=this;if(vm._watcher){vm._watcher.update();}};Vue.prototype.$destroy=function(){varvm=this;if(vm._isBeingDestroyed){return}callHook(vm,'beforeDestroy');vm._isBeingDestroyed=true;// remove self from parentvarparent=vm.$parent;if(parent&&!parent._isBeingDestroyed&&!vm.$options.abstract){remove(parent.$children,vm);}// teardown watchersif(vm._watcher){vm._watcher.teardown();}vari=vm._watchers.length;while(i--){vm._watchers[i].teardown();}// 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 treevm.__patch__(vm._vnode,null);// fire destroyed hookcallHook(vm,'destroyed');// turn off all instance listeners.vm.$off();// remove __vue__ referenceif(vm.$el){vm.$el.__vue__=null;}// release circular reference (#6759)if(vm.$vnode){vm.$vnode.parent=null;}};}functionmountComponent(vm,el,hydrating){vm.$el=el;if(!vm.$options.render){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(vm,'beforeMount');varupdateComponent;/* istanbul ignore if */if(config.performance&&mark){updateComponent=function(){varname=vm._name;varid=vm._uid;varstartTag="vue-perf-start:"+id;varendTag="vue-perf-end:"+id;mark(startTag);varvnode=vm._render();mark(endTag);measure(("vue "+name+" render"),startTag,endTag);mark(startTag);vm._update(vnode,hydrating);mark(endTag);measure(("vue "+name+" patch"),startTag,endTag);};}else{updateComponent=function(){vm._update(vm._render(),hydrating);};}// 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 definednewWatcher(vm,updateComponent,noop,{before:functionbefore(){if(vm._isMounted&&!vm._isDestroyed){callHook(vm,'beforeUpdate');}}},true/* isRenderWatcher */);hydrating=false;// manually mounted instance, call mounted on self// mounted is called for render-created child components in its inserted hookif(vm.$vnode==null){vm._isMounted=true;callHook(vm,'mounted');}returnvm}functionupdateChildComponent(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.varnewScopedSlots=parentVnode.data.scopedSlots;varoldScopedSlots=vm.$scopedSlots;varhasDynamicScopedSlot=!!((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.varneedsForceUpdate=!!(renderChildren||// has new static slotsvm.$options._renderChildren||// has old static slotshasDynamicScopedSlot);vm.$options._parentVnode=parentVnode;vm.$vnode=parentVnode;// update vm's placeholder node without re-renderif(vm._vnode){// update child tree's parentvm._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 rendervm.$attrs=parentVnode.data.attrs||emptyObject;vm.$listeners=listeners||emptyObject;// update propsif(propsData&&vm.$options.props){toggleObserving(false);varprops=vm._props;varpropKeys=vm.$options._propKeys||[];for(vari=0;i<propKeys.length;i++){varkey=propKeys[i];varpropOptions=vm.$options.props;// wtf flow?props[key]=validateProp(key,propOptions,propsData,vm);}toggleObserving(true);// keep a copy of raw propsDatavm.$options.propsData=propsData;}// update listenerslisteners=listeners||emptyObject;varoldListeners=vm.$options._parentListeners;vm.$options._parentListeners=listeners;updateComponentListeners(vm,listeners,oldListeners);// resolve slots + force update if has childrenif(needsForceUpdate){vm.$slots=resolveSlots(renderChildren,parentVnode.context);vm.$forceUpdate();}{isUpdatingChildComponent=false;}}functionisInInactiveTree(vm){while(vm&&(vm=vm.$parent)){if(vm._inactive){returntrue}}returnfalse}functionactivateChildComponent(vm,direct){if(direct){vm._directInactive=false;if(isInInactiveTree(vm)){return}}elseif(vm._directInactive){return}if(vm._inactive||vm._inactive===null){vm._inactive=false;for(vari=0;i<vm.$children.length;i++){activateChildComponent(vm.$children[i]);}callHook(vm,'activated');}}functiondeactivateChildComponent(vm,direct){if(direct){vm._directInactive=true;if(isInInactiveTree(vm)){return}}if(!vm._inactive){vm._inactive=true;for(vari=0;i<vm.$children.length;i++){deactivateChildComponent(vm.$children[i]);}callHook(vm,'deactivated');}}functioncallHook(vm,hook){// #7573 disable dep collection when invoking lifecycle hookspushTarget();varhandlers=vm.$options[hook];varinfo=hook+" hook";if(handlers){for(vari=0,j=handlers.length;i<j;i++){invokeWithErrorHandling(handlers[i],vm,null,vm,info);}}if(vm._hasHookEvent){vm.$emit('hook:'+hook);}popTarget();}/* */varMAX_UPDATE_COUNT=100;varqueue=[];varactivatedChildren=[];varhas={};varcircular={};varwaiting=false;varflushing=false;varindex=0;/** * Reset the scheduler's state. */functionresetSchedulerState(){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.varcurrentFlushTimestamp=0;// Async edge case fix requires storing an event listener's attach timestamp.vargetNow=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){varperformance=window.performance;if(performance&&typeofperformance.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(){returnperformance.now();};}}/** * Flush both queues and run the watchers. */functionflushSchedulerQueue(){currentFlushTimestamp=getNow();flushing=true;varwatcher,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(function(a,b){returna.id-b.id;});// do not cache length because more watchers might be pushed// as we run existing watchersfor(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 \""+(watcher.expression)+"\""):"in a component render function."),watcher.vm);break}}}// keep copies of post queues before resetting statevaractivatedQueue=activatedChildren.slice();varupdatedQueue=queue.slice();resetSchedulerState();// call component updated and activated hookscallActivatedHooks(activatedQueue);callUpdatedHooks(updatedQueue);// devtool hook/* istanbul ignore if */if(devtools&&config.devtools){devtools.emit('flush');}}functioncallUpdatedHooks(queue){vari=queue.length;while(i--){varwatcher=queue[i];varvm=watcher.vm;if(vm._watcher===watcher&&vm._isMounted&&!vm._isDestroyed){callHook(vm,'updated');}}}/** * Queue a kept-alive component that was activated during patch. * The queue will be processed after the entire tree has been patched. */functionqueueActivatedComponent(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);}functioncallActivatedHooks(queue){for(vari=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. */functionqueueWatcher(watcher){varid=watcher.id;if(has[id]==null){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.vari=queue.length-1;while(i>index&&queue[i].id>watcher.id){i--;}queue.splice(i+1,0,watcher);}// queue the flushif(!waiting){waiting=true;if(!config.async){flushSchedulerQueue();return}nextTick(flushSchedulerQueue);}}}/* */varuid$2=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. */varWatcher=functionWatcher(vm,expOrFn,cb,options,isRenderWatcher){this.vm=vm;if(isRenderWatcher){vm._watcher=this;}vm._watchers.push(this);// optionsif(options){this.deep=!!options.deep;this.user=!!options.user;this.lazy=!!options.lazy;this.sync=!!options.sync;this.before=options.before;}else{this.deep=this.user=this.lazy=this.sync=false;}this.cb=cb;this.id=++uid$2;// uid for batchingthis.active=true;this.dirty=this.lazy;// for lazy watchersthis.deps=[];this.newDeps=[];this.depIds=new_Set();this.newDepIds=new_Set();this.expression=expOrFn.toString();// parse expression for getterif(typeofexpOrFn==='function'){this.getter=expOrFn;}else{this.getter=parsePath(expOrFn);if(!this.getter){this.getter=noop;warn("Failed watching path: \""+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=functionget(){pushTarget(this);varvalue;varvm=this.vm;try{value=this.getter.call(vm,vm);}catch(e){if(this.user){handleError(e,vm,("getter for watcher \""+(this.expression)+"\""));}else{throwe}}finally{// "touch" every property so they are all tracked as// dependencies for deep watchingif(this.deep){traverse(value);}popTarget();this.cleanupDeps();}returnvalue};/** * Add a dependency to this directive. */Watcher.prototype.addDep=functionaddDep(dep){varid=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=functioncleanupDeps(){vari=this.deps.length;while(i--){vardep=this.deps[i];if(!this.newDepIds.has(dep.id)){dep.removeSub(this);}}vartmp=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=functionupdate(){/* istanbul ignore else */if(this.lazy){this.dirty=true;}elseif(this.sync){this.run();}else{queueWatcher(this);}};/** * Scheduler job interface. * Will be called by the scheduler. */Watcher.prototype.run=functionrun(){if(this.active){varvalue=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 valuevaroldValue=this.value;this.value=value;if(this.user){varinfo="callback for watcher \""+(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=functionevaluate(){this.value=this.get();this.dirty=false;};/** * Depend on all deps collected by this watcher. */Watcher.prototype.depend=functiondepend(){vari=this.deps.length;while(i--){this.deps[i].depend();}};/** * Remove self from all dependencies' subscriber list. */Watcher.prototype.teardown=functionteardown(){if(this.active){// remove self from vm's watcher list// this is a somewhat expensive operation so we skip it// if the vm is being destroyed.if(!this.vm._isBeingDestroyed){remove(this.vm._watchers,this);}vari=this.deps.length;while(i--){this.deps[i].removeSub(this);}this.active=false;}};/* */varsharedPropertyDefinition={enumerable:true,configurable:true,get:noop,set:noop};functionproxy(target,sourceKey,key){sharedPropertyDefinition.get=functionproxyGetter(){returnthis[sourceKey][key]};sharedPropertyDefinition.set=functionproxySetter(val){this[sourceKey][key]=val;};Object.defineProperty(target,key,sharedPropertyDefinition);}functioninitState(vm){vm._watchers=[];varopts=vm.$options;if(opts.props){initProps(vm,opts.props);}if(opts.methods){initMethods(vm,opts.methods);}if(opts.data){initData(vm);}else{observe(vm._data={},true/* asRootData */);}if(opts.computed){initComputed(vm,opts.computed);}if(opts.watch&&opts.watch!==nativeWatch){initWatch(vm,opts.watch);}}functioninitProps(vm,propsOptions){varpropsData=vm.$options.propsData||{};varprops=vm._props={};// cache prop keys so that future props updates can iterate using Array// instead of dynamic object key enumeration.varkeys=vm.$options._propKeys=[];varisRoot=!vm.$parent;// root instance props should be convertedif(!isRoot){toggleObserving(false);}varloop=function(key){keys.push(key);varvalue=validateProp(key,propsOptions,propsData,vm);/* istanbul ignore else */{varhyphenatedKey=hyphenate(key);if(isReservedAttribute(hyphenatedKey)||config.isReservedAttr(hyphenatedKey)){warn(("\""+hyphenatedKey+"\" is a reserved attribute and cannot be used as component prop."),vm);}defineReactive$$1(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: \""+key+"\"",vm);}});}// static props are already proxied on the component's prototype// during Vue.extend(). We only need to proxy props defined at// instantiation here.if(!(keyinvm)){proxy(vm,"_props",key);}};for(varkeyinpropsOptions)loop(key);toggleObserving(true);}functioninitData(vm){vardata=vm.$options.data;data=vm._data=typeofdata==='function'?getData(data,vm):data||{};if(!isPlainObject(data)){data={};warn('data functions should return an object:\n'+'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',vm);}// proxy data on instancevarkeys=Object.keys(data);varprops=vm.$options.props;varmethods=vm.$options.methods;vari=keys.length;while(i--){varkey=keys[i];{if(methods&&hasOwn(methods,key)){warn(("Method \""+key+"\" has already been defined as a data property."),vm);}}if(props&&hasOwn(props,key)){warn("The data property \""+key+"\" is already declared as a prop. "+"Use prop default value instead.",vm);}elseif(!isReserved(key)){proxy(vm,"_data",key);}}// observe dataobserve(data,true/* asRootData */);}functiongetData(data,vm){// #7573 disable dep collection when invoking data getterspushTarget();try{returndata.call(vm,vm)}catch(e){handleError(e,vm,"data()");return{}}finally{popTarget();}}varcomputedWatcherOptions={lazy:true};functioninitComputed(vm,computed){// $flow-disable-base_linevarwatchers=vm._computedWatchers=Object.create(null);// computed properties are just getters during SSRvarisSSR=isServerRendering();for(varkeyincomputed){varuserDef=computed[key];vargetter=typeofuserDef==='function'?userDef:userDef.get;if(getter==null){warn(("Getter is missing for computed property \""+key+"\"."),vm);}if(!isSSR){// create internal watcher for the computed property.watchers[key]=newWatcher(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(!(keyinvm)){defineComputed(vm,key,userDef);}else{if(keyinvm.$data){warn(("The computed property \""+key+"\" is already defined in data."),vm);}elseif(vm.$options.props&&keyinvm.$options.props){warn(("The computed property \""+key+"\" is already defined as a prop."),vm);}elseif(vm.$options.methods&&keyinvm.$options.methods){warn(("The computed property \""+key+"\" is already defined as a method."),vm);}}}}functiondefineComputed(target,key,userDef){varshouldCache=!isServerRendering();if(typeofuserDef==='function'){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 \""+key+"\" was assigned to but it has no setter."),this);};}Object.defineProperty(target,key,sharedPropertyDefinition);}functioncreateComputedGetter(key){returnfunctioncomputedGetter(){varwatcher=this._computedWatchers&&this._computedWatchers[key];if(watcher){if(watcher.dirty){watcher.evaluate();}if(Dep.target){watcher.depend();}returnwatcher.value}}}functioncreateGetterInvoker(fn){returnfunctioncomputedGetter(){returnfn.call(this,this)}}functioninitMethods(vm,methods){varprops=vm.$options.props;for(varkeyinmethods){{if(typeofmethods[key]!=='function'){warn("Method \""+key+"\" has type \""+(typeofmethods[key])+"\" in the component definition. "+"Did you reference the function correctly?",vm);}if(props&&hasOwn(props,key)){warn(("Method \""+key+"\" has already been defined as a prop."),vm);}if((keyinvm)&&isReserved(key)){warn("Method \""+key+"\" conflicts with an existing Vue instance method. "+"Avoid defining component methods that start with _ or $.");}}vm[key]=typeofmethods[key]!=='function'?noop:bind(methods[key],vm);}}functioninitWatch(vm,watch){for(varkeyinwatch){varhandler=watch[key];if(Array.isArray(handler)){for(vari=0;i<handler.length;i++){createWatcher(vm,key,handler[i]);}}else{createWatcher(vm,key,handler);}}}functioncreateWatcher(vm,expOrFn,handler,options){if(isPlainObject(handler)){options=handler;handler=handler.handler;}if(typeofhandler==='string'){handler=vm[handler];}returnvm.$watch(expOrFn,handler,options)}functionstateMixin(Vue){// flow somehow has problems with directly declared definition object// when using Object.defineProperty, so we have to procedurally build up// the object here.vardataDef={};dataDef.get=function(){returnthis._data};varpropsDef={};propsDef.get=function(){returnthis._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){varvm=this;if(isPlainObject(cb)){returncreateWatcher(vm,expOrFn,cb,options)}options=options||{};options.user=true;varwatcher=newWatcher(vm,expOrFn,cb,options);if(options.immediate){varinfo="callback for immediate watcher \""+(watcher.expression)+"\"";pushTarget();invokeWithErrorHandling(cb,vm,[watcher.value],vm,info);popTarget();}returnfunctionunwatchFn(){watcher.teardown();}};}/* */varuid$3=0;functioninitMixin(Vue){Vue.prototype._init=function(options){varvm=this;// a uidvm._uid=uid$3++;varstartTag,endTag;/* istanbul ignore if */if(config.performance&&mark){startTag="vue-perf-start:"+(vm._uid);endTag="vue-perf-end:"+(vm._uid);mark(startTag);}// a flag to avoid this being observedvm._isVue=true;// merge optionsif(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 selfvm._self=vm;initLifecycle(vm);initEvents(vm);initRender(vm);callHook(vm,'beforeCreate');initInjections(vm);// resolve injections before data/propsinitState(vm);initProvide(vm);// resolve provide after data/propscallHook(vm,'created');/* istanbul ignore if */if(config.performance&&mark){vm._name=formatComponentName(vm,false);mark(endTag);measure(("vue "+(vm._name)+" init"),startTag,endTag);}if(vm.$options.el){vm.$mount(vm.$options.el);}};}functioninitInternalComponent(vm,options){varopts=vm.$options=Object.create(vm.constructor.options);// doing this because it's faster than dynamic enumeration.varparentVnode=options._parentVnode;opts.parent=options.parent;opts._parentVnode=parentVnode;varvnodeComponentOptions=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;}}functionresolveConstructorOptions(Ctor){varoptions=Ctor.options;if(Ctor.super){varsuperOptions=resolveConstructorOptions(Ctor.super);varcachedSuperOptions=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)varmodifiedOptions=resolveModifiedOptions(Ctor);// update base extend optionsif(modifiedOptions){extend(Ctor.extendOptions,modifiedOptions);}options=Ctor.options=mergeOptions(superOptions,Ctor.extendOptions);if(options.name){options.components[options.name]=Ctor;}}}returnoptions}functionresolveModifiedOptions(Ctor){varmodified;varlatest=Ctor.options;varsealed=Ctor.sealedOptions;for(varkeyinlatest){if(latest[key]!==sealed[key]){if(!modified){modified={};}modified[key]=latest[key];}}returnmodified}functionVue(options){if(!(thisinstanceofVue)){warn('Vue is a constructor and should be called with the `new` keyword');}this._init(options);}initMixin(Vue);stateMixin(Vue);eventsMixin(Vue);lifecycleMixin(Vue);renderMixin(Vue);/* */functioninitUse(Vue){Vue.use=function(plugin){varinstalledPlugins=(this._installedPlugins||(this._installedPlugins=[]));if(installedPlugins.indexOf(plugin)>-1){returnthis}// additional parametersvarargs=toArray(arguments,1);args.unshift(this);if(typeofplugin.install==='function'){plugin.install.apply(plugin,args);}elseif(typeofplugin==='function'){plugin.apply(null,args);}installedPlugins.push(plugin);returnthis};}/* */functioninitMixin$1(Vue){Vue.mixin=function(mixin){this.options=mergeOptions(this.options,mixin);returnthis};}/* */functioninitExtend(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;varcid=1;/** * Class inheritance */Vue.extend=function(extendOptions){extendOptions=extendOptions||{};varSuper=this;varSuperId=Super.cid;varcachedCtors=extendOptions._Ctor||(extendOptions._Ctor={});if(cachedCtors[SuperId]){returncachedCtors[SuperId]}varname=extendOptions.name||Super.options.name;if(name){validateComponentName(name);}varSub=functionVueComponent(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$1(Sub);}if(Sub.options.computed){initComputed$1(Sub);}// allow further extension/mixin/plugin usageSub.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-lookupif(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 constructorcachedCtors[SuperId]=Sub;returnSub};}functioninitProps$1(Comp){varprops=Comp.options.props;for(varkeyinprops){proxy(Comp.prototype,"_props",key);}}functioninitComputed$1(Comp){varcomputed=Comp.options.computed;for(varkeyincomputed){defineComputed(Comp.prototype,key,computed[key]);}}/* */functioninitAssetRegisters(Vue){/** * Create asset registration methods. */ASSET_TYPES.forEach(function(type){Vue[type]=function(id,definition){if(!definition){returnthis.options[type+'s'][id]}else{/* istanbul ignore if */if(type==='component'){validateComponentName(id);}if(type==='component'&&isPlainObject(definition)){definition.name=definition.name||id;definition=this.options._base.extend(definition);}if(type==='directive'&&typeofdefinition==='function'){definition={bind:definition,update:definition};}this.options[type+'s'][id]=definition;returndefinition}};});}/* */functiongetComponentName(opts){returnopts&&(opts.Ctor.options.name||opts.tag)}functionmatches(pattern,name){if(Array.isArray(pattern)){returnpattern.indexOf(name)>-1}elseif(typeofpattern==='string'){returnpattern.split(',').indexOf(name)>-1}elseif(isRegExp(pattern)){returnpattern.test(name)}/* istanbul ignore next */returnfalse}functionpruneCache(keepAliveInstance,filter){varcache=keepAliveInstance.cache;varkeys=keepAliveInstance.keys;var_vnode=keepAliveInstance._vnode;for(varkeyincache){varentry=cache[key];if(entry){varname=entry.name;if(name&&!filter(name)){pruneCacheEntry(cache,key,keys,_vnode);}}}}functionpruneCacheEntry(cache,key,keys,current){varentry=cache[key];if(entry&&(!current||entry.tag!==current.tag)){entry.componentInstance.$destroy();}cache[key]=null;remove(keys,key);}varpatternTypes=[String,RegExp,Array];varKeepAlive={name:'keep-alive',abstract:true,props:{include:patternTypes,exclude:patternTypes,max:[String,Number]},methods:{cacheVNode:functioncacheVNode(){varref=this;varcache=ref.cache;varkeys=ref.keys;varvnodeToCache=ref.vnodeToCache;varkeyToCache=ref.keyToCache;if(vnodeToCache){vartag=vnodeToCache.tag;varcomponentInstance=vnodeToCache.componentInstance;varcomponentOptions=vnodeToCache.componentOptions;cache[keyToCache]={name:getComponentName(componentOptions),tag:tag,componentInstance:componentInstance,};keys.push(keyToCache);// prune oldest entryif(this.max&&keys.length>parseInt(this.max)){pruneCacheEntry(cache,keys[0],keys,this._vnode);}this.vnodeToCache=null;}}},created:functioncreated(){this.cache=Object.create(null);this.keys=[];},destroyed:functiondestroyed(){for(varkeyinthis.cache){pruneCacheEntry(this.cache,key,this.keys);}},mounted:functionmounted(){varthis$1=this;this.cacheVNode();this.$watch('include',function(val){pruneCache(this$1,function(name){returnmatches(val,name);});});this.$watch('exclude',function(val){pruneCache(this$1,function(name){return!matches(val,name);});});},updated:functionupdated(){this.cacheVNode();},render:functionrender(){varslot=this.$slots.default;varvnode=getFirstComponentChild(slot);varcomponentOptions=vnode&&vnode.componentOptions;if(componentOptions){// check patternvarname=getComponentName(componentOptions);varref=this;varinclude=ref.include;varexclude=ref.exclude;if(// not included(include&&(!name||!matches(include,name)))||// excluded(exclude&&name&&matches(exclude,name))){returnvnode}varref$1=this;varcache=ref$1.cache;varkeys=ref$1.keys;varkey=vnode.key==null// same constructor may get registered as different local components// so cid alone is not enough (#3269)?componentOptions.Ctor.cid+(componentOptions.tag?("::"+(componentOptions.tag)):''):vnode.key;if(cache[key]){vnode.componentInstance=cache[key].componentInstance;// make current key freshestremove(keys,key);keys.push(key);}else{// delay setting the cache until updatethis.vnodeToCache=vnode;this.keyToCache=key;}vnode.data.keepAlive=true;}returnvnode||(slot&&slot[0])}};varbuiltInComponents={KeepAlive:KeepAlive};/* */functioninitGlobalAPI(Vue){// configvarconfigDef={};configDef.get=function(){returnconfig;};{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$$1};Vue.set=set;Vue.delete=del;Vue.nextTick=nextTick;// 2.6 explicit observable APIVue.observable=function(obj){observe(obj);returnobj};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$1(Vue);initExtend(Vue);initAssetRegisters(Vue);}initGlobalAPI(Vue);Object.defineProperty(Vue.prototype,'$isServer',{get:isServerRendering});Object.defineProperty(Vue.prototype,'$ssrContext',{get:functionget(){/* istanbul ignore next */returnthis.$vnode&&this.$vnode.ssrContext}});// expose FunctionalRenderContext for ssr runtime helper installationObject.defineProperty(Vue,'FunctionalRenderContext',{value:FunctionalRenderContext});Vue.version='2.6.14';/* */// these are reserved for web because they are directly compiled away// during template compilationvarisReservedAttr=makeMap('style,class');// attributes that should be using props for bindingvaracceptValue=makeMap('input,textarea,option,select,progress');varmustUseProp=function(tag,type,attr){return((attr==='value'&&acceptValue(tag))&&type!=='button'||(attr==='selected'&&tag==='option')||(attr==='checked'&&tag==='input')||(attr==='muted'&&tag==='video'))};varisEnumeratedAttr=makeMap('contenteditable,draggable,spellcheck');varisValidContentEditableValue=makeMap('events,caret,typing,plaintext-only');varconvertEnumeratedValue=function(key,value){returnisFalsyAttrValue(value)||value==='false'?'false'// allow arbitrary string value for contenteditable:key==='contenteditable'&&isValidContentEditableValue(value)?value:'true'};varisBooleanAttr=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');varxlinkNS='http://www.w3.org/1999/xlink';varisXlink=function(name){returnname.charAt(5)===':'&&name.slice(0,5)==='xlink'};vargetXlinkProp=function(name){returnisXlink(name)?name.slice(6,name.length):''};varisFalsyAttrValue=function(val){returnval==null||val===false};/* */functiongenClassForVnode(vnode){vardata=vnode.data;varparentNode=vnode;varchildNode=vnode;while(isDef(childNode.componentInstance)){childNode=childNode.componentInstance._vnode;if(childNode&&childNode.data){data=mergeClassData(childNode.data,data);}}while(isDef(parentNode=parentNode.parent)){if(parentNode&&parentNode.data){data=mergeClassData(data,parentNode.data);}}returnrenderClass(data.staticClass,data.class)}functionmergeClassData(child,parent){return{staticClass:concat(child.staticClass,parent.staticClass),class:isDef(child.class)?[child.class,parent.class]:parent.class}}functionrenderClass(staticClass,dynamicClass){if(isDef(staticClass)||isDef(dynamicClass)){returnconcat(staticClass,stringifyClass(dynamicClass))}/* istanbul ignore next */return''}functionconcat(a,b){returna?b?(a+' '+b):a:(b||'')}functionstringifyClass(value){if(Array.isArray(value)){returnstringifyArray(value)}if(isObject(value)){returnstringifyObject(value)}if(typeofvalue==='string'){returnvalue}/* istanbul ignore next */return''}functionstringifyArray(value){varres='';varstringified;for(vari=0,l=value.length;i<l;i++){if(isDef(stringified=stringifyClass(value[i]))&&stringified!==''){if(res){res+=' ';}res+=stringified;}}returnres}functionstringifyObject(value){varres='';for(varkeyinvalue){if(value[key]){if(res){res+=' ';}res+=key;}}returnres}/* */varnamespaceMap={svg:'http://www.w3.org/2000/svg',math:'http://www.w3.org/1998/Math/MathML'};varisHTMLTag=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.varisSVG=makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,'+'foreignobject,g,glyph,image,base_line,marker,mask,missing-glyph,path,pattern,'+'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',true);varisPreTag=function(tag){returntag==='pre';};varisReservedTag=function(tag){returnisHTMLTag(tag)||isSVG(tag)};functiongetTagNamespace(tag){if(isSVG(tag)){return'svg'}// basic support for MathML// note it doesn't support other MathML elements being component rootsif(tag==='math'){return'math'}}varunknownElementCache=Object.create(null);functionisUnknownElement(tag){/* istanbul ignore if */if(!inBrowser){returntrue}if(isReservedTag(tag)){returnfalse}tag=tag.toLowerCase();/* istanbul ignore if */if(unknownElementCache[tag]!=null){returnunknownElementCache[tag]}varel=document.createElement(tag);if(tag.indexOf('-')>-1){// http://stackoverflow.com/a/28210364/1070244return(unknownElementCache[tag]=(el.constructor===window.HTMLUnknownElement||el.constructor===window.HTMLElement))}else{return(unknownElementCache[tag]=/HTMLUnknownElement/.test(el.toString()))}}varisTextInputType=makeMap('text,number,password,search,email,tel,url');/* *//** * Query an element selector if it's not an element already. */functionquery(el){if(typeofel==='string'){varselected=document.querySelector(el);if(!selected){warn('Cannot find element: '+el);returndocument.createElement('div')}returnselected}else{returnel}}/* */functioncreateElement$1(tagName,vnode){varelm=document.createElement(tagName);if(tagName!=='select'){returnelm}// false or null will remove the attribute but undefined will notif(vnode.data&&vnode.data.attrs&&vnode.data.attrs.multiple!==undefined){elm.setAttribute('multiple','multiple');}returnelm}functioncreateElementNS(namespace,tagName){returndocument.createElementNS(namespaceMap[namespace],tagName)}functioncreateTextNode(text){returndocument.createTextNode(text)}functioncreateComment(text){returndocument.createComment(text)}functioninsertBefore(parentNode,newNode,referenceNode){parentNode.insertBefore(newNode,referenceNode);}functionremoveChild(node,child){node.removeChild(child);}functionappendChild(node,child){node.appendChild(child);}functionparentNode(node){returnnode.parentNode}functionnextSibling(node){returnnode.nextSibling}functiontagName(node){returnnode.tagName}functionsetTextContent(node,text){node.textContent=text;}functionsetStyleScope(node,scopeId){node.setAttribute(scopeId,'');}varnodeOps=/*#__PURE__*/Object.freeze({createElement:createElement$1,createElementNS:createElementNS,createTextNode:createTextNode,createComment:createComment,insertBefore:insertBefore,removeChild:removeChild,appendChild:appendChild,parentNode:parentNode,nextSibling:nextSibling,tagName:tagName,setTextContent:setTextContent,setStyleScope:setStyleScope});/* */varref={create:functioncreate(_,vnode){registerRef(vnode);},update:functionupdate(oldVnode,vnode){if(oldVnode.data.ref!==vnode.data.ref){registerRef(oldVnode,true);registerRef(vnode);}},destroy:functiondestroy(vnode){registerRef(vnode,true);}};functionregisterRef(vnode,isRemoval){varkey=vnode.data.ref;if(!isDef(key)){return}varvm=vnode.context;varref=vnode.componentInstance||vnode.elm;varrefs=vm.$refs;if(isRemoval){if(Array.isArray(refs[key])){remove(refs[key],ref);}elseif(refs[key]===ref){refs[key]=undefined;}}else{if(vnode.data.refInFor){if(!Array.isArray(refs[key])){refs[key]=[ref];}elseif(refs[key].indexOf(ref)<0){// $flow-disable-base_linerefs[key].push(ref);}}else{refs[key]=ref;}}}/** * 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**modifiedbyEvanYou(@yyx990803)**Nottype-checkingthisbecausethisfileisperf-criticalandthecost*ofmakingflowunderstanditisnotworthit.*/ 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; var 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$$1 () { if (--remove$$1.listeners === 0) { removeNode(childElm); } } remove$$1.listeners = listeners; return remove$$1 } function removeNode (el) { var parent = nodeOps.parentNode(el); //elementmayhavealreadybeenremovedduetov-html/v-textif(isDef(parent)){nodeOps.removeChild(parent,el);}}functionisUnknownElement$$1(vnode,inVPre){return(!inVPre&&!vnode.ns&&!(config.ignoredElements.length&&config.ignoredElements.some(function(ignore){returnisRegExp(ignore)?ignore.test(vnode.tag):ignore===vnode.tag}))&&config.isUnknownElement(vnode.tag))}varcreatingElmInVPre=0;functioncreateElm(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 checkif(createComponent(vnode,insertedVnodeQueue,parentElm,refElm)){return}vardata=vnode.data;varchildren=vnode.children;vartag=vnode.tag;if(isDef(tag)){{if(data&&data.pre){creatingElmInVPre++;}if(isUnknownElement$$1(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);/* istanbul ignore if */{createChildren(vnode,children,insertedVnodeQueue);if(isDef(data)){invokeCreateHooks(vnode,insertedVnodeQueue);}insert(parentElm,vnode.elm,refElm);}if(data&&data.pre){creatingElmInVPre--;}}elseif(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);}}functioncreateComponent(vnode,insertedVnodeQueue,parentElm,refElm){vari=vnode.data;if(isDef(i)){varisReactivated=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);}returntrue}}}functioninitComponent(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 hookinsertedVnodeQueue.push(vnode);}}functionreactivateComponent(vnode,insertedVnodeQueue,parentElm,refElm){vari;// 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.varinnerNode=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 itselfinsert(parentElm,vnode.elm,refElm);}functioninsert(parent,elm,ref$$1){if(isDef(parent)){if(isDef(ref$$1)){if(nodeOps.parentNode(ref$$1)===parent){nodeOps.insertBefore(parent,elm,ref$$1);}}else{nodeOps.appendChild(parent,elm);}}}functioncreateChildren(vnode,children,insertedVnodeQueue){if(Array.isArray(children)){{checkDuplicateKeys(children);}for(vari=0;i<children.length;++i){createElm(children[i],insertedVnodeQueue,vnode.elm,null,true,children,i);}}elseif(isPrimitive(vnode.text)){nodeOps.appendChild(vnode.elm,nodeOps.createTextNode(String(vnode.text)));}}functionisPatchable(vnode){while(vnode.componentInstance){vnode=vnode.componentInstance._vnode;}returnisDef(vnode.tag)}functioninvokeCreateHooks(vnode,insertedVnodeQueue){for(vari$1=0;i$1<cbs.create.length;++i$1){cbs.create[i$1](emptyNode,vnode);}i=vnode.data.hook;// Reuse variableif(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.functionsetScope(vnode){vari;if(isDef(i=vnode.fnScopeId)){nodeOps.setStyleScope(vnode.elm,i);}else{varancestor=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);}}functionaddVnodes(parentElm,refElm,vnodes,startIdx,endIdx,insertedVnodeQueue){for(;startIdx<=endIdx;++startIdx){createElm(vnodes[startIdx],insertedVnodeQueue,parentElm,refElm,false,vnodes,startIdx);}}functioninvokeDestroyHook(vnode){vari,j;vardata=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]);}}}functionremoveVnodes(vnodes,startIdx,endIdx){for(;startIdx<=endIdx;++startIdx){varch=vnodes[startIdx];if(isDef(ch)){if(isDef(ch.tag)){removeAndInvokeRemoveHook(ch);invokeDestroyHook(ch);}else{// Text noderemoveNode(ch.elm);}}}}functionremoveAndInvokeRemoveHook(vnode,rm){if(isDef(rm)||isDef(vnode.data)){vari;varlisteners=cbs.remove.length+1;if(isDef(rm)){// we have a recursively passed down rm callback// increase the listeners countrm.listeners+=listeners;}else{// directly removingrm=createRmCb(vnode.elm,listeners);}// recursively invoke hooks on child component root nodeif(isDef(i=vnode.componentInstance)&&isDef(i=i._vnode)&&isDef(i.data)){removeAndInvokeRemoveHook(i,rm);}for(i=0;i<cbs.remove.length;++i){cbs.remove[i](vnode,rm);}if(isDef(i=vnode.data.hook)&&isDef(i=i.remove)){i(vnode,rm);}else{rm();}}else{removeNode(vnode.elm);}}functionupdateChildren(parentElm,oldCh,newCh,insertedVnodeQueue,removeOnly){varoldStartIdx=0;varnewStartIdx=0;varoldEndIdx=oldCh.length-1;varoldStartVnode=oldCh[0];varoldEndVnode=oldCh[oldEndIdx];varnewEndIdx=newCh.length-1;varnewStartVnode=newCh[0];varnewEndVnode=newCh[newEndIdx];varoldKeyToIdx,idxInOld,vnodeToMove,refElm;// removeOnly is a special flag used only by <transition-group>// to ensure removed elements stay in correct relative positions// during leaving transitionsvarcanMove=!removeOnly;{checkDuplicateKeys(newCh);}while(oldStartIdx<=oldEndIdx&&newStartIdx<=newEndIdx){if(isUndef(oldStartVnode)){oldStartVnode=oldCh[++oldStartIdx];// Vnode has been moved left}elseif(isUndef(oldEndVnode)){oldEndVnode=oldCh[--oldEndIdx];}elseif(sameVnode(oldStartVnode,newStartVnode)){patchVnode(oldStartVnode,newStartVnode,insertedVnodeQueue,newCh,newStartIdx);oldStartVnode=oldCh[++oldStartIdx];newStartVnode=newCh[++newStartIdx];}elseif(sameVnode(oldEndVnode,newEndVnode)){patchVnode(oldEndVnode,newEndVnode,insertedVnodeQueue,newCh,newEndIdx);oldEndVnode=oldCh[--oldEndIdx];newEndVnode=newCh[--newEndIdx];}elseif(sameVnode(oldStartVnode,newEndVnode)){// Vnode moved rightpatchVnode(oldStartVnode,newEndVnode,insertedVnodeQueue,newCh,newEndIdx);canMove&&nodeOps.insertBefore(parentElm,oldStartVnode.elm,nodeOps.nextSibling(oldEndVnode.elm));oldStartVnode=oldCh[++oldStartIdx];newEndVnode=newCh[--newEndIdx];}elseif(sameVnode(oldEndVnode,newStartVnode)){// Vnode moved leftpatchVnode(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 elementcreateElm(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 elementcreateElm(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);}elseif(newStartIdx>newEndIdx){removeVnodes(oldCh,oldStartIdx,oldEndIdx);}}functioncheckDuplicateKeys(children){varseenKeys={};for(vari=0;i<children.length;i++){varvnode=children[i];varkey=vnode.key;if(isDef(key)){if(seenKeys[key]){warn(("Duplicate keys detected: '"+key+"'. This may cause an update error."),vnode.context);}else{seenKeys[key]=true;}}}}functionfindIdxInOld(node,oldCh,start,end){for(vari=start;i<end;i++){varc=oldCh[i];if(isDef(c)&&sameVnode(node,c)){returni}}}functionpatchVnode(oldVnode,vnode,insertedVnodeQueue,ownerArray,index,removeOnly){if(oldVnode===vnode){return}if(isDef(vnode.elm)&&isDef(ownerArray)){// clone reused vnodevnode=ownerArray[index]=cloneVNode(vnode);}varelm=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}vari;vardata=vnode.data;if(isDef(data)&&isDef(i=data.hook)&&isDef(i=i.prepatch)){i(oldVnode,vnode);}varoldCh=oldVnode.children;varch=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);}}elseif(isDef(ch)){{checkDuplicateKeys(ch);}if(isDef(oldVnode.text)){nodeOps.setTextContent(elm,'');}addVnodes(elm,null,ch,0,ch.length-1,insertedVnodeQueue);}elseif(isDef(oldCh)){removeVnodes(oldCh,0,oldCh.length-1);}elseif(isDef(oldVnode.text)){nodeOps.setTextContent(elm,'');}}elseif(oldVnode.text!==vnode.text){nodeOps.setTextContent(elm,vnode.text);}if(isDef(data)){if(isDef(i=data.hook)&&isDef(i=i.postpatch)){i(oldVnode,vnode);}}}functioninvokeInsertHook(vnode,queue,initial){// delay insert hooks for component root nodes, invoke them after the// element is really insertedif(isTrue(initial)&&isDef(vnode.parent)){vnode.parent.data.pendingInsert=queue;}else{for(vari=0;i<queue.length;++i){queue[i].data.hook.insert(queue[i]);}}}varhydrationBailed=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).varisRenderedModule=makeMap('attrs,class,staticClass,staticStyle,key');// Note: this is a browser-only function so we can assume elms are DOM nodes.functionhydrate(elm,vnode,insertedVnodeQueue,inVPre){vari;vartag=vnode.tag;vardata=vnode.data;varchildren=vnode.children;inVPre=inVPre||(data&&data.pre);vnode.elm=elm;if(isTrue(vnode.isComment)&&isDef(vnode.asyncFactory)){vnode.isAsyncPlaceholder=true;returntrue}// assert node match{if(!assertNodeMatch(elm,vnode,inVPre)){returnfalse}}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);returntrue}}if(isDef(tag)){if(isDef(children)){// empty element, allow client to pick up and populate childrenif(!elm.hasChildNodes()){createChildren(vnode,children,insertedVnodeQueue);}else{// v-html and domProps: innerHTMLif(isDef(i=data)&&isDef(i=i.domProps)&&isDef(i=i.innerHTML)){if(i!==elm.innerHTML){/* istanbul ignore if */if(typeofconsole!=='undefined'&&!hydrationBailed){hydrationBailed=true;console.warn('Parent: ',elm);console.warn('server innerHTML: ',i);console.warn('client innerHTML: ',elm.innerHTML);}returnfalse}}else{// iterate and compare children listsvarchildrenMatch=true;varchildNode=elm.firstChild;for(vari$1=0;i$1<children.length;i$1++){if(!childNode||!hydrate(childNode,children[i$1],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(typeofconsole!=='undefined'&&!hydrationBailed){hydrationBailed=true;console.warn('Parent: ',elm);console.warn('Mismatching childNodes vs. VNodes: ',elm.childNodes,children);}returnfalse}}}}if(isDef(data)){varfullInvoke=false;for(varkeyindata){if(!isRenderedModule(key)){fullInvoke=true;invokeCreateHooks(vnode,insertedVnodeQueue);break}}if(!fullInvoke&&data['class']){// ensure collecting deps for deep class bindings for future updatestraverse(data['class']);}}}elseif(elm.data!==vnode.text){elm.data=vnode.text;}returntrue}functionassertNodeMatch(node,vnode,inVPre){if(isDef(vnode.tag)){returnvnode.tag.indexOf('vue-component')===0||(!isUnknownElement$$1(vnode,inVPre)&&vnode.tag.toLowerCase()===(node.tagName&&node.tagName.toLowerCase()))}else{returnnode.nodeType===(vnode.isComment?8:3)}}returnfunctionpatch(oldVnode,vnode,hydrating,removeOnly){if(isUndef(vnode)){if(isDef(oldVnode)){invokeDestroyHook(oldVnode);}return}varisInitialPatch=false;varinsertedVnodeQueue=[];if(isUndef(oldVnode)){// empty mount (likely as component), create new root elementisInitialPatch=true;createElm(vnode,insertedVnodeQueue);}else{varisRealElement=isDef(oldVnode.nodeType);if(!isRealElement&&sameVnode(oldVnode,vnode)){// patch existing root nodepatchVnode(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);returnoldVnode}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 itoldVnode=emptyNodeAt(oldVnode);}// replacing existing elementvaroldElm=oldVnode.elm;varparentElm=nodeOps.parentNode(oldElm);// create new nodecreateElm(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, recursivelyif(isDef(vnode.parent)){varancestor=vnode.parent;varpatchable=isPatchable(vnode);while(ancestor){for(vari=0;i<cbs.destroy.length;++i){cbs.destroy[i](ancestor);}ancestor.elm=vnode.elm;if(patchable){for(vari$1=0;i$1<cbs.create.length;++i$1){cbs.create[i$1](emptyNode,ancestor);}// #6513// invoke insert hooks that may have been merged by create hooks.// e.g. for directives that uses the "inserted" hook.varinsert=ancestor.data.hook.insert;if(insert.merged){// start at index 1 to avoid re-invoking component mounted hookfor(vari$2=1;i$2<insert.fns.length;i$2++){insert.fns[i$2]();}}}else{registerRef(ancestor);}ancestor=ancestor.parent;}}// destroy old nodeif(isDef(parentElm)){removeVnodes([oldVnode],0,0);}elseif(isDef(oldVnode.tag)){invokeDestroyHook(oldVnode);}}}invokeInsertHook(vnode,insertedVnodeQueue,isInitialPatch);returnvnode.elm}}/* */vardirectives={create:updateDirectives,update:updateDirectives,destroy:functionunbindDirectives(vnode){updateDirectives(vnode,emptyNode);}};functionupdateDirectives(oldVnode,vnode){if(oldVnode.data.directives||vnode.data.directives){_update(oldVnode,vnode);}}function_update(oldVnode,vnode){varisCreate=oldVnode===emptyNode;varisDestroy=vnode===emptyNode;varoldDirs=normalizeDirectives$1(oldVnode.data.directives,oldVnode.context);varnewDirs=normalizeDirectives$1(vnode.data.directives,vnode.context);vardirsWithInsert=[];vardirsWithPostpatch=[];varkey,oldDir,dir;for(keyinnewDirs){oldDir=oldDirs[key];dir=newDirs[key];if(!oldDir){// new directive, bindcallHook$1(dir,'bind',vnode,oldVnode);if(dir.def&&dir.def.inserted){dirsWithInsert.push(dir);}}else{// existing directive, updatedir.oldValue=oldDir.value;dir.oldArg=oldDir.arg;callHook$1(dir,'update',vnode,oldVnode);if(dir.def&&dir.def.componentUpdated){dirsWithPostpatch.push(dir);}}}if(dirsWithInsert.length){varcallInsert=function(){for(vari=0;i<dirsWithInsert.length;i++){callHook$1(dirsWithInsert[i],'inserted',vnode,oldVnode);}};if(isCreate){mergeVNodeHook(vnode,'insert',callInsert);}else{callInsert();}}if(dirsWithPostpatch.length){mergeVNodeHook(vnode,'postpatch',function(){for(vari=0;i<dirsWithPostpatch.length;i++){callHook$1(dirsWithPostpatch[i],'componentUpdated',vnode,oldVnode);}});}if(!isCreate){for(keyinoldDirs){if(!newDirs[key]){// no longer present, unbindcallHook$1(oldDirs[key],'unbind',oldVnode,oldVnode,isDestroy);}}}}varemptyModifiers=Object.create(null);functionnormalizeDirectives$1(dirs,vm){varres=Object.create(null);if(!dirs){// $flow-disable-base_linereturnres}vari,dir;for(i=0;i<dirs.length;i++){dir=dirs[i];if(!dir.modifiers){// $flow-disable-base_linedir.modifiers=emptyModifiers;}res[getRawDirName(dir)]=dir;dir.def=resolveAsset(vm.$options,'directives',dir.name,true);}// $flow-disable-base_linereturnres}functiongetRawDirName(dir){returndir.rawName||((dir.name)+"."+(Object.keys(dir.modifiers||{}).join('.')))}functioncallHook$1(dir,hook,vnode,oldVnode,isDestroy){varfn=dir.def&&dir.def[hook];if(fn){try{fn(vnode.elm,dir,vnode,oldVnode,isDestroy);}catch(e){handleError(e,vnode.context,("directive "+(dir.name)+" "+hook+" hook"));}}}varbaseModules=[ref,directives];/* */functionupdateAttrs(oldVnode,vnode){varopts=vnode.componentOptions;if(isDef(opts)&&opts.Ctor.options.inheritAttrs===false){return}if(isUndef(oldVnode.data.attrs)&&isUndef(vnode.data.attrs)){return}varkey,cur,old;varelm=vnode.elm;varoldAttrs=oldVnode.data.attrs||{};varattrs=vnode.data.attrs||{};// clone observed objects, as the user probably wants to mutate itif(isDef(attrs.__ob__)){attrs=vnode.data.attrs=extend({},attrs);}for(keyinattrs){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(keyinoldAttrs){if(isUndef(attrs[key])){if(isXlink(key)){elm.removeAttributeNS(xlinkNS,getXlinkProp(key));}elseif(!isEnumeratedAttr(key)){elm.removeAttribute(key);}}}}functionsetAttr(el,key,value,isInPre){if(isInPre||el.tagName.indexOf('-')>-1){baseSetAttr(el,key,value);}elseif(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> tagvalue=key==='allowfullscreen'&&el.tagName==='EMBED'?'true':key;el.setAttribute(key,value);}}elseif(isEnumeratedAttr(key)){el.setAttribute(key,convertEnumeratedValue(key,value));}elseif(isXlink(key)){if(isFalsyAttrValue(value)){el.removeAttributeNS(xlinkNS,getXlinkProp(key));}else{el.setAttributeNS(xlinkNS,key,value);}}else{baseSetAttr(el,key,value);}}functionbaseSetAttr(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){varblocker=function(e){e.stopImmediatePropagation();el.removeEventListener('input',blocker);};el.addEventListener('input',blocker);// $flow-disable-base_lineel.__ieph=true;/* IE placeholder patched */}el.setAttribute(key,value);}}varattrs={create:updateAttrs,update:updateAttrs};/* */functionupdateClass(oldVnode,vnode){varel=vnode.elm;vardata=vnode.data;varoldData=oldVnode.data;if(isUndef(data.staticClass)&&isUndef(data.class)&&(isUndef(oldData)||(isUndef(oldData.staticClass)&&isUndef(oldData.class)))){return}varcls=genClassForVnode(vnode);// handle transition classesvartransitionClass=el._transitionClasses;if(isDef(transitionClass)){cls=concat(cls,stringifyClass(transitionClass));}// set the classif(cls!==el._prevClass){el.setAttribute('class',cls);el._prevClass=cls;}}varklass={create:updateClass,update:updateClass};/* */varvalidDivisionCharRE=/[\w).+\-_$\]]/;functionparseFilters(exp){varinSingle=false;varinDouble=false;varinTemplateString=false;varinRegex=false;varcurly=0;varsquare=0;varparen=0;varlastFilterIndex=0;varc,prev,i,expression,filters;for(i=0;i<exp.length;i++){prev=c;c=exp.charCodeAt(i);if(inSingle){if(c===0x27&&prev!==0x5C){inSingle=false;}}elseif(inDouble){if(c===0x22&&prev!==0x5C){inDouble=false;}}elseif(inTemplateString){if(c===0x60&&prev!==0x5C){inTemplateString=false;}}elseif(inRegex){if(c===0x2f&&prev!==0x5C){inRegex=false;}}elseif(c===0x7C&&// pipeexp.charCodeAt(i+1)!==0x7C&&exp.charCodeAt(i-1)!==0x7C&&!curly&&!square&&!paren){if(expression===undefined){// first filter, end of expressionlastFilterIndex=i+1;expression=exp.slice(0,i).trim();}else{pushFilter();}}else{switch(c){case0x22:inDouble=true;break// "case0x27:inSingle=true;break// 'case0x60:inTemplateString=true;break// `case0x28:paren++;break// (case0x29:paren--;break// )case0x5B:square++;break// [case0x5D:square--;break// ]case0x7B:curly++;break// {case0x7D:curly--;break// }}if(c===0x2f){// /varj=i-1;varp=(void0);// find first non-whitespace prev charfor(;j>=0;j--){p=exp.charAt(j);if(p!==' '){break}}if(!p||!validDivisionCharRE.test(p)){inRegex=true;}}}}if(expression===undefined){expression=exp.slice(0,i).trim();}elseif(lastFilterIndex!==0){pushFilter();}functionpushFilter(){(filters||(filters=[])).push(exp.slice(lastFilterIndex,i).trim());lastFilterIndex=i+1;}if(filters){for(i=0;i<filters.length;i++){expression=wrapFilter(expression,filters[i]);}}returnexpression}functionwrapFilter(exp,filter){vari=filter.indexOf('(');if(i<0){// _f: resolveFilterreturn("_f(\""+filter+"\")("+exp+")")}else{varname=filter.slice(0,i);varargs=filter.slice(i+1);return("_f(\""+name+"\")("+exp+(args!==')'?','+args:args))}}/* *//* eslint-disable no-unused-vars */functionbaseWarn(msg,range){console.error(("[Vue compiler]: "+msg));}/* eslint-enable no-unused-vars */functionpluckModuleFunction(modules,key){returnmodules?modules.map(function(m){returnm[key];}).filter(function(_){return_;}):[]}functionaddProp(el,name,value,range,dynamic){(el.props||(el.props=[])).push(rangeSetItem({name:name,value:value,dynamic:dynamic},range));el.plain=false;}functionaddAttr(el,name,value,range,dynamic){varattrs=dynamic?(el.dynamicAttrs||(el.dynamicAttrs=[])):(el.attrs||(el.attrs=[]));attrs.push(rangeSetItem({name:name,value:value,dynamic:dynamic},range));el.plain=false;}// add a raw attr (use this in preTransforms)functionaddRawAttr(el,name,value,range){el.attrsMap[name]=value;el.attrsList.push(rangeSetItem({name:name,value:value},range));}functionaddDirective(el,name,rawName,value,arg,isDynamicArg,modifiers,range){(el.directives||(el.directives=[])).push(rangeSetItem({name:name,rawName:rawName,value:value,arg:arg,isDynamicArg:isDynamicArg,modifiers:modifiers},range));el.plain=false;}functionprependModifierMarker(symbol,name,dynamic){returndynamic?("_p("+name+",\""+symbol+"\")"):symbol+name// mark the event as captured}functionaddHandler(el,name,value,modifiers,important,warn,range,dynamic){modifiers=modifiers||emptyObject;// warn prevent and passive modifier/* istanbul ignore if */if(warn&&modifiers.prevent&&modifiers.passive){warn('passive and prevent can\'t be used together. '+'Passive handler can\'t prevent default event.',range);}// normalize click.right and click.middle since they don't actually fire// this is technically browser-specific, but at least for now browsers are// the only target envs that have right/middle clicks.if(modifiers.right){if(dynamic){name="("+name+")==='click'?'contextmenu':("+name+")";}elseif(name==='click'){name='contextmenu';deletemodifiers.right;}}elseif(modifiers.middle){if(dynamic){name="("+name+")==='click'?'mouseup':("+name+")";}elseif(name==='click'){name='mouseup';}}// check capture modifierif(modifiers.capture){deletemodifiers.capture;name=prependModifierMarker('!',name,dynamic);}if(modifiers.once){deletemodifiers.once;name=prependModifierMarker('~',name,dynamic);}/* istanbul ignore if */if(modifiers.passive){deletemodifiers.passive;name=prependModifierMarker('&',name,dynamic);}varevents;if(modifiers.native){deletemodifiers.native;events=el.nativeEvents||(el.nativeEvents={});}else{events=el.events||(el.events={});}varnewHandler=rangeSetItem({value:value.trim(),dynamic:dynamic},range);if(modifiers!==emptyObject){newHandler.modifiers=modifiers;}varhandlers=events[name];/* istanbul ignore if */if(Array.isArray(handlers)){important?handlers.unshift(newHandler):handlers.push(newHandler);}elseif(handlers){events[name]=important?[newHandler,handlers]:[handlers,newHandler];}else{events[name]=newHandler;}el.plain=false;}functiongetRawBindingAttr(el,name){returnel.rawAttrsMap[':'+name]||el.rawAttrsMap['v-bind:'+name]||el.rawAttrsMap[name]}functiongetBindingAttr(el,name,getStatic){vardynamicValue=getAndRemoveAttr(el,':'+name)||getAndRemoveAttr(el,'v-bind:'+name);if(dynamicValue!=null){returnparseFilters(dynamicValue)}elseif(getStatic!==false){varstaticValue=getAndRemoveAttr(el,name);if(staticValue!=null){returnJSON.stringify(staticValue)}}}// note: this only removes the attr from the Array (attrsList) so that it// doesn't get processed by processAttrs.// By default it does NOT remove it from the map (attrsMap) because the map is// needed during codegen.functiongetAndRemoveAttr(el,name,removeFromMap){varval;if((val=el.attrsMap[name])!=null){varlist=el.attrsList;for(vari=0,l=list.length;i<l;i++){if(list[i].name===name){list.splice(i,1);break}}}if(removeFromMap){deleteel.attrsMap[name];}returnval}functiongetAndRemoveAttrByRegex(el,name){varlist=el.attrsList;for(vari=0,l=list.length;i<l;i++){varattr=list[i];if(name.test(attr.name)){list.splice(i,1);returnattr}}}functionrangeSetItem(item,range){if(range){if(range.start!=null){item.start=range.start;}if(range.end!=null){item.end=range.end;}}returnitem}/* *//** * Cross-platform code generation for component v-model */functiongenComponentModel(el,value,modifiers){varref=modifiers||{};varnumber=ref.number;vartrim=ref.trim;varbaseValueExpression='$$v';varvalueExpression=baseValueExpression;if(trim){valueExpression="(typeof "+baseValueExpression+" === 'string'"+"? "+baseValueExpression+".trim()"+": "+baseValueExpression+")";}if(number){valueExpression="_n("+valueExpression+")";}varassignment=genAssignmentCode(value,valueExpression);el.model={value:("("+value+")"),expression:JSON.stringify(value),callback:("function ("+baseValueExpression+") {"+assignment+"}")};}/** * Cross-platform codegen helper for generating v-model value assignment code. */functiongenAssignmentCode(value,assignment){varres=parseModel(value);if(res.key===null){return(value+"="+assignment)}else{return("$set("+(res.exp)+", "+(res.key)+", "+assignment+")")}}/** * Parse a v-model expression into a base path and a final key segment. * Handles both dot-path and possible square brackets. * * Possible cases: * * - test * - test[key] * - test[test1[key]] * - test["a"][key] * - xxx.test[a[a].test1[key]] * - test.xxx.a["asa"][test1[key]] * */varlen,str,chr,index$1,expressionPos,expressionEndPos;functionparseModel(val){// Fix https://github.com/vuejs/vue/pull/7730// allow v-model="obj.val " (trailing whitespace)val=val.trim();len=val.length;if(val.indexOf('[')<0||val.lastIndexOf(']')<len-1){index$1=val.lastIndexOf('.');if(index$1>-1){return{exp:val.slice(0,index$1),key:'"'+val.slice(index$1+1)+'"'}}else{return{exp:val,key:null}}}str=val;index$1=expressionPos=expressionEndPos=0;while(!eof()){chr=next();/* istanbul ignore if */if(isStringStart(chr)){parseString(chr);}elseif(chr===0x5B){parseBracket(chr);}}return{exp:val.slice(0,expressionPos),key:val.slice(expressionPos+1,expressionEndPos)}}functionnext(){returnstr.charCodeAt(++index$1)}functioneof(){returnindex$1>=len}functionisStringStart(chr){returnchr===0x22||chr===0x27}functionparseBracket(chr){varinBracket=1;expressionPos=index$1;while(!eof()){chr=next();if(isStringStart(chr)){parseString(chr);continue}if(chr===0x5B){inBracket++;}if(chr===0x5D){inBracket--;}if(inBracket===0){expressionEndPos=index$1;break}}}functionparseString(chr){varstringQuote=chr;while(!eof()){chr=next();if(chr===stringQuote){break}}}/* */varwarn$1;// in some cases, the event used has to be determined at runtime// so we used some reserved tokens during compile.varRANGE_TOKEN='__r';varCHECKBOX_RADIO_TOKEN='__c';functionmodel(el,dir,_warn){warn$1=_warn;varvalue=dir.value;varmodifiers=dir.modifiers;vartag=el.tag;vartype=el.attrsMap.type;{// inputs with type="file" are read only and setting the input's// value will throw an error.if(tag==='input'&&type==='file'){warn$1("<"+(el.tag)+" v-model=\""+value+"\" type=\"file\">:\n"+"File inputs are read only. Use a v-on:change listener instead.",el.rawAttrsMap['v-model']);}}if(el.component){genComponentModel(el,value,modifiers);// component v-model doesn't need extra runtimereturnfalse}elseif(tag==='select'){genSelect(el,value,modifiers);}elseif(tag==='input'&&type==='checkbox'){genCheckboxModel(el,value,modifiers);}elseif(tag==='input'&&type==='radio'){genRadioModel(el,value,modifiers);}elseif(tag==='input'||tag==='textarea'){genDefaultModel(el,value,modifiers);}elseif(!config.isReservedTag(tag)){genComponentModel(el,value,modifiers);// component v-model doesn't need extra runtimereturnfalse}else{warn$1("<"+(el.tag)+" v-model=\""+value+"\">: "+"v-model is not supported on this element type. "+'If you are working with contenteditable, it\'s recommended to '+'wrap a library dedicated for that purpose inside a custom component.',el.rawAttrsMap['v-model']);}// ensure runtime directive metadatareturntrue}functiongenCheckboxModel(el,value,modifiers){varnumber=modifiers&&modifiers.number;varvalueBinding=getBindingAttr(el,'value')||'null';vartrueValueBinding=getBindingAttr(el,'true-value')||'true';varfalseValueBinding=getBindingAttr(el,'false-value')||'false';addProp(el,'checked',"Array.isArray("+value+")"+"?_i("+value+","+valueBinding+")>-1"+(trueValueBinding==='true'?(":("+value+")"):(":_q("+value+","+trueValueBinding+")")));addHandler(el,'change',"var $$a="+value+","+'$$el=$event.target,'+"$$c=$$el.checked?("+trueValueBinding+"):("+falseValueBinding+");"+'if(Array.isArray($$a)){'+"var $$v="+(number?'_n('+valueBinding+')':valueBinding)+","+'$$i=_i($$a,$$v);'+"if($$el.checked){$$i<0&&("+(genAssignmentCode(value,'$$a.concat([$$v])'))+")}"+"else{$$i>-1&&("+(genAssignmentCode(value,'$$a.slice(0,$$i).concat($$a.slice($$i+1))'))+")}"+"}else{"+(genAssignmentCode(value,'$$c'))+"}",null,true);}functiongenRadioModel(el,value,modifiers){varnumber=modifiers&&modifiers.number;varvalueBinding=getBindingAttr(el,'value')||'null';valueBinding=number?("_n("+valueBinding+")"):valueBinding;addProp(el,'checked',("_q("+value+","+valueBinding+")"));addHandler(el,'change',genAssignmentCode(value,valueBinding),null,true);}functiongenSelect(el,value,modifiers){varnumber=modifiers&&modifiers.number;varselectedVal="Array.prototype.filter"+".call($event.target.options,function(o){return o.selected})"+".map(function(o){var val = \"_value\" in o ? o._value : o.value;"+"return "+(number?'_n(val)':'val')+"})";varassignment='$event.target.multiple ? $$selectedVal : $$selectedVal[0]';varcode="var $$selectedVal = "+selectedVal+";";code=code+" "+(genAssignmentCode(value,assignment));addHandler(el,'change',code,null,true);}functiongenDefaultModel(el,value,modifiers){vartype=el.attrsMap.type;// warn if v-bind:value conflicts with v-model// except for inputs with v-bind:type{varvalue$1=el.attrsMap['v-bind:value']||el.attrsMap[':value'];vartypeBinding=el.attrsMap['v-bind:type']||el.attrsMap[':type'];if(value$1&&!typeBinding){varbinding=el.attrsMap['v-bind:value']?'v-bind:value':':value';warn$1(binding+"=\""+value$1+"\" conflicts with v-model on the same element "+'because the latter already expands to a value binding internally',el.rawAttrsMap[binding]);}}varref=modifiers||{};varlazy=ref.lazy;varnumber=ref.number;vartrim=ref.trim;varneedCompositionGuard=!lazy&&type!=='range';varevent=lazy?'change':type==='range'?RANGE_TOKEN:'input';varvalueExpression='$event.target.value';if(trim){valueExpression="$event.target.value.trim()";}if(number){valueExpression="_n("+valueExpression+")";}varcode=genAssignmentCode(value,valueExpression);if(needCompositionGuard){code="if($event.target.composing)return;"+code;}addProp(el,'value',("("+value+")"));addHandler(el,event,code,null,true);if(trim||number){addHandler(el,'blur','$forceUpdate()');}}/* */// 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.functionnormalizeEvents(on){/* istanbul ignore if */if(isDef(on[RANGE_TOKEN])){// IE input[type=range] only supports `change` eventvarevent=isIE?'change':'input';on[event]=[].concat(on[RANGE_TOKEN],on[event]||[]);deleteon[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||[]);deleteon[CHECKBOX_RADIO_TOKEN];}}vartarget$1;functioncreateOnceHandler$1(event,handler,capture){var_target=target$1;// save current target element in closurereturnfunctiononceHandler(){varres=handler.apply(null,arguments);if(res!==null){remove$2(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.varuseMicrotaskFix=isUsingMicroTask&&!(isFF&&Number(isFF[1])<=53);functionadd$1(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){varattachedTimestamp=currentFlushTimestamp;varoriginal=handler;handler=original._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 attachmente.timeStamp>=attachedTimestamp||// 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 valuee.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 referencee.target.ownerDocument!==document){returnoriginal.apply(this,arguments)}};}target$1.addEventListener(name,handler,supportsPassive?{capture:capture,passive:passive}:capture);}functionremove$2(name,handler,capture,_target){(_target||target$1).removeEventListener(name,handler._wrapper||handler,capture);}functionupdateDOMListeners(oldVnode,vnode){if(isUndef(oldVnode.data.on)&&isUndef(vnode.data.on)){return}varon=vnode.data.on||{};varoldOn=oldVnode.data.on||{};target$1=vnode.elm;normalizeEvents(on);updateListeners(on,oldOn,add$1,remove$2,createOnceHandler$1,vnode.context);target$1=undefined;}varevents={create:updateDOMListeners,update:updateDOMListeners};/* */varsvgContainer;functionupdateDOMProps(oldVnode,vnode){if(isUndef(oldVnode.data.domProps)&&isUndef(vnode.data.domProps)){return}varkey,cur;varelm=vnode.elm;varoldProps=oldVnode.data.domProps||{};varprops=vnode.data.domProps||{};// clone observed objects, as the user probably wants to mutate itif(isDef(props.__ob__)){props=vnode.data.domProps=extend({},props);}for(keyinoldProps){if(!(keyinprops)){elm[key]='';}}for(keyinprops){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 propertyif(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 stringifiedelm._value=cur;// avoid resetting cursor position when value is the samevarstrCur=isUndef(cur)?'':String(cur);if(shouldUpdateValue(elm,strCur)){elm.value=strCur;}}elseif(key==='innerHTML'&&isSVG(elm.tagName)&&isUndef(elm.innerHTML)){// IE doesn't support innerHTML for SVG elementssvgContainer=svgContainer||document.createElement('div');svgContainer.innerHTML="<svg>"+cur+"</svg>";varsvg=svgContainer.firstChild;while(elm.firstChild){elm.removeChild(elm.firstChild);}while(svg.firstChild){elm.appendChild(svg.firstChild);}}elseif(// 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 valuetry{elm[key]=cur;}catch(e){}}}}// check platforms/web/util/attrs.js acceptValuefunctionshouldUpdateValue(elm,checkVal){return(!elm.composing&&(elm.tagName==='OPTION'||isNotInFocusAndDirty(elm,checkVal)||isDirtyWithModifiers(elm,checkVal)))}functionisNotInFocusAndDirty(elm,checkVal){// return true when textbox (.number and .trim) loses focus and its value is// not equal to the updated valuevarnotInFocus=true;// #6157// work around IE bug when accessing document.activeElement in an iframetry{notInFocus=document.activeElement!==elm;}catch(e){}returnnotInFocus&&elm.value!==checkVal}functionisDirtyWithModifiers(elm,newVal){varvalue=elm.value;varmodifiers=elm._vModifiers;// injected by v-model runtimeif(isDef(modifiers)){if(modifiers.number){returntoNumber(value)!==toNumber(newVal)}if(modifiers.trim){returnvalue.trim()!==newVal.trim()}}returnvalue!==newVal}vardomProps={create:updateDOMProps,update:updateDOMProps};/* */varparseStyleText=cached(function(cssText){varres={};varlistDelimiter=/;(?![^(]*\))/g;varpropertyDelimiter=/:(.+)/;cssText.split(listDelimiter).forEach(function(item){if(item){vartmp=item.split(propertyDelimiter);tmp.length>1&&(res[tmp[0].trim()]=tmp[1].trim());}});returnres});// merge static and dynamic style data on the same vnodefunctionnormalizeStyleData(data){varstyle=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 itreturndata.staticStyle?extend(data.staticStyle,style):style}// normalize possible array / string values into ObjectfunctionnormalizeStyleBinding(bindingStyle){if(Array.isArray(bindingStyle)){returntoObject(bindingStyle)}if(typeofbindingStyle==='string'){returnparseStyleText(bindingStyle)}returnbindingStyle}/** * parent component style should be after child's * so that parent component's style could override it */functiongetStyle(vnode,checkChild){varres={};varstyleData;if(checkChild){varchildNode=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);}varparentNode=vnode;while((parentNode=parentNode.parent)){if(parentNode.data&&(styleData=normalizeStyleData(parentNode.data))){extend(res,styleData);}}returnres}/* */varcssVarRE=/^--/;varimportantRE=/\s*!important$/;varsetProp=function(el,name,val){/* istanbul ignore if */if(cssVarRE.test(name)){el.style.setProperty(name,val);}elseif(importantRE.test(val)){el.style.setProperty(hyphenate(name),val.replace(importantRE,''),'important');}else{varnormalizedName=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 recognizefor(vari=0,len=val.length;i<len;i++){el.style[normalizedName]=val[i];}}else{el.style[normalizedName]=val;}}};varvendorNames=['Webkit','Moz','ms'];varemptyStyle;varnormalize=cached(function(prop){emptyStyle=emptyStyle||document.createElement('div').style;prop=camelize(prop);if(prop!=='filter'&&(propinemptyStyle)){returnprop}varcapName=prop.charAt(0).toUpperCase()+prop.slice(1);for(vari=0;i<vendorNames.length;i++){varname=vendorNames[i]+capName;if(nameinemptyStyle){returnname}}});functionupdateStyle(oldVnode,vnode){vardata=vnode.data;varoldData=oldVnode.data;if(isUndef(data.staticStyle)&&isUndef(data.style)&&isUndef(oldData.staticStyle)&&isUndef(oldData.style)){return}varcur,name;varel=vnode.elm;varoldStaticStyle=oldData.staticStyle;varoldStyleBinding=oldData.normalizedStyle||oldData.style||{};// if static style exists, stylebinding already merged into it when doing normalizeStyleDatavaroldStyle=oldStaticStyle||oldStyleBinding;varstyle=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;varnewStyle=getStyle(vnode,true);for(nameinoldStyle){if(isUndef(newStyle[name])){setProp(el,name,'');}}for(nameinnewStyle){cur=newStyle[name];if(cur!==oldStyle[name]){// ie9 setting to null has no effect, must use empty stringsetProp(el,name,cur==null?'':cur);}}}varstyle={create:updateStyle,update:updateStyle};/* */varwhitespaceRE=/\s+/;/** * Add class with compatibility for SVG since classList is not supported on * SVG elements in IE */functionaddClass(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){returnel.classList.add(c);});}else{el.classList.add(cls);}}else{varcur=" "+(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 */functionremoveClass(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){returnel.classList.remove(c);});}else{el.classList.remove(cls);}if(!el.classList.length){el.removeAttribute('class');}}else{varcur=" "+(el.getAttribute('class')||'')+" ";vartar=' '+cls+' ';while(cur.indexOf(tar)>=0){cur=cur.replace(tar,' ');}cur=cur.trim();if(cur){el.setAttribute('class',cur);}else{el.removeAttribute('class');}}}/* */functionresolveTransition(def$$1){if(!def$$1){return}/* istanbul ignore else */if(typeofdef$$1==='object'){varres={};if(def$$1.css!==false){extend(res,autoCssTransition(def$$1.name||'v'));}extend(res,def$$1);returnres}elseif(typeofdef$$1==='string'){returnautoCssTransition(def$$1)}}varautoCssTransition=cached(function(name){return{enterClass:(name+"-enter"),enterToClass:(name+"-enter-to"),enterActiveClass:(name+"-enter-active"),leaveClass:(name+"-leave"),leaveToClass:(name+"-leave-to"),leaveActiveClass:(name+"-leave-active")}});varhasTransition=inBrowser&&!isIE9;varTRANSITION='transition';varANIMATION='animation';// Transition property/event sniffingvartransitionProp='transition';vartransitionEndEvent='transitionend';varanimationProp='animation';varanimationEndEvent='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 modevarraf=inBrowser?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:/* istanbul ignore next */function(fn){returnfn();};functionnextFrame(fn){raf(function(){raf(fn);});}functionaddTransitionClass(el,cls){vartransitionClasses=el._transitionClasses||(el._transitionClasses=[]);if(transitionClasses.indexOf(cls)<0){transitionClasses.push(cls);addClass(el,cls);}}functionremoveTransitionClass(el,cls){if(el._transitionClasses){remove(el._transitionClasses,cls);}removeClass(el,cls);}functionwhenTransitionEnds(el,expectedType,cb){varref=getTransitionInfo(el,expectedType);vartype=ref.type;vartimeout=ref.timeout;varpropCount=ref.propCount;if(!type){returncb()}varevent=type===TRANSITION?transitionEndEvent:animationEndEvent;varended=0;varend=function(){el.removeEventListener(event,onEnd);cb();};varonEnd=function(e){if(e.target===el){if(++ended>=propCount){end();}}};setTimeout(function(){if(ended<propCount){end();}},timeout+1);el.addEventListener(event,onEnd);}vartransformRE=/\b(transform|all)(,|$)/;functiongetTransitionInfo(el,expectedType){varstyles=window.getComputedStyle(el);// JSDOM may return undefined for transition propertiesvartransitionDelays=(styles[transitionProp+'Delay']||'').split(', ');vartransitionDurations=(styles[transitionProp+'Duration']||'').split(', ');vartransitionTimeout=getTimeout(transitionDelays,transitionDurations);varanimationDelays=(styles[animationProp+'Delay']||'').split(', ');varanimationDurations=(styles[animationProp+'Duration']||'').split(', ');varanimationTimeout=getTimeout(animationDelays,animationDurations);vartype;vartimeout=0;varpropCount=0;/* istanbul ignore if */if(expectedType===TRANSITION){if(transitionTimeout>0){type=TRANSITION;timeout=transitionTimeout;propCount=transitionDurations.length;}}elseif(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;}varhasTransform=type===TRANSITION&&transformRE.test(styles[transitionProp+'Property']);return{type:type,timeout:timeout,propCount:propCount,hasTransform:hasTransform}}functiongetTimeout(delays,durations){/* istanbul ignore next */while(delays.length<durations.length){delays=delays.concat(delays);}returnMath.max.apply(null,durations.map(function(d,i){returntoMs(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 behaviorsfunctiontoMs(s){returnNumber(s.slice(0,-1).replace(',','.'))*1000}/* */functionenter(vnode,toggleDisplay){varel=vnode.elm;// call leave callback nowif(isDef(el._leaveCb)){el._leaveCb.cancelled=true;el._leaveCb();}vardata=resolveTransition(vnode.data.transition);if(isUndef(data)){return}/* istanbul ignore if */if(isDef(el._enterCb)||el.nodeType!==1){return}varcss=data.css;vartype=data.type;varenterClass=data.enterClass;varenterToClass=data.enterToClass;varenterActiveClass=data.enterActiveClass;varappearClass=data.appearClass;varappearToClass=data.appearToClass;varappearActiveClass=data.appearActiveClass;varbeforeEnter=data.beforeEnter;varenter=data.enter;varafterEnter=data.afterEnter;varenterCancelled=data.enterCancelled;varbeforeAppear=data.beforeAppear;varappear=data.appear;varafterAppear=data.afterAppear;varappearCancelled=data.appearCancelled;varduration=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.varcontext=activeInstance;vartransitionNode=activeInstance.$vnode;while(transitionNode&&transitionNode.parent){context=transitionNode.context;transitionNode=transitionNode.parent;}varisAppear=!context._isMounted||!vnode.isRootInsert;if(isAppear&&!appear&&appear!==''){return}varstartClass=isAppear&&appearClass?appearClass:enterClass;varactiveClass=isAppear&&appearActiveClass?appearActiveClass:enterActiveClass;vartoClass=isAppear&&appearToClass?appearToClass:enterToClass;varbeforeEnterHook=isAppear?(beforeAppear||beforeEnter):beforeEnter;varenterHook=isAppear?(typeofappear==='function'?appear:enter):enter;varafterEnterHook=isAppear?(afterAppear||afterEnter):afterEnter;varenterCancelledHook=isAppear?(appearCancelled||enterCancelled):enterCancelled;varexplicitEnterDuration=toNumber(isObject(duration)?duration.enter:duration);if(explicitEnterDuration!=null){checkDuration(explicitEnterDuration,'enter',vnode);}varexpectsCSS=css!==false&&!isIE9;varuserWantsControl=getHookArgumentsLength(enterHook);varcb=el._enterCb=once(function(){if(expectsCSS){removeTransitionClass(el,toClass);removeTransitionClass(el,activeClass);}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 hookmergeVNodeHook(vnode,'insert',function(){varparent=el.parentNode;varpendingNode=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 transitionbeforeEnterHook&&beforeEnterHook(el);if(expectsCSS){addTransitionClass(el,startClass);addTransitionClass(el,activeClass);nextFrame(function(){removeTransitionClass(el,startClass);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();}}functionleave(vnode,rm){varel=vnode.elm;// call enter callback nowif(isDef(el._enterCb)){el._enterCb.cancelled=true;el._enterCb();}vardata=resolveTransition(vnode.data.transition);if(isUndef(data)||el.nodeType!==1){returnrm()}/* istanbul ignore if */if(isDef(el._leaveCb)){return}varcss=data.css;vartype=data.type;varleaveClass=data.leaveClass;varleaveToClass=data.leaveToClass;varleaveActiveClass=data.leaveActiveClass;varbeforeLeave=data.beforeLeave;varleave=data.leave;varafterLeave=data.afterLeave;varleaveCancelled=data.leaveCancelled;vardelayLeave=data.delayLeave;varduration=data.duration;varexpectsCSS=css!==false&&!isIE9;varuserWantsControl=getHookArgumentsLength(leave);varexplicitLeaveDuration=toNumber(isObject(duration)?duration.leave:duration);if(isDef(explicitLeaveDuration)){checkDuration(explicitLeaveDuration,'leave',vnode);}varcb=el._leaveCb=once(function(){if(el.parentNode&&el.parentNode._pending){el.parentNode._pending[vnode.key]=null;}if(expectsCSS){removeTransitionClass(el,leaveToClass);removeTransitionClass(el,leaveActiveClass);}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();}functionperformLeave(){// the delayed leave may have already been cancelledif(cb.cancelled){return}// record leaving elementif(!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);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 modefunctioncheckDuration(val,name,vnode){if(typeofval!=='number'){warn("<transition> explicit "+name+" duration is not a valid number - "+"got "+(JSON.stringify(val))+".",vnode.context);}elseif(isNaN(val)){warn("<transition> explicit "+name+" duration is NaN - "+'the duration expression might be incorrect.',vnode.context);}}functionisValidDuration(val){returntypeofval==='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) */functiongetHookArgumentsLength(fn){if(isUndef(fn)){returnfalse}varinvokerFns=fn.fns;if(isDef(invokerFns)){// invokerreturngetHookArgumentsLength(Array.isArray(invokerFns)?invokerFns[0]:invokerFns)}else{return(fn._length||fn.length)>1}}function_enter(_,vnode){if(vnode.data.show!==true){enter(vnode);}}vartransition=inBrowser?{create:_enter,activate:_enter,remove:functionremove$$1(vnode,rm){/* istanbul ignore else */if(vnode.data.show!==true){leave(vnode,rm);}else{rm();}}}:{};varplatformModules=[attrs,klass,events,domProps,style,transition];/* */// the directive module should be applied last, after all// built-in modules have been applied.varmodules=platformModules.concat(baseModules);varpatch=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(){varel=document.activeElement;if(el&&el.vmodel){trigger(el,'input');}});}vardirective={inserted:functioninserted(el,binding,vnode,oldVnode){if(vnode.tag==='select'){// #6903if(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);}elseif(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:functioncomponentUpdated(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.varprevOptions=el._vOptions;varcurOptions=el._vOptions=[].map.call(el.options,getValue);if(curOptions.some(function(o,i){return!looseEqual(o,prevOptions[i]);})){// trigger change event if// no matching option found for at least one valuevarneedReset=el.multiple?binding.value.some(function(v){returnhasNoMatchingOption(v,curOptions);}):binding.value!==binding.oldValue&&hasNoMatchingOption(binding.value,curOptions);if(needReset){trigger(el,'change');}}}}};functionsetSelected(el,binding,vm){actuallySetSelected(el,binding,vm);/* istanbul ignore if */if(isIE||isEdge){setTimeout(function(){actuallySetSelected(el,binding,vm);},0);}}functionactuallySetSelected(el,binding,vm){varvalue=binding.value;varisMultiple=el.multiple;if(isMultiple&&!Array.isArray(value)){warn("<select multiple v-model=\""+(binding.expression)+"\"> "+"expects an Array value for its binding, but got "+(Object.prototype.toString.call(value).slice(8,-1)),vm);return}varselected,option;for(vari=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;}}functionhasNoMatchingOption(value,options){returnoptions.every(function(o){return!looseEqual(o,value);})}functiongetValue(option){return'_value'inoption?option._value:option.value}functiononCompositionStart(e){e.target.composing=true;}functiononCompositionEnd(e){// prevent triggering an input event for no reasonif(!e.target.composing){return}e.target.composing=false;trigger(e.target,'input');}functiontrigger(el,type){vare=document.createEvent('HTMLEvents');e.initEvent(type,true,true);el.dispatchEvent(e);}/* */// recursively search for possible transition defined inside the component rootfunctionlocateNode(vnode){returnvnode.componentInstance&&(!vnode.data||!vnode.data.transition)?locateNode(vnode.componentInstance._vnode):vnode}varshow={bind:functionbind(el,ref,vnode){varvalue=ref.value;vnode=locateNode(vnode);vartransition$$1=vnode.data&&vnode.data.transition;varoriginalDisplay=el.__vOriginalDisplay=el.style.display==='none'?'':el.style.display;if(value&&transition$$1){vnode.data.show=true;enter(vnode,function(){el.style.display=originalDisplay;});}else{el.style.display=value?originalDisplay:'none';}},update:functionupdate(el,ref,vnode){varvalue=ref.value;varoldValue=ref.oldValue;/* istanbul ignore if */if(!value===!oldValue){return}vnode=locateNode(vnode);vartransition$$1=vnode.data&&vnode.data.transition;if(transition$$1){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:functionunbind(el,binding,vnode,oldVnode,isDestroy){if(!isDestroy){el.style.display=el.__vOriginalDisplay;}}};varplatformDirectives={model:directive,show:show};/* */vartransitionProps={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 renderedfunctiongetRealChild(vnode){varcompOptions=vnode&&vnode.componentOptions;if(compOptions&&compOptions.Ctor.options.abstract){returngetRealChild(getFirstComponentChild(compOptions.children))}else{returnvnode}}functionextractTransitionData(comp){vardata={};varoptions=comp.$options;// propsfor(varkeyinoptions.propsData){data[key]=comp[key];}// events.// extract listeners and pass them directly to the transition methodsvarlisteners=options._parentListeners;for(varkey$1inlisteners){data[camelize(key$1)]=listeners[key$1];}returndata}functionplaceholder(h,rawChild){if(/\d-keep-alive$/.test(rawChild.tag)){returnh('keep-alive',{props:rawChild.componentOptions.propsData})}}functionhasParentTransition(vnode){while((vnode=vnode.parent)){if(vnode.data.transition){returntrue}}}functionisSameChild(child,oldChild){returnoldChild.key===child.key&&oldChild.tag===child.tag}varisNotTextNode=function(c){returnc.tag||isAsyncPlaceholder(c);};varisVShowDirective=function(d){returnd.name==='show';};varTransition={name:'transition',props:transitionProps,abstract:true,render:functionrender(h){varthis$1=this;varchildren=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 elementsif(children.length>1){warn('<transition> can only be used on a single element. Use '+'<transition-group> for lists.',this.$parent);}varmode=this.mode;// warn invalid modeif(mode&&mode!=='in-out'&&mode!=='out-in'){warn('invalid <transition> mode: '+mode,this.$parent);}varrawChild=children[0];// if this is a component root node and the component's// parent container node also has transition, skip.if(hasParentTransition(this.$vnode)){returnrawChild}// apply transition data to child// use getRealChild() to ignore abstract components e.g. keep-alivevarchild=getRealChild(rawChild);/* istanbul ignore if */if(!child){returnrawChild}if(this._leaving){returnplaceholder(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.varid="__transition-"+(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;vardata=(child.data||(child.data={})).transition=extractTransitionData(this);varoldRawChild=this._vnode;varoldChild=getRealChild(oldRawChild);// mark v-show// so that the transition module can hand over the control to the directiveif(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!varoldData=oldChild.data.transition=extend({},data);// handle transition modeif(mode==='out-in'){// return placeholder node and queue update when leave finishesthis._leaving=true;mergeVNodeHook(oldData,'afterLeave',function(){this$1._leaving=false;this$1.$forceUpdate();});returnplaceholder(h,rawChild)}elseif(mode==='in-out'){if(isAsyncPlaceholder(child)){returnoldRawChild}vardelayedLeave;varperformLeave=function(){delayedLeave();};mergeVNodeHook(data,'afterEnter',performLeave);mergeVNodeHook(data,'enterCancelled',performLeave);mergeVNodeHook(oldData,'delayLeave',function(leave){delayedLeave=leave;});}}returnrawChild}};/* */varprops=extend({tag:String,moveClass:String},transitionProps);deleteprops.mode;varTransitionGroup={props:props,beforeMount:functionbeforeMount(){varthis$1=this;varupdate=this._update;this._update=function(vnode,hydrating){varrestoreActiveInstance=setActiveInstance(this$1);// force removing passthis$1.__patch__(this$1._vnode,this$1.kept,false,// hydratingtrue// removeOnly (!important, avoids unnecessary moves));this$1._vnode=this$1.kept;restoreActiveInstance();update.call(this$1,vnode,hydrating);};},render:functionrender(h){vartag=this.tag||this.$vnode.data.tag||'span';varmap=Object.create(null);varprevChildren=this.prevChildren=this.children;varrawChildren=this.$slots.default||[];varchildren=this.children=[];vartransitionData=extractTransitionData(this);for(vari=0;i<rawChildren.length;i++){varc=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{varopts=c.componentOptions;varname=opts?(opts.Ctor.options.name||opts.tag||''):c.tag;warn(("<transition-group> children must be keyed: <"+name+">"));}}}if(prevChildren){varkept=[];varremoved=[];for(vari$1=0;i$1<prevChildren.length;i$1++){varc$1=prevChildren[i$1];c$1.data.transition=transitionData;c$1.data.pos=c$1.elm.getBoundingClientRect();if(map[c$1.key]){kept.push(c$1);}else{removed.push(c$1);}}this.kept=h(tag,null,kept);this.removed=removed;}returnh(tag,null,children)},updated:functionupdated(){varchildren=this.prevChildren;varmoveClass=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-base_linethis._reflow=document.body.offsetHeight;children.forEach(function(c){if(c.data.moved){varel=c.elm;vars=el.style;addTransitionClass(el,moveClass);s.transform=s.WebkitTransform=s.transitionDuration='';el.addEventListener(transitionEndEvent,el._moveCb=functioncb(e){if(e&&e.target!==el){return}if(!e||/transform$/.test(e.propertyName)){el.removeEventListener(transitionEndEvent,cb);el._moveCb=null;removeTransitionClass(el,moveClass);}});}});},methods:{hasMove:functionhasMove(el,moveClass){/* istanbul ignore if */if(!hasTransition){returnfalse}/* istanbul ignore if */if(this._hasMove){returnthis._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.varclone=el.cloneNode();if(el._transitionClasses){el._transitionClasses.forEach(function(cls){removeClass(clone,cls);});}addClass(clone,moveClass);clone.style.display='none';this.$el.appendChild(clone);varinfo=getTransitionInfo(clone);this.$el.removeChild(clone);return(this._hasMove=info.hasTransform)}}};functioncallPendingCbs(c){/* istanbul ignore if */if(c.elm._moveCb){c.elm._moveCb();}/* istanbul ignore if */if(c.elm._enterCb){c.elm._enterCb();}}functionrecordPosition(c){c.data.newPos=c.elm.getBoundingClientRect();}functionapplyTranslation(c){varoldPos=c.data.pos;varnewPos=c.data.newPos;vardx=oldPos.left-newPos.left;vardy=oldPos.top-newPos.top;if(dx||dy){c.data.moved=true;vars=c.elm.style;s.transform=s.WebkitTransform="translate("+dx+"px,"+dy+"px)";s.transitionDuration='0s';}}varplatformComponents={Transition:Transition,TransitionGroup:TransitionGroup};/* */// install platform specific utilsVue.config.mustUseProp=mustUseProp;Vue.config.isReservedTag=isReservedTag;Vue.config.isReservedAttr=isReservedAttr;Vue.config.getTagNamespace=getTagNamespace;Vue.config.isUnknownElement=isUnknownElement;// install platform runtime directives & componentsextend(Vue.options.directives,platformDirectives);extend(Vue.options.components,platformComponents);// install platform patch functionVue.prototype.__patch__=inBrowser?patch:noop;// public mount methodVue.prototype.$mount=function(el,hydrating){el=el&&inBrowser?query(el):undefined;returnmountComponent(this,el,hydrating)};// devtools global hook/* istanbul ignore next */if(inBrowser){setTimeout(function(){if(config.devtools){if(devtools){devtools.emit('init',Vue);}else{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&&typeofconsole!=='undefined'){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);}/* */vardefaultTagRE=/\{\{((?:.|\r?\n)+?)\}\}/g;varregexEscapeRE=/[-.*+?^${}()|[\]\/\\]/g;varbuildRegex=cached(function(delimiters){varopen=delimiters[0].replace(regexEscapeRE,'\\$&');varclose=delimiters[1].replace(regexEscapeRE,'\\$&');returnnewRegExp(open+'((?:.|\\n)+?)'+close,'g')});functionparseText(text,delimiters){vartagRE=delimiters?buildRegex(delimiters):defaultTagRE;if(!tagRE.test(text)){return}vartokens=[];varrawTokens=[];varlastIndex=tagRE.lastIndex=0;varmatch,index,tokenValue;while((match=tagRE.exec(text))){index=match.index;// push text tokenif(index>lastIndex){rawTokens.push(tokenValue=text.slice(lastIndex,index));tokens.push(JSON.stringify(tokenValue));}// tag tokenvarexp=parseFilters(match[1].trim());tokens.push(("_s("+exp+")"));rawTokens.push({'@binding':exp});lastIndex=index+match[0].length;}if(lastIndex<text.length){rawTokens.push(tokenValue=text.slice(lastIndex));tokens.push(JSON.stringify(tokenValue));}return{expression:tokens.join('+'),tokens:rawTokens}}/* */functiontransformNode(el,options){varwarn=options.warn||baseWarn;varstaticClass=getAndRemoveAttr(el,'class');if(staticClass){varres=parseText(staticClass,options.delimiters);if(res){warn("class=\""+staticClass+"\": "+'Interpolation inside attributes has been removed. '+'Use v-bind or the colon shorthand instead. For example, '+'instead of <div class="{{ val }}">, use <div :class="val">.',el.rawAttrsMap['class']);}}if(staticClass){el.staticClass=JSON.stringify(staticClass);}varclassBinding=getBindingAttr(el,'class',false/* getStatic */);if(classBinding){el.classBinding=classBinding;}}functiongenData(el){vardata='';if(el.staticClass){data+="staticClass:"+(el.staticClass)+",";}if(el.classBinding){data+="class:"+(el.classBinding)+",";}returndata}varklass$1={staticKeys:['staticClass'],transformNode:transformNode,genData:genData};/* */functiontransformNode$1(el,options){varwarn=options.warn||baseWarn;varstaticStyle=getAndRemoveAttr(el,'style');if(staticStyle){/* istanbul ignore if */{varres=parseText(staticStyle,options.delimiters);if(res){warn("style=\""+staticStyle+"\": "+'Interpolation inside attributes has been removed. '+'Use v-bind or the colon shorthand instead. For example, '+'instead of <div style="{{ val }}">, use <div :style="val">.',el.rawAttrsMap['style']);}}el.staticStyle=JSON.stringify(parseStyleText(staticStyle));}varstyleBinding=getBindingAttr(el,'style',false/* getStatic */);if(styleBinding){el.styleBinding=styleBinding;}}functiongenData$1(el){vardata='';if(el.staticStyle){data+="staticStyle:"+(el.staticStyle)+",";}if(el.styleBinding){data+="style:("+(el.styleBinding)+"),";}returndata}varstyle$1={staticKeys:['staticStyle'],transformNode:transformNode$1,genData:genData$1};/* */vardecoder;varhe={decode:functiondecode(html){decoder=decoder||document.createElement('div');decoder.innerHTML=html;returndecoder.textContent}};/* */varisUnaryTag=makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,'+'link,meta,param,source,track,wbr');// Elements that you can, intentionally, leave open// (and which close themselves)varcanBeLeftOpenTag=makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-contentvarisNonPhrasingTag=makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,'+'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,'+'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,'+'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,'+'title,tr,track');/** * Not type-checking this file because it's mostly vendor code. */// Regular Expressions for parsing tags and attributesvarattribute=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;vardynamicArgAttribute=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;varncname="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+(unicodeRegExp.source)+"]*";varqnameCapture="((?:"+ncname+"\\:)?"+ncname+")";varstartTagOpen=newRegExp(("^<"+qnameCapture));varstartTagClose=/^\s*(\/?)>/;varendTag=newRegExp(("^<\\/"+qnameCapture+"[^>]*>"));vardoctype=/^<!DOCTYPE [^>]+>/i;// #7298: escape - to avoid being passed as HTML comment when inlined in pagevarcomment=/^<!\--/;varconditionalComment=/^<!\[/;// Special Elements (can contain anything)varisPlainTextElement=makeMap('script,style,textarea',true);varreCache={};vardecodingMap={'<':'<','>':'>','"':'"','&':'&',' ':'\n','	':'\t',''':"'"};varencodedAttr=/&(?:lt|gt|quot|amp|#39);/g;varencodedAttrWithNewLines=/&(?:lt|gt|quot|amp|#39|#10|#9);/g;// #5992varisIgnoreNewlineTag=makeMap('pre,textarea',true);varshouldIgnoreFirstNewline=function(tag,html){returntag&&isIgnoreNewlineTag(tag)&&html[0]==='\n';};functiondecodeAttr(value,shouldDecodeNewlines){varre=shouldDecodeNewlines?encodedAttrWithNewLines:encodedAttr;returnvalue.replace(re,function(match){returndecodingMap[match];})}functionparseHTML(html,options){varstack=[];varexpectHTML=options.expectHTML;varisUnaryTag$$1=options.isUnaryTag||no;varcanBeLeftOpenTag$$1=options.canBeLeftOpenTag||no;varindex=0;varlast,lastTag;while(html){last=html;// Make sure we're not in a plaintext content element like script/styleif(!lastTag||!isPlainTextElement(lastTag)){vartextEnd=html.indexOf('<');if(textEnd===0){// Comment:if(comment.test(html)){varcommentEnd=html.indexOf('-->');if(commentEnd>=0){if(options.shouldKeepComment){options.comment(html.substring(4,commentEnd),index,index+commentEnd+3);}advance(commentEnd+3);continue}}// http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_commentif(conditionalComment.test(html)){varconditionalEnd=html.indexOf(']>');if(conditionalEnd>=0){advance(conditionalEnd+2);continue}}// Doctype:vardoctypeMatch=html.match(doctype);if(doctypeMatch){advance(doctypeMatch[0].length);continue}// End tag:varendTagMatch=html.match(endTag);if(endTagMatch){varcurIndex=index;advance(endTagMatch[0].length);parseEndTag(endTagMatch[1],curIndex,index);continue}// Start tag:varstartTagMatch=parseStartTag();if(startTagMatch){handleStartTag(startTagMatch);if(shouldIgnoreFirstNewline(startTagMatch.tagName,html)){advance(1);}continue}}vartext=(void0),rest=(void0),next=(void0);if(textEnd>=0){rest=html.slice(textEnd);while(!endTag.test(rest)&&!startTagOpen.test(rest)&&!comment.test(rest)&&!conditionalComment.test(rest)){// < in plain text, be forgiving and treat it as textnext=rest.indexOf('<',1);if(next<0){break}textEnd+=next;rest=html.slice(textEnd);}text=html.substring(0,textEnd);}if(textEnd<0){text=html;}if(text){advance(text.length);}if(options.chars&&text){options.chars(text,index-text.length,index);}}else{varendTagLength=0;varstackedTag=lastTag.toLowerCase();varreStackedTag=reCache[stackedTag]||(reCache[stackedTag]=newRegExp('([\\s\\S]*?)(</'+stackedTag+'[^>]*>)','i'));varrest$1=html.replace(reStackedTag,function(all,text,endTag){endTagLength=endTag.length;if(!isPlainTextElement(stackedTag)&&stackedTag!=='noscript'){text=text.replace(/<!\--([\s\S]*?)-->/g,'$1')// #7298.replace(/<!\[CDATA\[([\s\S]*?)]]>/g,'$1');}if(shouldIgnoreFirstNewline(stackedTag,text)){text=text.slice(1);}if(options.chars){options.chars(text);}return''});index+=html.length-rest$1.length;html=rest$1;parseEndTag(stackedTag,index-endTagLength,index);}if(html===last){options.chars&&options.chars(html);if(!stack.length&&options.warn){options.warn(("Mal-formatted tag at end of template: \""+html+"\""),{start:index+html.length});}break}}// Clean up any remaining tagsparseEndTag();functionadvance(n){index+=n;html=html.substring(n);}functionparseStartTag(){varstart=html.match(startTagOpen);if(start){varmatch={tagName:start[1],attrs:[],start:index};advance(start[0].length);varend,attr;while(!(end=html.match(startTagClose))&&(attr=html.match(dynamicArgAttribute)||html.match(attribute))){attr.start=index;advance(attr[0].length);attr.end=index;match.attrs.push(attr);}if(end){match.unarySlash=end[1];advance(end[0].length);match.end=index;returnmatch}}}functionhandleStartTag(match){vartagName=match.tagName;varunarySlash=match.unarySlash;if(expectHTML){if(lastTag==='p'&&isNonPhrasingTag(tagName)){parseEndTag(lastTag);}if(canBeLeftOpenTag$$1(tagName)&&lastTag===tagName){parseEndTag(tagName);}}varunary=isUnaryTag$$1(tagName)||!!unarySlash;varl=match.attrs.length;varattrs=newArray(l);for(vari=0;i<l;i++){varargs=match.attrs[i];varvalue=args[3]||args[4]||args[5]||'';varshouldDecodeNewlines=tagName==='a'&&args[1]==='href'?options.shouldDecodeNewlinesForHref:options.shouldDecodeNewlines;attrs[i]={name:args[1],value:decodeAttr(value,shouldDecodeNewlines)};if(options.outputSourceRange){attrs[i].start=args.start+args[0].match(/^\s*/).length;attrs[i].end=args.end;}}if(!unary){stack.push({tag:tagName,lowerCasedTag:tagName.toLowerCase(),attrs:attrs,start:match.start,end:match.end});lastTag=tagName;}if(options.start){options.start(tagName,attrs,unary,match.start,match.end);}}functionparseEndTag(tagName,start,end){varpos,lowerCasedTagName;if(start==null){start=index;}if(end==null){end=index;}// Find the closest opened tag of the same typeif(tagName){lowerCasedTagName=tagName.toLowerCase();for(pos=stack.length-1;pos>=0;pos--){if(stack[pos].lowerCasedTag===lowerCasedTagName){break}}}else{// If no tag name is provided, clean shoppos=0;}if(pos>=0){// Close all the open elements, up the stackfor(vari=stack.length-1;i>=pos;i--){if(i>pos||!tagName&&options.warn){options.warn(("tag <"+(stack[i].tag)+"> has no matching end tag."),{start:stack[i].start,end:stack[i].end});}if(options.end){options.end(stack[i].tag,start,end);}}// Remove the open elements from the stackstack.length=pos;lastTag=pos&&stack[pos-1].tag;}elseif(lowerCasedTagName==='br'){if(options.start){options.start(tagName,[],true,start,end);}}elseif(lowerCasedTagName==='p'){if(options.start){options.start(tagName,[],false,start,end);}if(options.end){options.end(tagName,start,end);}}}}/* */varonRE=/^@|^v-on:/;vardirRE=/^v-|^@|^:|^#/;varforAliasRE=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;varforIteratorRE=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/;varstripParensRE=/^\(|\)$/g;vardynamicArgRE=/^\[.*\]$/;varargRE=/:(.*)$/;varbindRE=/^:|^\.|^v-bind:/;varmodifierRE=/\.[^.\]]+(?=[^\]]*$)/g;varslotRE=/^v-slot(:|$)|^#/;varlineBreakRE=/[\r\n]/;varwhitespaceRE$1=/[\f\t\r\n]+/g;varinvalidAttributeRE=/[\s"'<>\/=]/;vardecodeHTMLCached=cached(he.decode);varemptySlotScopeToken="_empty_";// configurable statevarwarn$2;vardelimiters;vartransforms;varpreTransforms;varpostTransforms;varplatformIsPreTag;varplatformMustUseProp;varplatformGetTagNamespace;varmaybeComponent;functioncreateASTElement(tag,attrs,parent){return{type:1,tag:tag,attrsList:attrs,attrsMap:makeAttrsMap(attrs),rawAttrsMap:{},parent:parent,children:[]}}/** * Convert HTML string to AST. */functionparse(template,options){warn$2=options.warn||baseWarn;platformIsPreTag=options.isPreTag||no;platformMustUseProp=options.mustUseProp||no;platformGetTagNamespace=options.getTagNamespace||no;varisReservedTag=options.isReservedTag||no;maybeComponent=function(el){return!!(el.component||el.attrsMap[':is']||el.attrsMap['v-bind:is']||!(el.attrsMap.is?isReservedTag(el.attrsMap.is):isReservedTag(el.tag)));};transforms=pluckModuleFunction(options.modules,'transformNode');preTransforms=pluckModuleFunction(options.modules,'preTransformNode');postTransforms=pluckModuleFunction(options.modules,'postTransformNode');delimiters=options.delimiters;varstack=[];varpreserveWhitespace=options.preserveWhitespace!==false;varwhitespaceOption=options.whitespace;varroot;varcurrentParent;varinVPre=false;varinPre=false;varwarned=false;functionwarnOnce(msg,range){if(!warned){warned=true;warn$2(msg,range);}}functioncloseElement(element){trimEndingWhitespace(element);if(!inVPre&&!element.processed){element=processElement(element,options);}// tree managementif(!stack.length&&element!==root){// allow root elements with v-if, v-else-if and v-elseif(root.if&&(element.elseif||element.else)){{checkRootConstraints(element);}addIfCondition(root,{exp:element.elseif,block:element});}else{warnOnce("Component template should contain exactly one root element. "+"If you are using v-if on multiple elements, "+"use v-else-if to chain them instead.",{start:element.start});}}if(currentParent&&!element.forbidden){if(element.elseif||element.else){processIfConditions(element,currentParent);}else{if(element.slotScope){// scoped slot// keep it in the children list so that v-else(-if) conditions can// find it as the prev node.varname=element.slotTarget||'"default"';(currentParent.scopedSlots||(currentParent.scopedSlots={}))[name]=element;}currentParent.children.push(element);element.parent=currentParent;}}// final children cleanup// filter out scoped slotselement.children=element.children.filter(function(c){return!(c).slotScope;});// remove trailing whitespace node againtrimEndingWhitespace(element);// check pre stateif(element.pre){inVPre=false;}if(platformIsPreTag(element.tag)){inPre=false;}// apply post-transformsfor(vari=0;i<postTransforms.length;i++){postTransforms[i](element,options);}}functiontrimEndingWhitespace(el){// remove trailing whitespace nodeif(!inPre){varlastNode;while((lastNode=el.children[el.children.length-1])&&lastNode.type===3&&lastNode.text===' '){el.children.pop();}}}functioncheckRootConstraints(el){if(el.tag==='slot'||el.tag==='template'){warnOnce("Cannot use <"+(el.tag)+"> as component root element because it may "+'contain multiple nodes.',{start:el.start});}if(el.attrsMap.hasOwnProperty('v-for')){warnOnce('Cannot use v-for on stateful component root element because '+'it renders multiple elements.',el.rawAttrsMap['v-for']);}}parseHTML(template,{warn:warn$2,expectHTML:options.expectHTML,isUnaryTag:options.isUnaryTag,canBeLeftOpenTag:options.canBeLeftOpenTag,shouldDecodeNewlines:options.shouldDecodeNewlines,shouldDecodeNewlinesForHref:options.shouldDecodeNewlinesForHref,shouldKeepComment:options.comments,outputSourceRange:options.outputSourceRange,start:functionstart(tag,attrs,unary,start$1,end){// check namespace.// inherit parent ns if there is onevarns=(currentParent&¤tParent.ns)||platformGetTagNamespace(tag);// handle IE svg bug/* istanbul ignore if */if(isIE&&ns==='svg'){attrs=guardIESVGBug(attrs);}varelement=createASTElement(tag,attrs,currentParent);if(ns){element.ns=ns;}{if(options.outputSourceRange){element.start=start$1;element.end=end;element.rawAttrsMap=element.attrsList.reduce(function(cumulated,attr){cumulated[attr.name]=attr;returncumulated},{});}attrs.forEach(function(attr){if(invalidAttributeRE.test(attr.name)){warn$2("Invalid dynamic argument expression: attribute names cannot contain "+"spaces, quotes, <, >, / or =.",{start:attr.start+attr.name.indexOf("["),end:attr.start+attr.name.length});}});}if(isForbiddenTag(element)&&!isServerRendering()){element.forbidden=true;warn$2('Templates should only be responsible for mapping the state to the '+'UI. Avoid placing tags with side-effects in your templates, such as '+"<"+tag+">"+', as they will not be parsed.',{start:element.start});}// apply pre-transformsfor(vari=0;i<preTransforms.length;i++){element=preTransforms[i](element,options)||element;}if(!inVPre){processPre(element);if(element.pre){inVPre=true;}}if(platformIsPreTag(element.tag)){inPre=true;}if(inVPre){processRawAttrs(element);}elseif(!element.processed){// structural directivesprocessFor(element);processIf(element);processOnce(element);}if(!root){root=element;{checkRootConstraints(root);}}if(!unary){currentParent=element;stack.push(element);}else{closeElement(element);}},end:functionend(tag,start,end$1){varelement=stack[stack.length-1];// pop stackstack.length-=1;currentParent=stack[stack.length-1];if(options.outputSourceRange){element.end=end$1;}closeElement(element);},chars:functionchars(text,start,end){if(!currentParent){{if(text===template){warnOnce('Component template requires a root element, rather than just text.',{start:start});}elseif((text=text.trim())){warnOnce(("text \""+text+"\" outside root element will be ignored."),{start:start});}}return}// IE textarea placeholder bug/* istanbul ignore if */if(isIE&¤tParent.tag==='textarea'&¤tParent.attrsMap.placeholder===text){return}varchildren=currentParent.children;if(inPre||text.trim()){text=isTextTag(currentParent)?text:decodeHTMLCached(text);}elseif(!children.length){// remove the whitespace-only node right after an opening tagtext='';}elseif(whitespaceOption){if(whitespaceOption==='condense'){// in condense mode, remove the whitespace node if it contains// base_line break, otherwise condense to a single spacetext=lineBreakRE.test(text)?'':' ';}else{text=' ';}}else{text=preserveWhitespace?' ':'';}if(text){if(!inPre&&whitespaceOption==='condense'){// condense consecutive whitespaces into single spacetext=text.replace(whitespaceRE$1,' ');}varres;varchild;if(!inVPre&&text!==' '&&(res=parseText(text,delimiters))){child={type:2,expression:res.expression,tokens:res.tokens,text:text};}elseif(text!==' '||!children.length||children[children.length-1].text!==' '){child={type:3,text:text};}if(child){if(options.outputSourceRange){child.start=start;child.end=end;}children.push(child);}}},comment:functioncomment(text,start,end){// adding anything as a sibling to the root node is forbidden// comments should still be allowed, but ignoredif(currentParent){varchild={type:3,text:text,isComment:true};if(options.outputSourceRange){child.start=start;child.end=end;}currentParent.children.push(child);}}});returnroot}functionprocessPre(el){if(getAndRemoveAttr(el,'v-pre')!=null){el.pre=true;}}functionprocessRawAttrs(el){varlist=el.attrsList;varlen=list.length;if(len){varattrs=el.attrs=newArray(len);for(vari=0;i<len;i++){attrs[i]={name:list[i].name,value:JSON.stringify(list[i].value)};if(list[i].start!=null){attrs[i].start=list[i].start;attrs[i].end=list[i].end;}}}elseif(!el.pre){// non root node in pre blocks with no attributesel.plain=true;}}functionprocessElement(element,options){processKey(element);// determine whether this is a plain element after// removing structural attributeselement.plain=(!element.key&&!element.scopedSlots&&!element.attrsList.length);processRef(element);processSlotContent(element);processSlotOutlet(element);processComponent(element);for(vari=0;i<transforms.length;i++){element=transforms[i](element,options)||element;}processAttrs(element);returnelement}functionprocessKey(el){varexp=getBindingAttr(el,'key');if(exp){{if(el.tag==='template'){warn$2("<template> cannot be keyed. Place the key on real elements instead.",getRawBindingAttr(el,'key'));}if(el.for){variterator=el.iterator2||el.iterator1;varparent=el.parent;if(iterator&&iterator===exp&&parent&&parent.tag==='transition-group'){warn$2("Do not use v-for index as key on <transition-group> children, "+"this is the same as not using keys.",getRawBindingAttr(el,'key'),true/* tip */);}}}el.key=exp;}}functionprocessRef(el){varref=getBindingAttr(el,'ref');if(ref){el.ref=ref;el.refInFor=checkInFor(el);}}functionprocessFor(el){varexp;if((exp=getAndRemoveAttr(el,'v-for'))){varres=parseFor(exp);if(res){extend(el,res);}else{warn$2(("Invalid v-for expression: "+exp),el.rawAttrsMap['v-for']);}}}functionparseFor(exp){varinMatch=exp.match(forAliasRE);if(!inMatch){return}varres={};res.for=inMatch[2].trim();varalias=inMatch[1].trim().replace(stripParensRE,'');variteratorMatch=alias.match(forIteratorRE);if(iteratorMatch){res.alias=alias.replace(forIteratorRE,'').trim();res.iterator1=iteratorMatch[1].trim();if(iteratorMatch[2]){res.iterator2=iteratorMatch[2].trim();}}else{res.alias=alias;}returnres}functionprocessIf(el){varexp=getAndRemoveAttr(el,'v-if');if(exp){el.if=exp;addIfCondition(el,{exp:exp,block:el});}else{if(getAndRemoveAttr(el,'v-else')!=null){el.else=true;}varelseif=getAndRemoveAttr(el,'v-else-if');if(elseif){el.elseif=elseif;}}}functionprocessIfConditions(el,parent){varprev=findPrevElement(parent.children);if(prev&&prev.if){addIfCondition(prev,{exp:el.elseif,block:el});}else{warn$2("v-"+(el.elseif?('else-if="'+el.elseif+'"'):'else')+" "+"used on element <"+(el.tag)+"> without corresponding v-if.",el.rawAttrsMap[el.elseif?'v-else-if':'v-else']);}}functionfindPrevElement(children){vari=children.length;while(i--){if(children[i].type===1){returnchildren[i]}else{if(children[i].text!==' '){warn$2("text \""+(children[i].text.trim())+"\" between v-if and v-else(-if) "+"will be ignored.",children[i]);}children.pop();}}}functionaddIfCondition(el,condition){if(!el.ifConditions){el.ifConditions=[];}el.ifConditions.push(condition);}functionprocessOnce(el){varonce$$1=getAndRemoveAttr(el,'v-once');if(once$$1!=null){el.once=true;}}// handle content being passed to a component as slot,// e.g. <template slot="xxx">, <div slot-scope="xxx">functionprocessSlotContent(el){varslotScope;if(el.tag==='template'){slotScope=getAndRemoveAttr(el,'scope');/* istanbul ignore if */if(slotScope){warn$2("the \"scope\" attribute for scoped slots have been deprecated and "+"replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute "+"can also be used on plain elements in addition to <template> to "+"denote scoped slots.",el.rawAttrsMap['scope'],true);}el.slotScope=slotScope||getAndRemoveAttr(el,'slot-scope');}elseif((slotScope=getAndRemoveAttr(el,'slot-scope'))){/* istanbul ignore if */if(el.attrsMap['v-for']){warn$2("Ambiguous combined usage of slot-scope and v-for on <"+(el.tag)+"> "+"(v-for takes higher priority). Use a wrapper <template> for the "+"scoped slot to make it clearer.",el.rawAttrsMap['slot-scope'],true);}el.slotScope=slotScope;}// slot="xxx"varslotTarget=getBindingAttr(el,'slot');if(slotTarget){el.slotTarget=slotTarget==='""'?'"default"':slotTarget;el.slotTargetDynamic=!!(el.attrsMap[':slot']||el.attrsMap['v-bind:slot']);// preserve slot as an attribute for native shadow DOM compat// only for non-scoped slots.if(el.tag!=='template'&&!el.slotScope){addAttr(el,'slot',slotTarget,getRawBindingAttr(el,'slot'));}}// 2.6 v-slot syntax{if(el.tag==='template'){// v-slot on <template>varslotBinding=getAndRemoveAttrByRegex(el,slotRE);if(slotBinding){{if(el.slotTarget||el.slotScope){warn$2("Unexpected mixed usage of different slot syntaxes.",el);}if(el.parent&&!maybeComponent(el.parent)){warn$2("<template v-slot> can only appear at the root level inside "+"the receiving component",el);}}varref=getSlotName(slotBinding);varname=ref.name;vardynamic=ref.dynamic;el.slotTarget=name;el.slotTargetDynamic=dynamic;el.slotScope=slotBinding.value||emptySlotScopeToken;// force it into a scoped slot for perf}}else{// v-slot on component, denotes default slotvarslotBinding$1=getAndRemoveAttrByRegex(el,slotRE);if(slotBinding$1){{if(!maybeComponent(el)){warn$2("v-slot can only be used on components or <template>.",slotBinding$1);}if(el.slotScope||el.slotTarget){warn$2("Unexpected mixed usage of different slot syntaxes.",el);}if(el.scopedSlots){warn$2("To avoid scope ambiguity, the default slot should also use "+"<template> syntax when there are other named slots.",slotBinding$1);}}// add the component's children to its default slotvarslots=el.scopedSlots||(el.scopedSlots={});varref$1=getSlotName(slotBinding$1);varname$1=ref$1.name;vardynamic$1=ref$1.dynamic;varslotContainer=slots[name$1]=createASTElement('template',[],el);slotContainer.slotTarget=name$1;slotContainer.slotTargetDynamic=dynamic$1;slotContainer.children=el.children.filter(function(c){if(!c.slotScope){c.parent=slotContainer;returntrue}});slotContainer.slotScope=slotBinding$1.value||emptySlotScopeToken;// remove children as they are returned from scopedSlots nowel.children=[];// mark el non-plain so data gets generatedel.plain=false;}}}}functiongetSlotName(binding){varname=binding.name.replace(slotRE,'');if(!name){if(binding.name[0]!=='#'){name='default';}else{warn$2("v-slot shorthand syntax requires a slot name.",binding);}}returndynamicArgRE.test(name)// dynamic [name]?{name:name.slice(1,-1),dynamic:true}// static name:{name:("\""+name+"\""),dynamic:false}}// handle <slot/> outletsfunctionprocessSlotOutlet(el){if(el.tag==='slot'){el.slotName=getBindingAttr(el,'name');if(el.key){warn$2("`key` does not work on <slot> because slots are abstract outlets "+"and can possibly expand into multiple elements. "+"Use the key on a wrapping element instead.",getRawBindingAttr(el,'key'));}}}functionprocessComponent(el){varbinding;if((binding=getBindingAttr(el,'is'))){el.component=binding;}if(getAndRemoveAttr(el,'inline-template')!=null){el.inlineTemplate=true;}}functionprocessAttrs(el){varlist=el.attrsList;vari,l,name,rawName,value,modifiers,syncGen,isDynamic;for(i=0,l=list.length;i<l;i++){name=rawName=list[i].name;value=list[i].value;if(dirRE.test(name)){// mark element as dynamicel.hasBindings=true;// modifiersmodifiers=parseModifiers(name.replace(dirRE,''));// support .foo shorthand syntax for the .prop modifierif(modifiers){name=name.replace(modifierRE,'');}if(bindRE.test(name)){// v-bindname=name.replace(bindRE,'');value=parseFilters(value);isDynamic=dynamicArgRE.test(name);if(isDynamic){name=name.slice(1,-1);}if(value.trim().length===0){warn$2(("The value for a v-bind expression cannot be empty. Found in \"v-bind:"+name+"\""));}if(modifiers){if(modifiers.prop&&!isDynamic){name=camelize(name);if(name==='innerHtml'){name='innerHTML';}}if(modifiers.camel&&!isDynamic){name=camelize(name);}if(modifiers.sync){syncGen=genAssignmentCode(value,"$event");if(!isDynamic){addHandler(el,("update:"+(camelize(name))),syncGen,null,false,warn$2,list[i]);if(hyphenate(name)!==camelize(name)){addHandler(el,("update:"+(hyphenate(name))),syncGen,null,false,warn$2,list[i]);}}else{// handler w/ dynamic event nameaddHandler(el,("\"update:\"+("+name+")"),syncGen,null,false,warn$2,list[i],true// dynamic);}}}if((modifiers&&modifiers.prop)||(!el.component&&platformMustUseProp(el.tag,el.attrsMap.type,name))){addProp(el,name,value,list[i],isDynamic);}else{addAttr(el,name,value,list[i],isDynamic);}}elseif(onRE.test(name)){// v-onname=name.replace(onRE,'');isDynamic=dynamicArgRE.test(name);if(isDynamic){name=name.slice(1,-1);}addHandler(el,name,value,modifiers,false,warn$2,list[i],isDynamic);}else{// normal directivesname=name.replace(dirRE,'');// parse argvarargMatch=name.match(argRE);vararg=argMatch&&argMatch[1];isDynamic=false;if(arg){name=name.slice(0,-(arg.length+1));if(dynamicArgRE.test(arg)){arg=arg.slice(1,-1);isDynamic=true;}}addDirective(el,name,rawName,value,arg,isDynamic,modifiers,list[i]);if(name==='model'){checkForAliasModel(el,value);}}}else{// literal attribute{varres=parseText(value,delimiters);if(res){warn$2(name+"=\""+value+"\": "+'Interpolation inside attributes has been removed. '+'Use v-bind or the colon shorthand instead. For example, '+'instead of <div id="{{ val }}">, use <div :id="val">.',list[i]);}}addAttr(el,name,JSON.stringify(value),list[i]);// #6887 firefox doesn't update muted state if set via attribute// even immediately after element creationif(!el.component&&name==='muted'&&platformMustUseProp(el.tag,el.attrsMap.type,name)){addProp(el,name,'true',list[i]);}}}}functioncheckInFor(el){varparent=el;while(parent){if(parent.for!==undefined){returntrue}parent=parent.parent;}returnfalse}functionparseModifiers(name){varmatch=name.match(modifierRE);if(match){varret={};match.forEach(function(m){ret[m.slice(1)]=true;});returnret}}functionmakeAttrsMap(attrs){varmap={};for(vari=0,l=attrs.length;i<l;i++){if(map[attrs[i].name]&&!isIE&&!isEdge){warn$2('duplicate attribute: '+attrs[i].name,attrs[i]);}map[attrs[i].name]=attrs[i].value;}returnmap}// for script (e.g. type="x/template") or style, do not decode contentfunctionisTextTag(el){returnel.tag==='script'||el.tag==='style'}functionisForbiddenTag(el){return(el.tag==='style'||(el.tag==='script'&&(!el.attrsMap.type||el.attrsMap.type==='text/javascript')))}varieNSBug=/^xmlns:NS\d+/;varieNSPrefix=/^NS\d+:/;/* istanbul ignore next */functionguardIESVGBug(attrs){varres=[];for(vari=0;i<attrs.length;i++){varattr=attrs[i];if(!ieNSBug.test(attr.name)){attr.name=attr.name.replace(ieNSPrefix,'');res.push(attr);}}returnres}functioncheckForAliasModel(el,value){var_el=el;while(_el){if(_el.for&&_el.alias===value){warn$2("<"+(el.tag)+" v-model=\""+value+"\">: "+"You are binding v-model directly to a v-for iteration alias. "+"This will not be able to modify the v-for source array because "+"writing to the alias is like modifying a function local variable. "+"Consider using an array of objects and use v-model on an object property instead.",el.rawAttrsMap['v-model']);}_el=_el.parent;}}/* */functionpreTransformNode(el,options){if(el.tag==='input'){varmap=el.attrsMap;if(!map['v-model']){return}vartypeBinding;if(map[':type']||map['v-bind:type']){typeBinding=getBindingAttr(el,'type');}if(!map.type&&!typeBinding&&map['v-bind']){typeBinding="("+(map['v-bind'])+").type";}if(typeBinding){varifCondition=getAndRemoveAttr(el,'v-if',true);varifConditionExtra=ifCondition?("&&("+ifCondition+")"):"";varhasElse=getAndRemoveAttr(el,'v-else',true)!=null;varelseIfCondition=getAndRemoveAttr(el,'v-else-if',true);// 1. checkboxvarbranch0=cloneASTElement(el);// process for on the main nodeprocessFor(branch0);addRawAttr(branch0,'type','checkbox');processElement(branch0,options);branch0.processed=true;// prevent it from double-processedbranch0.if="("+typeBinding+")==='checkbox'"+ifConditionExtra;addIfCondition(branch0,{exp:branch0.if,block:branch0});// 2. add radio else-if conditionvarbranch1=cloneASTElement(el);getAndRemoveAttr(branch1,'v-for',true);addRawAttr(branch1,'type','radio');processElement(branch1,options);addIfCondition(branch0,{exp:"("+typeBinding+")==='radio'"+ifConditionExtra,block:branch1});// 3. othervarbranch2=cloneASTElement(el);getAndRemoveAttr(branch2,'v-for',true);addRawAttr(branch2,':type',typeBinding);processElement(branch2,options);addIfCondition(branch0,{exp:ifCondition,block:branch2});if(hasElse){branch0.else=true;}elseif(elseIfCondition){branch0.elseif=elseIfCondition;}returnbranch0}}}functioncloneASTElement(el){returncreateASTElement(el.tag,el.attrsList.slice(),el.parent)}varmodel$1={preTransformNode:preTransformNode};varmodules$1=[klass$1,style$1,model$1];/* */functiontext(el,dir){if(dir.value){addProp(el,'textContent',("_s("+(dir.value)+")"),dir);}}/* */functionhtml(el,dir){if(dir.value){addProp(el,'innerHTML',("_s("+(dir.value)+")"),dir);}}vardirectives$1={model:model,text:text,html:html};/* */varbaseOptions={expectHTML:true,modules:modules$1,directives:directives$1,isPreTag:isPreTag,isUnaryTag:isUnaryTag,mustUseProp:mustUseProp,canBeLeftOpenTag:canBeLeftOpenTag,isReservedTag:isReservedTag,getTagNamespace:getTagNamespace,staticKeys:genStaticKeys(modules$1)};/* */varisStaticKey;varisPlatformReservedTag;vargenStaticKeysCached=cached(genStaticKeys$1);/** * Goal of the optimizer: walk the generated template AST tree * and detect sub-trees that are purely static, i.e. parts of * the DOM that never needs to change. * * Once we detect these sub-trees, we can: * * 1. Hoist them into constants, so that we no longer need to * create fresh nodes for them on each re-render; * 2. Completely skip them in the patching process. */functionoptimize(root,options){if(!root){return}isStaticKey=genStaticKeysCached(options.staticKeys||'');isPlatformReservedTag=options.isReservedTag||no;// first pass: mark all non-static nodes.markStatic$1(root);// second pass: mark static roots.markStaticRoots(root,false);}functiongenStaticKeys$1(keys){returnmakeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap'+(keys?','+keys:''))}functionmarkStatic$1(node){node.static=isStatic(node);if(node.type===1){// do not make component slot content static. this avoids// 1. components not able to mutate slot nodes// 2. static slot content fails for hot-reloadingif(!isPlatformReservedTag(node.tag)&&node.tag!=='slot'&&node.attrsMap['inline-template']==null){return}for(vari=0,l=node.children.length;i<l;i++){varchild=node.children[i];markStatic$1(child);if(!child.static){node.static=false;}}if(node.ifConditions){for(vari$1=1,l$1=node.ifConditions.length;i$1<l$1;i$1++){varblock=node.ifConditions[i$1].block;markStatic$1(block);if(!block.static){node.static=false;}}}}}functionmarkStaticRoots(node,isInFor){if(node.type===1){if(node.static||node.once){node.staticInFor=isInFor;}// For a node to qualify as a static root, it should have children that// are not just static text. Otherwise the cost of hoisting out will// outweigh the benefits and it's better off to just always render it fresh.if(node.static&&node.children.length&&!(node.children.length===1&&node.children[0].type===3)){node.staticRoot=true;return}else{node.staticRoot=false;}if(node.children){for(vari=0,l=node.children.length;i<l;i++){markStaticRoots(node.children[i],isInFor||!!node.for);}}if(node.ifConditions){for(vari$1=1,l$1=node.ifConditions.length;i$1<l$1;i$1++){markStaticRoots(node.ifConditions[i$1].block,isInFor);}}}}functionisStatic(node){if(node.type===2){// expressionreturnfalse}if(node.type===3){// textreturntrue}return!!(node.pre||(!node.hasBindings&&// no dynamic bindings!node.if&&!node.for&&// not v-if or v-for or v-else!isBuiltInTag(node.tag)&&// not a built-inisPlatformReservedTag(node.tag)&&// not a component!isDirectChildOfTemplateFor(node)&&Object.keys(node).every(isStaticKey)))}functionisDirectChildOfTemplateFor(node){while(node.parent){node=node.parent;if(node.tag!=='template'){returnfalse}if(node.for){returntrue}}returnfalse}/* */varfnExpRE=/^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;varfnInvokeRE=/\([^)]*?\);*$/;varsimplePathRE=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;// KeyboardEvent.keyCode aliasesvarkeyCodes={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,'delete':[8,46]};// KeyboardEvent.key aliasesvarkeyNames={// #7880: IE11 and Edge use `Esc` for Escape key name.esc:['Esc','Escape'],tab:'Tab',enter:'Enter',// #9112: IE11 uses `Spacebar` for Space key name.space:[' ','Spacebar'],// #7806: IE11 uses key names without `Arrow` prefix for arrow keys.up:['Up','ArrowUp'],left:['Left','ArrowLeft'],right:['Right','ArrowRight'],down:['Down','ArrowDown'],// #9112: IE11 uses `Del` for Delete key name.'delete':['Backspace','Delete','Del']};// #4868: modifiers that prevent the execution of the listener// need to explicitly return null so that we can determine whether to remove// the listener for .oncevargenGuard=function(condition){return("if("+condition+")return null;");};varmodifierCode={stop:'$event.stopPropagation();',prevent:'$event.preventDefault();',self:genGuard("$event.target !== $event.currentTarget"),ctrl:genGuard("!$event.ctrlKey"),shift:genGuard("!$event.shiftKey"),alt:genGuard("!$event.altKey"),meta:genGuard("!$event.metaKey"),left:genGuard("'button' in $event && $event.button !== 0"),middle:genGuard("'button' in $event && $event.button !== 1"),right:genGuard("'button' in $event && $event.button !== 2")};functiongenHandlers(events,isNative){varprefix=isNative?'nativeOn:':'on:';varstaticHandlers="";vardynamicHandlers="";for(varnameinevents){varhandlerCode=genHandler(events[name]);if(events[name]&&events[name].dynamic){dynamicHandlers+=name+","+handlerCode+",";}else{staticHandlers+="\""+name+"\":"+handlerCode+",";}}staticHandlers="{"+(staticHandlers.slice(0,-1))+"}";if(dynamicHandlers){returnprefix+"_d("+staticHandlers+",["+(dynamicHandlers.slice(0,-1))+"])"}else{returnprefix+staticHandlers}}functiongenHandler(handler){if(!handler){return'function(){}'}if(Array.isArray(handler)){return("["+(handler.map(function(handler){returngenHandler(handler);}).join(','))+"]")}varisMethodPath=simplePathRE.test(handler.value);varisFunctionExpression=fnExpRE.test(handler.value);varisFunctionInvocation=simplePathRE.test(handler.value.replace(fnInvokeRE,''));if(!handler.modifiers){if(isMethodPath||isFunctionExpression){returnhandler.value}return("function($event){"+(isFunctionInvocation?("return "+(handler.value)):handler.value)+"}")// inline statement}else{varcode='';vargenModifierCode='';varkeys=[];for(varkeyinhandler.modifiers){if(modifierCode[key]){genModifierCode+=modifierCode[key];// left/rightif(keyCodes[key]){keys.push(key);}}elseif(key==='exact'){varmodifiers=(handler.modifiers);genModifierCode+=genGuard(['ctrl','shift','alt','meta'].filter(function(keyModifier){return!modifiers[keyModifier];}).map(function(keyModifier){return("$event."+keyModifier+"Key");}).join('||'));}else{keys.push(key);}}if(keys.length){code+=genKeyFilter(keys);}// Make sure modifiers like prevent and stop get executed after key filteringif(genModifierCode){code+=genModifierCode;}varhandlerCode=isMethodPath?("return "+(handler.value)+".apply(null, arguments)"):isFunctionExpression?("return ("+(handler.value)+").apply(null, arguments)"):isFunctionInvocation?("return "+(handler.value)):handler.value;return("function($event){"+code+handlerCode+"}")}}functiongenKeyFilter(keys){return(// make sure the key filters only apply to KeyboardEvents// #9441: can't use 'keyCode' in $event because Chrome autofill fires fake// key events that do not have keyCode property..."if(!$event.type.indexOf('key')&&"+(keys.map(genFilterCode).join('&&'))+")return null;")}functiongenFilterCode(key){varkeyVal=parseInt(key,10);if(keyVal){return("$event.keyCode!=="+keyVal)}varkeyCode=keyCodes[key];varkeyName=keyNames[key];return("_k($event.keyCode,"+(JSON.stringify(key))+","+(JSON.stringify(keyCode))+","+"$event.key,"+""+(JSON.stringify(keyName))+")")}/* */functionon(el,dir){if(dir.modifiers){warn("v-on without argument does not support modifiers.");}el.wrapListeners=function(code){return("_g("+code+","+(dir.value)+")");};}/* */functionbind$1(el,dir){el.wrapData=function(code){return("_b("+code+",'"+(el.tag)+"',"+(dir.value)+","+(dir.modifiers&&dir.modifiers.prop?'true':'false')+(dir.modifiers&&dir.modifiers.sync?',true':'')+")")};}/* */varbaseDirectives={on:on,bind:bind$1,cloak:noop};/* */varCodegenState=functionCodegenState(options){this.options=options;this.warn=options.warn||baseWarn;this.transforms=pluckModuleFunction(options.modules,'transformCode');this.dataGenFns=pluckModuleFunction(options.modules,'genData');this.directives=extend(extend({},baseDirectives),options.directives);varisReservedTag=options.isReservedTag||no;this.maybeComponent=function(el){return!!el.component||!isReservedTag(el.tag);};this.onceId=0;this.staticRenderFns=[];this.pre=false;};functiongenerate(ast,options){varstate=newCodegenState(options);// fix #11483, Root level <script> tags should not be rendered.varcode=ast?(ast.tag==='script'?'null':genElement(ast,state)):'_c("div")';return{render:("with(this){return "+code+"}"),staticRenderFns:state.staticRenderFns}}functiongenElement(el,state){if(el.parent){el.pre=el.pre||el.parent.pre;}if(el.staticRoot&&!el.staticProcessed){returngenStatic(el,state)}elseif(el.once&&!el.onceProcessed){returngenOnce(el,state)}elseif(el.for&&!el.forProcessed){returngenFor(el,state)}elseif(el.if&&!el.ifProcessed){returngenIf(el,state)}elseif(el.tag==='template'&&!el.slotTarget&&!state.pre){returngenChildren(el,state)||'void 0'}elseif(el.tag==='slot'){returngenSlot(el,state)}else{// component or elementvarcode;if(el.component){code=genComponent(el.component,el,state);}else{vardata;if(!el.plain||(el.pre&&state.maybeComponent(el))){data=genData$2(el,state);}varchildren=el.inlineTemplate?null:genChildren(el,state,true);code="_c('"+(el.tag)+"'"+(data?(","+data):'')+(children?(","+children):'')+")";}// module transformsfor(vari=0;i<state.transforms.length;i++){code=state.transforms[i](el,code);}returncode}}// hoist static sub-trees outfunctiongenStatic(el,state){el.staticProcessed=true;// Some elements (templates) need to behave differently inside of a v-pre// node. All pre nodes are static roots, so we can use this as a base_location to// wrap a state change and reset it upon exiting the pre node.varoriginalPreState=state.pre;if(el.pre){state.pre=el.pre;}state.staticRenderFns.push(("with(this){return "+(genElement(el,state))+"}"));state.pre=originalPreState;return("_m("+(state.staticRenderFns.length-1)+(el.staticInFor?',true':'')+")")}// v-oncefunctiongenOnce(el,state){el.onceProcessed=true;if(el.if&&!el.ifProcessed){returngenIf(el,state)}elseif(el.staticInFor){varkey='';varparent=el.parent;while(parent){if(parent.for){key=parent.key;break}parent=parent.parent;}if(!key){state.warn("v-once can only be used inside v-for that is keyed. ",el.rawAttrsMap['v-once']);returngenElement(el,state)}return("_o("+(genElement(el,state))+","+(state.onceId++)+","+key+")")}else{returngenStatic(el,state)}}functiongenIf(el,state,altGen,altEmpty){el.ifProcessed=true;// avoid recursionreturngenIfConditions(el.ifConditions.slice(),state,altGen,altEmpty)}functiongenIfConditions(conditions,state,altGen,altEmpty){if(!conditions.length){returnaltEmpty||'_e()'}varcondition=conditions.shift();if(condition.exp){return("("+(condition.exp)+")?"+(genTernaryExp(condition.block))+":"+(genIfConditions(conditions,state,altGen,altEmpty)))}else{return(""+(genTernaryExp(condition.block)))}// v-if with v-once should generate code like (a)?_m(0):_m(1)functiongenTernaryExp(el){returnaltGen?altGen(el,state):el.once?genOnce(el,state):genElement(el,state)}}functiongenFor(el,state,altGen,altHelper){varexp=el.for;varalias=el.alias;variterator1=el.iterator1?(","+(el.iterator1)):'';variterator2=el.iterator2?(","+(el.iterator2)):'';if(state.maybeComponent(el)&&el.tag!=='slot'&&el.tag!=='template'&&!el.key){state.warn("<"+(el.tag)+" v-for=\""+alias+" in "+exp+"\">: component lists rendered with "+"v-for should have explicit keys. "+"See https://vuejs.org/guide/list.html#key for more info.",el.rawAttrsMap['v-for'],true/* tip */);}el.forProcessed=true;// avoid recursionreturn(altHelper||'_l')+"(("+exp+"),"+"function("+alias+iterator1+iterator2+"){"+"return "+((altGen||genElement)(el,state))+'})'}functiongenData$2(el,state){vardata='{';// directives first.// directives may mutate the el's other properties before they are generated.vardirs=genDirectives(el,state);if(dirs){data+=dirs+',';}// keyif(el.key){data+="key:"+(el.key)+",";}// refif(el.ref){data+="ref:"+(el.ref)+",";}if(el.refInFor){data+="refInFor:true,";}// preif(el.pre){data+="pre:true,";}// record original tag name for components using "is" attributeif(el.component){data+="tag:\""+(el.tag)+"\",";}// module data generation functionsfor(vari=0;i<state.dataGenFns.length;i++){data+=state.dataGenFns[i](el);}// attributesif(el.attrs){data+="attrs:"+(genProps(el.attrs))+",";}// DOM propsif(el.props){data+="domProps:"+(genProps(el.props))+",";}// event handlersif(el.events){data+=(genHandlers(el.events,false))+",";}if(el.nativeEvents){data+=(genHandlers(el.nativeEvents,true))+",";}// slot target// only for non-scoped slotsif(el.slotTarget&&!el.slotScope){data+="slot:"+(el.slotTarget)+",";}// scoped slotsif(el.scopedSlots){data+=(genScopedSlots(el,el.scopedSlots,state))+",";}// component v-modelif(el.model){data+="model:{value:"+(el.model.value)+",callback:"+(el.model.callback)+",expression:"+(el.model.expression)+"},";}// inline-templateif(el.inlineTemplate){varinlineTemplate=genInlineTemplate(el,state);if(inlineTemplate){data+=inlineTemplate+",";}}data=data.replace(/,$/,'')+'}';// v-bind dynamic argument wrap// v-bind with dynamic arguments must be applied using the same v-bind object// merge helper so that class/style/mustUseProp attrs are handled correctly.if(el.dynamicAttrs){data="_b("+data+",\""+(el.tag)+"\","+(genProps(el.dynamicAttrs))+")";}// v-bind data wrapif(el.wrapData){data=el.wrapData(data);}// v-on data wrapif(el.wrapListeners){data=el.wrapListeners(data);}returndata}functiongenDirectives(el,state){vardirs=el.directives;if(!dirs){return}varres='directives:[';varhasRuntime=false;vari,l,dir,needRuntime;for(i=0,l=dirs.length;i<l;i++){dir=dirs[i];needRuntime=true;vargen=state.directives[dir.name];if(gen){// compile-time directive that manipulates AST.// returns true if it also needs a runtime counterpart.needRuntime=!!gen(el,dir,state.warn);}if(needRuntime){hasRuntime=true;res+="{name:\""+(dir.name)+"\",rawName:\""+(dir.rawName)+"\""+(dir.value?(",value:("+(dir.value)+"),expression:"+(JSON.stringify(dir.value))):'')+(dir.arg?(",arg:"+(dir.isDynamicArg?dir.arg:("\""+(dir.arg)+"\""))):'')+(dir.modifiers?(",modifiers:"+(JSON.stringify(dir.modifiers))):'')+"},";}}if(hasRuntime){returnres.slice(0,-1)+']'}}functiongenInlineTemplate(el,state){varast=el.children[0];if(el.children.length!==1||ast.type!==1){state.warn('Inline-template components must have exactly one child element.',{start:el.start});}if(ast&&ast.type===1){varinlineRenderFns=generate(ast,state.options);return("inlineTemplate:{render:function(){"+(inlineRenderFns.render)+"},staticRenderFns:["+(inlineRenderFns.staticRenderFns.map(function(code){return("function(){"+code+"}");}).join(','))+"]}")}}functiongenScopedSlots(el,slots,state){// by default scoped slots are considered "stable", this allows child// components with only scoped slots to skip forced updates from parent.// but in some cases we have to bail-out of this optimization// for example if the slot contains dynamic names, has v-if or v-for on them...varneedsForceUpdate=el.for||Object.keys(slots).some(function(key){varslot=slots[key];return(slot.slotTargetDynamic||slot.if||slot.for||containsSlotChild(slot)// is passing down slot from parent which may be dynamic)});// #9534: if a component with scoped slots is inside a conditional branch,// it's possible for the same component to be reused but with different// compiled slot content. To avoid that, we generate a unique key based on// the generated code of all the slot contents.varneedsKey=!!el.if;// OR when it is inside another scoped slot or v-for (the reactivity may be// disconnected due to the intermediate scope variable)// #9438, #9506// TODO: this can be further optimized by properly analyzing in-scope bindings// and skip force updating ones that do not actually use scope variables.if(!needsForceUpdate){varparent=el.parent;while(parent){if((parent.slotScope&&parent.slotScope!==emptySlotScopeToken)||parent.for){needsForceUpdate=true;break}if(parent.if){needsKey=true;}parent=parent.parent;}}vargeneratedSlots=Object.keys(slots).map(function(key){returngenScopedSlot(slots[key],state);}).join(',');return("scopedSlots:_u(["+generatedSlots+"]"+(needsForceUpdate?",null,true":"")+(!needsForceUpdate&&needsKey?(",null,false,"+(hash(generatedSlots))):"")+")")}functionhash(str){varhash=5381;vari=str.length;while(i){hash=(hash*33)^str.charCodeAt(--i);}returnhash>>>0}functioncontainsSlotChild(el){if(el.type===1){if(el.tag==='slot'){returntrue}returnel.children.some(containsSlotChild)}returnfalse}functiongenScopedSlot(el,state){varisLegacySyntax=el.attrsMap['slot-scope'];if(el.if&&!el.ifProcessed&&!isLegacySyntax){returngenIf(el,state,genScopedSlot,"null")}if(el.for&&!el.forProcessed){returngenFor(el,state,genScopedSlot)}varslotScope=el.slotScope===emptySlotScopeToken?"":String(el.slotScope);varfn="function("+slotScope+"){"+"return "+(el.tag==='template'?el.if&&isLegacySyntax?("("+(el.if)+")?"+(genChildren(el,state)||'undefined')+":undefined"):genChildren(el,state)||'undefined':genElement(el,state))+"}";// reverse proxy v-slot without scope on this.$slotsvarreverseProxy=slotScope?"":",proxy:true";return("{key:"+(el.slotTarget||"\"default\"")+",fn:"+fn+reverseProxy+"}")}functiongenChildren(el,state,checkSkip,altGenElement,altGenNode){varchildren=el.children;if(children.length){varel$1=children[0];// optimize single v-forif(children.length===1&&el$1.for&&el$1.tag!=='template'&&el$1.tag!=='slot'){varnormalizationType=checkSkip?state.maybeComponent(el$1)?",1":",0":"";return(""+((altGenElement||genElement)(el$1,state))+normalizationType)}varnormalizationType$1=checkSkip?getNormalizationType(children,state.maybeComponent):0;vargen=altGenNode||genNode;return("["+(children.map(function(c){returngen(c,state);}).join(','))+"]"+(normalizationType$1?(","+normalizationType$1):''))}}// determine the normalization needed for the children array.// 0: no normalization needed// 1: simple normalization needed (possible 1-level deep nested array)// 2: full normalization neededfunctiongetNormalizationType(children,maybeComponent){varres=0;for(vari=0;i<children.length;i++){varel=children[i];if(el.type!==1){continue}if(needsNormalization(el)||(el.ifConditions&&el.ifConditions.some(function(c){returnneedsNormalization(c.block);}))){res=2;break}if(maybeComponent(el)||(el.ifConditions&&el.ifConditions.some(function(c){returnmaybeComponent(c.block);}))){res=1;}}returnres}functionneedsNormalization(el){returnel.for!==undefined||el.tag==='template'||el.tag==='slot'}functiongenNode(node,state){if(node.type===1){returngenElement(node,state)}elseif(node.type===3&&node.isComment){returngenComment(node)}else{returngenText(node)}}functiongenText(text){return("_v("+(text.type===2?text.expression// no need for () because already wrapped in _s():transformSpecialNewlines(JSON.stringify(text.text)))+")")}functiongenComment(comment){return("_e("+(JSON.stringify(comment.text))+")")}functiongenSlot(el,state){varslotName=el.slotName||'"default"';varchildren=genChildren(el,state);varres="_t("+slotName+(children?(",function(){return "+children+"}"):'');varattrs=el.attrs||el.dynamicAttrs?genProps((el.attrs||[]).concat(el.dynamicAttrs||[]).map(function(attr){return({// slot props are camelizedname:camelize(attr.name),value:attr.value,dynamic:attr.dynamic});})):null;varbind$$1=el.attrsMap['v-bind'];if((attrs||bind$$1)&&!children){res+=",null";}if(attrs){res+=","+attrs;}if(bind$$1){res+=(attrs?'':',null')+","+bind$$1;}returnres+')'}// componentName is el.component, take it as argument to shun flow's pessimistic refinementfunctiongenComponent(componentName,el,state){varchildren=el.inlineTemplate?null:genChildren(el,state,true);return("_c("+componentName+","+(genData$2(el,state))+(children?(","+children):'')+")")}functiongenProps(props){varstaticProps="";vardynamicProps="";for(vari=0;i<props.length;i++){varprop=props[i];varvalue=transformSpecialNewlines(prop.value);if(prop.dynamic){dynamicProps+=(prop.name)+","+value+",";}else{staticProps+="\""+(prop.name)+"\":"+value+",";}}staticProps="{"+(staticProps.slice(0,-1))+"}";if(dynamicProps){return("_d("+staticProps+",["+(dynamicProps.slice(0,-1))+"])")}else{returnstaticProps}}// #3895, #4268functiontransformSpecialNewlines(text){returntext.replace(/\u2028/g,'\\u2028').replace(/\u2029/g,'\\u2029')}/* */// these keywords should not appear inside expressions, but operators like// typeof, instanceof and in are allowedvarprohibitedKeywordRE=newRegExp('\\b'+('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,'+'super,throw,while,yield,delete,export,import,return,switch,default,'+'extends,finally,continue,debugger,function,arguments').split(',').join('\\b|\\b')+'\\b');// these unary operators should not be used as property/method namesvarunaryOperatorsRE=newRegExp('\\b'+('delete,typeof,void').split(',').join('\\s*\\([^\\)]*\\)|\\b')+'\\s*\\([^\\)]*\\)');// strip strings in expressionsvarstripStringRE=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;// detect problematic expressions in a templatefunctiondetectErrors(ast,warn){if(ast){checkNode(ast,warn);}}functioncheckNode(node,warn){if(node.type===1){for(varnameinnode.attrsMap){if(dirRE.test(name)){varvalue=node.attrsMap[name];if(value){varrange=node.rawAttrsMap[name];if(name==='v-for'){checkFor(node,("v-for=\""+value+"\""),warn,range);}elseif(name==='v-slot'||name[0]==='#'){checkFunctionParameterExpression(value,(name+"=\""+value+"\""),warn,range);}elseif(onRE.test(name)){checkEvent(value,(name+"=\""+value+"\""),warn,range);}else{checkExpression(value,(name+"=\""+value+"\""),warn,range);}}}}if(node.children){for(vari=0;i<node.children.length;i++){checkNode(node.children[i],warn);}}}elseif(node.type===2){checkExpression(node.expression,node.text,warn,node);}}functioncheckEvent(exp,text,warn,range){varstripped=exp.replace(stripStringRE,'');varkeywordMatch=stripped.match(unaryOperatorsRE);if(keywordMatch&&stripped.charAt(keywordMatch.index-1)!=='$'){warn("avoid using JavaScript unary operator as property name: "+"\""+(keywordMatch[0])+"\" in expression "+(text.trim()),range);}checkExpression(exp,text,warn,range);}functioncheckFor(node,text,warn,range){checkExpression(node.for||'',text,warn,range);checkIdentifier(node.alias,'v-for alias',text,warn,range);checkIdentifier(node.iterator1,'v-for iterator',text,warn,range);checkIdentifier(node.iterator2,'v-for iterator',text,warn,range);}functioncheckIdentifier(ident,type,text,warn,range){if(typeofident==='string'){try{newFunction(("var "+ident+"=_"));}catch(e){warn(("invalid "+type+" \""+ident+"\" in expression: "+(text.trim())),range);}}}functioncheckExpression(exp,text,warn,range){try{newFunction(("return "+exp));}catch(e){varkeywordMatch=exp.replace(stripStringRE,'').match(prohibitedKeywordRE);if(keywordMatch){warn("avoid using JavaScript keyword as property name: "+"\""+(keywordMatch[0])+"\"\n Raw expression: "+(text.trim()),range);}else{warn("invalid expression: "+(e.message)+" in\n\n"+" "+exp+"\n\n"+" Raw expression: "+(text.trim())+"\n",range);}}}functioncheckFunctionParameterExpression(exp,text,warn,range){try{newFunction(exp,'');}catch(e){warn("invalid function parameter expression: "+(e.message)+" in\n\n"+" "+exp+"\n\n"+" Raw expression: "+(text.trim())+"\n",range);}}/* */varrange=2;functiongenerateCodeFrame(source,start,end){if(start===void0)start=0;if(end===void0)end=source.length;varlines=source.split(/\r?\n/);varcount=0;varres=[];for(vari=0;i<lines.length;i++){count+=lines[i].length+1;if(count>=start){for(varj=i-range;j<=i+range||end>count;j++){if(j<0||j>=lines.length){continue}res.push((""+(j+1)+(repeat$1(" ",3-String(j+1).length))+"| "+(lines[j])));varlineLength=lines[j].length;if(j===i){// push underlinevarpad=start-(count-lineLength)+1;varlength=end>count?lineLength-pad:end-start;res.push(" | "+repeat$1(" ",pad)+repeat$1("^",length));}elseif(j>i){if(end>count){varlength$1=Math.min(end-count,lineLength);res.push(" | "+repeat$1("^",length$1));}count+=lineLength+1;}}break}}returnres.join('\n')}functionrepeat$1(str,n){varresult='';if(n>0){while(true){// eslint-disable-base_lineif(n&1){result+=str;}n>>>=1;if(n<=0){break}str+=str;}}returnresult}/* */functioncreateFunction(code,errors){try{returnnewFunction(code)}catch(err){errors.push({err:err,code:code});returnnoop}}functioncreateCompileToFunctionFn(compile){varcache=Object.create(null);returnfunctioncompileToFunctions(template,options,vm){options=extend({},options);varwarn$$1=options.warn||warn;deleteoptions.warn;/* istanbul ignore if */{// detect possible CSP restrictiontry{newFunction('return 1');}catch(e){if(e.toString().match(/unsafe-eval|CSP/)){warn$$1('It seems you are using the standalone build of Vue.js in an '+'environment with Content Security Policy that prohibits unsafe-eval. '+'The template compiler cannot work in this environment. Consider '+'relaxing the policy to allow unsafe-eval or pre-compiling your '+'templates into render functions.');}}}// check cachevarkey=options.delimiters?String(options.delimiters)+template:template;if(cache[key]){returncache[key]}// compilevarcompiled=compile(template,options);// check compilation errors/tips{if(compiled.errors&&compiled.errors.length){if(options.outputSourceRange){compiled.errors.forEach(function(e){warn$$1("Error compiling template:\n\n"+(e.msg)+"\n\n"+generateCodeFrame(template,e.start,e.end),vm);});}else{warn$$1("Error compiling template:\n\n"+template+"\n\n"+compiled.errors.map(function(e){return("- "+e);}).join('\n')+'\n',vm);}}if(compiled.tips&&compiled.tips.length){if(options.outputSourceRange){compiled.tips.forEach(function(e){returntip(e.msg,vm);});}else{compiled.tips.forEach(function(msg){returntip(msg,vm);});}}}// turn code into functionsvarres={};varfnGenErrors=[];res.render=createFunction(compiled.render,fnGenErrors);res.staticRenderFns=compiled.staticRenderFns.map(function(code){returncreateFunction(code,fnGenErrors)});// check function generation errors.// this should only happen if there is a bug in the compiler itself.// mostly for codegen development use/* istanbul ignore if */{if((!compiled.errors||!compiled.errors.length)&&fnGenErrors.length){warn$$1("Failed to generate render function:\n\n"+fnGenErrors.map(function(ref){varerr=ref.err;varcode=ref.code;return((err.toString())+" in\n\n"+code+"\n");}).join('\n'),vm);}}return(cache[key]=res)}}/* */functioncreateCompilerCreator(baseCompile){returnfunctioncreateCompiler(baseOptions){functioncompile(template,options){varfinalOptions=Object.create(baseOptions);varerrors=[];vartips=[];varwarn=function(msg,range,tip){(tip?tips:errors).push(msg);};if(options){if(options.outputSourceRange){// $flow-disable-base_linevarleadingSpaceLength=template.match(/^\s*/)[0].length;warn=function(msg,range,tip){vardata={msg:msg};if(range){if(range.start!=null){data.start=range.start+leadingSpaceLength;}if(range.end!=null){data.end=range.end+leadingSpaceLength;}}(tip?tips:errors).push(data);};}// merge custom modulesif(options.modules){finalOptions.modules=(baseOptions.modules||[]).concat(options.modules);}// merge custom directivesif(options.directives){finalOptions.directives=extend(Object.create(baseOptions.directives||null),options.directives);}// copy other optionsfor(varkeyinoptions){if(key!=='modules'&&key!=='directives'){finalOptions[key]=options[key];}}}finalOptions.warn=warn;varcompiled=baseCompile(template.trim(),finalOptions);{detectErrors(compiled.ast,warn);}compiled.errors=errors;compiled.tips=tips;returncompiled}return{compile:compile,compileToFunctions:createCompileToFunctionFn(compile)}}}/* */// `createCompilerCreator` allows creating compilers that use alternative// parser/optimizer/codegen, e.g the SSR optimizing compiler.// Here we just export a default compiler using the default parts.varcreateCompiler=createCompilerCreator(functionbaseCompile(template,options){varast=parse(template.trim(),options);if(options.optimize!==false){optimize(ast,options);}varcode=generate(ast,options);return{ast:ast,render:code.render,staticRenderFns:code.staticRenderFns}});/* */varref$1=createCompiler(baseOptions);varcompile=ref$1.compile;varcompileToFunctions=ref$1.compileToFunctions;/* */// check whether current browser encodes a char inside attribute valuesvardiv;functiongetShouldDecode(href){div=div||document.createElement('div');div.innerHTML=href?"<a href=\"\n\"/>":"<div a=\"\n\"/>";returndiv.innerHTML.indexOf(' ')>0}// #3663: IE encodes newlines inside attribute values while other browsers don'tvarshouldDecodeNewlines=inBrowser?getShouldDecode(false):false;// #6828: chrome encodes content in a[href]varshouldDecodeNewlinesForHref=inBrowser?getShouldDecode(true):false;/* */varidToTemplate=cached(function(id){varel=query(id);returnel&&el.innerHTML});varmount=Vue.prototype.$mount;Vue.prototype.$mount=function(el,hydrating){el=el&&query(el);/* istanbul ignore if */if(el===document.body||el===document.documentElement){warn("Do not mount Vue to <html> or <body> - mount to normal elements instead.");returnthis}varoptions=this.$options;// resolve template/el and convert to render functionif(!options.render){vartemplate=options.template;if(template){if(typeoftemplate==='string'){if(template.charAt(0)==='#'){template=idToTemplate(template);/* istanbul ignore if */if(!template){warn(("Template element not found or is empty: "+(options.template)),this);}}}elseif(template.nodeType){template=template.innerHTML;}else{{warn('invalid template option:'+template,this);}returnthis}}elseif(el){template=getOuterHTML(el);}if(template){/* istanbul ignore if */if(config.performance&&mark){mark('compile');}varref=compileToFunctions(template,{outputSourceRange:"development"!=='production',shouldDecodeNewlines:shouldDecodeNewlines,shouldDecodeNewlinesForHref:shouldDecodeNewlinesForHref,delimiters:options.delimiters,comments:options.comments},this);varrender=ref.render;varstaticRenderFns=ref.staticRenderFns;options.render=render;options.staticRenderFns=staticRenderFns;/* istanbul ignore if */if(config.performance&&mark){mark('compile end');measure(("vue "+(this._name)+" compile"),'compile','compile end');}}}returnmount.call(this,el,hydrating)};/** * Get outerHTML of elements, taking care * of SVG elements in IE as well. */functiongetOuterHTML(el){if(el.outerHTML){returnel.outerHTML}else{varcontainer=document.createElement('div');container.appendChild(el.cloneNode(true));returncontainer.innerHTML}}Vue.compile=compileToFunctions;returnVue;}));