.',
+ 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 creation
+ if (!el.component &&
+ name === 'muted' &&
+ platformMustUseProp(el.tag, el.attrsMap.type, name)) {
+ addProp(el, name, 'true', list[i]);
+ }
+ }
+ }
+ }
+
+ function checkInFor (el) {
+ var parent = el;
+ while (parent) {
+ if (parent.for !== undefined) {
+ return true
+ }
+ parent = parent.parent;
+ }
+ return false
+ }
+
+ function parseModifiers (name) {
+ var match = name.match(modifierRE);
+ if (match) {
+ var ret = {};
+ match.forEach(function (m) { ret[m.slice(1)] = true; });
+ return ret
+ }
+ }
+
+ function makeAttrsMap (attrs) {
+ var map = {};
+ for (var i = 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;
+ }
+ return map
+ }
+
+ // for script (e.g. type="x/template") or style, do not decode content
+ function isTextTag (el) {
+ return el.tag === 'script' || el.tag === 'style'
+ }
+
+ function isForbiddenTag (el) {
+ return (
+ el.tag === 'style' ||
+ (el.tag === 'script' && (
+ !el.attrsMap.type ||
+ el.attrsMap.type === 'text/javascript'
+ ))
+ )
+ }
+
+ var ieNSBug = /^xmlns:NS\d+/;
+ var ieNSPrefix = /^NS\d+:/;
+
+ /* istanbul ignore next */
+ function guardIESVGBug (attrs) {
+ var res = [];
+ for (var i = 0; i < attrs.length; i++) {
+ var attr = attrs[i];
+ if (!ieNSBug.test(attr.name)) {
+ attr.name = attr.name.replace(ieNSPrefix, '');
+ res.push(attr);
+ }
+ }
+ return res
+ }
+
+ function checkForAliasModel (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;
+ }
+ }
+
+ /* */
+
+ function preTransformNode (el, options) {
+ if (el.tag === 'input') {
+ var map = el.attrsMap;
+ if (!map['v-model']) {
+ return
+ }
+
+ var typeBinding;
+ 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) {
+ var ifCondition = getAndRemoveAttr(el, 'v-if', true);
+ var ifConditionExtra = ifCondition ? ("&&(" + ifCondition + ")") : "";
+ var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
+ var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
+ // 1. checkbox
+ var branch0 = cloneASTElement(el);
+ // process for on the main node
+ processFor(branch0);
+ addRawAttr(branch0, 'type', 'checkbox');
+ processElement(branch0, options);
+ branch0.processed = true; // prevent it from double-processed
+ branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra;
+ addIfCondition(branch0, {
+ exp: branch0.if,
+ block: branch0
+ });
+ // 2. add radio else-if condition
+ var branch1 = cloneASTElement(el);
+ getAndRemoveAttr(branch1, 'v-for', true);
+ addRawAttr(branch1, 'type', 'radio');
+ processElement(branch1, options);
+ addIfCondition(branch0, {
+ exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra,
+ block: branch1
+ });
+ // 3. other
+ var branch2 = 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;
+ } else if (elseIfCondition) {
+ branch0.elseif = elseIfCondition;
+ }
+
+ return branch0
+ }
+ }
+ }
+
+ function cloneASTElement (el) {
+ return createASTElement(el.tag, el.attrsList.slice(), el.parent)
+ }
+
+ var model$1 = {
+ preTransformNode: preTransformNode
+ };
+
+ var modules$1 = [
+ klass$1,
+ style$1,
+ model$1
+ ];
+
+ /* */
+
+ function text (el, dir) {
+ if (dir.value) {
+ addProp(el, 'textContent', ("_s(" + (dir.value) + ")"), dir);
+ }
+ }
+
+ /* */
+
+ function html (el, dir) {
+ if (dir.value) {
+ addProp(el, 'innerHTML', ("_s(" + (dir.value) + ")"), dir);
+ }
+ }
+
+ var directives$1 = {
+ model: model,
+ text: text,
+ html: html
+ };
+
+ /* */
+
+ var baseOptions = {
+ expectHTML: true,
+ modules: modules$1,
+ directives: directives$1,
+ isPreTag: isPreTag,
+ isUnaryTag: isUnaryTag,
+ mustUseProp: mustUseProp,
+ canBeLeftOpenTag: canBeLeftOpenTag,
+ isReservedTag: isReservedTag,
+ getTagNamespace: getTagNamespace,
+ staticKeys: genStaticKeys(modules$1)
+ };
+
+ /* */
+
+ var isStaticKey;
+ var isPlatformReservedTag;
+
+ var genStaticKeysCached = 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.
+ */
+ function optimize (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);
+ }
+
+ function genStaticKeys$1 (keys) {
+ return makeMap(
+ 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +
+ (keys ? ',' + keys : '')
+ )
+ }
+
+ function markStatic$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-reloading
+ if (
+ !isPlatformReservedTag(node.tag) &&
+ node.tag !== 'slot' &&
+ node.attrsMap['inline-template'] == null
+ ) {
+ return
+ }
+ for (var i = 0, l = node.children.length; i < l; i++) {
+ var child = node.children[i];
+ markStatic$1(child);
+ if (!child.static) {
+ node.static = false;
+ }
+ }
+ if (node.ifConditions) {
+ for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
+ var block = node.ifConditions[i$1].block;
+ markStatic$1(block);
+ if (!block.static) {
+ node.static = false;
+ }
+ }
+ }
+ }
+ }
+
+ function markStaticRoots (node, isInFor) {
+ //s*g*g-天*禹*老*师
+ 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 (var i = 0, l = node.children.length; i < l; i++) {
+ markStaticRoots(node.children[i], isInFor || !!node.for);
+ }
+ }
+ if (node.ifConditions) {
+ for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
+ markStaticRoots(node.ifConditions[i$1].block, isInFor);
+ }
+ }
+ }
+ }
+
+ function isStatic (node) {
+ if (node.type === 2) { // expression
+ return false
+ }
+ if (node.type === 3) { // text
+ return true
+ }
+ 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-in
+ isPlatformReservedTag(node.tag) && // not a component
+ !isDirectChildOfTemplateFor(node) &&
+ Object.keys(node).every(isStaticKey)
+ ))
+ }
+
+ function isDirectChildOfTemplateFor (node) {
+ while (node.parent) {
+ node = node.parent;
+ if (node.tag !== 'template') {
+ return false
+ }
+ if (node.for) {
+ return true
+ }
+ }
+ return false
+ }
+
+ /* */
+
+ var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
+ var fnInvokeRE = /\([^)]*?\);*$/;
+ var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
+
+ // KeyboardEvent.keyCode aliases
+ var keyCodes = {
+ esc: 27,
+ tab: 9,
+ enter: 13,
+ space: 32,
+ up: 38,
+ left: 37,
+ right: 39,
+ down: 40,
+ 'delete': [8, 46]
+ };
+
+ // KeyboardEvent.key aliases
+ var keyNames = {
+ // #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 .once
+ var genGuard = function (condition) { return ("if(" + condition + ")return null;"); };
+
+ var modifierCode = {
+ 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")
+ };
+
+ function genHandlers (
+ events,
+ isNative
+ ) {
+ var prefix = isNative ? 'nativeOn:' : 'on:';
+ var staticHandlers = "";
+ var dynamicHandlers = "";
+ for (var name in events) {
+ var handlerCode = genHandler(events[name]);
+ if (events[name] && events[name].dynamic) {
+ dynamicHandlers += name + "," + handlerCode + ",";
+ } else {
+ staticHandlers += "\"" + name + "\":" + handlerCode + ",";
+ }
+ }
+ staticHandlers = "{" + (staticHandlers.slice(0, -1)) + "}";
+ if (dynamicHandlers) {
+ return prefix + "_d(" + staticHandlers + ",[" + (dynamicHandlers.slice(0, -1)) + "])"
+ } else {
+ return prefix + staticHandlers
+ }
+ }
+
+ function genHandler (handler) {
+ if (!handler) {
+ return 'function(){}'
+ }
+
+ if (Array.isArray(handler)) {
+ return ("[" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + "]")
+ }
+
+ var isMethodPath = simplePathRE.test(handler.value);
+ var isFunctionExpression = fnExpRE.test(handler.value);
+ var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));
+
+ if (!handler.modifiers) {
+ if (isMethodPath || isFunctionExpression) {
+ return handler.value
+ }
+ return ("function($event){" + (isFunctionInvocation ? ("return " + (handler.value)) : handler.value) + "}") // inline statement
+ } else {
+ var code = '';
+ var genModifierCode = '';
+ var keys = [];
+ for (var key in handler.modifiers) {
+ if (modifierCode[key]) {
+ genModifierCode += modifierCode[key];
+ // left/right
+ if (keyCodes[key]) {
+ keys.push(key);
+ }
+ } else if (key === 'exact') {
+ var modifiers = (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 filtering
+ if (genModifierCode) {
+ code += genModifierCode;
+ }
+ var handlerCode = isMethodPath
+ ? ("return " + (handler.value) + "($event)")
+ : isFunctionExpression
+ ? ("return (" + (handler.value) + ")($event)")
+ : isFunctionInvocation
+ ? ("return " + (handler.value))
+ : handler.value;
+ return ("function($event){" + code + handlerCode + "}")
+ }
+ }
+
+ function genKeyFilter (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;"
+ )
+ }
+
+ function genFilterCode (key) {
+ var keyVal = parseInt(key, 10);
+ if (keyVal) {
+ return ("$event.keyCode!==" + keyVal)
+ }
+ var keyCode = keyCodes[key];
+ var keyName = keyNames[key];
+ return (
+ "_k($event.keyCode," +
+ (JSON.stringify(key)) + "," +
+ (JSON.stringify(keyCode)) + "," +
+ "$event.key," +
+ "" + (JSON.stringify(keyName)) +
+ ")"
+ )
+ }
+
+ /* */
+
+ function on (el, dir) {
+ if (dir.modifiers) {
+ warn("v-on without argument does not support modifiers.");
+ }
+ el.wrapListeners = function (code) { return ("_g(" + code + "," + (dir.value) + ")"); };
+ }
+
+ /* */
+
+ function bind$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' : '') + ")")
+ };
+ }
+
+ /* */
+
+ var baseDirectives = {
+ on: on,
+ bind: bind$1,
+ cloak: noop
+ };
+
+ /* */
+
+
+
+
+
+ var CodegenState = function CodegenState (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);
+ var isReservedTag = options.isReservedTag || no;
+ this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };
+ this.onceId = 0;
+ this.staticRenderFns = [];
+ this.pre = false;
+ };
+
+
+
+ function generate (
+ ast,
+ options
+ ) {
+ var state = new CodegenState(options);
+ var code = ast ? genElement(ast, state) : '_c("div")';
+ return {
+ render: ("with(this){return " + code + "}"),
+ staticRenderFns: state.staticRenderFns
+ }
+ }
+
+ function genElement (el, state) {
+ if (el.parent) {
+ el.pre = el.pre || el.parent.pre;
+ }
+
+ if (el.staticRoot && !el.staticProcessed) {
+ return genStatic(el, state)
+ } else if (el.once && !el.onceProcessed) {
+ return genOnce(el, state)
+ } else if (el.for && !el.forProcessed) {
+ return genFor(el, state)
+ } else if (el.if && !el.ifProcessed) {
+ return genIf(el, state)
+ } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
+ return genChildren(el, state) || 'void 0'
+ } else if (el.tag === 'slot') {
+ return genSlot(el, state)
+ } else {
+ // component or element
+ var code;
+ if (el.component) {
+ code = genComponent(el.component, el, state);
+ } else {
+ var data;
+ if (!el.plain || (el.pre && state.maybeComponent(el))) {
+ data = genData$2(el, state);
+ }
+
+ var children = el.inlineTemplate ? null : genChildren(el, state, true);
+ code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")";
+ }
+ // module transforms
+ for (var i = 0; i < state.transforms.length; i++) {
+ code = state.transforms[i](el, code);
+ }
+ return code
+ }
+ }
+
+ // hoist static sub-trees out
+ function genStatic (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 location to
+ // wrap a state change and reset it upon exiting the pre node.
+ var originalPreState = 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-once
+ function genOnce (el, state) {
+ el.onceProcessed = true;
+ if (el.if && !el.ifProcessed) {
+ return genIf(el, state)
+ } else if (el.staticInFor) {
+ var key = '';
+ var parent = 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']
+ );
+ return genElement(el, state)
+ }
+ return ("_o(" + (genElement(el, state)) + "," + (state.onceId++) + "," + key + ")")
+ } else {
+ return genStatic(el, state)
+ }
+ }
+
+ function genIf (
+ el,
+ state,
+ altGen,
+ altEmpty
+ ) {
+ el.ifProcessed = true; // avoid recursion
+ return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)
+ }
+
+ function genIfConditions (
+ conditions,
+ state,
+ altGen,
+ altEmpty
+ ) {
+ if (!conditions.length) {
+ return altEmpty || '_e()'
+ }
+
+ var condition = 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)
+ function genTernaryExp (el) {
+ return altGen
+ ? altGen(el, state)
+ : el.once
+ ? genOnce(el, state)
+ : genElement(el, state)
+ }
+ }
+
+ function genFor (
+ el,
+ state,
+ altGen,
+ altHelper
+ ) {
+ var exp = el.for;
+ var alias = el.alias;
+ var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
+ var iterator2 = 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 recursion
+ return (altHelper || '_l') + "((" + exp + ")," +
+ "function(" + alias + iterator1 + iterator2 + "){" +
+ "return " + ((altGen || genElement)(el, state)) +
+ '})'
+ }
+
+ function genData$2 (el, state) {
+ var data = '{';
+
+ // directives first.
+ // directives may mutate the el's other properties before they are generated.
+ var dirs = genDirectives(el, state);
+ if (dirs) { data += dirs + ','; }
+
+ // key
+ if (el.key) {
+ data += "key:" + (el.key) + ",";
+ }
+ // ref
+ if (el.ref) {
+ data += "ref:" + (el.ref) + ",";
+ }
+ if (el.refInFor) {
+ data += "refInFor:true,";
+ }
+ // pre
+ if (el.pre) {
+ data += "pre:true,";
+ }
+ // record original tag name for components using "is" attribute
+ if (el.component) {
+ data += "tag:\"" + (el.tag) + "\",";
+ }
+ // module data generation functions
+ for (var i = 0; i < state.dataGenFns.length; i++) {
+ data += state.dataGenFns[i](el);
+ }
+ // attributes
+ if (el.attrs) {
+ data += "attrs:" + (genProps(el.attrs)) + ",";
+ }
+ // DOM props
+ if (el.props) {
+ data += "domProps:" + (genProps(el.props)) + ",";
+ }
+ // event handlers
+ if (el.events) {
+ data += (genHandlers(el.events, false)) + ",";
+ }
+ if (el.nativeEvents) {
+ data += (genHandlers(el.nativeEvents, true)) + ",";
+ }
+ // slot target
+ // only for non-scoped slots
+ if (el.slotTarget && !el.slotScope) {
+ data += "slot:" + (el.slotTarget) + ",";
+ }
+ // scoped slots
+ if (el.scopedSlots) {
+ data += (genScopedSlots(el, el.scopedSlots, state)) + ",";
+ }
+ // component v-model
+ if (el.model) {
+ data += "model:{value:" + (el.model.value) + ",callback:" + (el.model.callback) + ",expression:" + (el.model.expression) + "},";
+ }
+ // inline-template
+ if (el.inlineTemplate) {
+ var inlineTemplate = 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 wrap
+ if (el.wrapData) {
+ data = el.wrapData(data);
+ }
+ // v-on data wrap
+ if (el.wrapListeners) {
+ data = el.wrapListeners(data);
+ }
+ return data
+ }
+
+ function genDirectives (el, state) {
+ var dirs = el.directives;
+ if (!dirs) { return }
+ var res = 'directives:[';
+ var hasRuntime = false;
+ var i, l, dir, needRuntime;
+ for (i = 0, l = dirs.length; i < l; i++) {
+ dir = dirs[i];
+ needRuntime = true;
+ var gen = 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) {
+ return res.slice(0, -1) + ']'
+ }
+ }
+
+ function genInlineTemplate (el, state) {
+ var ast = 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) {
+ var inlineRenderFns = generate(ast, state.options);
+ return ("inlineTemplate:{render:function(){" + (inlineRenderFns.render) + "},staticRenderFns:[" + (inlineRenderFns.staticRenderFns.map(function (code) { return ("function(){" + code + "}"); }).join(',')) + "]}")
+ }
+ }
+
+ function genScopedSlots (
+ 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...
+ var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {
+ var slot = 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.
+ var needsKey = !!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) {
+ var parent = el.parent;
+ while (parent) {
+ if (
+ (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||
+ parent.for
+ ) {
+ needsForceUpdate = true;
+ break
+ }
+ if (parent.if) {
+ needsKey = true;
+ }
+ parent = parent.parent;
+ }
+ }
+
+ var generatedSlots = Object.keys(slots)
+ .map(function (key) { return genScopedSlot(slots[key], state); })
+ .join(',');
+
+ return ("scopedSlots:_u([" + generatedSlots + "]" + (needsForceUpdate ? ",null,true" : "") + (!needsForceUpdate && needsKey ? (",null,false," + (hash(generatedSlots))) : "") + ")")
+ }
+
+ function hash(str) {
+ var hash = 5381;
+ var i = str.length;
+ while(i) {
+ hash = (hash * 33) ^ str.charCodeAt(--i);
+ }
+ return hash >>> 0
+ }
+
+ function containsSlotChild (el) {
+ if (el.type === 1) {
+ if (el.tag === 'slot') {
+ return true
+ }
+ return el.children.some(containsSlotChild)
+ }
+ return false
+ }
+
+ function genScopedSlot (
+ el,
+ state
+ ) {
+ var isLegacySyntax = el.attrsMap['slot-scope'];
+ if (el.if && !el.ifProcessed && !isLegacySyntax) {
+ return genIf(el, state, genScopedSlot, "null")
+ }
+ if (el.for && !el.forProcessed) {
+ return genFor(el, state, genScopedSlot)
+ }
+ var slotScope = el.slotScope === emptySlotScopeToken
+ ? ""
+ : String(el.slotScope);
+ var fn = "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.$slots
+ var reverseProxy = slotScope ? "" : ",proxy:true";
+ return ("{key:" + (el.slotTarget || "\"default\"") + ",fn:" + fn + reverseProxy + "}")
+ }
+
+ function genChildren (
+ el,
+ state,
+ checkSkip,
+ altGenElement,
+ altGenNode
+ ) {
+ var children = el.children;
+ if (children.length) {
+ var el$1 = children[0];
+ // optimize single v-for
+ if (children.length === 1 &&
+ el$1.for &&
+ el$1.tag !== 'template' &&
+ el$1.tag !== 'slot'
+ ) {
+ var normalizationType = checkSkip
+ ? state.maybeComponent(el$1) ? ",1" : ",0"
+ : "";
+ return ("" + ((altGenElement || genElement)(el$1, state)) + normalizationType)
+ }
+ var normalizationType$1 = checkSkip
+ ? getNormalizationType(children, state.maybeComponent)
+ : 0;
+ var gen = altGenNode || genNode;
+ return ("[" + (children.map(function (c) { return gen(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 needed
+ function getNormalizationType (
+ children,
+ maybeComponent
+ ) {
+ var res = 0;
+ for (var i = 0; i < children.length; i++) {
+ var el = children[i];
+ if (el.type !== 1) {
+ continue
+ }
+ if (needsNormalization(el) ||
+ (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
+ res = 2;
+ break
+ }
+ if (maybeComponent(el) ||
+ (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
+ res = 1;
+ }
+ }
+ return res
+ }
+
+ function needsNormalization (el) {
+ return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'
+ }
+
+ function genNode (node, state) {
+ if (node.type === 1) {
+ return genElement(node, state)
+ } else if (node.type === 3 && node.isComment) {
+ return genComment(node)
+ } else {
+ return genText(node)
+ }
+ }
+
+ function genText (text) {
+ return ("_v(" + (text.type === 2
+ ? text.expression // no need for () because already wrapped in _s()
+ : transformSpecialNewlines(JSON.stringify(text.text))) + ")")
+ }
+
+ function genComment (comment) {
+ return ("_e(" + (JSON.stringify(comment.text)) + ")")
+ }
+
+ function genSlot (el, state) {
+ var slotName = el.slotName || '"default"';
+ var children = genChildren(el, state);
+ var res = "_t(" + slotName + (children ? ("," + children) : '');
+ var attrs = el.attrs || el.dynamicAttrs
+ ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({
+ // slot props are camelized
+ name: camelize(attr.name),
+ value: attr.value,
+ dynamic: attr.dynamic
+ }); }))
+ : null;
+ var bind$$1 = el.attrsMap['v-bind'];
+ if ((attrs || bind$$1) && !children) {
+ res += ",null";
+ }
+ if (attrs) {
+ res += "," + attrs;
+ }
+ if (bind$$1) {
+ res += (attrs ? '' : ',null') + "," + bind$$1;
+ }
+ return res + ')'
+ }
+
+ // componentName is el.component, take it as argument to shun flow's pessimistic refinement
+ function genComponent (
+ componentName,
+ el,
+ state
+ ) {
+ var children = el.inlineTemplate ? null : genChildren(el, state, true);
+ return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")")
+ }
+
+ function genProps (props) {
+ var staticProps = "";
+ var dynamicProps = "";
+ for (var i = 0; i < props.length; i++) {
+ var prop = props[i];
+ var value = 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 {
+ return staticProps
+ }
+ }
+
+ // #3895, #4268
+ function transformSpecialNewlines (text) {
+ return text
+ .replace(/\u2028/g, '\\u2028')
+ .replace(/\u2029/g, '\\u2029')
+ }
+
+ /* */
+
+
+
+ // these keywords should not appear inside expressions, but operators like
+ // typeof, instanceof and in are allowed
+ var prohibitedKeywordRE = new RegExp('\\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 names
+ var unaryOperatorsRE = new RegExp('\\b' + (
+ 'delete,typeof,void'
+ ).split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)');
+
+ // strip strings in expressions
+ var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
+
+ // detect problematic expressions in a template
+ function detectErrors (ast, warn) {
+ if (ast) {
+ checkNode(ast, warn);
+ }
+ }
+
+ function checkNode (node, warn) {
+ if (node.type === 1) {
+ for (var name in node.attrsMap) {
+ if (dirRE.test(name)) {
+ var value = node.attrsMap[name];
+ if (value) {
+ var range = node.rawAttrsMap[name];
+ if (name === 'v-for') {
+ checkFor(node, ("v-for=\"" + value + "\""), warn, range);
+ } else if (name === 'v-slot' || name[0] === '#') {
+ checkFunctionParameterExpression(value, (name + "=\"" + value + "\""), warn, range);
+ } else if (onRE.test(name)) {
+ checkEvent(value, (name + "=\"" + value + "\""), warn, range);
+ } else {
+ checkExpression(value, (name + "=\"" + value + "\""), warn, range);
+ }
+ }
+ }
+ }
+ if (node.children) {
+ for (var i = 0; i < node.children.length; i++) {
+ checkNode(node.children[i], warn);
+ }
+ }
+ } else if (node.type === 2) {
+ checkExpression(node.expression, node.text, warn, node);
+ }
+ }
+
+ function checkEvent (exp, text, warn, range) {
+ var stripped = exp.replace(stripStringRE, '');
+ var keywordMatch = 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);
+ }
+
+ function checkFor (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);
+ }
+
+ function checkIdentifier (
+ ident,
+ type,
+ text,
+ warn,
+ range
+ ) {
+ if (typeof ident === 'string') {
+ try {
+ new Function(("var " + ident + "=_"));
+ } catch (e) {
+ warn(("invalid " + type + " \"" + ident + "\" in expression: " + (text.trim())), range);
+ }
+ }
+ }
+
+ function checkExpression (exp, text, warn, range) {
+ try {
+ new Function(("return " + exp));
+ } catch (e) {
+ var keywordMatch = 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
+ );
+ }
+ }
+ }
+
+ function checkFunctionParameterExpression (exp, text, warn, range) {
+ try {
+ new Function(exp, '');
+ } catch (e) {
+ warn(
+ "invalid function parameter expression: " + (e.message) + " in\n\n" +
+ " " + exp + "\n\n" +
+ " Raw expression: " + (text.trim()) + "\n",
+ range
+ );
+ }
+ }
+
+ /* */
+
+ var range = 2;
+
+ function generateCodeFrame (
+ source,
+ start,
+ end
+ ) {
+ if ( start === void 0 ) start = 0;
+ if ( end === void 0 ) end = source.length;
+
+ var lines = source.split(/\r?\n/);
+ var count = 0;
+ var res = [];
+ for (var i = 0; i < lines.length; i++) {
+ count += lines[i].length + 1;
+ if (count >= start) {
+ for (var j = 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])));
+ var lineLength = lines[j].length;
+ if (j === i) {
+ // push underline
+ var pad = start - (count - lineLength) + 1;
+ var length = end > count ? lineLength - pad : end - start;
+ res.push(" | " + repeat$1(" ", pad) + repeat$1("^", length));
+ } else if (j > i) {
+ if (end > count) {
+ var length$1 = Math.min(end - count, lineLength);
+ res.push(" | " + repeat$1("^", length$1));
+ }
+ count += lineLength + 1;
+ }
+ }
+ break
+ }
+ }
+ return res.join('\n')
+ }
+
+ function repeat$1 (str, n) {
+ var result = '';
+ if (n > 0) {
+ while (true) { // eslint-disable-line
+ if (n & 1) { result += str; }
+ n >>>= 1;
+ if (n <= 0) { break }
+ str += str;
+ }
+ }
+ return result
+ }
+
+ /* */
+
+
+
+ function createFunction (code, errors) {
+ try {
+ return new Function(code)
+ } catch (err) {
+ errors.push({ err: err, code: code });
+ return noop
+ }
+ }
+
+ function createCompileToFunctionFn (compile) {
+ var cache = Object.create(null);
+
+ return function compileToFunctions (
+ template,
+ options,
+ vm
+ ) {
+ options = extend({}, options);
+ var warn$$1 = options.warn || warn;
+ delete options.warn;
+
+ /* istanbul ignore if */
+ {
+ // detect possible CSP restriction
+ try {
+ new Function('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 cache
+ var key = options.delimiters
+ ? String(options.delimiters) + template
+ : template;
+ if (cache[key]) {
+ return cache[key]
+ }
+
+ // compile
+ var compiled = 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) { return tip(e.msg, vm); });
+ } else {
+ compiled.tips.forEach(function (msg) { return tip(msg, vm); });
+ }
+ }
+ }
+
+ // turn code into functions
+ var res = {};
+ var fnGenErrors = [];
+ res.render = createFunction(compiled.render, fnGenErrors);
+ res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
+ return createFunction(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) {
+ var err = ref.err;
+ var code = ref.code;
+
+ return ((err.toString()) + " in\n\n" + code + "\n");
+ }).join('\n'),
+ vm
+ );
+ }
+ }
+
+ return (cache[key] = res)
+ }
+ }
+
+ /* */
+
+ function createCompilerCreator (baseCompile) {
+ return function createCompiler (baseOptions) {
+ function compile (
+ template,
+ options
+ ) {
+ var finalOptions = Object.create(baseOptions);
+ var errors = [];
+ var tips = [];
+
+ var warn = function (msg, range, tip) {
+ (tip ? tips : errors).push(msg);
+ };
+
+ if (options) {
+ if (options.outputSourceRange) {
+ // $flow-disable-line
+ var leadingSpaceLength = template.match(/^\s*/)[0].length;
+
+ warn = function (msg, range, tip) {
+ var data = { 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 modules
+ if (options.modules) {
+ finalOptions.modules =
+ (baseOptions.modules || []).concat(options.modules);
+ }
+ // merge custom directives
+ if (options.directives) {
+ finalOptions.directives = extend(
+ Object.create(baseOptions.directives || null),
+ options.directives
+ );
+ }
+ // copy other options
+ for (var key in options) {
+ if (key !== 'modules' && key !== 'directives') {
+ finalOptions[key] = options[key];
+ }
+ }
+ }
+
+ finalOptions.warn = warn;
+
+ var compiled = baseCompile(template.trim(), finalOptions);
+ {
+ detectErrors(compiled.ast, warn);
+ }
+ //s*g*g-天*禹*老*师
+ compiled.errors = errors;
+ compiled.tips = tips;
+ return compiled
+ }
+
+ 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.
+ var createCompiler = createCompilerCreator(function baseCompile (
+ template,
+ options
+ ) {
+ var ast = parse(template.trim(), options);
+ if (options.optimize !== false) {
+ optimize(ast, options);
+ }
+ var code = generate(ast, options);
+ return {
+ ast: ast,
+ render: code.render,
+ staticRenderFns: code.staticRenderFns
+ }
+ });
+
+ /* */
+
+ var ref$1 = createCompiler(baseOptions);
+ var compile = ref$1.compile;
+ var compileToFunctions = ref$1.compileToFunctions;
+
+ /* */
+
+ // check whether current browser encodes a char inside attribute values
+ var div;
+ function getShouldDecode (href) {
+ div = div || document.createElement('div');
+ div.innerHTML = href ? "
" : "";
+ return div.innerHTML.indexOf('
') > 0
+ }
+
+ // #3663: IE encodes newlines inside attribute values while other browsers don't
+ var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;
+ // #6828: chrome encodes content in a[href]
+ var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;
+
+ /* */
+
+ var idToTemplate = cached(function (id) {
+ var el = query(id);
+ return el && el.innerHTML
+ });
+
+ var mount = 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 or - mount to normal elements instead."
+ );
+ return this
+ }
+
+ var options = this.$options;
+ // resolve template/el and convert to render function
+ if (!options.render) {
+ var template = options.template;
+ if (template) {
+ if (typeof template === 'string') {
+ if (template.charAt(0) === '#') {
+ template = idToTemplate(template);
+ /* istanbul ignore if */
+ if (!template) {
+ warn(
+ ("Template element not found or is empty: " + (options.template)),
+ this
+ );
+ }
+ }
+ } else if (template.nodeType) {
+ template = template.innerHTML;
+ } else {
+ {
+ warn('invalid template option:' + template, this);
+ }
+ return this
+ }
+ } else if (el) {
+ template = getOuterHTML(el);
+ }
+ if (template) {
+ /* istanbul ignore if */
+ if (config.performance && mark) {
+ mark('compile');
+ }
+
+ var ref = compileToFunctions(template, {
+ outputSourceRange: "development" !== 'production',
+ shouldDecodeNewlines: shouldDecodeNewlines,
+ shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
+ delimiters: options.delimiters,
+ comments: options.comments
+ }, this);
+ var render = ref.render;
+ var staticRenderFns = 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');
+ }
+ }
+ }
+ return mount.call(this, el, hydrating)
+ };
+
+ /**
+ * Get outerHTML of elements, taking care
+ * of SVG elements in IE as well.
+ */
+ function getOuterHTML (el) {
+ if (el.outerHTML) {
+ return el.outerHTML
+ } else {
+ var container = document.createElement('div');
+ container.appendChild(el.cloneNode(true));
+ return container.innerHTML
+ }
+ }
+
+ Vue.compile = compileToFunctions;
+
+ return Vue;
+
+}));
--
Gitee
From 3b2db09c94fb5ad615f4412afd6775b9c1dca306 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=B5=A9?=
<11534669+chen_hao-x@user.noreply.gitee.com>
Date: Tue, 8 Nov 2022 00:45:43 +0000
Subject: [PATCH 03/16] =?UTF-8?q?=E6=96=B0=E5=BB=BA=2003=E9=99=88=E6=B5=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../2\347\217\255/03\351\231\210\346\265\251/.keep" | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 "\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/.keep"
diff --git "a/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/.keep" "b/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/.keep"
new file mode 100644
index 0000000..e69de29
--
Gitee
From 267a871dc80f8ed07ab9cc8629917910f98f97ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=B5=A9?=
<11534669+chen_hao-x@user.noreply.gitee.com>
Date: Tue, 8 Nov 2022 00:46:17 +0000
Subject: [PATCH 04/16] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20img?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../2\347\217\255/03\351\231\210\346\265\251/img/.keep" | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 "\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/img/.keep"
diff --git "a/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/img/.keep" "b/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/img/.keep"
new file mode 100644
index 0000000..e69de29
--
Gitee
From 66e39abcaf0cd55181fecea9f65c37faf3b5860b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=B5=A9?=
<11534669+chen_hao-x@user.noreply.gitee.com>
Date: Tue, 8 Nov 2022 00:46:48 +0000
Subject: [PATCH 05/16] 1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: 陈浩 <11534669+chen_hao-x@user.noreply.gitee.com>
---
.../03\351\231\210\346\265\251/img/1.webp" | Bin 0 -> 87850 bytes
.../03\351\231\210\346\265\251/img/2.webp" | Bin 0 -> 14294 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 "\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/img/1.webp"
create mode 100644 "\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/img/2.webp"
diff --git "a/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/img/1.webp" "b/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232/2\347\217\255/03\351\231\210\346\265\251/img/1.webp"
new file mode 100644
index 0000000000000000000000000000000000000000..48e4bc485f730fae24b40514573e2517e770ec84
GIT binary patch
literal 87850
zcmb5VRZtyI{O!95?oN=6ZXANUy9a_hL4&)y1>bC3g1bv_2=4Cg?(V_D;rBo1+^YL<
zAMTpB?y2scshV$nX7%d#rS~lWhMbhF6aWee3Lx`w0p3>u;s69VICwZ%1bBFOL_`E6
z6dY6(WMmWqENpZfVnR|9VnQI0jFO3ljDisa1k!TTF|x37aBz^)@Cx#<2{5s9u>Cg(
z6e1!b3Ni{lDk?r3Igp&~|F_<|0GJ3+cb_hxp(p^KFrlC^q2BudKmg#=C+LsW{y&0+
zgN6Zof`>x*=vBr5e1d}h1Puob3kwJP2?l@;^$8jPg9%HH#VQJiO`&Y$$QBrfBbHm!
z4G&V8zQScUb_&|26pydH##5!@aLJRH`Ap4aVj7&^vvb4g-1{*k5ftEKy8qtK|J5gG
z7${f(9Q;Qo8|KGq{u31RhhYD^2kH|h^v7&4q93!tvKfIK1I6NMaM-VKRdTzhIo?+Q
zD9}(Jj{}Vf5C&|+V5~;=P87w9Qj}c*q}+iMZ&r-JomS*Z{ITtAs9NqLR1+woP@>W`
z4fYnWl
Jf|4Sza=~6dIFPsi*Jib{rOh4zHuekc>L@w$
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