UNPKG

347 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3 typeof define === 'function' && define.amd ? define(['exports'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.VueTemplateCompiler = {}));
5})(this, (function (exports) { 'use strict';
6
7 var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
8
9 var splitRE$1 = /\r?\n/g;
10 var emptyRE = /^\s*$/;
11 var needFixRE = /^(\r?\n)*[\t\s]/;
12
13 var deIndent = function deindent (str) {
14 if (!needFixRE.test(str)) {
15 return str
16 }
17 var lines = str.split(splitRE$1);
18 var min = Infinity;
19 var type, cur, c;
20 for (var i = 0; i < lines.length; i++) {
21 var line = lines[i];
22 if (!emptyRE.test(line)) {
23 if (!type) {
24 c = line.charAt(0);
25 if (c === ' ' || c === '\t') {
26 type = c;
27 cur = count(line, type);
28 if (cur < min) {
29 min = cur;
30 }
31 } else {
32 return str
33 }
34 } else {
35 cur = count(line, type);
36 if (cur < min) {
37 min = cur;
38 }
39 }
40 }
41 }
42 return lines.map(function (line) {
43 return line.slice(min)
44 }).join('\n')
45 };
46
47 function count (line, type) {
48 var i = 0;
49 while (line.charAt(i) === type) {
50 i++;
51 }
52 return i
53 }
54
55 var emptyObject = Object.freeze({});
56 var isArray = Array.isArray;
57 // These helpers produce better VM code in JS engines due to their
58 // explicitness and function inlining.
59 function isUndef(v) {
60 return v === undefined || v === null;
61 }
62 function isDef(v) {
63 return v !== undefined && v !== null;
64 }
65 function isTrue(v) {
66 return v === true;
67 }
68 function isFalse(v) {
69 return v === false;
70 }
71 /**
72 * Check if value is primitive.
73 */
74 function isPrimitive(value) {
75 return (typeof value === 'string' ||
76 typeof value === 'number' ||
77 // $flow-disable-line
78 typeof value === 'symbol' ||
79 typeof value === 'boolean');
80 }
81 function isFunction(value) {
82 return typeof value === 'function';
83 }
84 /**
85 * Quick object check - this is primarily used to tell
86 * objects from primitive values when we know the value
87 * is a JSON-compliant type.
88 */
89 function isObject(obj) {
90 return obj !== null && typeof obj === 'object';
91 }
92 /**
93 * Get the raw type string of a value, e.g., [object Object].
94 */
95 var _toString = Object.prototype.toString;
96 function toRawType(value) {
97 return _toString.call(value).slice(8, -1);
98 }
99 /**
100 * Strict object type check. Only returns true
101 * for plain JavaScript objects.
102 */
103 function isPlainObject(obj) {
104 return _toString.call(obj) === '[object Object]';
105 }
106 /**
107 * Check if val is a valid array index.
108 */
109 function isValidArrayIndex(val) {
110 var n = parseFloat(String(val));
111 return n >= 0 && Math.floor(n) === n && isFinite(val);
112 }
113 function isPromise(val) {
114 return (isDef(val) &&
115 typeof val.then === 'function' &&
116 typeof val.catch === 'function');
117 }
118 /**
119 * Convert a value to a string that is actually rendered.
120 */
121 function toString(val) {
122 return val == null
123 ? ''
124 : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
125 ? JSON.stringify(val, null, 2)
126 : String(val);
127 }
128 /**
129 * Convert an input value to a number for persistence.
130 * If the conversion fails, return original string.
131 */
132 function toNumber(val) {
133 var n = parseFloat(val);
134 return isNaN(n) ? val : n;
135 }
136 /**
137 * Make a map and return a function for checking if a key
138 * is in that map.
139 */
140 function makeMap(str, expectsLowerCase) {
141 var map = Object.create(null);
142 var list = str.split(',');
143 for (var i = 0; i < list.length; i++) {
144 map[list[i]] = true;
145 }
146 return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };
147 }
148 /**
149 * Check if a tag is a built-in tag.
150 */
151 var isBuiltInTag = makeMap('slot,component', true);
152 /**
153 * Check if an attribute is a reserved attribute.
154 */
155 var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
156 /**
157 * Remove an item from an array.
158 */
159 function remove$1(arr, item) {
160 if (arr.length) {
161 var index = arr.indexOf(item);
162 if (index > -1) {
163 return arr.splice(index, 1);
164 }
165 }
166 }
167 /**
168 * Check whether an object has the property.
169 */
170 var hasOwnProperty = Object.prototype.hasOwnProperty;
171 function hasOwn(obj, key) {
172 return hasOwnProperty.call(obj, key);
173 }
174 /**
175 * Create a cached version of a pure function.
176 */
177 function cached(fn) {
178 var cache = Object.create(null);
179 return function cachedFn(str) {
180 var hit = cache[str];
181 return hit || (cache[str] = fn(str));
182 };
183 }
184 /**
185 * Camelize a hyphen-delimited string.
186 */
187 var camelizeRE = /-(\w)/g;
188 var camelize = cached(function (str) {
189 return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });
190 });
191 /**
192 * Capitalize a string.
193 */
194 var capitalize = cached(function (str) {
195 return str.charAt(0).toUpperCase() + str.slice(1);
196 });
197 /**
198 * Hyphenate a camelCase string.
199 */
200 var hyphenateRE = /\B([A-Z])/g;
201 var hyphenate = cached(function (str) {
202 return str.replace(hyphenateRE, '-$1').toLowerCase();
203 });
204 /**
205 * Mix properties into target object.
206 */
207 function extend(to, _from) {
208 for (var key in _from) {
209 to[key] = _from[key];
210 }
211 return to;
212 }
213 /**
214 * Merge an Array of Objects into a single Object.
215 */
216 function toObject(arr) {
217 var res = {};
218 for (var i = 0; i < arr.length; i++) {
219 if (arr[i]) {
220 extend(res, arr[i]);
221 }
222 }
223 return res;
224 }
225 /* eslint-disable no-unused-vars */
226 /**
227 * Perform no operation.
228 * Stubbing args to make Flow happy without leaving useless transpiled code
229 * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
230 */
231 function noop(a, b, c) { }
232 /**
233 * Always return false.
234 */
235 var no = function (a, b, c) { return false; };
236 /* eslint-enable no-unused-vars */
237 /**
238 * Return the same value.
239 */
240 var identity = function (_) { return _; };
241 /**
242 * Generate a string containing static keys from compiler modules.
243 */
244 function genStaticKeys$1(modules) {
245 return modules
246 .reduce(function (keys, m) {
247 return keys.concat(m.staticKeys || []);
248 }, [])
249 .join(',');
250 }
251 /**
252 * Check if two values are loosely equal - that is,
253 * if they are plain objects, do they have the same shape?
254 */
255 function looseEqual(a, b) {
256 if (a === b)
257 return true;
258 var isObjectA = isObject(a);
259 var isObjectB = isObject(b);
260 if (isObjectA && isObjectB) {
261 try {
262 var isArrayA = Array.isArray(a);
263 var isArrayB = Array.isArray(b);
264 if (isArrayA && isArrayB) {
265 return (a.length === b.length &&
266 a.every(function (e, i) {
267 return looseEqual(e, b[i]);
268 }));
269 }
270 else if (a instanceof Date && b instanceof Date) {
271 return a.getTime() === b.getTime();
272 }
273 else if (!isArrayA && !isArrayB) {
274 var keysA = Object.keys(a);
275 var keysB = Object.keys(b);
276 return (keysA.length === keysB.length &&
277 keysA.every(function (key) {
278 return looseEqual(a[key], b[key]);
279 }));
280 }
281 else {
282 /* istanbul ignore next */
283 return false;
284 }
285 }
286 catch (e) {
287 /* istanbul ignore next */
288 return false;
289 }
290 }
291 else if (!isObjectA && !isObjectB) {
292 return String(a) === String(b);
293 }
294 else {
295 return false;
296 }
297 }
298 /**
299 * Return the first index at which a loosely equal value can be
300 * found in the array (if value is a plain object, the array must
301 * contain an object of the same shape), or -1 if it is not present.
302 */
303 function looseIndexOf(arr, val) {
304 for (var i = 0; i < arr.length; i++) {
305 if (looseEqual(arr[i], val))
306 return i;
307 }
308 return -1;
309 }
310 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill
311 function hasChanged(x, y) {
312 if (x === y) {
313 return x === 0 && 1 / x !== 1 / y;
314 }
315 else {
316 return x === x || y === y;
317 }
318 }
319
320 var isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
321 'link,meta,param,source,track,wbr');
322 // Elements that you can, intentionally, leave open
323 // (and which close themselves)
324 var canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');
325 // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
326 // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
327 var isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
328 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
329 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
330 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
331 'title,tr,track');
332
333 /**
334 * unicode letters used for parsing html tags, component names and property paths.
335 * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
336 * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
337 */
338 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/;
339 /**
340 * Define a property.
341 */
342 function def(obj, key, val, enumerable) {
343 Object.defineProperty(obj, key, {
344 value: val,
345 enumerable: !!enumerable,
346 writable: true,
347 configurable: true
348 });
349 }
350
351 /**
352 * Not type-checking this file because it's mostly vendor code.
353 */
354 // Regular Expressions for parsing tags and attributes
355 var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
356 var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
357 var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(unicodeRegExp.source, "]*");
358 var qnameCapture = "((?:".concat(ncname, "\\:)?").concat(ncname, ")");
359 var startTagOpen = new RegExp("^<".concat(qnameCapture));
360 var startTagClose = /^\s*(\/?)>/;
361 var endTag = new RegExp("^<\\/".concat(qnameCapture, "[^>]*>"));
362 var doctype = /^<!DOCTYPE [^>]+>/i;
363 // #7298: escape - to avoid being passed as HTML comment when inlined in page
364 var comment = /^<!\--/;
365 var conditionalComment = /^<!\[/;
366 // Special Elements (can contain anything)
367 var isPlainTextElement = makeMap('script,style,textarea', true);
368 var reCache = {};
369 var decodingMap = {
370 '&lt;': '<',
371 '&gt;': '>',
372 '&quot;': '"',
373 '&amp;': '&',
374 '&#10;': '\n',
375 '&#9;': '\t',
376 '&#39;': "'"
377 };
378 var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;
379 var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;
380 // #5992
381 var isIgnoreNewlineTag = makeMap('pre,textarea', true);
382 var shouldIgnoreFirstNewline = function (tag, html) {
383 return tag && isIgnoreNewlineTag(tag) && html[0] === '\n';
384 };
385 function decodeAttr(value, shouldDecodeNewlines) {
386 var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
387 return value.replace(re, function (match) { return decodingMap[match]; });
388 }
389 function parseHTML(html, options) {
390 var stack = [];
391 var expectHTML = options.expectHTML;
392 var isUnaryTag = options.isUnaryTag || no;
393 var canBeLeftOpenTag = options.canBeLeftOpenTag || no;
394 var index = 0;
395 var last, lastTag;
396 var _loop_1 = function () {
397 last = html;
398 // Make sure we're not in a plaintext content element like script/style
399 if (!lastTag || !isPlainTextElement(lastTag)) {
400 var textEnd = html.indexOf('<');
401 if (textEnd === 0) {
402 // Comment:
403 if (comment.test(html)) {
404 var commentEnd = html.indexOf('-->');
405 if (commentEnd >= 0) {
406 if (options.shouldKeepComment && options.comment) {
407 options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);
408 }
409 advance(commentEnd + 3);
410 return "continue";
411 }
412 }
413 // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
414 if (conditionalComment.test(html)) {
415 var conditionalEnd = html.indexOf(']>');
416 if (conditionalEnd >= 0) {
417 advance(conditionalEnd + 2);
418 return "continue";
419 }
420 }
421 // Doctype:
422 var doctypeMatch = html.match(doctype);
423 if (doctypeMatch) {
424 advance(doctypeMatch[0].length);
425 return "continue";
426 }
427 // End tag:
428 var endTagMatch = html.match(endTag);
429 if (endTagMatch) {
430 var curIndex = index;
431 advance(endTagMatch[0].length);
432 parseEndTag(endTagMatch[1], curIndex, index);
433 return "continue";
434 }
435 // Start tag:
436 var startTagMatch = parseStartTag();
437 if (startTagMatch) {
438 handleStartTag(startTagMatch);
439 if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {
440 advance(1);
441 }
442 return "continue";
443 }
444 }
445 var text = void 0, rest = void 0, next = void 0;
446 if (textEnd >= 0) {
447 rest = html.slice(textEnd);
448 while (!endTag.test(rest) &&
449 !startTagOpen.test(rest) &&
450 !comment.test(rest) &&
451 !conditionalComment.test(rest)) {
452 // < in plain text, be forgiving and treat it as text
453 next = rest.indexOf('<', 1);
454 if (next < 0)
455 break;
456 textEnd += next;
457 rest = html.slice(textEnd);
458 }
459 text = html.substring(0, textEnd);
460 }
461 if (textEnd < 0) {
462 text = html;
463 }
464 if (text) {
465 advance(text.length);
466 }
467 if (options.chars && text) {
468 options.chars(text, index - text.length, index);
469 }
470 }
471 else {
472 var endTagLength_1 = 0;
473 var stackedTag_1 = lastTag.toLowerCase();
474 var reStackedTag = reCache[stackedTag_1] ||
475 (reCache[stackedTag_1] = new RegExp('([\\s\\S]*?)(</' + stackedTag_1 + '[^>]*>)', 'i'));
476 var rest = html.replace(reStackedTag, function (all, text, endTag) {
477 endTagLength_1 = endTag.length;
478 if (!isPlainTextElement(stackedTag_1) && stackedTag_1 !== 'noscript') {
479 text = text
480 .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
481 .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
482 }
483 if (shouldIgnoreFirstNewline(stackedTag_1, text)) {
484 text = text.slice(1);
485 }
486 if (options.chars) {
487 options.chars(text);
488 }
489 return '';
490 });
491 index += html.length - rest.length;
492 html = rest;
493 parseEndTag(stackedTag_1, index - endTagLength_1, index);
494 }
495 if (html === last) {
496 options.chars && options.chars(html);
497 if (!stack.length && options.warn) {
498 options.warn("Mal-formatted tag at end of template: \"".concat(html, "\""), {
499 start: index + html.length
500 });
501 }
502 return "break";
503 }
504 };
505 while (html) {
506 var state_1 = _loop_1();
507 if (state_1 === "break")
508 break;
509 }
510 // Clean up any remaining tags
511 parseEndTag();
512 function advance(n) {
513 index += n;
514 html = html.substring(n);
515 }
516 function parseStartTag() {
517 var start = html.match(startTagOpen);
518 if (start) {
519 var match = {
520 tagName: start[1],
521 attrs: [],
522 start: index
523 };
524 advance(start[0].length);
525 var end = void 0, attr = void 0;
526 while (!(end = html.match(startTagClose)) &&
527 (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
528 attr.start = index;
529 advance(attr[0].length);
530 attr.end = index;
531 match.attrs.push(attr);
532 }
533 if (end) {
534 match.unarySlash = end[1];
535 advance(end[0].length);
536 match.end = index;
537 return match;
538 }
539 }
540 }
541 function handleStartTag(match) {
542 var tagName = match.tagName;
543 var unarySlash = match.unarySlash;
544 if (expectHTML) {
545 if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
546 parseEndTag(lastTag);
547 }
548 if (canBeLeftOpenTag(tagName) && lastTag === tagName) {
549 parseEndTag(tagName);
550 }
551 }
552 var unary = isUnaryTag(tagName) || !!unarySlash;
553 var l = match.attrs.length;
554 var attrs = new Array(l);
555 for (var i = 0; i < l; i++) {
556 var args = match.attrs[i];
557 var value = args[3] || args[4] || args[5] || '';
558 var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
559 ? options.shouldDecodeNewlinesForHref
560 : options.shouldDecodeNewlines;
561 attrs[i] = {
562 name: args[1],
563 value: decodeAttr(value, shouldDecodeNewlines)
564 };
565 if (options.outputSourceRange) {
566 attrs[i].start = args.start + args[0].match(/^\s*/).length;
567 attrs[i].end = args.end;
568 }
569 }
570 if (!unary) {
571 stack.push({
572 tag: tagName,
573 lowerCasedTag: tagName.toLowerCase(),
574 attrs: attrs,
575 start: match.start,
576 end: match.end
577 });
578 lastTag = tagName;
579 }
580 if (options.start) {
581 options.start(tagName, attrs, unary, match.start, match.end);
582 }
583 }
584 function parseEndTag(tagName, start, end) {
585 var pos, lowerCasedTagName;
586 if (start == null)
587 start = index;
588 if (end == null)
589 end = index;
590 // Find the closest opened tag of the same type
591 if (tagName) {
592 lowerCasedTagName = tagName.toLowerCase();
593 for (pos = stack.length - 1; pos >= 0; pos--) {
594 if (stack[pos].lowerCasedTag === lowerCasedTagName) {
595 break;
596 }
597 }
598 }
599 else {
600 // If no tag name is provided, clean shop
601 pos = 0;
602 }
603 if (pos >= 0) {
604 // Close all the open elements, up the stack
605 for (var i = stack.length - 1; i >= pos; i--) {
606 if ((i > pos || !tagName) && options.warn) {
607 options.warn("tag <".concat(stack[i].tag, "> has no matching end tag."), {
608 start: stack[i].start,
609 end: stack[i].end
610 });
611 }
612 if (options.end) {
613 options.end(stack[i].tag, start, end);
614 }
615 }
616 // Remove the open elements from the stack
617 stack.length = pos;
618 lastTag = pos && stack[pos - 1].tag;
619 }
620 else if (lowerCasedTagName === 'br') {
621 if (options.start) {
622 options.start(tagName, [], true, start, end);
623 }
624 }
625 else if (lowerCasedTagName === 'p') {
626 if (options.start) {
627 options.start(tagName, [], false, start, end);
628 }
629 if (options.end) {
630 options.end(tagName, start, end);
631 }
632 }
633 }
634 }
635
636 var DEFAULT_FILENAME = 'anonymous.vue';
637 var splitRE = /\r?\n/g;
638 var replaceRE = /./g;
639 var isSpecialTag = makeMap('script,style,template', true);
640 /**
641 * Parse a single-file component (*.vue) file into an SFC Descriptor Object.
642 */
643 function parseComponent(source, options) {
644 if (options === void 0) { options = {}; }
645 var sfc = {
646 source: source,
647 filename: DEFAULT_FILENAME,
648 template: null,
649 script: null,
650 scriptSetup: null,
651 styles: [],
652 customBlocks: [],
653 cssVars: [],
654 errors: [],
655 shouldForceReload: null // attached in parse() by compiler-sfc
656 };
657 var depth = 0;
658 var currentBlock = null;
659 var warn = function (msg) {
660 sfc.errors.push(msg);
661 };
662 if (options.outputSourceRange) {
663 warn = function (msg, range) {
664 var data = { msg: msg };
665 if (range.start != null) {
666 data.start = range.start;
667 }
668 if (range.end != null) {
669 data.end = range.end;
670 }
671 sfc.errors.push(data);
672 };
673 }
674 function start(tag, attrs, unary, start, end) {
675 if (depth === 0) {
676 currentBlock = {
677 type: tag,
678 content: '',
679 start: end,
680 end: 0,
681 attrs: attrs.reduce(function (cumulated, _a) {
682 var name = _a.name, value = _a.value;
683 cumulated[name] = value || true;
684 return cumulated;
685 }, {})
686 };
687 if (typeof currentBlock.attrs.src === 'string') {
688 currentBlock.src = currentBlock.attrs.src;
689 }
690 if (isSpecialTag(tag)) {
691 checkAttrs(currentBlock, attrs);
692 if (tag === 'script') {
693 var block = currentBlock;
694 if (block.attrs.setup) {
695 block.setup = currentBlock.attrs.setup;
696 sfc.scriptSetup = block;
697 }
698 else {
699 sfc.script = block;
700 }
701 }
702 else if (tag === 'style') {
703 sfc.styles.push(currentBlock);
704 }
705 else {
706 sfc[tag] = currentBlock;
707 }
708 }
709 else {
710 // custom blocks
711 sfc.customBlocks.push(currentBlock);
712 }
713 }
714 if (!unary) {
715 depth++;
716 }
717 }
718 function checkAttrs(block, attrs) {
719 for (var i = 0; i < attrs.length; i++) {
720 var attr = attrs[i];
721 if (attr.name === 'lang') {
722 block.lang = attr.value;
723 }
724 if (attr.name === 'scoped') {
725 block.scoped = true;
726 }
727 if (attr.name === 'module') {
728 block.module = attr.value || true;
729 }
730 }
731 }
732 function end(tag, start) {
733 if (depth === 1 && currentBlock) {
734 currentBlock.end = start;
735 var text = source.slice(currentBlock.start, currentBlock.end);
736 if (options.deindent === true ||
737 // by default, deindent unless it's script with default lang or ts
738 (options.deindent !== false &&
739 !(currentBlock.type === 'script' &&
740 (!currentBlock.lang || currentBlock.lang === 'ts')))) {
741 text = deIndent(text);
742 }
743 // pad content so that linters and pre-processors can output correct
744 // line numbers in errors and warnings
745 if (currentBlock.type !== 'template' && options.pad) {
746 text = padContent(currentBlock, options.pad) + text;
747 }
748 currentBlock.content = text;
749 currentBlock = null;
750 }
751 depth--;
752 }
753 function padContent(block, pad) {
754 if (pad === 'space') {
755 return source.slice(0, block.start).replace(replaceRE, ' ');
756 }
757 else {
758 var offset = source.slice(0, block.start).split(splitRE).length;
759 var padChar = block.type === 'script' && !block.lang ? '//\n' : '\n';
760 return Array(offset).join(padChar);
761 }
762 }
763 parseHTML(source, {
764 warn: warn,
765 start: start,
766 end: end,
767 outputSourceRange: options.outputSourceRange
768 });
769 return sfc;
770 }
771
772 // can we use __proto__?
773 var hasProto = '__proto__' in {};
774 // Browser environment sniffing
775 var inBrowser = typeof window !== 'undefined';
776 var UA = inBrowser && window.navigator.userAgent.toLowerCase();
777 var isIE = UA && /msie|trident/.test(UA);
778 UA && UA.indexOf('msie 9.0') > 0;
779 var isEdge = UA && UA.indexOf('edge/') > 0;
780 UA && UA.indexOf('android') > 0;
781 UA && /iphone|ipad|ipod|ios/.test(UA);
782 UA && /chrome\/\d+/.test(UA) && !isEdge;
783 UA && /phantomjs/.test(UA);
784 UA && UA.match(/firefox\/(\d+)/);
785 // Firefox has a "watch" function on Object.prototype...
786 // @ts-expect-error firebox support
787 var nativeWatch = {}.watch;
788 var supportsPassive = false;
789 if (inBrowser) {
790 try {
791 var opts = {};
792 Object.defineProperty(opts, 'passive', {
793 get: function () {
794 /* istanbul ignore next */
795 supportsPassive = true;
796 }
797 }); // https://github.com/facebook/flow/issues/285
798 window.addEventListener('test-passive', null, opts);
799 }
800 catch (e) { }
801 }
802 // this needs to be lazy-evaled because vue may be required before
803 // vue-server-renderer can set VUE_ENV
804 var _isServer;
805 var isServerRendering = function () {
806 if (_isServer === undefined) {
807 /* istanbul ignore if */
808 if (!inBrowser && typeof global !== 'undefined') {
809 // detect presence of vue-server-renderer and avoid
810 // Webpack shimming the process
811 _isServer =
812 global['process'] && global['process'].env.VUE_ENV === 'server';
813 }
814 else {
815 _isServer = false;
816 }
817 }
818 return _isServer;
819 };
820 /* istanbul ignore next */
821 function isNative(Ctor) {
822 return typeof Ctor === 'function' && /native code/.test(Ctor.toString());
823 }
824 var hasSymbol = typeof Symbol !== 'undefined' &&
825 isNative(Symbol) &&
826 typeof Reflect !== 'undefined' &&
827 isNative(Reflect.ownKeys);
828 var _Set; // $flow-disable-line
829 /* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {
830 // use native Set when available.
831 _Set = Set;
832 }
833 else {
834 // a non-standard Set polyfill that only works with primitive keys.
835 _Set = /** @class */ (function () {
836 function Set() {
837 this.set = Object.create(null);
838 }
839 Set.prototype.has = function (key) {
840 return this.set[key] === true;
841 };
842 Set.prototype.add = function (key) {
843 this.set[key] = true;
844 };
845 Set.prototype.clear = function () {
846 this.set = Object.create(null);
847 };
848 return Set;
849 }());
850 }
851
852 var ASSET_TYPES = ['component', 'directive', 'filter'];
853 var LIFECYCLE_HOOKS = [
854 'beforeCreate',
855 'created',
856 'beforeMount',
857 'mounted',
858 'beforeUpdate',
859 'updated',
860 'beforeDestroy',
861 'destroyed',
862 'activated',
863 'deactivated',
864 'errorCaptured',
865 'serverPrefetch',
866 'renderTracked',
867 'renderTriggered'
868 ];
869
870 var config = {
871 /**
872 * Option merge strategies (used in core/util/options)
873 */
874 // $flow-disable-line
875 optionMergeStrategies: Object.create(null),
876 /**
877 * Whether to suppress warnings.
878 */
879 silent: false,
880 /**
881 * Show production mode tip message on boot?
882 */
883 productionTip: true,
884 /**
885 * Whether to enable devtools
886 */
887 devtools: true,
888 /**
889 * Whether to record perf
890 */
891 performance: false,
892 /**
893 * Error handler for watcher errors
894 */
895 errorHandler: null,
896 /**
897 * Warn handler for watcher warns
898 */
899 warnHandler: null,
900 /**
901 * Ignore certain custom elements
902 */
903 ignoredElements: [],
904 /**
905 * Custom user key aliases for v-on
906 */
907 // $flow-disable-line
908 keyCodes: Object.create(null),
909 /**
910 * Check if a tag is reserved so that it cannot be registered as a
911 * component. This is platform-dependent and may be overwritten.
912 */
913 isReservedTag: no,
914 /**
915 * Check if an attribute is reserved so that it cannot be used as a component
916 * prop. This is platform-dependent and may be overwritten.
917 */
918 isReservedAttr: no,
919 /**
920 * Check if a tag is an unknown element.
921 * Platform-dependent.
922 */
923 isUnknownElement: no,
924 /**
925 * Get the namespace of an element
926 */
927 getTagNamespace: noop,
928 /**
929 * Parse the real tag name for the specific platform.
930 */
931 parsePlatformTagName: identity,
932 /**
933 * Check if an attribute must be bound using property, e.g. value
934 * Platform-dependent.
935 */
936 mustUseProp: no,
937 /**
938 * Perform updates asynchronously. Intended to be used by Vue Test Utils
939 * This will significantly reduce performance if set to false.
940 */
941 async: true,
942 /**
943 * Exposed for legacy reasons
944 */
945 _lifecycleHooks: LIFECYCLE_HOOKS
946 };
947
948 var currentInstance = null;
949 /**
950 * @internal
951 */
952 function setCurrentInstance(vm) {
953 if (vm === void 0) { vm = null; }
954 if (!vm)
955 currentInstance && currentInstance._scope.off();
956 currentInstance = vm;
957 vm && vm._scope.on();
958 }
959
960 /**
961 * @internal
962 */
963 var VNode = /** @class */ (function () {
964 function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {
965 this.tag = tag;
966 this.data = data;
967 this.children = children;
968 this.text = text;
969 this.elm = elm;
970 this.ns = undefined;
971 this.context = context;
972 this.fnContext = undefined;
973 this.fnOptions = undefined;
974 this.fnScopeId = undefined;
975 this.key = data && data.key;
976 this.componentOptions = componentOptions;
977 this.componentInstance = undefined;
978 this.parent = undefined;
979 this.raw = false;
980 this.isStatic = false;
981 this.isRootInsert = true;
982 this.isComment = false;
983 this.isCloned = false;
984 this.isOnce = false;
985 this.asyncFactory = asyncFactory;
986 this.asyncMeta = undefined;
987 this.isAsyncPlaceholder = false;
988 }
989 Object.defineProperty(VNode.prototype, "child", {
990 // DEPRECATED: alias for componentInstance for backwards compat.
991 /* istanbul ignore next */
992 get: function () {
993 return this.componentInstance;
994 },
995 enumerable: false,
996 configurable: true
997 });
998 return VNode;
999 }());
1000 var createEmptyVNode = function (text) {
1001 if (text === void 0) { text = ''; }
1002 var node = new VNode();
1003 node.text = text;
1004 node.isComment = true;
1005 return node;
1006 };
1007 function createTextVNode(val) {
1008 return new VNode(undefined, undefined, undefined, String(val));
1009 }
1010 // optimized shallow clone
1011 // used for static nodes and slot nodes because they may be reused across
1012 // multiple renders, cloning them avoids errors when DOM manipulations rely
1013 // on their elm reference.
1014 function cloneVNode(vnode) {
1015 var cloned = new VNode(vnode.tag, vnode.data,
1016 // #7975
1017 // clone children array to avoid mutating original in case of cloning
1018 // a child.
1019 vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);
1020 cloned.ns = vnode.ns;
1021 cloned.isStatic = vnode.isStatic;
1022 cloned.key = vnode.key;
1023 cloned.isComment = vnode.isComment;
1024 cloned.fnContext = vnode.fnContext;
1025 cloned.fnOptions = vnode.fnOptions;
1026 cloned.fnScopeId = vnode.fnScopeId;
1027 cloned.asyncMeta = vnode.asyncMeta;
1028 cloned.isCloned = true;
1029 return cloned;
1030 }
1031
1032 /* not type checking this file because flow doesn't play well with Proxy */
1033 {
1034 makeMap('Infinity,undefined,NaN,isFinite,isNaN,' +
1035 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
1036 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +
1037 'require' // for Webpack/Browserify
1038 );
1039 var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy);
1040 if (hasProxy_1) {
1041 var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
1042 config.keyCodes = new Proxy(config.keyCodes, {
1043 set: function (target, key, value) {
1044 if (isBuiltInModifier_1(key)) {
1045 warn$2("Avoid overwriting built-in modifier in config.keyCodes: .".concat(key));
1046 return false;
1047 }
1048 else {
1049 target[key] = value;
1050 return true;
1051 }
1052 }
1053 });
1054 }
1055 }
1056
1057 /******************************************************************************
1058 Copyright (c) Microsoft Corporation.
1059
1060 Permission to use, copy, modify, and/or distribute this software for any
1061 purpose with or without fee is hereby granted.
1062
1063 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1064 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1065 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1066 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1067 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1068 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1069 PERFORMANCE OF THIS SOFTWARE.
1070 ***************************************************************************** */
1071
1072 var __assign = function() {
1073 __assign = Object.assign || function __assign(t) {
1074 for (var s, i = 1, n = arguments.length; i < n; i++) {
1075 s = arguments[i];
1076 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
1077 }
1078 return t;
1079 };
1080 return __assign.apply(this, arguments);
1081 };
1082
1083 var uid = 0;
1084 /**
1085 * A dep is an observable that can have multiple
1086 * directives subscribing to it.
1087 * @internal
1088 */
1089 var Dep = /** @class */ (function () {
1090 function Dep() {
1091 this.id = uid++;
1092 this.subs = [];
1093 }
1094 Dep.prototype.addSub = function (sub) {
1095 this.subs.push(sub);
1096 };
1097 Dep.prototype.removeSub = function (sub) {
1098 remove$1(this.subs, sub);
1099 };
1100 Dep.prototype.depend = function (info) {
1101 if (Dep.target) {
1102 Dep.target.addDep(this);
1103 if (info && Dep.target.onTrack) {
1104 Dep.target.onTrack(__assign({ effect: Dep.target }, info));
1105 }
1106 }
1107 };
1108 Dep.prototype.notify = function (info) {
1109 // stabilize the subscriber list first
1110 var subs = this.subs.slice();
1111 for (var i = 0, l = subs.length; i < l; i++) {
1112 if (info) {
1113 var sub = subs[i];
1114 sub.onTrigger &&
1115 sub.onTrigger(__assign({ effect: subs[i] }, info));
1116 }
1117 subs[i].update();
1118 }
1119 };
1120 return Dep;
1121 }());
1122 // The current target watcher being evaluated.
1123 // This is globally unique because only one watcher
1124 // can be evaluated at a time.
1125 Dep.target = null;
1126 var targetStack = [];
1127 function pushTarget(target) {
1128 targetStack.push(target);
1129 Dep.target = target;
1130 }
1131 function popTarget() {
1132 targetStack.pop();
1133 Dep.target = targetStack[targetStack.length - 1];
1134 }
1135
1136 /*
1137 * not type checking this file because flow doesn't play well with
1138 * dynamically accessing methods on Array prototype
1139 */
1140 var arrayProto = Array.prototype;
1141 var arrayMethods = Object.create(arrayProto);
1142 var methodsToPatch = [
1143 'push',
1144 'pop',
1145 'shift',
1146 'unshift',
1147 'splice',
1148 'sort',
1149 'reverse'
1150 ];
1151 /**
1152 * Intercept mutating methods and emit events
1153 */
1154 methodsToPatch.forEach(function (method) {
1155 // cache original method
1156 var original = arrayProto[method];
1157 def(arrayMethods, method, function mutator() {
1158 var args = [];
1159 for (var _i = 0; _i < arguments.length; _i++) {
1160 args[_i] = arguments[_i];
1161 }
1162 var result = original.apply(this, args);
1163 var ob = this.__ob__;
1164 var inserted;
1165 switch (method) {
1166 case 'push':
1167 case 'unshift':
1168 inserted = args;
1169 break;
1170 case 'splice':
1171 inserted = args.slice(2);
1172 break;
1173 }
1174 if (inserted)
1175 ob.observeArray(inserted);
1176 // notify change
1177 {
1178 ob.dep.notify({
1179 type: "array mutation" /* TriggerOpTypes.ARRAY_MUTATION */,
1180 target: this,
1181 key: method
1182 });
1183 }
1184 return result;
1185 });
1186 });
1187
1188 var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
1189 var NO_INIITIAL_VALUE = {};
1190 /**
1191 * In some cases we may want to disable observation inside a component's
1192 * update computation.
1193 */
1194 var shouldObserve = true;
1195 function toggleObserving(value) {
1196 shouldObserve = value;
1197 }
1198 // ssr mock dep
1199 var mockDep = {
1200 notify: noop,
1201 depend: noop,
1202 addSub: noop,
1203 removeSub: noop
1204 };
1205 /**
1206 * Observer class that is attached to each observed
1207 * object. Once attached, the observer converts the target
1208 * object's property keys into getter/setters that
1209 * collect dependencies and dispatch updates.
1210 */
1211 var Observer = /** @class */ (function () {
1212 function Observer(value, shallow, mock) {
1213 if (shallow === void 0) { shallow = false; }
1214 if (mock === void 0) { mock = false; }
1215 this.value = value;
1216 this.shallow = shallow;
1217 this.mock = mock;
1218 // this.value = value
1219 this.dep = mock ? mockDep : new Dep();
1220 this.vmCount = 0;
1221 def(value, '__ob__', this);
1222 if (isArray(value)) {
1223 if (!mock) {
1224 if (hasProto) {
1225 value.__proto__ = arrayMethods;
1226 /* eslint-enable no-proto */
1227 }
1228 else {
1229 for (var i = 0, l = arrayKeys.length; i < l; i++) {
1230 var key = arrayKeys[i];
1231 def(value, key, arrayMethods[key]);
1232 }
1233 }
1234 }
1235 if (!shallow) {
1236 this.observeArray(value);
1237 }
1238 }
1239 else {
1240 /**
1241 * Walk through all properties and convert them into
1242 * getter/setters. This method should only be called when
1243 * value type is Object.
1244 */
1245 var keys = Object.keys(value);
1246 for (var i = 0; i < keys.length; i++) {
1247 var key = keys[i];
1248 defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);
1249 }
1250 }
1251 }
1252 /**
1253 * Observe a list of Array items.
1254 */
1255 Observer.prototype.observeArray = function (value) {
1256 for (var i = 0, l = value.length; i < l; i++) {
1257 observe(value[i], false, this.mock);
1258 }
1259 };
1260 return Observer;
1261 }());
1262 // helpers
1263 /**
1264 * Attempt to create an observer instance for a value,
1265 * returns the new observer if successfully observed,
1266 * or the existing observer if the value already has one.
1267 */
1268 function observe(value, shallow, ssrMockReactivity) {
1269 if (!isObject(value) || isRef(value) || value instanceof VNode) {
1270 return;
1271 }
1272 var ob;
1273 if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
1274 ob = value.__ob__;
1275 }
1276 else if (shouldObserve &&
1277 (ssrMockReactivity || !isServerRendering()) &&
1278 (isArray(value) || isPlainObject(value)) &&
1279 Object.isExtensible(value) &&
1280 !value.__v_skip /* ReactiveFlags.SKIP */) {
1281 ob = new Observer(value, shallow, ssrMockReactivity);
1282 }
1283 return ob;
1284 }
1285 /**
1286 * Define a reactive property on an Object.
1287 */
1288 function defineReactive(obj, key, val, customSetter, shallow, mock) {
1289 var dep = new Dep();
1290 var property = Object.getOwnPropertyDescriptor(obj, key);
1291 if (property && property.configurable === false) {
1292 return;
1293 }
1294 // cater for pre-defined getter/setters
1295 var getter = property && property.get;
1296 var setter = property && property.set;
1297 if ((!getter || setter) &&
1298 (val === NO_INIITIAL_VALUE || arguments.length === 2)) {
1299 val = obj[key];
1300 }
1301 var childOb = !shallow && observe(val, false, mock);
1302 Object.defineProperty(obj, key, {
1303 enumerable: true,
1304 configurable: true,
1305 get: function reactiveGetter() {
1306 var value = getter ? getter.call(obj) : val;
1307 if (Dep.target) {
1308 {
1309 dep.depend({
1310 target: obj,
1311 type: "get" /* TrackOpTypes.GET */,
1312 key: key
1313 });
1314 }
1315 if (childOb) {
1316 childOb.dep.depend();
1317 if (isArray(value)) {
1318 dependArray(value);
1319 }
1320 }
1321 }
1322 return isRef(value) && !shallow ? value.value : value;
1323 },
1324 set: function reactiveSetter(newVal) {
1325 var value = getter ? getter.call(obj) : val;
1326 if (!hasChanged(value, newVal)) {
1327 return;
1328 }
1329 if (customSetter) {
1330 customSetter();
1331 }
1332 if (setter) {
1333 setter.call(obj, newVal);
1334 }
1335 else if (getter) {
1336 // #7981: for accessor properties without setter
1337 return;
1338 }
1339 else if (!shallow && isRef(value) && !isRef(newVal)) {
1340 value.value = newVal;
1341 return;
1342 }
1343 else {
1344 val = newVal;
1345 }
1346 childOb = !shallow && observe(newVal, false, mock);
1347 {
1348 dep.notify({
1349 type: "set" /* TriggerOpTypes.SET */,
1350 target: obj,
1351 key: key,
1352 newValue: newVal,
1353 oldValue: value
1354 });
1355 }
1356 }
1357 });
1358 return dep;
1359 }
1360 function set(target, key, val) {
1361 if ((isUndef(target) || isPrimitive(target))) {
1362 warn$2("Cannot set reactive property on undefined, null, or primitive value: ".concat(target));
1363 }
1364 if (isReadonly(target)) {
1365 warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
1366 return;
1367 }
1368 var ob = target.__ob__;
1369 if (isArray(target) && isValidArrayIndex(key)) {
1370 target.length = Math.max(target.length, key);
1371 target.splice(key, 1, val);
1372 // when mocking for SSR, array methods are not hijacked
1373 if (ob && !ob.shallow && ob.mock) {
1374 observe(val, false, true);
1375 }
1376 return val;
1377 }
1378 if (key in target && !(key in Object.prototype)) {
1379 target[key] = val;
1380 return val;
1381 }
1382 if (target._isVue || (ob && ob.vmCount)) {
1383 warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +
1384 'at runtime - declare it upfront in the data option.');
1385 return val;
1386 }
1387 if (!ob) {
1388 target[key] = val;
1389 return val;
1390 }
1391 defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
1392 {
1393 ob.dep.notify({
1394 type: "add" /* TriggerOpTypes.ADD */,
1395 target: target,
1396 key: key,
1397 newValue: val,
1398 oldValue: undefined
1399 });
1400 }
1401 return val;
1402 }
1403 /**
1404 * Collect dependencies on array elements when the array is touched, since
1405 * we cannot intercept array element access like property getters.
1406 */
1407 function dependArray(value) {
1408 for (var e = void 0, i = 0, l = value.length; i < l; i++) {
1409 e = value[i];
1410 if (e && e.__ob__) {
1411 e.__ob__.dep.depend();
1412 }
1413 if (isArray(e)) {
1414 dependArray(e);
1415 }
1416 }
1417 }
1418
1419 function isReadonly(value) {
1420 return !!(value && value.__v_isReadonly);
1421 }
1422
1423 function isRef(r) {
1424 return !!(r && r.__v_isRef === true);
1425 }
1426
1427 {
1428 var perf_1 = inBrowser && window.performance;
1429 /* istanbul ignore if */
1430 if (perf_1 &&
1431 // @ts-ignore
1432 perf_1.mark &&
1433 // @ts-ignore
1434 perf_1.measure &&
1435 // @ts-ignore
1436 perf_1.clearMarks &&
1437 // @ts-ignore
1438 perf_1.clearMeasures) ;
1439 }
1440
1441 var normalizeEvent = cached(function (name) {
1442 var passive = name.charAt(0) === '&';
1443 name = passive ? name.slice(1) : name;
1444 var once = name.charAt(0) === '~'; // Prefixed last, checked first
1445 name = once ? name.slice(1) : name;
1446 var capture = name.charAt(0) === '!';
1447 name = capture ? name.slice(1) : name;
1448 return {
1449 name: name,
1450 once: once,
1451 capture: capture,
1452 passive: passive
1453 };
1454 });
1455 function createFnInvoker(fns, vm) {
1456 function invoker() {
1457 var fns = invoker.fns;
1458 if (isArray(fns)) {
1459 var cloned = fns.slice();
1460 for (var i = 0; i < cloned.length; i++) {
1461 invokeWithErrorHandling(cloned[i], null, arguments, vm, "v-on handler");
1462 }
1463 }
1464 else {
1465 // return handler return value for single handlers
1466 return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler");
1467 }
1468 }
1469 invoker.fns = fns;
1470 return invoker;
1471 }
1472 function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {
1473 var name, cur, old, event;
1474 for (name in on) {
1475 cur = on[name];
1476 old = oldOn[name];
1477 event = normalizeEvent(name);
1478 if (isUndef(cur)) {
1479 warn$2("Invalid handler for event \"".concat(event.name, "\": got ") + String(cur), vm);
1480 }
1481 else if (isUndef(old)) {
1482 if (isUndef(cur.fns)) {
1483 cur = on[name] = createFnInvoker(cur, vm);
1484 }
1485 if (isTrue(event.once)) {
1486 cur = on[name] = createOnceHandler(event.name, cur, event.capture);
1487 }
1488 add(event.name, cur, event.capture, event.passive, event.params);
1489 }
1490 else if (cur !== old) {
1491 old.fns = cur;
1492 on[name] = old;
1493 }
1494 }
1495 for (name in oldOn) {
1496 if (isUndef(on[name])) {
1497 event = normalizeEvent(name);
1498 remove(event.name, oldOn[name], event.capture);
1499 }
1500 }
1501 }
1502
1503 function extractPropsFromVNodeData(data, Ctor, tag) {
1504 // we are only extracting raw values here.
1505 // validation and default values are handled in the child
1506 // component itself.
1507 var propOptions = Ctor.options.props;
1508 if (isUndef(propOptions)) {
1509 return;
1510 }
1511 var res = {};
1512 var attrs = data.attrs, props = data.props;
1513 if (isDef(attrs) || isDef(props)) {
1514 for (var key in propOptions) {
1515 var altKey = hyphenate(key);
1516 {
1517 var keyInLowerCase = key.toLowerCase();
1518 if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {
1519 tip("Prop \"".concat(keyInLowerCase, "\" is passed to component ") +
1520 "".concat(formatComponentName(
1521 // @ts-expect-error tag is string
1522 tag || Ctor), ", but the declared prop name is") +
1523 " \"".concat(key, "\". ") +
1524 "Note that HTML attributes are case-insensitive and camelCased " +
1525 "props need to use their kebab-case equivalents when using in-DOM " +
1526 "templates. You should probably use \"".concat(altKey, "\" instead of \"").concat(key, "\"."));
1527 }
1528 }
1529 checkProp(res, props, key, altKey, true) ||
1530 checkProp(res, attrs, key, altKey, false);
1531 }
1532 }
1533 return res;
1534 }
1535 function checkProp(res, hash, key, altKey, preserve) {
1536 if (isDef(hash)) {
1537 if (hasOwn(hash, key)) {
1538 res[key] = hash[key];
1539 if (!preserve) {
1540 delete hash[key];
1541 }
1542 return true;
1543 }
1544 else if (hasOwn(hash, altKey)) {
1545 res[key] = hash[altKey];
1546 if (!preserve) {
1547 delete hash[altKey];
1548 }
1549 return true;
1550 }
1551 }
1552 return false;
1553 }
1554
1555 // The template compiler attempts to minimize the need for normalization by
1556 // statically analyzing the template at compile time.
1557 //
1558 // For plain HTML markup, normalization can be completely skipped because the
1559 // generated render function is guaranteed to return Array<VNode>. There are
1560 // two cases where extra normalization is needed:
1561 // 1. When the children contains components - because a functional component
1562 // may return an Array instead of a single root. In this case, just a simple
1563 // normalization is needed - if any child is an Array, we flatten the whole
1564 // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
1565 // because functional components already normalize their own children.
1566 function simpleNormalizeChildren(children) {
1567 for (var i = 0; i < children.length; i++) {
1568 if (isArray(children[i])) {
1569 return Array.prototype.concat.apply([], children);
1570 }
1571 }
1572 return children;
1573 }
1574 // 2. When the children contains constructs that always generated nested Arrays,
1575 // e.g. <template>, <slot>, v-for, or when the children is provided by user
1576 // with hand-written render functions / JSX. In such cases a full normalization
1577 // is needed to cater to all possible types of children values.
1578 function normalizeChildren(children) {
1579 return isPrimitive(children)
1580 ? [createTextVNode(children)]
1581 : isArray(children)
1582 ? normalizeArrayChildren(children)
1583 : undefined;
1584 }
1585 function isTextNode(node) {
1586 return isDef(node) && isDef(node.text) && isFalse(node.isComment);
1587 }
1588 function normalizeArrayChildren(children, nestedIndex) {
1589 var res = [];
1590 var i, c, lastIndex, last;
1591 for (i = 0; i < children.length; i++) {
1592 c = children[i];
1593 if (isUndef(c) || typeof c === 'boolean')
1594 continue;
1595 lastIndex = res.length - 1;
1596 last = res[lastIndex];
1597 // nested
1598 if (isArray(c)) {
1599 if (c.length > 0) {
1600 c = normalizeArrayChildren(c, "".concat(nestedIndex || '', "_").concat(i));
1601 // merge adjacent text nodes
1602 if (isTextNode(c[0]) && isTextNode(last)) {
1603 res[lastIndex] = createTextVNode(last.text + c[0].text);
1604 c.shift();
1605 }
1606 res.push.apply(res, c);
1607 }
1608 }
1609 else if (isPrimitive(c)) {
1610 if (isTextNode(last)) {
1611 // merge adjacent text nodes
1612 // this is necessary for SSR hydration because text nodes are
1613 // essentially merged when rendered to HTML strings
1614 res[lastIndex] = createTextVNode(last.text + c);
1615 }
1616 else if (c !== '') {
1617 // convert primitive to vnode
1618 res.push(createTextVNode(c));
1619 }
1620 }
1621 else {
1622 if (isTextNode(c) && isTextNode(last)) {
1623 // merge adjacent text nodes
1624 res[lastIndex] = createTextVNode(last.text + c.text);
1625 }
1626 else {
1627 // default key for nested array children (likely generated by v-for)
1628 if (isTrue(children._isVList) &&
1629 isDef(c.tag) &&
1630 isUndef(c.key) &&
1631 isDef(nestedIndex)) {
1632 c.key = "__vlist".concat(nestedIndex, "_").concat(i, "__");
1633 }
1634 res.push(c);
1635 }
1636 }
1637 }
1638 return res;
1639 }
1640
1641 var SIMPLE_NORMALIZE = 1;
1642 var ALWAYS_NORMALIZE = 2;
1643 // wrapper function for providing a more flexible interface
1644 // without getting yelled at by flow
1645 function createElement(context, tag, data, children, normalizationType, alwaysNormalize) {
1646 if (isArray(data) || isPrimitive(data)) {
1647 normalizationType = children;
1648 children = data;
1649 data = undefined;
1650 }
1651 if (isTrue(alwaysNormalize)) {
1652 normalizationType = ALWAYS_NORMALIZE;
1653 }
1654 return _createElement(context, tag, data, children, normalizationType);
1655 }
1656 function _createElement(context, tag, data, children, normalizationType) {
1657 if (isDef(data) && isDef(data.__ob__)) {
1658 warn$2("Avoid using observed data object as vnode data: ".concat(JSON.stringify(data), "\n") + 'Always create fresh vnode data objects in each render!', context);
1659 return createEmptyVNode();
1660 }
1661 // object syntax in v-bind
1662 if (isDef(data) && isDef(data.is)) {
1663 tag = data.is;
1664 }
1665 if (!tag) {
1666 // in case of component :is set to falsy value
1667 return createEmptyVNode();
1668 }
1669 // warn against non-primitive key
1670 if (isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {
1671 warn$2('Avoid using non-primitive value as key, ' +
1672 'use string/number value instead.', context);
1673 }
1674 // support single function children as default scoped slot
1675 if (isArray(children) && isFunction(children[0])) {
1676 data = data || {};
1677 data.scopedSlots = { default: children[0] };
1678 children.length = 0;
1679 }
1680 if (normalizationType === ALWAYS_NORMALIZE) {
1681 children = normalizeChildren(children);
1682 }
1683 else if (normalizationType === SIMPLE_NORMALIZE) {
1684 children = simpleNormalizeChildren(children);
1685 }
1686 var vnode, ns;
1687 if (typeof tag === 'string') {
1688 var Ctor = void 0;
1689 ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
1690 if ((!data || !data.pre) &&
1691 isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {
1692 // component
1693 vnode = createComponent(Ctor, data, context, children, tag);
1694 }
1695 else {
1696 // unknown or unlisted namespaced elements
1697 // check at runtime because it may get assigned a namespace when its
1698 // parent normalizes children
1699 vnode = new VNode(tag, data, children, undefined, undefined, context);
1700 }
1701 }
1702 else {
1703 // direct component options / constructor
1704 vnode = createComponent(tag, data, context, children);
1705 }
1706 if (isArray(vnode)) {
1707 return vnode;
1708 }
1709 else if (isDef(vnode)) {
1710 if (isDef(ns))
1711 applyNS(vnode, ns);
1712 if (isDef(data))
1713 registerDeepBindings(data);
1714 return vnode;
1715 }
1716 else {
1717 return createEmptyVNode();
1718 }
1719 }
1720 function applyNS(vnode, ns, force) {
1721 vnode.ns = ns;
1722 if (vnode.tag === 'foreignObject') {
1723 // use default namespace inside foreignObject
1724 ns = undefined;
1725 force = true;
1726 }
1727 if (isDef(vnode.children)) {
1728 for (var i = 0, l = vnode.children.length; i < l; i++) {
1729 var child = vnode.children[i];
1730 if (isDef(child.tag) &&
1731 (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
1732 applyNS(child, ns, force);
1733 }
1734 }
1735 }
1736 }
1737 // ref #5318
1738 // necessary to ensure parent re-render when deep bindings like :style and
1739 // :class are used on slot nodes
1740 function registerDeepBindings(data) {
1741 if (isObject(data.style)) {
1742 traverse(data.style);
1743 }
1744 if (isObject(data.class)) {
1745 traverse(data.class);
1746 }
1747 }
1748
1749 /**
1750 * Runtime helper for rendering v-for lists.
1751 */
1752 function renderList(val, render) {
1753 var ret = null, i, l, keys, key;
1754 if (isArray(val) || typeof val === 'string') {
1755 ret = new Array(val.length);
1756 for (i = 0, l = val.length; i < l; i++) {
1757 ret[i] = render(val[i], i);
1758 }
1759 }
1760 else if (typeof val === 'number') {
1761 ret = new Array(val);
1762 for (i = 0; i < val; i++) {
1763 ret[i] = render(i + 1, i);
1764 }
1765 }
1766 else if (isObject(val)) {
1767 if (hasSymbol && val[Symbol.iterator]) {
1768 ret = [];
1769 var iterator = val[Symbol.iterator]();
1770 var result = iterator.next();
1771 while (!result.done) {
1772 ret.push(render(result.value, ret.length));
1773 result = iterator.next();
1774 }
1775 }
1776 else {
1777 keys = Object.keys(val);
1778 ret = new Array(keys.length);
1779 for (i = 0, l = keys.length; i < l; i++) {
1780 key = keys[i];
1781 ret[i] = render(val[key], key, i);
1782 }
1783 }
1784 }
1785 if (!isDef(ret)) {
1786 ret = [];
1787 }
1788 ret._isVList = true;
1789 return ret;
1790 }
1791
1792 /**
1793 * Runtime helper for rendering <slot>
1794 */
1795 function renderSlot(name, fallbackRender, props, bindObject) {
1796 var scopedSlotFn = this.$scopedSlots[name];
1797 var nodes;
1798 if (scopedSlotFn) {
1799 // scoped slot
1800 props = props || {};
1801 if (bindObject) {
1802 if (!isObject(bindObject)) {
1803 warn$2('slot v-bind without argument expects an Object', this);
1804 }
1805 props = extend(extend({}, bindObject), props);
1806 }
1807 nodes =
1808 scopedSlotFn(props) ||
1809 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
1810 }
1811 else {
1812 nodes =
1813 this.$slots[name] ||
1814 (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);
1815 }
1816 var target = props && props.slot;
1817 if (target) {
1818 return this.$createElement('template', { slot: target }, nodes);
1819 }
1820 else {
1821 return nodes;
1822 }
1823 }
1824
1825 /**
1826 * Runtime helper for resolving filters
1827 */
1828 function resolveFilter(id) {
1829 return resolveAsset(this.$options, 'filters', id, true) || identity;
1830 }
1831
1832 function isKeyNotMatch(expect, actual) {
1833 if (isArray(expect)) {
1834 return expect.indexOf(actual) === -1;
1835 }
1836 else {
1837 return expect !== actual;
1838 }
1839 }
1840 /**
1841 * Runtime helper for checking keyCodes from config.
1842 * exposed as Vue.prototype._k
1843 * passing in eventKeyName as last argument separately for backwards compat
1844 */
1845 function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {
1846 var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
1847 if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
1848 return isKeyNotMatch(builtInKeyName, eventKeyName);
1849 }
1850 else if (mappedKeyCode) {
1851 return isKeyNotMatch(mappedKeyCode, eventKeyCode);
1852 }
1853 else if (eventKeyName) {
1854 return hyphenate(eventKeyName) !== key;
1855 }
1856 return eventKeyCode === undefined;
1857 }
1858
1859 /**
1860 * Runtime helper for merging v-bind="object" into a VNode's data.
1861 */
1862 function bindObjectProps(data, tag, value, asProp, isSync) {
1863 if (value) {
1864 if (!isObject(value)) {
1865 warn$2('v-bind without argument expects an Object or Array value', this);
1866 }
1867 else {
1868 if (isArray(value)) {
1869 value = toObject(value);
1870 }
1871 var hash = void 0;
1872 var _loop_1 = function (key) {
1873 if (key === 'class' || key === 'style' || isReservedAttribute(key)) {
1874 hash = data;
1875 }
1876 else {
1877 var type = data.attrs && data.attrs.type;
1878 hash =
1879 asProp || config.mustUseProp(tag, type, key)
1880 ? data.domProps || (data.domProps = {})
1881 : data.attrs || (data.attrs = {});
1882 }
1883 var camelizedKey = camelize(key);
1884 var hyphenatedKey = hyphenate(key);
1885 if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
1886 hash[key] = value[key];
1887 if (isSync) {
1888 var on = data.on || (data.on = {});
1889 on["update:".concat(key)] = function ($event) {
1890 value[key] = $event;
1891 };
1892 }
1893 }
1894 };
1895 for (var key in value) {
1896 _loop_1(key);
1897 }
1898 }
1899 }
1900 return data;
1901 }
1902
1903 /**
1904 * Runtime helper for rendering static trees.
1905 */
1906 function renderStatic(index, isInFor) {
1907 var cached = this._staticTrees || (this._staticTrees = []);
1908 var tree = cached[index];
1909 // if has already-rendered static tree and not inside v-for,
1910 // we can reuse the same tree.
1911 if (tree && !isInFor) {
1912 return tree;
1913 }
1914 // otherwise, render a fresh tree.
1915 tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates
1916 );
1917 markStatic$1(tree, "__static__".concat(index), false);
1918 return tree;
1919 }
1920 /**
1921 * Runtime helper for v-once.
1922 * Effectively it means marking the node as static with a unique key.
1923 */
1924 function markOnce(tree, index, key) {
1925 markStatic$1(tree, "__once__".concat(index).concat(key ? "_".concat(key) : ""), true);
1926 return tree;
1927 }
1928 function markStatic$1(tree, key, isOnce) {
1929 if (isArray(tree)) {
1930 for (var i = 0; i < tree.length; i++) {
1931 if (tree[i] && typeof tree[i] !== 'string') {
1932 markStaticNode(tree[i], "".concat(key, "_").concat(i), isOnce);
1933 }
1934 }
1935 }
1936 else {
1937 markStaticNode(tree, key, isOnce);
1938 }
1939 }
1940 function markStaticNode(node, key, isOnce) {
1941 node.isStatic = true;
1942 node.key = key;
1943 node.isOnce = isOnce;
1944 }
1945
1946 function bindObjectListeners(data, value) {
1947 if (value) {
1948 if (!isPlainObject(value)) {
1949 warn$2('v-on without argument expects an Object value', this);
1950 }
1951 else {
1952 var on = (data.on = data.on ? extend({}, data.on) : {});
1953 for (var key in value) {
1954 var existing = on[key];
1955 var ours = value[key];
1956 on[key] = existing ? [].concat(existing, ours) : ours;
1957 }
1958 }
1959 }
1960 return data;
1961 }
1962
1963 function resolveScopedSlots(fns, res,
1964 // the following are added in 2.6
1965 hasDynamicKeys, contentHashKey) {
1966 res = res || { $stable: !hasDynamicKeys };
1967 for (var i = 0; i < fns.length; i++) {
1968 var slot = fns[i];
1969 if (isArray(slot)) {
1970 resolveScopedSlots(slot, res, hasDynamicKeys);
1971 }
1972 else if (slot) {
1973 // marker for reverse proxying v-slot without scope on this.$slots
1974 // @ts-expect-error
1975 if (slot.proxy) {
1976 // @ts-expect-error
1977 slot.fn.proxy = true;
1978 }
1979 res[slot.key] = slot.fn;
1980 }
1981 }
1982 if (contentHashKey) {
1983 res.$key = contentHashKey;
1984 }
1985 return res;
1986 }
1987
1988 // helper to process dynamic keys for dynamic arguments in v-bind and v-on.
1989 function bindDynamicKeys(baseObj, values) {
1990 for (var i = 0; i < values.length; i += 2) {
1991 var key = values[i];
1992 if (typeof key === 'string' && key) {
1993 baseObj[values[i]] = values[i + 1];
1994 }
1995 else if (key !== '' && key !== null) {
1996 // null is a special value for explicitly removing a binding
1997 warn$2("Invalid value for dynamic directive argument (expected string or null): ".concat(key), this);
1998 }
1999 }
2000 return baseObj;
2001 }
2002 // helper to dynamically append modifier runtime markers to event names.
2003 // ensure only append when value is already string, otherwise it will be cast
2004 // to string and cause the type check to miss.
2005 function prependModifier(value, symbol) {
2006 return typeof value === 'string' ? symbol + value : value;
2007 }
2008
2009 function installRenderHelpers(target) {
2010 target._o = markOnce;
2011 target._n = toNumber;
2012 target._s = toString;
2013 target._l = renderList;
2014 target._t = renderSlot;
2015 target._q = looseEqual;
2016 target._i = looseIndexOf;
2017 target._m = renderStatic;
2018 target._f = resolveFilter;
2019 target._k = checkKeyCodes;
2020 target._b = bindObjectProps;
2021 target._v = createTextVNode;
2022 target._e = createEmptyVNode;
2023 target._u = resolveScopedSlots;
2024 target._g = bindObjectListeners;
2025 target._d = bindDynamicKeys;
2026 target._p = prependModifier;
2027 }
2028
2029 /**
2030 * Runtime helper for resolving raw children VNodes into a slot object.
2031 */
2032 function resolveSlots(children, context) {
2033 if (!children || !children.length) {
2034 return {};
2035 }
2036 var slots = {};
2037 for (var i = 0, l = children.length; i < l; i++) {
2038 var child = children[i];
2039 var data = child.data;
2040 // remove slot attribute if the node is resolved as a Vue slot node
2041 if (data && data.attrs && data.attrs.slot) {
2042 delete data.attrs.slot;
2043 }
2044 // named slots should only be respected if the vnode was rendered in the
2045 // same context.
2046 if ((child.context === context || child.fnContext === context) &&
2047 data &&
2048 data.slot != null) {
2049 var name_1 = data.slot;
2050 var slot = slots[name_1] || (slots[name_1] = []);
2051 if (child.tag === 'template') {
2052 slot.push.apply(slot, child.children || []);
2053 }
2054 else {
2055 slot.push(child);
2056 }
2057 }
2058 else {
2059 (slots.default || (slots.default = [])).push(child);
2060 }
2061 }
2062 // ignore slots that contains only whitespace
2063 for (var name_2 in slots) {
2064 if (slots[name_2].every(isWhitespace)) {
2065 delete slots[name_2];
2066 }
2067 }
2068 return slots;
2069 }
2070 function isWhitespace(node) {
2071 return (node.isComment && !node.asyncFactory) || node.text === ' ';
2072 }
2073
2074 function isAsyncPlaceholder(node) {
2075 // @ts-expect-error not really boolean type
2076 return node.isComment && node.asyncFactory;
2077 }
2078
2079 function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {
2080 var res;
2081 var hasNormalSlots = Object.keys(normalSlots).length > 0;
2082 var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;
2083 var key = scopedSlots && scopedSlots.$key;
2084 if (!scopedSlots) {
2085 res = {};
2086 }
2087 else if (scopedSlots._normalized) {
2088 // fast path 1: child component re-render only, parent did not change
2089 return scopedSlots._normalized;
2090 }
2091 else if (isStable &&
2092 prevScopedSlots &&
2093 prevScopedSlots !== emptyObject &&
2094 key === prevScopedSlots.$key &&
2095 !hasNormalSlots &&
2096 !prevScopedSlots.$hasNormal) {
2097 // fast path 2: stable scoped slots w/ no normal slots to proxy,
2098 // only need to normalize once
2099 return prevScopedSlots;
2100 }
2101 else {
2102 res = {};
2103 for (var key_1 in scopedSlots) {
2104 if (scopedSlots[key_1] && key_1[0] !== '$') {
2105 res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);
2106 }
2107 }
2108 }
2109 // expose normal slots on scopedSlots
2110 for (var key_2 in normalSlots) {
2111 if (!(key_2 in res)) {
2112 res[key_2] = proxyNormalSlot(normalSlots, key_2);
2113 }
2114 }
2115 // avoriaz seems to mock a non-extensible $scopedSlots object
2116 // and when that is passed down this would cause an error
2117 if (scopedSlots && Object.isExtensible(scopedSlots)) {
2118 scopedSlots._normalized = res;
2119 }
2120 def(res, '$stable', isStable);
2121 def(res, '$key', key);
2122 def(res, '$hasNormal', hasNormalSlots);
2123 return res;
2124 }
2125 function normalizeScopedSlot(vm, normalSlots, key, fn) {
2126 var normalized = function () {
2127 var cur = currentInstance;
2128 setCurrentInstance(vm);
2129 var res = arguments.length ? fn.apply(null, arguments) : fn({});
2130 res =
2131 res && typeof res === 'object' && !isArray(res)
2132 ? [res] // single vnode
2133 : normalizeChildren(res);
2134 var vnode = res && res[0];
2135 setCurrentInstance(cur);
2136 return res &&
2137 (!vnode ||
2138 (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391
2139 ? undefined
2140 : res;
2141 };
2142 // this is a slot using the new v-slot syntax without scope. although it is
2143 // compiled as a scoped slot, render fn users would expect it to be present
2144 // on this.$slots because the usage is semantically a normal slot.
2145 if (fn.proxy) {
2146 Object.defineProperty(normalSlots, key, {
2147 get: normalized,
2148 enumerable: true,
2149 configurable: true
2150 });
2151 }
2152 return normalized;
2153 }
2154 function proxyNormalSlot(slots, key) {
2155 return function () { return slots[key]; };
2156 }
2157
2158 function syncSetupProxy(to, from, prev, instance, type) {
2159 var changed = false;
2160 for (var key in from) {
2161 if (!(key in to)) {
2162 changed = true;
2163 defineProxyAttr(to, key, instance, type);
2164 }
2165 else if (from[key] !== prev[key]) {
2166 changed = true;
2167 }
2168 }
2169 for (var key in to) {
2170 if (!(key in from)) {
2171 changed = true;
2172 delete to[key];
2173 }
2174 }
2175 return changed;
2176 }
2177 function defineProxyAttr(proxy, key, instance, type) {
2178 Object.defineProperty(proxy, key, {
2179 enumerable: true,
2180 configurable: true,
2181 get: function () {
2182 return instance[type][key];
2183 }
2184 });
2185 }
2186
2187 function createAsyncPlaceholder(factory, data, context, children, tag) {
2188 var node = createEmptyVNode();
2189 node.asyncFactory = factory;
2190 node.asyncMeta = { data: data, context: context, children: children, tag: tag };
2191 return node;
2192 }
2193 function resolveAsyncComponent(factory, baseCtor) {
2194 if (isTrue(factory.error) && isDef(factory.errorComp)) {
2195 return factory.errorComp;
2196 }
2197 if (isDef(factory.resolved)) {
2198 return factory.resolved;
2199 }
2200 if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
2201 return factory.loadingComp;
2202 }
2203 }
2204
2205 var target;
2206 function add(event, fn) {
2207 target.$on(event, fn);
2208 }
2209 function remove(event, fn) {
2210 target.$off(event, fn);
2211 }
2212 function createOnceHandler(event, fn) {
2213 var _target = target;
2214 return function onceHandler() {
2215 var res = fn.apply(null, arguments);
2216 if (res !== null) {
2217 _target.$off(event, onceHandler);
2218 }
2219 };
2220 }
2221 function updateComponentListeners(vm, listeners, oldListeners) {
2222 target = vm;
2223 updateListeners(listeners, oldListeners || {}, add, remove, createOnceHandler, vm);
2224 target = undefined;
2225 }
2226
2227 var activeInstance = null;
2228 function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {
2229 // determine whether component has slot children
2230 // we need to do this before overwriting $options._renderChildren.
2231 // check if there are dynamic scopedSlots (hand-written or compiled but with
2232 // dynamic slot names). Static scoped slots compiled from template has the
2233 // "$stable" marker.
2234 var newScopedSlots = parentVnode.data.scopedSlots;
2235 var oldScopedSlots = vm.$scopedSlots;
2236 var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) ||
2237 (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
2238 (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||
2239 (!newScopedSlots && vm.$scopedSlots.$key));
2240 // Any static slot children from the parent may have changed during parent's
2241 // update. Dynamic scoped slots may also have changed. In such cases, a forced
2242 // update is necessary to ensure correctness.
2243 var needsForceUpdate = !!(renderChildren || // has new static slots
2244 vm.$options._renderChildren || // has old static slots
2245 hasDynamicScopedSlot);
2246 var prevVNode = vm.$vnode;
2247 vm.$options._parentVnode = parentVnode;
2248 vm.$vnode = parentVnode; // update vm's placeholder node without re-render
2249 if (vm._vnode) {
2250 // update child tree's parent
2251 vm._vnode.parent = parentVnode;
2252 }
2253 vm.$options._renderChildren = renderChildren;
2254 // update $attrs and $listeners hash
2255 // these are also reactive so they may trigger child update if the child
2256 // used them during render
2257 var attrs = parentVnode.data.attrs || emptyObject;
2258 if (vm._attrsProxy) {
2259 // force update if attrs are accessed and has changed since it may be
2260 // passed to a child component.
2261 if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) {
2262 needsForceUpdate = true;
2263 }
2264 }
2265 vm.$attrs = attrs;
2266 // update listeners
2267 listeners = listeners || emptyObject;
2268 var prevListeners = vm.$options._parentListeners;
2269 if (vm._listenersProxy) {
2270 syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners');
2271 }
2272 vm.$listeners = vm.$options._parentListeners = listeners;
2273 updateComponentListeners(vm, listeners, prevListeners);
2274 // update props
2275 if (propsData && vm.$options.props) {
2276 toggleObserving(false);
2277 var props = vm._props;
2278 var propKeys = vm.$options._propKeys || [];
2279 for (var i = 0; i < propKeys.length; i++) {
2280 var key = propKeys[i];
2281 var propOptions = vm.$options.props; // wtf flow?
2282 props[key] = validateProp(key, propOptions, propsData, vm);
2283 }
2284 toggleObserving(true);
2285 // keep a copy of raw propsData
2286 vm.$options.propsData = propsData;
2287 }
2288 // resolve slots + force update if has children
2289 if (needsForceUpdate) {
2290 vm.$slots = resolveSlots(renderChildren, parentVnode.context);
2291 vm.$forceUpdate();
2292 }
2293 }
2294 function isInInactiveTree(vm) {
2295 while (vm && (vm = vm.$parent)) {
2296 if (vm._inactive)
2297 return true;
2298 }
2299 return false;
2300 }
2301 function activateChildComponent(vm, direct) {
2302 if (direct) {
2303 vm._directInactive = false;
2304 if (isInInactiveTree(vm)) {
2305 return;
2306 }
2307 }
2308 else if (vm._directInactive) {
2309 return;
2310 }
2311 if (vm._inactive || vm._inactive === null) {
2312 vm._inactive = false;
2313 for (var i = 0; i < vm.$children.length; i++) {
2314 activateChildComponent(vm.$children[i]);
2315 }
2316 callHook(vm, 'activated');
2317 }
2318 }
2319 function deactivateChildComponent(vm, direct) {
2320 if (direct) {
2321 vm._directInactive = true;
2322 if (isInInactiveTree(vm)) {
2323 return;
2324 }
2325 }
2326 if (!vm._inactive) {
2327 vm._inactive = true;
2328 for (var i = 0; i < vm.$children.length; i++) {
2329 deactivateChildComponent(vm.$children[i]);
2330 }
2331 callHook(vm, 'deactivated');
2332 }
2333 }
2334 function callHook(vm, hook, args, setContext) {
2335 if (setContext === void 0) { setContext = true; }
2336 // #7573 disable dep collection when invoking lifecycle hooks
2337 pushTarget();
2338 var prev = currentInstance;
2339 setContext && setCurrentInstance(vm);
2340 var handlers = vm.$options[hook];
2341 var info = "".concat(hook, " hook");
2342 if (handlers) {
2343 for (var i = 0, j = handlers.length; i < j; i++) {
2344 invokeWithErrorHandling(handlers[i], vm, args || null, vm, info);
2345 }
2346 }
2347 if (vm._hasHookEvent) {
2348 vm.$emit('hook:' + hook);
2349 }
2350 setContext && setCurrentInstance(prev);
2351 popTarget();
2352 }
2353
2354 // Async edge case fix requires storing an event listener's attach timestamp.
2355 var getNow = Date.now;
2356 // Determine what event timestamp the browser is using. Annoyingly, the
2357 // timestamp can either be hi-res (relative to page load) or low-res
2358 // (relative to UNIX epoch), so in order to compare time we have to use the
2359 // same timestamp type when saving the flush timestamp.
2360 // All IE versions use low-res event timestamps, and have problematic clock
2361 // implementations (#9632)
2362 if (inBrowser && !isIE) {
2363 var performance_1 = window.performance;
2364 if (performance_1 &&
2365 typeof performance_1.now === 'function' &&
2366 getNow() > document.createEvent('Event').timeStamp) {
2367 // if the event timestamp, although evaluated AFTER the Date.now(), is
2368 // smaller than it, it means the event is using a hi-res timestamp,
2369 // and we need to use the hi-res version for event listener timestamps as
2370 // well.
2371 getNow = function () { return performance_1.now(); };
2372 }
2373 }
2374 /**
2375 * Queue a kept-alive component that was activated during patch.
2376 * The queue will be processed after the entire tree has been patched.
2377 */
2378 function queueActivatedComponent(vm) {
2379 // setting _inactive to false here so that a render function can
2380 // rely on checking whether it's in an inactive tree (e.g. router-view)
2381 vm._inactive = false;
2382 }
2383
2384 function handleError(err, vm, info) {
2385 // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
2386 // See: https://github.com/vuejs/vuex/issues/1505
2387 pushTarget();
2388 try {
2389 if (vm) {
2390 var cur = vm;
2391 while ((cur = cur.$parent)) {
2392 var hooks = cur.$options.errorCaptured;
2393 if (hooks) {
2394 for (var i = 0; i < hooks.length; i++) {
2395 try {
2396 var capture = hooks[i].call(cur, err, vm, info) === false;
2397 if (capture)
2398 return;
2399 }
2400 catch (e) {
2401 globalHandleError(e, cur, 'errorCaptured hook');
2402 }
2403 }
2404 }
2405 }
2406 }
2407 globalHandleError(err, vm, info);
2408 }
2409 finally {
2410 popTarget();
2411 }
2412 }
2413 function invokeWithErrorHandling(handler, context, args, vm, info) {
2414 var res;
2415 try {
2416 res = args ? handler.apply(context, args) : handler.call(context);
2417 if (res && !res._isVue && isPromise(res) && !res._handled) {
2418 res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
2419 res._handled = true;
2420 }
2421 }
2422 catch (e) {
2423 handleError(e, vm, info);
2424 }
2425 return res;
2426 }
2427 function globalHandleError(err, vm, info) {
2428 logError(err, vm, info);
2429 }
2430 function logError(err, vm, info) {
2431 {
2432 warn$2("Error in ".concat(info, ": \"").concat(err.toString(), "\""), vm);
2433 }
2434 /* istanbul ignore else */
2435 if (inBrowser && typeof console !== 'undefined') {
2436 console.error(err);
2437 }
2438 else {
2439 throw err;
2440 }
2441 }
2442
2443 /* globals MutationObserver */
2444 var callbacks = [];
2445 function flushCallbacks() {
2446 var copies = callbacks.slice(0);
2447 callbacks.length = 0;
2448 for (var i = 0; i < copies.length; i++) {
2449 copies[i]();
2450 }
2451 }
2452 // The nextTick behavior leverages the microtask queue, which can be accessed
2453 // via either native Promise.then or MutationObserver.
2454 // MutationObserver has wider support, however it is seriously bugged in
2455 // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
2456 // completely stops working after triggering a few times... so, if native
2457 // Promise is available, we will use it:
2458 /* istanbul ignore next, $flow-disable-line */
2459 if (typeof Promise !== 'undefined' && isNative(Promise)) {
2460 Promise.resolve();
2461 }
2462 else if (!isIE &&
2463 typeof MutationObserver !== 'undefined' &&
2464 (isNative(MutationObserver) ||
2465 // PhantomJS and iOS 7.x
2466 MutationObserver.toString() === '[object MutationObserverConstructor]')) {
2467 // Use MutationObserver where native Promise is not available,
2468 // e.g. PhantomJS, iOS7, Android 4.4
2469 // (#6466 MutationObserver is unreliable in IE11)
2470 var counter_1 = 1;
2471 var observer = new MutationObserver(flushCallbacks);
2472 var textNode_1 = document.createTextNode(String(counter_1));
2473 observer.observe(textNode_1, {
2474 characterData: true
2475 });
2476 }
2477 else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) ;
2478 else ;
2479
2480 var seenObjects = new _Set();
2481 /**
2482 * Recursively traverse an object to evoke all converted
2483 * getters, so that every nested property inside the object
2484 * is collected as a "deep" dependency.
2485 */
2486 function traverse(val) {
2487 _traverse(val, seenObjects);
2488 seenObjects.clear();
2489 return val;
2490 }
2491 function _traverse(val, seen) {
2492 var i, keys;
2493 var isA = isArray(val);
2494 if ((!isA && !isObject(val)) ||
2495 Object.isFrozen(val) ||
2496 val instanceof VNode) {
2497 return;
2498 }
2499 if (val.__ob__) {
2500 var depId = val.__ob__.dep.id;
2501 if (seen.has(depId)) {
2502 return;
2503 }
2504 seen.add(depId);
2505 }
2506 if (isA) {
2507 i = val.length;
2508 while (i--)
2509 _traverse(val[i], seen);
2510 }
2511 else if (isRef(val)) {
2512 _traverse(val.value, seen);
2513 }
2514 else {
2515 keys = Object.keys(val);
2516 i = keys.length;
2517 while (i--)
2518 _traverse(val[keys[i]], seen);
2519 }
2520 }
2521
2522 function resolveInject(inject, vm) {
2523 if (inject) {
2524 // inject is :any because flow is not smart enough to figure out cached
2525 var result = Object.create(null);
2526 var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);
2527 for (var i = 0; i < keys.length; i++) {
2528 var key = keys[i];
2529 // #6574 in case the inject object is observed...
2530 if (key === '__ob__')
2531 continue;
2532 var provideKey = inject[key].from;
2533 if (provideKey in vm._provided) {
2534 result[key] = vm._provided[provideKey];
2535 }
2536 else if ('default' in inject[key]) {
2537 var provideDefault = inject[key].default;
2538 result[key] = isFunction(provideDefault)
2539 ? provideDefault.call(vm)
2540 : provideDefault;
2541 }
2542 else {
2543 warn$2("Injection \"".concat(key, "\" not found"), vm);
2544 }
2545 }
2546 return result;
2547 }
2548 }
2549
2550 function resolveConstructorOptions(Ctor) {
2551 var options = Ctor.options;
2552 if (Ctor.super) {
2553 var superOptions = resolveConstructorOptions(Ctor.super);
2554 var cachedSuperOptions = Ctor.superOptions;
2555 if (superOptions !== cachedSuperOptions) {
2556 // super option changed,
2557 // need to resolve new options.
2558 Ctor.superOptions = superOptions;
2559 // check if there are any late-modified/attached options (#4976)
2560 var modifiedOptions = resolveModifiedOptions(Ctor);
2561 // update base extend options
2562 if (modifiedOptions) {
2563 extend(Ctor.extendOptions, modifiedOptions);
2564 }
2565 options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
2566 if (options.name) {
2567 options.components[options.name] = Ctor;
2568 }
2569 }
2570 }
2571 return options;
2572 }
2573 function resolveModifiedOptions(Ctor) {
2574 var modified;
2575 var latest = Ctor.options;
2576 var sealed = Ctor.sealedOptions;
2577 for (var key in latest) {
2578 if (latest[key] !== sealed[key]) {
2579 if (!modified)
2580 modified = {};
2581 modified[key] = latest[key];
2582 }
2583 }
2584 return modified;
2585 }
2586
2587 function FunctionalRenderContext(data, props, children, parent, Ctor) {
2588 var _this = this;
2589 var options = Ctor.options;
2590 // ensure the createElement function in functional components
2591 // gets a unique context - this is necessary for correct named slot check
2592 var contextVm;
2593 if (hasOwn(parent, '_uid')) {
2594 contextVm = Object.create(parent);
2595 contextVm._original = parent;
2596 }
2597 else {
2598 // the context vm passed in is a functional context as well.
2599 // in this case we want to make sure we are able to get a hold to the
2600 // real context instance.
2601 contextVm = parent;
2602 // @ts-ignore
2603 parent = parent._original;
2604 }
2605 var isCompiled = isTrue(options._compiled);
2606 var needNormalization = !isCompiled;
2607 this.data = data;
2608 this.props = props;
2609 this.children = children;
2610 this.parent = parent;
2611 this.listeners = data.on || emptyObject;
2612 this.injections = resolveInject(options.inject, parent);
2613 this.slots = function () {
2614 if (!_this.$slots) {
2615 normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent)));
2616 }
2617 return _this.$slots;
2618 };
2619 Object.defineProperty(this, 'scopedSlots', {
2620 enumerable: true,
2621 get: function () {
2622 return normalizeScopedSlots(parent, data.scopedSlots, this.slots());
2623 }
2624 });
2625 // support for compiled functional template
2626 if (isCompiled) {
2627 // exposing $options for renderStatic()
2628 this.$options = options;
2629 // pre-resolve slots for renderSlot()
2630 this.$slots = this.slots();
2631 this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots);
2632 }
2633 if (options._scopeId) {
2634 this._c = function (a, b, c, d) {
2635 var vnode = createElement(contextVm, a, b, c, d, needNormalization);
2636 if (vnode && !isArray(vnode)) {
2637 vnode.fnScopeId = options._scopeId;
2638 vnode.fnContext = parent;
2639 }
2640 return vnode;
2641 };
2642 }
2643 else {
2644 this._c = function (a, b, c, d) {
2645 return createElement(contextVm, a, b, c, d, needNormalization);
2646 };
2647 }
2648 }
2649 installRenderHelpers(FunctionalRenderContext.prototype);
2650 function createFunctionalComponent(Ctor, propsData, data, contextVm, children) {
2651 var options = Ctor.options;
2652 var props = {};
2653 var propOptions = options.props;
2654 if (isDef(propOptions)) {
2655 for (var key in propOptions) {
2656 props[key] = validateProp(key, propOptions, propsData || emptyObject);
2657 }
2658 }
2659 else {
2660 if (isDef(data.attrs))
2661 mergeProps(props, data.attrs);
2662 if (isDef(data.props))
2663 mergeProps(props, data.props);
2664 }
2665 var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);
2666 var vnode = options.render.call(null, renderContext._c, renderContext);
2667 if (vnode instanceof VNode) {
2668 return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);
2669 }
2670 else if (isArray(vnode)) {
2671 var vnodes = normalizeChildren(vnode) || [];
2672 var res = new Array(vnodes.length);
2673 for (var i = 0; i < vnodes.length; i++) {
2674 res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
2675 }
2676 return res;
2677 }
2678 }
2679 function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {
2680 // #7817 clone node before setting fnContext, otherwise if the node is reused
2681 // (e.g. it was from a cached normal slot) the fnContext causes named slots
2682 // that should not be matched to match.
2683 var clone = cloneVNode(vnode);
2684 clone.fnContext = contextVm;
2685 clone.fnOptions = options;
2686 {
2687 (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext =
2688 renderContext;
2689 }
2690 if (data.slot) {
2691 (clone.data || (clone.data = {})).slot = data.slot;
2692 }
2693 return clone;
2694 }
2695 function mergeProps(to, from) {
2696 for (var key in from) {
2697 to[camelize(key)] = from[key];
2698 }
2699 }
2700
2701 function getComponentName(options) {
2702 return options.name || options.__name || options._componentTag;
2703 }
2704 // inline hooks to be invoked on component VNodes during patch
2705 var componentVNodeHooks = {
2706 init: function (vnode, hydrating) {
2707 if (vnode.componentInstance &&
2708 !vnode.componentInstance._isDestroyed &&
2709 vnode.data.keepAlive) {
2710 // kept-alive components, treat as a patch
2711 var mountedNode = vnode; // work around flow
2712 componentVNodeHooks.prepatch(mountedNode, mountedNode);
2713 }
2714 else {
2715 var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance));
2716 child.$mount(hydrating ? vnode.elm : undefined, hydrating);
2717 }
2718 },
2719 prepatch: function (oldVnode, vnode) {
2720 var options = vnode.componentOptions;
2721 var child = (vnode.componentInstance = oldVnode.componentInstance);
2722 updateChildComponent(child, options.propsData, // updated props
2723 options.listeners, // updated listeners
2724 vnode, // new parent vnode
2725 options.children // new children
2726 );
2727 },
2728 insert: function (vnode) {
2729 var context = vnode.context, componentInstance = vnode.componentInstance;
2730 if (!componentInstance._isMounted) {
2731 componentInstance._isMounted = true;
2732 callHook(componentInstance, 'mounted');
2733 }
2734 if (vnode.data.keepAlive) {
2735 if (context._isMounted) {
2736 // vue-router#1212
2737 // During updates, a kept-alive component's child components may
2738 // change, so directly walking the tree here may call activated hooks
2739 // on incorrect children. Instead we push them into a queue which will
2740 // be processed after the whole patch process ended.
2741 queueActivatedComponent(componentInstance);
2742 }
2743 else {
2744 activateChildComponent(componentInstance, true /* direct */);
2745 }
2746 }
2747 },
2748 destroy: function (vnode) {
2749 var componentInstance = vnode.componentInstance;
2750 if (!componentInstance._isDestroyed) {
2751 if (!vnode.data.keepAlive) {
2752 componentInstance.$destroy();
2753 }
2754 else {
2755 deactivateChildComponent(componentInstance, true /* direct */);
2756 }
2757 }
2758 }
2759 };
2760 var hooksToMerge = Object.keys(componentVNodeHooks);
2761 function createComponent(Ctor, data, context, children, tag) {
2762 if (isUndef(Ctor)) {
2763 return;
2764 }
2765 var baseCtor = context.$options._base;
2766 // plain options object: turn it into a constructor
2767 if (isObject(Ctor)) {
2768 Ctor = baseCtor.extend(Ctor);
2769 }
2770 // if at this stage it's not a constructor or an async component factory,
2771 // reject.
2772 if (typeof Ctor !== 'function') {
2773 {
2774 warn$2("Invalid Component definition: ".concat(String(Ctor)), context);
2775 }
2776 return;
2777 }
2778 // async component
2779 var asyncFactory;
2780 // @ts-expect-error
2781 if (isUndef(Ctor.cid)) {
2782 asyncFactory = Ctor;
2783 Ctor = resolveAsyncComponent(asyncFactory);
2784 if (Ctor === undefined) {
2785 // return a placeholder node for async component, which is rendered
2786 // as a comment node but preserves all the raw information for the node.
2787 // the information will be used for async server-rendering and hydration.
2788 return createAsyncPlaceholder(asyncFactory, data, context, children, tag);
2789 }
2790 }
2791 data = data || {};
2792 // resolve constructor options in case global mixins are applied after
2793 // component constructor creation
2794 resolveConstructorOptions(Ctor);
2795 // transform component v-model data into props & events
2796 if (isDef(data.model)) {
2797 // @ts-expect-error
2798 transformModel(Ctor.options, data);
2799 }
2800 // extract props
2801 // @ts-expect-error
2802 var propsData = extractPropsFromVNodeData(data, Ctor, tag);
2803 // functional component
2804 // @ts-expect-error
2805 if (isTrue(Ctor.options.functional)) {
2806 return createFunctionalComponent(Ctor, propsData, data, context, children);
2807 }
2808 // extract listeners, since these needs to be treated as
2809 // child component listeners instead of DOM listeners
2810 var listeners = data.on;
2811 // replace with listeners with .native modifier
2812 // so it gets processed during parent component patch.
2813 data.on = data.nativeOn;
2814 // @ts-expect-error
2815 if (isTrue(Ctor.options.abstract)) {
2816 // abstract components do not keep anything
2817 // other than props & listeners & slot
2818 // work around flow
2819 var slot = data.slot;
2820 data = {};
2821 if (slot) {
2822 data.slot = slot;
2823 }
2824 }
2825 // install component management hooks onto the placeholder node
2826 installComponentHooks(data);
2827 // return a placeholder vnode
2828 // @ts-expect-error
2829 var name = getComponentName(Ctor.options) || tag;
2830 var vnode = new VNode(
2831 // @ts-expect-error
2832 "vue-component-".concat(Ctor.cid).concat(name ? "-".concat(name) : ''), data, undefined, undefined, undefined, context,
2833 // @ts-expect-error
2834 { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory);
2835 return vnode;
2836 }
2837 function createComponentInstanceForVnode(
2838 // we know it's MountedComponentVNode but flow doesn't
2839 vnode,
2840 // activeInstance in lifecycle state
2841 parent) {
2842 var options = {
2843 _isComponent: true,
2844 _parentVnode: vnode,
2845 parent: parent
2846 };
2847 // check inline-template render functions
2848 var inlineTemplate = vnode.data.inlineTemplate;
2849 if (isDef(inlineTemplate)) {
2850 options.render = inlineTemplate.render;
2851 options.staticRenderFns = inlineTemplate.staticRenderFns;
2852 }
2853 return new vnode.componentOptions.Ctor(options);
2854 }
2855 function installComponentHooks(data) {
2856 var hooks = data.hook || (data.hook = {});
2857 for (var i = 0; i < hooksToMerge.length; i++) {
2858 var key = hooksToMerge[i];
2859 var existing = hooks[key];
2860 var toMerge = componentVNodeHooks[key];
2861 // @ts-expect-error
2862 if (existing !== toMerge && !(existing && existing._merged)) {
2863 hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge;
2864 }
2865 }
2866 }
2867 function mergeHook(f1, f2) {
2868 var merged = function (a, b) {
2869 // flow complains about extra args which is why we use any
2870 f1(a, b);
2871 f2(a, b);
2872 };
2873 merged._merged = true;
2874 return merged;
2875 }
2876 // transform component v-model info (value and callback) into
2877 // prop and event handler respectively.
2878 function transformModel(options, data) {
2879 var prop = (options.model && options.model.prop) || 'value';
2880 var event = (options.model && options.model.event) || 'input';
2881 (data.attrs || (data.attrs = {}))[prop] = data.model.value;
2882 var on = data.on || (data.on = {});
2883 var existing = on[event];
2884 var callback = data.model.callback;
2885 if (isDef(existing)) {
2886 if (isArray(existing)
2887 ? existing.indexOf(callback) === -1
2888 : existing !== callback) {
2889 on[event] = [callback].concat(existing);
2890 }
2891 }
2892 else {
2893 on[event] = callback;
2894 }
2895 }
2896
2897 var warn$2 = noop;
2898 var tip = noop;
2899 var generateComponentTrace; // work around flow check
2900 var formatComponentName;
2901 {
2902 var hasConsole_1 = typeof console !== 'undefined';
2903 var classifyRE_1 = /(?:^|[-_])(\w)/g;
2904 var classify_1 = function (str) {
2905 return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, '');
2906 };
2907 warn$2 = function (msg, vm) {
2908 if (vm === void 0) { vm = currentInstance; }
2909 var trace = vm ? generateComponentTrace(vm) : '';
2910 if (hasConsole_1 && !config.silent) {
2911 console.error("[Vue warn]: ".concat(msg).concat(trace));
2912 }
2913 };
2914 tip = function (msg, vm) {
2915 if (hasConsole_1 && !config.silent) {
2916 console.warn("[Vue tip]: ".concat(msg) + (vm ? generateComponentTrace(vm) : ''));
2917 }
2918 };
2919 formatComponentName = function (vm, includeFile) {
2920 if (vm.$root === vm) {
2921 return '<Root>';
2922 }
2923 var options = isFunction(vm) && vm.cid != null
2924 ? vm.options
2925 : vm._isVue
2926 ? vm.$options || vm.constructor.options
2927 : vm;
2928 var name = getComponentName(options);
2929 var file = options.__file;
2930 if (!name && file) {
2931 var match = file.match(/([^/\\]+)\.vue$/);
2932 name = match && match[1];
2933 }
2934 return ((name ? "<".concat(classify_1(name), ">") : "<Anonymous>") +
2935 (file && includeFile !== false ? " at ".concat(file) : ''));
2936 };
2937 var repeat_1 = function (str, n) {
2938 var res = '';
2939 while (n) {
2940 if (n % 2 === 1)
2941 res += str;
2942 if (n > 1)
2943 str += str;
2944 n >>= 1;
2945 }
2946 return res;
2947 };
2948 generateComponentTrace = function (vm) {
2949 if (vm._isVue && vm.$parent) {
2950 var tree = [];
2951 var currentRecursiveSequence = 0;
2952 while (vm) {
2953 if (tree.length > 0) {
2954 var last = tree[tree.length - 1];
2955 if (last.constructor === vm.constructor) {
2956 currentRecursiveSequence++;
2957 vm = vm.$parent;
2958 continue;
2959 }
2960 else if (currentRecursiveSequence > 0) {
2961 tree[tree.length - 1] = [last, currentRecursiveSequence];
2962 currentRecursiveSequence = 0;
2963 }
2964 }
2965 tree.push(vm);
2966 vm = vm.$parent;
2967 }
2968 return ('\n\nfound in\n\n' +
2969 tree
2970 .map(function (vm, i) {
2971 return "".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm)
2972 ? "".concat(formatComponentName(vm[0]), "... (").concat(vm[1], " recursive calls)")
2973 : formatComponentName(vm));
2974 })
2975 .join('\n'));
2976 }
2977 else {
2978 return "\n\n(found in ".concat(formatComponentName(vm), ")");
2979 }
2980 };
2981 }
2982
2983 /**
2984 * Option overwriting strategies are functions that handle
2985 * how to merge a parent option value and a child option
2986 * value into the final value.
2987 */
2988 var strats = config.optionMergeStrategies;
2989 /**
2990 * Options with restrictions
2991 */
2992 {
2993 strats.el = strats.propsData = function (parent, child, vm, key) {
2994 if (!vm) {
2995 warn$2("option \"".concat(key, "\" can only be used during instance ") +
2996 'creation with the `new` keyword.');
2997 }
2998 return defaultStrat(parent, child);
2999 };
3000 }
3001 /**
3002 * Helper that recursively merges two data objects together.
3003 */
3004 function mergeData(to, from) {
3005 if (!from)
3006 return to;
3007 var key, toVal, fromVal;
3008 var keys = hasSymbol
3009 ? Reflect.ownKeys(from)
3010 : Object.keys(from);
3011 for (var i = 0; i < keys.length; i++) {
3012 key = keys[i];
3013 // in case the object is already observed...
3014 if (key === '__ob__')
3015 continue;
3016 toVal = to[key];
3017 fromVal = from[key];
3018 if (!hasOwn(to, key)) {
3019 set(to, key, fromVal);
3020 }
3021 else if (toVal !== fromVal &&
3022 isPlainObject(toVal) &&
3023 isPlainObject(fromVal)) {
3024 mergeData(toVal, fromVal);
3025 }
3026 }
3027 return to;
3028 }
3029 /**
3030 * Data
3031 */
3032 function mergeDataOrFn(parentVal, childVal, vm) {
3033 if (!vm) {
3034 // in a Vue.extend merge, both should be functions
3035 if (!childVal) {
3036 return parentVal;
3037 }
3038 if (!parentVal) {
3039 return childVal;
3040 }
3041 // when parentVal & childVal are both present,
3042 // we need to return a function that returns the
3043 // merged result of both functions... no need to
3044 // check if parentVal is a function here because
3045 // it has to be a function to pass previous merges.
3046 return function mergedDataFn() {
3047 return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal);
3048 };
3049 }
3050 else {
3051 return function mergedInstanceDataFn() {
3052 // instance merge
3053 var instanceData = isFunction(childVal)
3054 ? childVal.call(vm, vm)
3055 : childVal;
3056 var defaultData = isFunction(parentVal)
3057 ? parentVal.call(vm, vm)
3058 : parentVal;
3059 if (instanceData) {
3060 return mergeData(instanceData, defaultData);
3061 }
3062 else {
3063 return defaultData;
3064 }
3065 };
3066 }
3067 }
3068 strats.data = function (parentVal, childVal, vm) {
3069 if (!vm) {
3070 if (childVal && typeof childVal !== 'function') {
3071 warn$2('The "data" option should be a function ' +
3072 'that returns a per-instance value in component ' +
3073 'definitions.', vm);
3074 return parentVal;
3075 }
3076 return mergeDataOrFn(parentVal, childVal);
3077 }
3078 return mergeDataOrFn(parentVal, childVal, vm);
3079 };
3080 /**
3081 * Hooks and props are merged as arrays.
3082 */
3083 function mergeLifecycleHook(parentVal, childVal) {
3084 var res = childVal
3085 ? parentVal
3086 ? parentVal.concat(childVal)
3087 : isArray(childVal)
3088 ? childVal
3089 : [childVal]
3090 : parentVal;
3091 return res ? dedupeHooks(res) : res;
3092 }
3093 function dedupeHooks(hooks) {
3094 var res = [];
3095 for (var i = 0; i < hooks.length; i++) {
3096 if (res.indexOf(hooks[i]) === -1) {
3097 res.push(hooks[i]);
3098 }
3099 }
3100 return res;
3101 }
3102 LIFECYCLE_HOOKS.forEach(function (hook) {
3103 strats[hook] = mergeLifecycleHook;
3104 });
3105 /**
3106 * Assets
3107 *
3108 * When a vm is present (instance creation), we need to do
3109 * a three-way merge between constructor options, instance
3110 * options and parent options.
3111 */
3112 function mergeAssets(parentVal, childVal, vm, key) {
3113 var res = Object.create(parentVal || null);
3114 if (childVal) {
3115 assertObjectType(key, childVal, vm);
3116 return extend(res, childVal);
3117 }
3118 else {
3119 return res;
3120 }
3121 }
3122 ASSET_TYPES.forEach(function (type) {
3123 strats[type + 's'] = mergeAssets;
3124 });
3125 /**
3126 * Watchers.
3127 *
3128 * Watchers hashes should not overwrite one
3129 * another, so we merge them as arrays.
3130 */
3131 strats.watch = function (parentVal, childVal, vm, key) {
3132 // work around Firefox's Object.prototype.watch...
3133 //@ts-expect-error work around
3134 if (parentVal === nativeWatch)
3135 parentVal = undefined;
3136 //@ts-expect-error work around
3137 if (childVal === nativeWatch)
3138 childVal = undefined;
3139 /* istanbul ignore if */
3140 if (!childVal)
3141 return Object.create(parentVal || null);
3142 {
3143 assertObjectType(key, childVal, vm);
3144 }
3145 if (!parentVal)
3146 return childVal;
3147 var ret = {};
3148 extend(ret, parentVal);
3149 for (var key_1 in childVal) {
3150 var parent_1 = ret[key_1];
3151 var child = childVal[key_1];
3152 if (parent_1 && !isArray(parent_1)) {
3153 parent_1 = [parent_1];
3154 }
3155 ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child];
3156 }
3157 return ret;
3158 };
3159 /**
3160 * Other object hashes.
3161 */
3162 strats.props =
3163 strats.methods =
3164 strats.inject =
3165 strats.computed =
3166 function (parentVal, childVal, vm, key) {
3167 if (childVal && true) {
3168 assertObjectType(key, childVal, vm);
3169 }
3170 if (!parentVal)
3171 return childVal;
3172 var ret = Object.create(null);
3173 extend(ret, parentVal);
3174 if (childVal)
3175 extend(ret, childVal);
3176 return ret;
3177 };
3178 strats.provide = mergeDataOrFn;
3179 /**
3180 * Default strategy.
3181 */
3182 var defaultStrat = function (parentVal, childVal) {
3183 return childVal === undefined ? parentVal : childVal;
3184 };
3185 /**
3186 * Validate component names
3187 */
3188 function checkComponents(options) {
3189 for (var key in options.components) {
3190 validateComponentName(key);
3191 }
3192 }
3193 function validateComponentName(name) {
3194 if (!new RegExp("^[a-zA-Z][\\-\\.0-9_".concat(unicodeRegExp.source, "]*$")).test(name)) {
3195 warn$2('Invalid component name: "' +
3196 name +
3197 '". Component names ' +
3198 'should conform to valid custom element name in html5 specification.');
3199 }
3200 if (isBuiltInTag(name) || config.isReservedTag(name)) {
3201 warn$2('Do not use built-in or reserved HTML elements as component ' +
3202 'id: ' +
3203 name);
3204 }
3205 }
3206 /**
3207 * Ensure all props option syntax are normalized into the
3208 * Object-based format.
3209 */
3210 function normalizeProps(options, vm) {
3211 var props = options.props;
3212 if (!props)
3213 return;
3214 var res = {};
3215 var i, val, name;
3216 if (isArray(props)) {
3217 i = props.length;
3218 while (i--) {
3219 val = props[i];
3220 if (typeof val === 'string') {
3221 name = camelize(val);
3222 res[name] = { type: null };
3223 }
3224 else {
3225 warn$2('props must be strings when using array syntax.');
3226 }
3227 }
3228 }
3229 else if (isPlainObject(props)) {
3230 for (var key in props) {
3231 val = props[key];
3232 name = camelize(key);
3233 res[name] = isPlainObject(val) ? val : { type: val };
3234 }
3235 }
3236 else {
3237 warn$2("Invalid value for option \"props\": expected an Array or an Object, " +
3238 "but got ".concat(toRawType(props), "."), vm);
3239 }
3240 options.props = res;
3241 }
3242 /**
3243 * Normalize all injections into Object-based format
3244 */
3245 function normalizeInject(options, vm) {
3246 var inject = options.inject;
3247 if (!inject)
3248 return;
3249 var normalized = (options.inject = {});
3250 if (isArray(inject)) {
3251 for (var i = 0; i < inject.length; i++) {
3252 normalized[inject[i]] = { from: inject[i] };
3253 }
3254 }
3255 else if (isPlainObject(inject)) {
3256 for (var key in inject) {
3257 var val = inject[key];
3258 normalized[key] = isPlainObject(val)
3259 ? extend({ from: key }, val)
3260 : { from: val };
3261 }
3262 }
3263 else {
3264 warn$2("Invalid value for option \"inject\": expected an Array or an Object, " +
3265 "but got ".concat(toRawType(inject), "."), vm);
3266 }
3267 }
3268 /**
3269 * Normalize raw function directives into object format.
3270 */
3271 function normalizeDirectives(options) {
3272 var dirs = options.directives;
3273 if (dirs) {
3274 for (var key in dirs) {
3275 var def = dirs[key];
3276 if (isFunction(def)) {
3277 dirs[key] = { bind: def, update: def };
3278 }
3279 }
3280 }
3281 }
3282 function assertObjectType(name, value, vm) {
3283 if (!isPlainObject(value)) {
3284 warn$2("Invalid value for option \"".concat(name, "\": expected an Object, ") +
3285 "but got ".concat(toRawType(value), "."), vm);
3286 }
3287 }
3288 /**
3289 * Merge two option objects into a new one.
3290 * Core utility used in both instantiation and inheritance.
3291 */
3292 function mergeOptions(parent, child, vm) {
3293 {
3294 checkComponents(child);
3295 }
3296 if (isFunction(child)) {
3297 // @ts-expect-error
3298 child = child.options;
3299 }
3300 normalizeProps(child, vm);
3301 normalizeInject(child, vm);
3302 normalizeDirectives(child);
3303 // Apply extends and mixins on the child options,
3304 // but only if it is a raw options object that isn't
3305 // the result of another mergeOptions call.
3306 // Only merged options has the _base property.
3307 if (!child._base) {
3308 if (child.extends) {
3309 parent = mergeOptions(parent, child.extends, vm);
3310 }
3311 if (child.mixins) {
3312 for (var i = 0, l = child.mixins.length; i < l; i++) {
3313 parent = mergeOptions(parent, child.mixins[i], vm);
3314 }
3315 }
3316 }
3317 var options = {};
3318 var key;
3319 for (key in parent) {
3320 mergeField(key);
3321 }
3322 for (key in child) {
3323 if (!hasOwn(parent, key)) {
3324 mergeField(key);
3325 }
3326 }
3327 function mergeField(key) {
3328 var strat = strats[key] || defaultStrat;
3329 options[key] = strat(parent[key], child[key], vm, key);
3330 }
3331 return options;
3332 }
3333 /**
3334 * Resolve an asset.
3335 * This function is used because child instances need access
3336 * to assets defined in its ancestor chain.
3337 */
3338 function resolveAsset(options, type, id, warnMissing) {
3339 /* istanbul ignore if */
3340 if (typeof id !== 'string') {
3341 return;
3342 }
3343 var assets = options[type];
3344 // check local registration variations first
3345 if (hasOwn(assets, id))
3346 return assets[id];
3347 var camelizedId = camelize(id);
3348 if (hasOwn(assets, camelizedId))
3349 return assets[camelizedId];
3350 var PascalCaseId = capitalize(camelizedId);
3351 if (hasOwn(assets, PascalCaseId))
3352 return assets[PascalCaseId];
3353 // fallback to prototype chain
3354 var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
3355 if (warnMissing && !res) {
3356 warn$2('Failed to resolve ' + type.slice(0, -1) + ': ' + id);
3357 }
3358 return res;
3359 }
3360
3361 function validateProp(key, propOptions, propsData, vm) {
3362 var prop = propOptions[key];
3363 var absent = !hasOwn(propsData, key);
3364 var value = propsData[key];
3365 // boolean casting
3366 var booleanIndex = getTypeIndex(Boolean, prop.type);
3367 if (booleanIndex > -1) {
3368 if (absent && !hasOwn(prop, 'default')) {
3369 value = false;
3370 }
3371 else if (value === '' || value === hyphenate(key)) {
3372 // only cast empty string / same name to boolean if
3373 // boolean has higher priority
3374 var stringIndex = getTypeIndex(String, prop.type);
3375 if (stringIndex < 0 || booleanIndex < stringIndex) {
3376 value = true;
3377 }
3378 }
3379 }
3380 // check default value
3381 if (value === undefined) {
3382 value = getPropDefaultValue(vm, prop, key);
3383 // since the default value is a fresh copy,
3384 // make sure to observe it.
3385 var prevShouldObserve = shouldObserve;
3386 toggleObserving(true);
3387 observe(value);
3388 toggleObserving(prevShouldObserve);
3389 }
3390 {
3391 assertProp(prop, key, value, vm, absent);
3392 }
3393 return value;
3394 }
3395 /**
3396 * Get the default value of a prop.
3397 */
3398 function getPropDefaultValue(vm, prop, key) {
3399 // no default, return undefined
3400 if (!hasOwn(prop, 'default')) {
3401 return undefined;
3402 }
3403 var def = prop.default;
3404 // warn against non-factory defaults for Object & Array
3405 if (isObject(def)) {
3406 warn$2('Invalid default value for prop "' +
3407 key +
3408 '": ' +
3409 'Props with type Object/Array must use a factory function ' +
3410 'to return the default value.', vm);
3411 }
3412 // the raw prop value was also undefined from previous render,
3413 // return previous default value to avoid unnecessary watcher trigger
3414 if (vm &&
3415 vm.$options.propsData &&
3416 vm.$options.propsData[key] === undefined &&
3417 vm._props[key] !== undefined) {
3418 return vm._props[key];
3419 }
3420 // call factory function for non-Function types
3421 // a value is Function if its prototype is function even across different execution context
3422 return isFunction(def) && getType(prop.type) !== 'Function'
3423 ? def.call(vm)
3424 : def;
3425 }
3426 /**
3427 * Assert whether a prop is valid.
3428 */
3429 function assertProp(prop, name, value, vm, absent) {
3430 if (prop.required && absent) {
3431 warn$2('Missing required prop: "' + name + '"', vm);
3432 return;
3433 }
3434 if (value == null && !prop.required) {
3435 return;
3436 }
3437 var type = prop.type;
3438 var valid = !type || type === true;
3439 var expectedTypes = [];
3440 if (type) {
3441 if (!isArray(type)) {
3442 type = [type];
3443 }
3444 for (var i = 0; i < type.length && !valid; i++) {
3445 var assertedType = assertType(value, type[i], vm);
3446 expectedTypes.push(assertedType.expectedType || '');
3447 valid = assertedType.valid;
3448 }
3449 }
3450 var haveExpectedTypes = expectedTypes.some(function (t) { return t; });
3451 if (!valid && haveExpectedTypes) {
3452 warn$2(getInvalidTypeMessage(name, value, expectedTypes), vm);
3453 return;
3454 }
3455 var validator = prop.validator;
3456 if (validator) {
3457 if (!validator(value)) {
3458 warn$2('Invalid prop: custom validator check failed for prop "' + name + '".', vm);
3459 }
3460 }
3461 }
3462 var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;
3463 function assertType(value, type, vm) {
3464 var valid;
3465 var expectedType = getType(type);
3466 if (simpleCheckRE.test(expectedType)) {
3467 var t = typeof value;
3468 valid = t === expectedType.toLowerCase();
3469 // for primitive wrapper objects
3470 if (!valid && t === 'object') {
3471 valid = value instanceof type;
3472 }
3473 }
3474 else if (expectedType === 'Object') {
3475 valid = isPlainObject(value);
3476 }
3477 else if (expectedType === 'Array') {
3478 valid = isArray(value);
3479 }
3480 else {
3481 try {
3482 valid = value instanceof type;
3483 }
3484 catch (e) {
3485 warn$2('Invalid prop type: "' + String(type) + '" is not a constructor', vm);
3486 valid = false;
3487 }
3488 }
3489 return {
3490 valid: valid,
3491 expectedType: expectedType
3492 };
3493 }
3494 var functionTypeCheckRE = /^\s*function (\w+)/;
3495 /**
3496 * Use function string name to check built-in types,
3497 * because a simple equality check will fail when running
3498 * across different vms / iframes.
3499 */
3500 function getType(fn) {
3501 var match = fn && fn.toString().match(functionTypeCheckRE);
3502 return match ? match[1] : '';
3503 }
3504 function isSameType(a, b) {
3505 return getType(a) === getType(b);
3506 }
3507 function getTypeIndex(type, expectedTypes) {
3508 if (!isArray(expectedTypes)) {
3509 return isSameType(expectedTypes, type) ? 0 : -1;
3510 }
3511 for (var i = 0, len = expectedTypes.length; i < len; i++) {
3512 if (isSameType(expectedTypes[i], type)) {
3513 return i;
3514 }
3515 }
3516 return -1;
3517 }
3518 function getInvalidTypeMessage(name, value, expectedTypes) {
3519 var message = "Invalid prop: type check failed for prop \"".concat(name, "\".") +
3520 " Expected ".concat(expectedTypes.map(capitalize).join(', '));
3521 var expectedType = expectedTypes[0];
3522 var receivedType = toRawType(value);
3523 // check if we need to specify expected value
3524 if (expectedTypes.length === 1 &&
3525 isExplicable(expectedType) &&
3526 isExplicable(typeof value) &&
3527 !isBoolean(expectedType, receivedType)) {
3528 message += " with value ".concat(styleValue(value, expectedType));
3529 }
3530 message += ", got ".concat(receivedType, " ");
3531 // check if we need to specify received value
3532 if (isExplicable(receivedType)) {
3533 message += "with value ".concat(styleValue(value, receivedType), ".");
3534 }
3535 return message;
3536 }
3537 function styleValue(value, type) {
3538 if (type === 'String') {
3539 return "\"".concat(value, "\"");
3540 }
3541 else if (type === 'Number') {
3542 return "".concat(Number(value));
3543 }
3544 else {
3545 return "".concat(value);
3546 }
3547 }
3548 var EXPLICABLE_TYPES = ['string', 'number', 'boolean'];
3549 function isExplicable(value) {
3550 return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; });
3551 }
3552 function isBoolean() {
3553 var args = [];
3554 for (var _i = 0; _i < arguments.length; _i++) {
3555 args[_i] = arguments[_i];
3556 }
3557 return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; });
3558 }
3559
3560 // these are reserved for web because they are directly compiled away
3561 // during template compilation
3562 makeMap('style,class');
3563 // attributes that should be using props for binding
3564 var acceptValue = makeMap('input,textarea,option,select,progress');
3565 var mustUseProp = function (tag, type, attr) {
3566 return ((attr === 'value' && acceptValue(tag) && type !== 'button') ||
3567 (attr === 'selected' && tag === 'option') ||
3568 (attr === 'checked' && tag === 'input') ||
3569 (attr === 'muted' && tag === 'video'));
3570 };
3571 var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
3572 makeMap('events,caret,typing,plaintext-only');
3573 var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
3574 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
3575 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
3576 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
3577 'required,reversed,scoped,seamless,selected,sortable,' +
3578 'truespeed,typemustmatch,visible');
3579
3580 var isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' +
3581 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
3582 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
3583 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
3584 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
3585 'embed,object,param,source,canvas,script,noscript,del,ins,' +
3586 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
3587 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
3588 'output,progress,select,textarea,' +
3589 'details,dialog,menu,menuitem,summary,' +
3590 'content,element,shadow,template,blockquote,iframe,tfoot');
3591 // this map is intentionally selective, only covering SVG elements that may
3592 // contain child elements.
3593 var isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
3594 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
3595 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);
3596 var isPreTag = function (tag) { return tag === 'pre'; };
3597 var isReservedTag = function (tag) {
3598 return isHTMLTag(tag) || isSVG(tag);
3599 };
3600 function getTagNamespace(tag) {
3601 if (isSVG(tag)) {
3602 return 'svg';
3603 }
3604 // basic support for MathML
3605 // note it doesn't support other MathML elements being component roots
3606 if (tag === 'math') {
3607 return 'math';
3608 }
3609 }
3610 makeMap('text,number,password,search,email,tel,url');
3611
3612 var validDivisionCharRE = /[\w).+\-_$\]]/;
3613 function parseFilters(exp) {
3614 var inSingle = false;
3615 var inDouble = false;
3616 var inTemplateString = false;
3617 var inRegex = false;
3618 var curly = 0;
3619 var square = 0;
3620 var paren = 0;
3621 var lastFilterIndex = 0;
3622 var c, prev, i, expression, filters;
3623 for (i = 0; i < exp.length; i++) {
3624 prev = c;
3625 c = exp.charCodeAt(i);
3626 if (inSingle) {
3627 if (c === 0x27 && prev !== 0x5c)
3628 inSingle = false;
3629 }
3630 else if (inDouble) {
3631 if (c === 0x22 && prev !== 0x5c)
3632 inDouble = false;
3633 }
3634 else if (inTemplateString) {
3635 if (c === 0x60 && prev !== 0x5c)
3636 inTemplateString = false;
3637 }
3638 else if (inRegex) {
3639 if (c === 0x2f && prev !== 0x5c)
3640 inRegex = false;
3641 }
3642 else if (c === 0x7c && // pipe
3643 exp.charCodeAt(i + 1) !== 0x7c &&
3644 exp.charCodeAt(i - 1) !== 0x7c &&
3645 !curly &&
3646 !square &&
3647 !paren) {
3648 if (expression === undefined) {
3649 // first filter, end of expression
3650 lastFilterIndex = i + 1;
3651 expression = exp.slice(0, i).trim();
3652 }
3653 else {
3654 pushFilter();
3655 }
3656 }
3657 else {
3658 switch (c) {
3659 case 0x22:
3660 inDouble = true;
3661 break; // "
3662 case 0x27:
3663 inSingle = true;
3664 break; // '
3665 case 0x60:
3666 inTemplateString = true;
3667 break; // `
3668 case 0x28:
3669 paren++;
3670 break; // (
3671 case 0x29:
3672 paren--;
3673 break; // )
3674 case 0x5b:
3675 square++;
3676 break; // [
3677 case 0x5d:
3678 square--;
3679 break; // ]
3680 case 0x7b:
3681 curly++;
3682 break; // {
3683 case 0x7d:
3684 curly--;
3685 break; // }
3686 }
3687 if (c === 0x2f) {
3688 // /
3689 var j = i - 1;
3690 var p
3691 // find first non-whitespace prev char
3692 = void 0;
3693 // find first non-whitespace prev char
3694 for (; j >= 0; j--) {
3695 p = exp.charAt(j);
3696 if (p !== ' ')
3697 break;
3698 }
3699 if (!p || !validDivisionCharRE.test(p)) {
3700 inRegex = true;
3701 }
3702 }
3703 }
3704 }
3705 if (expression === undefined) {
3706 expression = exp.slice(0, i).trim();
3707 }
3708 else if (lastFilterIndex !== 0) {
3709 pushFilter();
3710 }
3711 function pushFilter() {
3712 (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
3713 lastFilterIndex = i + 1;
3714 }
3715 if (filters) {
3716 for (i = 0; i < filters.length; i++) {
3717 expression = wrapFilter(expression, filters[i]);
3718 }
3719 }
3720 return expression;
3721 }
3722 function wrapFilter(exp, filter) {
3723 var i = filter.indexOf('(');
3724 if (i < 0) {
3725 // _f: resolveFilter
3726 return "_f(\"".concat(filter, "\")(").concat(exp, ")");
3727 }
3728 else {
3729 var name_1 = filter.slice(0, i);
3730 var args = filter.slice(i + 1);
3731 return "_f(\"".concat(name_1, "\")(").concat(exp).concat(args !== ')' ? ',' + args : args);
3732 }
3733 }
3734
3735 var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g;
3736 var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
3737 var buildRegex = cached(function (delimiters) {
3738 var open = delimiters[0].replace(regexEscapeRE, '\\$&');
3739 var close = delimiters[1].replace(regexEscapeRE, '\\$&');
3740 return new RegExp(open + '((?:.|\\n)+?)' + close, 'g');
3741 });
3742 function parseText(text, delimiters) {
3743 //@ts-expect-error
3744 var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
3745 if (!tagRE.test(text)) {
3746 return;
3747 }
3748 var tokens = [];
3749 var rawTokens = [];
3750 var lastIndex = (tagRE.lastIndex = 0);
3751 var match, index, tokenValue;
3752 while ((match = tagRE.exec(text))) {
3753 index = match.index;
3754 // push text token
3755 if (index > lastIndex) {
3756 rawTokens.push((tokenValue = text.slice(lastIndex, index)));
3757 tokens.push(JSON.stringify(tokenValue));
3758 }
3759 // tag token
3760 var exp = parseFilters(match[1].trim());
3761 tokens.push("_s(".concat(exp, ")"));
3762 rawTokens.push({ '@binding': exp });
3763 lastIndex = index + match[0].length;
3764 }
3765 if (lastIndex < text.length) {
3766 rawTokens.push((tokenValue = text.slice(lastIndex)));
3767 tokens.push(JSON.stringify(tokenValue));
3768 }
3769 return {
3770 expression: tokens.join('+'),
3771 tokens: rawTokens
3772 };
3773 }
3774
3775 /* eslint-disable no-unused-vars */
3776 function baseWarn(msg, range) {
3777 console.error("[Vue compiler]: ".concat(msg));
3778 }
3779 /* eslint-enable no-unused-vars */
3780 function pluckModuleFunction(modules, key) {
3781 return modules ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) : [];
3782 }
3783 function addProp(el, name, value, range, dynamic) {
3784 (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
3785 el.plain = false;
3786 }
3787 function addAttr(el, name, value, range, dynamic) {
3788 var attrs = dynamic
3789 ? el.dynamicAttrs || (el.dynamicAttrs = [])
3790 : el.attrs || (el.attrs = []);
3791 attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
3792 el.plain = false;
3793 }
3794 // add a raw attr (use this in preTransforms)
3795 function addRawAttr(el, name, value, range) {
3796 el.attrsMap[name] = value;
3797 el.attrsList.push(rangeSetItem({ name: name, value: value }, range));
3798 }
3799 function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) {
3800 (el.directives || (el.directives = [])).push(rangeSetItem({
3801 name: name,
3802 rawName: rawName,
3803 value: value,
3804 arg: arg,
3805 isDynamicArg: isDynamicArg,
3806 modifiers: modifiers
3807 }, range));
3808 el.plain = false;
3809 }
3810 function prependModifierMarker(symbol, name, dynamic) {
3811 return dynamic ? "_p(".concat(name, ",\"").concat(symbol, "\")") : symbol + name; // mark the event as captured
3812 }
3813 function addHandler(el, name, value, modifiers, important, warn, range, dynamic) {
3814 modifiers = modifiers || emptyObject;
3815 // warn prevent and passive modifier
3816 /* istanbul ignore if */
3817 if (warn && modifiers.prevent && modifiers.passive) {
3818 warn("passive and prevent can't be used together. " +
3819 "Passive handler can't prevent default event.", range);
3820 }
3821 // normalize click.right and click.middle since they don't actually fire
3822 // this is technically browser-specific, but at least for now browsers are
3823 // the only target envs that have right/middle clicks.
3824 if (modifiers.right) {
3825 if (dynamic) {
3826 name = "(".concat(name, ")==='click'?'contextmenu':(").concat(name, ")");
3827 }
3828 else if (name === 'click') {
3829 name = 'contextmenu';
3830 delete modifiers.right;
3831 }
3832 }
3833 else if (modifiers.middle) {
3834 if (dynamic) {
3835 name = "(".concat(name, ")==='click'?'mouseup':(").concat(name, ")");
3836 }
3837 else if (name === 'click') {
3838 name = 'mouseup';
3839 }
3840 }
3841 // check capture modifier
3842 if (modifiers.capture) {
3843 delete modifiers.capture;
3844 name = prependModifierMarker('!', name, dynamic);
3845 }
3846 if (modifiers.once) {
3847 delete modifiers.once;
3848 name = prependModifierMarker('~', name, dynamic);
3849 }
3850 /* istanbul ignore if */
3851 if (modifiers.passive) {
3852 delete modifiers.passive;
3853 name = prependModifierMarker('&', name, dynamic);
3854 }
3855 var events;
3856 if (modifiers.native) {
3857 delete modifiers.native;
3858 events = el.nativeEvents || (el.nativeEvents = {});
3859 }
3860 else {
3861 events = el.events || (el.events = {});
3862 }
3863 var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);
3864 if (modifiers !== emptyObject) {
3865 newHandler.modifiers = modifiers;
3866 }
3867 var handlers = events[name];
3868 /* istanbul ignore if */
3869 if (Array.isArray(handlers)) {
3870 important ? handlers.unshift(newHandler) : handlers.push(newHandler);
3871 }
3872 else if (handlers) {
3873 events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
3874 }
3875 else {
3876 events[name] = newHandler;
3877 }
3878 el.plain = false;
3879 }
3880 function getRawBindingAttr(el, name) {
3881 return (el.rawAttrsMap[':' + name] ||
3882 el.rawAttrsMap['v-bind:' + name] ||
3883 el.rawAttrsMap[name]);
3884 }
3885 function getBindingAttr(el, name, getStatic) {
3886 var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name);
3887 if (dynamicValue != null) {
3888 return parseFilters(dynamicValue);
3889 }
3890 else if (getStatic !== false) {
3891 var staticValue = getAndRemoveAttr(el, name);
3892 if (staticValue != null) {
3893 return JSON.stringify(staticValue);
3894 }
3895 }
3896 }
3897 // note: this only removes the attr from the Array (attrsList) so that it
3898 // doesn't get processed by processAttrs.
3899 // By default it does NOT remove it from the map (attrsMap) because the map is
3900 // needed during codegen.
3901 function getAndRemoveAttr(el, name, removeFromMap) {
3902 var val;
3903 if ((val = el.attrsMap[name]) != null) {
3904 var list = el.attrsList;
3905 for (var i = 0, l = list.length; i < l; i++) {
3906 if (list[i].name === name) {
3907 list.splice(i, 1);
3908 break;
3909 }
3910 }
3911 }
3912 if (removeFromMap) {
3913 delete el.attrsMap[name];
3914 }
3915 return val;
3916 }
3917 function getAndRemoveAttrByRegex(el, name) {
3918 var list = el.attrsList;
3919 for (var i = 0, l = list.length; i < l; i++) {
3920 var attr = list[i];
3921 if (name.test(attr.name)) {
3922 list.splice(i, 1);
3923 return attr;
3924 }
3925 }
3926 }
3927 function rangeSetItem(item, range) {
3928 if (range) {
3929 if (range.start != null) {
3930 item.start = range.start;
3931 }
3932 if (range.end != null) {
3933 item.end = range.end;
3934 }
3935 }
3936 return item;
3937 }
3938
3939 function transformNode$1(el, options) {
3940 var warn = options.warn || baseWarn;
3941 var staticClass = getAndRemoveAttr(el, 'class');
3942 if (staticClass) {
3943 var res = parseText(staticClass, options.delimiters);
3944 if (res) {
3945 warn("class=\"".concat(staticClass, "\": ") +
3946 'Interpolation inside attributes has been removed. ' +
3947 'Use v-bind or the colon shorthand instead. For example, ' +
3948 'instead of <div class="{{ val }}">, use <div :class="val">.', el.rawAttrsMap['class']);
3949 }
3950 }
3951 if (staticClass) {
3952 el.staticClass = JSON.stringify(staticClass.replace(/\s+/g, ' ').trim());
3953 }
3954 var classBinding = getBindingAttr(el, 'class', false /* getStatic */);
3955 if (classBinding) {
3956 el.classBinding = classBinding;
3957 }
3958 }
3959 function genData$2(el) {
3960 var data = '';
3961 if (el.staticClass) {
3962 data += "staticClass:".concat(el.staticClass, ",");
3963 }
3964 if (el.classBinding) {
3965 data += "class:".concat(el.classBinding, ",");
3966 }
3967 return data;
3968 }
3969 var klass = {
3970 staticKeys: ['staticClass'],
3971 transformNode: transformNode$1,
3972 genData: genData$2
3973 };
3974
3975 var parseStyleText = cached(function (cssText) {
3976 var res = {};
3977 var listDelimiter = /;(?![^(]*\))/g;
3978 var propertyDelimiter = /:(.+)/;
3979 cssText.split(listDelimiter).forEach(function (item) {
3980 if (item) {
3981 var tmp = item.split(propertyDelimiter);
3982 tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
3983 }
3984 });
3985 return res;
3986 });
3987
3988 function transformNode(el, options) {
3989 var warn = options.warn || baseWarn;
3990 var staticStyle = getAndRemoveAttr(el, 'style');
3991 if (staticStyle) {
3992 /* istanbul ignore if */
3993 {
3994 var res = parseText(staticStyle, options.delimiters);
3995 if (res) {
3996 warn("style=\"".concat(staticStyle, "\": ") +
3997 'Interpolation inside attributes has been removed. ' +
3998 'Use v-bind or the colon shorthand instead. For example, ' +
3999 'instead of <div style="{{ val }}">, use <div :style="val">.', el.rawAttrsMap['style']);
4000 }
4001 }
4002 el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
4003 }
4004 var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);
4005 if (styleBinding) {
4006 el.styleBinding = styleBinding;
4007 }
4008 }
4009 function genData$1(el) {
4010 var data = '';
4011 if (el.staticStyle) {
4012 data += "staticStyle:".concat(el.staticStyle, ",");
4013 }
4014 if (el.styleBinding) {
4015 data += "style:(".concat(el.styleBinding, "),");
4016 }
4017 return data;
4018 }
4019 var style = {
4020 staticKeys: ['staticStyle'],
4021 transformNode: transformNode,
4022 genData: genData$1
4023 };
4024
4025 var he$1 = {exports: {}};
4026
4027 /*! https://mths.be/he v1.2.0 by @mathias | MIT license */
4028
4029 (function (module, exports) {
4030 (function(root) {
4031
4032 // Detect free variables `exports`.
4033 var freeExports = exports;
4034
4035 // Detect free variable `module`.
4036 var freeModule = module &&
4037 module.exports == freeExports && module;
4038
4039 // Detect free variable `global`, from Node.js or Browserified code,
4040 // and use it as `root`.
4041 var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;
4042 if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
4043 root = freeGlobal;
4044 }
4045
4046 /*--------------------------------------------------------------------------*/
4047
4048 // All astral symbols.
4049 var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
4050 // All ASCII symbols (not just printable ASCII) except those listed in the
4051 // first column of the overrides table.
4052 // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
4053 var regexAsciiWhitelist = /[\x01-\x7F]/g;
4054 // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
4055 // code points listed in the first column of the overrides table on
4056 // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
4057 var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
4058
4059 var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
4060 var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'};
4061
4062 var regexEscape = /["&'<>`]/g;
4063 var escapeMap = {
4064 '"': '&quot;',
4065 '&': '&amp;',
4066 '\'': '&#x27;',
4067 '<': '&lt;',
4068 // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
4069 // following is not strictly necessary unless it’s part of a tag or an
4070 // unquoted attribute value. We’re only escaping it to support those
4071 // situations, and for XML support.
4072 '>': '&gt;',
4073 // In Internet Explorer ≤ 8, the backtick character can be used
4074 // to break out of (un)quoted attribute values or HTML comments.
4075 // See http://html5sec.org/#102, http://html5sec.org/#108, and
4076 // http://html5sec.org/#133.
4077 '`': '&#x60;'
4078 };
4079
4080 var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
4081 var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
4082 var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g;
4083 var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'};
4084 var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'};
4085 var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'};
4086 var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];
4087
4088 /*--------------------------------------------------------------------------*/
4089
4090 var stringFromCharCode = String.fromCharCode;
4091
4092 var object = {};
4093 var hasOwnProperty = object.hasOwnProperty;
4094 var has = function(object, propertyName) {
4095 return hasOwnProperty.call(object, propertyName);
4096 };
4097
4098 var contains = function(array, value) {
4099 var index = -1;
4100 var length = array.length;
4101 while (++index < length) {
4102 if (array[index] == value) {
4103 return true;
4104 }
4105 }
4106 return false;
4107 };
4108
4109 var merge = function(options, defaults) {
4110 if (!options) {
4111 return defaults;
4112 }
4113 var result = {};
4114 var key;
4115 for (key in defaults) {
4116 // A `hasOwnProperty` check is not needed here, since only recognized
4117 // option names are used anyway. Any others are ignored.
4118 result[key] = has(options, key) ? options[key] : defaults[key];
4119 }
4120 return result;
4121 };
4122
4123 // Modified version of `ucs2encode`; see https://mths.be/punycode.
4124 var codePointToSymbol = function(codePoint, strict) {
4125 var output = '';
4126 if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {
4127 // See issue #4:
4128 // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
4129 // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
4130 // REPLACEMENT CHARACTER.”
4131 if (strict) {
4132 parseError('character reference outside the permissible Unicode range');
4133 }
4134 return '\uFFFD';
4135 }
4136 if (has(decodeMapNumeric, codePoint)) {
4137 if (strict) {
4138 parseError('disallowed character reference');
4139 }
4140 return decodeMapNumeric[codePoint];
4141 }
4142 if (strict && contains(invalidReferenceCodePoints, codePoint)) {
4143 parseError('disallowed character reference');
4144 }
4145 if (codePoint > 0xFFFF) {
4146 codePoint -= 0x10000;
4147 output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
4148 codePoint = 0xDC00 | codePoint & 0x3FF;
4149 }
4150 output += stringFromCharCode(codePoint);
4151 return output;
4152 };
4153
4154 var hexEscape = function(codePoint) {
4155 return '&#x' + codePoint.toString(16).toUpperCase() + ';';
4156 };
4157
4158 var decEscape = function(codePoint) {
4159 return '&#' + codePoint + ';';
4160 };
4161
4162 var parseError = function(message) {
4163 throw Error('Parse error: ' + message);
4164 };
4165
4166 /*--------------------------------------------------------------------------*/
4167
4168 var encode = function(string, options) {
4169 options = merge(options, encode.options);
4170 var strict = options.strict;
4171 if (strict && regexInvalidRawCodePoint.test(string)) {
4172 parseError('forbidden code point');
4173 }
4174 var encodeEverything = options.encodeEverything;
4175 var useNamedReferences = options.useNamedReferences;
4176 var allowUnsafeSymbols = options.allowUnsafeSymbols;
4177 var escapeCodePoint = options.decimal ? decEscape : hexEscape;
4178
4179 var escapeBmpSymbol = function(symbol) {
4180 return escapeCodePoint(symbol.charCodeAt(0));
4181 };
4182
4183 if (encodeEverything) {
4184 // Encode ASCII symbols.
4185 string = string.replace(regexAsciiWhitelist, function(symbol) {
4186 // Use named references if requested & possible.
4187 if (useNamedReferences && has(encodeMap, symbol)) {
4188 return '&' + encodeMap[symbol] + ';';
4189 }
4190 return escapeBmpSymbol(symbol);
4191 });
4192 // Shorten a few escapes that represent two symbols, of which at least one
4193 // is within the ASCII range.
4194 if (useNamedReferences) {
4195 string = string
4196 .replace(/&gt;\u20D2/g, '&nvgt;')
4197 .replace(/&lt;\u20D2/g, '&nvlt;')
4198 .replace(/&#x66;&#x6A;/g, '&fjlig;');
4199 }
4200 // Encode non-ASCII symbols.
4201 if (useNamedReferences) {
4202 // Encode non-ASCII symbols that can be replaced with a named reference.
4203 string = string.replace(regexEncodeNonAscii, function(string) {
4204 // Note: there is no need to check `has(encodeMap, string)` here.
4205 return '&' + encodeMap[string] + ';';
4206 });
4207 }
4208 // Note: any remaining non-ASCII symbols are handled outside of the `if`.
4209 } else if (useNamedReferences) {
4210 // Apply named character references.
4211 // Encode `<>"'&` using named character references.
4212 if (!allowUnsafeSymbols) {
4213 string = string.replace(regexEscape, function(string) {
4214 return '&' + encodeMap[string] + ';'; // no need to check `has()` here
4215 });
4216 }
4217 // Shorten escapes that represent two symbols, of which at least one is
4218 // `<>"'&`.
4219 string = string
4220 .replace(/&gt;\u20D2/g, '&nvgt;')
4221 .replace(/&lt;\u20D2/g, '&nvlt;');
4222 // Encode non-ASCII symbols that can be replaced with a named reference.
4223 string = string.replace(regexEncodeNonAscii, function(string) {
4224 // Note: there is no need to check `has(encodeMap, string)` here.
4225 return '&' + encodeMap[string] + ';';
4226 });
4227 } else if (!allowUnsafeSymbols) {
4228 // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
4229 // using named character references.
4230 string = string.replace(regexEscape, escapeBmpSymbol);
4231 }
4232 return string
4233 // Encode astral symbols.
4234 .replace(regexAstralSymbols, function($0) {
4235 // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
4236 var high = $0.charCodeAt(0);
4237 var low = $0.charCodeAt(1);
4238 var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
4239 return escapeCodePoint(codePoint);
4240 })
4241 // Encode any remaining BMP symbols that are not printable ASCII symbols
4242 // using a hexadecimal escape.
4243 .replace(regexBmpWhitelist, escapeBmpSymbol);
4244 };
4245 // Expose default options (so they can be overridden globally).
4246 encode.options = {
4247 'allowUnsafeSymbols': false,
4248 'encodeEverything': false,
4249 'strict': false,
4250 'useNamedReferences': false,
4251 'decimal' : false
4252 };
4253
4254 var decode = function(html, options) {
4255 options = merge(options, decode.options);
4256 var strict = options.strict;
4257 if (strict && regexInvalidEntity.test(html)) {
4258 parseError('malformed character reference');
4259 }
4260 return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) {
4261 var codePoint;
4262 var semicolon;
4263 var decDigits;
4264 var hexDigits;
4265 var reference;
4266 var next;
4267
4268 if ($1) {
4269 reference = $1;
4270 // Note: there is no need to check `has(decodeMap, reference)`.
4271 return decodeMap[reference];
4272 }
4273
4274 if ($2) {
4275 // Decode named character references without trailing `;`, e.g. `&amp`.
4276 // This is only a parse error if it gets converted to `&`, or if it is
4277 // followed by `=` in an attribute context.
4278 reference = $2;
4279 next = $3;
4280 if (next && options.isAttributeValue) {
4281 if (strict && next == '=') {
4282 parseError('`&` did not start a character reference');
4283 }
4284 return $0;
4285 } else {
4286 if (strict) {
4287 parseError(
4288 'named character reference was not terminated by a semicolon'
4289 );
4290 }
4291 // Note: there is no need to check `has(decodeMapLegacy, reference)`.
4292 return decodeMapLegacy[reference] + (next || '');
4293 }
4294 }
4295
4296 if ($4) {
4297 // Decode decimal escapes, e.g. `&#119558;`.
4298 decDigits = $4;
4299 semicolon = $5;
4300 if (strict && !semicolon) {
4301 parseError('character reference was not terminated by a semicolon');
4302 }
4303 codePoint = parseInt(decDigits, 10);
4304 return codePointToSymbol(codePoint, strict);
4305 }
4306
4307 if ($6) {
4308 // Decode hexadecimal escapes, e.g. `&#x1D306;`.
4309 hexDigits = $6;
4310 semicolon = $7;
4311 if (strict && !semicolon) {
4312 parseError('character reference was not terminated by a semicolon');
4313 }
4314 codePoint = parseInt(hexDigits, 16);
4315 return codePointToSymbol(codePoint, strict);
4316 }
4317
4318 // If we’re still here, `if ($7)` is implied; it’s an ambiguous
4319 // ampersand for sure. https://mths.be/notes/ambiguous-ampersands
4320 if (strict) {
4321 parseError(
4322 'named character reference was not terminated by a semicolon'
4323 );
4324 }
4325 return $0;
4326 });
4327 };
4328 // Expose default options (so they can be overridden globally).
4329 decode.options = {
4330 'isAttributeValue': false,
4331 'strict': false
4332 };
4333
4334 var escape = function(string) {
4335 return string.replace(regexEscape, function($0) {
4336 // Note: there is no need to check `has(escapeMap, $0)` here.
4337 return escapeMap[$0];
4338 });
4339 };
4340
4341 /*--------------------------------------------------------------------------*/
4342
4343 var he = {
4344 'version': '1.2.0',
4345 'encode': encode,
4346 'decode': decode,
4347 'escape': escape,
4348 'unescape': decode
4349 };
4350
4351 // Some AMD build optimizers, like r.js, check for specific condition patterns
4352 // like the following:
4353 if (freeExports && !freeExports.nodeType) {
4354 if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+
4355 freeModule.exports = he;
4356 } else { // in Narwhal or RingoJS v0.7.0-
4357 for (var key in he) {
4358 has(he, key) && (freeExports[key] = he[key]);
4359 }
4360 }
4361 } else { // in Rhino or a web browser
4362 root.he = he;
4363 }
4364
4365 }(commonjsGlobal));
4366 } (he$1, he$1.exports));
4367
4368 var he = he$1.exports;
4369
4370 /**
4371 * Cross-platform code generation for component v-model
4372 */
4373 function genComponentModel(el, value, modifiers) {
4374 var _a = modifiers || {}, number = _a.number, trim = _a.trim;
4375 var baseValueExpression = '$$v';
4376 var valueExpression = baseValueExpression;
4377 if (trim) {
4378 valueExpression =
4379 "(typeof ".concat(baseValueExpression, " === 'string'") +
4380 "? ".concat(baseValueExpression, ".trim()") +
4381 ": ".concat(baseValueExpression, ")");
4382 }
4383 if (number) {
4384 valueExpression = "_n(".concat(valueExpression, ")");
4385 }
4386 var assignment = genAssignmentCode(value, valueExpression);
4387 el.model = {
4388 value: "(".concat(value, ")"),
4389 expression: JSON.stringify(value),
4390 callback: "function (".concat(baseValueExpression, ") {").concat(assignment, "}")
4391 };
4392 }
4393 /**
4394 * Cross-platform codegen helper for generating v-model value assignment code.
4395 */
4396 function genAssignmentCode(value, assignment) {
4397 var res = parseModel(value);
4398 if (res.key === null) {
4399 return "".concat(value, "=").concat(assignment);
4400 }
4401 else {
4402 return "$set(".concat(res.exp, ", ").concat(res.key, ", ").concat(assignment, ")");
4403 }
4404 }
4405 /**
4406 * Parse a v-model expression into a base path and a final key segment.
4407 * Handles both dot-path and possible square brackets.
4408 *
4409 * Possible cases:
4410 *
4411 * - test
4412 * - test[key]
4413 * - test[test1[key]]
4414 * - test["a"][key]
4415 * - xxx.test[a[a].test1[key]]
4416 * - test.xxx.a["asa"][test1[key]]
4417 *
4418 */
4419 var len, str, chr, index, expressionPos, expressionEndPos;
4420 function parseModel(val) {
4421 // Fix https://github.com/vuejs/vue/pull/7730
4422 // allow v-model="obj.val " (trailing whitespace)
4423 val = val.trim();
4424 len = val.length;
4425 if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
4426 index = val.lastIndexOf('.');
4427 if (index > -1) {
4428 return {
4429 exp: val.slice(0, index),
4430 key: '"' + val.slice(index + 1) + '"'
4431 };
4432 }
4433 else {
4434 return {
4435 exp: val,
4436 key: null
4437 };
4438 }
4439 }
4440 str = val;
4441 index = expressionPos = expressionEndPos = 0;
4442 while (!eof()) {
4443 chr = next();
4444 /* istanbul ignore if */
4445 if (isStringStart(chr)) {
4446 parseString(chr);
4447 }
4448 else if (chr === 0x5b) {
4449 parseBracket(chr);
4450 }
4451 }
4452 return {
4453 exp: val.slice(0, expressionPos),
4454 key: val.slice(expressionPos + 1, expressionEndPos)
4455 };
4456 }
4457 function next() {
4458 return str.charCodeAt(++index);
4459 }
4460 function eof() {
4461 return index >= len;
4462 }
4463 function isStringStart(chr) {
4464 return chr === 0x22 || chr === 0x27;
4465 }
4466 function parseBracket(chr) {
4467 var inBracket = 1;
4468 expressionPos = index;
4469 while (!eof()) {
4470 chr = next();
4471 if (isStringStart(chr)) {
4472 parseString(chr);
4473 continue;
4474 }
4475 if (chr === 0x5b)
4476 inBracket++;
4477 if (chr === 0x5d)
4478 inBracket--;
4479 if (inBracket === 0) {
4480 expressionEndPos = index;
4481 break;
4482 }
4483 }
4484 }
4485 function parseString(chr) {
4486 var stringQuote = chr;
4487 while (!eof()) {
4488 chr = next();
4489 if (chr === stringQuote) {
4490 break;
4491 }
4492 }
4493 }
4494
4495 var onRE = /^@|^v-on:/;
4496 var dirRE = /^v-|^@|^:|^#/;
4497 var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
4498 var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
4499 var stripParensRE = /^\(|\)$/g;
4500 var dynamicArgRE = /^\[.*\]$/;
4501 var argRE = /:(.*)$/;
4502 var bindRE = /^:|^\.|^v-bind:/;
4503 var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g;
4504 var slotRE = /^v-slot(:|$)|^#/;
4505 var lineBreakRE = /[\r\n]/;
4506 var whitespaceRE = /[ \f\t\r\n]+/g;
4507 var invalidAttributeRE = /[\s"'<>\/=]/;
4508 var decodeHTMLCached = cached(he.decode);
4509 var emptySlotScopeToken = "_empty_";
4510 // configurable state
4511 var warn$1;
4512 var delimiters;
4513 var transforms;
4514 var preTransforms;
4515 var postTransforms;
4516 var platformIsPreTag;
4517 var platformMustUseProp;
4518 var platformGetTagNamespace;
4519 var maybeComponent;
4520 function createASTElement(tag, attrs, parent) {
4521 return {
4522 type: 1,
4523 tag: tag,
4524 attrsList: attrs,
4525 attrsMap: makeAttrsMap(attrs),
4526 rawAttrsMap: {},
4527 parent: parent,
4528 children: []
4529 };
4530 }
4531 /**
4532 * Convert HTML string to AST.
4533 */
4534 function parse(template, options) {
4535 warn$1 = options.warn || baseWarn;
4536 platformIsPreTag = options.isPreTag || no;
4537 platformMustUseProp = options.mustUseProp || no;
4538 platformGetTagNamespace = options.getTagNamespace || no;
4539 var isReservedTag = options.isReservedTag || no;
4540 maybeComponent = function (el) {
4541 return !!(el.component ||
4542 el.attrsMap[':is'] ||
4543 el.attrsMap['v-bind:is'] ||
4544 !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag)));
4545 };
4546 transforms = pluckModuleFunction(options.modules, 'transformNode');
4547 preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
4548 postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
4549 delimiters = options.delimiters;
4550 var stack = [];
4551 var preserveWhitespace = options.preserveWhitespace !== false;
4552 var whitespaceOption = options.whitespace;
4553 var root;
4554 var currentParent;
4555 var inVPre = false;
4556 var inPre = false;
4557 var warned = false;
4558 function warnOnce(msg, range) {
4559 if (!warned) {
4560 warned = true;
4561 warn$1(msg, range);
4562 }
4563 }
4564 function closeElement(element) {
4565 trimEndingWhitespace(element);
4566 if (!inVPre && !element.processed) {
4567 element = processElement(element, options);
4568 }
4569 // tree management
4570 if (!stack.length && element !== root) {
4571 // allow root elements with v-if, v-else-if and v-else
4572 if (root.if && (element.elseif || element.else)) {
4573 {
4574 checkRootConstraints(element);
4575 }
4576 addIfCondition(root, {
4577 exp: element.elseif,
4578 block: element
4579 });
4580 }
4581 else {
4582 warnOnce("Component template should contain exactly one root element. " +
4583 "If you are using v-if on multiple elements, " +
4584 "use v-else-if to chain them instead.", { start: element.start });
4585 }
4586 }
4587 if (currentParent && !element.forbidden) {
4588 if (element.elseif || element.else) {
4589 processIfConditions(element, currentParent);
4590 }
4591 else {
4592 if (element.slotScope) {
4593 // scoped slot
4594 // keep it in the children list so that v-else(-if) conditions can
4595 // find it as the prev node.
4596 var name_1 = element.slotTarget || '"default"';
4597 (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name_1] = element;
4598 }
4599 currentParent.children.push(element);
4600 element.parent = currentParent;
4601 }
4602 }
4603 // final children cleanup
4604 // filter out scoped slots
4605 element.children = element.children.filter(function (c) { return !c.slotScope; });
4606 // remove trailing whitespace node again
4607 trimEndingWhitespace(element);
4608 // check pre state
4609 if (element.pre) {
4610 inVPre = false;
4611 }
4612 if (platformIsPreTag(element.tag)) {
4613 inPre = false;
4614 }
4615 // apply post-transforms
4616 for (var i = 0; i < postTransforms.length; i++) {
4617 postTransforms[i](element, options);
4618 }
4619 }
4620 function trimEndingWhitespace(el) {
4621 // remove trailing whitespace node
4622 if (!inPre) {
4623 var lastNode = void 0;
4624 while ((lastNode = el.children[el.children.length - 1]) &&
4625 lastNode.type === 3 &&
4626 lastNode.text === ' ') {
4627 el.children.pop();
4628 }
4629 }
4630 }
4631 function checkRootConstraints(el) {
4632 if (el.tag === 'slot' || el.tag === 'template') {
4633 warnOnce("Cannot use <".concat(el.tag, "> as component root element because it may ") +
4634 'contain multiple nodes.', { start: el.start });
4635 }
4636 if (el.attrsMap.hasOwnProperty('v-for')) {
4637 warnOnce('Cannot use v-for on stateful component root element because ' +
4638 'it renders multiple elements.', el.rawAttrsMap['v-for']);
4639 }
4640 }
4641 parseHTML(template, {
4642 warn: warn$1,
4643 expectHTML: options.expectHTML,
4644 isUnaryTag: options.isUnaryTag,
4645 canBeLeftOpenTag: options.canBeLeftOpenTag,
4646 shouldDecodeNewlines: options.shouldDecodeNewlines,
4647 shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
4648 shouldKeepComment: options.comments,
4649 outputSourceRange: options.outputSourceRange,
4650 start: function (tag, attrs, unary, start, end) {
4651 // check namespace.
4652 // inherit parent ns if there is one
4653 var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);
4654 // handle IE svg bug
4655 /* istanbul ignore if */
4656 if (isIE && ns === 'svg') {
4657 attrs = guardIESVGBug(attrs);
4658 }
4659 var element = createASTElement(tag, attrs, currentParent);
4660 if (ns) {
4661 element.ns = ns;
4662 }
4663 {
4664 if (options.outputSourceRange) {
4665 element.start = start;
4666 element.end = end;
4667 element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
4668 cumulated[attr.name] = attr;
4669 return cumulated;
4670 }, {});
4671 }
4672 attrs.forEach(function (attr) {
4673 if (invalidAttributeRE.test(attr.name)) {
4674 warn$1("Invalid dynamic argument expression: attribute names cannot contain " +
4675 "spaces, quotes, <, >, / or =.", options.outputSourceRange
4676 ? {
4677 start: attr.start + attr.name.indexOf("["),
4678 end: attr.start + attr.name.length
4679 }
4680 : undefined);
4681 }
4682 });
4683 }
4684 if (isForbiddenTag(element) && !isServerRendering()) {
4685 element.forbidden = true;
4686 warn$1('Templates should only be responsible for mapping the state to the ' +
4687 'UI. Avoid placing tags with side-effects in your templates, such as ' +
4688 "<".concat(tag, ">") +
4689 ', as they will not be parsed.', { start: element.start });
4690 }
4691 // apply pre-transforms
4692 for (var i = 0; i < preTransforms.length; i++) {
4693 element = preTransforms[i](element, options) || element;
4694 }
4695 if (!inVPre) {
4696 processPre(element);
4697 if (element.pre) {
4698 inVPre = true;
4699 }
4700 }
4701 if (platformIsPreTag(element.tag)) {
4702 inPre = true;
4703 }
4704 if (inVPre) {
4705 processRawAttrs(element);
4706 }
4707 else if (!element.processed) {
4708 // structural directives
4709 processFor(element);
4710 processIf(element);
4711 processOnce(element);
4712 }
4713 if (!root) {
4714 root = element;
4715 {
4716 checkRootConstraints(root);
4717 }
4718 }
4719 if (!unary) {
4720 currentParent = element;
4721 stack.push(element);
4722 }
4723 else {
4724 closeElement(element);
4725 }
4726 },
4727 end: function (tag, start, end) {
4728 var element = stack[stack.length - 1];
4729 // pop stack
4730 stack.length -= 1;
4731 currentParent = stack[stack.length - 1];
4732 if (options.outputSourceRange) {
4733 element.end = end;
4734 }
4735 closeElement(element);
4736 },
4737 chars: function (text, start, end) {
4738 if (!currentParent) {
4739 {
4740 if (text === template) {
4741 warnOnce('Component template requires a root element, rather than just text.', { start: start });
4742 }
4743 else if ((text = text.trim())) {
4744 warnOnce("text \"".concat(text, "\" outside root element will be ignored."), {
4745 start: start
4746 });
4747 }
4748 }
4749 return;
4750 }
4751 // IE textarea placeholder bug
4752 /* istanbul ignore if */
4753 if (isIE &&
4754 currentParent.tag === 'textarea' &&
4755 currentParent.attrsMap.placeholder === text) {
4756 return;
4757 }
4758 var children = currentParent.children;
4759 if (inPre || text.trim()) {
4760 text = isTextTag(currentParent)
4761 ? text
4762 : decodeHTMLCached(text);
4763 }
4764 else if (!children.length) {
4765 // remove the whitespace-only node right after an opening tag
4766 text = '';
4767 }
4768 else if (whitespaceOption) {
4769 if (whitespaceOption === 'condense') {
4770 // in condense mode, remove the whitespace node if it contains
4771 // line break, otherwise condense to a single space
4772 text = lineBreakRE.test(text) ? '' : ' ';
4773 }
4774 else {
4775 text = ' ';
4776 }
4777 }
4778 else {
4779 text = preserveWhitespace ? ' ' : '';
4780 }
4781 if (text) {
4782 if (!inPre && whitespaceOption === 'condense') {
4783 // condense consecutive whitespaces into single space
4784 text = text.replace(whitespaceRE, ' ');
4785 }
4786 var res = void 0;
4787 var child = void 0;
4788 if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
4789 child = {
4790 type: 2,
4791 expression: res.expression,
4792 tokens: res.tokens,
4793 text: text
4794 };
4795 }
4796 else if (text !== ' ' ||
4797 !children.length ||
4798 children[children.length - 1].text !== ' ') {
4799 child = {
4800 type: 3,
4801 text: text
4802 };
4803 }
4804 if (child) {
4805 if (options.outputSourceRange) {
4806 child.start = start;
4807 child.end = end;
4808 }
4809 children.push(child);
4810 }
4811 }
4812 },
4813 comment: function (text, start, end) {
4814 // adding anything as a sibling to the root node is forbidden
4815 // comments should still be allowed, but ignored
4816 if (currentParent) {
4817 var child = {
4818 type: 3,
4819 text: text,
4820 isComment: true
4821 };
4822 if (options.outputSourceRange) {
4823 child.start = start;
4824 child.end = end;
4825 }
4826 currentParent.children.push(child);
4827 }
4828 }
4829 });
4830 return root;
4831 }
4832 function processPre(el) {
4833 if (getAndRemoveAttr(el, 'v-pre') != null) {
4834 el.pre = true;
4835 }
4836 }
4837 function processRawAttrs(el) {
4838 var list = el.attrsList;
4839 var len = list.length;
4840 if (len) {
4841 var attrs = (el.attrs = new Array(len));
4842 for (var i = 0; i < len; i++) {
4843 attrs[i] = {
4844 name: list[i].name,
4845 value: JSON.stringify(list[i].value)
4846 };
4847 if (list[i].start != null) {
4848 attrs[i].start = list[i].start;
4849 attrs[i].end = list[i].end;
4850 }
4851 }
4852 }
4853 else if (!el.pre) {
4854 // non root node in pre blocks with no attributes
4855 el.plain = true;
4856 }
4857 }
4858 function processElement(element, options) {
4859 processKey(element);
4860 // determine whether this is a plain element after
4861 // removing structural attributes
4862 element.plain =
4863 !element.key && !element.scopedSlots && !element.attrsList.length;
4864 processRef(element);
4865 processSlotContent(element);
4866 processSlotOutlet(element);
4867 processComponent(element);
4868 for (var i = 0; i < transforms.length; i++) {
4869 element = transforms[i](element, options) || element;
4870 }
4871 processAttrs(element);
4872 return element;
4873 }
4874 function processKey(el) {
4875 var exp = getBindingAttr(el, 'key');
4876 if (exp) {
4877 {
4878 if (el.tag === 'template') {
4879 warn$1("<template> cannot be keyed. Place the key on real elements instead.", getRawBindingAttr(el, 'key'));
4880 }
4881 if (el.for) {
4882 var iterator = el.iterator2 || el.iterator1;
4883 var parent_1 = el.parent;
4884 if (iterator &&
4885 iterator === exp &&
4886 parent_1 &&
4887 parent_1.tag === 'transition-group') {
4888 warn$1("Do not use v-for index as key on <transition-group> children, " +
4889 "this is the same as not using keys.", getRawBindingAttr(el, 'key'), true /* tip */);
4890 }
4891 }
4892 }
4893 el.key = exp;
4894 }
4895 }
4896 function processRef(el) {
4897 var ref = getBindingAttr(el, 'ref');
4898 if (ref) {
4899 el.ref = ref;
4900 el.refInFor = checkInFor(el);
4901 }
4902 }
4903 function processFor(el) {
4904 var exp;
4905 if ((exp = getAndRemoveAttr(el, 'v-for'))) {
4906 var res = parseFor(exp);
4907 if (res) {
4908 extend(el, res);
4909 }
4910 else {
4911 warn$1("Invalid v-for expression: ".concat(exp), el.rawAttrsMap['v-for']);
4912 }
4913 }
4914 }
4915 function parseFor(exp) {
4916 var inMatch = exp.match(forAliasRE);
4917 if (!inMatch)
4918 return;
4919 var res = {};
4920 res.for = inMatch[2].trim();
4921 var alias = inMatch[1].trim().replace(stripParensRE, '');
4922 var iteratorMatch = alias.match(forIteratorRE);
4923 if (iteratorMatch) {
4924 res.alias = alias.replace(forIteratorRE, '').trim();
4925 res.iterator1 = iteratorMatch[1].trim();
4926 if (iteratorMatch[2]) {
4927 res.iterator2 = iteratorMatch[2].trim();
4928 }
4929 }
4930 else {
4931 res.alias = alias;
4932 }
4933 return res;
4934 }
4935 function processIf(el) {
4936 var exp = getAndRemoveAttr(el, 'v-if');
4937 if (exp) {
4938 el.if = exp;
4939 addIfCondition(el, {
4940 exp: exp,
4941 block: el
4942 });
4943 }
4944 else {
4945 if (getAndRemoveAttr(el, 'v-else') != null) {
4946 el.else = true;
4947 }
4948 var elseif = getAndRemoveAttr(el, 'v-else-if');
4949 if (elseif) {
4950 el.elseif = elseif;
4951 }
4952 }
4953 }
4954 function processIfConditions(el, parent) {
4955 var prev = findPrevElement(parent.children);
4956 if (prev && prev.if) {
4957 addIfCondition(prev, {
4958 exp: el.elseif,
4959 block: el
4960 });
4961 }
4962 else {
4963 warn$1("v-".concat(el.elseif ? 'else-if="' + el.elseif + '"' : 'else', " ") +
4964 "used on element <".concat(el.tag, "> without corresponding v-if."), el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']);
4965 }
4966 }
4967 function findPrevElement(children) {
4968 var i = children.length;
4969 while (i--) {
4970 if (children[i].type === 1) {
4971 return children[i];
4972 }
4973 else {
4974 if (children[i].text !== ' ') {
4975 warn$1("text \"".concat(children[i].text.trim(), "\" between v-if and v-else(-if) ") +
4976 "will be ignored.", children[i]);
4977 }
4978 children.pop();
4979 }
4980 }
4981 }
4982 function addIfCondition(el, condition) {
4983 if (!el.ifConditions) {
4984 el.ifConditions = [];
4985 }
4986 el.ifConditions.push(condition);
4987 }
4988 function processOnce(el) {
4989 var once = getAndRemoveAttr(el, 'v-once');
4990 if (once != null) {
4991 el.once = true;
4992 }
4993 }
4994 // handle content being passed to a component as slot,
4995 // e.g. <template slot="xxx">, <div slot-scope="xxx">
4996 function processSlotContent(el) {
4997 var slotScope;
4998 if (el.tag === 'template') {
4999 slotScope = getAndRemoveAttr(el, 'scope');
5000 /* istanbul ignore if */
5001 if (slotScope) {
5002 warn$1("the \"scope\" attribute for scoped slots have been deprecated and " +
5003 "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " +
5004 "can also be used on plain elements in addition to <template> to " +
5005 "denote scoped slots.", el.rawAttrsMap['scope'], true);
5006 }
5007 el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
5008 }
5009 else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
5010 /* istanbul ignore if */
5011 if (el.attrsMap['v-for']) {
5012 warn$1("Ambiguous combined usage of slot-scope and v-for on <".concat(el.tag, "> ") +
5013 "(v-for takes higher priority). Use a wrapper <template> for the " +
5014 "scoped slot to make it clearer.", el.rawAttrsMap['slot-scope'], true);
5015 }
5016 el.slotScope = slotScope;
5017 }
5018 // slot="xxx"
5019 var slotTarget = getBindingAttr(el, 'slot');
5020 if (slotTarget) {
5021 el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
5022 el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);
5023 // preserve slot as an attribute for native shadow DOM compat
5024 // only for non-scoped slots.
5025 if (el.tag !== 'template' && !el.slotScope) {
5026 addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));
5027 }
5028 }
5029 // 2.6 v-slot syntax
5030 {
5031 if (el.tag === 'template') {
5032 // v-slot on <template>
5033 var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
5034 if (slotBinding) {
5035 {
5036 if (el.slotTarget || el.slotScope) {
5037 warn$1("Unexpected mixed usage of different slot syntaxes.", el);
5038 }
5039 if (el.parent && !maybeComponent(el.parent)) {
5040 warn$1("<template v-slot> can only appear at the root level inside " +
5041 "the receiving component", el);
5042 }
5043 }
5044 var _a = getSlotName(slotBinding), name_2 = _a.name, dynamic = _a.dynamic;
5045 el.slotTarget = name_2;
5046 el.slotTargetDynamic = dynamic;
5047 el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf
5048 }
5049 }
5050 else {
5051 // v-slot on component, denotes default slot
5052 var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
5053 if (slotBinding) {
5054 {
5055 if (!maybeComponent(el)) {
5056 warn$1("v-slot can only be used on components or <template>.", slotBinding);
5057 }
5058 if (el.slotScope || el.slotTarget) {
5059 warn$1("Unexpected mixed usage of different slot syntaxes.", el);
5060 }
5061 if (el.scopedSlots) {
5062 warn$1("To avoid scope ambiguity, the default slot should also use " +
5063 "<template> syntax when there are other named slots.", slotBinding);
5064 }
5065 }
5066 // add the component's children to its default slot
5067 var slots = el.scopedSlots || (el.scopedSlots = {});
5068 var _b = getSlotName(slotBinding), name_3 = _b.name, dynamic = _b.dynamic;
5069 var slotContainer_1 = (slots[name_3] = createASTElement('template', [], el));
5070 slotContainer_1.slotTarget = name_3;
5071 slotContainer_1.slotTargetDynamic = dynamic;
5072 slotContainer_1.children = el.children.filter(function (c) {
5073 if (!c.slotScope) {
5074 c.parent = slotContainer_1;
5075 return true;
5076 }
5077 });
5078 slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken;
5079 // remove children as they are returned from scopedSlots now
5080 el.children = [];
5081 // mark el non-plain so data gets generated
5082 el.plain = false;
5083 }
5084 }
5085 }
5086 }
5087 function getSlotName(binding) {
5088 var name = binding.name.replace(slotRE, '');
5089 if (!name) {
5090 if (binding.name[0] !== '#') {
5091 name = 'default';
5092 }
5093 else {
5094 warn$1("v-slot shorthand syntax requires a slot name.", binding);
5095 }
5096 }
5097 return dynamicArgRE.test(name)
5098 ? // dynamic [name]
5099 { name: name.slice(1, -1), dynamic: true }
5100 : // static name
5101 { name: "\"".concat(name, "\""), dynamic: false };
5102 }
5103 // handle <slot/> outlets
5104 function processSlotOutlet(el) {
5105 if (el.tag === 'slot') {
5106 el.slotName = getBindingAttr(el, 'name');
5107 if (el.key) {
5108 warn$1("`key` does not work on <slot> because slots are abstract outlets " +
5109 "and can possibly expand into multiple elements. " +
5110 "Use the key on a wrapping element instead.", getRawBindingAttr(el, 'key'));
5111 }
5112 }
5113 }
5114 function processComponent(el) {
5115 var binding;
5116 if ((binding = getBindingAttr(el, 'is'))) {
5117 el.component = binding;
5118 }
5119 if (getAndRemoveAttr(el, 'inline-template') != null) {
5120 el.inlineTemplate = true;
5121 }
5122 }
5123 function processAttrs(el) {
5124 var list = el.attrsList;
5125 var i, l, name, rawName, value, modifiers, syncGen, isDynamic;
5126 for (i = 0, l = list.length; i < l; i++) {
5127 name = rawName = list[i].name;
5128 value = list[i].value;
5129 if (dirRE.test(name)) {
5130 // mark element as dynamic
5131 el.hasBindings = true;
5132 // modifiers
5133 modifiers = parseModifiers(name.replace(dirRE, ''));
5134 // support .foo shorthand syntax for the .prop modifier
5135 if (modifiers) {
5136 name = name.replace(modifierRE, '');
5137 }
5138 if (bindRE.test(name)) {
5139 // v-bind
5140 name = name.replace(bindRE, '');
5141 value = parseFilters(value);
5142 isDynamic = dynamicArgRE.test(name);
5143 if (isDynamic) {
5144 name = name.slice(1, -1);
5145 }
5146 if (value.trim().length === 0) {
5147 warn$1("The value for a v-bind expression cannot be empty. Found in \"v-bind:".concat(name, "\""));
5148 }
5149 if (modifiers) {
5150 if (modifiers.prop && !isDynamic) {
5151 name = camelize(name);
5152 if (name === 'innerHtml')
5153 name = 'innerHTML';
5154 }
5155 if (modifiers.camel && !isDynamic) {
5156 name = camelize(name);
5157 }
5158 if (modifiers.sync) {
5159 syncGen = genAssignmentCode(value, "$event");
5160 if (!isDynamic) {
5161 addHandler(el, "update:".concat(camelize(name)), syncGen, null, false, warn$1, list[i]);
5162 if (hyphenate(name) !== camelize(name)) {
5163 addHandler(el, "update:".concat(hyphenate(name)), syncGen, null, false, warn$1, list[i]);
5164 }
5165 }
5166 else {
5167 // handler w/ dynamic event name
5168 addHandler(el, "\"update:\"+(".concat(name, ")"), syncGen, null, false, warn$1, list[i], true // dynamic
5169 );
5170 }
5171 }
5172 }
5173 if ((modifiers && modifiers.prop) ||
5174 (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) {
5175 addProp(el, name, value, list[i], isDynamic);
5176 }
5177 else {
5178 addAttr(el, name, value, list[i], isDynamic);
5179 }
5180 }
5181 else if (onRE.test(name)) {
5182 // v-on
5183 name = name.replace(onRE, '');
5184 isDynamic = dynamicArgRE.test(name);
5185 if (isDynamic) {
5186 name = name.slice(1, -1);
5187 }
5188 addHandler(el, name, value, modifiers, false, warn$1, list[i], isDynamic);
5189 }
5190 else {
5191 // normal directives
5192 name = name.replace(dirRE, '');
5193 // parse arg
5194 var argMatch = name.match(argRE);
5195 var arg = argMatch && argMatch[1];
5196 isDynamic = false;
5197 if (arg) {
5198 name = name.slice(0, -(arg.length + 1));
5199 if (dynamicArgRE.test(arg)) {
5200 arg = arg.slice(1, -1);
5201 isDynamic = true;
5202 }
5203 }
5204 addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);
5205 if (name === 'model') {
5206 checkForAliasModel(el, value);
5207 }
5208 }
5209 }
5210 else {
5211 // literal attribute
5212 {
5213 var res = parseText(value, delimiters);
5214 if (res) {
5215 warn$1("".concat(name, "=\"").concat(value, "\": ") +
5216 'Interpolation inside attributes has been removed. ' +
5217 'Use v-bind or the colon shorthand instead. For example, ' +
5218 'instead of <div id="{{ val }}">, use <div :id="val">.', list[i]);
5219 }
5220 }
5221 addAttr(el, name, JSON.stringify(value), list[i]);
5222 // #6887 firefox doesn't update muted state if set via attribute
5223 // even immediately after element creation
5224 if (!el.component &&
5225 name === 'muted' &&
5226 platformMustUseProp(el.tag, el.attrsMap.type, name)) {
5227 addProp(el, name, 'true', list[i]);
5228 }
5229 }
5230 }
5231 }
5232 function checkInFor(el) {
5233 var parent = el;
5234 while (parent) {
5235 if (parent.for !== undefined) {
5236 return true;
5237 }
5238 parent = parent.parent;
5239 }
5240 return false;
5241 }
5242 function parseModifiers(name) {
5243 var match = name.match(modifierRE);
5244 if (match) {
5245 var ret_1 = {};
5246 match.forEach(function (m) {
5247 ret_1[m.slice(1)] = true;
5248 });
5249 return ret_1;
5250 }
5251 }
5252 function makeAttrsMap(attrs) {
5253 var map = {};
5254 for (var i = 0, l = attrs.length; i < l; i++) {
5255 if (map[attrs[i].name] && !isIE && !isEdge) {
5256 warn$1('duplicate attribute: ' + attrs[i].name, attrs[i]);
5257 }
5258 map[attrs[i].name] = attrs[i].value;
5259 }
5260 return map;
5261 }
5262 // for script (e.g. type="x/template") or style, do not decode content
5263 function isTextTag(el) {
5264 return el.tag === 'script' || el.tag === 'style';
5265 }
5266 function isForbiddenTag(el) {
5267 return (el.tag === 'style' ||
5268 (el.tag === 'script' &&
5269 (!el.attrsMap.type || el.attrsMap.type === 'text/javascript')));
5270 }
5271 var ieNSBug = /^xmlns:NS\d+/;
5272 var ieNSPrefix = /^NS\d+:/;
5273 /* istanbul ignore next */
5274 function guardIESVGBug(attrs) {
5275 var res = [];
5276 for (var i = 0; i < attrs.length; i++) {
5277 var attr = attrs[i];
5278 if (!ieNSBug.test(attr.name)) {
5279 attr.name = attr.name.replace(ieNSPrefix, '');
5280 res.push(attr);
5281 }
5282 }
5283 return res;
5284 }
5285 function checkForAliasModel(el, value) {
5286 var _el = el;
5287 while (_el) {
5288 if (_el.for && _el.alias === value) {
5289 warn$1("<".concat(el.tag, " v-model=\"").concat(value, "\">: ") +
5290 "You are binding v-model directly to a v-for iteration alias. " +
5291 "This will not be able to modify the v-for source array because " +
5292 "writing to the alias is like modifying a function local variable. " +
5293 "Consider using an array of objects and use v-model on an object property instead.", el.rawAttrsMap['v-model']);
5294 }
5295 _el = _el.parent;
5296 }
5297 }
5298
5299 /**
5300 * Expand input[v-model] with dynamic type bindings into v-if-else chains
5301 * Turn this:
5302 * <input v-model="data[type]" :type="type">
5303 * into this:
5304 * <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
5305 * <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
5306 * <input v-else :type="type" v-model="data[type]">
5307 */
5308 function preTransformNode(el, options) {
5309 if (el.tag === 'input') {
5310 var map = el.attrsMap;
5311 if (!map['v-model']) {
5312 return;
5313 }
5314 var typeBinding = void 0;
5315 if (map[':type'] || map['v-bind:type']) {
5316 typeBinding = getBindingAttr(el, 'type');
5317 }
5318 if (!map.type && !typeBinding && map['v-bind']) {
5319 typeBinding = "(".concat(map['v-bind'], ").type");
5320 }
5321 if (typeBinding) {
5322 var ifCondition = getAndRemoveAttr(el, 'v-if', true);
5323 var ifConditionExtra = ifCondition ? "&&(".concat(ifCondition, ")") : "";
5324 var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
5325 var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
5326 // 1. checkbox
5327 var branch0 = cloneASTElement(el);
5328 // process for on the main node
5329 processFor(branch0);
5330 addRawAttr(branch0, 'type', 'checkbox');
5331 processElement(branch0, options);
5332 branch0.processed = true; // prevent it from double-processed
5333 branch0.if = "(".concat(typeBinding, ")==='checkbox'") + ifConditionExtra;
5334 addIfCondition(branch0, {
5335 exp: branch0.if,
5336 block: branch0
5337 });
5338 // 2. add radio else-if condition
5339 var branch1 = cloneASTElement(el);
5340 getAndRemoveAttr(branch1, 'v-for', true);
5341 addRawAttr(branch1, 'type', 'radio');
5342 processElement(branch1, options);
5343 addIfCondition(branch0, {
5344 exp: "(".concat(typeBinding, ")==='radio'") + ifConditionExtra,
5345 block: branch1
5346 });
5347 // 3. other
5348 var branch2 = cloneASTElement(el);
5349 getAndRemoveAttr(branch2, 'v-for', true);
5350 addRawAttr(branch2, ':type', typeBinding);
5351 processElement(branch2, options);
5352 addIfCondition(branch0, {
5353 exp: ifCondition,
5354 block: branch2
5355 });
5356 if (hasElse) {
5357 branch0.else = true;
5358 }
5359 else if (elseIfCondition) {
5360 branch0.elseif = elseIfCondition;
5361 }
5362 return branch0;
5363 }
5364 }
5365 }
5366 function cloneASTElement(el) {
5367 return createASTElement(el.tag, el.attrsList.slice(), el.parent);
5368 }
5369 var model$1 = {
5370 preTransformNode: preTransformNode
5371 };
5372
5373 var modules = [klass, style, model$1];
5374
5375 var warn;
5376 // in some cases, the event used has to be determined at runtime
5377 // so we used some reserved tokens during compile.
5378 var RANGE_TOKEN = '__r';
5379 function model(el, dir, _warn) {
5380 warn = _warn;
5381 var value = dir.value;
5382 var modifiers = dir.modifiers;
5383 var tag = el.tag;
5384 var type = el.attrsMap.type;
5385 {
5386 // inputs with type="file" are read only and setting the input's
5387 // value will throw an error.
5388 if (tag === 'input' && type === 'file') {
5389 warn("<".concat(el.tag, " v-model=\"").concat(value, "\" type=\"file\">:\n") +
5390 "File inputs are read only. Use a v-on:change listener instead.", el.rawAttrsMap['v-model']);
5391 }
5392 }
5393 if (el.component) {
5394 genComponentModel(el, value, modifiers);
5395 // component v-model doesn't need extra runtime
5396 return false;
5397 }
5398 else if (tag === 'select') {
5399 genSelect(el, value, modifiers);
5400 }
5401 else if (tag === 'input' && type === 'checkbox') {
5402 genCheckboxModel(el, value, modifiers);
5403 }
5404 else if (tag === 'input' && type === 'radio') {
5405 genRadioModel(el, value, modifiers);
5406 }
5407 else if (tag === 'input' || tag === 'textarea') {
5408 genDefaultModel(el, value, modifiers);
5409 }
5410 else {
5411 genComponentModel(el, value, modifiers);
5412 // component v-model doesn't need extra runtime
5413 return false;
5414 }
5415 // ensure runtime directive metadata
5416 return true;
5417 }
5418 function genCheckboxModel(el, value, modifiers) {
5419 var number = modifiers && modifiers.number;
5420 var valueBinding = getBindingAttr(el, 'value') || 'null';
5421 var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
5422 var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
5423 addProp(el, 'checked', "Array.isArray(".concat(value, ")") +
5424 "?_i(".concat(value, ",").concat(valueBinding, ")>-1") +
5425 (trueValueBinding === 'true'
5426 ? ":(".concat(value, ")")
5427 : ":_q(".concat(value, ",").concat(trueValueBinding, ")")));
5428 addHandler(el, 'change', "var $$a=".concat(value, ",") +
5429 '$$el=$event.target,' +
5430 "$$c=$$el.checked?(".concat(trueValueBinding, "):(").concat(falseValueBinding, ");") +
5431 'if(Array.isArray($$a)){' +
5432 "var $$v=".concat(number ? '_n(' + valueBinding + ')' : valueBinding, ",") +
5433 '$$i=_i($$a,$$v);' +
5434 "if($$el.checked){$$i<0&&(".concat(genAssignmentCode(value, '$$a.concat([$$v])'), ")}") +
5435 "else{$$i>-1&&(".concat(genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'), ")}") +
5436 "}else{".concat(genAssignmentCode(value, '$$c'), "}"), null, true);
5437 }
5438 function genRadioModel(el, value, modifiers) {
5439 var number = modifiers && modifiers.number;
5440 var valueBinding = getBindingAttr(el, 'value') || 'null';
5441 valueBinding = number ? "_n(".concat(valueBinding, ")") : valueBinding;
5442 addProp(el, 'checked', "_q(".concat(value, ",").concat(valueBinding, ")"));
5443 addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
5444 }
5445 function genSelect(el, value, modifiers) {
5446 var number = modifiers && modifiers.number;
5447 var selectedVal = "Array.prototype.filter" +
5448 ".call($event.target.options,function(o){return o.selected})" +
5449 ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" +
5450 "return ".concat(number ? '_n(val)' : 'val', "})");
5451 var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
5452 var code = "var $$selectedVal = ".concat(selectedVal, ";");
5453 code = "".concat(code, " ").concat(genAssignmentCode(value, assignment));
5454 addHandler(el, 'change', code, null, true);
5455 }
5456 function genDefaultModel(el, value, modifiers) {
5457 var type = el.attrsMap.type;
5458 // warn if v-bind:value conflicts with v-model
5459 // except for inputs with v-bind:type
5460 {
5461 var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
5462 var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
5463 if (value_1 && !typeBinding) {
5464 var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
5465 warn("".concat(binding, "=\"").concat(value_1, "\" conflicts with v-model on the same element ") +
5466 'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]);
5467 }
5468 }
5469 var _a = modifiers || {}, lazy = _a.lazy, number = _a.number, trim = _a.trim;
5470 var needCompositionGuard = !lazy && type !== 'range';
5471 var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input';
5472 var valueExpression = '$event.target.value';
5473 if (trim) {
5474 valueExpression = "$event.target.value.trim()";
5475 }
5476 if (number) {
5477 valueExpression = "_n(".concat(valueExpression, ")");
5478 }
5479 var code = genAssignmentCode(value, valueExpression);
5480 if (needCompositionGuard) {
5481 code = "if($event.target.composing)return;".concat(code);
5482 }
5483 addProp(el, 'value', "(".concat(value, ")"));
5484 addHandler(el, event, code, null, true);
5485 if (trim || number) {
5486 addHandler(el, 'blur', '$forceUpdate()');
5487 }
5488 }
5489
5490 function text(el, dir) {
5491 if (dir.value) {
5492 addProp(el, 'textContent', "_s(".concat(dir.value, ")"), dir);
5493 }
5494 }
5495
5496 function html(el, dir) {
5497 if (dir.value) {
5498 addProp(el, 'innerHTML', "_s(".concat(dir.value, ")"), dir);
5499 }
5500 }
5501
5502 var directives = {
5503 model: model,
5504 text: text,
5505 html: html
5506 };
5507
5508 var baseOptions = {
5509 expectHTML: true,
5510 modules: modules,
5511 directives: directives,
5512 isPreTag: isPreTag,
5513 isUnaryTag: isUnaryTag,
5514 mustUseProp: mustUseProp,
5515 canBeLeftOpenTag: canBeLeftOpenTag,
5516 isReservedTag: isReservedTag,
5517 getTagNamespace: getTagNamespace,
5518 staticKeys: genStaticKeys$1(modules)
5519 };
5520
5521 var isStaticKey;
5522 var isPlatformReservedTag$1;
5523 var genStaticKeysCached = cached(genStaticKeys);
5524 /**
5525 * Goal of the optimizer: walk the generated template AST tree
5526 * and detect sub-trees that are purely static, i.e. parts of
5527 * the DOM that never needs to change.
5528 *
5529 * Once we detect these sub-trees, we can:
5530 *
5531 * 1. Hoist them into constants, so that we no longer need to
5532 * create fresh nodes for them on each re-render;
5533 * 2. Completely skip them in the patching process.
5534 */
5535 function optimize$1(root, options) {
5536 if (!root)
5537 return;
5538 isStaticKey = genStaticKeysCached(options.staticKeys || '');
5539 isPlatformReservedTag$1 = options.isReservedTag || no;
5540 // first pass: mark all non-static nodes.
5541 markStatic(root);
5542 // second pass: mark static roots.
5543 markStaticRoots(root, false);
5544 }
5545 function genStaticKeys(keys) {
5546 return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +
5547 (keys ? ',' + keys : ''));
5548 }
5549 function markStatic(node) {
5550 node.static = isStatic(node);
5551 if (node.type === 1) {
5552 // do not make component slot content static. this avoids
5553 // 1. components not able to mutate slot nodes
5554 // 2. static slot content fails for hot-reloading
5555 if (!isPlatformReservedTag$1(node.tag) &&
5556 node.tag !== 'slot' &&
5557 node.attrsMap['inline-template'] == null) {
5558 return;
5559 }
5560 for (var i = 0, l = node.children.length; i < l; i++) {
5561 var child = node.children[i];
5562 markStatic(child);
5563 if (!child.static) {
5564 node.static = false;
5565 }
5566 }
5567 if (node.ifConditions) {
5568 for (var i = 1, l = node.ifConditions.length; i < l; i++) {
5569 var block = node.ifConditions[i].block;
5570 markStatic(block);
5571 if (!block.static) {
5572 node.static = false;
5573 }
5574 }
5575 }
5576 }
5577 }
5578 function markStaticRoots(node, isInFor) {
5579 if (node.type === 1) {
5580 if (node.static || node.once) {
5581 node.staticInFor = isInFor;
5582 }
5583 // For a node to qualify as a static root, it should have children that
5584 // are not just static text. Otherwise the cost of hoisting out will
5585 // outweigh the benefits and it's better off to just always render it fresh.
5586 if (node.static &&
5587 node.children.length &&
5588 !(node.children.length === 1 && node.children[0].type === 3)) {
5589 node.staticRoot = true;
5590 return;
5591 }
5592 else {
5593 node.staticRoot = false;
5594 }
5595 if (node.children) {
5596 for (var i = 0, l = node.children.length; i < l; i++) {
5597 markStaticRoots(node.children[i], isInFor || !!node.for);
5598 }
5599 }
5600 if (node.ifConditions) {
5601 for (var i = 1, l = node.ifConditions.length; i < l; i++) {
5602 markStaticRoots(node.ifConditions[i].block, isInFor);
5603 }
5604 }
5605 }
5606 }
5607 function isStatic(node) {
5608 if (node.type === 2) {
5609 // expression
5610 return false;
5611 }
5612 if (node.type === 3) {
5613 // text
5614 return true;
5615 }
5616 return !!(node.pre ||
5617 (!node.hasBindings && // no dynamic bindings
5618 !node.if &&
5619 !node.for && // not v-if or v-for or v-else
5620 !isBuiltInTag(node.tag) && // not a built-in
5621 isPlatformReservedTag$1(node.tag) && // not a component
5622 !isDirectChildOfTemplateFor(node) &&
5623 Object.keys(node).every(isStaticKey)));
5624 }
5625 function isDirectChildOfTemplateFor(node) {
5626 while (node.parent) {
5627 node = node.parent;
5628 if (node.tag !== 'template') {
5629 return false;
5630 }
5631 if (node.for) {
5632 return true;
5633 }
5634 }
5635 return false;
5636 }
5637
5638 var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
5639 var fnInvokeRE = /\([^)]*?\);*$/;
5640 var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
5641 // KeyboardEvent.keyCode aliases
5642 var keyCodes = {
5643 esc: 27,
5644 tab: 9,
5645 enter: 13,
5646 space: 32,
5647 up: 38,
5648 left: 37,
5649 right: 39,
5650 down: 40,
5651 delete: [8, 46]
5652 };
5653 // KeyboardEvent.key aliases
5654 var keyNames = {
5655 // #7880: IE11 and Edge use `Esc` for Escape key name.
5656 esc: ['Esc', 'Escape'],
5657 tab: 'Tab',
5658 enter: 'Enter',
5659 // #9112: IE11 uses `Spacebar` for Space key name.
5660 space: [' ', 'Spacebar'],
5661 // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
5662 up: ['Up', 'ArrowUp'],
5663 left: ['Left', 'ArrowLeft'],
5664 right: ['Right', 'ArrowRight'],
5665 down: ['Down', 'ArrowDown'],
5666 // #9112: IE11 uses `Del` for Delete key name.
5667 delete: ['Backspace', 'Delete', 'Del']
5668 };
5669 // #4868: modifiers that prevent the execution of the listener
5670 // need to explicitly return null so that we can determine whether to remove
5671 // the listener for .once
5672 var genGuard = function (condition) { return "if(".concat(condition, ")return null;"); };
5673 var modifierCode = {
5674 stop: '$event.stopPropagation();',
5675 prevent: '$event.preventDefault();',
5676 self: genGuard("$event.target !== $event.currentTarget"),
5677 ctrl: genGuard("!$event.ctrlKey"),
5678 shift: genGuard("!$event.shiftKey"),
5679 alt: genGuard("!$event.altKey"),
5680 meta: genGuard("!$event.metaKey"),
5681 left: genGuard("'button' in $event && $event.button !== 0"),
5682 middle: genGuard("'button' in $event && $event.button !== 1"),
5683 right: genGuard("'button' in $event && $event.button !== 2")
5684 };
5685 function genHandlers(events, isNative) {
5686 var prefix = isNative ? 'nativeOn:' : 'on:';
5687 var staticHandlers = "";
5688 var dynamicHandlers = "";
5689 for (var name_1 in events) {
5690 var handlerCode = genHandler(events[name_1]);
5691 //@ts-expect-error
5692 if (events[name_1] && events[name_1].dynamic) {
5693 dynamicHandlers += "".concat(name_1, ",").concat(handlerCode, ",");
5694 }
5695 else {
5696 staticHandlers += "\"".concat(name_1, "\":").concat(handlerCode, ",");
5697 }
5698 }
5699 staticHandlers = "{".concat(staticHandlers.slice(0, -1), "}");
5700 if (dynamicHandlers) {
5701 return prefix + "_d(".concat(staticHandlers, ",[").concat(dynamicHandlers.slice(0, -1), "])");
5702 }
5703 else {
5704 return prefix + staticHandlers;
5705 }
5706 }
5707 function genHandler(handler) {
5708 if (!handler) {
5709 return 'function(){}';
5710 }
5711 if (Array.isArray(handler)) {
5712 return "[".concat(handler.map(function (handler) { return genHandler(handler); }).join(','), "]");
5713 }
5714 var isMethodPath = simplePathRE.test(handler.value);
5715 var isFunctionExpression = fnExpRE.test(handler.value);
5716 var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));
5717 if (!handler.modifiers) {
5718 if (isMethodPath || isFunctionExpression) {
5719 return handler.value;
5720 }
5721 return "function($event){".concat(isFunctionInvocation ? "return ".concat(handler.value) : handler.value, "}"); // inline statement
5722 }
5723 else {
5724 var code = '';
5725 var genModifierCode = '';
5726 var keys = [];
5727 var _loop_1 = function (key) {
5728 if (modifierCode[key]) {
5729 genModifierCode += modifierCode[key];
5730 // left/right
5731 if (keyCodes[key]) {
5732 keys.push(key);
5733 }
5734 }
5735 else if (key === 'exact') {
5736 var modifiers_1 = handler.modifiers;
5737 genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta']
5738 .filter(function (keyModifier) { return !modifiers_1[keyModifier]; })
5739 .map(function (keyModifier) { return "$event.".concat(keyModifier, "Key"); })
5740 .join('||'));
5741 }
5742 else {
5743 keys.push(key);
5744 }
5745 };
5746 for (var key in handler.modifiers) {
5747 _loop_1(key);
5748 }
5749 if (keys.length) {
5750 code += genKeyFilter(keys);
5751 }
5752 // Make sure modifiers like prevent and stop get executed after key filtering
5753 if (genModifierCode) {
5754 code += genModifierCode;
5755 }
5756 var handlerCode = isMethodPath
5757 ? "return ".concat(handler.value, ".apply(null, arguments)")
5758 : isFunctionExpression
5759 ? "return (".concat(handler.value, ").apply(null, arguments)")
5760 : isFunctionInvocation
5761 ? "return ".concat(handler.value)
5762 : handler.value;
5763 return "function($event){".concat(code).concat(handlerCode, "}");
5764 }
5765 }
5766 function genKeyFilter(keys) {
5767 return (
5768 // make sure the key filters only apply to KeyboardEvents
5769 // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake
5770 // key events that do not have keyCode property...
5771 "if(!$event.type.indexOf('key')&&" +
5772 "".concat(keys.map(genFilterCode).join('&&'), ")return null;"));
5773 }
5774 function genFilterCode(key) {
5775 var keyVal = parseInt(key, 10);
5776 if (keyVal) {
5777 return "$event.keyCode!==".concat(keyVal);
5778 }
5779 var keyCode = keyCodes[key];
5780 var keyName = keyNames[key];
5781 return ("_k($event.keyCode," +
5782 "".concat(JSON.stringify(key), ",") +
5783 "".concat(JSON.stringify(keyCode), ",") +
5784 "$event.key," +
5785 "".concat(JSON.stringify(keyName)) +
5786 ")");
5787 }
5788
5789 function on(el, dir) {
5790 if (dir.modifiers) {
5791 warn$2("v-on without argument does not support modifiers.");
5792 }
5793 el.wrapListeners = function (code) { return "_g(".concat(code, ",").concat(dir.value, ")"); };
5794 }
5795
5796 function bind(el, dir) {
5797 el.wrapData = function (code) {
5798 return "_b(".concat(code, ",'").concat(el.tag, "',").concat(dir.value, ",").concat(dir.modifiers && dir.modifiers.prop ? 'true' : 'false').concat(dir.modifiers && dir.modifiers.sync ? ',true' : '', ")");
5799 };
5800 }
5801
5802 var baseDirectives = {
5803 on: on,
5804 bind: bind,
5805 cloak: noop
5806 };
5807
5808 var CodegenState = /** @class */ (function () {
5809 function CodegenState(options) {
5810 this.options = options;
5811 this.warn = options.warn || baseWarn;
5812 this.transforms = pluckModuleFunction(options.modules, 'transformCode');
5813 this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
5814 this.directives = extend(extend({}, baseDirectives), options.directives);
5815 var isReservedTag = options.isReservedTag || no;
5816 this.maybeComponent = function (el) {
5817 return !!el.component || !isReservedTag(el.tag);
5818 };
5819 this.onceId = 0;
5820 this.staticRenderFns = [];
5821 this.pre = false;
5822 }
5823 return CodegenState;
5824 }());
5825 function generate$1(ast, options) {
5826 var state = new CodegenState(options);
5827 // fix #11483, Root level <script> tags should not be rendered.
5828 var code = ast
5829 ? ast.tag === 'script'
5830 ? 'null'
5831 : genElement(ast, state)
5832 : '_c("div")';
5833 return {
5834 render: "with(this){return ".concat(code, "}"),
5835 staticRenderFns: state.staticRenderFns
5836 };
5837 }
5838 function genElement(el, state) {
5839 if (el.parent) {
5840 el.pre = el.pre || el.parent.pre;
5841 }
5842 if (el.staticRoot && !el.staticProcessed) {
5843 return genStatic(el, state);
5844 }
5845 else if (el.once && !el.onceProcessed) {
5846 return genOnce(el, state);
5847 }
5848 else if (el.for && !el.forProcessed) {
5849 return genFor(el, state);
5850 }
5851 else if (el.if && !el.ifProcessed) {
5852 return genIf(el, state);
5853 }
5854 else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
5855 return genChildren(el, state) || 'void 0';
5856 }
5857 else if (el.tag === 'slot') {
5858 return genSlot(el, state);
5859 }
5860 else {
5861 // component or element
5862 var code = void 0;
5863 if (el.component) {
5864 code = genComponent(el.component, el, state);
5865 }
5866 else {
5867 var data = void 0;
5868 var maybeComponent = state.maybeComponent(el);
5869 if (!el.plain || (el.pre && maybeComponent)) {
5870 data = genData(el, state);
5871 }
5872 var tag
5873 // check if this is a component in <script setup>
5874 = void 0;
5875 // check if this is a component in <script setup>
5876 var bindings = state.options.bindings;
5877 if (maybeComponent && bindings && bindings.__isScriptSetup !== false) {
5878 tag = checkBindingType(bindings, el.tag);
5879 }
5880 if (!tag)
5881 tag = "'".concat(el.tag, "'");
5882 var children = el.inlineTemplate ? null : genChildren(el, state, true);
5883 code = "_c(".concat(tag).concat(data ? ",".concat(data) : '' // data
5884 ).concat(children ? ",".concat(children) : '' // children
5885 , ")");
5886 }
5887 // module transforms
5888 for (var i = 0; i < state.transforms.length; i++) {
5889 code = state.transforms[i](el, code);
5890 }
5891 return code;
5892 }
5893 }
5894 function checkBindingType(bindings, key) {
5895 var camelName = camelize(key);
5896 var PascalName = capitalize(camelName);
5897 var checkType = function (type) {
5898 if (bindings[key] === type) {
5899 return key;
5900 }
5901 if (bindings[camelName] === type) {
5902 return camelName;
5903 }
5904 if (bindings[PascalName] === type) {
5905 return PascalName;
5906 }
5907 };
5908 var fromConst = checkType("setup-const" /* BindingTypes.SETUP_CONST */) ||
5909 checkType("setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */);
5910 if (fromConst) {
5911 return fromConst;
5912 }
5913 var fromMaybeRef = checkType("setup-let" /* BindingTypes.SETUP_LET */) ||
5914 checkType("setup-ref" /* BindingTypes.SETUP_REF */) ||
5915 checkType("setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */);
5916 if (fromMaybeRef) {
5917 return fromMaybeRef;
5918 }
5919 }
5920 // hoist static sub-trees out
5921 function genStatic(el, state) {
5922 el.staticProcessed = true;
5923 // Some elements (templates) need to behave differently inside of a v-pre
5924 // node. All pre nodes are static roots, so we can use this as a location to
5925 // wrap a state change and reset it upon exiting the pre node.
5926 var originalPreState = state.pre;
5927 if (el.pre) {
5928 state.pre = el.pre;
5929 }
5930 state.staticRenderFns.push("with(this){return ".concat(genElement(el, state), "}"));
5931 state.pre = originalPreState;
5932 return "_m(".concat(state.staticRenderFns.length - 1).concat(el.staticInFor ? ',true' : '', ")");
5933 }
5934 // v-once
5935 function genOnce(el, state) {
5936 el.onceProcessed = true;
5937 if (el.if && !el.ifProcessed) {
5938 return genIf(el, state);
5939 }
5940 else if (el.staticInFor) {
5941 var key = '';
5942 var parent_1 = el.parent;
5943 while (parent_1) {
5944 if (parent_1.for) {
5945 key = parent_1.key;
5946 break;
5947 }
5948 parent_1 = parent_1.parent;
5949 }
5950 if (!key) {
5951 state.warn("v-once can only be used inside v-for that is keyed. ", el.rawAttrsMap['v-once']);
5952 return genElement(el, state);
5953 }
5954 return "_o(".concat(genElement(el, state), ",").concat(state.onceId++, ",").concat(key, ")");
5955 }
5956 else {
5957 return genStatic(el, state);
5958 }
5959 }
5960 function genIf(el, state, altGen, altEmpty) {
5961 el.ifProcessed = true; // avoid recursion
5962 return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty);
5963 }
5964 function genIfConditions(conditions, state, altGen, altEmpty) {
5965 if (!conditions.length) {
5966 return altEmpty || '_e()';
5967 }
5968 var condition = conditions.shift();
5969 if (condition.exp) {
5970 return "(".concat(condition.exp, ")?").concat(genTernaryExp(condition.block), ":").concat(genIfConditions(conditions, state, altGen, altEmpty));
5971 }
5972 else {
5973 return "".concat(genTernaryExp(condition.block));
5974 }
5975 // v-if with v-once should generate code like (a)?_m(0):_m(1)
5976 function genTernaryExp(el) {
5977 return altGen
5978 ? altGen(el, state)
5979 : el.once
5980 ? genOnce(el, state)
5981 : genElement(el, state);
5982 }
5983 }
5984 function genFor(el, state, altGen, altHelper) {
5985 var exp = el.for;
5986 var alias = el.alias;
5987 var iterator1 = el.iterator1 ? ",".concat(el.iterator1) : '';
5988 var iterator2 = el.iterator2 ? ",".concat(el.iterator2) : '';
5989 if (state.maybeComponent(el) &&
5990 el.tag !== 'slot' &&
5991 el.tag !== 'template' &&
5992 !el.key) {
5993 state.warn("<".concat(el.tag, " v-for=\"").concat(alias, " in ").concat(exp, "\">: component lists rendered with ") +
5994 "v-for should have explicit keys. " +
5995 "See https://vuejs.org/guide/list.html#key for more info.", el.rawAttrsMap['v-for'], true /* tip */);
5996 }
5997 el.forProcessed = true; // avoid recursion
5998 return ("".concat(altHelper || '_l', "((").concat(exp, "),") +
5999 "function(".concat(alias).concat(iterator1).concat(iterator2, "){") +
6000 "return ".concat((altGen || genElement)(el, state)) +
6001 '})');
6002 }
6003 function genData(el, state) {
6004 var data = '{';
6005 // directives first.
6006 // directives may mutate the el's other properties before they are generated.
6007 var dirs = genDirectives(el, state);
6008 if (dirs)
6009 data += dirs + ',';
6010 // key
6011 if (el.key) {
6012 data += "key:".concat(el.key, ",");
6013 }
6014 // ref
6015 if (el.ref) {
6016 data += "ref:".concat(el.ref, ",");
6017 }
6018 if (el.refInFor) {
6019 data += "refInFor:true,";
6020 }
6021 // pre
6022 if (el.pre) {
6023 data += "pre:true,";
6024 }
6025 // record original tag name for components using "is" attribute
6026 if (el.component) {
6027 data += "tag:\"".concat(el.tag, "\",");
6028 }
6029 // module data generation functions
6030 for (var i = 0; i < state.dataGenFns.length; i++) {
6031 data += state.dataGenFns[i](el);
6032 }
6033 // attributes
6034 if (el.attrs) {
6035 data += "attrs:".concat(genProps(el.attrs), ",");
6036 }
6037 // DOM props
6038 if (el.props) {
6039 data += "domProps:".concat(genProps(el.props), ",");
6040 }
6041 // event handlers
6042 if (el.events) {
6043 data += "".concat(genHandlers(el.events, false), ",");
6044 }
6045 if (el.nativeEvents) {
6046 data += "".concat(genHandlers(el.nativeEvents, true), ",");
6047 }
6048 // slot target
6049 // only for non-scoped slots
6050 if (el.slotTarget && !el.slotScope) {
6051 data += "slot:".concat(el.slotTarget, ",");
6052 }
6053 // scoped slots
6054 if (el.scopedSlots) {
6055 data += "".concat(genScopedSlots(el, el.scopedSlots, state), ",");
6056 }
6057 // component v-model
6058 if (el.model) {
6059 data += "model:{value:".concat(el.model.value, ",callback:").concat(el.model.callback, ",expression:").concat(el.model.expression, "},");
6060 }
6061 // inline-template
6062 if (el.inlineTemplate) {
6063 var inlineTemplate = genInlineTemplate(el, state);
6064 if (inlineTemplate) {
6065 data += "".concat(inlineTemplate, ",");
6066 }
6067 }
6068 data = data.replace(/,$/, '') + '}';
6069 // v-bind dynamic argument wrap
6070 // v-bind with dynamic arguments must be applied using the same v-bind object
6071 // merge helper so that class/style/mustUseProp attrs are handled correctly.
6072 if (el.dynamicAttrs) {
6073 data = "_b(".concat(data, ",\"").concat(el.tag, "\",").concat(genProps(el.dynamicAttrs), ")");
6074 }
6075 // v-bind data wrap
6076 if (el.wrapData) {
6077 data = el.wrapData(data);
6078 }
6079 // v-on data wrap
6080 if (el.wrapListeners) {
6081 data = el.wrapListeners(data);
6082 }
6083 return data;
6084 }
6085 function genDirectives(el, state) {
6086 var dirs = el.directives;
6087 if (!dirs)
6088 return;
6089 var res = 'directives:[';
6090 var hasRuntime = false;
6091 var i, l, dir, needRuntime;
6092 for (i = 0, l = dirs.length; i < l; i++) {
6093 dir = dirs[i];
6094 needRuntime = true;
6095 var gen = state.directives[dir.name];
6096 if (gen) {
6097 // compile-time directive that manipulates AST.
6098 // returns true if it also needs a runtime counterpart.
6099 needRuntime = !!gen(el, dir, state.warn);
6100 }
6101 if (needRuntime) {
6102 hasRuntime = true;
6103 res += "{name:\"".concat(dir.name, "\",rawName:\"").concat(dir.rawName, "\"").concat(dir.value
6104 ? ",value:(".concat(dir.value, "),expression:").concat(JSON.stringify(dir.value))
6105 : '').concat(dir.arg ? ",arg:".concat(dir.isDynamicArg ? dir.arg : "\"".concat(dir.arg, "\"")) : '').concat(dir.modifiers ? ",modifiers:".concat(JSON.stringify(dir.modifiers)) : '', "},");
6106 }
6107 }
6108 if (hasRuntime) {
6109 return res.slice(0, -1) + ']';
6110 }
6111 }
6112 function genInlineTemplate(el, state) {
6113 var ast = el.children[0];
6114 if ((el.children.length !== 1 || ast.type !== 1)) {
6115 state.warn('Inline-template components must have exactly one child element.', { start: el.start });
6116 }
6117 if (ast && ast.type === 1) {
6118 var inlineRenderFns = generate$1(ast, state.options);
6119 return "inlineTemplate:{render:function(){".concat(inlineRenderFns.render, "},staticRenderFns:[").concat(inlineRenderFns.staticRenderFns
6120 .map(function (code) { return "function(){".concat(code, "}"); })
6121 .join(','), "]}");
6122 }
6123 }
6124 function genScopedSlots(el, slots, state) {
6125 // by default scoped slots are considered "stable", this allows child
6126 // components with only scoped slots to skip forced updates from parent.
6127 // but in some cases we have to bail-out of this optimization
6128 // for example if the slot contains dynamic names, has v-if or v-for on them...
6129 var needsForceUpdate = el.for ||
6130 Object.keys(slots).some(function (key) {
6131 var slot = slots[key];
6132 return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic
6133 );
6134 });
6135 // #9534: if a component with scoped slots is inside a conditional branch,
6136 // it's possible for the same component to be reused but with different
6137 // compiled slot content. To avoid that, we generate a unique key based on
6138 // the generated code of all the slot contents.
6139 var needsKey = !!el.if;
6140 // OR when it is inside another scoped slot or v-for (the reactivity may be
6141 // disconnected due to the intermediate scope variable)
6142 // #9438, #9506
6143 // TODO: this can be further optimized by properly analyzing in-scope bindings
6144 // and skip force updating ones that do not actually use scope variables.
6145 if (!needsForceUpdate) {
6146 var parent_2 = el.parent;
6147 while (parent_2) {
6148 if ((parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) ||
6149 parent_2.for) {
6150 needsForceUpdate = true;
6151 break;
6152 }
6153 if (parent_2.if) {
6154 needsKey = true;
6155 }
6156 parent_2 = parent_2.parent;
6157 }
6158 }
6159 var generatedSlots = Object.keys(slots)
6160 .map(function (key) { return genScopedSlot(slots[key], state); })
6161 .join(',');
6162 return "scopedSlots:_u([".concat(generatedSlots, "]").concat(needsForceUpdate ? ",null,true" : "").concat(!needsForceUpdate && needsKey ? ",null,false,".concat(hash(generatedSlots)) : "", ")");
6163 }
6164 function hash(str) {
6165 var hash = 5381;
6166 var i = str.length;
6167 while (i) {
6168 hash = (hash * 33) ^ str.charCodeAt(--i);
6169 }
6170 return hash >>> 0;
6171 }
6172 function containsSlotChild(el) {
6173 if (el.type === 1) {
6174 if (el.tag === 'slot') {
6175 return true;
6176 }
6177 return el.children.some(containsSlotChild);
6178 }
6179 return false;
6180 }
6181 function genScopedSlot(el, state) {
6182 var isLegacySyntax = el.attrsMap['slot-scope'];
6183 if (el.if && !el.ifProcessed && !isLegacySyntax) {
6184 return genIf(el, state, genScopedSlot, "null");
6185 }
6186 if (el.for && !el.forProcessed) {
6187 return genFor(el, state, genScopedSlot);
6188 }
6189 var slotScope = el.slotScope === emptySlotScopeToken ? "" : String(el.slotScope);
6190 var fn = "function(".concat(slotScope, "){") +
6191 "return ".concat(el.tag === 'template'
6192 ? el.if && isLegacySyntax
6193 ? "(".concat(el.if, ")?").concat(genChildren(el, state) || 'undefined', ":undefined")
6194 : genChildren(el, state) || 'undefined'
6195 : genElement(el, state), "}");
6196 // reverse proxy v-slot without scope on this.$slots
6197 var reverseProxy = slotScope ? "" : ",proxy:true";
6198 return "{key:".concat(el.slotTarget || "\"default\"", ",fn:").concat(fn).concat(reverseProxy, "}");
6199 }
6200 function genChildren(el, state, checkSkip, altGenElement, altGenNode) {
6201 var children = el.children;
6202 if (children.length) {
6203 var el_1 = children[0];
6204 // optimize single v-for
6205 if (children.length === 1 &&
6206 el_1.for &&
6207 el_1.tag !== 'template' &&
6208 el_1.tag !== 'slot') {
6209 var normalizationType_1 = checkSkip
6210 ? state.maybeComponent(el_1)
6211 ? ",1"
6212 : ",0"
6213 : "";
6214 return "".concat((altGenElement || genElement)(el_1, state)).concat(normalizationType_1);
6215 }
6216 var normalizationType = checkSkip
6217 ? getNormalizationType(children, state.maybeComponent)
6218 : 0;
6219 var gen_1 = altGenNode || genNode;
6220 return "[".concat(children.map(function (c) { return gen_1(c, state); }).join(','), "]").concat(normalizationType ? ",".concat(normalizationType) : '');
6221 }
6222 }
6223 // determine the normalization needed for the children array.
6224 // 0: no normalization needed
6225 // 1: simple normalization needed (possible 1-level deep nested array)
6226 // 2: full normalization needed
6227 function getNormalizationType(children, maybeComponent) {
6228 var res = 0;
6229 for (var i = 0; i < children.length; i++) {
6230 var el = children[i];
6231 if (el.type !== 1) {
6232 continue;
6233 }
6234 if (needsNormalization(el) ||
6235 (el.ifConditions &&
6236 el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
6237 res = 2;
6238 break;
6239 }
6240 if (maybeComponent(el) ||
6241 (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
6242 res = 1;
6243 }
6244 }
6245 return res;
6246 }
6247 function needsNormalization(el) {
6248 return el.for !== undefined || el.tag === 'template' || el.tag === 'slot';
6249 }
6250 function genNode(node, state) {
6251 if (node.type === 1) {
6252 return genElement(node, state);
6253 }
6254 else if (node.type === 3 && node.isComment) {
6255 return genComment(node);
6256 }
6257 else {
6258 return genText(node);
6259 }
6260 }
6261 function genText(text) {
6262 return "_v(".concat(text.type === 2
6263 ? text.expression // no need for () because already wrapped in _s()
6264 : transformSpecialNewlines(JSON.stringify(text.text)), ")");
6265 }
6266 function genComment(comment) {
6267 return "_e(".concat(JSON.stringify(comment.text), ")");
6268 }
6269 function genSlot(el, state) {
6270 var slotName = el.slotName || '"default"';
6271 var children = genChildren(el, state);
6272 var res = "_t(".concat(slotName).concat(children ? ",function(){return ".concat(children, "}") : '');
6273 var attrs = el.attrs || el.dynamicAttrs
6274 ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({
6275 // slot props are camelized
6276 name: camelize(attr.name),
6277 value: attr.value,
6278 dynamic: attr.dynamic
6279 }); }))
6280 : null;
6281 var bind = el.attrsMap['v-bind'];
6282 if ((attrs || bind) && !children) {
6283 res += ",null";
6284 }
6285 if (attrs) {
6286 res += ",".concat(attrs);
6287 }
6288 if (bind) {
6289 res += "".concat(attrs ? '' : ',null', ",").concat(bind);
6290 }
6291 return res + ')';
6292 }
6293 // componentName is el.component, take it as argument to shun flow's pessimistic refinement
6294 function genComponent(componentName, el, state) {
6295 var children = el.inlineTemplate ? null : genChildren(el, state, true);
6296 return "_c(".concat(componentName, ",").concat(genData(el, state)).concat(children ? ",".concat(children) : '', ")");
6297 }
6298 function genProps(props) {
6299 var staticProps = "";
6300 var dynamicProps = "";
6301 for (var i = 0; i < props.length; i++) {
6302 var prop = props[i];
6303 var value = transformSpecialNewlines(prop.value);
6304 if (prop.dynamic) {
6305 dynamicProps += "".concat(prop.name, ",").concat(value, ",");
6306 }
6307 else {
6308 staticProps += "\"".concat(prop.name, "\":").concat(value, ",");
6309 }
6310 }
6311 staticProps = "{".concat(staticProps.slice(0, -1), "}");
6312 if (dynamicProps) {
6313 return "_d(".concat(staticProps, ",[").concat(dynamicProps.slice(0, -1), "])");
6314 }
6315 else {
6316 return staticProps;
6317 }
6318 }
6319 // #3895, #4268
6320 function transformSpecialNewlines(text) {
6321 return text.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');
6322 }
6323
6324 // these keywords should not appear inside expressions, but operators like
6325 // typeof, instanceof and in are allowed
6326 var prohibitedKeywordRE = new RegExp('\\b' +
6327 ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
6328 'super,throw,while,yield,delete,export,import,return,switch,default,' +
6329 'extends,finally,continue,debugger,function,arguments')
6330 .split(',')
6331 .join('\\b|\\b') +
6332 '\\b');
6333 // these unary operators should not be used as property/method names
6334 var unaryOperatorsRE = new RegExp('\\b' +
6335 'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') +
6336 '\\s*\\([^\\)]*\\)');
6337 // strip strings in expressions
6338 var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
6339 // detect problematic expressions in a template
6340 function detectErrors(ast, warn) {
6341 if (ast) {
6342 checkNode(ast, warn);
6343 }
6344 }
6345 function checkNode(node, warn) {
6346 if (node.type === 1) {
6347 for (var name_1 in node.attrsMap) {
6348 if (dirRE.test(name_1)) {
6349 var value = node.attrsMap[name_1];
6350 if (value) {
6351 var range = node.rawAttrsMap[name_1];
6352 if (name_1 === 'v-for') {
6353 checkFor(node, "v-for=\"".concat(value, "\""), warn, range);
6354 }
6355 else if (name_1 === 'v-slot' || name_1[0] === '#') {
6356 checkFunctionParameterExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
6357 }
6358 else if (onRE.test(name_1)) {
6359 checkEvent(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
6360 }
6361 else {
6362 checkExpression(value, "".concat(name_1, "=\"").concat(value, "\""), warn, range);
6363 }
6364 }
6365 }
6366 }
6367 if (node.children) {
6368 for (var i = 0; i < node.children.length; i++) {
6369 checkNode(node.children[i], warn);
6370 }
6371 }
6372 }
6373 else if (node.type === 2) {
6374 checkExpression(node.expression, node.text, warn, node);
6375 }
6376 }
6377 function checkEvent(exp, text, warn, range) {
6378 var stripped = exp.replace(stripStringRE, '');
6379 var keywordMatch = stripped.match(unaryOperatorsRE);
6380 if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
6381 warn("avoid using JavaScript unary operator as property name: " +
6382 "\"".concat(keywordMatch[0], "\" in expression ").concat(text.trim()), range);
6383 }
6384 checkExpression(exp, text, warn, range);
6385 }
6386 function checkFor(node, text, warn, range) {
6387 checkExpression(node.for || '', text, warn, range);
6388 checkIdentifier(node.alias, 'v-for alias', text, warn, range);
6389 checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);
6390 checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);
6391 }
6392 function checkIdentifier(ident, type, text, warn, range) {
6393 if (typeof ident === 'string') {
6394 try {
6395 new Function("var ".concat(ident, "=_"));
6396 }
6397 catch (e) {
6398 warn("invalid ".concat(type, " \"").concat(ident, "\" in expression: ").concat(text.trim()), range);
6399 }
6400 }
6401 }
6402 function checkExpression(exp, text, warn, range) {
6403 try {
6404 new Function("return ".concat(exp));
6405 }
6406 catch (e) {
6407 var keywordMatch = exp
6408 .replace(stripStringRE, '')
6409 .match(prohibitedKeywordRE);
6410 if (keywordMatch) {
6411 warn("avoid using JavaScript keyword as property name: " +
6412 "\"".concat(keywordMatch[0], "\"\n Raw expression: ").concat(text.trim()), range);
6413 }
6414 else {
6415 warn("invalid expression: ".concat(e.message, " in\n\n") +
6416 " ".concat(exp, "\n\n") +
6417 " Raw expression: ".concat(text.trim(), "\n"), range);
6418 }
6419 }
6420 }
6421 function checkFunctionParameterExpression(exp, text, warn, range) {
6422 try {
6423 new Function(exp, '');
6424 }
6425 catch (e) {
6426 warn("invalid function parameter expression: ".concat(e.message, " in\n\n") +
6427 " ".concat(exp, "\n\n") +
6428 " Raw expression: ".concat(text.trim(), "\n"), range);
6429 }
6430 }
6431
6432 var range = 2;
6433 function generateCodeFrame(source, start, end) {
6434 if (start === void 0) { start = 0; }
6435 if (end === void 0) { end = source.length; }
6436 var lines = source.split(/\r?\n/);
6437 var count = 0;
6438 var res = [];
6439 for (var i = 0; i < lines.length; i++) {
6440 count += lines[i].length + 1;
6441 if (count >= start) {
6442 for (var j = i - range; j <= i + range || end > count; j++) {
6443 if (j < 0 || j >= lines.length)
6444 continue;
6445 res.push("".concat(j + 1).concat(repeat(" ", 3 - String(j + 1).length), "| ").concat(lines[j]));
6446 var lineLength = lines[j].length;
6447 if (j === i) {
6448 // push underline
6449 var pad = start - (count - lineLength) + 1;
6450 var length_1 = end > count ? lineLength - pad : end - start;
6451 res.push(" | " + repeat(" ", pad) + repeat("^", length_1));
6452 }
6453 else if (j > i) {
6454 if (end > count) {
6455 var length_2 = Math.min(end - count, lineLength);
6456 res.push(" | " + repeat("^", length_2));
6457 }
6458 count += lineLength + 1;
6459 }
6460 }
6461 break;
6462 }
6463 }
6464 return res.join('\n');
6465 }
6466 function repeat(str, n) {
6467 var result = '';
6468 if (n > 0) {
6469 // eslint-disable-next-line no-constant-condition
6470 while (true) {
6471 // eslint-disable-line
6472 if (n & 1)
6473 result += str;
6474 n >>>= 1;
6475 if (n <= 0)
6476 break;
6477 str += str;
6478 }
6479 }
6480 return result;
6481 }
6482
6483 function createFunction(code, errors) {
6484 try {
6485 return new Function(code);
6486 }
6487 catch (err) {
6488 errors.push({ err: err, code: code });
6489 return noop;
6490 }
6491 }
6492 function createCompileToFunctionFn(compile) {
6493 var cache = Object.create(null);
6494 return function compileToFunctions(template, options, vm) {
6495 options = extend({}, options);
6496 var warn = options.warn || warn$2;
6497 delete options.warn;
6498 /* istanbul ignore if */
6499 {
6500 // detect possible CSP restriction
6501 try {
6502 new Function('return 1');
6503 }
6504 catch (e) {
6505 if (e.toString().match(/unsafe-eval|CSP/)) {
6506 warn('It seems you are using the standalone build of Vue.js in an ' +
6507 'environment with Content Security Policy that prohibits unsafe-eval. ' +
6508 'The template compiler cannot work in this environment. Consider ' +
6509 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
6510 'templates into render functions.');
6511 }
6512 }
6513 }
6514 // check cache
6515 var key = options.delimiters
6516 ? String(options.delimiters) + template
6517 : template;
6518 if (cache[key]) {
6519 return cache[key];
6520 }
6521 // compile
6522 var compiled = compile(template, options);
6523 // check compilation errors/tips
6524 {
6525 if (compiled.errors && compiled.errors.length) {
6526 if (options.outputSourceRange) {
6527 compiled.errors.forEach(function (e) {
6528 warn("Error compiling template:\n\n".concat(e.msg, "\n\n") +
6529 generateCodeFrame(template, e.start, e.end), vm);
6530 });
6531 }
6532 else {
6533 warn("Error compiling template:\n\n".concat(template, "\n\n") +
6534 compiled.errors.map(function (e) { return "- ".concat(e); }).join('\n') +
6535 '\n', vm);
6536 }
6537 }
6538 if (compiled.tips && compiled.tips.length) {
6539 if (options.outputSourceRange) {
6540 compiled.tips.forEach(function (e) { return tip(e.msg, vm); });
6541 }
6542 else {
6543 compiled.tips.forEach(function (msg) { return tip(msg, vm); });
6544 }
6545 }
6546 }
6547 // turn code into functions
6548 var res = {};
6549 var fnGenErrors = [];
6550 res.render = createFunction(compiled.render, fnGenErrors);
6551 res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
6552 return createFunction(code, fnGenErrors);
6553 });
6554 // check function generation errors.
6555 // this should only happen if there is a bug in the compiler itself.
6556 // mostly for codegen development use
6557 /* istanbul ignore if */
6558 {
6559 if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
6560 warn("Failed to generate render function:\n\n" +
6561 fnGenErrors
6562 .map(function (_a) {
6563 var err = _a.err, code = _a.code;
6564 return "".concat(err.toString(), " in\n\n").concat(code, "\n");
6565 })
6566 .join('\n'), vm);
6567 }
6568 }
6569 return (cache[key] = res);
6570 };
6571 }
6572
6573 function createCompilerCreator(baseCompile) {
6574 return function createCompiler(baseOptions) {
6575 function compile(template, options) {
6576 var finalOptions = Object.create(baseOptions);
6577 var errors = [];
6578 var tips = [];
6579 var warn = function (msg, range, tip) {
6580 (tip ? tips : errors).push(msg);
6581 };
6582 if (options) {
6583 if (options.outputSourceRange) {
6584 // $flow-disable-line
6585 var leadingSpaceLength_1 = template.match(/^\s*/)[0].length;
6586 warn = function (msg, range, tip) {
6587 var data = typeof msg === 'string' ? { msg: msg } : msg;
6588 if (range) {
6589 if (range.start != null) {
6590 data.start = range.start + leadingSpaceLength_1;
6591 }
6592 if (range.end != null) {
6593 data.end = range.end + leadingSpaceLength_1;
6594 }
6595 }
6596 (tip ? tips : errors).push(data);
6597 };
6598 }
6599 // merge custom modules
6600 if (options.modules) {
6601 finalOptions.modules = (baseOptions.modules || []).concat(options.modules);
6602 }
6603 // merge custom directives
6604 if (options.directives) {
6605 finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives);
6606 }
6607 // copy other options
6608 for (var key in options) {
6609 if (key !== 'modules' && key !== 'directives') {
6610 finalOptions[key] = options[key];
6611 }
6612 }
6613 }
6614 finalOptions.warn = warn;
6615 var compiled = baseCompile(template.trim(), finalOptions);
6616 {
6617 detectErrors(compiled.ast, warn);
6618 }
6619 compiled.errors = errors;
6620 compiled.tips = tips;
6621 return compiled;
6622 }
6623 return {
6624 compile: compile,
6625 compileToFunctions: createCompileToFunctionFn(compile)
6626 };
6627 };
6628 }
6629
6630 // `createCompilerCreator` allows creating compilers that use alternative
6631 // parser/optimizer/codegen, e.g the SSR optimizing compiler.
6632 // Here we just export a default compiler using the default parts.
6633 var createCompiler$1 = createCompilerCreator(function baseCompile(template, options) {
6634 var ast = parse(template.trim(), options);
6635 if (options.optimize !== false) {
6636 optimize$1(ast, options);
6637 }
6638 var code = generate$1(ast, options);
6639 return {
6640 ast: ast,
6641 render: code.render,
6642 staticRenderFns: code.staticRenderFns
6643 };
6644 });
6645
6646 var _a$1 = createCompiler$1(baseOptions), compile$1 = _a$1.compile, compileToFunctions$1 = _a$1.compileToFunctions;
6647
6648 var isAttr = makeMap('accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' +
6649 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' +
6650 'checked,cite,class,code,codebase,color,cols,colspan,content,' +
6651 'contenteditable,contextmenu,controls,coords,data,datetime,default,' +
6652 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,for,' +
6653 'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,' +
6654 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' +
6655 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' +
6656 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' +
6657 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' +
6658 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' +
6659 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' +
6660 'target,title,usemap,value,width,wrap');
6661 /* istanbul ignore next */
6662 var isRenderableAttr = function (name) {
6663 return (isAttr(name) || name.indexOf('data-') === 0 || name.indexOf('aria-') === 0);
6664 };
6665 var propsToAttrMap = {
6666 acceptCharset: 'accept-charset',
6667 className: 'class',
6668 htmlFor: 'for',
6669 httpEquiv: 'http-equiv'
6670 };
6671 var ESC = {
6672 '<': '&lt;',
6673 '>': '&gt;',
6674 '"': '&quot;',
6675 '&': '&amp;'
6676 };
6677 function escape(s) {
6678 return s.replace(/[<>"&]/g, escapeChar);
6679 }
6680 function escapeChar(a) {
6681 return ESC[a] || a;
6682 }
6683
6684 var plainStringRE = /^"(?:[^"\\]|\\.)*"$|^'(?:[^'\\]|\\.)*'$/;
6685 // let the model AST transform translate v-model into appropriate
6686 // props bindings
6687 function applyModelTransform(el, state) {
6688 if (el.directives) {
6689 for (var i = 0; i < el.directives.length; i++) {
6690 var dir = el.directives[i];
6691 if (dir.name === 'model') {
6692 state.directives.model(el, dir, state.warn);
6693 // remove value for textarea as its converted to text
6694 if (el.tag === 'textarea' && el.props) {
6695 el.props = el.props.filter(function (p) { return p.name !== 'value'; });
6696 }
6697 break;
6698 }
6699 }
6700 }
6701 }
6702 function genAttrSegments(attrs) {
6703 return attrs.map(function (_a) {
6704 var name = _a.name, value = _a.value;
6705 return genAttrSegment(name, value);
6706 });
6707 }
6708 function genDOMPropSegments(props, attrs) {
6709 var segments = [];
6710 props.forEach(function (_a) {
6711 var name = _a.name, value = _a.value;
6712 name = propsToAttrMap[name] || name.toLowerCase();
6713 if (isRenderableAttr(name) &&
6714 !(attrs && attrs.some(function (a) { return a.name === name; }))) {
6715 segments.push(genAttrSegment(name, value));
6716 }
6717 });
6718 return segments;
6719 }
6720 function genAttrSegment(name, value) {
6721 if (plainStringRE.test(value)) {
6722 // force double quote
6723 value = value.replace(/^'|'$/g, '"');
6724 // force enumerated attr to "true"
6725 if (isEnumeratedAttr(name) && value !== "\"false\"") {
6726 value = "\"true\"";
6727 }
6728 return {
6729 type: RAW,
6730 value: isBooleanAttr(name)
6731 ? " ".concat(name, "=\"").concat(name, "\"")
6732 : value === '""'
6733 ? " ".concat(name)
6734 : " ".concat(name, "=\"").concat(JSON.parse(value), "\"")
6735 };
6736 }
6737 else {
6738 return {
6739 type: EXPRESSION,
6740 value: "_ssrAttr(".concat(JSON.stringify(name), ",").concat(value, ")")
6741 };
6742 }
6743 }
6744 function genClassSegments(staticClass, classBinding) {
6745 if (staticClass && !classBinding) {
6746 return [{ type: RAW, value: " class=\"".concat(JSON.parse(staticClass), "\"") }];
6747 }
6748 else {
6749 return [
6750 {
6751 type: EXPRESSION,
6752 value: "_ssrClass(".concat(staticClass || 'null', ",").concat(classBinding || 'null', ")")
6753 }
6754 ];
6755 }
6756 }
6757 function genStyleSegments(staticStyle, parsedStaticStyle, styleBinding, vShowExpression) {
6758 if (staticStyle && !styleBinding && !vShowExpression) {
6759 return [{ type: RAW, value: " style=".concat(JSON.stringify(staticStyle)) }];
6760 }
6761 else {
6762 return [
6763 {
6764 type: EXPRESSION,
6765 value: "_ssrStyle(".concat(parsedStaticStyle || 'null', ",").concat(styleBinding || 'null', ", ").concat(vShowExpression
6766 ? "{ display: (".concat(vShowExpression, ") ? '' : 'none' }")
6767 : 'null', ")")
6768 }
6769 ];
6770 }
6771 }
6772
6773 /**
6774 * In SSR, the vdom tree is generated only once and never patched, so
6775 * we can optimize most element / trees into plain string render functions.
6776 * The SSR optimizer walks the AST tree to detect optimizable elements and trees.
6777 *
6778 * The criteria for SSR optimizability is quite a bit looser than static tree
6779 * detection (which is designed for client re-render). In SSR we bail only for
6780 * components/slots/custom directives.
6781 */
6782 // optimizability constants
6783 var optimizability = {
6784 FALSE: 0,
6785 FULL: 1,
6786 SELF: 2,
6787 CHILDREN: 3,
6788 PARTIAL: 4 // self un-optimizable with some un-optimizable children
6789 };
6790 var isPlatformReservedTag;
6791 function optimize(root, options) {
6792 if (!root)
6793 return;
6794 isPlatformReservedTag = options.isReservedTag || no;
6795 walk(root, true);
6796 }
6797 function walk(node, isRoot) {
6798 if (isUnOptimizableTree(node)) {
6799 node.ssrOptimizability = optimizability.FALSE;
6800 return;
6801 }
6802 // root node or nodes with custom directives should always be a VNode
6803 var selfUnoptimizable = isRoot || hasCustomDirective(node);
6804 var check = function (child) {
6805 if (child.ssrOptimizability !== optimizability.FULL) {
6806 node.ssrOptimizability = selfUnoptimizable
6807 ? optimizability.PARTIAL
6808 : optimizability.SELF;
6809 }
6810 };
6811 if (selfUnoptimizable) {
6812 node.ssrOptimizability = optimizability.CHILDREN;
6813 }
6814 if (node.type === 1) {
6815 for (var i = 0, l = node.children.length; i < l; i++) {
6816 var child = node.children[i];
6817 walk(child);
6818 check(child);
6819 }
6820 if (node.ifConditions) {
6821 for (var i = 1, l = node.ifConditions.length; i < l; i++) {
6822 var block = node.ifConditions[i].block;
6823 walk(block, isRoot);
6824 check(block);
6825 }
6826 }
6827 if (node.ssrOptimizability == null ||
6828 (!isRoot && (node.attrsMap['v-html'] || node.attrsMap['v-text']))) {
6829 node.ssrOptimizability = optimizability.FULL;
6830 }
6831 else {
6832 node.children = optimizeSiblings(node);
6833 }
6834 }
6835 else {
6836 node.ssrOptimizability = optimizability.FULL;
6837 }
6838 }
6839 function optimizeSiblings(el) {
6840 var children = el.children;
6841 var optimizedChildren = [];
6842 var currentOptimizableGroup = [];
6843 var pushGroup = function () {
6844 if (currentOptimizableGroup.length) {
6845 optimizedChildren.push({
6846 type: 1,
6847 parent: el,
6848 tag: 'template',
6849 attrsList: [],
6850 attrsMap: {},
6851 rawAttrsMap: {},
6852 children: currentOptimizableGroup,
6853 ssrOptimizability: optimizability.FULL
6854 });
6855 }
6856 currentOptimizableGroup = [];
6857 };
6858 for (var i = 0; i < children.length; i++) {
6859 var c = children[i];
6860 if (c.ssrOptimizability === optimizability.FULL) {
6861 currentOptimizableGroup.push(c);
6862 }
6863 else {
6864 // wrap fully-optimizable adjacent siblings inside a template tag
6865 // so that they can be optimized into a single ssrNode by codegen
6866 pushGroup();
6867 optimizedChildren.push(c);
6868 }
6869 }
6870 pushGroup();
6871 return optimizedChildren;
6872 }
6873 function isUnOptimizableTree(node) {
6874 if (node.type === 2 || node.type === 3) {
6875 // text or expression
6876 return false;
6877 }
6878 return (isBuiltInTag(node.tag) || // built-in (slot, component)
6879 !isPlatformReservedTag(node.tag) || // custom component
6880 !!node.component || // "is" component
6881 isSelectWithModel(node) // <select v-model> requires runtime inspection
6882 );
6883 }
6884 var isBuiltInDir = makeMap('text,html,show,on,bind,model,pre,cloak,once');
6885 function hasCustomDirective(node) {
6886 return (node.type === 1 &&
6887 node.directives &&
6888 node.directives.some(function (d) { return !isBuiltInDir(d.name); }));
6889 }
6890 // <select v-model> cannot be optimized because it requires a runtime check
6891 // to determine proper selected option
6892 function isSelectWithModel(node) {
6893 return (node.type === 1 &&
6894 node.tag === 'select' &&
6895 node.directives != null &&
6896 node.directives.some(function (d) { return d.name === 'model'; }));
6897 }
6898
6899 // The SSR codegen is essentially extending the default codegen to handle
6900 // segment types
6901 var RAW = 0;
6902 var INTERPOLATION = 1;
6903 var EXPRESSION = 2;
6904 function generate(ast, options) {
6905 var state = new CodegenState(options);
6906 var code = ast ? genSSRElement(ast, state) : '_c("div")';
6907 return {
6908 render: "with(this){return ".concat(code, "}"),
6909 staticRenderFns: state.staticRenderFns
6910 };
6911 }
6912 function genSSRElement(el, state) {
6913 if (el.for && !el.forProcessed) {
6914 return genFor(el, state, genSSRElement);
6915 }
6916 else if (el.if && !el.ifProcessed) {
6917 return genIf(el, state, genSSRElement);
6918 }
6919 else if (el.tag === 'template' && !el.slotTarget) {
6920 return el.ssrOptimizability === optimizability.FULL
6921 ? genChildrenAsStringNode(el, state)
6922 : genSSRChildren(el, state) || 'void 0';
6923 }
6924 switch (el.ssrOptimizability) {
6925 case optimizability.FULL:
6926 // stringify whole tree
6927 return genStringElement(el, state);
6928 case optimizability.SELF:
6929 // stringify self and check children
6930 return genStringElementWithChildren(el, state);
6931 case optimizability.CHILDREN:
6932 // generate self as VNode and stringify children
6933 return genNormalElement(el, state, true);
6934 case optimizability.PARTIAL:
6935 // generate self as VNode and check children
6936 return genNormalElement(el, state, false);
6937 default:
6938 // bail whole tree
6939 return genElement(el, state);
6940 }
6941 }
6942 function genNormalElement(el, state, stringifyChildren) {
6943 var data = el.plain ? undefined : genData(el, state);
6944 var children = stringifyChildren
6945 ? "[".concat(genChildrenAsStringNode(el, state), "]")
6946 : genSSRChildren(el, state, true);
6947 return "_c('".concat(el.tag, "'").concat(data ? ",".concat(data) : '').concat(children ? ",".concat(children) : '', ")");
6948 }
6949 function genSSRChildren(el, state, checkSkip) {
6950 return genChildren(el, state, checkSkip, genSSRElement, genSSRNode);
6951 }
6952 function genSSRNode(el, state) {
6953 return el.type === 1 ? genSSRElement(el, state) : genText(el);
6954 }
6955 function genChildrenAsStringNode(el, state) {
6956 return el.children.length
6957 ? "_ssrNode(".concat(flattenSegments(childrenToSegments(el, state)), ")")
6958 : '';
6959 }
6960 function genStringElement(el, state) {
6961 return "_ssrNode(".concat(elementToString(el, state), ")");
6962 }
6963 function genStringElementWithChildren(el, state) {
6964 var children = genSSRChildren(el, state, true);
6965 return "_ssrNode(".concat(flattenSegments(elementToOpenTagSegments(el, state)), ",\"</").concat(el.tag, ">\"").concat(children ? ",".concat(children) : '', ")");
6966 }
6967 function elementToString(el, state) {
6968 return "(".concat(flattenSegments(elementToSegments(el, state)), ")");
6969 }
6970 function elementToSegments(el, state) {
6971 // v-for / v-if
6972 if (el.for && !el.forProcessed) {
6973 el.forProcessed = true;
6974 return [
6975 {
6976 type: EXPRESSION,
6977 value: genFor(el, state, elementToString, '_ssrList')
6978 }
6979 ];
6980 }
6981 else if (el.if && !el.ifProcessed) {
6982 el.ifProcessed = true;
6983 return [
6984 {
6985 type: EXPRESSION,
6986 value: genIf(el, state, elementToString, '"<!---->"')
6987 }
6988 ];
6989 }
6990 else if (el.tag === 'template') {
6991 return childrenToSegments(el, state);
6992 }
6993 var openSegments = elementToOpenTagSegments(el, state);
6994 var childrenSegments = childrenToSegments(el, state);
6995 var isUnaryTag = state.options.isUnaryTag;
6996 var close = isUnaryTag && isUnaryTag(el.tag)
6997 ? []
6998 : [{ type: RAW, value: "</".concat(el.tag, ">") }];
6999 return openSegments.concat(childrenSegments, close);
7000 }
7001 function elementToOpenTagSegments(el, state) {
7002 applyModelTransform(el, state);
7003 var binding;
7004 var segments = [{ type: RAW, value: "<".concat(el.tag) }];
7005 // attrs
7006 if (el.attrs) {
7007 segments.push.apply(segments, genAttrSegments(el.attrs));
7008 }
7009 // domProps
7010 if (el.props) {
7011 segments.push.apply(segments, genDOMPropSegments(el.props, el.attrs));
7012 }
7013 // v-bind="object"
7014 if ((binding = el.attrsMap['v-bind'])) {
7015 segments.push({ type: EXPRESSION, value: "_ssrAttrs(".concat(binding, ")") });
7016 }
7017 // v-bind.prop="object"
7018 if ((binding = el.attrsMap['v-bind.prop'])) {
7019 segments.push({ type: EXPRESSION, value: "_ssrDOMProps(".concat(binding, ")") });
7020 }
7021 // class
7022 if (el.staticClass || el.classBinding) {
7023 segments.push.apply(segments, genClassSegments(el.staticClass, el.classBinding));
7024 }
7025 // style & v-show
7026 if (el.staticStyle || el.styleBinding || el.attrsMap['v-show']) {
7027 segments.push.apply(segments, genStyleSegments(el.attrsMap.style, el.staticStyle, el.styleBinding, el.attrsMap['v-show']));
7028 }
7029 // _scopedId
7030 if (state.options.scopeId) {
7031 segments.push({ type: RAW, value: " ".concat(state.options.scopeId) });
7032 }
7033 segments.push({ type: RAW, value: ">" });
7034 return segments;
7035 }
7036 function childrenToSegments(el, state) {
7037 var binding;
7038 if ((binding = el.attrsMap['v-html'])) {
7039 return [{ type: EXPRESSION, value: "_s(".concat(binding, ")") }];
7040 }
7041 if ((binding = el.attrsMap['v-text'])) {
7042 return [{ type: INTERPOLATION, value: "_s(".concat(binding, ")") }];
7043 }
7044 if (el.tag === 'textarea' && (binding = el.attrsMap['v-model'])) {
7045 return [{ type: INTERPOLATION, value: "_s(".concat(binding, ")") }];
7046 }
7047 return el.children ? nodesToSegments(el.children, state) : [];
7048 }
7049 function nodesToSegments(children, state) {
7050 var segments = [];
7051 for (var i = 0; i < children.length; i++) {
7052 var c = children[i];
7053 if (c.type === 1) {
7054 segments.push.apply(segments, elementToSegments(c, state));
7055 }
7056 else if (c.type === 2) {
7057 segments.push({ type: INTERPOLATION, value: c.expression });
7058 }
7059 else if (c.type === 3) {
7060 var text = escape(c.text);
7061 if (c.isComment) {
7062 text = '<!--' + text + '-->';
7063 }
7064 segments.push({ type: RAW, value: text });
7065 }
7066 }
7067 return segments;
7068 }
7069 function flattenSegments(segments) {
7070 var mergedSegments = [];
7071 var textBuffer = '';
7072 var pushBuffer = function () {
7073 if (textBuffer) {
7074 mergedSegments.push(JSON.stringify(textBuffer));
7075 textBuffer = '';
7076 }
7077 };
7078 for (var i = 0; i < segments.length; i++) {
7079 var s = segments[i];
7080 if (s.type === RAW) {
7081 textBuffer += s.value;
7082 }
7083 else if (s.type === INTERPOLATION) {
7084 pushBuffer();
7085 mergedSegments.push("_ssrEscape(".concat(s.value, ")"));
7086 }
7087 else if (s.type === EXPRESSION) {
7088 pushBuffer();
7089 mergedSegments.push("(".concat(s.value, ")"));
7090 }
7091 }
7092 pushBuffer();
7093 return mergedSegments.join('+');
7094 }
7095
7096 var createCompiler = createCompilerCreator(function baseCompile(template, options) {
7097 var ast = parse(template.trim(), options);
7098 optimize(ast, options);
7099 var code = generate(ast, options);
7100 return {
7101 ast: ast,
7102 render: code.render,
7103 staticRenderFns: code.staticRenderFns
7104 };
7105 });
7106
7107 var _a = createCompiler(baseOptions), compile = _a.compile, compileToFunctions = _a.compileToFunctions;
7108
7109 exports.compile = compile$1;
7110 exports.compileToFunctions = compileToFunctions$1;
7111 exports.generateCodeFrame = generateCodeFrame;
7112 exports.parseComponent = parseComponent;
7113 exports.ssrCompile = compile;
7114 exports.ssrCompileToFunctions = compileToFunctions;
7115
7116 Object.defineProperty(exports, '__esModule', { value: true });
7117
7118}));