svelte.js.map 1.5 MB

1
  1. {"version":3,"file":"svelte.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/acorn/dist/acorn.es.js","../src/parse/read/expression.ts","../node_modules/acorn-dynamic-import/src/inject.js","../src/utils/repeat.ts","../src/parse/read/script.ts","../node_modules/css-tree/lib/tokenizer/error.js","../node_modules/css-tree/lib/tokenizer/const.js","../node_modules/css-tree/lib/tokenizer/utils.js","../node_modules/css-tree/lib/tokenizer/Tokenizer.js","../node_modules/css-tree/lib/tokenizer/index.js","../node_modules/css-tree/lib/utils/list.js","../node_modules/css-tree/lib/parser/sequence.js","../node_modules/css-tree/lib/parser/create.js","../node_modules/css-tree/lib/syntax/scope/default.js","../node_modules/css-tree/lib/syntax/scope/atruleExpression.js","../node_modules/css-tree/lib/syntax/scope/selector.js","../node_modules/css-tree/lib/syntax/function/element.js","../node_modules/css-tree/lib/syntax/function/expression.js","../node_modules/css-tree/lib/syntax/function/var.js","../node_modules/css-tree/lib/syntax/scope/value.js","../node_modules/css-tree/lib/syntax/scope/index.js","../node_modules/css-tree/lib/syntax/atrule/font-face.js","../node_modules/css-tree/lib/syntax/atrule/import.js","../node_modules/css-tree/lib/syntax/atrule/media.js","../node_modules/css-tree/lib/syntax/atrule/page.js","../node_modules/css-tree/lib/syntax/atrule/supports.js","../node_modules/css-tree/lib/syntax/atrule/index.js","../node_modules/css-tree/lib/syntax/pseudo/dir.js","../node_modules/css-tree/lib/syntax/pseudo/has.js","../node_modules/css-tree/lib/syntax/pseudo/lang.js","../node_modules/css-tree/lib/syntax/pseudo/common/selectorList.js","../node_modules/css-tree/lib/syntax/pseudo/matches.js","../node_modules/css-tree/lib/syntax/pseudo/not.js","../node_modules/css-tree/lib/syntax/pseudo/common/nthWithOfClause.js","../node_modules/css-tree/lib/syntax/pseudo/nth-child.js","../node_modules/css-tree/lib/syntax/pseudo/nth-last-child.js","../node_modules/css-tree/lib/syntax/pseudo/common/nth.js","../node_modules/css-tree/lib/syntax/pseudo/nth-last-of-type.js","../node_modules/css-tree/lib/syntax/pseudo/nth-of-type.js","../node_modules/css-tree/lib/syntax/pseudo/slotted.js","../node_modules/css-tree/lib/syntax/pseudo/index.js","../node_modules/css-tree/lib/syntax/node/AnPlusB.js","../node_modules/css-tree/lib/syntax/node/Atrule.js","../node_modules/css-tree/lib/syntax/node/AtruleExpression.js","../node_modules/css-tree/lib/syntax/node/AttributeSelector.js","../node_modules/css-tree/lib/syntax/node/Block.js","../node_modules/css-tree/lib/syntax/node/Brackets.js","../node_modules/css-tree/lib/syntax/node/CDC.js","../node_modules/css-tree/lib/syntax/node/CDO.js","../node_modules/css-tree/lib/syntax/node/ClassSelector.js","../node_modules/css-tree/lib/syntax/node/Combinator.js","../node_modules/css-tree/lib/syntax/node/Comment.js","../node_modules/css-tree/lib/syntax/node/Declaration.js","../node_modules/css-tree/lib/syntax/node/DeclarationList.js","../node_modules/css-tree/lib/syntax/node/Dimension.js","../node_modules/css-tree/lib/syntax/node/Function.js","../node_modules/css-tree/lib/syntax/node/HexColor.js","../node_modules/css-tree/lib/syntax/node/Identifier.js","../node_modules/css-tree/lib/syntax/node/IdSelector.js","../node_modules/css-tree/lib/syntax/node/MediaFeature.js","../node_modules/css-tree/lib/syntax/node/MediaQuery.js","../node_modules/css-tree/lib/syntax/node/MediaQueryList.js","../node_modules/css-tree/lib/syntax/node/Nth.js","../node_modules/css-tree/lib/syntax/node/Number.js","../node_modules/css-tree/lib/syntax/node/Operator.js","../node_modules/css-tree/lib/syntax/node/Parentheses.js","../node_modules/css-tree/lib/syntax/node/Percentage.js","../node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js","../node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js","../node_modules/css-tree/lib/syntax/node/Ratio.js","../node_modules/css-tree/lib/syntax/node/Raw.js","../node_modules/css-tree/lib/syntax/node/Rule.js","../node_modules/css-tree/lib/syntax/node/Selector.js","../node_modules/css-tree/lib/syntax/node/SelectorList.js","../node_modules/css-tree/lib/syntax/node/String.js","../node_modules/css-tree/lib/syntax/node/StyleSheet.js","../node_modules/css-tree/lib/syntax/node/TypeSelector.js","../node_modules/css-tree/lib/syntax/node/UnicodeRange.js","../node_modules/css-tree/lib/syntax/node/Url.js","../node_modules/css-tree/lib/syntax/node/Value.js","../node_modules/css-tree/lib/syntax/node/WhiteSpace.js","../node_modules/css-tree/lib/syntax/node/index.js","../node_modules/css-tree/lib/syntax/config/parser.js","../node_modules/css-tree/lib/parser/index.js","../node_modules/estree-walker/dist/estree-walker.es.js","../src/parse/read/style.ts","../src/parse/read/directives.ts","../src/parse/utils/entities.ts","../src/parse/utils/html.ts","../src/utils/isVoidElementName.ts","../src/parse/state/tag.ts","../src/parse/read/context.ts","../src/utils/patterns.ts","../src/utils/trim.ts","../src/parse/state/mustache.ts","../src/parse/state/text.ts","../src/parse/state/fragment.ts","../src/utils/reservedNames.ts","../src/utils/fullCharCodeAt.ts","../node_modules/locate-character/dist/locate-character.es.js","../src/utils/getCodeFrame.ts","../src/utils/error.ts","../src/parse/index.ts","../src/validate/js/propValidators/data.ts","../src/utils/getName.ts","../src/validate/js/utils/checkForDupes.ts","../src/validate/js/utils/checkForComputedKeys.ts","../src/validate/js/propValidators/actions.ts","../src/validate/js/propValidators/animations.ts","../src/utils/isValidIdentifier.ts","../src/utils/walkThroughTopFunctionScope.ts","../src/utils/isThisGetCallExpression.ts","../src/validate/js/propValidators/computed.ts","../node_modules/is-reference/dist/is-reference.es.js","../src/validate/js/utils/usesThisOrArguments.ts","../src/validate/js/propValidators/oncreate.ts","../src/validate/js/propValidators/ondestroy.ts","../src/validate/js/propValidators/onstate.ts","../src/validate/js/propValidators/onupdate.ts","../src/validate/js/propValidators/onrender.ts","../src/validate/js/propValidators/onteardown.ts","../src/validate/js/propValidators/helpers.ts","../src/validate/js/utils/checkForAccessors.ts","../src/validate/js/propValidators/methods.ts","../src/validate/js/propValidators/components.ts","../src/validate/js/propValidators/events.ts","../src/utils/namespaces.ts","../src/utils/nodeToString.ts","../src/validate/utils/FuzzySet.ts","../src/validate/utils/fuzzymatch.ts","../src/validate/js/propValidators/namespace.ts","../src/validate/js/propValidators/preload.ts","../src/validate/js/propValidators/props.ts","../src/validate/js/propValidators/tag.ts","../src/validate/js/propValidators/transitions.ts","../src/validate/js/propValidators/setup.ts","../src/validate/js/propValidators/store.ts","../src/validate/js/propValidators/immutable.ts","../src/validate/js/propValidators/index.ts","../src/validate/js/index.ts","../src/utils/flattenReference.ts","../src/utils/list.ts","../src/utils/validCalleeObjects.ts","../src/validate/html/validateEventHandler.ts","../src/validate/html/validateComponent.ts","../src/validate/html/validateElement.ts","../src/validate/html/validateWindow.ts","../src/validate/html/validateHead.ts","../src/validate/html/validateSlot.ts","../src/utils/getStaticAttributeValue.ts","../src/validate/html/a11y.ts","../src/utils/unpackDestructuring.ts","../src/validate/html/index.ts","../src/validate/index.ts","../src/utils/deindent.ts","../src/utils/stringify.ts","../src/utils/CodeBuilder.ts","../src/utils/globalWhitelist.ts","../node_modules/sourcemap-codec/dist/sourcemap-codec.es.js","../node_modules/magic-string/dist/magic-string.es.js","../src/utils/removeNode.ts","../src/compile/wrapModule.ts","../src/utils/annotateWithScopes.ts","../src/config.ts","../src/compile/nodes/shared/Node.ts","../src/compile/nodes/PendingBlock.ts","../src/compile/nodes/ThenBlock.ts","../src/compile/nodes/CatchBlock.ts","../src/utils/createDebuggingComment.ts","../src/compile/nodes/shared/Expression.ts","../src/compile/nodes/AwaitBlock.ts","../src/compile/nodes/Comment.ts","../src/utils/stringifyProps.ts","../src/utils/getTailSnippet.ts","../src/utils/getObject.ts","../src/utils/quoteIfNecessary.ts","../src/utils/fixAttributeCasing.ts","../src/utils/addToSet.ts","../src/compile/nodes/Attribute.ts","../src/compile/nodes/Binding.ts","../src/compile/nodes/EventHandler.ts","../src/compile/nodes/Component.ts","../src/compile/nodes/ElseBlock.ts","../src/compile/nodes/EachBlock.ts","../src/compile/nodes/Transition.ts","../src/compile/nodes/Animation.ts","../src/compile/nodes/Action.ts","../src/compile/nodes/Text.ts","../src/compile/nodes/Element.ts","../src/compile/nodes/Head.ts","../src/compile/nodes/IfBlock.ts","../src/compile/nodes/shared/Tag.ts","../src/compile/nodes/MustacheTag.ts","../src/compile/nodes/RawMustacheTag.ts","../src/compile/nodes/Slot.ts","../src/compile/nodes/Title.ts","../src/compile/nodes/Window.ts","../src/compile/nodes/shared/mapChildren.ts","../src/compile/dom/Block.ts","../src/compile/nodes/shared/TemplateScope.ts","../src/compile/nodes/Fragment.ts","../src/compile/shared.ts","../src/compile/Compiler.ts","../src/compile/dom/index.ts","../src/compile/ssr/index.ts","../src/Stats.ts","../src/shared/utils.js","../src/css/gatherPossibleValues.ts","../src/css/Selector.ts","../src/utils/hash.ts","../src/css/Stylesheet.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords = {\n 5: ecma5AndLessKeywords,\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\n\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312e\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fea\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ae\\ua7b0-\\ua7b7\\ua7f7-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab65\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d4-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2-\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1df9\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua900-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\n\n// eslint-disable-next-line comma-spacing\nvar astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,257,0,11,39,8,0,22,0,12,39,3,3,55,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,698,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,1,31,6124,20,754,9486,286,82,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,15,7472,3104,541];\n\n// eslint-disable-next-line comma-spacing\nvar astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,280,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,19719,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true};\nvar startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords$1 = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords$1[name] = new TokenType(name, options)\n}\n\nvar types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\"),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\n// Checks if an object has a property.\n\nfunction has(obj, propName) {\n return hasOwnProperty.call(obj, propName)\n}\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur;\n var match = lineBreakG.exec(input);\n if (match && match.index < offset) {\n ++line;\n cur = match.index + match[0].length;\n } else {\n return new Position(line, offset - cur)\n }\n }\n}\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must\n // be either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support\n // for strict mode, the set of reserved words, and support for\n // new syntax features. The default is 7.\n ecmaVersion: 7,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // th position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false,\n plugins: {}\n};\n\n// Interpret and default an options object\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion >= 2015)\n { options.ecmaVersion -= 2009; }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Registered plugins\nvar plugins = {};\n\nfunction keywordRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\")\n}\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]);\n var reserved = \"\";\n if (!options.allowReserved) {\n for (var v = options.ecmaVersion;; v--)\n { if (reserved = reservedWords[v]) { break } }\n if (options.sourceType == \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = keywordRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = keywordRegexp(reservedStrict);\n this.reservedWordsStrictBind = keywordRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Load plugins\n this.loadPlugins(options.plugins);\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n\n // Flags to track whether we are in a function, a generator, an async function.\n this.inFunction = this.inGenerator = this.inAsync = false;\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = 0;\n // Labels in scope.\n this.labels = [];\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterFunctionScope();\n\n // For RegExp validation\n this.regexpState = null;\n};\n\n// DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them\nParser.prototype.isKeyword = function isKeyword (word) { return this.keywords.test(word) };\nParser.prototype.isReservedWord = function isReservedWord (word) { return this.reservedWords.test(word) };\n\nParser.prototype.extend = function extend (name, f) {\n this[name] = f(this[name]);\n};\n\nParser.prototype.loadPlugins = function loadPlugins (pluginConfigs) {\n var this$1 = this;\n\n for (var name in pluginConfigs) {\n var plugin = plugins[name];\n if (!plugin) { throw new Error(\"Plugin '\" + name + \"' not found\") }\n plugin(this$1, pluginConfigs[name]);\n }\n};\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nvar pp = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\.|[^'])*?)'|\"((?:\\\\.|[^\"])*?)\"|;)/;\npp.strictDirective = function(start) {\n var this$1 = this;\n\n for (;;) {\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this$1.input)[0].length;\n var match = literal.exec(this$1.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) == \"use strict\") { return true }\n start += match[0].length;\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function(name) {\n return this.type === types.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function() {\n return this.type === types.eof ||\n this.type === types.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function() {\n if (!this.eat(types.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp.afterTrailingComma = function(tokType, notNext) {\n if (this.type == tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nfunction DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n}\n\npp.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, \"Parenthesized pattern\"); }\n};\n\npp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$1 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$1.parseTopLevel = function(node) {\n var this$1 = this;\n\n var exports = {};\n if (!node.body) { node.body = []; }\n while (this.type !== types.eof) {\n var stmt = this$1.parseStatement(true, true, exports);\n node.body.push(stmt);\n }\n this.adaptDirectivePrologue(node.body);\n this.next();\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType;\n }\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"};\nvar switchLabel = {kind: \"switch\"};\n\npp$1.isLet = function() {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 91 || nextCh == 123) { return true } // '{' and '['\n if (isIdentifierStart(nextCh, true)) {\n var pos = next + 1;\n while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; }\n var ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$1.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 == this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$1.parseStatement = function(declaration, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet()) {\n starttype = types._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types._break: case types._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types._debugger: return this.parseDebuggerStatement(node)\n case types._do: return this.parseDoStatement(node)\n case types._for: return this.parseForStatement(node)\n case types._function:\n if (!declaration && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false)\n case types._class:\n if (!declaration) { this.unexpected(); }\n return this.parseClass(node, true)\n case types._if: return this.parseIfStatement(node)\n case types._return: return this.parseReturnStatement(node)\n case types._switch: return this.parseSwitchStatement(node)\n case types._throw: return this.parseThrowStatement(node)\n case types._try: return this.parseTryStatement(node)\n case types._const: case types._var:\n kind = kind || this.value;\n if (!declaration && kind != \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types._while: return this.parseWhileStatement(node)\n case types._with: return this.parseWithStatement(node)\n case types.braceL: return this.parseBlock()\n case types.semi: return this.parseEmptyStatement(node)\n case types._export:\n case types._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (!declaration) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true)\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types.name && expr.type === \"Identifier\" && this.eat(types.colon))\n { return this.parseLabeledStatement(node, maybeName, expr) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$1.parseBreakContinueStatement = function(node, keyword) {\n var this$1 = this;\n\n var isBreak = keyword == \"break\";\n this.next();\n if (this.eat(types.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this$1.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$1.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$1.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(false);\n this.labels.pop();\n this.expect(types._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$1.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.inAsync && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterLexicalScope();\n this.expect(types.parenL);\n if (this.type === types.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types._var || this.type === types._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n if ((this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1 &&\n !(kind !== \"var\" && init$1.declarations[0].init)) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init$1)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init$1)\n }\n var refDestructuringErrors = new DestructuringErrors;\n var init = this.parseExpression(true, refDestructuringErrors);\n if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLVal(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$1.parseFunctionStatement = function(node, isAsync) {\n this.next();\n return this.parseFunction(node, true, false, isAsync)\n};\n\npp$1.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(!this.strict && this.type == types._function);\n node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.type == types._function) : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$1.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$1.parseSwitchStatement = function(node) {\n var this$1 = this;\n\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types.braceL);\n this.labels.push(switchLabel);\n this.enterLexicalScope();\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type != types.braceR;) {\n if (this$1.type === types._case || this$1.type === types._default) {\n var isCase = this$1.type === types._case;\n if (cur) { this$1.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this$1.startNode());\n cur.consequent = [];\n this$1.next();\n if (isCase) {\n cur.test = this$1.parseExpression();\n } else {\n if (sawDefault) { this$1.raiseRecoverable(this$1.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this$1.expect(types.colon);\n } else {\n if (!cur) { this$1.unexpected(); }\n cur.consequent.push(this$1.parseStatement(true));\n }\n }\n this.exitLexicalScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$1.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = [];\n\npp$1.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types._catch) {\n var clause = this.startNode();\n this.next();\n this.expect(types.parenL);\n clause.param = this.parseBindingAtom();\n this.enterLexicalScope();\n this.checkLVal(clause.param, \"let\");\n this.expect(types.parenR);\n clause.body = this.parseBlock(false);\n this.exitLexicalScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$1.parseVarStatement = function(node, kind) {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$1.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$1.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(false);\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$1.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$1.parseLabeledStatement = function(node, maybeName, expr) {\n var this$1 = this;\n\n for (var i$1 = 0, list = this$1.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this$1.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this$1.labels[i];\n if (label$1.statementStart == node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this$1.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(true);\n if (node.body.type == \"ClassDeclaration\" ||\n node.body.type == \"VariableDeclaration\" && node.body.kind != \"var\" ||\n node.body.type == \"FunctionDeclaration\" && (this.strict || node.body.generator))\n { this.raiseRecoverable(node.body.start, \"Invalid labeled declaration\"); }\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$1.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$1.parseBlock = function(createNewLexicalScope) {\n var this$1 = this;\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n\n var node = this.startNode();\n node.body = [];\n this.expect(types.braceL);\n if (createNewLexicalScope) {\n this.enterLexicalScope();\n }\n while (!this.eat(types.braceR)) {\n var stmt = this$1.parseStatement(true);\n node.body.push(stmt);\n }\n if (createNewLexicalScope) {\n this.exitLexicalScope();\n }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$1.parseFor = function(node, init) {\n node.init = init;\n this.expect(types.semi);\n node.test = this.type === types.semi ? null : this.parseExpression();\n this.expect(types.semi);\n node.update = this.type === types.parenR ? null : this.parseExpression();\n this.expect(types.parenR);\n this.exitLexicalScope();\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$1.parseForIn = function(node, init) {\n var type = this.type === types._in ? \"ForInStatement\" : \"ForOfStatement\";\n this.next();\n if (type == \"ForInStatement\") {\n if (init.type === \"AssignmentPattern\" ||\n (init.type === \"VariableDeclaration\" && init.declarations[0].init != null &&\n (this.strict || init.declarations[0].id.type !== \"Identifier\")))\n { this.raise(init.start, \"Invalid assignment in for-in loop head\"); }\n }\n node.left = init;\n node.right = type == \"ForInStatement\" ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types.parenR);\n this.exitLexicalScope();\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, type)\n};\n\n// Parse a list of variable declarations.\n\npp$1.parseVar = function(node, isFor, kind) {\n var this$1 = this;\n\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this$1.startNode();\n this$1.parseVarId(decl, kind);\n if (this$1.eat(types.eq)) {\n decl.init = this$1.parseMaybeAssign(isFor);\n } else if (kind === \"const\" && !(this$1.type === types._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual(\"of\")))) {\n this$1.unexpected();\n } else if (decl.id.type != \"Identifier\" && !(isFor && (this$1.type === types._in || this$1.isContextual(\"of\")))) {\n this$1.raise(this$1.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this$1.finishNode(decl, \"VariableDeclarator\"));\n if (!this$1.eat(types.comma)) { break }\n }\n return node\n};\n\npp$1.parseVarId = function(decl, kind) {\n decl.id = this.parseBindingAtom(kind);\n this.checkLVal(decl.id, kind, false);\n};\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync)\n { node.generator = this.eat(types.star); }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (isStatement) {\n node.id = isStatement === \"nullableID\" && this.type != types.name ? null : this.parseIdent();\n if (node.id) {\n this.checkLVal(node.id, \"var\");\n }\n }\n\n var oldInGen = this.inGenerator, oldInAsync = this.inAsync,\n oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction;\n this.inGenerator = node.generator;\n this.inAsync = node.async;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.inFunction = true;\n this.enterFunctionScope();\n\n if (!isStatement)\n { node.id = this.type == types.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody);\n\n this.inGenerator = oldInGen;\n this.inAsync = oldInAsync;\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.inFunction = oldInFunc;\n return this.finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$1.parseFunctionParams = function(node) {\n this.expect(types.parenL);\n node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$1.parseClass = function(node, isStatement) {\n var this$1 = this;\n\n this.next();\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n var member = this$1.parseClassMember(classBody);\n if (member && member.type === \"MethodDefinition\" && member.kind === \"constructor\") {\n if (hadConstructor) { this$1.raise(member.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\");\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$1.parseClassMember = function(classBody) {\n var this$1 = this;\n\n if (this.eat(types.semi)) { return null }\n\n var method = this.startNode();\n var tryContextual = function (k, noLineBreak) {\n if ( noLineBreak === void 0 ) noLineBreak = false;\n\n var start = this$1.start, startLoc = this$1.startLoc;\n if (!this$1.eatContextual(k)) { return false }\n if (this$1.type !== types.parenL && (!noLineBreak || !this$1.canInsertSemicolon())) { return true }\n if (method.key) { this$1.unexpected(); }\n method.computed = false;\n method.key = this$1.startNodeAt(start, startLoc);\n method.key.name = k;\n this$1.finishNode(method.key, \"Identifier\");\n return false\n };\n\n method.kind = \"method\";\n method.static = tryContextual(\"static\");\n var isGenerator = this.eat(types.star);\n var isAsync = false;\n if (!isGenerator) {\n if (this.options.ecmaVersion >= 8 && tryContextual(\"async\", true)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star);\n } else if (tryContextual(\"get\")) {\n method.kind = \"get\";\n } else if (tryContextual(\"set\")) {\n method.kind = \"set\";\n }\n }\n if (!method.key) { this.parsePropertyName(method); }\n var key = method.key;\n if (!method.computed && !method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (method.kind !== \"method\") { this.raise(key.start, \"Constructor can't have get/set modifier\"); }\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n method.kind = \"constructor\";\n } else if (method.static && key.type === \"Identifier\" && key.name === \"prototype\") {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n this.parseClassMethod(classBody, method, isGenerator, isAsync);\n if (method.kind === \"get\" && method.value.params.length !== 0)\n { this.raiseRecoverable(method.value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && method.value.params.length !== 1)\n { this.raiseRecoverable(method.value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\"); }\n return method\n};\n\npp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) {\n method.value = this.parseMethod(isGenerator, isAsync);\n classBody.body.push(this.finishNode(method, \"MethodDefinition\"));\n};\n\npp$1.parseClassId = function(node, isStatement) {\n node.id = this.type === types.name ? this.parseIdent() : isStatement === true ? this.unexpected() : null;\n};\n\npp$1.parseClassSuper = function(node) {\n node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null;\n};\n\n// Parses module export declaration.\n\npp$1.parseExport = function(node, exports) {\n var this$1 = this;\n\n this.next();\n // export * from '...'\n if (this.eat(types.star)) {\n this.expectContextual(\"from\");\n if (this.type !== types.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n }\n if (this.eat(types._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n var isAsync;\n if (this.type === types._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n node.declaration = this.parseFunction(fNode, \"nullableID\", false, isAsync);\n } else if (this.type === types._class) {\n var cNode = this.startNode();\n node.declaration = this.parseClass(cNode, \"nullableID\");\n } else {\n node.declaration = this.parseMaybeAssign();\n this.semicolon();\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(true);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id.name, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n } else {\n // check for keywords used as local names\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n var spec = list[i];\n\n this$1.checkUnreserved(spec.local);\n }\n\n node.source = null;\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$1.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (has(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$1.checkPatternExport = function(exports, pat) {\n var this$1 = this;\n\n var type = pat.type;\n if (type == \"Identifier\")\n { this.checkExport(exports, pat.name, pat.start); }\n else if (type == \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this$1.checkPatternExport(exports, prop);\n } }\n else if (type == \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this$1.checkPatternExport(exports, elt); }\n } }\n else if (type == \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type == \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type == \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n else if (type == \"ParenthesizedExpression\")\n { this.checkPatternExport(exports, pat.expression); }\n};\n\npp$1.checkVariableExport = function(exports, decls) {\n var this$1 = this;\n\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this$1.checkPatternExport(exports, decl.id);\n }\n};\n\npp$1.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$1.parseExportSpecifiers = function(exports) {\n var this$1 = this;\n\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n if (!first) {\n this$1.expect(types.comma);\n if (this$1.afterTrailingComma(types.braceR)) { break }\n } else { first = false; }\n\n var node = this$1.startNode();\n node.local = this$1.parseIdent(true);\n node.exported = this$1.eatContextual(\"as\") ? this$1.parseIdent(true) : node.local;\n this$1.checkExport(exports, node.exported.name, node.exported.start);\n nodes.push(this$1.finishNode(node, \"ExportSpecifier\"));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$1.parseImport = function(node) {\n this.next();\n // import '...'\n if (this.type === types.string) {\n node.specifiers = empty;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected();\n }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$1.parseImportSpecifiers = function() {\n var this$1 = this;\n\n var nodes = [], first = true;\n if (this.type === types.name) {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLVal(node.local, \"let\");\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"));\n if (!this.eat(types.comma)) { return nodes }\n }\n if (this.type === types.star) {\n var node$1 = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node$1.local = this.parseIdent();\n this.checkLVal(node$1.local, \"let\");\n nodes.push(this.finishNode(node$1, \"ImportNamespaceSpecifier\"));\n return nodes\n }\n this.expect(types.braceL);\n while (!this.eat(types.braceR)) {\n if (!first) {\n this$1.expect(types.comma);\n if (this$1.afterTrailingComma(types.braceR)) { break }\n } else { first = false; }\n\n var node$2 = this$1.startNode();\n node$2.imported = this$1.parseIdent(true);\n if (this$1.eatContextual(\"as\")) {\n node$2.local = this$1.parseIdent();\n } else {\n this$1.checkUnreserved(node$2.imported);\n node$2.local = node$2.imported;\n }\n this$1.checkLVal(node$2.local, \"let\");\n nodes.push(this$1.finishNode(node$2, \"ImportSpecifier\"));\n }\n return nodes\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$1.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$1.isDirectiveCandidate = function(statement) {\n return (\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$2 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$2.toAssignable = function(node, isBinding, refDestructuringErrors) {\n var this$1 = this;\n\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Can not use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this$1.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this$1.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type == \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n // falls through to AssignmentPattern\n\n case \"AssignmentPattern\":\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding);\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$2.toAssignableList = function(exprList, isBinding) {\n var this$1 = this;\n\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this$1.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$2.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$2.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$2.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma) {\n var this$1 = this;\n\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this$1.expect(types.comma); }\n if (allowEmpty && this$1.type === types.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this$1.afterTrailingComma(close)) {\n break\n } else if (this$1.type === types.ellipsis) {\n var rest = this$1.parseRestBinding();\n this$1.parseBindingListItem(rest);\n elts.push(rest);\n if (this$1.type === types.comma) { this$1.raise(this$1.start, \"Comma is not permitted after the rest element\"); }\n this$1.expect(close);\n break\n } else {\n var elem = this$1.parseMaybeDefault(this$1.start, this$1.startLoc);\n this$1.parseBindingListItem(elem);\n elts.push(elem);\n }\n }\n return elts\n};\n\npp$2.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$2.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n// bindingType can be either:\n// 'var' indicating that the lval creates a 'var' binding\n// 'let' indicating that the lval creates a lexical ('let' or 'const') binding\n// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references\n\npp$2.checkLVal = function(expr, bindingType, checkClashes) {\n var this$1 = this;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (bindingType ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (checkClashes) {\n if (has(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType && bindingType !== \"none\") {\n if (\n bindingType === \"var\" && !this.canDeclareVarName(expr.name) ||\n bindingType !== \"var\" && !this.canDeclareLexicalName(expr.name)\n ) {\n this.raiseRecoverable(expr.start, (\"Identifier '\" + (expr.name) + \"' has already been declared\"));\n }\n if (bindingType === \"var\") {\n this.declareVarName(expr.name);\n } else {\n this.declareLexicalName(expr.name);\n }\n }\n break\n\n case \"MemberExpression\":\n if (bindingType) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this$1.checkLVal(prop, bindingType, checkClashes);\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type == \"Property\"\n this.checkLVal(expr.value, bindingType, checkClashes);\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this$1.checkLVal(elem, bindingType, checkClashes); }\n }\n break\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLVal(expr.argument, bindingType, checkClashes);\n break\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, bindingType, checkClashes);\n break\n\n default:\n this.raise(expr.start, (bindingType ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nvar pp$3 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) { refDestructuringErrors.doubleProto = key.start; }\n // Backwards-compat kludge. Can be removed in version 6.0\n else { this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\"); }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$3.parseExpression = function(noIn, refDestructuringErrors) {\n var this$1 = this;\n\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(noIn, refDestructuringErrors);\n if (this.type === types.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types.comma)) { node.expressions.push(this$1.parseMaybeAssign(noIn, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {\n if (this.inGenerator && this.isContextual(\"yield\")) { return this.parseYield() }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type == types.parenL || this.type == types.name)\n { this.potentialArrowAt = this.start; }\n var left = this.parseMaybeConditional(noIn, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left;\n if (!ownDestructuringErrors) { DestructuringErrors.call(refDestructuringErrors); }\n refDestructuringErrors.shorthandAssign = -1; // reset because shorthand default was used correctly\n this.checkLVal(left);\n this.next();\n node.right = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(noIn, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types.colon);\n node.alternate = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$3.parseExprOps = function(noIn, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start == startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {\n var prec = this.type.binop;\n if (prec != null && (!noIn || this.type !== types._in)) {\n if (prec > minPrec) {\n var logical = this.type === types.logicalOR || this.type === types.logicalAND;\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical);\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)\n }\n }\n return left\n};\n\npp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {\n var this$1 = this;\n\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.inAsync && this.isContextual(\"await\")) {\n expr = this.parseAwait();\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLVal(node.argument); }\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this$1.startNodeAt(startPos, startLoc);\n node$1.operator = this$1.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this$1.checkLVal(expr);\n this$1.next();\n expr = this$1.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!sawUnary && this.eat(types.starstar))\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false) }\n else\n { return expr }\n};\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$3.parseExprSubscripts = function(refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors);\n var skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\";\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n }\n return result\n};\n\npp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {\n var this$1 = this;\n\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd == base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === \"async\";\n for (var computed = (void 0);;) {\n if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) {\n var node = this$1.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true);\n node.computed = !!computed;\n if (computed) { this$1.expect(types.bracketR); }\n base = this$1.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this$1.eat(types.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos;\n this$1.yieldPos = 0;\n this$1.awaitPos = 0;\n var exprList = this$1.parseExprList(types.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(types.arrow)) {\n this$1.checkPatternErrors(refDestructuringErrors, false);\n this$1.checkYieldAwaitInDefaultParams();\n this$1.yieldPos = oldYieldPos;\n this$1.awaitPos = oldAwaitPos;\n return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true)\n }\n this$1.checkExpressionErrors(refDestructuringErrors, true);\n this$1.yieldPos = oldYieldPos || this$1.yieldPos;\n this$1.awaitPos = oldAwaitPos || this$1.awaitPos;\n var node$1 = this$1.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n base = this$1.finishNode(node$1, \"CallExpression\");\n } else if (this$1.type === types.backQuote) {\n var node$2 = this$1.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this$1.parseTemplate({isTagged: true});\n base = this$1.finishNode(node$2, \"TaggedTemplateExpression\");\n } else {\n return base\n }\n }\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$3.parseExprAtom = function(refDestructuringErrors) {\n var node, canBeArrow = this.potentialArrowAt == this.start;\n switch (this.type) {\n case types._super:\n if (!this.inFunction)\n { this.raise(this.start, \"'super' outside of function or class\"); }\n node = this.startNode();\n this.next();\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super Arguments\n if (this.type !== types.dot && this.type !== types.bracketL && this.type !== types.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(this.type !== types.name);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types._function))\n { return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true) }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types.name && !containsEsc) {\n id = this.parseIdent();\n if (this.canInsertSemicolon() || !this.eat(types.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)\n }\n }\n return id\n\n case types.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types.num: case types.string:\n return this.parseLiteral(this.value)\n\n case types._null: case types._true: case types._false:\n node = this.startNode();\n node.value = this.type === types._null ? null : this.type === types._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types.braceL:\n return this.parseObj(false, refDestructuringErrors)\n\n case types._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, false)\n\n case types._class:\n return this.parseClass(this.startNode(), false)\n\n case types._new:\n return this.parseNew()\n\n case types.backQuote:\n return this.parseTemplate()\n\n default:\n this.unexpected();\n }\n};\n\npp$3.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$3.parseParenExpression = function() {\n this.expect(types.parenL);\n var val = this.parseExpression();\n this.expect(types.parenR);\n return val\n};\n\npp$3.parseParenAndDistinguishExpression = function(canBeArrow) {\n var this$1 = this;\n\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n while (this.type !== types.parenR) {\n first ? first = false : this$1.expect(types.comma);\n if (allowTrailingComma && this$1.afterTrailingComma(types.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this$1.type === types.ellipsis) {\n spreadStart = this$1.start;\n exprList.push(this$1.parseParenItem(this$1.parseRestBinding()));\n if (this$1.type === types.comma) { this$1.raise(this$1.start, \"Comma is not permitted after the rest element\"); }\n break\n } else {\n exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem));\n }\n }\n var innerEndPos = this.start, innerEndLoc = this.startLoc;\n this.expect(types.parenR);\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$3.parseParenItem = function(item) {\n return item\n};\n\npp$3.parseParenArrowList = function(startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty$1 = [];\n\npp$3.parseNew = function() {\n var node = this.startNode();\n var meta = this.parseIdent(true);\n if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) {\n node.meta = meta;\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\" || containsEsc)\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\"); }\n if (!this.inFunction)\n { this.raiseRecoverable(node.start, \"new.target can only be used in functions\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n if (this.eat(types.parenL)) { node.arguments = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty$1; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$3.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value,\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$3.parseTemplate = function(ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n this$1.expect(types.dollarBraceL);\n node.expressions.push(this$1.parseExpression());\n this$1.expect(types.braceR);\n node.quasis.push(curElt = this$1.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$3.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types.name || this.type === types.num || this.type === types.string || this.type === types.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$3.parseObj = function(isPattern, refDestructuringErrors) {\n var this$1 = this;\n\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types.braceR)) {\n if (!first) {\n this$1.expect(types.comma);\n if (this$1.afterTrailingComma(types.braceR)) { break }\n } else { first = false; }\n\n var prop = this$1.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this$1.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$3.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types.comma) {\n this.raise(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // To disallow parenthesized identifier via `this.toAssignable()`.\n if (this.type === types.parenL && refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0) {\n refDestructuringErrors.parenthesizedAssign = this.start;\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = this.start;\n }\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star);\n this.parsePropertyName(prop, refDestructuringErrors);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types.colon)\n { this.unexpected(); }\n\n if (this.eat(types.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.kind = \"init\";\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type != types.comma && this.type != types.braceR)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n this.checkUnreserved(prop.key);\n prop.kind = \"init\";\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else if (this.type === types.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else {\n prop.value = prop.key;\n }\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$3.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types.num || this.type === types.string ? this.parseExprAtom() : this.parseIdent(true)\n};\n\n// Initialize empty function node.\n\npp$3.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) {\n node.generator = false;\n node.expression = false;\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$3.parseMethod = function(isGenerator, isAsync) {\n var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync,\n oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.inGenerator = node.generator;\n this.inAsync = node.async;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.inFunction = true;\n this.enterFunctionScope();\n\n this.expect(types.parenL);\n node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false);\n\n this.inGenerator = oldInGen;\n this.inAsync = oldInAsync;\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.inFunction = oldInFunc;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$3.parseArrowExpression = function(node, params, isAsync) {\n var oldInGen = this.inGenerator, oldInAsync = this.inAsync,\n oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction;\n\n this.enterFunctionScope();\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.inGenerator = false;\n this.inAsync = node.async;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.inFunction = true;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true);\n\n this.inGenerator = oldInGen;\n this.inAsync = oldInAsync;\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.inFunction = oldInFunc;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$3.parseFunctionBody = function(node, isArrowFunction) {\n var isExpression = isArrowFunction && this.type !== types.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params));\n node.body = this.parseBlock(false);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitFunctionScope();\n\n if (this.strict && node.id) {\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n this.checkLVal(node.id, \"none\");\n }\n this.strict = oldStrict;\n};\n\npp$3.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$3.checkParams = function(node, allowDuplicates) {\n var this$1 = this;\n\n var nameHash = {};\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this$1.checkLVal(param, \"var\", allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var this$1 = this;\n\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this$1.expect(types.comma);\n if (allowTrailingComma && this$1.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this$1.type === types.comma)\n { elt = null; }\n else if (this$1.type === types.ellipsis) {\n elt = this$1.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this$1.type === types.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this$1.start; }\n } else {\n elt = this$1.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$3.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Can not use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Can not use 'await' as identifier inside an async function\"); }\n if (this.isKeyword(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") != -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Can not use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$3.parseIdent = function(liberal, isBinding) {\n var node = this.startNode();\n if (liberal && this.options.allowReserved == \"never\") { liberal = false; }\n if (this.type === types.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"Identifier\");\n if (!liberal) { this.checkUnreserved(node); }\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$3.parseYield = function() {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type == types.semi || this.canInsertSemicolon() || (this.type != types.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types.star);\n node.argument = this.parseMaybeAssign();\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$3.parseAwait = function() {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$5 = Parser.prototype;\n\n// Object.assign polyfill\nvar assign = Object.assign || function(target) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n for (var i = 0, list = sources; i < list.length; i += 1) {\n var source = list[i];\n\n for (var key in source) {\n if (has(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$5.enterFunctionScope = function() {\n // var: a hash of var-declared names in the current lexical scope\n // lexical: a hash of lexically-declared names in the current lexical scope\n // childVar: a hash of var-declared names in all child lexical scopes of the current lexical scope (within the current function scope)\n // parentLexical: a hash of lexically-declared names in all parent lexical scopes of the current lexical scope (within the current function scope)\n this.scopeStack.push({var: {}, lexical: {}, childVar: {}, parentLexical: {}});\n};\n\npp$5.exitFunctionScope = function() {\n this.scopeStack.pop();\n};\n\npp$5.enterLexicalScope = function() {\n var parentScope = this.scopeStack[this.scopeStack.length - 1];\n var childScope = {var: {}, lexical: {}, childVar: {}, parentLexical: {}};\n\n this.scopeStack.push(childScope);\n assign(childScope.parentLexical, parentScope.lexical, parentScope.parentLexical);\n};\n\npp$5.exitLexicalScope = function() {\n var childScope = this.scopeStack.pop();\n var parentScope = this.scopeStack[this.scopeStack.length - 1];\n\n assign(parentScope.childVar, childScope.var, childScope.childVar);\n};\n\n/**\n * A name can be declared with `var` if there are no variables with the same name declared with `let`/`const`\n * in the current lexical scope or any of the parent lexical scopes in this function.\n */\npp$5.canDeclareVarName = function(name) {\n var currentScope = this.scopeStack[this.scopeStack.length - 1];\n\n return !has(currentScope.lexical, name) && !has(currentScope.parentLexical, name)\n};\n\n/**\n * A name can be declared with `let`/`const` if there are no variables with the same name declared with `let`/`const`\n * in the current scope, and there are no variables with the same name declared with `var` in the current scope or in\n * any child lexical scopes in this function.\n */\npp$5.canDeclareLexicalName = function(name) {\n var currentScope = this.scopeStack[this.scopeStack.length - 1];\n\n return !has(currentScope.lexical, name) && !has(currentScope.var, name) && !has(currentScope.childVar, name)\n};\n\npp$5.declareVarName = function(name) {\n this.scopeStack[this.scopeStack.length - 1].var[name] = true;\n};\n\npp$5.declareLexicalName = function(name) {\n this.scopeStack[this.scopeStack.length - 1].lexical[name] = true;\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$6 = Parser.prototype;\n\npp$6.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$6.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$6.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$6.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types$1 = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$7 = Parser.prototype;\n\npp$7.initialContext = function() {\n return [types$1.b_stat]\n};\n\npp$7.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types$1.f_expr || parent === types$1.f_stat)\n { return true }\n if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types._return || prevType == types.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType == types.arrow)\n { return true }\n if (prevType == types.braceL)\n { return parent === types$1.b_stat }\n if (prevType == types._var || prevType == types.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$7.inGeneratorContext = function() {\n var this$1 = this;\n\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this$1.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$7.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType == types.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Token-specific context update code\n\ntypes.parenR.updateContext = types.braceR.updateContext = function() {\n if (this.context.length == 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types$1.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr);\n this.exprAllowed = true;\n};\n\ntypes.dollarBraceL.updateContext = function() {\n this.context.push(types$1.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while;\n this.context.push(statementParens ? types$1.p_stat : types$1.p_expr);\n this.exprAllowed = true;\n};\n\ntypes.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes._function.updateContext = types._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else &&\n !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat))\n { this.context.push(types$1.f_expr); }\n else\n { this.context.push(types$1.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes.backQuote.updateContext = function() {\n if (this.curContext() === types$1.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types$1.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes.star.updateContext = function(prevType) {\n if (prevType == types._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types$1.f_expr)\n { this.context[index] = types$1.f_expr_gen; }\n else\n { this.context[index] = types$1.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6) {\n if (this.value == \"of\" && !this.exprAllowed ||\n this.value == \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\nvar data = {\n \"$LONE\": [\n \"ASCII\",\n \"ASCII_Hex_Digit\",\n \"AHex\",\n \"Alphabetic\",\n \"Alpha\",\n \"Any\",\n \"Assigned\",\n \"Bidi_Control\",\n \"Bidi_C\",\n \"Bidi_Mirrored\",\n \"Bidi_M\",\n \"Case_Ignorable\",\n \"CI\",\n \"Cased\",\n \"Changes_When_Casefolded\",\n \"CWCF\",\n \"Changes_When_Casemapped\",\n \"CWCM\",\n \"Changes_When_Lowercased\",\n \"CWL\",\n \"Changes_When_NFKC_Casefolded\",\n \"CWKCF\",\n \"Changes_When_Titlecased\",\n \"CWT\",\n \"Changes_When_Uppercased\",\n \"CWU\",\n \"Dash\",\n \"Default_Ignorable_Code_Point\",\n \"DI\",\n \"Deprecated\",\n \"Dep\",\n \"Diacritic\",\n \"Dia\",\n \"Emoji\",\n \"Emoji_Component\",\n \"Emoji_Modifier\",\n \"Emoji_Modifier_Base\",\n \"Emoji_Presentation\",\n \"Extender\",\n \"Ext\",\n \"Grapheme_Base\",\n \"Gr_Base\",\n \"Grapheme_Extend\",\n \"Gr_Ext\",\n \"Hex_Digit\",\n \"Hex\",\n \"IDS_Binary_Operator\",\n \"IDSB\",\n \"IDS_Trinary_Operator\",\n \"IDST\",\n \"ID_Continue\",\n \"IDC\",\n \"ID_Start\",\n \"IDS\",\n \"Ideographic\",\n \"Ideo\",\n \"Join_Control\",\n \"Join_C\",\n \"Logical_Order_Exception\",\n \"LOE\",\n \"Lowercase\",\n \"Lower\",\n \"Math\",\n \"Noncharacter_Code_Point\",\n \"NChar\",\n \"Pattern_Syntax\",\n \"Pat_Syn\",\n \"Pattern_White_Space\",\n \"Pat_WS\",\n \"Quotation_Mark\",\n \"QMark\",\n \"Radical\",\n \"Regional_Indicator\",\n \"RI\",\n \"Sentence_Terminal\",\n \"STerm\",\n \"Soft_Dotted\",\n \"SD\",\n \"Terminal_Punctuation\",\n \"Term\",\n \"Unified_Ideograph\",\n \"UIdeo\",\n \"Uppercase\",\n \"Upper\",\n \"Variation_Selector\",\n \"VS\",\n \"White_Space\",\n \"space\",\n \"XID_Continue\",\n \"XIDC\",\n \"XID_Start\",\n \"XIDS\"\n ],\n \"General_Category\": [\n \"Cased_Letter\",\n \"LC\",\n \"Close_Punctuation\",\n \"Pe\",\n \"Connector_Punctuation\",\n \"Pc\",\n \"Control\",\n \"Cc\",\n \"cntrl\",\n \"Currency_Symbol\",\n \"Sc\",\n \"Dash_Punctuation\",\n \"Pd\",\n \"Decimal_Number\",\n \"Nd\",\n \"digit\",\n \"Enclosing_Mark\",\n \"Me\",\n \"Final_Punctuation\",\n \"Pf\",\n \"Format\",\n \"Cf\",\n \"Initial_Punctuation\",\n \"Pi\",\n \"Letter\",\n \"L\",\n \"Letter_Number\",\n \"Nl\",\n \"Line_Separator\",\n \"Zl\",\n \"Lowercase_Letter\",\n \"Ll\",\n \"Mark\",\n \"M\",\n \"Combining_Mark\",\n \"Math_Symbol\",\n \"Sm\",\n \"Modifier_Letter\",\n \"Lm\",\n \"Modifier_Symbol\",\n \"Sk\",\n \"Nonspacing_Mark\",\n \"Mn\",\n \"Number\",\n \"N\",\n \"Open_Punctuation\",\n \"Ps\",\n \"Other\",\n \"C\",\n \"Other_Letter\",\n \"Lo\",\n \"Other_Number\",\n \"No\",\n \"Other_Punctuation\",\n \"Po\",\n \"Other_Symbol\",\n \"So\",\n \"Paragraph_Separator\",\n \"Zp\",\n \"Private_Use\",\n \"Co\",\n \"Punctuation\",\n \"P\",\n \"punct\",\n \"Separator\",\n \"Z\",\n \"Space_Separator\",\n \"Zs\",\n \"Spacing_Mark\",\n \"Mc\",\n \"Surrogate\",\n \"Cs\",\n \"Symbol\",\n \"S\",\n \"Titlecase_Letter\",\n \"Lt\",\n \"Unassigned\",\n \"Cn\",\n \"Uppercase_Letter\",\n \"Lu\"\n ],\n \"Script\": [\n \"Adlam\",\n \"Adlm\",\n \"Ahom\",\n \"Anatolian_Hieroglyphs\",\n \"Hluw\",\n \"Arabic\",\n \"Arab\",\n \"Armenian\",\n \"Armn\",\n \"Avestan\",\n \"Avst\",\n \"Balinese\",\n \"Bali\",\n \"Bamum\",\n \"Bamu\",\n \"Bassa_Vah\",\n \"Bass\",\n \"Batak\",\n \"Batk\",\n \"Bengali\",\n \"Beng\",\n \"Bhaiksuki\",\n \"Bhks\",\n \"Bopomofo\",\n \"Bopo\",\n \"Brahmi\",\n \"Brah\",\n \"Braille\",\n \"Brai\",\n \"Buginese\",\n \"Bugi\",\n \"Buhid\",\n \"Buhd\",\n \"Canadian_Aboriginal\",\n \"Cans\",\n \"Carian\",\n \"Cari\",\n \"Caucasian_Albanian\",\n \"Aghb\",\n \"Chakma\",\n \"Cakm\",\n \"Cham\",\n \"Cherokee\",\n \"Cher\",\n \"Common\",\n \"Zyyy\",\n \"Coptic\",\n \"Copt\",\n \"Qaac\",\n \"Cuneiform\",\n \"Xsux\",\n \"Cypriot\",\n \"Cprt\",\n \"Cyrillic\",\n \"Cyrl\",\n \"Deseret\",\n \"Dsrt\",\n \"Devanagari\",\n \"Deva\",\n \"Duployan\",\n \"Dupl\",\n \"Egyptian_Hieroglyphs\",\n \"Egyp\",\n \"Elbasan\",\n \"Elba\",\n \"Ethiopic\",\n \"Ethi\",\n \"Georgian\",\n \"Geor\",\n \"Glagolitic\",\n \"Glag\",\n \"Gothic\",\n \"Goth\",\n \"Grantha\",\n \"Gran\",\n \"Greek\",\n \"Grek\",\n \"Gujarati\",\n \"Gujr\",\n \"Gurmukhi\",\n \"Guru\",\n \"Han\",\n \"Hani\",\n \"Hangul\",\n \"Hang\",\n \"Hanunoo\",\n \"Hano\",\n \"Hatran\",\n \"Hatr\",\n \"Hebrew\",\n \"Hebr\",\n \"Hiragana\",\n \"Hira\",\n \"Imperial_Aramaic\",\n \"Armi\",\n \"Inherited\",\n \"Zinh\",\n \"Qaai\",\n \"Inscriptional_Pahlavi\",\n \"Phli\",\n \"Inscriptional_Parthian\",\n \"Prti\",\n \"Javanese\",\n \"Java\",\n \"Kaithi\",\n \"Kthi\",\n \"Kannada\",\n \"Knda\",\n \"Katakana\",\n \"Kana\",\n \"Kayah_Li\",\n \"Kali\",\n \"Kharoshthi\",\n \"Khar\",\n \"Khmer\",\n \"Khmr\",\n \"Khojki\",\n \"Khoj\",\n \"Khudawadi\",\n \"Sind\",\n \"Lao\",\n \"Laoo\",\n \"Latin\",\n \"Latn\",\n \"Lepcha\",\n \"Lepc\",\n \"Limbu\",\n \"Limb\",\n \"Linear_A\",\n \"Lina\",\n \"Linear_B\",\n \"Linb\",\n \"Lisu\",\n \"Lycian\",\n \"Lyci\",\n \"Lydian\",\n \"Lydi\",\n \"Mahajani\",\n \"Mahj\",\n \"Malayalam\",\n \"Mlym\",\n \"Mandaic\",\n \"Mand\",\n \"Manichaean\",\n \"Mani\",\n \"Marchen\",\n \"Marc\",\n \"Masaram_Gondi\",\n \"Gonm\",\n \"Meetei_Mayek\",\n \"Mtei\",\n \"Mende_Kikakui\",\n \"Mend\",\n \"Meroitic_Cursive\",\n \"Merc\",\n \"Meroitic_Hieroglyphs\",\n \"Mero\",\n \"Miao\",\n \"Plrd\",\n \"Modi\",\n \"Mongolian\",\n \"Mong\",\n \"Mro\",\n \"Mroo\",\n \"Multani\",\n \"Mult\",\n \"Myanmar\",\n \"Mymr\",\n \"Nabataean\",\n \"Nbat\",\n \"New_Tai_Lue\",\n \"Talu\",\n \"Newa\",\n \"Nko\",\n \"Nkoo\",\n \"Nushu\",\n \"Nshu\",\n \"Ogham\",\n \"Ogam\",\n \"Ol_Chiki\",\n \"Olck\",\n \"Old_Hungarian\",\n \"Hung\",\n \"Old_Italic\",\n \"Ital\",\n \"Old_North_Arabian\",\n \"Narb\",\n \"Old_Permic\",\n \"Perm\",\n \"Old_Persian\",\n \"Xpeo\",\n \"Old_South_Arabian\",\n \"Sarb\",\n \"Old_Turkic\",\n \"Orkh\",\n \"Oriya\",\n \"Orya\",\n \"Osage\",\n \"Osge\",\n \"Osmanya\",\n \"Osma\",\n \"Pahawh_Hmong\",\n \"Hmng\",\n \"Palmyrene\",\n \"Palm\",\n \"Pau_Cin_Hau\",\n \"Pauc\",\n \"Phags_Pa\",\n \"Phag\",\n \"Phoenician\",\n \"Phnx\",\n \"Psalter_Pahlavi\",\n \"Phlp\",\n \"Rejang\",\n \"Rjng\",\n \"Runic\",\n \"Runr\",\n \"Samaritan\",\n \"Samr\",\n \"Saurashtra\",\n \"Saur\",\n \"Sharada\",\n \"Shrd\",\n \"Shavian\",\n \"Shaw\",\n \"Siddham\",\n \"Sidd\",\n \"SignWriting\",\n \"Sgnw\",\n \"Sinhala\",\n \"Sinh\",\n \"Sora_Sompeng\",\n \"Sora\",\n \"Soyombo\",\n \"Soyo\",\n \"Sundanese\",\n \"Sund\",\n \"Syloti_Nagri\",\n \"Sylo\",\n \"Syriac\",\n \"Syrc\",\n \"Tagalog\",\n \"Tglg\",\n \"Tagbanwa\",\n \"Tagb\",\n \"Tai_Le\",\n \"Tale\",\n \"Tai_Tham\",\n \"Lana\",\n \"Tai_Viet\",\n \"Tavt\",\n \"Takri\",\n \"Takr\",\n \"Tamil\",\n \"Taml\",\n \"Tangut\",\n \"Tang\",\n \"Telugu\",\n \"Telu\",\n \"Thaana\",\n \"Thaa\",\n \"Thai\",\n \"Tibetan\",\n \"Tibt\",\n \"Tifinagh\",\n \"Tfng\",\n \"Tirhuta\",\n \"Tirh\",\n \"Ugaritic\",\n \"Ugar\",\n \"Vai\",\n \"Vaii\",\n \"Warang_Citi\",\n \"Wara\",\n \"Yi\",\n \"Yiii\",\n \"Zanabazar_Square\",\n \"Zanb\"\n ]\n};\nArray.prototype.push.apply(data.$LONE, data.General_Category);\ndata.gc = data.General_Category;\ndata.sc = data.Script_Extensions = data.scx = data.Script;\n\nvar pp$9 = Parser.prototype;\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\");\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = [];\n this.backReferenceNames = [];\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i) {\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i) {\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i);\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current () {\n return this.at(this.pos)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead () {\n return this.at(this.nextIndex(this.pos))\n};\n\nRegExpValidationState.prototype.advance = function advance () {\n this.pos = this.nextIndex(this.pos);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch) {\n if (this.current() === ch) {\n this.advance();\n return true\n }\n return false\n};\n\nfunction codePointToString$1(ch) {\n if (ch <= 0xFFFF) { return String.fromCharCode(ch) }\n ch -= 0x10000;\n return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00)\n}\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$9.validateRegExpFlags = function(state) {\n var this$1 = this;\n\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) == -1) {\n this$1.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this$1.raise(state.start, \"Duplicate regular expression flag\");\n }\n }\n};\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$9.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$9.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames.length = 0;\n state.backReferenceNames.length = 0;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* [ */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$9.regexp_disjunction = function(state) {\n var this$1 = this;\n\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n this$1.regexp_alternative(state);\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$9.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n { }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$9.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$9.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$9.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$9.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$9.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$9.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$9.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$9.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n state.pos = start;\n }\n return false\n};\npp$9.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$9.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$9.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$9.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$9.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$9.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier[U] ::\n// [empty]\n// `?` GroupName[?U]\npp$9.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\");\n }\n state.groupNames.push(state.lastStringValue);\n return\n }\n state.raise(\"Invalid group\");\n }\n};\n\n// GroupName[U] ::\n// `<` RegExpIdentifierName[?U] `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$9.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName[U] ::\n// RegExpIdentifierStart[?U]\n// RegExpIdentifierName[?U] RegExpIdentifierPart[?U]\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$9.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString$1(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString$1(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart[U] ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\npp$9.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var ch = state.current();\n state.advance();\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart[U] ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\n// <ZWNJ>\n// <ZWJ>\npp$9.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var ch = state.current();\n state.advance();\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$9.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$9.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$9.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$9.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$9.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$9.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$9.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$9.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$9.regexp_eatRegExpUnicodeEscapeSequence = function(state) {\n var start = state.pos;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n state.switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$9.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$9.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$9.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return true\n }\n\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n (ch === 0x50 /* P */ || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n if (\n state.eat(0x7B /* { */) &&\n this.regexp_eatUnicodePropertyValueExpression(state) &&\n state.eat(0x7D /* } */)\n ) {\n return true\n }\n state.raise(\"Invalid property name\");\n }\n\n return false\n};\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$9.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return true\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue);\n return true\n }\n return false\n};\npp$9.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!data.hasOwnProperty(name) || data[name].indexOf(value) === -1) {\n state.raise(\"Invalid property name\");\n }\n};\npp$9.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (data.$LONE.indexOf(nameOrValue) === -1) {\n state.raise(\"Invalid property name\");\n }\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$9.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString$1(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$9.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString$1(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$9.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$9.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n state.eat(0x5E /* ^ */);\n this.regexp_classRanges(state);\n if (state.eat(0x5D /* [ */)) {\n return true\n }\n // Unreachable since it threw \"unterminated regular expression\" error before.\n state.raise(\"Unterminated character class\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$9.regexp_classRanges = function(state) {\n var this$1 = this;\n\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this$1.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$9.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* [ */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$9.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$9.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$9.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$9.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$9.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$9.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$9.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$9.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp$8 = Parser.prototype;\n\n// Move to the next token\n\npp$8.next = function() {\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp$8.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp$8[Symbol.iterator] = function() {\n var this$1 = this;\n\n return {\n next: function () {\n var token = this$1.getToken();\n return {\n done: token.type === types.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp$8.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp$8.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp$8.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp$8.fullCharCodeAtPos = function() {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xe000) { return code }\n var next = this.input.charCodeAt(this.pos + 1);\n return (code << 10) + next - 0x35fdc00\n};\n\npp$8.skipBlockComment = function() {\n var this$1 = this;\n\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n lineBreakG.lastIndex = start;\n var match;\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this$1.curLine;\n this$1.lineStart = match.index + match[0].length;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp$8.skipLineComment = function(startSkip) {\n var this$1 = this;\n\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this$1.input.charCodeAt(++this$1.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp$8.skipSpace = function() {\n var this$1 = this;\n\n loop: while (this.pos < this.input.length) {\n var ch = this$1.input.charCodeAt(this$1.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this$1.pos;\n break\n case 13:\n if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {\n ++this$1.pos;\n }\n case 10: case 8232: case 8233:\n ++this$1.pos;\n if (this$1.options.locations) {\n ++this$1.curLine;\n this$1.lineStart = this$1.pos;\n }\n break\n case 47: // '/'\n switch (this$1.input.charCodeAt(this$1.pos + 1)) {\n case 42: // '*'\n this$1.skipBlockComment();\n break\n case 47:\n this$1.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this$1.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp$8.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp$8.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types.dot)\n }\n};\n\npp$8.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(types.slash, 1)\n};\n\npp$8.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types.star : types.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code == 42 && next === 42) {\n ++size;\n tokentype = types.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp$8.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) { return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2) }\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1)\n};\n\npp$8.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(types.bitwiseXOR, 1)\n};\n\npp$8.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next == 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) == 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types.assign, 2) }\n return this.finishOp(types.plusMin, 1)\n};\n\npp$8.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) }\n return this.finishOp(types.bitShift, size)\n }\n if (next == 33 && code == 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) == 45 &&\n this.input.charCodeAt(this.pos + 3) == 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types.relational, size)\n};\n\npp$8.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types.arrow)\n }\n return this.finishOp(code === 61 ? types.eq : types.prefix, 1)\n};\n\npp$8.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types.parenL)\n case 41: ++this.pos; return this.finishToken(types.parenR)\n case 59: ++this.pos; return this.finishToken(types.semi)\n case 44: ++this.pos; return this.finishToken(types.comma)\n case 91: ++this.pos; return this.finishToken(types.bracketL)\n case 93: ++this.pos; return this.finishToken(types.bracketR)\n case 123: ++this.pos; return this.finishToken(types.braceL)\n case 125: ++this.pos; return this.finishToken(types.braceR)\n case 58: ++this.pos; return this.finishToken(types.colon)\n case 63: ++this.pos; return this.finishToken(types.question)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 126: // '~'\n return this.finishOp(types.prefix, 1)\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp$8.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp$8.readRegexp = function() {\n var this$1 = this;\n\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this$1.pos >= this$1.input.length) { this$1.raise(start, \"Unterminated regular expression\"); }\n var ch = this$1.input.charAt(this$1.pos);\n if (lineBreak.test(ch)) { this$1.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this$1.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp$8.readInt = function(radix, len) {\n var this$1 = this;\n\n var start = this.pos, total = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n var code = this$1.input.charCodeAt(this$1.pos), val = (void 0);\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n ++this$1.pos;\n total = total * radix + val;\n }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\npp$8.readRadixNumber = function(radix) {\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp$8.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n var next = this.input.charCodeAt(this.pos);\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var str = this.input.slice(start, this.pos);\n var val = octal ? parseInt(str, 8) : parseFloat(str);\n return this.finishToken(types.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp$8.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\npp$8.readString = function(quote) {\n var this$1 = this;\n\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this$1.pos >= this$1.input.length) { this$1.raise(this$1.start, \"Unterminated string constant\"); }\n var ch = this$1.input.charCodeAt(this$1.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this$1.input.slice(chunkStart, this$1.pos);\n out += this$1.readEscapedChar(false);\n chunkStart = this$1.pos;\n } else {\n if (isNewLine(ch)) { this$1.raise(this$1.start, \"Unterminated string constant\"); }\n ++this$1.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp$8.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp$8.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp$8.readTmplToken = function() {\n var this$1 = this;\n\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this$1.pos >= this$1.input.length) { this$1.raise(this$1.start, \"Unterminated template\"); }\n var ch = this$1.input.charCodeAt(this$1.pos);\n if (ch === 96 || ch === 36 && this$1.input.charCodeAt(this$1.pos + 1) === 123) { // '`', '${'\n if (this$1.pos === this$1.start && (this$1.type === types.template || this$1.type === types.invalidTemplate)) {\n if (ch === 36) {\n this$1.pos += 2;\n return this$1.finishToken(types.dollarBraceL)\n } else {\n ++this$1.pos;\n return this$1.finishToken(types.backQuote)\n }\n }\n out += this$1.input.slice(chunkStart, this$1.pos);\n return this$1.finishToken(types.template, out)\n }\n if (ch === 92) { // '\\'\n out += this$1.input.slice(chunkStart, this$1.pos);\n out += this$1.readEscapedChar(true);\n chunkStart = this$1.pos;\n } else if (isNewLine(ch)) {\n out += this$1.input.slice(chunkStart, this$1.pos);\n ++this$1.pos;\n switch (ch) {\n case 13:\n if (this$1.input.charCodeAt(this$1.pos) === 10) { ++this$1.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this$1.options.locations) {\n ++this$1.curLine;\n this$1.lineStart = this$1.pos;\n }\n chunkStart = this$1.pos;\n } else {\n ++this$1.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp$8.readInvalidTemplateToken = function() {\n var this$1 = this;\n\n for (; this.pos < this.input.length; this.pos++) {\n switch (this$1.input[this$1.pos]) {\n case \"\\\\\":\n ++this$1.pos;\n break\n\n case \"$\":\n if (this$1.input[this$1.pos + 1] !== \"{\") {\n break\n }\n // falls through\n\n case \"`\":\n return this$1.finishToken(types.invalidTemplate, this$1.input.slice(this$1.start, this$1.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp$8.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch == 56 || ch == 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp$8.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp$8.readWord1 = function() {\n var this$1 = this;\n\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this$1.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this$1.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this$1.containsEsc = true;\n word += this$1.input.slice(chunkStart, this$1.pos);\n var escStart = this$1.pos;\n if (this$1.input.charCodeAt(++this$1.pos) != 117) // \"u\"\n { this$1.invalidStringToken(this$1.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this$1.pos;\n var esc = this$1.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this$1.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this$1.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp$8.readWord = function() {\n var word = this.readWord1();\n var type = types.name;\n if (this.keywords.test(word)) {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + word); }\n type = keywords$1[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// This file defines the main parser interface. The library also comes\n// with a [error-tolerant parser][dammit] and an\n// [abstract syntax tree walker][walk], defined in other files.\n//\n// [dammit]: acorn_loose.js\n// [walk]: util/walk.js\n\nvar version = \"5.5.3\";\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nfunction parse(input, options) {\n return new Parser(options, input).parse()\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n var p = new Parser(options, input, pos);\n p.nextToken();\n return p.parseExpression()\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return new Parser(options, input)\n}\n\n// This is a terrible kludge to support the existing, pre-ES6\n// interface where the loose parser module retroactively adds exports\n// to this module.\nvar parse_dammit;\nvar LooseParser;\nvar pluginsLoose; // eslint-disable-line camelcase\nfunction addLooseExports(parse, Parser$$1, plugins$$1) {\n parse_dammit = parse; // eslint-disable-line camelcase\n LooseParser = Parser$$1;\n pluginsLoose = plugins$$1;\n}\n\nexport { version, parse, parseExpressionAt, tokenizer, parse_dammit, LooseParser, pluginsLoose, addLooseExports, Parser, plugins, defaultOptions, Position, SourceLocation, getLineInfo, Node, TokenType, types as tokTypes, keywords$1 as keywordTypes, TokContext, types$1 as tokContexts, isIdentifierChar, isIdentifierStart, Token, isNewLine, lineBreak, lineBreakG, nonASCIIwhitespace };\n","import { parseExpressionAt } from 'acorn';\nimport { Parser } from '../index';\n\nconst literals = new Map([['true', true], ['false', false], ['null', null]]);\n\nexport default function readExpression(parser: Parser) {\n\tconst start = parser.index;\n\n\tconst name = parser.readUntil(/\\s*}/);\n\tif (name && /^[a-z]+$/.test(name)) {\n\t\tconst end = start + name.length;\n\n\t\tif (literals.has(name)) {\n\t\t\treturn {\n\t\t\t\ttype: 'Literal',\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\tvalue: literals.get(name),\n\t\t\t\traw: name,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttype: 'Identifier',\n\t\t\tstart,\n\t\t\tend: start + name.length,\n\t\t\tname,\n\t\t};\n\t}\n\n\tparser.index = start;\n\n\ttry {\n\t\tconst node = parseExpressionAt(parser.template, parser.index, {\n\t\t\tecmaVersion: 9,\n\t\t\tpreserveParens: true,\n\t\t});\n\t\tparser.index = node.end;\n\n\t\treturn node;\n\t} catch (err) {\n\t\tparser.acornError(err);\n\t}\n}\n","/* eslint-disable no-underscore-dangle */\n\nexport const DynamicImportKey = 'Import';\n\nexport default function injectDynamicImport(acorn) {\n const tt = acorn.tokTypes;\n\n // NOTE: This allows `yield import()` to parse correctly.\n tt._import.startsExpr = true;\n\n function parseDynamicImport() {\n const node = this.startNode();\n this.next();\n if (this.type !== tt.parenL) {\n this.unexpected();\n }\n return this.finishNode(node, DynamicImportKey);\n }\n\n function peekNext() {\n return this.input[this.pos];\n }\n\n // eslint-disable-next-line no-param-reassign\n acorn.plugins.dynamicImport = function dynamicImportPlugin(instance) {\n instance.extend('parseStatement', nextMethod => (\n function parseStatement(...args) {\n const node = this.startNode();\n if (this.type === tt._import) {\n const nextToken = peekNext.call(this);\n if (nextToken === tt.parenL.label) {\n const expr = this.parseExpression();\n return this.parseExpressionStatement(node, expr);\n }\n }\n\n return nextMethod.apply(this, args);\n }\n ));\n\n instance.extend('parseExprAtom', nextMethod => (\n function parseExprAtom(refDestructuringErrors) {\n if (this.type === tt._import) {\n return parseDynamicImport.call(this);\n }\n return nextMethod.call(this, refDestructuringErrors);\n }\n ));\n };\n\n return acorn;\n}\n","export default function repeat(str: string, i: number) {\n\tlet result = '';\n\twhile (i--) result += str;\n\treturn result;\n}\n","import * as acorn from 'acorn';\nimport injectDynamicImport from 'acorn-dynamic-import/src/inject';\nimport repeat from '../../utils/repeat';\nimport { Parser } from '../index';\nimport { Node } from '../../interfaces';\n\nconst scriptClosingTag = '</script>';\n\ninjectDynamicImport(acorn);\n\nexport default function readScript(parser: Parser, start: number, attributes: Node[]) {\n\tconst scriptStart = parser.index;\n\tconst scriptEnd = parser.template.indexOf(scriptClosingTag, scriptStart);\n\n\tif (scriptEnd === -1) parser.error({\n\t\tcode: `unclosed-script`,\n\t\tmessage: `<script> must have a closing tag`\n\t});\n\n\tconst source =\n\t\trepeat(' ', scriptStart) + parser.template.slice(scriptStart, scriptEnd);\n\tparser.index = scriptEnd + scriptClosingTag.length;\n\n\tlet ast;\n\n\ttry {\n\t\tast = acorn.parse(source, {\n\t\t\tecmaVersion: 9,\n\t\t\tsourceType: 'module',\n\t\t\tplugins: {\n\t\t\t\tdynamicImport: true\n\t\t\t}\n\t\t});\n\t} catch (err) {\n\t\tparser.acornError(err);\n\t}\n\n\tif (!ast.body.length) return null;\n\n\tast.start = scriptStart;\n\treturn {\n\t\tstart,\n\t\tend: parser.index,\n\t\tattributes,\n\t\tcontent: ast,\n\t};\n}\n","'use strict';\n\nvar MAX_LINE_LENGTH = 100;\nvar OFFSET_CORRECTION = 60;\nvar TAB_REPLACEMENT = ' ';\n\nfunction sourceFragment(error, extraLines) {\n function processLines(start, end) {\n return lines.slice(start, end).map(function(line, idx) {\n var num = String(start + idx + 1);\n\n while (num.length < maxNumLength) {\n num = ' ' + num;\n }\n\n return num + ' |' + line;\n }).join('\\n');\n }\n\n var lines = error.source.split(/\\n|\\r\\n?|\\f/);\n var line = error.line;\n var column = error.column;\n var startLine = Math.max(1, line - extraLines) - 1;\n var endLine = Math.min(line + extraLines, lines.length + 1);\n var maxNumLength = Math.max(4, String(endLine).length) + 1;\n var cutLeft = 0;\n\n // correct column according to replaced tab before column\n column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\\t/g) || []).length;\n\n if (column > MAX_LINE_LENGTH) {\n cutLeft = column - OFFSET_CORRECTION + 3;\n column = OFFSET_CORRECTION - 2;\n }\n\n for (var i = startLine; i <= endLine; i++) {\n if (i >= 0 && i < lines.length) {\n lines[i] = lines[i].replace(/\\t/g, TAB_REPLACEMENT);\n lines[i] =\n (cutLeft > 0 && lines[i].length > cutLeft ? '\\u2026' : '') +\n lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) +\n (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\\u2026' : '');\n }\n }\n\n return [\n processLines(startLine, line),\n new Array(column + maxNumLength + 2).join('-') + '^',\n processLines(line, endLine)\n ].join('\\n');\n}\n\nvar CssSyntaxError = function(message, source, offset, line, column) {\n // some VMs prevent setting line/column otherwise (iOS Safari 10 even throw an exception)\n var error = Object.create(SyntaxError.prototype);\n\n error.name = 'CssSyntaxError';\n error.message = message;\n error.stack = (new Error().stack || '').replace(/^.+\\n/, error.name + ': ' + error.message + '\\n');\n error.source = source;\n error.offset = offset;\n error.line = line;\n error.column = column;\n\n error.sourceFragment = function(extraLines) {\n return sourceFragment(error, isNaN(extraLines) ? 0 : extraLines);\n };\n Object.defineProperty(error, 'formattedMessage', {\n get: function() {\n return (\n 'Parse error: ' + error.message + '\\n' +\n sourceFragment(error, 2)\n );\n }\n });\n\n // for backward capability\n error.parseError = {\n offset: offset,\n line: line,\n column: column\n };\n\n return error;\n};\n\nmodule.exports = CssSyntaxError;\n","'use strict';\n\n// token types (note: value shouldn't intersect with used char codes)\nvar WHITESPACE = 1;\nvar IDENTIFIER = 2;\nvar NUMBER = 3;\nvar STRING = 4;\nvar COMMENT = 5;\nvar PUNCTUATOR = 6;\nvar CDO = 7;\nvar CDC = 8;\nvar ATRULE = 14;\nvar FUNCTION = 15;\nvar URL = 16;\nvar RAW = 17;\n\nvar TAB = 9;\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar SPACE = 32;\n\nvar TYPE = {\n WhiteSpace: WHITESPACE,\n Identifier: IDENTIFIER,\n Number: NUMBER,\n String: STRING,\n Comment: COMMENT,\n Punctuator: PUNCTUATOR,\n CDO: CDO,\n CDC: CDC,\n Atrule: ATRULE,\n Function: FUNCTION,\n Url: URL,\n Raw: RAW,\n\n ExclamationMark: 33, // !\n QuotationMark: 34, // \"\n NumberSign: 35, // #\n DollarSign: 36, // $\n PercentSign: 37, // %\n Ampersand: 38, // &\n Apostrophe: 39, // '\n LeftParenthesis: 40, // (\n RightParenthesis: 41, // )\n Asterisk: 42, // *\n PlusSign: 43, // +\n Comma: 44, // ,\n HyphenMinus: 45, // -\n FullStop: 46, // .\n Solidus: 47, // /\n Colon: 58, // :\n Semicolon: 59, // ;\n LessThanSign: 60, // <\n EqualsSign: 61, // =\n GreaterThanSign: 62, // >\n QuestionMark: 63, // ?\n CommercialAt: 64, // @\n LeftSquareBracket: 91, // [\n Backslash: 92, // \\\n RightSquareBracket: 93, // ]\n CircumflexAccent: 94, // ^\n LowLine: 95, // _\n GraveAccent: 96, // `\n LeftCurlyBracket: 123, // {\n VerticalLine: 124, // |\n RightCurlyBracket: 125, // }\n Tilde: 126 // ~\n};\n\nvar NAME = Object.keys(TYPE).reduce(function(result, key) {\n result[TYPE[key]] = key;\n return result;\n}, {});\n\n// https://drafts.csswg.org/css-syntax/#tokenizer-definitions\n// > non-ASCII code point\n// > A code point with a value equal to or greater than U+0080 <control>\n// > name-start code point\n// > A letter, a non-ASCII code point, or U+005F LOW LINE (_).\n// > name code point\n// > A name-start code point, a digit, or U+002D HYPHEN-MINUS (-)\n// That means only ASCII code points has a special meaning and we a maps for 0..127 codes only\nvar SafeUint32Array = typeof Uint32Array !== 'undefined' ? Uint32Array : Array; // fallback on Array when TypedArray is not supported\nvar SYMBOL_TYPE = new SafeUint32Array(0x80);\nvar PUNCTUATION = new SafeUint32Array(0x80);\nvar STOP_URL_RAW = new SafeUint32Array(0x80);\n\nfor (var i = 0; i < SYMBOL_TYPE.length; i++) {\n SYMBOL_TYPE[i] = IDENTIFIER;\n}\n\n// fill categories\n[\n TYPE.ExclamationMark, // !\n TYPE.QuotationMark, // \"\n TYPE.NumberSign, // #\n TYPE.DollarSign, // $\n TYPE.PercentSign, // %\n TYPE.Ampersand, // &\n TYPE.Apostrophe, // '\n TYPE.LeftParenthesis, // (\n TYPE.RightParenthesis, // )\n TYPE.Asterisk, // *\n TYPE.PlusSign, // +\n TYPE.Comma, // ,\n TYPE.HyphenMinus, // -\n TYPE.FullStop, // .\n TYPE.Solidus, // /\n TYPE.Colon, // :\n TYPE.Semicolon, // ;\n TYPE.LessThanSign, // <\n TYPE.EqualsSign, // =\n TYPE.GreaterThanSign, // >\n TYPE.QuestionMark, // ?\n TYPE.CommercialAt, // @\n TYPE.LeftSquareBracket, // [\n // TYPE.Backslash, // \\\n TYPE.RightSquareBracket, // ]\n TYPE.CircumflexAccent, // ^\n // TYPE.LowLine, // _\n TYPE.GraveAccent, // `\n TYPE.LeftCurlyBracket, // {\n TYPE.VerticalLine, // |\n TYPE.RightCurlyBracket, // }\n TYPE.Tilde // ~\n].forEach(function(key) {\n SYMBOL_TYPE[Number(key)] = PUNCTUATOR;\n PUNCTUATION[Number(key)] = PUNCTUATOR;\n});\n\nfor (var i = 48; i <= 57; i++) {\n SYMBOL_TYPE[i] = NUMBER;\n}\n\nSYMBOL_TYPE[SPACE] = WHITESPACE;\nSYMBOL_TYPE[TAB] = WHITESPACE;\nSYMBOL_TYPE[N] = WHITESPACE;\nSYMBOL_TYPE[R] = WHITESPACE;\nSYMBOL_TYPE[F] = WHITESPACE;\n\nSYMBOL_TYPE[TYPE.Apostrophe] = STRING;\nSYMBOL_TYPE[TYPE.QuotationMark] = STRING;\n\nSTOP_URL_RAW[SPACE] = 1;\nSTOP_URL_RAW[TAB] = 1;\nSTOP_URL_RAW[N] = 1;\nSTOP_URL_RAW[R] = 1;\nSTOP_URL_RAW[F] = 1;\nSTOP_URL_RAW[TYPE.Apostrophe] = 1;\nSTOP_URL_RAW[TYPE.QuotationMark] = 1;\nSTOP_URL_RAW[TYPE.LeftParenthesis] = 1;\nSTOP_URL_RAW[TYPE.RightParenthesis] = 1;\n\n// whitespace is punctuation ...\nPUNCTUATION[SPACE] = PUNCTUATOR;\nPUNCTUATION[TAB] = PUNCTUATOR;\nPUNCTUATION[N] = PUNCTUATOR;\nPUNCTUATION[R] = PUNCTUATOR;\nPUNCTUATION[F] = PUNCTUATOR;\n// ... hyper minus is not\nPUNCTUATION[TYPE.HyphenMinus] = 0;\n\nmodule.exports = {\n TYPE: TYPE,\n NAME: NAME,\n\n SYMBOL_TYPE: SYMBOL_TYPE,\n PUNCTUATION: PUNCTUATION,\n STOP_URL_RAW: STOP_URL_RAW\n};\n","'use strict';\n\nvar constants = require('./const');\nvar PUNCTUATION = constants.PUNCTUATION;\nvar STOP_URL_RAW = constants.STOP_URL_RAW;\nvar TYPE = constants.TYPE;\nvar FULLSTOP = TYPE.FullStop;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar PUNCTUATOR = TYPE.Punctuator;\nvar TAB = 9;\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar SPACE = 32;\nvar BACK_SLASH = 92;\nvar E = 101; // 'e'.charCodeAt(0)\n\nfunction firstCharOffset(source) {\n // detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark)\n if (source.charCodeAt(0) === 0xFEFF || // UTF-16BE\n source.charCodeAt(0) === 0xFFFE) { // UTF-16LE\n return 1;\n }\n\n return 0;\n}\n\nfunction isHex(code) {\n return (code >= 48 && code <= 57) || // 0 .. 9\n (code >= 65 && code <= 70) || // A .. F\n (code >= 97 && code <= 102); // a .. f\n}\n\nfunction isNumber(code) {\n return code >= 48 && code <= 57;\n}\n\nfunction isNewline(source, offset, code) {\n if (code === N || code === F || code === R) {\n if (code === R && offset + 1 < source.length && source.charCodeAt(offset + 1) === N) {\n return 2;\n }\n\n return 1;\n }\n\n return 0;\n}\n\nfunction cmpChar(testStr, offset, referenceCode) {\n var code = testStr.charCodeAt(offset);\n\n // code.toLowerCase()\n if (code >= 65 && code <= 90) {\n code = code | 32;\n }\n\n return code === referenceCode;\n}\n\nfunction cmpStr(testStr, start, end, referenceStr) {\n if (end - start !== referenceStr.length) {\n return false;\n }\n\n if (start < 0 || end > testStr.length) {\n return false;\n }\n\n for (var i = start; i < end; i++) {\n var testCode = testStr.charCodeAt(i);\n var refCode = referenceStr.charCodeAt(i - start);\n\n // testStr[i].toLowerCase()\n if (testCode >= 65 && testCode <= 90) {\n testCode = testCode | 32;\n }\n\n if (testCode !== refCode) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction endsWith(testStr, referenceStr) {\n return cmpStr(testStr, testStr.length - referenceStr.length, testStr.length, referenceStr);\n}\n\nfunction findLastNonSpaceLocation(scanner) {\n for (var i = scanner.source.length - 1; i >= 0; i--) {\n var code = scanner.source.charCodeAt(i);\n\n if (code !== SPACE && code !== TAB && code !== R && code !== N && code !== F) {\n break;\n }\n }\n\n return scanner.getLocation(i + 1);\n}\n\nfunction findWhiteSpaceEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code !== SPACE && code !== TAB && code !== R && code !== N && code !== F) {\n break;\n }\n }\n\n return offset;\n}\n\nfunction findCommentEnd(source, offset) {\n var commentEnd = source.indexOf('*/', offset);\n\n if (commentEnd === -1) {\n return source.length;\n }\n\n return commentEnd + 2;\n}\n\nfunction findStringEnd(source, offset, quote) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n // TODO: bad string\n if (code === BACK_SLASH) {\n offset++;\n } else if (code === quote) {\n offset++;\n break;\n }\n }\n\n return offset;\n}\n\nfunction findDecimalNumberEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code < 48 || code > 57) { // not a 0 .. 9\n break;\n }\n }\n\n return offset;\n}\n\nfunction findNumberEnd(source, offset, allowFraction) {\n var code;\n\n offset = findDecimalNumberEnd(source, offset);\n\n // fraction: .\\d+\n if (allowFraction && offset + 1 < source.length && source.charCodeAt(offset) === FULLSTOP) {\n code = source.charCodeAt(offset + 1);\n\n if (isNumber(code)) {\n offset = findDecimalNumberEnd(source, offset + 1);\n }\n }\n\n // exponent: e[+-]\\d+\n if (offset + 1 < source.length) {\n if ((source.charCodeAt(offset) | 32) === E) { // case insensitive check for `e`\n code = source.charCodeAt(offset + 1);\n\n if (code === PLUSSIGN || code === HYPHENMINUS) {\n if (offset + 2 < source.length) {\n code = source.charCodeAt(offset + 2);\n }\n }\n\n if (isNumber(code)) {\n offset = findDecimalNumberEnd(source, offset + 2);\n }\n }\n }\n\n return offset;\n}\n\n// skip escaped unicode sequence that can ends with space\n// [0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?\nfunction findEscaseEnd(source, offset) {\n for (var i = 0; i < 7 && offset + i < source.length; i++) {\n var code = source.charCodeAt(offset + i);\n\n if (i !== 6 && isHex(code)) {\n continue;\n }\n\n if (i > 0) {\n offset += i - 1 + isNewline(source, offset + i, code);\n if (code === SPACE || code === TAB) {\n offset++;\n }\n }\n\n break;\n }\n\n return offset;\n}\n\nfunction findIdentifierEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code === BACK_SLASH) {\n offset = findEscaseEnd(source, offset + 1);\n } else if (code < 0x80 && PUNCTUATION[code] === PUNCTUATOR) {\n break;\n }\n }\n\n return offset;\n}\n\nfunction findUrlRawEnd(source, offset) {\n for (; offset < source.length; offset++) {\n var code = source.charCodeAt(offset);\n\n if (code === BACK_SLASH) {\n offset = findEscaseEnd(source, offset + 1);\n } else if (code < 0x80 && STOP_URL_RAW[code] === 1) {\n break;\n }\n }\n\n return offset;\n}\n\nmodule.exports = {\n firstCharOffset: firstCharOffset,\n\n isHex: isHex,\n isNumber: isNumber,\n isNewline: isNewline,\n\n cmpChar: cmpChar,\n cmpStr: cmpStr,\n endsWith: endsWith,\n\n findLastNonSpaceLocation: findLastNonSpaceLocation,\n findWhiteSpaceEnd: findWhiteSpaceEnd,\n findCommentEnd: findCommentEnd,\n findStringEnd: findStringEnd,\n findDecimalNumberEnd: findDecimalNumberEnd,\n findNumberEnd: findNumberEnd,\n findEscaseEnd: findEscaseEnd,\n findIdentifierEnd: findIdentifierEnd,\n findUrlRawEnd: findUrlRawEnd\n};\n","'use strict';\n\nvar CssSyntaxError = require('./error');\n\nvar constants = require('./const');\nvar TYPE = constants.TYPE;\nvar NAME = constants.NAME;\nvar SYMBOL_TYPE = constants.SYMBOL_TYPE;\n\nvar utils = require('./utils');\nvar firstCharOffset = utils.firstCharOffset;\nvar cmpStr = utils.cmpStr;\nvar isNumber = utils.isNumber;\nvar findLastNonSpaceLocation = utils.findLastNonSpaceLocation;\nvar findWhiteSpaceEnd = utils.findWhiteSpaceEnd;\nvar findCommentEnd = utils.findCommentEnd;\nvar findStringEnd = utils.findStringEnd;\nvar findNumberEnd = utils.findNumberEnd;\nvar findIdentifierEnd = utils.findIdentifierEnd;\nvar findUrlRawEnd = utils.findUrlRawEnd;\n\nvar NULL = 0;\nvar WHITESPACE = TYPE.WhiteSpace;\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar STRING = TYPE.String;\nvar COMMENT = TYPE.Comment;\nvar PUNCTUATOR = TYPE.Punctuator;\nvar CDO = TYPE.CDO;\nvar CDC = TYPE.CDC;\nvar ATRULE = TYPE.Atrule;\nvar FUNCTION = TYPE.Function;\nvar URL = TYPE.Url;\nvar RAW = TYPE.Raw;\n\nvar N = 10;\nvar F = 12;\nvar R = 13;\nvar STAR = TYPE.Asterisk;\nvar SLASH = TYPE.Solidus;\nvar FULLSTOP = TYPE.FullStop;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar LESSTHANSIGN = TYPE.LessThanSign;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar COMMERCIALAT = TYPE.CommercialAt;\nvar QUOTATIONMARK = TYPE.QuotationMark;\nvar APOSTROPHE = TYPE.Apostrophe;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\n\nvar MIN_BUFFER_SIZE = 16 * 1024;\nvar OFFSET_MASK = 0x00FFFFFF;\nvar TYPE_SHIFT = 24;\nvar SafeUint32Array = typeof Uint32Array !== 'undefined' ? Uint32Array : Array; // fallback on Array when TypedArray is not supported\n\nfunction computeLinesAndColumns(tokenizer, source) {\n var sourceLength = source.length;\n var start = firstCharOffset(source);\n var lines = tokenizer.lines;\n var line = tokenizer.startLine;\n var columns = tokenizer.columns;\n var column = tokenizer.startColumn;\n\n if (lines === null || lines.length < sourceLength + 1) {\n lines = new SafeUint32Array(Math.max(sourceLength + 1024, MIN_BUFFER_SIZE));\n columns = new SafeUint32Array(lines.length);\n }\n\n for (var i = start; i < sourceLength; i++) {\n var code = source.charCodeAt(i);\n\n lines[i] = line;\n columns[i] = column++;\n\n if (code === N || code === R || code === F) {\n if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {\n i++;\n lines[i] = line;\n columns[i] = column;\n }\n\n line++;\n column = 1;\n }\n }\n\n lines[i] = line;\n columns[i] = column;\n\n tokenizer.linesAnsColumnsComputed = true;\n tokenizer.lines = lines;\n tokenizer.columns = columns;\n}\n\nfunction tokenLayout(tokenizer, source, startPos) {\n var sourceLength = source.length;\n var offsetAndType = tokenizer.offsetAndType;\n var balance = tokenizer.balance;\n var tokenCount = 0;\n var prevType = 0;\n var offset = startPos;\n var anchor = 0;\n var balanceCloseCode = 0;\n var balanceStart = 0;\n var balancePrev = 0;\n\n if (offsetAndType === null || offsetAndType.length < sourceLength + 1) {\n offsetAndType = new SafeUint32Array(sourceLength + 1024);\n balance = new SafeUint32Array(sourceLength + 1024);\n }\n\n while (offset < sourceLength) {\n var code = source.charCodeAt(offset);\n var type = code < 0x80 ? SYMBOL_TYPE[code] : IDENTIFIER;\n\n balance[tokenCount] = sourceLength;\n\n switch (type) {\n case WHITESPACE:\n offset = findWhiteSpaceEnd(source, offset + 1);\n break;\n\n case PUNCTUATOR:\n switch (code) {\n case balanceCloseCode:\n balancePrev = balanceStart & OFFSET_MASK;\n balanceStart = balance[balancePrev];\n balanceCloseCode = balanceStart >> TYPE_SHIFT;\n balance[tokenCount] = balancePrev;\n balance[balancePrev++] = tokenCount;\n for (; balancePrev < tokenCount; balancePrev++) {\n if (balance[balancePrev] === sourceLength) {\n balance[balancePrev] = tokenCount;\n }\n }\n break;\n\n case LEFTSQUAREBRACKET:\n balance[tokenCount] = balanceStart;\n balanceCloseCode = RIGHTSQUAREBRACKET;\n balanceStart = (balanceCloseCode << TYPE_SHIFT) | tokenCount;\n break;\n\n case LEFTCURLYBRACKET:\n balance[tokenCount] = balanceStart;\n balanceCloseCode = RIGHTCURLYBRACKET;\n balanceStart = (balanceCloseCode << TYPE_SHIFT) | tokenCount;\n break;\n\n case LEFTPARENTHESIS:\n balance[tokenCount] = balanceStart;\n balanceCloseCode = RIGHTPARENTHESIS;\n balanceStart = (balanceCloseCode << TYPE_SHIFT) | tokenCount;\n break;\n }\n\n // /*\n if (code === STAR && prevType === SLASH) {\n type = COMMENT;\n offset = findCommentEnd(source, offset + 1);\n tokenCount--; // rewrite prev token\n break;\n }\n\n // edge case for -.123 and +.123\n if (code === FULLSTOP && (prevType === PLUSSIGN || prevType === HYPHENMINUS)) {\n if (offset + 1 < sourceLength && isNumber(source.charCodeAt(offset + 1))) {\n type = NUMBER;\n offset = findNumberEnd(source, offset + 2, false);\n tokenCount--; // rewrite prev token\n break;\n }\n }\n\n // <!--\n if (code === EXCLAMATIONMARK && prevType === LESSTHANSIGN) {\n if (offset + 2 < sourceLength &&\n source.charCodeAt(offset + 1) === HYPHENMINUS &&\n source.charCodeAt(offset + 2) === HYPHENMINUS) {\n type = CDO;\n offset = offset + 3;\n tokenCount--; // rewrite prev token\n break;\n }\n }\n\n // -->\n if (code === HYPHENMINUS && prevType === HYPHENMINUS) {\n if (offset + 1 < sourceLength && source.charCodeAt(offset + 1) === GREATERTHANSIGN) {\n type = CDC;\n offset = offset + 2;\n tokenCount--; // rewrite prev token\n break;\n }\n }\n\n // ident(\n if (code === LEFTPARENTHESIS && prevType === IDENTIFIER) {\n offset = offset + 1;\n tokenCount--; // rewrite prev token\n balance[tokenCount] = balance[tokenCount + 1];\n balanceStart--;\n\n // 4 char length identifier and equal to `url(` (case insensitive)\n if (offset - anchor === 4 && cmpStr(source, anchor, offset, 'url(')) {\n // special case for url() because it can contain any symbols sequence with few exceptions\n anchor = findWhiteSpaceEnd(source, offset);\n code = source.charCodeAt(anchor);\n if (code !== LEFTPARENTHESIS &&\n code !== RIGHTPARENTHESIS &&\n code !== QUOTATIONMARK &&\n code !== APOSTROPHE) {\n // url(\n offsetAndType[tokenCount++] = (URL << TYPE_SHIFT) | offset;\n balance[tokenCount] = sourceLength;\n\n // ws*\n if (anchor !== offset) {\n offsetAndType[tokenCount++] = (WHITESPACE << TYPE_SHIFT) | anchor;\n balance[tokenCount] = sourceLength;\n }\n\n // raw\n type = RAW;\n offset = findUrlRawEnd(source, anchor);\n } else {\n type = URL;\n }\n } else {\n type = FUNCTION;\n }\n break;\n }\n\n type = code;\n offset = offset + 1;\n break;\n\n case NUMBER:\n offset = findNumberEnd(source, offset + 1, prevType !== FULLSTOP);\n\n // merge number with a preceding dot, dash or plus\n if (prevType === FULLSTOP ||\n prevType === HYPHENMINUS ||\n prevType === PLUSSIGN) {\n tokenCount--; // rewrite prev token\n }\n\n break;\n\n case STRING:\n offset = findStringEnd(source, offset + 1, code);\n break;\n\n default:\n anchor = offset;\n offset = findIdentifierEnd(source, offset);\n\n // merge identifier with a preceding dash\n if (prevType === HYPHENMINUS) {\n // rewrite prev token\n tokenCount--;\n // restore prev prev token type\n // for case @-prefix-ident\n prevType = tokenCount === 0 ? 0 : offsetAndType[tokenCount - 1] >> TYPE_SHIFT;\n }\n\n if (prevType === COMMERCIALAT) {\n // rewrite prev token and change type to <at-keyword-token>\n tokenCount--;\n type = ATRULE;\n }\n }\n\n offsetAndType[tokenCount++] = (type << TYPE_SHIFT) | offset;\n prevType = type;\n }\n\n // finalize arrays\n offsetAndType[tokenCount] = offset;\n balance[tokenCount] = sourceLength;\n while (balanceStart !== 0) {\n balancePrev = balanceStart & OFFSET_MASK;\n balanceStart = balance[balancePrev];\n balance[balancePrev] = sourceLength;\n }\n\n tokenizer.offsetAndType = offsetAndType;\n tokenizer.tokenCount = tokenCount;\n tokenizer.balance = balance;\n}\n\n//\n// tokenizer\n//\n\nvar Tokenizer = function(source, startOffset, startLine, startColumn) {\n this.offsetAndType = null;\n this.balance = null;\n this.lines = null;\n this.columns = null;\n\n this.setSource(source, startOffset, startLine, startColumn);\n};\n\nTokenizer.prototype = {\n setSource: function(source, startOffset, startLine, startColumn) {\n var safeSource = String(source || '');\n var start = firstCharOffset(safeSource);\n\n this.source = safeSource;\n this.firstCharOffset = start;\n this.startOffset = typeof startOffset === 'undefined' ? 0 : startOffset;\n this.startLine = typeof startLine === 'undefined' ? 1 : startLine;\n this.startColumn = typeof startColumn === 'undefined' ? 1 : startColumn;\n this.linesAnsColumnsComputed = false;\n\n this.eof = false;\n this.currentToken = -1;\n this.tokenType = 0;\n this.tokenStart = start;\n this.tokenEnd = start;\n\n tokenLayout(this, safeSource, start);\n this.next();\n },\n\n lookupType: function(offset) {\n offset += this.currentToken;\n\n if (offset < this.tokenCount) {\n return this.offsetAndType[offset] >> TYPE_SHIFT;\n }\n\n return NULL;\n },\n lookupNonWSType: function(offset) {\n offset += this.currentToken;\n\n for (var type; offset < this.tokenCount; offset++) {\n type = this.offsetAndType[offset] >> TYPE_SHIFT;\n\n if (type !== WHITESPACE) {\n return type;\n }\n }\n\n return NULL;\n },\n lookupValue: function(offset, referenceStr) {\n offset += this.currentToken;\n\n if (offset < this.tokenCount) {\n return cmpStr(\n this.source,\n this.offsetAndType[offset - 1] & OFFSET_MASK,\n this.offsetAndType[offset] & OFFSET_MASK,\n referenceStr\n );\n }\n\n return false;\n },\n getTokenStart: function(tokenNum) {\n if (tokenNum === this.currentToken) {\n return this.tokenStart;\n }\n\n if (tokenNum > 0) {\n return tokenNum < this.tokenCount\n ? this.offsetAndType[tokenNum - 1] & OFFSET_MASK\n : this.offsetAndType[this.tokenCount] & OFFSET_MASK;\n }\n\n return this.firstCharOffset;\n },\n getOffsetExcludeWS: function() {\n if (this.currentToken > 0) {\n if ((this.offsetAndType[this.currentToken - 1] >> TYPE_SHIFT) === WHITESPACE) {\n return this.currentToken > 1\n ? this.offsetAndType[this.currentToken - 2] & OFFSET_MASK\n : this.firstCharOffset;\n }\n }\n return this.tokenStart;\n },\n getRawLength: function(startToken, endTokenType1, endTokenType2, includeTokenType2) {\n var cursor = startToken;\n var balanceEnd;\n\n loop:\n for (; cursor < this.tokenCount; cursor++) {\n balanceEnd = this.balance[cursor];\n\n // belance end points to offset before start\n if (balanceEnd < startToken) {\n break loop;\n }\n\n // check token is stop type\n switch (this.offsetAndType[cursor] >> TYPE_SHIFT) {\n case endTokenType1:\n break loop;\n\n case endTokenType2:\n if (includeTokenType2) {\n cursor++;\n }\n break loop;\n\n default:\n // fast forward to the end of balanced block\n if (this.balance[balanceEnd] === cursor) {\n cursor = balanceEnd;\n }\n }\n\n }\n\n return cursor - this.currentToken;\n },\n\n getTokenValue: function() {\n return this.source.substring(this.tokenStart, this.tokenEnd);\n },\n substrToCursor: function(start) {\n return this.source.substring(start, this.tokenStart);\n },\n\n skipWS: function() {\n for (var i = this.currentToken, skipTokenCount = 0; i < this.tokenCount; i++, skipTokenCount++) {\n if ((this.offsetAndType[i] >> TYPE_SHIFT) !== WHITESPACE) {\n break;\n }\n }\n\n if (skipTokenCount > 0) {\n this.skip(skipTokenCount);\n }\n },\n skipSC: function() {\n while (this.tokenType === WHITESPACE || this.tokenType === COMMENT) {\n this.next();\n }\n },\n skip: function(tokenCount) {\n var next = this.currentToken + tokenCount;\n\n if (next < this.tokenCount) {\n this.currentToken = next;\n this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_SHIFT;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.currentToken = this.tokenCount;\n this.next();\n }\n },\n next: function() {\n var next = this.currentToken + 1;\n\n if (next < this.tokenCount) {\n this.currentToken = next;\n this.tokenStart = this.tokenEnd;\n next = this.offsetAndType[next];\n this.tokenType = next >> TYPE_SHIFT;\n this.tokenEnd = next & OFFSET_MASK;\n } else {\n this.currentToken = this.tokenCount;\n this.eof = true;\n this.tokenType = NULL;\n this.tokenStart = this.tokenEnd = this.source.length;\n }\n },\n\n eat: function(tokenType) {\n if (this.tokenType !== tokenType) {\n var offset = this.tokenStart;\n var message = NAME[tokenType] + ' is expected';\n\n // tweak message and offset\n if (tokenType === IDENTIFIER) {\n // when identifier is expected but there is a function or url\n if (this.tokenType === FUNCTION || this.tokenType === URL) {\n offset = this.tokenEnd - 1;\n message += ' but function found';\n }\n } else {\n // when test type is part of another token show error for current position + 1\n // e.g. eat(HYPHENMINUS) will fail on \"-foo\", but pointing on \"-\" is odd\n if (this.source.charCodeAt(this.tokenStart) === tokenType) {\n offset = offset + 1;\n }\n }\n\n this.error(message, offset);\n }\n\n this.next();\n },\n eatNonWS: function(tokenType) {\n this.skipWS();\n this.eat(tokenType);\n },\n\n consume: function(tokenType) {\n var value = this.getTokenValue();\n\n this.eat(tokenType);\n\n return value;\n },\n consumeFunctionName: function() {\n var name = this.source.substring(this.tokenStart, this.tokenEnd - 1);\n\n this.eat(FUNCTION);\n\n return name;\n },\n consumeNonWS: function(tokenType) {\n this.skipWS();\n\n return this.consume(tokenType);\n },\n\n expectIdentifier: function(name) {\n if (this.tokenType !== IDENTIFIER || cmpStr(this.source, this.tokenStart, this.tokenEnd, name) === false) {\n this.error('Identifier `' + name + '` is expected');\n }\n\n this.next();\n },\n\n getLocation: function(offset, filename) {\n if (!this.linesAnsColumnsComputed) {\n computeLinesAndColumns(this, this.source);\n }\n\n return {\n source: filename,\n offset: this.startOffset + offset,\n line: this.lines[offset],\n column: this.columns[offset]\n };\n },\n\n getLocationRange: function(start, end, filename) {\n if (!this.linesAnsColumnsComputed) {\n computeLinesAndColumns(this, this.source);\n }\n\n return {\n source: filename,\n start: {\n offset: this.startOffset + start,\n line: this.lines[start],\n column: this.columns[start]\n },\n end: {\n offset: this.startOffset + end,\n line: this.lines[end],\n column: this.columns[end]\n }\n };\n },\n\n error: function(message, offset) {\n var location = typeof offset !== 'undefined' && offset < this.source.length\n ? this.getLocation(offset)\n : this.eof\n ? findLastNonSpaceLocation(this)\n : this.getLocation(this.tokenStart);\n\n throw new CssSyntaxError(\n message || 'Unexpected input',\n this.source,\n location.offset,\n location.line,\n location.column\n );\n },\n\n dump: function() {\n var offset = 0;\n\n return Array.prototype.slice.call(this.offsetAndType, 0, this.tokenCount).map(function(item, idx) {\n var start = offset;\n var end = item & OFFSET_MASK;\n\n offset = end;\n\n return {\n idx: idx,\n type: NAME[item >> TYPE_SHIFT],\n chunk: this.source.substring(start, end),\n balance: this.balance[idx]\n };\n }, this);\n }\n};\n\n// extend with error class\nTokenizer.CssSyntaxError = CssSyntaxError;\n\n// extend tokenizer with constants\nObject.keys(constants).forEach(function(key) {\n Tokenizer[key] = constants[key];\n});\n\n// extend tokenizer with static methods from utils\nObject.keys(utils).forEach(function(key) {\n Tokenizer[key] = utils[key];\n});\n\n// warm up tokenizer to elimitate code branches that never execute\n// fix soft deoptimizations (insufficient type feedback)\nnew Tokenizer('\\n\\r\\r\\n\\f<!---->//\"\"\\'\\'/*\\r\\n\\f*/1a;.\\\\31\\t\\+2{url(a);func();+1.2e3 -.4e-5 .6e+7}').getLocation();\n\nmodule.exports = Tokenizer;\n","module.exports = require('./Tokenizer');\n","'use strict';\n\n//\n// item item item item\n// /------\\ /------\\ /------\\ /------\\\n// | data | | data | | data | | data |\n// null <--+-prev |<---+-prev |<---+-prev |<---+-prev |\n// | next-+--->| next-+--->| next-+--->| next-+--> null\n// \\------/ \\------/ \\------/ \\------/\n// ^ ^\n// | list |\n// | /------\\ |\n// \\--------------+-head | |\n// | tail-+--------------/\n// \\------/\n//\n\nfunction createItem(data) {\n return {\n prev: null,\n next: null,\n data: data\n };\n}\n\nvar cursors = null;\nvar List = function() {\n this.cursor = null;\n this.head = null;\n this.tail = null;\n};\n\nList.createItem = createItem;\nList.prototype.createItem = createItem;\n\nList.prototype.getSize = function() {\n var size = 0;\n var cursor = this.head;\n\n while (cursor) {\n size++;\n cursor = cursor.next;\n }\n\n return size;\n};\n\nList.prototype.fromArray = function(array) {\n var cursor = null;\n\n this.head = null;\n\n for (var i = 0; i < array.length; i++) {\n var item = createItem(array[i]);\n\n if (cursor !== null) {\n cursor.next = item;\n } else {\n this.head = item;\n }\n\n item.prev = cursor;\n cursor = item;\n }\n\n this.tail = cursor;\n\n return this;\n};\n\nList.prototype.toArray = function() {\n var cursor = this.head;\n var result = [];\n\n while (cursor) {\n result.push(cursor.data);\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.toJSON = List.prototype.toArray;\n\nList.prototype.isEmpty = function() {\n return this.head === null;\n};\n\nList.prototype.first = function() {\n return this.head && this.head.data;\n};\n\nList.prototype.last = function() {\n return this.tail && this.tail.data;\n};\n\nfunction allocateCursor(node, prev, next) {\n var cursor;\n\n if (cursors !== null) {\n cursor = cursors;\n cursors = cursors.cursor;\n cursor.prev = prev;\n cursor.next = next;\n cursor.cursor = node.cursor;\n } else {\n cursor = {\n prev: prev,\n next: next,\n cursor: node.cursor\n };\n }\n\n node.cursor = cursor;\n\n return cursor;\n}\n\nfunction releaseCursor(node) {\n var cursor = node.cursor;\n\n node.cursor = cursor.cursor;\n cursor.prev = null;\n cursor.next = null;\n cursor.cursor = cursors;\n cursors = cursor;\n}\n\nList.prototype.each = function(fn, context) {\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, null, this.head);\n\n while (cursor.next !== null) {\n item = cursor.next;\n cursor.next = item.next;\n\n fn.call(context, item.data, item, this);\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.eachRight = function(fn, context) {\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, this.tail, null);\n\n while (cursor.prev !== null) {\n item = cursor.prev;\n cursor.prev = item.prev;\n\n fn.call(context, item.data, item, this);\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.nextUntil = function(start, fn, context) {\n if (start === null) {\n return;\n }\n\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, null, start);\n\n while (cursor.next !== null) {\n item = cursor.next;\n cursor.next = item.next;\n\n if (fn.call(context, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.prevUntil = function(start, fn, context) {\n if (start === null) {\n return;\n }\n\n var item;\n\n if (context === undefined) {\n context = this;\n }\n\n // push cursor\n var cursor = allocateCursor(this, start, null);\n\n while (cursor.prev !== null) {\n item = cursor.prev;\n cursor.prev = item.prev;\n\n if (fn.call(context, item.data, item, this)) {\n break;\n }\n }\n\n // pop cursor\n releaseCursor(this);\n};\n\nList.prototype.some = function(fn, context) {\n var cursor = this.head;\n\n if (context === undefined) {\n context = this;\n }\n\n while (cursor !== null) {\n if (fn.call(context, cursor.data, cursor, this)) {\n return true;\n }\n\n cursor = cursor.next;\n }\n\n return false;\n};\n\nList.prototype.map = function(fn, context) {\n var result = [];\n var cursor = this.head;\n\n if (context === undefined) {\n context = this;\n }\n\n while (cursor !== null) {\n result.push(fn.call(context, cursor.data, cursor, this));\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.clear = function() {\n this.head = null;\n this.tail = null;\n};\n\nList.prototype.copy = function() {\n var result = new List();\n var cursor = this.head;\n\n while (cursor !== null) {\n result.insert(createItem(cursor.data));\n cursor = cursor.next;\n }\n\n return result;\n};\n\nList.prototype.updateCursors = function(prevOld, prevNew, nextOld, nextNew) {\n var cursor = this.cursor;\n\n while (cursor !== null) {\n if (cursor.prev === prevOld) {\n cursor.prev = prevNew;\n }\n\n if (cursor.next === nextOld) {\n cursor.next = nextNew;\n }\n\n cursor = cursor.cursor;\n }\n};\n\nList.prototype.prepend = function(item) {\n // head\n // ^\n // item\n this.updateCursors(null, item, this.head, item);\n\n // insert to the beginning of the list\n if (this.head !== null) {\n // new item <- first item\n this.head.prev = item;\n\n // new item -> first item\n item.next = this.head;\n } else {\n // if list has no head, then it also has no tail\n // in this case tail points to the new item\n this.tail = item;\n }\n\n // head always points to new item\n this.head = item;\n\n return this;\n};\n\nList.prototype.prependData = function(data) {\n return this.prepend(createItem(data));\n};\n\nList.prototype.append = function(item) {\n // tail\n // ^\n // item\n this.updateCursors(this.tail, item, null, item);\n\n // insert to the ending of the list\n if (this.tail !== null) {\n // last item -> new item\n this.tail.next = item;\n\n // last item <- new item\n item.prev = this.tail;\n } else {\n // if list has no tail, then it also has no head\n // in this case head points to new item\n this.head = item;\n }\n\n // tail always points to new item\n this.tail = item;\n\n return this;\n};\n\nList.prototype.appendData = function(data) {\n return this.append(createItem(data));\n};\n\nList.prototype.insert = function(item, before) {\n if (before !== undefined && before !== null) {\n // prev before\n // ^\n // item\n this.updateCursors(before.prev, item, before, item);\n\n if (before.prev === null) {\n // insert to the beginning of list\n if (this.head !== before) {\n throw new Error('before doesn\\'t belong to list');\n }\n\n // since head points to before therefore list doesn't empty\n // no need to check tail\n this.head = item;\n before.prev = item;\n item.next = before;\n\n this.updateCursors(null, item);\n } else {\n\n // insert between two items\n before.prev.next = item;\n item.prev = before.prev;\n\n before.prev = item;\n item.next = before;\n }\n } else {\n this.append(item);\n }\n};\n\nList.prototype.insertData = function(data, before) {\n this.insert(createItem(data), before);\n};\n\nList.prototype.remove = function(item) {\n // item\n // ^\n // prev next\n this.updateCursors(item, item.prev, item, item.next);\n\n if (item.prev !== null) {\n item.prev.next = item.next;\n } else {\n if (this.head !== item) {\n throw new Error('item doesn\\'t belong to list');\n }\n\n this.head = item.next;\n }\n\n if (item.next !== null) {\n item.next.prev = item.prev;\n } else {\n if (this.tail !== item) {\n throw new Error('item doesn\\'t belong to list');\n }\n\n this.tail = item.prev;\n }\n\n item.prev = null;\n item.next = null;\n\n return item;\n};\n\nList.prototype.appendList = function(list) {\n // ignore empty lists\n if (list.head === null) {\n return;\n }\n\n this.updateCursors(this.tail, list.tail, null, list.head);\n\n // insert to end of the list\n if (this.tail !== null) {\n // if destination list has a tail, then it also has a head,\n // but head doesn't change\n\n // dest tail -> source head\n this.tail.next = list.head;\n\n // dest tail <- source head\n list.head.prev = this.tail;\n } else {\n // if list has no a tail, then it also has no a head\n // in this case points head to new item\n this.head = list.head;\n }\n\n // tail always start point to new item\n this.tail = list.tail;\n\n list.head = null;\n list.tail = null;\n};\n\nList.prototype.insertList = function(list, before) {\n if (before !== undefined && before !== null) {\n // ignore empty lists\n if (list.head === null) {\n return;\n }\n\n this.updateCursors(before.prev, list.tail, before, list.head);\n\n // insert in the middle of dist list\n if (before.prev !== null) {\n // before.prev <-> list.head\n before.prev.next = list.head;\n list.head.prev = before.prev;\n } else {\n this.head = list.head;\n }\n\n before.prev = list.tail;\n list.tail.next = before;\n\n list.head = null;\n list.tail = null;\n } else {\n this.appendList(list);\n }\n};\n\nList.prototype.replace = function(oldItem, newItemOrList) {\n if ('head' in newItemOrList) {\n this.insertList(newItemOrList, oldItem);\n } else {\n this.insert(newItemOrList, oldItem);\n }\n this.remove(oldItem);\n};\n\nmodule.exports = List;\n","var List = require('../utils/list');\nvar TYPE = require('../tokenizer').TYPE;\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\n\nmodule.exports = function readSequence(recognizer) {\n var children = new List();\n var child = null;\n var context = {\n recognizer: recognizer,\n space: null,\n ignoreWS: false,\n ignoreWSAfter: false\n };\n\n this.scanner.skipSC();\n\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case COMMENT:\n this.scanner.next();\n continue;\n\n case WHITESPACE:\n if (context.ignoreWS) {\n this.scanner.next();\n } else {\n context.space = this.WhiteSpace();\n }\n continue;\n }\n\n child = recognizer.getNode.call(this, context);\n\n if (child === undefined) {\n break;\n }\n\n if (context.space !== null) {\n children.appendData(context.space);\n context.space = null;\n }\n\n children.appendData(child);\n\n if (context.ignoreWSAfter) {\n context.ignoreWSAfter = false;\n context.ignoreWS = true;\n } else {\n context.ignoreWS = false;\n }\n }\n\n return children;\n};\n","'use strict';\n\nvar Tokenizer = require('../tokenizer');\nvar sequence = require('./sequence');\nvar noop = function() {};\n\nfunction createParseContext(name) {\n return function() {\n return this[name]();\n };\n}\n\nfunction processConfig(config) {\n var parserConfig = {\n context: {},\n scope: {},\n atrule: {},\n pseudo: {}\n };\n\n if (config.parseContext) {\n for (var name in config.parseContext) {\n switch (typeof config.parseContext[name]) {\n case 'function':\n parserConfig.context[name] = config.parseContext[name];\n break;\n\n case 'string':\n parserConfig.context[name] = createParseContext(config.parseContext[name]);\n break;\n }\n }\n }\n\n if (config.scope) {\n for (var name in config.scope) {\n parserConfig.scope[name] = config.scope[name];\n }\n }\n\n if (config.atrule) {\n for (var name in config.atrule) {\n var atrule = config.atrule[name];\n\n if (atrule.parse) {\n parserConfig.atrule[name] = atrule.parse;\n }\n }\n }\n\n if (config.pseudo) {\n for (var name in config.pseudo) {\n var pseudo = config.pseudo[name];\n\n if (pseudo.parse) {\n parserConfig.pseudo[name] = pseudo.parse;\n }\n }\n }\n\n if (config.node) {\n for (var name in config.node) {\n parserConfig[name] = config.node[name].parse;\n }\n }\n\n return parserConfig;\n}\n\nmodule.exports = function createParser(config) {\n var parser = {\n scanner: new Tokenizer(),\n filename: '<unknown>',\n needPositions: false,\n tolerant: false,\n onParseError: noop,\n parseAtruleExpression: true,\n parseSelector: true,\n parseValue: true,\n parseCustomProperty: false,\n\n readSequence: sequence,\n\n tolerantParse: function(consumer, fallback) {\n if (this.tolerant) {\n var start = this.scanner.currentToken;\n\n try {\n return consumer.call(this);\n } catch (e) {\n this.onParseError(e);\n return fallback.call(this, start);\n }\n } else {\n return consumer.call(this);\n }\n },\n\n getLocation: function(start, end) {\n if (this.needPositions) {\n return this.scanner.getLocationRange(\n start,\n end,\n this.filename\n );\n }\n\n return null;\n },\n getLocationFromList: function(list) {\n if (this.needPositions) {\n return this.scanner.getLocationRange(\n list.head !== null ? list.first().loc.start.offset - this.scanner.startOffset : this.scanner.tokenStart,\n list.head !== null ? list.last().loc.end.offset - this.scanner.startOffset : this.scanner.tokenStart,\n this.filename\n );\n }\n\n return null;\n }\n };\n\n config = processConfig(config || {});\n for (var key in config) {\n parser[key] = config[key];\n }\n\n return function(source, options) {\n options = options || {};\n\n var context = options.context || 'default';\n var ast;\n\n parser.scanner.setSource(source, options.offset, options.line, options.column);\n parser.filename = options.filename || '<unknown>';\n parser.needPositions = Boolean(options.positions);\n parser.tolerant = Boolean(options.tolerant);\n parser.onParseError = typeof options.onParseError === 'function' ? options.onParseError : noop;\n parser.parseAtruleExpression = 'parseAtruleExpression' in options ? Boolean(options.parseAtruleExpression) : true;\n parser.parseSelector = 'parseSelector' in options ? Boolean(options.parseSelector) : true;\n parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true;\n parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false;\n\n if (!parser.context.hasOwnProperty(context)) {\n throw new Error('Unknown context `' + context + '`');\n }\n\n ast = parser.context[context].call(parser, options);\n\n if (!parser.scanner.eof) {\n parser.scanner.error();\n }\n\n // console.log(JSON.stringify(ast, null, 4));\n return ast;\n };\n};\n","var cmpChar = require('../../tokenizer').cmpChar;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar STRING = TYPE.String;\nvar NUMBER = TYPE.Number;\nvar FUNCTION = TYPE.Function;\nvar URL = TYPE.Url;\nvar NUMBERSIGN = TYPE.NumberSign;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar COMMA = TYPE.Comma;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar PERCENTSIGN = TYPE.PercentSign;\nvar BACKSLASH = TYPE.Backslash;\nvar U = 117; // 'u'.charCodeAt(0)\n\nmodule.exports = function defaultRecognizer(context) {\n switch (this.scanner.tokenType) {\n case NUMBERSIGN:\n return this.HexColor();\n\n case COMMA:\n context.space = null;\n context.ignoreWSAfter = true;\n return this.Operator();\n\n case SOLIDUS:\n case ASTERISK:\n case PLUSSIGN:\n case HYPHENMINUS:\n return this.Operator();\n\n case LEFTPARENTHESIS:\n return this.Parentheses(this.readSequence, context.recognizer);\n\n case LEFTSQUAREBRACKET:\n return this.Brackets(this.readSequence, context.recognizer);\n\n case STRING:\n return this.String();\n\n case NUMBER:\n switch (this.scanner.lookupType(1)) {\n case PERCENTSIGN:\n return this.Percentage();\n\n case IDENTIFIER:\n // edge case: number with folowing \\0 and \\9 hack shouldn't to be a Dimension\n if (cmpChar(this.scanner.source, this.scanner.tokenEnd, BACKSLASH)) {\n return this.Number();\n } else {\n return this.Dimension();\n }\n\n default:\n return this.Number();\n }\n\n case FUNCTION:\n return this.Function(this.readSequence, context.recognizer);\n\n case URL:\n return this.Url();\n\n case IDENTIFIER:\n // check for unicode range, it should start with u+ or U+\n if (cmpChar(this.scanner.source, this.scanner.tokenStart, U) &&\n cmpChar(this.scanner.source, this.scanner.tokenStart + 1, PLUSSIGN)) {\n return this.UnicodeRange();\n } else {\n return this.Identifier();\n }\n }\n};\n","module.exports = {\n getNode: require('./default')\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar NUMBERSIGN = TYPE.NumberSign;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar PLUSSIGN = TYPE.PlusSign;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar FULLSTOP = TYPE.FullStop;\nvar COLON = TYPE.Colon;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar VERTICALLINE = TYPE.VerticalLine;\nvar TILDE = TYPE.Tilde;\n\nfunction getNode(context) {\n switch (this.scanner.tokenType) {\n case PLUSSIGN:\n case GREATERTHANSIGN:\n case TILDE:\n context.space = null;\n context.ignoreWSAfter = true;\n return this.Combinator();\n\n case SOLIDUS: // /deep/\n return this.Combinator();\n\n case FULLSTOP:\n return this.ClassSelector();\n\n case LEFTSQUAREBRACKET:\n return this.AttributeSelector();\n\n case NUMBERSIGN:\n return this.IdSelector();\n\n case COLON:\n if (this.scanner.lookupType(1) === COLON) {\n return this.PseudoElementSelector();\n } else {\n return this.PseudoClassSelector();\n }\n\n case IDENTIFIER:\n case ASTERISK:\n case VERTICALLINE:\n return this.TypeSelector();\n\n case NUMBER:\n return this.Percentage();\n }\n};\n\nmodule.exports = {\n getNode: getNode\n};\n","var List = require('../../utils/list');\n\n// https://drafts.csswg.org/css-images-4/#element-notation\n// https://developer.mozilla.org/en-US/docs/Web/CSS/element\nmodule.exports = function() {\n this.scanner.skipSC();\n\n var id = this.IdSelector();\n\n this.scanner.skipSC();\n\n return new List().appendData(\n id\n );\n};\n","var List = require('../../utils/list');\n\n// legacy IE function\n// expression '(' raw ')'\nmodule.exports = function() {\n return new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COMMA = TYPE.Comma;\nvar SEMICOLON = TYPE.Semicolon;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\n\n// var '(' ident (',' <value>? )? ')'\nmodule.exports = function() {\n var children = new List();\n\n this.scanner.skipSC();\n\n var identStart = this.scanner.tokenStart;\n\n this.scanner.eat(HYPHENMINUS);\n if (this.scanner.source.charCodeAt(this.scanner.tokenStart) !== HYPHENMINUS) {\n this.scanner.error('HyphenMinus is expected');\n }\n this.scanner.eat(IDENTIFIER);\n\n children.appendData({\n type: 'Identifier',\n loc: this.getLocation(identStart, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(identStart)\n });\n\n this.scanner.skipSC();\n\n if (this.scanner.tokenType === COMMA) {\n children.appendData(this.Operator());\n children.appendData(this.parseCustomProperty\n ? this.Value(null)\n : this.Raw(this.scanner.currentToken, EXCLAMATIONMARK, SEMICOLON, false, false)\n );\n }\n\n return children;\n};\n","module.exports = {\n getNode: require('./default'),\n '-moz-element': require('../function/element'),\n 'element': require('../function/element'),\n 'expression': require('../function/expression'),\n 'var': require('../function/var')\n};\n","module.exports = {\n AtruleExpression: require('./atruleExpression'),\n Selector: require('./selector'),\n Value: require('./value')\n};\n","module.exports = {\n parse: {\n expression: null,\n block: function() {\n return this.Block(this.Declaration);\n }\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar STRING = TYPE.String;\nvar IDENTIFIER = TYPE.Identifier;\nvar URL = TYPE.Url;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\n\nmodule.exports = {\n parse: {\n expression: function() {\n var children = new List();\n\n this.scanner.skipSC();\n\n switch (this.scanner.tokenType) {\n case STRING:\n children.appendData(this.String());\n break;\n\n case URL:\n children.appendData(this.Url());\n break;\n\n default:\n this.scanner.error('String or url() is expected');\n }\n\n if (this.scanner.lookupNonWSType(0) === IDENTIFIER ||\n this.scanner.lookupNonWSType(0) === LEFTPARENTHESIS) {\n children.appendData(this.WhiteSpace());\n children.appendData(this.MediaQueryList());\n }\n\n return children;\n },\n block: null\n }\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: {\n expression: function() {\n return new List().appendData(\n this.MediaQueryList()\n );\n },\n block: function() {\n return this.Block(this.Rule);\n }\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nmodule.exports = {\n parse: {\n expression: function() {\n if (this.scanner.lookupNonWSType(0) === LEFTCURLYBRACKET) {\n return null;\n }\n\n return new List().appendData(\n this.SelectorList()\n );\n },\n block: function() {\n return this.Block(this.Declaration);\n }\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar IDENTIFIER = TYPE.Identifier;\nvar FUNCTION = TYPE.Function;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar COLON = TYPE.Colon;\n\nfunction consumeRaw() {\n return new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n}\n\nfunction parentheses() {\n var index = 0;\n\n this.scanner.skipSC();\n\n // TODO: make it simplier\n if (this.scanner.tokenType === IDENTIFIER) {\n index = 1;\n } else if (this.scanner.tokenType === HYPHENMINUS &&\n this.scanner.lookupType(1) === IDENTIFIER) {\n index = 2;\n }\n\n if (index !== 0 && this.scanner.lookupNonWSType(index) === COLON) {\n return new List().appendData(\n this.Declaration()\n );\n }\n\n return readSequence.call(this);\n}\n\nfunction readSequence() {\n var children = new List();\n var space = null;\n var child;\n\n this.scanner.skipSC();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n space = this.WhiteSpace();\n continue;\n\n case COMMENT:\n this.scanner.next();\n continue;\n\n case FUNCTION:\n child = this.Function(consumeRaw, this.scope.AtruleExpression);\n break;\n\n case IDENTIFIER:\n child = this.Identifier();\n break;\n\n case LEFTPARENTHESIS:\n child = this.Parentheses(parentheses, this.scope.AtruleExpression);\n break;\n\n default:\n break scan;\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n }\n\n return children;\n}\n\nmodule.exports = {\n parse: {\n expression: function() {\n var children = readSequence.call(this);\n\n if (children.isEmpty()) {\n this.scanner.error('Condition is expected');\n }\n\n return children;\n },\n block: function() {\n return this.Block(this.Rule);\n }\n }\n};\n","module.exports = {\n 'font-face': require('./font-face'),\n 'import': require('./import'),\n 'media': require('./media'),\n 'page': require('./page'),\n 'supports': require('./supports')\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.Identifier()\n );\n }\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.SelectorList()\n );\n }\n};\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.Identifier()\n );\n }\n};\n","var List = require('../../../utils/list');\n\nmodule.exports = {\n parse: function selectorList() {\n return new List().appendData(\n this.SelectorList()\n );\n }\n};\n","module.exports = require('./common/selectorList');\n","module.exports = require('./common/selectorList');\n","var List = require('../../../utils/list');\nvar ALLOW_OF_CLAUSE = true;\n\nmodule.exports = {\n parse: function() {\n return new List().appendData(\n this.Nth(ALLOW_OF_CLAUSE)\n );\n }\n};\n","module.exports = require('./common/nthWithOfClause');\n","module.exports = require('./common/nthWithOfClause');\n","var List = require('../../../utils/list');\nvar DISALLOW_OF_CLAUSE = false;\n\nmodule.exports = {\n parse: function nth() {\n return new List().appendData(\n this.Nth(DISALLOW_OF_CLAUSE)\n );\n }\n};\n","module.exports = require('./common/nth');\n","module.exports = require('./common/nth');\n","var List = require('../../utils/list');\n\nmodule.exports = {\n parse: function compoundSelector() {\n return new List().appendData(\n this.Selector()\n );\n }\n};\n","module.exports = {\n 'dir': require('./dir'),\n 'has': require('./has'),\n 'lang': require('./lang'),\n 'matches': require('./matches'),\n 'not': require('./not'),\n 'nth-child': require('./nth-child'),\n 'nth-last-child': require('./nth-last-child'),\n 'nth-last-of-type': require('./nth-last-of-type'),\n 'nth-of-type': require('./nth-of-type'),\n 'slotted': require('./slotted')\n};\n","var cmpChar = require('../../tokenizer').cmpChar;\nvar isNumber = require('../../tokenizer').isNumber;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar N = 110; // 'n'.charCodeAt(0)\nvar DISALLOW_SIGN = true;\nvar ALLOW_SIGN = false;\n\nfunction checkTokenIsInteger(scanner, disallowSign) {\n var pos = scanner.tokenStart;\n\n if (scanner.source.charCodeAt(pos) === PLUSSIGN ||\n scanner.source.charCodeAt(pos) === HYPHENMINUS) {\n if (disallowSign) {\n scanner.error();\n }\n pos++;\n }\n\n for (; pos < scanner.tokenEnd; pos++) {\n if (!isNumber(scanner.source.charCodeAt(pos))) {\n scanner.error('Unexpected input', pos);\n }\n }\n}\n\n// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb\nmodule.exports = {\n name: 'AnPlusB',\n structure: {\n a: [String, null],\n b: [String, null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var end = start;\n var prefix = '';\n var a = null;\n var b = null;\n\n if (this.scanner.tokenType === NUMBER ||\n this.scanner.tokenType === PLUSSIGN) {\n checkTokenIsInteger(this.scanner, ALLOW_SIGN);\n prefix = this.scanner.getTokenValue();\n this.scanner.next();\n end = this.scanner.tokenStart;\n }\n\n if (this.scanner.tokenType === IDENTIFIER) {\n var bStart = this.scanner.tokenStart;\n\n if (cmpChar(this.scanner.source, bStart, HYPHENMINUS)) {\n if (prefix === '') {\n prefix = '-';\n bStart++;\n } else {\n this.scanner.error('Unexpected hyphen minus');\n }\n }\n\n if (!cmpChar(this.scanner.source, bStart, N)) {\n this.scanner.error();\n }\n\n a = prefix === '' ? '1' :\n prefix === '+' ? '+1' :\n prefix === '-' ? '-1' :\n prefix;\n\n var len = this.scanner.tokenEnd - bStart;\n if (len > 1) {\n // ..n-..\n if (this.scanner.source.charCodeAt(bStart + 1) !== HYPHENMINUS) {\n this.scanner.error('Unexpected input', bStart + 1);\n }\n\n if (len > 2) {\n // ..n-{number}..\n this.scanner.tokenStart = bStart + 2;\n } else {\n // ..n- {number}\n this.scanner.next();\n this.scanner.skipSC();\n }\n\n checkTokenIsInteger(this.scanner, DISALLOW_SIGN);\n b = '-' + this.scanner.getTokenValue();\n this.scanner.next();\n end = this.scanner.tokenStart;\n } else {\n prefix = '';\n this.scanner.next();\n end = this.scanner.tokenStart;\n this.scanner.skipSC();\n\n if (this.scanner.tokenType === HYPHENMINUS ||\n this.scanner.tokenType === PLUSSIGN) {\n prefix = this.scanner.getTokenValue();\n this.scanner.next();\n this.scanner.skipSC();\n }\n\n if (this.scanner.tokenType === NUMBER) {\n checkTokenIsInteger(this.scanner, prefix !== '');\n\n if (!isNumber(this.scanner.source.charCodeAt(this.scanner.tokenStart))) {\n prefix = this.scanner.source.charAt(this.scanner.tokenStart);\n this.scanner.tokenStart++;\n }\n\n if (prefix === '') {\n // should be an operator before number\n this.scanner.error();\n } else if (prefix === '+') {\n // plus is using by default\n prefix = '';\n }\n\n b = prefix + this.scanner.getTokenValue();\n\n this.scanner.next();\n end = this.scanner.tokenStart;\n } else {\n if (prefix) {\n this.scanner.eat(NUMBER);\n }\n }\n }\n } else {\n if (prefix === '' || prefix === '+') { // no number\n this.scanner.error(\n 'Number or identifier is expected',\n this.scanner.tokenStart + (\n this.scanner.tokenType === PLUSSIGN ||\n this.scanner.tokenType === HYPHENMINUS\n )\n );\n }\n\n b = prefix;\n }\n\n return {\n type: 'AnPlusB',\n loc: this.getLocation(start, end),\n a: a,\n b: b\n };\n },\n generate: function(processChunk, node) {\n var a = node.a !== null && node.a !== undefined;\n var b = node.b !== null && node.b !== undefined;\n\n if (a) {\n processChunk(\n node.a === '+1' ? '+n' :\n node.a === '1' ? 'n' :\n node.a === '-1' ? '-n' :\n node.a + 'n'\n );\n\n if (b) {\n b = String(node.b);\n if (b.charAt(0) === '-' || b.charAt(0) === '+') {\n processChunk(b.charAt(0));\n processChunk(b.substr(1));\n } else {\n processChunk('+');\n processChunk(b);\n }\n }\n } else {\n processChunk(String(node.b));\n }\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar ATRULE = TYPE.Atrule;\nvar SEMICOLON = TYPE.Semicolon;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\n\nfunction isBlockAtrule() {\n for (var offset = 1, type; type = this.scanner.lookupType(offset); offset++) {\n if (type === RIGHTCURLYBRACKET) {\n return true;\n }\n\n if (type === LEFTCURLYBRACKET ||\n type === ATRULE) {\n return false;\n }\n }\n\n this.scanner.skip(offset);\n this.scanner.eat(RIGHTCURLYBRACKET);\n}\n\nmodule.exports = {\n name: 'Atrule',\n structure: {\n name: String,\n expression: ['AtruleExpression', null],\n block: ['Block', null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var name;\n var nameLowerCase;\n var expression = null;\n var block = null;\n\n this.scanner.eat(ATRULE);\n\n name = this.scanner.substrToCursor(start + 1);\n nameLowerCase = name.toLowerCase();\n this.scanner.skipSC();\n\n expression = this.AtruleExpression(name);\n\n // turn empty AtruleExpression into null\n if (expression.children.head === null) {\n expression = null;\n }\n\n this.scanner.skipSC();\n\n if (this.atrule.hasOwnProperty(nameLowerCase)) {\n if (typeof this.atrule[nameLowerCase].block === 'function') {\n if (this.scanner.tokenType !== LEFTCURLYBRACKET) {\n // FIXME: make tolerant\n this.scanner.error('Curly bracket is expected');\n }\n\n block = this.atrule[nameLowerCase].block.call(this);\n } else {\n if (!this.tolerant || !this.scanner.eof) {\n this.scanner.eat(SEMICOLON);\n }\n }\n } else {\n switch (this.scanner.tokenType) {\n case SEMICOLON:\n this.scanner.next();\n break;\n\n case LEFTCURLYBRACKET:\n // TODO: should consume block content as Raw?\n block = this.Block(isBlockAtrule.call(this) ? this.Declaration : this.Rule);\n break;\n\n default:\n if (!this.tolerant) {\n this.scanner.error('Semicolon or block is expected');\n }\n }\n }\n\n return {\n type: 'Atrule',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n expression: expression,\n block: block\n };\n },\n generate: function(processChunk, node) {\n processChunk('@');\n processChunk(node.name);\n\n if (node.expression !== null) {\n processChunk(' ');\n this.generate(processChunk, node.expression);\n }\n\n if (node.block) {\n this.generate(processChunk, node.block);\n } else {\n processChunk(';');\n }\n },\n walkContext: 'atrule'\n};\n","var List = require('../../utils/list');\n\nvar TYPE = require('../../tokenizer').TYPE;\nvar SEMICOLON = TYPE.Semicolon;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nfunction consumeRaw(startToken) {\n return new List().appendData(\n this.Raw(startToken, SEMICOLON, LEFTCURLYBRACKET, false, true)\n );\n}\n\nfunction consumeDefaultSequence() {\n return this.readSequence(this.scope.AtruleExpression);\n}\n\nmodule.exports = {\n name: 'AtruleExpression',\n structure: {\n children: [[]]\n },\n parse: function(name) {\n var children = null;\n var startToken = this.scanner.currentToken;\n\n if (name !== null) {\n name = name.toLowerCase();\n }\n\n if (this.parseAtruleExpression) {\n // custom consumer\n if (this.atrule.hasOwnProperty(name)) {\n if (typeof this.atrule[name].expression === 'function') {\n children = this.tolerantParse(this.atrule[name].expression, consumeRaw);\n }\n } else {\n // default consumer\n this.scanner.skipSC();\n children = this.tolerantParse(consumeDefaultSequence, consumeRaw);\n }\n\n if (this.tolerant) {\n if (this.scanner.eof || (this.scanner.tokenType !== SEMICOLON && this.scanner.tokenType !== LEFTCURLYBRACKET)) {\n children = consumeRaw.call(this, startToken);\n }\n }\n } else {\n children = consumeRaw.call(this, startToken);\n }\n\n if (children === null) {\n children = new List();\n }\n\n return {\n type: 'AtruleExpression',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n },\n walkContext: 'atruleExpression'\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar STRING = TYPE.String;\nvar DOLLARSIGN = TYPE.DollarSign;\nvar ASTERISK = TYPE.Asterisk;\nvar COLON = TYPE.Colon;\nvar EQUALSSIGN = TYPE.EqualsSign;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\nvar CIRCUMFLEXACCENT = TYPE.CircumflexAccent;\nvar VERTICALLINE = TYPE.VerticalLine;\nvar TILDE = TYPE.Tilde;\n\nfunction getAttributeName() {\n if (this.scanner.eof) {\n this.scanner.error('Unexpected end of input');\n }\n\n var start = this.scanner.tokenStart;\n var expectIdentifier = false;\n var checkColon = true;\n\n if (this.scanner.tokenType === ASTERISK) {\n expectIdentifier = true;\n checkColon = false;\n this.scanner.next();\n } else if (this.scanner.tokenType !== VERTICALLINE) {\n this.scanner.eat(IDENTIFIER);\n }\n\n if (this.scanner.tokenType === VERTICALLINE) {\n if (this.scanner.lookupType(1) !== EQUALSSIGN) {\n this.scanner.next();\n this.scanner.eat(IDENTIFIER);\n } else if (expectIdentifier) {\n this.scanner.error('Identifier is expected', this.scanner.tokenEnd);\n }\n } else if (expectIdentifier) {\n this.scanner.error('Vertical line is expected');\n }\n\n if (checkColon && this.scanner.tokenType === COLON) {\n this.scanner.next();\n this.scanner.eat(IDENTIFIER);\n }\n\n return {\n type: 'Identifier',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n}\n\nfunction getOperator() {\n var start = this.scanner.tokenStart;\n var tokenType = this.scanner.tokenType;\n\n if (tokenType !== EQUALSSIGN && // =\n tokenType !== TILDE && // ~=\n tokenType !== CIRCUMFLEXACCENT && // ^=\n tokenType !== DOLLARSIGN && // $=\n tokenType !== ASTERISK && // *=\n tokenType !== VERTICALLINE // |=\n ) {\n this.scanner.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected');\n }\n\n if (tokenType === EQUALSSIGN) {\n this.scanner.next();\n } else {\n this.scanner.next();\n this.scanner.eat(EQUALSSIGN);\n }\n\n return this.scanner.substrToCursor(start);\n}\n\n// '[' S* attrib_name ']'\n// '[' S* attrib_name S* attrib_matcher S* [ IDENT | STRING ] S* attrib_flags? S* ']'\nmodule.exports = {\n name: 'AttributeSelector',\n structure: {\n name: 'Identifier',\n matcher: [String, null],\n value: ['String', 'Identifier', null],\n flags: [String, null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var name;\n var matcher = null;\n var value = null;\n var flags = null;\n\n this.scanner.eat(LEFTSQUAREBRACKET);\n this.scanner.skipSC();\n\n name = getAttributeName.call(this);\n this.scanner.skipSC();\n\n if (this.scanner.tokenType !== RIGHTSQUAREBRACKET) {\n // avoid case `[name i]`\n if (this.scanner.tokenType !== IDENTIFIER) {\n matcher = getOperator.call(this);\n\n this.scanner.skipSC();\n\n value = this.scanner.tokenType === STRING\n ? this.String()\n : this.Identifier();\n\n this.scanner.skipSC();\n }\n\n // attribute flags\n if (this.scanner.tokenType === IDENTIFIER) {\n flags = this.scanner.getTokenValue();\n this.scanner.next();\n\n this.scanner.skipSC();\n }\n }\n\n this.scanner.eat(RIGHTSQUAREBRACKET);\n\n return {\n type: 'AttributeSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n matcher: matcher,\n value: value,\n flags: flags\n };\n },\n generate: function(processChunk, node) {\n var flagsPrefix = ' ';\n\n processChunk('[');\n this.generate(processChunk, node.name);\n\n if (node.matcher !== null) {\n processChunk(node.matcher);\n\n if (node.value !== null) {\n this.generate(processChunk, node.value);\n\n // space between string and flags is not required\n if (node.value.type === 'String') {\n flagsPrefix = '';\n }\n }\n }\n\n if (node.flags !== null) {\n processChunk(flagsPrefix);\n processChunk(node.flags);\n }\n\n processChunk(']');\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar SEMICOLON = TYPE.Semicolon;\nvar ATRULE = TYPE.Atrule;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, 0, SEMICOLON, true, true);\n}\n\nmodule.exports = {\n name: 'Block',\n structure: {\n children: [['Atrule', 'Rule', 'Declaration']]\n },\n parse: function(defaultConsumer) {\n if (!defaultConsumer) {\n defaultConsumer = this.Declaration;\n }\n\n var start = this.scanner.tokenStart;\n var children = new List();\n\n this.scanner.eat(LEFTCURLYBRACKET);\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case RIGHTCURLYBRACKET:\n break scan;\n\n case WHITESPACE:\n case COMMENT:\n case SEMICOLON:\n this.scanner.next();\n break;\n\n case ATRULE:\n children.appendData(this.tolerantParse(this.Atrule, consumeRaw));\n break;\n\n default:\n children.appendData(this.tolerantParse(defaultConsumer, consumeRaw));\n }\n }\n\n if (!this.tolerant || !this.scanner.eof) {\n this.scanner.eat(RIGHTCURLYBRACKET);\n }\n\n return {\n type: 'Block',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('{');\n this.each(processChunk, node);\n processChunk('}');\n },\n walkContext: 'block'\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;\nvar RIGHTSQUAREBRACKET = TYPE.RightSquareBracket;\n\n// currently only Grid Layout uses square brackets, but left it universal\n// https://drafts.csswg.org/css-grid/#track-sizing\n// [ ident* ]\nmodule.exports = {\n name: 'Brackets',\n structure: {\n children: [[]]\n },\n parse: function(readSequence, recognizer) {\n var start = this.scanner.tokenStart;\n var children = null;\n\n this.scanner.eat(LEFTSQUAREBRACKET);\n children = readSequence.call(this, recognizer);\n this.scanner.eat(RIGHTSQUAREBRACKET);\n\n return {\n type: 'Brackets',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('[');\n this.each(processChunk, node);\n processChunk(']');\n }\n};\n","var CDC = require('../../tokenizer').TYPE.CDC;\n\nmodule.exports = {\n name: 'CDC',\n structure: [],\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.eat(CDC); // -->\n\n return {\n type: 'CDC',\n loc: this.getLocation(start, this.scanner.tokenStart)\n };\n },\n generate: function(processChunk) {\n processChunk('-->');\n }\n};\n","var CDO = require('../../tokenizer').TYPE.CDO;\n\nmodule.exports = {\n name: 'CDO',\n structure: [],\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.eat(CDO); // <!--\n\n return {\n type: 'CDO',\n loc: this.getLocation(start, this.scanner.tokenStart)\n };\n },\n generate: function(processChunk) {\n processChunk('<!--');\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\nvar FULLSTOP = TYPE.FullStop;\n\n// '.' ident\nmodule.exports = {\n name: 'ClassSelector',\n structure: {\n name: String\n },\n parse: function() {\n this.scanner.eat(FULLSTOP);\n\n return {\n type: 'ClassSelector',\n loc: this.getLocation(this.scanner.tokenStart - 1, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n },\n generate: function(processChunk, node) {\n processChunk('.');\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar PLUSSIGN = TYPE.PlusSign;\nvar SOLIDUS = TYPE.Solidus;\nvar GREATERTHANSIGN = TYPE.GreaterThanSign;\nvar TILDE = TYPE.Tilde;\n\n// + | > | ~ | /deep/\nmodule.exports = {\n name: 'Combinator',\n structure: {\n name: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n switch (this.scanner.tokenType) {\n case GREATERTHANSIGN:\n case PLUSSIGN:\n case TILDE:\n this.scanner.next();\n break;\n\n case SOLIDUS:\n this.scanner.next();\n this.scanner.expectIdentifier('deep');\n this.scanner.eat(SOLIDUS);\n break;\n\n default:\n this.scanner.error('Combinator is expected');\n }\n\n return {\n type: 'Combinator',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar ASTERISK = TYPE.Asterisk;\nvar SOLIDUS = TYPE.Solidus;\n\n// '/*' .* '*/'\nmodule.exports = {\n name: 'Comment',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var end = this.scanner.tokenEnd;\n\n if ((end - start + 2) >= 2 &&\n this.scanner.source.charCodeAt(end - 2) === ASTERISK &&\n this.scanner.source.charCodeAt(end - 1) === SOLIDUS) {\n end -= 2;\n }\n\n this.scanner.next();\n\n return {\n type: 'Comment',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.source.substring(start + 2, end)\n };\n },\n generate: function(processChunk, node) {\n processChunk('/*');\n processChunk(node.value);\n processChunk('*/');\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar COLON = TYPE.Colon;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar SOLIDUS = TYPE.Solidus;\nvar ASTERISK = TYPE.Asterisk;\nvar DOLLARSIGN = TYPE.DollarSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar SEMICOLON = TYPE.Semicolon;\nvar RIGHTCURLYBRACKET = TYPE.RightCurlyBracket;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar PLUSSIGN = TYPE.PlusSign;\nvar NUMBERSIGN = TYPE.NumberSign;\n\nmodule.exports = {\n name: 'Declaration',\n structure: {\n important: [Boolean, String],\n property: String,\n value: ['Value', 'Raw']\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var property = readProperty.call(this);\n var important = false;\n var value;\n\n this.scanner.skipSC();\n this.scanner.eat(COLON);\n\n if (isCustomProperty(property) ? this.parseCustomProperty : this.parseValue) {\n value = this.Value(property);\n } else {\n value = this.Raw(this.scanner.currentToken, EXCLAMATIONMARK, SEMICOLON, false, false);\n }\n\n if (this.scanner.tokenType === EXCLAMATIONMARK) {\n important = getImportant(this.scanner);\n this.scanner.skipSC();\n }\n\n // TODO: include or not to include semicolon to range?\n // if (this.scanner.tokenType === SEMICOLON) {\n // this.scanner.next();\n // }\n\n if (!this.scanner.eof &&\n this.scanner.tokenType !== SEMICOLON &&\n this.scanner.tokenType !== RIGHTPARENTHESIS &&\n this.scanner.tokenType !== RIGHTCURLYBRACKET) {\n this.scanner.error();\n }\n\n return {\n type: 'Declaration',\n loc: this.getLocation(start, this.scanner.tokenStart),\n important: important,\n property: property,\n value: value\n };\n },\n generate: function(processChunk, node, item) {\n processChunk(node.property);\n processChunk(':');\n this.generate(processChunk, node.value);\n\n if (node.important) {\n processChunk(node.important === true ? '!important' : '!' + node.important);\n }\n\n if (item && item.next) {\n processChunk(';');\n }\n },\n walkContext: 'declaration'\n};\n\nfunction isCustomProperty(name) {\n return name.length >= 2 &&\n name.charCodeAt(0) === HYPHENMINUS &&\n name.charCodeAt(1) === HYPHENMINUS;\n}\n\nfunction readProperty() {\n var start = this.scanner.tokenStart;\n var prefix = 0;\n\n // hacks\n switch (this.scanner.tokenType) {\n case ASTERISK:\n case DOLLARSIGN:\n case PLUSSIGN:\n case NUMBERSIGN:\n prefix = 1;\n break;\n\n // TODO: not sure we should support this hack\n case SOLIDUS:\n prefix = this.scanner.lookupType(1) === SOLIDUS ? 2 : 1;\n break;\n }\n\n if (this.scanner.lookupType(prefix) === HYPHENMINUS) {\n prefix++;\n }\n\n if (prefix) {\n this.scanner.skip(prefix);\n }\n\n this.scanner.eat(IDENTIFIER);\n\n return this.scanner.substrToCursor(start);\n}\n\n// ! ws* important\nfunction getImportant(scanner) {\n scanner.eat(EXCLAMATIONMARK);\n scanner.skipSC();\n\n var important = scanner.consume(IDENTIFIER);\n\n // store original value in case it differ from `important`\n // for better original source restoring and hacks like `!ie` support\n return important === 'important' ? true : important;\n}\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar SEMICOLON = TYPE.Semicolon;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, 0, SEMICOLON, true, true);\n}\n\nmodule.exports = {\n name: 'DeclarationList',\n structure: {\n children: [['Declaration']]\n },\n parse: function() {\n var children = new List();\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n case COMMENT:\n case SEMICOLON:\n this.scanner.next();\n break;\n\n default:\n children.appendData(this.tolerantParse(this.Declaration, consumeRaw));\n }\n }\n\n return {\n type: 'DeclarationList',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var NUMBER = require('../../tokenizer').TYPE.Number;\n\n// special reader for units to avoid adjoined IE hacks (i.e. '1px\\9')\nfunction readUnit(scanner) {\n var unit = scanner.getTokenValue();\n var backSlashPos = unit.indexOf('\\\\');\n\n if (backSlashPos > 0) {\n // patch token offset\n scanner.tokenStart += backSlashPos;\n\n // return part before backslash\n return unit.substring(0, backSlashPos);\n }\n\n // no backslash in unit name\n scanner.next();\n\n return unit;\n}\n\n// number ident\nmodule.exports = {\n name: 'Dimension',\n structure: {\n value: String,\n unit: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var value = this.scanner.consume(NUMBER);\n var unit = readUnit(this.scanner);\n\n return {\n type: 'Dimension',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: value,\n unit: unit\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n processChunk(node.unit);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// <function-token> <sequence> ')'\nmodule.exports = {\n name: 'Function',\n structure: {\n name: String,\n children: [[]]\n },\n parse: function(readSequence, recognizer) {\n var start = this.scanner.tokenStart;\n var name = this.scanner.consumeFunctionName();\n var nameLowerCase = name.toLowerCase();\n var children;\n\n children = recognizer.hasOwnProperty(nameLowerCase)\n ? recognizer[nameLowerCase].call(this, recognizer)\n : readSequence.call(this, recognizer);\n\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Function',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n },\n walkContext: 'function'\n};\n","var isHex = require('../../tokenizer').isHex;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar NUMBERSIGN = TYPE.NumberSign;\n\nfunction consumeHexSequence(scanner, required) {\n if (!isHex(scanner.source.charCodeAt(scanner.tokenStart))) {\n if (required) {\n scanner.error('Unexpected input', scanner.tokenStart);\n } else {\n return;\n }\n }\n\n for (var pos = scanner.tokenStart + 1; pos < scanner.tokenEnd; pos++) {\n var code = scanner.source.charCodeAt(pos);\n\n // break on non-hex char\n if (!isHex(code)) {\n // break token, exclude symbol\n scanner.tokenStart = pos;\n return;\n }\n }\n\n // token is full hex sequence, go to next token\n scanner.next();\n}\n\n// # ident\nmodule.exports = {\n name: 'HexColor',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.eat(NUMBERSIGN);\n\n scan:\n switch (this.scanner.tokenType) {\n case NUMBER:\n consumeHexSequence(this.scanner, true);\n\n // if token is identifier then number consists of hex only,\n // try to add identifier to result\n if (this.scanner.tokenType === IDENTIFIER) {\n consumeHexSequence(this.scanner, false);\n }\n\n break;\n\n case IDENTIFIER:\n consumeHexSequence(this.scanner, true);\n break;\n\n default:\n this.scanner.error('Number or identifier is expected');\n }\n\n return {\n type: 'HexColor',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start + 1) // skip #\n };\n },\n generate: function(processChunk, node) {\n processChunk('#');\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\n\nmodule.exports = {\n name: 'Identifier',\n structure: {\n name: String\n },\n parse: function() {\n return {\n type: 'Identifier',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBERSIGN = TYPE.NumberSign;\n\n// '#' ident\nmodule.exports = {\n name: 'IdSelector',\n structure: {\n name: String\n },\n parse: function() {\n this.scanner.eat(NUMBERSIGN);\n\n return {\n type: 'IdSelector',\n loc: this.getLocation(this.scanner.tokenStart - 1, this.scanner.tokenEnd),\n name: this.scanner.consume(IDENTIFIER)\n };\n },\n generate: function(processChunk, node) {\n processChunk('#');\n processChunk(node.name);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\nvar COLON = TYPE.Colon;\nvar SOLIDUS = TYPE.Solidus;\n\nmodule.exports = {\n name: 'MediaFeature',\n structure: {\n name: String,\n value: ['Identifier', 'Number', 'Dimension', 'Ratio', null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var name;\n var value = null;\n\n this.scanner.eat(LEFTPARENTHESIS);\n this.scanner.skipSC();\n\n name = this.scanner.consume(IDENTIFIER);\n this.scanner.skipSC();\n\n if (this.scanner.tokenType !== RIGHTPARENTHESIS) {\n this.scanner.eat(COLON);\n this.scanner.skipSC();\n\n switch (this.scanner.tokenType) {\n case NUMBER:\n if (this.scanner.lookupType(1) === IDENTIFIER) {\n value = this.Dimension();\n } else if (this.scanner.lookupNonWSType(1) === SOLIDUS) {\n value = this.Ratio();\n } else {\n value = this.Number();\n }\n\n break;\n\n case IDENTIFIER:\n value = this.Identifier();\n\n break;\n\n default:\n this.scanner.error('Number, dimension, ratio or identifier is expected');\n }\n\n this.scanner.skipSC();\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'MediaFeature',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n value: value\n };\n },\n generate: function(processChunk, node) {\n processChunk('(');\n processChunk(node.name);\n if (node.value !== null) {\n processChunk(':');\n this.generate(processChunk, node.value);\n }\n processChunk(')');\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar IDENTIFIER = TYPE.Identifier;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\n\nmodule.exports = {\n name: 'MediaQuery',\n structure: {\n children: [['Identifier', 'MediaFeature', 'WhiteSpace']]\n },\n parse: function() {\n this.scanner.skipSC();\n\n var children = new List();\n var child = null;\n var space = null;\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case COMMENT:\n this.scanner.next();\n continue;\n\n case WHITESPACE:\n space = this.WhiteSpace();\n continue;\n\n case IDENTIFIER:\n child = this.Identifier();\n break;\n\n case LEFTPARENTHESIS:\n child = this.MediaFeature();\n break;\n\n default:\n break scan;\n }\n\n if (space !== null) {\n children.appendData(space);\n space = null;\n }\n\n children.appendData(child);\n }\n\n if (child === null) {\n this.scanner.error('Identifier or parenthesis is expected');\n }\n\n return {\n type: 'MediaQuery',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var List = require('../../utils/list');\nvar COMMA = require('../../tokenizer').TYPE.Comma;\n\nmodule.exports = {\n name: 'MediaQueryList',\n structure: {\n children: [['MediaQuery']]\n },\n parse: function(relative) {\n var children = new List();\n\n this.scanner.skipSC();\n\n while (!this.scanner.eof) {\n children.appendData(this.MediaQuery(relative));\n\n if (this.scanner.tokenType !== COMMA) {\n break;\n }\n\n this.scanner.next();\n }\n\n return {\n type: 'MediaQueryList',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.eachComma(processChunk, node);\n }\n};\n","// https://drafts.csswg.org/css-syntax-3/#the-anb-type\nmodule.exports = {\n name: 'Nth',\n structure: {\n nth: ['AnPlusB', 'Identifier'],\n selector: ['SelectorList', null]\n },\n parse: function(allowOfClause) {\n this.scanner.skipSC();\n\n var start = this.scanner.tokenStart;\n var end = start;\n var selector = null;\n var query;\n\n if (this.scanner.lookupValue(0, 'odd') || this.scanner.lookupValue(0, 'even')) {\n query = this.Identifier();\n } else {\n query = this.AnPlusB();\n }\n\n this.scanner.skipSC();\n\n if (allowOfClause && this.scanner.lookupValue(0, 'of')) {\n this.scanner.next();\n\n selector = this.SelectorList();\n\n if (this.needPositions) {\n end = selector.children.last().loc.end.offset;\n }\n } else {\n if (this.needPositions) {\n end = query.loc.end.offset;\n }\n }\n\n return {\n type: 'Nth',\n loc: this.getLocation(start, end),\n nth: query,\n selector: selector\n };\n },\n generate: function(processChunk, node) {\n this.generate(processChunk, node.nth);\n if (node.selector !== null) {\n processChunk(' of ');\n this.generate(processChunk, node.selector);\n }\n }\n};\n","var NUMBER = require('../../tokenizer').TYPE.Number;\n\nmodule.exports = {\n name: 'Number',\n structure: {\n value: String\n },\n parse: function() {\n return {\n type: 'Number',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n value: this.scanner.consume(NUMBER)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","// '/' | '*' | ',' | ':' | '+' | '-'\nmodule.exports = {\n name: 'Operator',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.next();\n\n return {\n type: 'Operator',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\nvar LEFTPARENTHESIS = TYPE.LeftParenthesis;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\nmodule.exports = {\n name: 'Parentheses',\n structure: {\n children: [[]]\n },\n parse: function(readSequence, recognizer) {\n var start = this.scanner.tokenStart;\n var children = null;\n\n this.scanner.eat(LEFTPARENTHESIS);\n children = readSequence.call(this, recognizer);\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Parentheses',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar NUMBER = TYPE.Number;\nvar PERCENTSIGN = TYPE.PercentSign;\n\nmodule.exports = {\n name: 'Percentage',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var number = this.scanner.consume(NUMBER);\n\n this.scanner.eat(PERCENTSIGN);\n\n return {\n type: 'Percentage',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: number\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n processChunk('%');\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar FUNCTION = TYPE.Function;\nvar COLON = TYPE.Colon;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// : ident [ '(' .. ')' ]?\nmodule.exports = {\n name: 'PseudoClassSelector',\n structure: {\n name: String,\n children: [['Raw'], null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var children = null;\n var name;\n var nameLowerCase;\n\n this.scanner.eat(COLON);\n\n if (this.scanner.tokenType === FUNCTION) {\n name = this.scanner.consumeFunctionName();\n nameLowerCase = name.toLowerCase();\n\n if (this.pseudo.hasOwnProperty(nameLowerCase)) {\n this.scanner.skipSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.scanner.skipSC();\n } else {\n children = new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n } else {\n name = this.scanner.consume(IDENTIFIER);\n }\n\n return {\n type: 'PseudoClassSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk(':');\n processChunk(node.name);\n\n if (node.children !== null) {\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n }\n },\n walkContext: 'function'\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar FUNCTION = TYPE.Function;\nvar COLON = TYPE.Colon;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// :: ident [ '(' .. ')' ]?\nmodule.exports = {\n name: 'PseudoElementSelector',\n structure: {\n name: String,\n children: [['Raw'], null]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var children = null;\n var name;\n var nameLowerCase;\n\n this.scanner.eat(COLON);\n this.scanner.eat(COLON);\n\n if (this.scanner.tokenType === FUNCTION) {\n name = this.scanner.consumeFunctionName();\n nameLowerCase = name.toLowerCase();\n\n if (this.pseudo.hasOwnProperty(nameLowerCase)) {\n this.scanner.skipSC();\n children = this.pseudo[nameLowerCase].call(this);\n this.scanner.skipSC();\n } else {\n children = new List().appendData(\n this.Raw(this.scanner.currentToken, 0, 0, false, false)\n );\n }\n\n this.scanner.eat(RIGHTPARENTHESIS);\n } else {\n name = this.scanner.consume(IDENTIFIER);\n }\n\n return {\n type: 'PseudoElementSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: name,\n children: children\n };\n },\n generate: function(processChunk, node) {\n processChunk('::');\n processChunk(node.name);\n\n if (node.children !== null) {\n processChunk('(');\n this.each(processChunk, node);\n processChunk(')');\n }\n },\n walkContext: 'function'\n};\n","var isNumber = require('../../tokenizer').isNumber;\nvar TYPE = require('../../tokenizer').TYPE;\nvar NUMBER = TYPE.Number;\nvar SOLIDUS = TYPE.Solidus;\nvar FULLSTOP = TYPE.FullStop;\n\n// Terms of <ratio> should to be a positive number (not zero or negative)\n// (see https://drafts.csswg.org/mediaqueries-3/#values)\n// However, -o-min-device-pixel-ratio takes fractional values as a ratio's term\n// and this is using by various sites. Therefore we relax checking on parse\n// to test a term is unsigned number without exponent part.\n// Additional checks may to be applied on lexer validation.\nfunction consumeNumber(scanner) {\n var value = scanner.consumeNonWS(NUMBER);\n\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n if (!isNumber(code) && code !== FULLSTOP) {\n scanner.error('Unsigned number is expected', scanner.tokenStart - value.length + i);\n }\n }\n\n if (Number(value) === 0) {\n scanner.error('Zero number is not allowed', scanner.tokenStart - value.length);\n }\n\n return value;\n}\n\n// <positive-integer> S* '/' S* <positive-integer>\nmodule.exports = {\n name: 'Ratio',\n structure: {\n left: String,\n right: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var left = consumeNumber(this.scanner);\n var right;\n\n this.scanner.eatNonWS(SOLIDUS);\n right = consumeNumber(this.scanner);\n\n return {\n type: 'Ratio',\n loc: this.getLocation(start, this.scanner.tokenStart),\n left: left,\n right: right\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.left);\n processChunk('/');\n processChunk(node.right);\n }\n};\n","module.exports = {\n name: 'Raw',\n structure: {\n value: String\n },\n parse: function(startToken, endTokenType1, endTokenType2, includeTokenType2, excludeWhiteSpace) {\n var startOffset = this.scanner.getTokenStart(startToken);\n var endOffset;\n\n this.scanner.skip(\n this.scanner.getRawLength(\n startToken,\n endTokenType1,\n endTokenType2,\n includeTokenType2\n )\n );\n\n if (excludeWhiteSpace && this.scanner.tokenStart > startOffset) {\n endOffset = this.scanner.getOffsetExcludeWS();\n } else {\n endOffset = this.scanner.tokenStart;\n }\n\n return {\n type: 'Raw',\n loc: this.getLocation(startOffset, endOffset),\n value: this.scanner.source.substring(startOffset, endOffset)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, LEFTCURLYBRACKET, 0, false, true);\n}\n\nmodule.exports = {\n name: 'Rule',\n structure: {\n selector: ['SelectorList', 'Raw'],\n block: ['Block']\n },\n parse: function() {\n var startToken = this.scanner.currentToken;\n var startOffset = this.scanner.tokenStart;\n var selector = this.parseSelector\n ? this.tolerantParse(this.SelectorList, consumeRaw)\n : consumeRaw.call(this, startToken);\n var block = this.Block(this.Declaration);\n\n return {\n type: 'Rule',\n loc: this.getLocation(startOffset, this.scanner.tokenStart),\n selector: selector,\n block: block\n };\n },\n generate: function(processChunk, node) {\n this.generate(processChunk, node.selector);\n this.generate(processChunk, node.block);\n },\n walkContext: 'rule'\n};\n","module.exports = {\n name: 'Selector',\n structure: {\n children: [[\n 'TypeSelector',\n 'IdSelector',\n 'ClassSelector',\n 'AttributeSelector',\n 'PseudoClassSelector',\n 'PseudoElementSelector',\n 'Combinator',\n 'WhiteSpace'\n ]]\n },\n parse: function() {\n var children = this.readSequence(this.scope.Selector);\n\n // nothing were consumed\n if (children.isEmpty()) {\n this.scanner.error('Selector is expected');\n }\n\n return {\n type: 'Selector',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar COMMA = TYPE.Comma;\nvar LEFTCURLYBRACKET = TYPE.LeftCurlyBracket;\n\nmodule.exports = {\n name: 'SelectorList',\n structure: {\n children: [['Selector', 'Raw']]\n },\n parse: function() {\n var children = new List();\n\n while (!this.scanner.eof) {\n children.appendData(this.parseSelector\n ? this.Selector()\n : this.Raw(this.scanner.currentToken, COMMA, LEFTCURLYBRACKET, false, false)\n );\n\n if (this.scanner.tokenType === COMMA) {\n this.scanner.next();\n continue;\n }\n\n break;\n }\n\n return {\n type: 'SelectorList',\n loc: this.getLocationFromList(children),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.eachComma(processChunk, node);\n },\n walkContext: 'selector'\n};\n","var STRING = require('../../tokenizer').TYPE.String;\n\nmodule.exports = {\n name: 'String',\n structure: {\n value: String\n },\n parse: function() {\n return {\n type: 'String',\n loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n value: this.scanner.consume(STRING)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var List = require('../../utils/list');\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\nvar ATRULE = TYPE.Atrule;\nvar CDO = TYPE.CDO;\nvar CDC = TYPE.CDC;\n\nfunction consumeRaw(startToken) {\n return this.Raw(startToken, 0, 0, false, false);\n}\n\nmodule.exports = {\n name: 'StyleSheet',\n structure: {\n children: [['Comment', 'Atrule', 'Rule', 'Raw']]\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var children = new List();\n var child;\n\n scan:\n while (!this.scanner.eof) {\n switch (this.scanner.tokenType) {\n case WHITESPACE:\n this.scanner.next();\n continue;\n\n case COMMENT:\n // ignore comments except exclamation comments (i.e. /*! .. */) on top level\n if (this.scanner.source.charCodeAt(this.scanner.tokenStart + 2) !== EXCLAMATIONMARK) {\n this.scanner.next();\n continue;\n }\n\n child = this.Comment();\n break;\n\n case CDO: // <!--\n child = this.CDO();\n break;\n\n case CDC: // -->\n child = this.CDC();\n break;\n\n // CSS Syntax Module Level 3\n // §2.2 Error handling\n // At the \"top level\" of a stylesheet, an <at-keyword-token> starts an at-rule.\n case ATRULE:\n child = this.Atrule();\n break;\n\n // Anything else starts a qualified rule ...\n default:\n child = this.tolerantParse(this.Rule, consumeRaw);\n }\n\n children.appendData(child);\n }\n\n return {\n type: 'StyleSheet',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n },\n walkContext: 'stylesheet'\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar ASTERISK = TYPE.Asterisk;\nvar VERTICALLINE = TYPE.VerticalLine;\n\nfunction eatIdentifierOrAsterisk() {\n if (this.scanner.tokenType !== IDENTIFIER &&\n this.scanner.tokenType !== ASTERISK) {\n this.scanner.error('Identifier or asterisk is expected');\n }\n\n this.scanner.next();\n}\n\n// ident\n// ident|ident\n// ident|*\n// *\n// *|ident\n// *|*\n// |ident\n// |*\nmodule.exports = {\n name: 'TypeSelector',\n structure: {\n name: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n if (this.scanner.tokenType === VERTICALLINE) {\n this.scanner.next();\n eatIdentifierOrAsterisk.call(this);\n } else {\n eatIdentifierOrAsterisk.call(this);\n\n if (this.scanner.tokenType === VERTICALLINE) {\n this.scanner.next();\n eatIdentifierOrAsterisk.call(this);\n }\n }\n\n return {\n type: 'TypeSelector',\n loc: this.getLocation(start, this.scanner.tokenStart),\n name: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.name);\n }\n};\n","var isHex = require('../../tokenizer').isHex;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar IDENTIFIER = TYPE.Identifier;\nvar NUMBER = TYPE.Number;\nvar PLUSSIGN = TYPE.PlusSign;\nvar HYPHENMINUS = TYPE.HyphenMinus;\nvar FULLSTOP = TYPE.FullStop;\nvar QUESTIONMARK = TYPE.QuestionMark;\n\nfunction scanUnicodeNumber(scanner) {\n for (var pos = scanner.tokenStart + 1; pos < scanner.tokenEnd; pos++) {\n var code = scanner.source.charCodeAt(pos);\n\n // break on fullstop or hyperminus/plussign after exponent\n if (code === FULLSTOP || code === PLUSSIGN) {\n // break token, exclude symbol\n scanner.tokenStart = pos;\n return false;\n }\n }\n\n return true;\n}\n\n// https://drafts.csswg.org/css-syntax-3/#urange\nfunction scanUnicodeRange(scanner) {\n var hexStart = scanner.tokenStart + 1; // skip +\n var hexLength = 0;\n\n scan: {\n if (scanner.tokenType === NUMBER) {\n if (scanner.source.charCodeAt(scanner.tokenStart) !== FULLSTOP && scanUnicodeNumber(scanner)) {\n scanner.next();\n } else if (scanner.source.charCodeAt(scanner.tokenStart) !== HYPHENMINUS) {\n break scan;\n }\n } else {\n scanner.next(); // PLUSSIGN\n }\n\n if (scanner.tokenType === HYPHENMINUS) {\n scanner.next();\n }\n\n if (scanner.tokenType === NUMBER) {\n scanner.next();\n }\n\n if (scanner.tokenType === IDENTIFIER) {\n scanner.next();\n }\n\n if (scanner.tokenStart === hexStart) {\n scanner.error('Unexpected input', hexStart);\n }\n }\n\n // validate for U+x{1,6} or U+x{1,6}-x{1,6}\n // where x is [0-9a-fA-F]\n for (var i = hexStart, wasHyphenMinus = false; i < scanner.tokenStart; i++) {\n var code = scanner.source.charCodeAt(i);\n\n if (isHex(code) === false && (code !== HYPHENMINUS || wasHyphenMinus)) {\n scanner.error('Unexpected input', i);\n }\n\n if (code === HYPHENMINUS) {\n // hex sequence shouldn't be an empty\n if (hexLength === 0) {\n scanner.error('Unexpected input', i);\n }\n\n wasHyphenMinus = true;\n hexLength = 0;\n } else {\n hexLength++;\n\n // too long hex sequence\n if (hexLength > 6) {\n scanner.error('Too long hex sequence', i);\n }\n }\n\n }\n\n // check we have a non-zero sequence\n if (hexLength === 0) {\n scanner.error('Unexpected input', i - 1);\n }\n\n // U+abc???\n if (!wasHyphenMinus) {\n // consume as many U+003F QUESTION MARK (?) code points as possible\n for (; hexLength < 6 && !scanner.eof; scanner.next()) {\n if (scanner.tokenType !== QUESTIONMARK) {\n break;\n }\n\n hexLength++;\n }\n }\n}\n\nmodule.exports = {\n name: 'UnicodeRange',\n structure: {\n value: String\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n\n this.scanner.next(); // U or u\n scanUnicodeRange(this.scanner);\n\n return {\n type: 'UnicodeRange',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: this.scanner.substrToCursor(start)\n };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","var TYPE = require('../../tokenizer').TYPE;\n\nvar STRING = TYPE.String;\nvar URL = TYPE.Url;\nvar RAW = TYPE.Raw;\nvar RIGHTPARENTHESIS = TYPE.RightParenthesis;\n\n// url '(' S* (string | raw) S* ')'\nmodule.exports = {\n name: 'Url',\n structure: {\n value: ['String', 'Raw']\n },\n parse: function() {\n var start = this.scanner.tokenStart;\n var value;\n\n this.scanner.eat(URL);\n this.scanner.skipSC();\n\n switch (this.scanner.tokenType) {\n case STRING:\n value = this.String();\n break;\n\n case RAW:\n value = this.Raw(this.scanner.currentToken, 0, RAW, true, false);\n break;\n\n default:\n this.scanner.error('String or Raw is expected');\n }\n\n this.scanner.skipSC();\n this.scanner.eat(RIGHTPARENTHESIS);\n\n return {\n type: 'Url',\n loc: this.getLocation(start, this.scanner.tokenStart),\n value: value\n };\n },\n generate: function(processChunk, node) {\n processChunk('url');\n processChunk('(');\n this.generate(processChunk, node.value);\n processChunk(')');\n }\n};\n","var endsWith = require('../../tokenizer').endsWith;\nvar TYPE = require('../../tokenizer').TYPE;\n\nvar WHITESPACE = TYPE.WhiteSpace;\nvar COMMENT = TYPE.Comment;\nvar FUNCTION = TYPE.Function;\nvar COLON = TYPE.Colon;\nvar SEMICOLON = TYPE.Semicolon;\nvar EXCLAMATIONMARK = TYPE.ExclamationMark;\n\n// 'progid:' ws* 'DXImageTransform.Microsoft.' ident ws* '(' .* ')'\nfunction checkProgid(scanner) {\n var offset = 0;\n\n for (var type; type = scanner.lookupType(offset); offset++) {\n if (type !== WHITESPACE && type !== COMMENT) {\n break;\n }\n }\n\n if (scanner.lookupValue(offset, 'alpha(') ||\n scanner.lookupValue(offset, 'chroma(') ||\n scanner.lookupValue(offset, 'dropshadow(')) {\n if (scanner.lookupType(offset) !== FUNCTION) {\n return false;\n }\n } else {\n if (scanner.lookupValue(offset, 'progid') === false ||\n scanner.lookupType(offset + 1) !== COLON) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = {\n name: 'Value',\n structure: {\n children: [[]]\n },\n parse: function(property) {\n // special parser for filter property since it can contains non-standart syntax for old IE\n if (property !== null && endsWith(property, 'filter') && checkProgid(this.scanner)) {\n this.scanner.skipSC();\n return this.Raw(this.scanner.currentToken, EXCLAMATIONMARK, SEMICOLON, false, false);\n }\n\n var start = this.scanner.tokenStart;\n var children = this.readSequence(this.scope.Value);\n\n return {\n type: 'Value',\n loc: this.getLocation(start, this.scanner.tokenStart),\n children: children\n };\n },\n generate: function(processChunk, node) {\n this.each(processChunk, node);\n }\n};\n","var WHITESPACE = require('../../tokenizer').TYPE.WhiteSpace;\nvar SPACE = Object.freeze({\n type: 'WhiteSpace',\n loc: null,\n value: ' '\n});\n\nmodule.exports = {\n name: 'WhiteSpace',\n structure: {\n value: String\n },\n parse: function() {\n this.scanner.eat(WHITESPACE);\n return SPACE;\n\n // return {\n // type: 'WhiteSpace',\n // loc: this.getLocation(this.scanner.tokenStart, this.scanner.tokenEnd),\n // value: this.scanner.consume(WHITESPACE)\n // };\n },\n generate: function(processChunk, node) {\n processChunk(node.value);\n }\n};\n","module.exports = {\n AnPlusB: require('./AnPlusB'),\n Atrule: require('./Atrule'),\n AtruleExpression: require('./AtruleExpression'),\n AttributeSelector: require('./AttributeSelector'),\n Block: require('./Block'),\n Brackets: require('./Brackets'),\n CDC: require('./CDC'),\n CDO: require('./CDO'),\n ClassSelector: require('./ClassSelector'),\n Combinator: require('./Combinator'),\n Comment: require('./Comment'),\n Declaration: require('./Declaration'),\n DeclarationList: require('./DeclarationList'),\n Dimension: require('./Dimension'),\n Function: require('./Function'),\n HexColor: require('./HexColor'),\n Identifier: require('./Identifier'),\n IdSelector: require('./IdSelector'),\n MediaFeature: require('./MediaFeature'),\n MediaQuery: require('./MediaQuery'),\n MediaQueryList: require('./MediaQueryList'),\n Nth: require('./Nth'),\n Number: require('./Number'),\n Operator: require('./Operator'),\n Parentheses: require('./Parentheses'),\n Percentage: require('./Percentage'),\n PseudoClassSelector: require('./PseudoClassSelector'),\n PseudoElementSelector: require('./PseudoElementSelector'),\n Ratio: require('./Ratio'),\n Raw: require('./Raw'),\n Rule: require('./Rule'),\n Selector: require('./Selector'),\n SelectorList: require('./SelectorList'),\n String: require('./String'),\n StyleSheet: require('./StyleSheet'),\n TypeSelector: require('./TypeSelector'),\n UnicodeRange: require('./UnicodeRange'),\n Url: require('./Url'),\n Value: require('./Value'),\n WhiteSpace: require('./WhiteSpace')\n};\n","module.exports = {\n parseContext: {\n default: 'StyleSheet',\n stylesheet: 'StyleSheet',\n atrule: 'Atrule',\n atruleExpression: function(options) {\n return this.AtruleExpression(options.atrule ? String(options.atrule) : null);\n },\n mediaQueryList: 'MediaQueryList',\n mediaQuery: 'MediaQuery',\n rule: 'Rule',\n selectorList: 'SelectorList',\n selector: 'Selector',\n block: function() {\n return this.Block(this.Declaration);\n },\n declarationList: 'DeclarationList',\n declaration: 'Declaration',\n value: function(options) {\n return this.Value(options.property ? String(options.property) : null);\n }\n },\n scope: require('../scope'),\n atrule: require('../atrule'),\n pseudo: require('../pseudo'),\n node: require('../node')\n};\n","var createParser = require('./create');\nvar config = require('../syntax/config/parser');\n\nmodule.exports = createParser(config);\n","function walk ( ast, ref) {\n\tvar enter = ref.enter;\n\tvar leave = ref.leave;\n\n\tvisit( ast, null, enter, leave );\n}\n\nvar shouldSkip = false;\nvar context = { skip: function () { return shouldSkip = true; } };\n\nvar childKeys = {};\n\nvar toString = Object.prototype.toString;\n\nfunction isArray ( thing ) {\n\treturn toString.call( thing ) === '[object Array]';\n}\n\nfunction visit ( node, parent, enter, leave, prop, index ) {\n\tif ( !node ) { return; }\n\n\tif ( enter ) {\n\t\tvar _shouldSkip = shouldSkip;\n\t\tshouldSkip = false;\n\t\tenter.call( context, node, parent, prop, index );\n\t\tvar skipped = shouldSkip;\n\t\tshouldSkip = _shouldSkip;\n\n\t\tif ( skipped ) { return; }\n\t}\n\n\tvar keys = childKeys[ node.type ] || (\n\t\tchildKeys[ node.type ] = Object.keys( node ).filter( function (key) { return typeof node[ key ] === 'object'; } )\n\t);\n\n\tfor ( var i = 0; i < keys.length; i += 1 ) {\n\t\tvar key = keys[i];\n\t\tvar value = node[ key ];\n\n\t\tif ( isArray( value ) ) {\n\t\t\tfor ( var j = 0; j < value.length; j += 1 ) {\n\t\t\t\tvisit( value[j], node, enter, leave, key, j );\n\t\t\t}\n\t\t}\n\n\t\telse if ( value && value.type ) {\n\t\t\tvisit( value, node, enter, leave, key, null );\n\t\t}\n\t}\n\n\tif ( leave ) {\n\t\tleave( node, parent, prop, index );\n\t}\n}\n\nexport { walk, childKeys };\n//# sourceMappingURL=estree-walker.es.js.map\n","import parse from 'css-tree/lib/parser/index.js';\nimport { walk } from 'estree-walker';\nimport { Parser } from '../index';\nimport { Node } from '../../interfaces';\n\nexport default function readStyle(parser: Parser, start: number, attributes: Node[]) {\n\tconst contentStart = parser.index;\n\tconst styles = parser.readUntil(/<\\/style>/);\n\tconst contentEnd = parser.index;\n\n\tlet ast;\n\n\ttry {\n\t\tast = parse(styles, {\n\t\t\tpositions: true,\n\t\t\toffset: contentStart,\n\t\t});\n\t} catch (err) {\n\t\tif (err.name === 'CssSyntaxError') {\n\t\t\tparser.error({\n\t\t\t\tcode: `css-syntax-error`,\n\t\t\t\tmessage: err.message\n\t\t\t}, err.offset);\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tast = JSON.parse(JSON.stringify(ast));\n\n\t// tidy up AST\n\twalk(ast, {\n\t\tenter: (node: Node) => {\n\t\t\t// replace `ref:a` nodes\n\t\t\tif (node.type === 'Selector') {\n\t\t\t\tfor (let i = 0; i < node.children.length; i += 1) {\n\t\t\t\t\tconst a = node.children[i];\n\t\t\t\t\tconst b = node.children[i + 1];\n\n\t\t\t\t\tif (isRefSelector(a, b)) {\n\t\t\t\t\t\tnode.children.splice(i, 2, {\n\t\t\t\t\t\t\ttype: 'RefSelector',\n\t\t\t\t\t\t\tstart: a.loc.start.offset,\n\t\t\t\t\t\t\tend: b.loc.end.offset,\n\t\t\t\t\t\t\tname: b.name\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (node.loc) {\n\t\t\t\tnode.start = node.loc.start.offset;\n\t\t\t\tnode.end = node.loc.end.offset;\n\t\t\t\tdelete node.loc;\n\t\t\t}\n\t\t}\n\t});\n\n\tparser.eat('</style>', true);\n\tconst end = parser.index;\n\n\treturn {\n\t\tstart,\n\t\tend,\n\t\tattributes,\n\t\tchildren: ast.children,\n\t\tcontent: {\n\t\t\tstart: contentStart,\n\t\t\tend: contentEnd,\n\t\t\tstyles,\n\t\t},\n\t};\n}\n\nfunction isRefSelector(a: Node, b: Node) {\n\tif (!b) return false;\n\n\treturn (\n\t\ta.type === 'TypeSelector' &&\n\t\ta.name === 'ref' &&\n\t\tb.type === 'PseudoClassSelector'\n\t);\n}","import { parseExpressionAt } from 'acorn';\nimport repeat from '../../utils/repeat';\nimport { Parser } from '../index';\n\nconst DIRECTIVES: Record<string, {\n\tnames: string[];\n\tattribute: (\n\t\tstart: number,\n\t\tend: number,\n\t\ttype: string,\n\t\tname: string,\n\t\texpression?: any,\n\t\tdirectiveName?: string\n\t) => { start: number, end: number, type: string, name: string, value?: any, expression?: any };\n\tallowedExpressionTypes: string[];\n\terror: string;\n}> = {\n\tRef: {\n\t\tnames: ['ref'],\n\t\tattribute(start, end, type, name) {\n\t\t\treturn { start, end, type, name };\n\t\t},\n\t\tallowedExpressionTypes: [],\n\t\terror: 'ref directives cannot have a value'\n\t},\n\n\tEventHandler: {\n\t\tnames: ['on'],\n\t\tattribute(start, end, type, name, expression) {\n\t\t\treturn { start, end, type, name, expression };\n\t\t},\n\t\tallowedExpressionTypes: ['CallExpression'],\n\t\terror: 'Expected a method call'\n\t},\n\n\tBinding: {\n\t\tnames: ['bind'],\n\t\tattribute(start, end, type, name, expression) {\n\t\t\treturn {\n\t\t\t\tstart, end, type, name,\n\t\t\t\tvalue: expression || {\n\t\t\t\t\ttype: 'Identifier',\n\t\t\t\t\tstart: start + 5,\n\t\t\t\t\tend,\n\t\t\t\t\tname,\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tallowedExpressionTypes: ['Identifier', 'MemberExpression'],\n\t\terror: 'Can only bind to an identifier (e.g. `foo`) or a member expression (e.g. `foo.bar` or `foo[baz]`)'\n\t},\n\n\tTransition: {\n\t\tnames: ['in', 'out', 'transition'],\n\t\tattribute(start, end, type, name, expression, directiveName) {\n\t\t\treturn {\n\t\t\t\tstart, end, type, name, expression,\n\t\t\t\tintro: directiveName === 'in' || directiveName === 'transition',\n\t\t\t\toutro: directiveName === 'out' || directiveName === 'transition',\n\t\t\t};\n\t\t},\n\t\tallowedExpressionTypes: ['ObjectExpression'],\n\t\terror: 'Transition argument must be an object literal, e.g. `{ duration: 400 }`'\n\t},\n\n\tAnimation: {\n\t\tnames: ['animate'],\n\t\tattribute(start, end, type, name, expression) {\n\t\t\treturn { start, end, type, name, expression };\n\t\t},\n\t\tallowedExpressionTypes: ['ObjectExpression'],\n\t\terror: 'Animation argument must be an object literal, e.g. `{ duration: 400 }`'\n\t},\n\n\tAction: {\n\t\tnames: ['use'],\n\t\tattribute(start, end, type, name, expression) {\n\t\t\treturn { start, end, type, name, expression };\n\t\t},\n\t\tallowedExpressionTypes: ['Identifier', 'MemberExpression', 'ObjectExpression', 'Literal', 'CallExpression'],\n\t\terror: 'Data passed to actions must be an identifier (e.g. `foo`), a member expression ' +\n\t\t\t'(e.g. `foo.bar` or `foo[baz]`), a method call (e.g. `foo()`), or a literal (e.g. `true` or `\\'a string\\'`'\n\t},\n};\n\n\nconst lookupByName = {};\n\nObject.keys(DIRECTIVES).forEach(name => {\n\tconst directive = DIRECTIVES[name];\n\tdirective.names.forEach(type => lookupByName[type] = name);\n});\n\nfunction readExpression(parser: Parser, start: number, quoteMark: string|null) {\n\tlet str = '';\n\tlet escaped = false;\n\n\tfor (let i = start; i < parser.template.length; i += 1) {\n\t\tconst char = parser.template[i];\n\n\t\tif (quoteMark) {\n\t\t\tif (char === quoteMark) {\n\t\t\t\tif (escaped) {\n\t\t\t\t\tstr += quoteMark;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (escaped) {\n\t\t\t\tstr += '\\\\' + char;\n\t\t\t\tescaped = false;\n\t\t\t} else if (char === '\\\\') {\n\t\t\t\tescaped = true;\n\t\t\t} else {\n\t\t\t\tstr += char;\n\t\t\t}\n\t\t} else if (/[\\s\\/>]/.test(char)) {\n\t\t\tbreak;\n\t\t} else {\n\t\t\tstr += char;\n\t\t}\n\t}\n\n\tconst expression = parseExpressionAt(repeat(' ', start) + str, start, {\n\t\tecmaVersion: 9,\n\t});\n\tparser.index = expression.end;\n\n\tparser.allowWhitespace();\n\tif (quoteMark) parser.eat(quoteMark, true);\n\n\treturn expression;\n}\n\nexport function readDirective(\n\tparser: Parser,\n\tstart: number,\n\tattrName: string\n) {\n\tconst [directiveName, name] = attrName.split(':');\n\tif (name === undefined) return; // No colon in the name\n\n\tif (directiveName === '') {\n\t\t// not a directive — :foo is short for foo={{foo}}\n\t\treturn {\n\t\t\tstart: start,\n\t\t\tend: start + name.length + 1,\n\t\t\ttype: 'Attribute',\n\t\t\tname,\n\t\t\tvalue: getShorthandValue(start + 1, name)\n\t\t};\n\t}\n\n\tconst type = lookupByName[directiveName];\n\tif (!type) return; // not a registered directive\n\n\tconst directive = DIRECTIVES[type];\n\tlet expression = null;\n\n\tif (parser.eat('=')) {\n\t\tconst quoteMark = parser.eat(`'`) ? `'` : parser.eat(`\"`) ? `\"` : null;\n\n\t\tconst expressionStart = parser.index;\n\n\t\ttry {\n\t\t\texpression = readExpression(parser, expressionStart, quoteMark);\n\t\t\tif (directive.allowedExpressionTypes.indexOf(expression.type) === -1) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-directive-value`,\n\t\t\t\t\tmessage: directive.error\n\t\t\t\t}, expressionStart);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tif (parser.template[expressionStart] === '{') {\n\t\t\t\t// assume the mistake was wrapping the directive arguments.\n\t\t\t\t// this could yield false positives! but hopefully not too many\n\t\t\t\tlet message = 'directive values should not be wrapped';\n\t\t\t\tconst expressionEnd = parser.template.indexOf('}', expressionStart);\n\t\t\t\tif (expressionEnd !== -1) {\n\t\t\t\t\tconst value = parser.template.slice(expressionStart + 1, expressionEnd);\n\t\t\t\t\tmessage += ` — use '${value}', not '{${value}}'`;\n\t\t\t\t}\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-directive-value`,\n\t\t\t\t\tmessage\n\t\t\t\t}, expressionStart);\n\t\t\t}\n\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn directive.attribute(start, parser.index, type, name, expression, directiveName);\n}\n\n\nfunction getShorthandValue(start: number, name: string) {\n\tconst end = start + name.length;\n\n\treturn [\n\t\t{\n\t\t\ttype: 'AttributeShorthand',\n\t\t\tstart,\n\t\t\tend,\n\t\t\texpression: {\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\tname,\n\t\t\t},\n\t\t},\n\t];\n}\n","// https://dev.w3.org/html5/html-author/charref\nexport default {\n\tCounterClockwiseContourIntegral: 8755,\n\tClockwiseContourIntegral: 8754,\n\tDoubleLongLeftRightArrow: 10234,\n\tDiacriticalDoubleAcute: 733,\n\tNotSquareSupersetEqual: 8931,\n\tCloseCurlyDoubleQuote: 8221,\n\tDoubleContourIntegral: 8751,\n\tFilledVerySmallSquare: 9642,\n\tNegativeVeryThinSpace: 8203,\n\tNotPrecedesSlantEqual: 8928,\n\tNotRightTriangleEqual: 8941,\n\tNotSucceedsSlantEqual: 8929,\n\tCapitalDifferentialD: 8517,\n\tDoubleLeftRightArrow: 8660,\n\tDoubleLongRightArrow: 10233,\n\tEmptyVerySmallSquare: 9643,\n\tNestedGreaterGreater: 8811,\n\tNotDoubleVerticalBar: 8742,\n\tNotLeftTriangleEqual: 8940,\n\tNotSquareSubsetEqual: 8930,\n\tOpenCurlyDoubleQuote: 8220,\n\tReverseUpEquilibrium: 10607,\n\tDoubleLongLeftArrow: 10232,\n\tDownLeftRightVector: 10576,\n\tLeftArrowRightArrow: 8646,\n\tNegativeMediumSpace: 8203,\n\tRightArrowLeftArrow: 8644,\n\tSquareSupersetEqual: 8850,\n\tleftrightsquigarrow: 8621,\n\tDownRightTeeVector: 10591,\n\tDownRightVectorBar: 10583,\n\tLongLeftRightArrow: 10231,\n\tLongleftrightarrow: 10234,\n\tNegativeThickSpace: 8203,\n\tPrecedesSlantEqual: 8828,\n\tReverseEquilibrium: 8651,\n\tRightDoubleBracket: 10215,\n\tRightDownTeeVector: 10589,\n\tRightDownVectorBar: 10581,\n\tRightTriangleEqual: 8885,\n\tSquareIntersection: 8851,\n\tSucceedsSlantEqual: 8829,\n\tblacktriangleright: 9656,\n\tlongleftrightarrow: 10231,\n\tDoubleUpDownArrow: 8661,\n\tDoubleVerticalBar: 8741,\n\tDownLeftTeeVector: 10590,\n\tDownLeftVectorBar: 10582,\n\tFilledSmallSquare: 9724,\n\tGreaterSlantEqual: 10878,\n\tLeftDoubleBracket: 10214,\n\tLeftDownTeeVector: 10593,\n\tLeftDownVectorBar: 10585,\n\tLeftTriangleEqual: 8884,\n\tNegativeThinSpace: 8203,\n\tNotReverseElement: 8716,\n\tNotTildeFullEqual: 8775,\n\tRightAngleBracket: 10217,\n\tRightUpDownVector: 10575,\n\tSquareSubsetEqual: 8849,\n\tVerticalSeparator: 10072,\n\tblacktriangledown: 9662,\n\tblacktriangleleft: 9666,\n\tleftrightharpoons: 8651,\n\trightleftharpoons: 8652,\n\ttwoheadrightarrow: 8608,\n\tDiacriticalAcute: 180,\n\tDiacriticalGrave: 96,\n\tDiacriticalTilde: 732,\n\tDoubleRightArrow: 8658,\n\tDownArrowUpArrow: 8693,\n\tEmptySmallSquare: 9723,\n\tGreaterEqualLess: 8923,\n\tGreaterFullEqual: 8807,\n\tLeftAngleBracket: 10216,\n\tLeftUpDownVector: 10577,\n\tLessEqualGreater: 8922,\n\tNonBreakingSpace: 160,\n\tNotRightTriangle: 8939,\n\tNotSupersetEqual: 8841,\n\tRightTriangleBar: 10704,\n\tRightUpTeeVector: 10588,\n\tRightUpVectorBar: 10580,\n\tUnderParenthesis: 9181,\n\tUpArrowDownArrow: 8645,\n\tcirclearrowright: 8635,\n\tdownharpoonright: 8642,\n\tntrianglerighteq: 8941,\n\trightharpoondown: 8641,\n\trightrightarrows: 8649,\n\ttwoheadleftarrow: 8606,\n\tvartriangleright: 8883,\n\tCloseCurlyQuote: 8217,\n\tContourIntegral: 8750,\n\tDoubleDownArrow: 8659,\n\tDoubleLeftArrow: 8656,\n\tDownRightVector: 8641,\n\tLeftRightVector: 10574,\n\tLeftTriangleBar: 10703,\n\tLeftUpTeeVector: 10592,\n\tLeftUpVectorBar: 10584,\n\tLowerRightArrow: 8600,\n\tNotGreaterEqual: 8817,\n\tNotGreaterTilde: 8821,\n\tNotLeftTriangle: 8938,\n\tOverParenthesis: 9180,\n\tRightDownVector: 8642,\n\tShortRightArrow: 8594,\n\tUpperRightArrow: 8599,\n\tbigtriangledown: 9661,\n\tcirclearrowleft: 8634,\n\tcurvearrowright: 8631,\n\tdownharpoonleft: 8643,\n\tleftharpoondown: 8637,\n\tleftrightarrows: 8646,\n\tnLeftrightarrow: 8654,\n\tnleftrightarrow: 8622,\n\tntrianglelefteq: 8940,\n\trightleftarrows: 8644,\n\trightsquigarrow: 8605,\n\trightthreetimes: 8908,\n\tstraightepsilon: 1013,\n\ttrianglerighteq: 8885,\n\tvartriangleleft: 8882,\n\tDiacriticalDot: 729,\n\tDoubleRightTee: 8872,\n\tDownLeftVector: 8637,\n\tGreaterGreater: 10914,\n\tHorizontalLine: 9472,\n\tInvisibleComma: 8291,\n\tInvisibleTimes: 8290,\n\tLeftDownVector: 8643,\n\tLeftRightArrow: 8596,\n\tLeftrightarrow: 8660,\n\tLessSlantEqual: 10877,\n\tLongRightArrow: 10230,\n\tLongrightarrow: 10233,\n\tLowerLeftArrow: 8601,\n\tNestedLessLess: 8810,\n\tNotGreaterLess: 8825,\n\tNotLessGreater: 8824,\n\tNotSubsetEqual: 8840,\n\tNotVerticalBar: 8740,\n\tOpenCurlyQuote: 8216,\n\tReverseElement: 8715,\n\tRightTeeVector: 10587,\n\tRightVectorBar: 10579,\n\tShortDownArrow: 8595,\n\tShortLeftArrow: 8592,\n\tSquareSuperset: 8848,\n\tTildeFullEqual: 8773,\n\tUpperLeftArrow: 8598,\n\tZeroWidthSpace: 8203,\n\tcurvearrowleft: 8630,\n\tdoublebarwedge: 8966,\n\tdowndownarrows: 8650,\n\thookrightarrow: 8618,\n\tleftleftarrows: 8647,\n\tleftrightarrow: 8596,\n\tleftthreetimes: 8907,\n\tlongrightarrow: 10230,\n\tlooparrowright: 8620,\n\tnshortparallel: 8742,\n\tntriangleright: 8939,\n\trightarrowtail: 8611,\n\trightharpoonup: 8640,\n\ttrianglelefteq: 8884,\n\tupharpoonright: 8638,\n\tApplyFunction: 8289,\n\tDifferentialD: 8518,\n\tDoubleLeftTee: 10980,\n\tDoubleUpArrow: 8657,\n\tLeftTeeVector: 10586,\n\tLeftVectorBar: 10578,\n\tLessFullEqual: 8806,\n\tLongLeftArrow: 10229,\n\tLongleftarrow: 10232,\n\tNotTildeEqual: 8772,\n\tNotTildeTilde: 8777,\n\tPoincareplane: 8460,\n\tPrecedesEqual: 10927,\n\tPrecedesTilde: 8830,\n\tRightArrowBar: 8677,\n\tRightTeeArrow: 8614,\n\tRightTriangle: 8883,\n\tRightUpVector: 8638,\n\tSucceedsEqual: 10928,\n\tSucceedsTilde: 8831,\n\tSupersetEqual: 8839,\n\tUpEquilibrium: 10606,\n\tVerticalTilde: 8768,\n\tVeryThinSpace: 8202,\n\tbigtriangleup: 9651,\n\tblacktriangle: 9652,\n\tdivideontimes: 8903,\n\tfallingdotseq: 8786,\n\thookleftarrow: 8617,\n\tleftarrowtail: 8610,\n\tleftharpoonup: 8636,\n\tlongleftarrow: 10229,\n\tlooparrowleft: 8619,\n\tmeasuredangle: 8737,\n\tntriangleleft: 8938,\n\tshortparallel: 8741,\n\tsmallsetminus: 8726,\n\ttriangleright: 9657,\n\tupharpoonleft: 8639,\n\tDownArrowBar: 10515,\n\tDownTeeArrow: 8615,\n\tExponentialE: 8519,\n\tGreaterEqual: 8805,\n\tGreaterTilde: 8819,\n\tHilbertSpace: 8459,\n\tHumpDownHump: 8782,\n\tIntersection: 8898,\n\tLeftArrowBar: 8676,\n\tLeftTeeArrow: 8612,\n\tLeftTriangle: 8882,\n\tLeftUpVector: 8639,\n\tNotCongruent: 8802,\n\tNotLessEqual: 8816,\n\tNotLessTilde: 8820,\n\tProportional: 8733,\n\tRightCeiling: 8969,\n\tRoundImplies: 10608,\n\tShortUpArrow: 8593,\n\tSquareSubset: 8847,\n\tUnderBracket: 9141,\n\tVerticalLine: 124,\n\tblacklozenge: 10731,\n\texponentiale: 8519,\n\trisingdotseq: 8787,\n\ttriangledown: 9663,\n\ttriangleleft: 9667,\n\tCircleMinus: 8854,\n\tCircleTimes: 8855,\n\tEquilibrium: 8652,\n\tGreaterLess: 8823,\n\tLeftCeiling: 8968,\n\tLessGreater: 8822,\n\tMediumSpace: 8287,\n\tNotPrecedes: 8832,\n\tNotSucceeds: 8833,\n\tOverBracket: 9140,\n\tRightVector: 8640,\n\tRrightarrow: 8667,\n\tRuleDelayed: 10740,\n\tSmallCircle: 8728,\n\tSquareUnion: 8852,\n\tSubsetEqual: 8838,\n\tUpDownArrow: 8597,\n\tUpdownarrow: 8661,\n\tVerticalBar: 8739,\n\tbackepsilon: 1014,\n\tblacksquare: 9642,\n\tcircledcirc: 8858,\n\tcircleddash: 8861,\n\tcurlyeqprec: 8926,\n\tcurlyeqsucc: 8927,\n\tdiamondsuit: 9830,\n\teqslantless: 10901,\n\texpectation: 8496,\n\tnRightarrow: 8655,\n\tnrightarrow: 8603,\n\tpreccurlyeq: 8828,\n\tprecnapprox: 10937,\n\tquaternions: 8461,\n\tstraightphi: 981,\n\tsucccurlyeq: 8829,\n\tsuccnapprox: 10938,\n\tthickapprox: 8776,\n\tupdownarrow: 8597,\n\tBernoullis: 8492,\n\tCirclePlus: 8853,\n\tEqualTilde: 8770,\n\tFouriertrf: 8497,\n\tImaginaryI: 8520,\n\tLaplacetrf: 8466,\n\tLeftVector: 8636,\n\tLleftarrow: 8666,\n\tNotElement: 8713,\n\tNotGreater: 8815,\n\tProportion: 8759,\n\tRightArrow: 8594,\n\tRightFloor: 8971,\n\tRightarrow: 8658,\n\tTildeEqual: 8771,\n\tTildeTilde: 8776,\n\tUnderBrace: 9183,\n\tUpArrowBar: 10514,\n\tUpTeeArrow: 8613,\n\tcircledast: 8859,\n\tcomplement: 8705,\n\tcurlywedge: 8911,\n\teqslantgtr: 10902,\n\tgtreqqless: 10892,\n\tlessapprox: 10885,\n\tlesseqqgtr: 10891,\n\tlmoustache: 9136,\n\tlongmapsto: 10236,\n\tmapstodown: 8615,\n\tmapstoleft: 8612,\n\tnLeftarrow: 8653,\n\tnleftarrow: 8602,\n\tprecapprox: 10935,\n\trightarrow: 8594,\n\trmoustache: 9137,\n\tsqsubseteq: 8849,\n\tsqsupseteq: 8850,\n\tsubsetneqq: 10955,\n\tsuccapprox: 10936,\n\tsupsetneqq: 10956,\n\tupuparrows: 8648,\n\tvarepsilon: 949,\n\tvarnothing: 8709,\n\tBackslash: 8726,\n\tCenterDot: 183,\n\tCircleDot: 8857,\n\tCongruent: 8801,\n\tCoproduct: 8720,\n\tDoubleDot: 168,\n\tDownArrow: 8595,\n\tDownBreve: 785,\n\tDownarrow: 8659,\n\tHumpEqual: 8783,\n\tLeftArrow: 8592,\n\tLeftFloor: 8970,\n\tLeftarrow: 8656,\n\tLessTilde: 8818,\n\tMellintrf: 8499,\n\tMinusPlus: 8723,\n\tNotCupCap: 8813,\n\tNotExists: 8708,\n\tOverBrace: 9182,\n\tPlusMinus: 177,\n\tTherefore: 8756,\n\tThinSpace: 8201,\n\tTripleDot: 8411,\n\tUnionPlus: 8846,\n\tbackprime: 8245,\n\tbacksimeq: 8909,\n\tbigotimes: 10754,\n\tcenterdot: 183,\n\tcheckmark: 10003,\n\tcomplexes: 8450,\n\tdotsquare: 8865,\n\tdownarrow: 8595,\n\tgtrapprox: 10886,\n\tgtreqless: 8923,\n\theartsuit: 9829,\n\tleftarrow: 8592,\n\tlesseqgtr: 8922,\n\tnparallel: 8742,\n\tnshortmid: 8740,\n\tnsubseteq: 8840,\n\tnsupseteq: 8841,\n\tpitchfork: 8916,\n\trationals: 8474,\n\tspadesuit: 9824,\n\tsubseteqq: 10949,\n\tsubsetneq: 8842,\n\tsupseteqq: 10950,\n\tsupsetneq: 8843,\n\ttherefore: 8756,\n\ttriangleq: 8796,\n\tvarpropto: 8733,\n\tDDotrahd: 10513,\n\tDotEqual: 8784,\n\tIntegral: 8747,\n\tLessLess: 10913,\n\tNotEqual: 8800,\n\tNotTilde: 8769,\n\tPartialD: 8706,\n\tPrecedes: 8826,\n\tRightTee: 8866,\n\tSucceeds: 8827,\n\tSuchThat: 8715,\n\tSuperset: 8835,\n\tUarrocir: 10569,\n\tUnderBar: 818,\n\tandslope: 10840,\n\tangmsdaa: 10664,\n\tangmsdab: 10665,\n\tangmsdac: 10666,\n\tangmsdad: 10667,\n\tangmsdae: 10668,\n\tangmsdaf: 10669,\n\tangmsdag: 10670,\n\tangmsdah: 10671,\n\tangrtvbd: 10653,\n\tapproxeq: 8778,\n\tawconint: 8755,\n\tbackcong: 8780,\n\tbarwedge: 8965,\n\tbbrktbrk: 9142,\n\tbigoplus: 10753,\n\tbigsqcup: 10758,\n\tbiguplus: 10756,\n\tbigwedge: 8896,\n\tboxminus: 8863,\n\tboxtimes: 8864,\n\tcapbrcup: 10825,\n\tcircledR: 174,\n\tcircledS: 9416,\n\tcirfnint: 10768,\n\tclubsuit: 9827,\n\tcupbrcap: 10824,\n\tcurlyvee: 8910,\n\tcwconint: 8754,\n\tdoteqdot: 8785,\n\tdotminus: 8760,\n\tdrbkarow: 10512,\n\tdzigrarr: 10239,\n\telinters: 9191,\n\temptyset: 8709,\n\teqvparsl: 10725,\n\tfpartint: 10765,\n\tgeqslant: 10878,\n\tgesdotol: 10884,\n\tgnapprox: 10890,\n\thksearow: 10533,\n\thkswarow: 10534,\n\timagline: 8464,\n\timagpart: 8465,\n\tinfintie: 10717,\n\tintegers: 8484,\n\tintercal: 8890,\n\tintlarhk: 10775,\n\tlaemptyv: 10676,\n\tldrushar: 10571,\n\tleqslant: 10877,\n\tlesdotor: 10883,\n\tllcorner: 8990,\n\tlnapprox: 10889,\n\tlrcorner: 8991,\n\tlurdshar: 10570,\n\tmapstoup: 8613,\n\tmultimap: 8888,\n\tnaturals: 8469,\n\totimesas: 10806,\n\tparallel: 8741,\n\tplusacir: 10787,\n\tpointint: 10773,\n\tprecneqq: 10933,\n\tprecnsim: 8936,\n\tprofalar: 9006,\n\tprofline: 8978,\n\tprofsurf: 8979,\n\traemptyv: 10675,\n\trealpart: 8476,\n\trppolint: 10770,\n\trtriltri: 10702,\n\tscpolint: 10771,\n\tsetminus: 8726,\n\tshortmid: 8739,\n\tsmeparsl: 10724,\n\tsqsubset: 8847,\n\tsqsupset: 8848,\n\tsubseteq: 8838,\n\tsuccneqq: 10934,\n\tsuccnsim: 8937,\n\tsupseteq: 8839,\n\tthetasym: 977,\n\tthicksim: 8764,\n\ttimesbar: 10801,\n\ttriangle: 9653,\n\ttriminus: 10810,\n\ttrpezium: 9186,\n\tulcorner: 8988,\n\turcorner: 8989,\n\tvarkappa: 1008,\n\tvarsigma: 962,\n\tvartheta: 977,\n\tBecause: 8757,\n\tCayleys: 8493,\n\tCconint: 8752,\n\tCedilla: 184,\n\tDiamond: 8900,\n\tDownTee: 8868,\n\tElement: 8712,\n\tEpsilon: 917,\n\tImplies: 8658,\n\tLeftTee: 8867,\n\tNewLine: 10,\n\tNoBreak: 8288,\n\tNotLess: 8814,\n\tOmicron: 927,\n\tOverBar: 175,\n\tProduct: 8719,\n\tUpArrow: 8593,\n\tUparrow: 8657,\n\tUpsilon: 933,\n\talefsym: 8501,\n\tangrtvb: 8894,\n\tangzarr: 9084,\n\tasympeq: 8781,\n\tbacksim: 8765,\n\tbecause: 8757,\n\tbemptyv: 10672,\n\tbetween: 8812,\n\tbigcirc: 9711,\n\tbigodot: 10752,\n\tbigstar: 9733,\n\tboxplus: 8862,\n\tccupssm: 10832,\n\tcemptyv: 10674,\n\tcirscir: 10690,\n\tcoloneq: 8788,\n\tcongdot: 10861,\n\tcudarrl: 10552,\n\tcudarrr: 10549,\n\tcularrp: 10557,\n\tcurarrm: 10556,\n\tdbkarow: 10511,\n\tddagger: 8225,\n\tddotseq: 10871,\n\tdemptyv: 10673,\n\tdiamond: 8900,\n\tdigamma: 989,\n\tdotplus: 8724,\n\tdwangle: 10662,\n\tepsilon: 949,\n\teqcolon: 8789,\n\tequivDD: 10872,\n\tgesdoto: 10882,\n\tgtquest: 10876,\n\tgtrless: 8823,\n\tharrcir: 10568,\n\tintprod: 10812,\n\tisindot: 8949,\n\tlarrbfs: 10527,\n\tlarrsim: 10611,\n\tlbrksld: 10639,\n\tlbrkslu: 10637,\n\tldrdhar: 10599,\n\tlesdoto: 10881,\n\tlessdot: 8918,\n\tlessgtr: 8822,\n\tlesssim: 8818,\n\tlotimes: 10804,\n\tlozenge: 9674,\n\tltquest: 10875,\n\tluruhar: 10598,\n\tmaltese: 10016,\n\tminusdu: 10794,\n\tnapprox: 8777,\n\tnatural: 9838,\n\tnearrow: 8599,\n\tnexists: 8708,\n\tnotinva: 8713,\n\tnotinvb: 8951,\n\tnotinvc: 8950,\n\tnotniva: 8716,\n\tnotnivb: 8958,\n\tnotnivc: 8957,\n\tnpolint: 10772,\n\tnsqsube: 8930,\n\tnsqsupe: 8931,\n\tnvinfin: 10718,\n\tnwarrow: 8598,\n\tolcross: 10683,\n\tomicron: 959,\n\torderof: 8500,\n\torslope: 10839,\n\tpertenk: 8241,\n\tplanckh: 8462,\n\tpluscir: 10786,\n\tplussim: 10790,\n\tplustwo: 10791,\n\tprecsim: 8830,\n\tquatint: 10774,\n\tquesteq: 8799,\n\trarrbfs: 10528,\n\trarrsim: 10612,\n\trbrksld: 10638,\n\trbrkslu: 10640,\n\trdldhar: 10601,\n\trealine: 8475,\n\trotimes: 10805,\n\truluhar: 10600,\n\tsearrow: 8600,\n\tsimplus: 10788,\n\tsimrarr: 10610,\n\tsubedot: 10947,\n\tsubmult: 10945,\n\tsubplus: 10943,\n\tsubrarr: 10617,\n\tsuccsim: 8831,\n\tsupdsub: 10968,\n\tsupedot: 10948,\n\tsuphsub: 10967,\n\tsuplarr: 10619,\n\tsupmult: 10946,\n\tsupplus: 10944,\n\tswarrow: 8601,\n\ttopfork: 10970,\n\ttriplus: 10809,\n\ttritime: 10811,\n\tuparrow: 8593,\n\tupsilon: 965,\n\tuwangle: 10663,\n\tvzigzag: 10650,\n\tzigrarr: 8669,\n\tAacute: 193,\n\tAbreve: 258,\n\tAgrave: 192,\n\tAssign: 8788,\n\tAtilde: 195,\n\tBarwed: 8966,\n\tBumpeq: 8782,\n\tCacute: 262,\n\tCcaron: 268,\n\tCcedil: 199,\n\tColone: 10868,\n\tConint: 8751,\n\tCupCap: 8781,\n\tDagger: 8225,\n\tDcaron: 270,\n\tDotDot: 8412,\n\tDstrok: 272,\n\tEacute: 201,\n\tEcaron: 282,\n\tEgrave: 200,\n\tExists: 8707,\n\tForAll: 8704,\n\tGammad: 988,\n\tGbreve: 286,\n\tGcedil: 290,\n\tHARDcy: 1066,\n\tHstrok: 294,\n\tIacute: 205,\n\tIgrave: 204,\n\tItilde: 296,\n\tJsercy: 1032,\n\tKcedil: 310,\n\tLacute: 313,\n\tLambda: 923,\n\tLcaron: 317,\n\tLcedil: 315,\n\tLmidot: 319,\n\tLstrok: 321,\n\tNacute: 323,\n\tNcaron: 327,\n\tNcedil: 325,\n\tNtilde: 209,\n\tOacute: 211,\n\tOdblac: 336,\n\tOgrave: 210,\n\tOslash: 216,\n\tOtilde: 213,\n\tOtimes: 10807,\n\tRacute: 340,\n\tRarrtl: 10518,\n\tRcaron: 344,\n\tRcedil: 342,\n\tSHCHcy: 1065,\n\tSOFTcy: 1068,\n\tSacute: 346,\n\tScaron: 352,\n\tScedil: 350,\n\tSquare: 9633,\n\tSubset: 8912,\n\tSupset: 8913,\n\tTcaron: 356,\n\tTcedil: 354,\n\tTstrok: 358,\n\tUacute: 218,\n\tUbreve: 364,\n\tUdblac: 368,\n\tUgrave: 217,\n\tUtilde: 360,\n\tVdashl: 10982,\n\tVerbar: 8214,\n\tVvdash: 8874,\n\tYacute: 221,\n\tZacute: 377,\n\tZcaron: 381,\n\taacute: 225,\n\tabreve: 259,\n\tagrave: 224,\n\tandand: 10837,\n\tangmsd: 8737,\n\tangsph: 8738,\n\tapacir: 10863,\n\tapprox: 8776,\n\tatilde: 227,\n\tbarvee: 8893,\n\tbarwed: 8965,\n\tbecaus: 8757,\n\tbernou: 8492,\n\tbigcap: 8898,\n\tbigcup: 8899,\n\tbigvee: 8897,\n\tbkarow: 10509,\n\tbottom: 8869,\n\tbowtie: 8904,\n\tboxbox: 10697,\n\tbprime: 8245,\n\tbrvbar: 166,\n\tbullet: 8226,\n\tbumpeq: 8783,\n\tcacute: 263,\n\tcapand: 10820,\n\tcapcap: 10827,\n\tcapcup: 10823,\n\tcapdot: 10816,\n\tccaron: 269,\n\tccedil: 231,\n\tcirceq: 8791,\n\tcirmid: 10991,\n\tcolone: 8788,\n\tcommat: 64,\n\tcompfn: 8728,\n\tconint: 8750,\n\tcoprod: 8720,\n\tcopysr: 8471,\n\tcularr: 8630,\n\tcupcap: 10822,\n\tcupcup: 10826,\n\tcupdot: 8845,\n\tcurarr: 8631,\n\tcurren: 164,\n\tcylcty: 9005,\n\tdagger: 8224,\n\tdaleth: 8504,\n\tdcaron: 271,\n\tdfisht: 10623,\n\tdivide: 247,\n\tdivonx: 8903,\n\tdlcorn: 8990,\n\tdlcrop: 8973,\n\tdollar: 36,\n\tdrcorn: 8991,\n\tdrcrop: 8972,\n\tdstrok: 273,\n\teacute: 233,\n\teaster: 10862,\n\tecaron: 283,\n\tecolon: 8789,\n\tegrave: 232,\n\tegsdot: 10904,\n\telsdot: 10903,\n\temptyv: 8709,\n\temsp13: 8196,\n\temsp14: 8197,\n\teparsl: 10723,\n\teqcirc: 8790,\n\tequals: 61,\n\tequest: 8799,\n\tfemale: 9792,\n\tffilig: 64259,\n\tffllig: 64260,\n\tforall: 8704,\n\tfrac12: 189,\n\tfrac13: 8531,\n\tfrac14: 188,\n\tfrac15: 8533,\n\tfrac16: 8537,\n\tfrac18: 8539,\n\tfrac23: 8532,\n\tfrac25: 8534,\n\tfrac34: 190,\n\tfrac35: 8535,\n\tfrac38: 8540,\n\tfrac45: 8536,\n\tfrac56: 8538,\n\tfrac58: 8541,\n\tfrac78: 8542,\n\tgacute: 501,\n\tgammad: 989,\n\tgbreve: 287,\n\tgesdot: 10880,\n\tgesles: 10900,\n\tgtlPar: 10645,\n\tgtrarr: 10616,\n\tgtrdot: 8919,\n\tgtrsim: 8819,\n\thairsp: 8202,\n\thamilt: 8459,\n\thardcy: 1098,\n\thearts: 9829,\n\thellip: 8230,\n\thercon: 8889,\n\thomtht: 8763,\n\thorbar: 8213,\n\thslash: 8463,\n\thstrok: 295,\n\thybull: 8259,\n\thyphen: 8208,\n\tiacute: 237,\n\tigrave: 236,\n\tiiiint: 10764,\n\tiinfin: 10716,\n\tincare: 8453,\n\tinodot: 305,\n\tintcal: 8890,\n\tiquest: 191,\n\tisinsv: 8947,\n\titilde: 297,\n\tjsercy: 1112,\n\tkappav: 1008,\n\tkcedil: 311,\n\tkgreen: 312,\n\tlAtail: 10523,\n\tlacute: 314,\n\tlagran: 8466,\n\tlambda: 955,\n\tlangle: 10216,\n\tlarrfs: 10525,\n\tlarrhk: 8617,\n\tlarrlp: 8619,\n\tlarrpl: 10553,\n\tlarrtl: 8610,\n\tlatail: 10521,\n\tlbrace: 123,\n\tlbrack: 91,\n\tlcaron: 318,\n\tlcedil: 316,\n\tldquor: 8222,\n\tlesdot: 10879,\n\tlesges: 10899,\n\tlfisht: 10620,\n\tlfloor: 8970,\n\tlharul: 10602,\n\tllhard: 10603,\n\tlmidot: 320,\n\tlmoust: 9136,\n\tloplus: 10797,\n\tlowast: 8727,\n\tlowbar: 95,\n\tlparlt: 10643,\n\tlrhard: 10605,\n\tlsaquo: 8249,\n\tlsquor: 8218,\n\tlstrok: 322,\n\tlthree: 8907,\n\tltimes: 8905,\n\tltlarr: 10614,\n\tltrPar: 10646,\n\tmapsto: 8614,\n\tmarker: 9646,\n\tmcomma: 10793,\n\tmidast: 42,\n\tmidcir: 10992,\n\tmiddot: 183,\n\tminusb: 8863,\n\tminusd: 8760,\n\tmnplus: 8723,\n\tmodels: 8871,\n\tmstpos: 8766,\n\tnVDash: 8879,\n\tnVdash: 8878,\n\tnacute: 324,\n\tncaron: 328,\n\tncedil: 326,\n\tnearhk: 10532,\n\tnequiv: 8802,\n\tnesear: 10536,\n\tnexist: 8708,\n\tnltrie: 8940,\n\tnprcue: 8928,\n\tnrtrie: 8941,\n\tnsccue: 8929,\n\tnsimeq: 8772,\n\tntilde: 241,\n\tnumero: 8470,\n\tnvDash: 8877,\n\tnvHarr: 10500,\n\tnvdash: 8876,\n\tnvlArr: 10498,\n\tnvrArr: 10499,\n\tnwarhk: 10531,\n\tnwnear: 10535,\n\toacute: 243,\n\todblac: 337,\n\todsold: 10684,\n\tograve: 242,\n\tominus: 8854,\n\torigof: 8886,\n\toslash: 248,\n\totilde: 245,\n\totimes: 8855,\n\tparsim: 10995,\n\tpercnt: 37,\n\tperiod: 46,\n\tpermil: 8240,\n\tphmmat: 8499,\n\tplanck: 8463,\n\tplankv: 8463,\n\tplusdo: 8724,\n\tplusdu: 10789,\n\tplusmn: 177,\n\tpreceq: 10927,\n\tprimes: 8473,\n\tprnsim: 8936,\n\tpropto: 8733,\n\tprurel: 8880,\n\tpuncsp: 8200,\n\tqprime: 8279,\n\trAtail: 10524,\n\tracute: 341,\n\trangle: 10217,\n\trarrap: 10613,\n\trarrfs: 10526,\n\trarrhk: 8618,\n\trarrlp: 8620,\n\trarrpl: 10565,\n\trarrtl: 8611,\n\tratail: 10522,\n\trbrace: 125,\n\trbrack: 93,\n\trcaron: 345,\n\trcedil: 343,\n\trdquor: 8221,\n\trfisht: 10621,\n\trfloor: 8971,\n\trharul: 10604,\n\trmoust: 9137,\n\troplus: 10798,\n\trpargt: 10644,\n\trsaquo: 8250,\n\trsquor: 8217,\n\trthree: 8908,\n\trtimes: 8906,\n\tsacute: 347,\n\tscaron: 353,\n\tscedil: 351,\n\tscnsim: 8937,\n\tsearhk: 10533,\n\tseswar: 10537,\n\tsfrown: 8994,\n\tshchcy: 1097,\n\tsigmaf: 962,\n\tsigmav: 962,\n\tsimdot: 10858,\n\tsmashp: 10803,\n\tsoftcy: 1100,\n\tsolbar: 9023,\n\tspades: 9824,\n\tsqsube: 8849,\n\tsqsupe: 8850,\n\tsquare: 9633,\n\tsquarf: 9642,\n\tssetmn: 8726,\n\tssmile: 8995,\n\tsstarf: 8902,\n\tsubdot: 10941,\n\tsubset: 8834,\n\tsubsim: 10951,\n\tsubsub: 10965,\n\tsubsup: 10963,\n\tsucceq: 10928,\n\tsupdot: 10942,\n\tsupset: 8835,\n\tsupsim: 10952,\n\tsupsub: 10964,\n\tsupsup: 10966,\n\tswarhk: 10534,\n\tswnwar: 10538,\n\ttarget: 8982,\n\ttcaron: 357,\n\ttcedil: 355,\n\ttelrec: 8981,\n\tthere4: 8756,\n\tthetav: 977,\n\tthinsp: 8201,\n\tthksim: 8764,\n\ttimesb: 8864,\n\ttimesd: 10800,\n\ttopbot: 9014,\n\ttopcir: 10993,\n\ttprime: 8244,\n\ttridot: 9708,\n\ttstrok: 359,\n\tuacute: 250,\n\tubreve: 365,\n\tudblac: 369,\n\tufisht: 10622,\n\tugrave: 249,\n\tulcorn: 8988,\n\tulcrop: 8975,\n\turcorn: 8989,\n\turcrop: 8974,\n\tutilde: 361,\n\tvangrt: 10652,\n\tvarphi: 966,\n\tvarrho: 1009,\n\tveebar: 8891,\n\tvellip: 8942,\n\tverbar: 124,\n\twedbar: 10847,\n\twedgeq: 8793,\n\tweierp: 8472,\n\twreath: 8768,\n\txoplus: 10753,\n\txotime: 10754,\n\txsqcup: 10758,\n\txuplus: 10756,\n\txwedge: 8896,\n\tyacute: 253,\n\tzacute: 378,\n\tzcaron: 382,\n\tzeetrf: 8488,\n\tAElig: 198,\n\tAcirc: 194,\n\tAlpha: 913,\n\tAmacr: 256,\n\tAogon: 260,\n\tAring: 197,\n\tBreve: 728,\n\tCcirc: 264,\n\tColon: 8759,\n\tCross: 10799,\n\tDashv: 10980,\n\tDelta: 916,\n\tEcirc: 202,\n\tEmacr: 274,\n\tEogon: 280,\n\tEqual: 10869,\n\tGamma: 915,\n\tGcirc: 284,\n\tHacek: 711,\n\tHcirc: 292,\n\tIJlig: 306,\n\tIcirc: 206,\n\tImacr: 298,\n\tIogon: 302,\n\tIukcy: 1030,\n\tJcirc: 308,\n\tJukcy: 1028,\n\tKappa: 922,\n\tOElig: 338,\n\tOcirc: 212,\n\tOmacr: 332,\n\tOmega: 937,\n\tPrime: 8243,\n\tRBarr: 10512,\n\tScirc: 348,\n\tSigma: 931,\n\tTHORN: 222,\n\tTRADE: 8482,\n\tTSHcy: 1035,\n\tTheta: 920,\n\tTilde: 8764,\n\tUbrcy: 1038,\n\tUcirc: 219,\n\tUmacr: 362,\n\tUnion: 8899,\n\tUogon: 370,\n\tUpTee: 8869,\n\tUring: 366,\n\tVDash: 8875,\n\tVdash: 8873,\n\tWcirc: 372,\n\tWedge: 8896,\n\tYcirc: 374,\n\tacirc: 226,\n\tacute: 180,\n\taelig: 230,\n\taleph: 8501,\n\talpha: 945,\n\tamacr: 257,\n\tamalg: 10815,\n\tangle: 8736,\n\tangrt: 8735,\n\tangst: 8491,\n\taogon: 261,\n\taring: 229,\n\tasymp: 8776,\n\tawint: 10769,\n\tbcong: 8780,\n\tbdquo: 8222,\n\tbepsi: 1014,\n\tblank: 9251,\n\tblk12: 9618,\n\tblk14: 9617,\n\tblk34: 9619,\n\tblock: 9608,\n\tboxDL: 9559,\n\tboxDR: 9556,\n\tboxDl: 9558,\n\tboxDr: 9555,\n\tboxHD: 9574,\n\tboxHU: 9577,\n\tboxHd: 9572,\n\tboxHu: 9575,\n\tboxUL: 9565,\n\tboxUR: 9562,\n\tboxUl: 9564,\n\tboxUr: 9561,\n\tboxVH: 9580,\n\tboxVL: 9571,\n\tboxVR: 9568,\n\tboxVh: 9579,\n\tboxVl: 9570,\n\tboxVr: 9567,\n\tboxdL: 9557,\n\tboxdR: 9554,\n\tboxdl: 9488,\n\tboxdr: 9484,\n\tboxhD: 9573,\n\tboxhU: 9576,\n\tboxhd: 9516,\n\tboxhu: 9524,\n\tboxuL: 9563,\n\tboxuR: 9560,\n\tboxul: 9496,\n\tboxur: 9492,\n\tboxvH: 9578,\n\tboxvL: 9569,\n\tboxvR: 9566,\n\tboxvh: 9532,\n\tboxvl: 9508,\n\tboxvr: 9500,\n\tbreve: 728,\n\tbsemi: 8271,\n\tbsime: 8909,\n\tbsolb: 10693,\n\tbumpE: 10926,\n\tbumpe: 8783,\n\tcaret: 8257,\n\tcaron: 711,\n\tccaps: 10829,\n\tccirc: 265,\n\tccups: 10828,\n\tcedil: 184,\n\tcheck: 10003,\n\tclubs: 9827,\n\tcolon: 58,\n\tcomma: 44,\n\tcrarr: 8629,\n\tcross: 10007,\n\tcsube: 10961,\n\tcsupe: 10962,\n\tctdot: 8943,\n\tcuepr: 8926,\n\tcuesc: 8927,\n\tcupor: 10821,\n\tcuvee: 8910,\n\tcuwed: 8911,\n\tcwint: 8753,\n\tdashv: 8867,\n\tdblac: 733,\n\tddarr: 8650,\n\tdelta: 948,\n\tdharl: 8643,\n\tdharr: 8642,\n\tdiams: 9830,\n\tdisin: 8946,\n\tdoteq: 8784,\n\tdtdot: 8945,\n\tdtrif: 9662,\n\tduarr: 8693,\n\tduhar: 10607,\n\teDDot: 10871,\n\tecirc: 234,\n\tefDot: 8786,\n\temacr: 275,\n\tempty: 8709,\n\teogon: 281,\n\teplus: 10865,\n\tepsiv: 949,\n\teqsim: 8770,\n\tequiv: 8801,\n\terDot: 8787,\n\terarr: 10609,\n\tesdot: 8784,\n\texist: 8707,\n\tfflig: 64256,\n\tfilig: 64257,\n\tfllig: 64258,\n\tfltns: 9649,\n\tforkv: 10969,\n\tfrasl: 8260,\n\tfrown: 8994,\n\tgamma: 947,\n\tgcirc: 285,\n\tgescc: 10921,\n\tgimel: 8503,\n\tgneqq: 8809,\n\tgnsim: 8935,\n\tgrave: 96,\n\tgsime: 10894,\n\tgsiml: 10896,\n\tgtcir: 10874,\n\tgtdot: 8919,\n\tharrw: 8621,\n\thcirc: 293,\n\thoarr: 8703,\n\ticirc: 238,\n\tiexcl: 161,\n\tiiint: 8749,\n\tiiota: 8489,\n\tijlig: 307,\n\timacr: 299,\n\timage: 8465,\n\timath: 305,\n\timped: 437,\n\tinfin: 8734,\n\tiogon: 303,\n\tiprod: 10812,\n\tisinE: 8953,\n\tisins: 8948,\n\tisinv: 8712,\n\tiukcy: 1110,\n\tjcirc: 309,\n\tjmath: 567,\n\tjukcy: 1108,\n\tkappa: 954,\n\tlAarr: 8666,\n\tlBarr: 10510,\n\tlangd: 10641,\n\tlaquo: 171,\n\tlarrb: 8676,\n\tlbarr: 10508,\n\tlbbrk: 10098,\n\tlbrke: 10635,\n\tlceil: 8968,\n\tldquo: 8220,\n\tlescc: 10920,\n\tlhard: 8637,\n\tlharu: 8636,\n\tlhblk: 9604,\n\tllarr: 8647,\n\tlltri: 9722,\n\tlneqq: 8808,\n\tlnsim: 8934,\n\tloang: 10220,\n\tloarr: 8701,\n\tlobrk: 10214,\n\tlopar: 10629,\n\tlrarr: 8646,\n\tlrhar: 8651,\n\tlrtri: 8895,\n\tlsime: 10893,\n\tlsimg: 10895,\n\tlsquo: 8216,\n\tltcir: 10873,\n\tltdot: 8918,\n\tltrie: 8884,\n\tltrif: 9666,\n\tmDDot: 8762,\n\tmdash: 8212,\n\tmicro: 181,\n\tminus: 8722,\n\tmumap: 8888,\n\tnabla: 8711,\n\tnapos: 329,\n\tnatur: 9838,\n\tncong: 8775,\n\tndash: 8211,\n\tneArr: 8663,\n\tnearr: 8599,\n\tngsim: 8821,\n\tnhArr: 8654,\n\tnharr: 8622,\n\tnhpar: 10994,\n\tnlArr: 8653,\n\tnlarr: 8602,\n\tnless: 8814,\n\tnlsim: 8820,\n\tnltri: 8938,\n\tnotin: 8713,\n\tnotni: 8716,\n\tnprec: 8832,\n\tnrArr: 8655,\n\tnrarr: 8603,\n\tnrtri: 8939,\n\tnsime: 8772,\n\tnsmid: 8740,\n\tnspar: 8742,\n\tnsube: 8840,\n\tnsucc: 8833,\n\tnsupe: 8841,\n\tnumsp: 8199,\n\tnwArr: 8662,\n\tnwarr: 8598,\n\tocirc: 244,\n\todash: 8861,\n\toelig: 339,\n\tofcir: 10687,\n\tohbar: 10677,\n\tolarr: 8634,\n\tolcir: 10686,\n\toline: 8254,\n\tomacr: 333,\n\tomega: 969,\n\toperp: 10681,\n\toplus: 8853,\n\torarr: 8635,\n\torder: 8500,\n\tovbar: 9021,\n\tparsl: 11005,\n\tphone: 9742,\n\tplusb: 8862,\n\tpluse: 10866,\n\tpound: 163,\n\tprcue: 8828,\n\tprime: 8242,\n\tprnap: 10937,\n\tprsim: 8830,\n\tquest: 63,\n\trAarr: 8667,\n\trBarr: 10511,\n\tradic: 8730,\n\trangd: 10642,\n\trange: 10661,\n\traquo: 187,\n\trarrb: 8677,\n\trarrc: 10547,\n\trarrw: 8605,\n\tratio: 8758,\n\trbarr: 10509,\n\trbbrk: 10099,\n\trbrke: 10636,\n\trceil: 8969,\n\trdquo: 8221,\n\treals: 8477,\n\trhard: 8641,\n\trharu: 8640,\n\trlarr: 8644,\n\trlhar: 8652,\n\trnmid: 10990,\n\troang: 10221,\n\troarr: 8702,\n\trobrk: 10215,\n\tropar: 10630,\n\trrarr: 8649,\n\trsquo: 8217,\n\trtrie: 8885,\n\trtrif: 9656,\n\tsbquo: 8218,\n\tsccue: 8829,\n\tscirc: 349,\n\tscnap: 10938,\n\tscsim: 8831,\n\tsdotb: 8865,\n\tsdote: 10854,\n\tseArr: 8664,\n\tsearr: 8600,\n\tsetmn: 8726,\n\tsharp: 9839,\n\tsigma: 963,\n\tsimeq: 8771,\n\tsimgE: 10912,\n\tsimlE: 10911,\n\tsimne: 8774,\n\tslarr: 8592,\n\tsmile: 8995,\n\tsqcap: 8851,\n\tsqcup: 8852,\n\tsqsub: 8847,\n\tsqsup: 8848,\n\tsrarr: 8594,\n\tstarf: 9733,\n\tstrns: 175,\n\tsubnE: 10955,\n\tsubne: 8842,\n\tsupnE: 10956,\n\tsupne: 8843,\n\tswArr: 8665,\n\tswarr: 8601,\n\tszlig: 223,\n\ttheta: 952,\n\tthkap: 8776,\n\tthorn: 254,\n\ttilde: 732,\n\ttimes: 215,\n\ttrade: 8482,\n\ttrisb: 10701,\n\ttshcy: 1115,\n\ttwixt: 8812,\n\tubrcy: 1118,\n\tucirc: 251,\n\tudarr: 8645,\n\tudhar: 10606,\n\tuharl: 8639,\n\tuharr: 8638,\n\tuhblk: 9600,\n\tultri: 9720,\n\tumacr: 363,\n\tuogon: 371,\n\tuplus: 8846,\n\tupsih: 978,\n\turing: 367,\n\turtri: 9721,\n\tutdot: 8944,\n\tutrif: 9652,\n\tuuarr: 8648,\n\tvBarv: 10985,\n\tvDash: 8872,\n\tvarpi: 982,\n\tvdash: 8866,\n\tveeeq: 8794,\n\tvltri: 8882,\n\tvprop: 8733,\n\tvrtri: 8883,\n\twcirc: 373,\n\twedge: 8743,\n\txcirc: 9711,\n\txdtri: 9661,\n\txhArr: 10234,\n\txharr: 10231,\n\txlArr: 10232,\n\txlarr: 10229,\n\txodot: 10752,\n\txrArr: 10233,\n\txrarr: 10230,\n\txutri: 9651,\n\tycirc: 375,\n\tAopf: 120120,\n\tAscr: 119964,\n\tAuml: 196,\n\tBarv: 10983,\n\tBeta: 914,\n\tBopf: 120121,\n\tBscr: 8492,\n\tCHcy: 1063,\n\tCOPY: 169,\n\tCdot: 266,\n\tCopf: 8450,\n\tCscr: 119966,\n\tDJcy: 1026,\n\tDScy: 1029,\n\tDZcy: 1039,\n\tDarr: 8609,\n\tDopf: 120123,\n\tDscr: 119967,\n\tEdot: 278,\n\tEopf: 120124,\n\tEscr: 8496,\n\tEsim: 10867,\n\tEuml: 203,\n\tFopf: 120125,\n\tFscr: 8497,\n\tGJcy: 1027,\n\tGdot: 288,\n\tGopf: 120126,\n\tGscr: 119970,\n\tHopf: 8461,\n\tHscr: 8459,\n\tIEcy: 1045,\n\tIOcy: 1025,\n\tIdot: 304,\n\tIopf: 120128,\n\tIota: 921,\n\tIscr: 8464,\n\tIuml: 207,\n\tJopf: 120129,\n\tJscr: 119973,\n\tKHcy: 1061,\n\tKJcy: 1036,\n\tKopf: 120130,\n\tKscr: 119974,\n\tLJcy: 1033,\n\tLang: 10218,\n\tLarr: 8606,\n\tLopf: 120131,\n\tLscr: 8466,\n\tMopf: 120132,\n\tMscr: 8499,\n\tNJcy: 1034,\n\tNopf: 8469,\n\tNscr: 119977,\n\tOopf: 120134,\n\tOscr: 119978,\n\tOuml: 214,\n\tPopf: 8473,\n\tPscr: 119979,\n\tQUOT: 34,\n\tQopf: 8474,\n\tQscr: 119980,\n\tRang: 10219,\n\tRarr: 8608,\n\tRopf: 8477,\n\tRscr: 8475,\n\tSHcy: 1064,\n\tSopf: 120138,\n\tSqrt: 8730,\n\tSscr: 119982,\n\tStar: 8902,\n\tTScy: 1062,\n\tTopf: 120139,\n\tTscr: 119983,\n\tUarr: 8607,\n\tUopf: 120140,\n\tUpsi: 978,\n\tUscr: 119984,\n\tUuml: 220,\n\tVbar: 10987,\n\tVert: 8214,\n\tVopf: 120141,\n\tVscr: 119985,\n\tWopf: 120142,\n\tWscr: 119986,\n\tXopf: 120143,\n\tXscr: 119987,\n\tYAcy: 1071,\n\tYIcy: 1031,\n\tYUcy: 1070,\n\tYopf: 120144,\n\tYscr: 119988,\n\tYuml: 376,\n\tZHcy: 1046,\n\tZdot: 379,\n\tZeta: 918,\n\tZopf: 8484,\n\tZscr: 119989,\n\tandd: 10844,\n\tandv: 10842,\n\tange: 10660,\n\taopf: 120146,\n\tapid: 8779,\n\tapos: 39,\n\tascr: 119990,\n\tauml: 228,\n\tbNot: 10989,\n\tbbrk: 9141,\n\tbeta: 946,\n\tbeth: 8502,\n\tbnot: 8976,\n\tbopf: 120147,\n\tboxH: 9552,\n\tboxV: 9553,\n\tboxh: 9472,\n\tboxv: 9474,\n\tbscr: 119991,\n\tbsim: 8765,\n\tbsol: 92,\n\tbull: 8226,\n\tbump: 8782,\n\tcdot: 267,\n\tcent: 162,\n\tchcy: 1095,\n\tcirE: 10691,\n\tcirc: 710,\n\tcire: 8791,\n\tcomp: 8705,\n\tcong: 8773,\n\tcopf: 120148,\n\tcopy: 169,\n\tcscr: 119992,\n\tcsub: 10959,\n\tcsup: 10960,\n\tdArr: 8659,\n\tdHar: 10597,\n\tdarr: 8595,\n\tdash: 8208,\n\tdiam: 8900,\n\tdjcy: 1106,\n\tdopf: 120149,\n\tdscr: 119993,\n\tdscy: 1109,\n\tdsol: 10742,\n\tdtri: 9663,\n\tdzcy: 1119,\n\teDot: 8785,\n\tecir: 8790,\n\tedot: 279,\n\temsp: 8195,\n\tensp: 8194,\n\teopf: 120150,\n\tepar: 8917,\n\tepsi: 1013,\n\tescr: 8495,\n\tesim: 8770,\n\teuml: 235,\n\teuro: 8364,\n\texcl: 33,\n\tflat: 9837,\n\tfnof: 402,\n\tfopf: 120151,\n\tfork: 8916,\n\tfscr: 119995,\n\tgdot: 289,\n\tgeqq: 8807,\n\tgjcy: 1107,\n\tgnap: 10890,\n\tgneq: 10888,\n\tgopf: 120152,\n\tgscr: 8458,\n\tgsim: 8819,\n\tgtcc: 10919,\n\thArr: 8660,\n\thalf: 189,\n\tharr: 8596,\n\thbar: 8463,\n\thopf: 120153,\n\thscr: 119997,\n\tiecy: 1077,\n\timof: 8887,\n\tiocy: 1105,\n\tiopf: 120154,\n\tiota: 953,\n\tiscr: 119998,\n\tisin: 8712,\n\tiuml: 239,\n\tjopf: 120155,\n\tjscr: 119999,\n\tkhcy: 1093,\n\tkjcy: 1116,\n\tkopf: 120156,\n\tkscr: 120000,\n\tlArr: 8656,\n\tlHar: 10594,\n\tlang: 10216,\n\tlarr: 8592,\n\tlate: 10925,\n\tlcub: 123,\n\tldca: 10550,\n\tldsh: 8626,\n\tleqq: 8806,\n\tljcy: 1113,\n\tlnap: 10889,\n\tlneq: 10887,\n\tlopf: 120157,\n\tlozf: 10731,\n\tlpar: 40,\n\tlscr: 120001,\n\tlsim: 8818,\n\tlsqb: 91,\n\tltcc: 10918,\n\tltri: 9667,\n\tmacr: 175,\n\tmale: 9794,\n\tmalt: 10016,\n\tmlcp: 10971,\n\tmldr: 8230,\n\tmopf: 120158,\n\tmscr: 120002,\n\tnbsp: 160,\n\tncap: 10819,\n\tncup: 10818,\n\tngeq: 8817,\n\tngtr: 8815,\n\tnisd: 8954,\n\tnjcy: 1114,\n\tnldr: 8229,\n\tnleq: 8816,\n\tnmid: 8740,\n\tnopf: 120159,\n\tnpar: 8742,\n\tnscr: 120003,\n\tnsim: 8769,\n\tnsub: 8836,\n\tnsup: 8837,\n\tntgl: 8825,\n\tntlg: 8824,\n\toast: 8859,\n\tocir: 8858,\n\todiv: 10808,\n\todot: 8857,\n\togon: 731,\n\toint: 8750,\n\tomid: 10678,\n\toopf: 120160,\n\topar: 10679,\n\tordf: 170,\n\tordm: 186,\n\toror: 10838,\n\toscr: 8500,\n\tosol: 8856,\n\touml: 246,\n\tpara: 182,\n\tpart: 8706,\n\tperp: 8869,\n\tphiv: 966,\n\tplus: 43,\n\tpopf: 120161,\n\tprap: 10935,\n\tprec: 8826,\n\tprnE: 10933,\n\tprod: 8719,\n\tprop: 8733,\n\tpscr: 120005,\n\tqint: 10764,\n\tqopf: 120162,\n\tqscr: 120006,\n\tquot: 34,\n\trArr: 8658,\n\trHar: 10596,\n\trace: 10714,\n\trang: 10217,\n\trarr: 8594,\n\trcub: 125,\n\trdca: 10551,\n\trdsh: 8627,\n\treal: 8476,\n\trect: 9645,\n\trhov: 1009,\n\tring: 730,\n\tropf: 120163,\n\trpar: 41,\n\trscr: 120007,\n\trsqb: 93,\n\trtri: 9657,\n\tscap: 10936,\n\tscnE: 10934,\n\tsdot: 8901,\n\tsect: 167,\n\tsemi: 59,\n\tsext: 10038,\n\tshcy: 1096,\n\tsime: 8771,\n\tsimg: 10910,\n\tsiml: 10909,\n\tsmid: 8739,\n\tsmte: 10924,\n\tsolb: 10692,\n\tsopf: 120164,\n\tspar: 8741,\n\tsquf: 9642,\n\tsscr: 120008,\n\tstar: 9734,\n\tsubE: 10949,\n\tsube: 8838,\n\tsucc: 8827,\n\tsung: 9834,\n\tsup1: 185,\n\tsup2: 178,\n\tsup3: 179,\n\tsupE: 10950,\n\tsupe: 8839,\n\ttbrk: 9140,\n\ttdot: 8411,\n\ttint: 8749,\n\ttoea: 10536,\n\ttopf: 120165,\n\ttosa: 10537,\n\ttrie: 8796,\n\ttscr: 120009,\n\ttscy: 1094,\n\tuArr: 8657,\n\tuHar: 10595,\n\tuarr: 8593,\n\tuopf: 120166,\n\tupsi: 965,\n\tuscr: 120010,\n\tutri: 9653,\n\tuuml: 252,\n\tvArr: 8661,\n\tvBar: 10984,\n\tvarr: 8597,\n\tvert: 124,\n\tvopf: 120167,\n\tvscr: 120011,\n\twopf: 120168,\n\twscr: 120012,\n\txcap: 8898,\n\txcup: 8899,\n\txmap: 10236,\n\txnis: 8955,\n\txopf: 120169,\n\txscr: 120013,\n\txvee: 8897,\n\tyacy: 1103,\n\tyicy: 1111,\n\tyopf: 120170,\n\tyscr: 120014,\n\tyucy: 1102,\n\tyuml: 255,\n\tzdot: 380,\n\tzeta: 950,\n\tzhcy: 1078,\n\tzopf: 120171,\n\tzscr: 120015,\n\tzwnj: 8204,\n\tAMP: 38,\n\tAcy: 1040,\n\tAfr: 120068,\n\tAnd: 10835,\n\tBcy: 1041,\n\tBfr: 120069,\n\tCap: 8914,\n\tCfr: 8493,\n\tChi: 935,\n\tCup: 8915,\n\tDcy: 1044,\n\tDel: 8711,\n\tDfr: 120071,\n\tDot: 168,\n\tENG: 330,\n\tETH: 208,\n\tEcy: 1069,\n\tEfr: 120072,\n\tEta: 919,\n\tFcy: 1060,\n\tFfr: 120073,\n\tGcy: 1043,\n\tGfr: 120074,\n\tHat: 94,\n\tHfr: 8460,\n\tIcy: 1048,\n\tIfr: 8465,\n\tInt: 8748,\n\tJcy: 1049,\n\tJfr: 120077,\n\tKcy: 1050,\n\tKfr: 120078,\n\tLcy: 1051,\n\tLfr: 120079,\n\tLsh: 8624,\n\tMap: 10501,\n\tMcy: 1052,\n\tMfr: 120080,\n\tNcy: 1053,\n\tNfr: 120081,\n\tNot: 10988,\n\tOcy: 1054,\n\tOfr: 120082,\n\tPcy: 1055,\n\tPfr: 120083,\n\tPhi: 934,\n\tPsi: 936,\n\tQfr: 120084,\n\tREG: 174,\n\tRcy: 1056,\n\tRfr: 8476,\n\tRho: 929,\n\tRsh: 8625,\n\tScy: 1057,\n\tSfr: 120086,\n\tSub: 8912,\n\tSum: 8721,\n\tSup: 8913,\n\tTab: 9,\n\tTau: 932,\n\tTcy: 1058,\n\tTfr: 120087,\n\tUcy: 1059,\n\tUfr: 120088,\n\tVcy: 1042,\n\tVee: 8897,\n\tVfr: 120089,\n\tWfr: 120090,\n\tXfr: 120091,\n\tYcy: 1067,\n\tYfr: 120092,\n\tZcy: 1047,\n\tZfr: 8488,\n\tacd: 8767,\n\tacy: 1072,\n\tafr: 120094,\n\tamp: 38,\n\tand: 8743,\n\tang: 8736,\n\tapE: 10864,\n\tape: 8778,\n\tast: 42,\n\tbcy: 1073,\n\tbfr: 120095,\n\tbot: 8869,\n\tcap: 8745,\n\tcfr: 120096,\n\tchi: 967,\n\tcir: 9675,\n\tcup: 8746,\n\tdcy: 1076,\n\tdeg: 176,\n\tdfr: 120097,\n\tdie: 168,\n\tdiv: 247,\n\tdot: 729,\n\tecy: 1101,\n\tefr: 120098,\n\tegs: 10902,\n\tell: 8467,\n\tels: 10901,\n\teng: 331,\n\teta: 951,\n\teth: 240,\n\tfcy: 1092,\n\tffr: 120099,\n\tgEl: 10892,\n\tgap: 10886,\n\tgcy: 1075,\n\tgel: 8923,\n\tgeq: 8805,\n\tges: 10878,\n\tgfr: 120100,\n\tggg: 8921,\n\tglE: 10898,\n\tgla: 10917,\n\tglj: 10916,\n\tgnE: 8809,\n\tgne: 10888,\n\thfr: 120101,\n\ticy: 1080,\n\tiff: 8660,\n\tifr: 120102,\n\tint: 8747,\n\tjcy: 1081,\n\tjfr: 120103,\n\tkcy: 1082,\n\tkfr: 120104,\n\tlEg: 10891,\n\tlap: 10885,\n\tlat: 10923,\n\tlcy: 1083,\n\tleg: 8922,\n\tleq: 8804,\n\tles: 10877,\n\tlfr: 120105,\n\tlgE: 10897,\n\tlnE: 8808,\n\tlne: 10887,\n\tloz: 9674,\n\tlrm: 8206,\n\tlsh: 8624,\n\tmap: 8614,\n\tmcy: 1084,\n\tmfr: 120106,\n\tmho: 8487,\n\tmid: 8739,\n\tnap: 8777,\n\tncy: 1085,\n\tnfr: 120107,\n\tnge: 8817,\n\tngt: 8815,\n\tnis: 8956,\n\tniv: 8715,\n\tnle: 8816,\n\tnlt: 8814,\n\tnot: 172,\n\tnpr: 8832,\n\tnsc: 8833,\n\tnum: 35,\n\tocy: 1086,\n\tofr: 120108,\n\togt: 10689,\n\tohm: 8486,\n\tolt: 10688,\n\tord: 10845,\n\torv: 10843,\n\tpar: 8741,\n\tpcy: 1087,\n\tpfr: 120109,\n\tphi: 966,\n\tpiv: 982,\n\tprE: 10931,\n\tpre: 10927,\n\tpsi: 968,\n\tqfr: 120110,\n\trcy: 1088,\n\treg: 174,\n\trfr: 120111,\n\trho: 961,\n\trlm: 8207,\n\trsh: 8625,\n\tscE: 10932,\n\tsce: 10928,\n\tscy: 1089,\n\tsfr: 120112,\n\tshy: 173,\n\tsim: 8764,\n\tsmt: 10922,\n\tsol: 47,\n\tsqu: 9633,\n\tsub: 8834,\n\tsum: 8721,\n\tsup: 8835,\n\ttau: 964,\n\ttcy: 1090,\n\ttfr: 120113,\n\ttop: 8868,\n\tucy: 1091,\n\tufr: 120114,\n\tuml: 168,\n\tvcy: 1074,\n\tvee: 8744,\n\tvfr: 120115,\n\twfr: 120116,\n\txfr: 120117,\n\tycy: 1099,\n\tyen: 165,\n\tyfr: 120118,\n\tzcy: 1079,\n\tzfr: 120119,\n\tzwj: 8205,\n\tDD: 8517,\n\tGT: 62,\n\tGg: 8921,\n\tGt: 8811,\n\tIm: 8465,\n\tLT: 60,\n\tLl: 8920,\n\tLt: 8810,\n\tMu: 924,\n\tNu: 925,\n\tOr: 10836,\n\tPi: 928,\n\tPr: 10939,\n\tRe: 8476,\n\tSc: 10940,\n\tXi: 926,\n\tac: 8766,\n\taf: 8289,\n\tap: 8776,\n\tdd: 8518,\n\tee: 8519,\n\teg: 10906,\n\tel: 10905,\n\tgE: 8807,\n\tge: 8805,\n\tgg: 8811,\n\tgl: 8823,\n\tgt: 62,\n\tic: 8291,\n\tii: 8520,\n\tin: 8712,\n\tit: 8290,\n\tlE: 8806,\n\tle: 8804,\n\tlg: 8822,\n\tll: 8810,\n\tlt: 60,\n\tmp: 8723,\n\tmu: 956,\n\tne: 8800,\n\tni: 8715,\n\tnu: 957,\n\toS: 9416,\n\tor: 8744,\n\tpi: 960,\n\tpm: 177,\n\tpr: 8826,\n\trx: 8478,\n\tsc: 8827,\n\twp: 8472,\n\twr: 8768,\n\txi: 958,\n};\n","import htmlEntities from './entities';\n\nconst windows1252 = [\n\t8364,\n\t129,\n\t8218,\n\t402,\n\t8222,\n\t8230,\n\t8224,\n\t8225,\n\t710,\n\t8240,\n\t352,\n\t8249,\n\t338,\n\t141,\n\t381,\n\t143,\n\t144,\n\t8216,\n\t8217,\n\t8220,\n\t8221,\n\t8226,\n\t8211,\n\t8212,\n\t732,\n\t8482,\n\t353,\n\t8250,\n\t339,\n\t157,\n\t382,\n\t376,\n];\nconst entityPattern = new RegExp(\n\t`&(#?(?:x[\\\\w\\\\d]+|\\\\d+|${Object.keys(htmlEntities).join('|')}));?`,\n\t'g'\n);\n\nexport function decodeCharacterReferences(html: string) {\n\treturn html.replace(entityPattern, (match, entity) => {\n\t\tlet code;\n\n\t\t// Handle named entities\n\t\tif (entity[0] !== '#') {\n\t\t\tcode = htmlEntities[entity];\n\t\t} else if (entity[1] === 'x') {\n\t\t\tcode = parseInt(entity.substring(2), 16);\n\t\t} else {\n\t\t\tcode = parseInt(entity.substring(1), 10);\n\t\t}\n\n\t\tif (!code) {\n\t\t\treturn match;\n\t\t}\n\n\t\treturn String.fromCodePoint(validateCode(code));\n\t});\n}\n\nconst NUL = 0;\n\n// some code points are verboten. If we were inserting HTML, the browser would replace the illegal\n// code points with alternatives in some cases - since we're bypassing that mechanism, we need\n// to replace them ourselves\n//\n// Source: http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Illegal_characters\nfunction validateCode(code: number) {\n\t// line feed becomes generic whitespace\n\tif (code === 10) {\n\t\treturn 32;\n\t}\n\n\t// ASCII range. (Why someone would use HTML entities for ASCII characters I don't know, but...)\n\tif (code < 128) {\n\t\treturn code;\n\t}\n\n\t// code points 128-159 are dealt with leniently by browsers, but they're incorrect. We need\n\t// to correct the mistake or we'll end up with missing € signs and so on\n\tif (code <= 159) {\n\t\treturn windows1252[code - 128];\n\t}\n\n\t// basic multilingual plane\n\tif (code < 55296) {\n\t\treturn code;\n\t}\n\n\t// UTF-16 surrogate halves\n\tif (code <= 57343) {\n\t\treturn NUL;\n\t}\n\n\t// rest of the basic multilingual plane\n\tif (code <= 65535) {\n\t\treturn code;\n\t}\n\n\t// supplementary multilingual plane 0x10000 - 0x1ffff\n\tif (code >= 65536 && code <= 131071) {\n\t\treturn code;\n\t}\n\n\t// supplementary ideographic plane 0x20000 - 0x2ffff\n\tif (code >= 131072 && code <= 196607) {\n\t\treturn code;\n\t}\n\n\treturn NUL;\n}\n","const voidElementNames = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\n\nexport default function isVoidElementName(name: string) {\n\treturn voidElementNames.test(name) || name.toLowerCase() === '!doctype';\n}\n","import readExpression from '../read/expression';\nimport readScript from '../read/script';\nimport readStyle from '../read/style';\nimport { readDirective } from '../read/directives';\nimport { trimStart, trimEnd } from '../../utils/trim';\nimport { decodeCharacterReferences } from '../utils/html';\nimport isVoidElementName from '../../utils/isVoidElementName';\nimport { Parser } from '../index';\nimport { Node } from '../../interfaces';\n\nconst validTagName = /^\\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\\-]*/;\n\nconst metaTags = new Map([\n\t['svelte:window', 'Window'],\n\t['svelte:head', 'Head']\n]);\n\nconst specials = new Map([\n\t[\n\t\t'script',\n\t\t{\n\t\t\tread: readScript,\n\t\t\tproperty: 'js',\n\t\t},\n\t],\n\t[\n\t\t'style',\n\t\t{\n\t\t\tread: readStyle,\n\t\t\tproperty: 'css',\n\t\t},\n\t],\n]);\n\nconst SELF = 'svelte:self';\nconst COMPONENT = 'svelte:component';\n\n// based on http://developers.whatwg.org/syntax.html#syntax-tag-omission\nconst disallowedContents = new Map([\n\t['li', new Set(['li'])],\n\t['dt', new Set(['dt', 'dd'])],\n\t['dd', new Set(['dt', 'dd'])],\n\t[\n\t\t'p',\n\t\tnew Set(\n\t\t\t'address article aside blockquote div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr main menu nav ol p pre section table ul'.split(\n\t\t\t\t' '\n\t\t\t)\n\t\t),\n\t],\n\t['rt', new Set(['rt', 'rp'])],\n\t['rp', new Set(['rt', 'rp'])],\n\t['optgroup', new Set(['optgroup'])],\n\t['option', new Set(['option', 'optgroup'])],\n\t['thead', new Set(['tbody', 'tfoot'])],\n\t['tbody', new Set(['tbody', 'tfoot'])],\n\t['tfoot', new Set(['tbody'])],\n\t['tr', new Set(['tr', 'tbody'])],\n\t['td', new Set(['td', 'th', 'tr'])],\n\t['th', new Set(['td', 'th', 'tr'])],\n]);\n\nfunction parentIsHead(stack) {\n\tlet i = stack.length;\n\twhile (i--) {\n\t\tconst { type } = stack[i];\n\t\tif (type === 'Head') return true;\n\t\tif (type === 'Element' || type === 'Component') return false;\n\t}\n\treturn false;\n}\n\nexport default function tag(parser: Parser) {\n\tconst start = parser.index++;\n\n\tlet parent = parser.current();\n\n\tif (parser.eat('!--')) {\n\t\tconst data = parser.readUntil(/-->/);\n\t\tparser.eat('-->', true, 'comment was left open, expected -->');\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'Comment',\n\t\t\tdata,\n\t\t});\n\n\t\treturn;\n\t}\n\n\tconst isClosingTag = parser.eat('/');\n\n\tconst name = readTagName(parser);\n\n\tif (metaTags.has(name)) {\n\t\tconst slug = metaTags.get(name).toLowerCase();\n\t\tif (isClosingTag) {\n\t\t\tif (name === 'svelte:window' && parser.current().children.length) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-window-content`,\n\t\t\t\t\tmessage: `<${name}> cannot have children`\n\t\t\t\t}, parser.current().children[0].start);\n\t\t\t}\n\t\t} else {\n\t\t\tif (name in parser.metaTags) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `duplicate-${slug}`,\n\t\t\t\t\tmessage: `A component can only have one <${name}> tag`\n\t\t\t\t}, start);\n\t\t\t}\n\n\t\t\tif (parser.stack.length > 1) {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-${slug}-placement`,\n\t\t\t\t\tmessage: `<${name}> tags cannot be inside elements or blocks`\n\t\t\t\t}, start);\n\t\t\t}\n\n\t\t\tparser.metaTags[name] = true;\n\t\t}\n\t}\n\n\tconst type = metaTags.has(name)\n\t\t? metaTags.get(name)\n\t\t: (/[A-Z]/.test(name[0]) || name === 'svelte:self' || name === 'svelte:component') ? 'Component'\n\t\t: name === 'title' && parentIsHead(parser.stack) ? 'Title'\n\t\t: name === 'slot' && !parser.customElement ? 'Slot' : 'Element';\n\n\tconst element: Node = {\n\t\tstart,\n\t\tend: null, // filled in later\n\t\ttype,\n\t\tname,\n\t\tattributes: [],\n\t\tchildren: [],\n\t};\n\n\tparser.allowWhitespace();\n\n\tif (isClosingTag) {\n\t\tif (isVoidElementName(name)) {\n\t\t\tparser.error({\n\t\t\t\tcode: `invalid-void-content`,\n\t\t\t\tmessage: `<${name}> is a void element and cannot have children, or a closing tag`\n\t\t\t}, start);\n\t\t}\n\n\t\tparser.eat('>', true);\n\n\t\t// close any elements that don't have their own closing tags, e.g. <div><p></div>\n\t\twhile (parent.name !== name) {\n\t\t\tif (parent.type !== 'Element')\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-closing-tag`,\n\t\t\t\t\tmessage: `</${name}> attempted to close an element that was not open`\n\t\t\t\t}, start);\n\n\t\t\tparent.end = start;\n\t\t\tparser.stack.pop();\n\n\t\t\tparent = parser.current();\n\t\t}\n\n\t\tparent.end = parser.index;\n\t\tparser.stack.pop();\n\n\t\treturn;\n\t} else if (disallowedContents.has(parent.name)) {\n\t\t// can this be a child of the parent element, or does it implicitly\n\t\t// close it, like `<li>one<li>two`?\n\t\tif (disallowedContents.get(parent.name).has(name)) {\n\t\t\tparent.end = start;\n\t\t\tparser.stack.pop();\n\t\t}\n\t}\n\n\tif (name === 'slot') {\n\t\tlet i = parser.stack.length;\n\t\twhile (i--) {\n\t\t\tconst item = parser.stack[i];\n\t\t\tif (item.type === 'EachBlock') {\n\t\t\t\tparser.error({\n\t\t\t\t\tcode: `invalid-slot-placement`,\n\t\t\t\t\tmessage: `<slot> cannot be a child of an each-block`\n\t\t\t\t}, start);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst uniqueNames = new Set();\n\n\tlet attribute;\n\twhile ((attribute = readAttribute(parser, uniqueNames))) {\n\t\tif (attribute.type === 'Binding' && !parser.allowBindings) {\n\t\t\tparser.error({\n\t\t\t\tcode: `binding-disabled`,\n\t\t\t\tmessage: `Two-way binding is disabled`\n\t\t\t}, attribute.start);\n\t\t}\n\n\t\telement.attributes.push(attribute);\n\t\tparser.allowWhitespace();\n\t}\n\n\tif (name === 'svelte:component') {\n\t\t// TODO post v2, treat this just as any other attribute\n\t\tconst index = element.attributes.findIndex(attr => attr.name === 'this');\n\t\tif (!~index) {\n\t\t\tparser.error({\n\t\t\t\tcode: `missing-component-definition`,\n\t\t\t\tmessage: `<svelte:component> must have a 'this' attribute`\n\t\t\t}, start);\n\t\t}\n\n\t\tconst definition = element.attributes.splice(index, 1)[0];\n\t\tif (definition.value === true || definition.value.length !== 1 || definition.value[0].type === 'Text') {\n\t\t\tparser.error({\n\t\t\t\tcode: `invalid-component-definition`,\n\t\t\t\tmessage: `invalid component definition`\n\t\t\t}, definition.start);\n\t\t}\n\n\t\telement.expression = definition.value[0].expression;\n\t}\n\n\t// special cases – top-level <script> and <style>\n\tif (specials.has(name) && parser.stack.length === 1) {\n\t\tconst special = specials.get(name);\n\n\t\tif (parser[special.property]) {\n\t\t\tparser.index = start;\n\t\t\tparser.error({\n\t\t\t\tcode: `duplicate-${name}`,\n\t\t\t\tmessage: `You can only have one top-level <${name}> tag per component`\n\t\t\t});\n\t\t}\n\n\t\tparser.eat('>', true);\n\t\tparser[special.property] = special.read(parser, start, element.attributes);\n\t\treturn;\n\t}\n\n\tparser.current().children.push(element);\n\n\tconst selfClosing = parser.eat('/') || isVoidElementName(name);\n\n\tparser.eat('>', true);\n\n\tif (selfClosing) {\n\t\t// don't push self-closing elements onto the stack\n\t\telement.end = parser.index;\n\t} else if (name === 'textarea') {\n\t\t// special case\n\t\telement.children = readSequence(\n\t\t\tparser,\n\t\t\t() =>\n\t\t\t\tparser.template.slice(parser.index, parser.index + 11) === '</textarea>'\n\t\t);\n\t\tparser.read(/<\\/textarea>/);\n\t\telement.end = parser.index;\n\t} else if (name === 'script') {\n\t\t// special case\n\t\tconst start = parser.index;\n\t\tconst data = parser.readUntil(/<\\/script>/);\n\t\tconst end = parser.index;\n\t\telement.children.push({ start, end, type: 'Text', data });\n\t\tparser.eat('</script>', true);\n\t\telement.end = parser.index;\n\t} else if (name === 'style') {\n\t\t// special case\n\t\tconst start = parser.index;\n\t\tconst data = parser.readUntil(/<\\/style>/);\n\t\tconst end = parser.index;\n\t\telement.children.push({ start, end, type: 'Text', data });\n\t\tparser.eat('</style>', true);\n\t} else {\n\t\tparser.stack.push(element);\n\t}\n}\n\nfunction readTagName(parser: Parser) {\n\tconst start = parser.index;\n\n\tif (parser.eat(SELF)) {\n\t\t// check we're inside a block, otherwise this\n\t\t// will cause infinite recursion\n\t\tlet i = parser.stack.length;\n\t\tlet legal = false;\n\n\t\twhile (i--) {\n\t\t\tconst fragment = parser.stack[i];\n\t\t\tif (fragment.type === 'IfBlock' || fragment.type === 'EachBlock') {\n\t\t\t\tlegal = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!legal) {\n\t\t\tparser.error({\n\t\t\t\tcode: `invalid-self-placement`,\n\t\t\t\tmessage: `<${SELF}> components can only exist inside if-blocks or each-blocks`\n\t\t\t}, start);\n\t\t}\n\n\t\treturn SELF;\n\t}\n\n\tif (parser.eat(COMPONENT)) return COMPONENT;\n\n\tconst name = parser.readUntil(/(\\s|\\/|>)/);\n\n\tif (metaTags.has(name)) return name;\n\n\tif (!validTagName.test(name)) {\n\t\tparser.error({\n\t\t\tcode: `invalid-tag-name`,\n\t\t\tmessage: `Expected valid tag name`\n\t\t}, start);\n\t}\n\n\treturn name;\n}\n\nfunction readAttribute(parser: Parser, uniqueNames: Set<string>) {\n\tconst start = parser.index;\n\n\tif (parser.eat('{')) {\n\t\tparser.allowWhitespace();\n\n\t\tif (parser.eat('...')) {\n\t\t\tconst expression = readExpression(parser);\n\n\t\t\tparser.allowWhitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\treturn {\n\t\t\t\tstart,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'Spread',\n\t\t\t\texpression\n\t\t\t};\n\t\t} else {\n\t\t\tconst valueStart = parser.index;\n\n\t\t\tconst name = parser.readIdentifier();\n\t\t\tparser.allowWhitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\treturn {\n\t\t\t\tstart,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'Attribute',\n\t\t\t\tname,\n\t\t\t\tvalue: [{\n\t\t\t\t\tstart: valueStart,\n\t\t\t\t\tend: valueStart + name.length,\n\t\t\t\t\ttype: 'AttributeShorthand',\n\t\t\t\t\texpression: {\n\t\t\t\t\t\tstart: valueStart,\n\t\t\t\t\t\tend: valueStart + name.length,\n\t\t\t\t\t\ttype: 'Identifier',\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t};\n\t\t}\n\t}\n\n\tlet name = parser.readUntil(/(\\s|=|\\/|>)/);\n\tif (!name) return null;\n\tif (uniqueNames.has(name)) {\n\t\tparser.error({\n\t\t\tcode: `duplicate-attribute`,\n\t\t\tmessage: 'Attributes need to be unique'\n\t\t}, start);\n\t}\n\n\tuniqueNames.add(name);\n\n\tparser.allowWhitespace();\n\n\tconst directive = readDirective(parser, start, name);\n\tif (directive) return directive;\n\n\tlet value = parser.eat('=') ? readAttributeValue(parser) : true;\n\n\treturn {\n\t\tstart,\n\t\tend: parser.index,\n\t\ttype: 'Attribute',\n\t\tname,\n\t\tvalue,\n\t};\n}\n\nfunction readAttributeValue(parser: Parser) {\n\tconst quoteMark = parser.eat(`'`) ? `'` : parser.eat(`\"`) ? `\"` : null;\n\n\tconst regex = quoteMark === `'`\n\t\t? /'/\n\t\t: quoteMark === `\"` ? /\"/ : /[\\s\"'=<>\\/`]/;\n\n\tconst value = readSequence(parser, () =>\n\t\tregex.test(parser.template[parser.index])\n\t);\n\n\tif (quoteMark) parser.index += 1;\n\treturn value;\n}\n\nfunction readSequence(parser: Parser, done: () => boolean) {\n\tlet currentChunk: Node = {\n\t\tstart: parser.index,\n\t\tend: null,\n\t\ttype: 'Text',\n\t\tdata: '',\n\t};\n\n\tconst chunks = [];\n\n\twhile (parser.index < parser.template.length) {\n\t\tconst index = parser.index;\n\n\t\tif (done()) {\n\t\t\tcurrentChunk.end = parser.index;\n\n\t\t\tif (currentChunk.data) chunks.push(currentChunk);\n\n\t\t\tchunks.forEach(chunk => {\n\t\t\t\tif (chunk.type === 'Text')\n\t\t\t\t\tchunk.data = decodeCharacterReferences(chunk.data);\n\t\t\t});\n\n\t\t\treturn chunks;\n\t\t} else if (parser.eat('{')) {\n\t\t\tif (currentChunk.data) {\n\t\t\t\tcurrentChunk.end = index;\n\t\t\t\tchunks.push(currentChunk);\n\t\t\t}\n\n\t\t\tparser.allowWhitespace();\n\t\t\tconst expression = readExpression(parser);\n\t\t\tparser.allowWhitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\tchunks.push({\n\t\t\t\tstart: index,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'MustacheTag',\n\t\t\t\texpression,\n\t\t\t});\n\n\t\t\tcurrentChunk = {\n\t\t\t\tstart: parser.index,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'Text',\n\t\t\t\tdata: '',\n\t\t\t};\n\t\t} else {\n\t\t\tcurrentChunk.data += parser.template[parser.index++];\n\t\t}\n\t}\n\n\tparser.error({\n\t\tcode: `unexpected-eof`,\n\t\tmessage: `Unexpected end of input`\n\t});\n}","import { Parser } from '../index';\n\ntype Identifier = {\n\tstart: number;\n\tend: number;\n\ttype: 'Identifier';\n\tname: string;\n};\n\ntype Property = {\n\tstart: number;\n\tend: number;\n\ttype: 'Property';\n\tkey: Identifier;\n\tvalue: Context;\n};\n\ntype Context = {\n\tstart: number;\n\tend: number;\n\ttype: 'Identifier' | 'ArrayPattern' | 'ObjectPattern';\n\tname?: string;\n\telements?: Context[];\n\tproperties?: Property[];\n}\n\nfunction errorOnAssignmentPattern(parser: Parser) {\n\tif (parser.eat('=')) {\n\t\tparser.error({\n\t\t\tcode: 'invalid-assignment-pattern',\n\t\t\tmessage: 'Assignment patterns are not supported'\n\t\t}, parser.index - 1);\n\t}\n}\n\nexport default function readContext(parser: Parser) {\n\tconst context: Context = {\n\t\tstart: parser.index,\n\t\tend: null,\n\t\ttype: null\n\t};\n\n\tif (parser.eat('[')) {\n\t\tcontext.type = 'ArrayPattern';\n\t\tcontext.elements = [];\n\n\t\tdo {\n\t\t\tparser.allowWhitespace();\n\n\t\t\tif (parser.template[parser.index] === ',') {\n\t\t\t\tcontext.elements.push(null);\n\t\t\t} else {\n\t\t\t\tcontext.elements.push(readContext(parser));\n\t\t\t\tparser.allowWhitespace();\n\t\t\t}\n\t\t} while (parser.eat(','));\n\n\t\terrorOnAssignmentPattern(parser);\n\t\tparser.eat(']', true);\n\t}\n\n\telse if (parser.eat('{')) {\n\t\tcontext.type = 'ObjectPattern';\n\t\tcontext.properties = [];\n\n\t\tdo {\n\t\t\tparser.allowWhitespace();\n\n\t\t\tconst start = parser.index;\n\t\t\tconst name = parser.readIdentifier();\n\t\t\tconst key: Identifier = {\n\t\t\t\tstart,\n\t\t\t\tend: parser.index,\n\t\t\t\ttype: 'Identifier',\n\t\t\t\tname\n\t\t\t};\n\t\t\tparser.allowWhitespace();\n\n\t\t\tconst value = parser.eat(':')\n\t\t\t\t? (parser.allowWhitespace(), readContext(parser))\n\t\t\t\t: key;\n\n\t\t\tconst property: Property = {\n\t\t\t\tstart,\n\t\t\t\tend: value.end,\n\t\t\t\ttype: 'Property',\n\t\t\t\tkey,\n\t\t\t\tvalue\n\t\t\t};\n\n\t\t\tcontext.properties.push(property);\n\n\t\t\tparser.allowWhitespace();\n\t\t} while (parser.eat(','));\n\n\t\terrorOnAssignmentPattern(parser);\n\t\tparser.eat('}', true);\n\t}\n\n\telse {\n\t\tconst name = parser.readIdentifier();\n\t\tif (name) {\n\t\t\tcontext.type = 'Identifier';\n\t\t\tcontext.end = parser.index;\n\t\t\tcontext.name = name;\n\t\t}\n\n\t\telse {\n\t\t\tparser.error({\n\t\t\t\tcode: 'invalid-context',\n\t\t\t\tmessage: 'Expected a name, array pattern or object pattern'\n\t\t\t});\n\t\t}\n\n\t\terrorOnAssignmentPattern(parser);\n\t}\n\n\treturn context;\n}","export const whitespace = /[ \\t\\r\\n]/;\n\nexport const dimensions = /^(?:offset|client)(?:Width|Height)$/;\n","import { whitespace } from './patterns';\n\nexport function trimStart(str: string) {\n\tlet i = 0;\n\twhile (whitespace.test(str[i])) i += 1;\n\n\treturn str.slice(i);\n}\n\nexport function trimEnd(str: string) {\n\tlet i = str.length;\n\twhile (whitespace.test(str[i - 1])) i -= 1;\n\n\treturn str.slice(0, i);\n}\n","import readContext from '../read/context';\nimport readExpression from '../read/expression';\nimport { whitespace } from '../../utils/patterns';\nimport { trimStart, trimEnd } from '../../utils/trim';\nimport reservedNames from '../../utils/reservedNames';\nimport { Parser } from '../index';\nimport { Node } from '../../interfaces';\n\nfunction trimWhitespace(block: Node, trimBefore: boolean, trimAfter: boolean) {\n\tif (!block.children || block.children.length === 0) return; // AwaitBlock\n\n\tconst firstChild = block.children[0];\n\tconst lastChild = block.children[block.children.length - 1];\n\n\tif (firstChild.type === 'Text' && trimBefore) {\n\t\tfirstChild.data = trimStart(firstChild.data);\n\t\tif (!firstChild.data) block.children.shift();\n\t}\n\n\tif (lastChild.type === 'Text' && trimAfter) {\n\t\tlastChild.data = trimEnd(lastChild.data);\n\t\tif (!lastChild.data) block.children.pop();\n\t}\n\n\tif (block.else) {\n\t\ttrimWhitespace(block.else, trimBefore, trimAfter);\n\t}\n\n\tif (firstChild.elseif) {\n\t\ttrimWhitespace(firstChild, trimBefore, trimAfter);\n\t}\n}\n\nexport default function mustache(parser: Parser) {\n\tconst start = parser.index;\n\tparser.index += 1;\n\n\tparser.allowWhitespace();\n\n\t// {{/if}} or {{/each}}\n\tif (parser.eat('/')) {\n\t\tlet block = parser.current();\n\t\tlet expected;\n\n\t\tif (block.type === 'ElseBlock' || block.type === 'PendingBlock' || block.type === 'ThenBlock' || block.type === 'CatchBlock') {\n\t\t\tblock.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tblock = parser.current();\n\n\t\t\texpected = 'await';\n\t\t}\n\n\t\tif (block.type === 'IfBlock') {\n\t\t\texpected = 'if';\n\t\t} else if (block.type === 'EachBlock') {\n\t\t\texpected = 'each';\n\t\t} else if (block.type === 'AwaitBlock') {\n\t\t\texpected = 'await';\n\t\t} else {\n\t\t\tparser.error({\n\t\t\t\tcode: `unexpected-block-close`,\n\t\t\t\tmessage: `Unexpected block closing tag`\n\t\t\t});\n\t\t}\n\n\t\tparser.eat(expected, true);\n\t\tparser.allowWhitespace();\n\t\tparser.eat('}', true);\n\n\t\twhile (block.elseif) {\n\t\t\tblock.end = parser.index;\n\t\t\tparser.stack.pop();\n\t\t\tblock = parser.current();\n\n\t\t\tif (block.else) {\n\t\t\t\tblock.else.end = start;\n\t\t\t}\n\t\t}\n\n\t\t// strip leading/trailing whitespace as necessary\n\t\tconst charBefore = parser.template[block.start - 1];\n\t\tconst charAfter = parser.template[parser.index];\n\t\tconst trimBefore = !charBefore || whitespace.test(charBefore);\n\t\tconst trimAfter = !charAfter || whitespace.test(charAfter);\n\n\t\ttrimWhitespace(block, trimBefore, trimAfter);\n\n\t\tblock.end = parser.index;\n\t\tparser.stack.pop();\n\t} else if (parser.eat(':elseif')) {\n\t\tconst block = parser.current();\n\t\tif (block.type !== 'IfBlock')\n\t\t\tparser.error({\n\t\t\t\tcode: `invalid-elseif-placement`,\n\t\t\t\tmessage: 'Cannot have an {{elseif ...}} block outside an {{#if ...}} block'\n\t\t\t});\n\n\t\tparser.requireWhitespace();\n\n\t\tconst expression = readExpression(parser);\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat('}', true);\n\n\t\tblock.else = {\n\t\t\tstart: parser.index,\n\t\t\tend: null,\n\t\t\ttype: 'ElseBlock',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tstart: parser.index,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'IfBlock',\n\t\t\t\t\telseif: true,\n\t\t\t\t\texpression,\n\t\t\t\t\tchildren: [],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tparser.stack.push(block.else.children[0]);\n\t} else if (parser.eat(':else')) {\n\t\tconst block = parser.current();\n\t\tif (block.type !== 'IfBlock' && block.type !== 'EachBlock') {\n\t\t\tparser.error({\n\t\t\t\tcode: `invalid-else-placement`,\n\t\t\t\tmessage: 'Cannot have an {{else}} block outside an {{#if ...}} or {{#each ...}} block'\n\t\t\t});\n\t\t}\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat('}', true);\n\n\t\tblock.else = {\n\t\t\tstart: parser.index,\n\t\t\tend: null,\n\t\t\ttype: 'ElseBlock',\n\t\t\tchildren: [],\n\t\t};\n\n\t\tparser.stack.push(block.else);\n\t} else if (parser.eat(':then')) {\n\t\t// TODO DRY out this and the next section\n\t\tconst pendingBlock = parser.current();\n\t\tif (pendingBlock.type === 'PendingBlock') {\n\t\t\tpendingBlock.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tconst awaitBlock = parser.current();\n\n\t\t\tparser.requireWhitespace();\n\t\t\tawaitBlock.value = parser.readIdentifier();\n\n\t\t\tparser.allowWhitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\tconst thenBlock: Node = {\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'ThenBlock',\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tawaitBlock.then = thenBlock;\n\t\t\tparser.stack.push(thenBlock);\n\t\t}\n\t} else if (parser.eat(':catch')) {\n\t\tconst thenBlock = parser.current();\n\t\tif (thenBlock.type === 'ThenBlock') {\n\t\t\tthenBlock.end = start;\n\t\t\tparser.stack.pop();\n\t\t\tconst awaitBlock = parser.current();\n\n\t\t\tparser.requireWhitespace();\n\t\t\tawaitBlock.error = parser.readIdentifier();\n\n\t\t\tparser.allowWhitespace();\n\t\t\tparser.eat('}', true);\n\n\t\t\tconst catchBlock: Node = {\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype: 'CatchBlock',\n\t\t\t\tchildren: []\n\t\t\t};\n\n\t\t\tawaitBlock.catch = catchBlock;\n\t\t\tparser.stack.push(catchBlock);\n\t\t}\n\t} else if (parser.eat('#')) {\n\t\t// {{#if foo}} or {{#each foo}}\n\t\tlet type;\n\n\t\tif (parser.eat('if')) {\n\t\t\ttype = 'IfBlock';\n\t\t} else if (parser.eat('each')) {\n\t\t\ttype = 'EachBlock';\n\t\t} else if (parser.eat('await')) {\n\t\t\ttype = 'AwaitBlock';\n\t\t} else {\n\t\t\tparser.error({\n\t\t\t\tcode: `expected-block-type`,\n\t\t\t\tmessage: `Expected if, each or await`\n\t\t\t});\n\t\t}\n\n\t\tparser.requireWhitespace();\n\n\t\tconst expression = readExpression(parser);\n\n\t\tconst block: Node = type === 'AwaitBlock' ?\n\t\t\t{\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype,\n\t\t\t\texpression,\n\t\t\t\tvalue: null,\n\t\t\t\terror: null,\n\t\t\t\tpending: {\n\t\t\t\t\tstart: null,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'PendingBlock',\n\t\t\t\t\tchildren: []\n\t\t\t\t},\n\t\t\t\tthen: {\n\t\t\t\t\tstart: null,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'ThenBlock',\n\t\t\t\t\tchildren: []\n\t\t\t\t},\n\t\t\t\tcatch: {\n\t\t\t\t\tstart: null,\n\t\t\t\t\tend: null,\n\t\t\t\t\ttype: 'CatchBlock',\n\t\t\t\t\tchildren: []\n\t\t\t\t},\n\t\t\t} :\n\t\t\t{\n\t\t\t\tstart,\n\t\t\t\tend: null,\n\t\t\t\ttype,\n\t\t\t\texpression,\n\t\t\t\tchildren: [],\n\t\t\t};\n\n\t\tparser.allowWhitespace();\n\n\t\t// {{#each}} blocks must declare a context – {{#each list as item}}\n\t\tif (type === 'EachBlock') {\n\t\t\tparser.eat('as', true);\n\t\t\tparser.requireWhitespace();\n\n\t\t\tblock.context = readContext(parser);\n\n\t\t\tparser.allowWhitespace();\n\n\t\t\tif (parser.eat(',')) {\n\t\t\t\tparser.allowWhitespace();\n\t\t\t\tblock.index = parser.readIdentifier();\n\t\t\t\tif (!block.index) parser.error({\n\t\t\t\t\tcode: `expected-name`,\n\t\t\t\t\tmessage: `Expected name`\n\t\t\t\t});\n\n\t\t\t\tparser.allowWhitespace();\n\t\t\t}\n\n\t\t\tif (parser.eat('(')) {\n\t\t\t\tparser.allowWhitespace();\n\n\t\t\t\tblock.key = readExpression(parser);\n\t\t\t\tparser.allowWhitespace();\n\t\t\t\tparser.eat(')', true);\n\t\t\t\tparser.allowWhitespace();\n\t\t\t} else if (parser.eat('@')) {\n\t\t\t\tblock.key = parser.readIdentifier();\n\t\t\t\tif (!block.key) parser.error({\n\t\t\t\t\tcode: `expected-name`,\n\t\t\t\t\tmessage: `Expected name`\n\t\t\t\t});\n\t\t\t\tparser.allowWhitespace();\n\t\t\t}\n\t\t}\n\n\t\tlet awaitBlockShorthand = type === 'AwaitBlock' && parser.eat('then');\n\t\tif (awaitBlockShorthand) {\n\t\t\tparser.requireWhitespace();\n\t\t\tblock.value = parser.readIdentifier();\n\t\t\tparser.allowWhitespace();\n\t\t}\n\n\t\tparser.eat('}', true);\n\n\t\tparser.current().children.push(block);\n\t\tparser.stack.push(block);\n\n\t\tif (type === 'AwaitBlock') {\n\t\t\tconst childBlock = awaitBlockShorthand ? block.then : block.pending;\n\t\t\tchildBlock.start = parser.index;\n\t\t\tparser.stack.push(childBlock);\n\t\t}\n\t} else if (parser.eat('@html')) {\n\t\t// {{{raw}}} mustache\n\t\tconst expression = readExpression(parser);\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat('}', true);\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'RawMustacheTag',\n\t\t\texpression,\n\t\t});\n\t} else {\n\t\tconst expression = readExpression(parser);\n\n\t\tparser.allowWhitespace();\n\t\tparser.eat('}', true);\n\n\t\tparser.current().children.push({\n\t\t\tstart,\n\t\t\tend: parser.index,\n\t\t\ttype: 'MustacheTag',\n\t\t\texpression,\n\t\t});\n\t}\n}\n","import { decodeCharacterReferences } from '../utils/html';\nimport { Parser } from '../index';\n\nexport default function text(parser: Parser) {\n\tconst start = parser.index;\n\n\tlet data = '';\n\n\twhile (\n\t\tparser.index < parser.template.length &&\n\t\t!parser.match('<') &&\n\t\t!parser.match('{')\n\t) {\n\t\tdata += parser.template[parser.index++];\n\t}\n\n\tparser.current().children.push({\n\t\tstart,\n\t\tend: parser.index,\n\t\ttype: 'Text',\n\t\tdata: decodeCharacterReferences(data),\n\t});\n}\n","import tag from './tag';\nimport mustache from './mustache';\nimport text from './text';\nimport { Parser } from '../index';\n\nexport default function fragment(parser: Parser) {\n\tif (parser.match('<')) {\n\t\treturn tag;\n\t}\n\n\tif (parser.match('{')) {\n\t\treturn mustache;\n\t}\n\n\treturn text;\n}\n","const reservedNames = new Set([\n\t'arguments',\n\t'await',\n\t'break',\n\t'case',\n\t'catch',\n\t'class',\n\t'const',\n\t'continue',\n\t'debugger',\n\t'default',\n\t'delete',\n\t'do',\n\t'else',\n\t'enum',\n\t'eval',\n\t'export',\n\t'extends',\n\t'false',\n\t'finally',\n\t'for',\n\t'function',\n\t'if',\n\t'implements',\n\t'import',\n\t'in',\n\t'instanceof',\n\t'interface',\n\t'let',\n\t'new',\n\t'null',\n\t'package',\n\t'private',\n\t'protected',\n\t'public',\n\t'return',\n\t'static',\n\t'super',\n\t'switch',\n\t'this',\n\t'throw',\n\t'true',\n\t'try',\n\t'typeof',\n\t'var',\n\t'void',\n\t'while',\n\t'with',\n\t'yield',\n]);\n\nexport default reservedNames;\n","// Adapted from https://github.com/acornjs/acorn/blob/6584815dca7440e00de841d1dad152302fdd7ca5/src/tokenize.js\n// Reproduced under MIT License https://github.com/acornjs/acorn/blob/master/LICENSE\n\nexport default function fullCharCodeAt(str: string, i: number): number {\n\tlet code = str.charCodeAt(i)\n\tif (code <= 0xd7ff || code >= 0xe000) return code;\n\n\tlet next = str.charCodeAt(i + 1);\n\treturn (code << 10) + next - 0x35fdc00;\n}","function getLocator(source, options) {\n if (options === void 0) { options = {}; }\n var offsetLine = options.offsetLine || 0;\n var offsetColumn = options.offsetColumn || 0;\n var originalLines = source.split('\\n');\n var start = 0;\n var lineRanges = originalLines.map(function (line, i) {\n var end = start + line.length + 1;\n var range = { start: start, end: end, line: i };\n start = end;\n return range;\n });\n var i = 0;\n function rangeContains(range, index) {\n return range.start <= index && index < range.end;\n }\n function getLocation(range, index) {\n return { line: offsetLine + range.line, column: offsetColumn + index - range.start, character: index };\n }\n function locate(search, startIndex) {\n if (typeof search === 'string') {\n search = source.indexOf(search, startIndex || 0);\n }\n var range = lineRanges[i];\n var d = search >= range.end ? 1 : -1;\n while (range) {\n if (rangeContains(range, search))\n return getLocation(range, search);\n i += d;\n range = lineRanges[i];\n }\n }\n ;\n return locate;\n}\nfunction locate(source, search, options) {\n if (typeof options === 'number') {\n throw new Error('locate takes a { startIndex, offsetLine, offsetColumn } object as the third argument');\n }\n return getLocator(source, options)(search, options && options.startIndex);\n}\n\nexport { getLocator, locate };","import repeat from './repeat';\n\nfunction tabsToSpaces(str: string) {\n\treturn str.replace(/^\\t+/, match => match.split('\\t').join(' '));\n}\n\nexport default function getCodeFrame(\n\tsource: string,\n\tline: number,\n\tcolumn: number\n) {\n\tconst lines = source.split('\\n');\n\n\tconst frameStart = Math.max(0, line - 2);\n\tconst frameEnd = Math.min(line + 3, lines.length);\n\n\tconst digits = String(frameEnd + 1).length;\n\n\treturn lines\n\t\t.slice(frameStart, frameEnd)\n\t\t.map((str, i) => {\n\t\t\tconst isErrorLine = frameStart + i === line;\n\n\t\t\tlet lineNum = String(i + frameStart + 1);\n\t\t\twhile (lineNum.length < digits) lineNum = ` ${lineNum}`;\n\n\t\t\tif (isErrorLine) {\n\t\t\t\tconst indicator =\n\t\t\t\t\trepeat(' ', digits + 2 + tabsToSpaces(str.slice(0, column)).length) + '^';\n\t\t\t\treturn `${lineNum}: ${tabsToSpaces(str)}\\n${indicator}`;\n\t\t\t}\n\n\t\t\treturn `${lineNum}: ${tabsToSpaces(str)}`;\n\t\t})\n\t\t.join('\\n');\n}\n","import { locate } from 'locate-character';\nimport getCodeFrame from '../utils/getCodeFrame';\n\nclass CompileError extends Error {\n\tcode: string;\n\tstart: { line: number, column: number };\n\tend: { line: number, column: number };\n\tpos: number;\n\tfilename: string;\n\tframe: string;\n\n\ttoString() {\n\t\treturn `${this.message} (${this.start.line}:${this.start.column})\\n${this.frame}`;\n\t}\n}\n\nexport default function error(message: string, props: {\n\tname: string,\n\tcode: string,\n\tsource: string,\n\tfilename: string,\n\tstart: number,\n\tend?: number\n}) {\n\tconst error = new CompileError(message);\n\terror.name = props.name;\n\n\tconst start = locate(props.source, props.start, { offsetLine: 1 });\n\tconst end = locate(props.source, props.end || props.start, { offsetLine: 1 });\n\n\terror.code = props.code;\n\terror.start = start;\n\terror.end = end;\n\terror.pos = props.start;\n\terror.filename = props.filename;\n\n\terror.frame = getCodeFrame(props.source, start.line - 1, start.column);\n\n\tthrow error;\n}","import { isIdentifierStart, isIdentifierChar } from 'acorn';\nimport { locate, Location } from 'locate-character';\nimport fragment from './state/fragment';\nimport { whitespace } from '../utils/patterns';\nimport { trimStart, trimEnd } from '../utils/trim';\nimport reservedNames from '../utils/reservedNames';\nimport fullCharCodeAt from '../utils/fullCharCodeAt';\nimport { Node, Ast } from '../interfaces';\nimport error from '../utils/error';\n\ninterface ParserOptions {\n\tfilename?: string;\n\tbind?: boolean;\n\tcustomElement?: boolean;\n}\n\ntype ParserState = (parser: Parser) => (ParserState | void);\n\nexport class Parser {\n\treadonly template: string;\n\treadonly filename?: string;\n\treadonly customElement: boolean;\n\n\tindex: number;\n\tstack: Array<Node>;\n\n\thtml: Node;\n\tcss: Node;\n\tjs: Node;\n\tmetaTags: {};\n\n\tallowBindings: boolean;\n\n\tconstructor(template: string, options: ParserOptions) {\n\t\tif (typeof template !== 'string') {\n\t\t\tthrow new TypeError('Template must be a string');\n\t\t}\n\n\t\tthis.template = template.replace(/\\s+$/, '');\n\t\tthis.filename = options.filename;\n\t\tthis.customElement = options.customElement;\n\n\t\tthis.allowBindings = options.bind !== false;\n\n\t\tthis.index = 0;\n\t\tthis.stack = [];\n\t\tthis.metaTags = {};\n\n\t\tthis.html = {\n\t\t\tstart: null,\n\t\t\tend: null,\n\t\t\ttype: 'Fragment',\n\t\t\tchildren: [],\n\t\t};\n\n\t\tthis.css = null;\n\t\tthis.js = null;\n\n\t\tthis.stack.push(this.html);\n\n\t\tlet state: ParserState = fragment;\n\n\t\twhile (this.index < this.template.length) {\n\t\t\tstate = state(this) || fragment;\n\t\t}\n\n\t\tif (this.stack.length > 1) {\n\t\t\tconst current = this.current();\n\n\t\t\tconst type = current.type === 'Element' ? `<${current.name}>` : 'Block';\n\t\t\tconst slug = current.type === 'Element' ? 'element' : 'block';\n\n\t\t\tthis.error({\n\t\t\t\tcode: `unclosed-${slug}`,\n\t\t\t\tmessage: `${type} was left open`\n\t\t\t}, current.start);\n\t\t}\n\n\t\tif (state !== fragment) {\n\t\t\tthis.error({\n\t\t\t\tcode: `unexpected-eof`,\n\t\t\t\tmessage: 'Unexpected end of input'\n\t\t\t});\n\t\t}\n\n\t\tif (this.html.children.length) {\n\t\t\tlet start = this.html.children[0] && this.html.children[0].start;\n\t\t\twhile (/\\s/.test(template[start])) start += 1;\n\n\t\t\tlet end = this.html.children[this.html.children.length - 1] && this.html.children[this.html.children.length - 1].end;\n\t\t\twhile (/\\s/.test(template[end - 1])) end -= 1;\n\n\t\t\tthis.html.start = start;\n\t\t\tthis.html.end = end;\n\t\t} else {\n\t\t\tthis.html.start = this.html.end = null;\n\t\t}\n\t}\n\n\tcurrent() {\n\t\treturn this.stack[this.stack.length - 1];\n\t}\n\n\tacornError(err: any) {\n\t\tthis.error({\n\t\t\tcode: `parse-error`,\n\t\t\tmessage: err.message.replace(/ \\(\\d+:\\d+\\)$/, '')\n\t\t}, err.pos);\n\t}\n\n\terror({ code, message }: { code: string, message: string }, index = this.index) {\n\t\terror(message, {\n\t\t\tname: 'ParseError',\n\t\t\tcode,\n\t\t\tsource: this.template,\n\t\t\tstart: index,\n\t\t\tfilename: this.filename\n\t\t});\n\t}\n\n\teat(str: string, required?: boolean, message?: string) {\n\t\tif (this.match(str)) {\n\t\t\tthis.index += str.length;\n\t\t\treturn true;\n\t\t}\n\n\t\tif (required) {\n\t\t\tthis.error({\n\t\t\t\tcode: `unexpected-${this.index === this.template.length ? 'eof' : 'token'}`,\n\t\t\t\tmessage: message || `Expected ${str}`\n\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tmatch(str: string) {\n\t\treturn this.template.slice(this.index, this.index + str.length) === str;\n\t}\n\n\tallowWhitespace() {\n\t\twhile (\n\t\t\tthis.index < this.template.length &&\n\t\t\twhitespace.test(this.template[this.index])\n\t\t) {\n\t\t\tthis.index++;\n\t\t}\n\t}\n\n\tread(pattern: RegExp) {\n\t\tconst match = pattern.exec(this.template.slice(this.index));\n\t\tif (!match || match.index !== 0) return null;\n\n\t\tthis.index += match[0].length;\n\n\t\treturn match[0];\n\t}\n\n\treadIdentifier() {\n\t\tconst start = this.index;\n\n\t\tlet i = this.index;\n\n\t\tconst code = fullCharCodeAt(this.template, i);\n\t\tif (!isIdentifierStart(code, true)) return null;\n\n\t\ti += code <= 0xffff ? 1 : 2;\n\n\t\twhile (i < this.template.length) {\n\t\t\tconst code = fullCharCodeAt(this.template, i);\n\n\t\t\tif (!isIdentifierChar(code, true)) break;\n\t\t\ti += code <= 0xffff ? 1 : 2;\n\t\t}\n\n\t\tconst identifier = this.template.slice(this.index, this.index = i);\n\n\t\tif (reservedNames.has(identifier)) {\n\t\t\tthis.error({\n\t\t\t\tcode: `unexpected-reserved-word`,\n\t\t\t\tmessage: `'${identifier}' is a reserved word in JavaScript and cannot be used here`\n\t\t\t}, start);\n\t\t}\n\n\t\treturn identifier;\n\t}\n\n\treadUntil(pattern: RegExp) {\n\t\tif (this.index >= this.template.length)\n\t\t\tthis.error({\n\t\t\t\tcode: `unexpected-eof`,\n\t\t\t\tmessage: 'Unexpected end of input'\n\t\t\t});\n\n\t\tconst start = this.index;\n\t\tconst match = pattern.exec(this.template.slice(start));\n\n\t\tif (match) {\n\t\t\tthis.index = start + match.index;\n\t\t\treturn this.template.slice(start, this.index);\n\t\t}\n\n\t\tthis.index = this.template.length;\n\t\treturn this.template.slice(start);\n\t}\n\n\tremaining() {\n\t\treturn this.template.slice(this.index);\n\t}\n\n\trequireWhitespace() {\n\t\tif (!whitespace.test(this.template[this.index])) {\n\t\t\tthis.error({\n\t\t\t\tcode: `missing-whitespace`,\n\t\t\t\tmessage: `Expected whitespace`\n\t\t\t});\n\t\t}\n\n\t\tthis.allowWhitespace();\n\t}\n}\n\nexport default function parse(\n\ttemplate: string,\n\toptions: ParserOptions = {}\n): Ast {\n\tconst parser = new Parser(template, options);\n\treturn {\n\t\thtml: parser.html,\n\t\tcss: parser.css,\n\t\tjs: parser.js,\n\t};\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nconst disallowed = new Set(['Literal', 'ObjectExpression', 'ArrayExpression']);\n\nexport default function data(validator: Validator, prop: Node) {\n\twhile (prop.type === 'ParenthesizedExpression') prop = prop.expression;\n\n\tif (disallowed.has(prop.value.type)) {\n\t\tvalidator.error(prop.value, {\n\t\t\tcode: `invalid-data-property`,\n\t\t\tmessage: `'data' must be a function`\n\t\t});\n\t}\n}\n","import { Node } from '../interfaces';\n\nexport default function getMethodName(node: Node) {\n\tif (node.type === 'Identifier') return node.name;\n\tif (node.type === 'Literal') return String(node.value);\n}","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\nimport getName from '../../../utils/getName';\n\nexport default function checkForDupes(\n\tvalidator: Validator,\n\tproperties: Node[]\n) {\n\tconst seen = new Set();\n\n\tproperties.forEach(prop => {\n\t\tconst name = getName(prop.key);\n\n\t\tif (seen.has(name)) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `duplicate-property`,\n\t\t\t\tmessage: `Duplicate property '${name}'`\n\t\t\t});\n\t\t}\n\n\t\tseen.add(name);\n\t});\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function checkForComputedKeys(\n\tvalidator: Validator,\n\tproperties: Node[]\n) {\n\tproperties.forEach(prop => {\n\t\tif (prop.key.computed) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `computed-key`,\n\t\t\t\tmessage: `Cannot use computed keys`\n\t\t\t});\n\t\t}\n\t});\n}\n","import checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function actions(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-actions`,\n\t\t\tmessage: `The 'actions' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n}\n","import checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function transitions(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-transitions-property`,\n\t\t\tmessage: `The 'transitions' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n\n\tprop.value.properties.forEach(() => {\n\t\t// TODO probably some validation that can happen here...\n\t\t// checking for use of `this` etc?\n\t});\n}\n","import { isIdentifierStart, isIdentifierChar } from 'acorn';\nimport fullCharCodeAt from './fullCharCodeAt';\n\nexport default function isValidIdentifier(str: string): boolean {\n\tlet i = 0;\n\n\twhile (i < str.length) {\n\t\tconst code = fullCharCodeAt(str, i);\n\t\tif (!(i === 0 ? isIdentifierStart : isIdentifierChar)(code, true)) return false;\n\n\t\ti += code <= 0xffff ? 1 : 2;\n\t}\n\n\treturn true;\n}","import { Node } from '../interfaces';\nimport { walk } from 'estree-walker';\n\nexport default function walkThroughTopFunctionScope(body: Node, callback: Function) {\n let lexicalDepth = 0;\n walk(body, {\n enter(node: Node) {\n if (/^Function/.test(node.type)) {\n lexicalDepth += 1;\n } else if (lexicalDepth === 0) {\n callback(node)\n }\n },\n\n leave(node: Node) {\n if (/^Function/.test(node.type)) {\n lexicalDepth -= 1;\n }\n },\n });\n}\n","import { Node } from '../interfaces';\n\nexport default function isThisGetCallExpression(node: Node): boolean {\n\t\treturn node.type === 'CallExpression' &&\n\t\t\t\tnode.callee.type === 'MemberExpression' &&\n\t\t\t\tnode.callee.object.type === 'ThisExpression' &&\n\t\t\t\tnode.callee.property.name === 'get';\n}\n","import checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport getName from '../../../utils/getName';\nimport isValidIdentifier from '../../../utils/isValidIdentifier';\nimport reservedNames from '../../../utils/reservedNames';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\nimport walkThroughTopFunctionScope from '../../../utils/walkThroughTopFunctionScope';\nimport isThisGetCallExpression from '../../../utils/isThisGetCallExpression';\nimport validCalleeObjects from '../../../utils/validCalleeObjects';\n\nconst isFunctionExpression = new Set([\n\t'FunctionExpression',\n\t'ArrowFunctionExpression',\n]);\n\nexport default function computed(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-computed-property`,\n\t\t\tmessage: `The 'computed' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n\n\tprop.value.properties.forEach((computation: Node) => {\n\t\tconst name = getName(computation.key);\n\n\t\tif (!isValidIdentifier(name)) {\n\t\t\tconst suggestion = name.replace(/[^_$a-z0-9]/ig, '_').replace(/^\\d/, '_$&');\n\t\t\tvalidator.error(computation.key, {\n\t\t\t\tcode: `invalid-computed-name`,\n\t\t\t\tmessage: `Computed property name '${name}' is invalid — must be a valid identifier such as ${suggestion}`\n\t\t\t});\n\t\t}\n\n\t\tif (reservedNames.has(name)) {\n\t\t\tvalidator.error(computation.key, {\n\t\t\t\tcode: `invalid-computed-name`,\n\t\t\t\tmessage: `Computed property name '${name}' is invalid — cannot be a JavaScript reserved word`\n\t\t\t});\n\t\t}\n\n\t\tif (!isFunctionExpression.has(computation.value.type)) {\n\t\t\tvalidator.error(computation.value, {\n\t\t\t\tcode: `invalid-computed-value`,\n\t\t\t\tmessage: `Computed properties can be function expressions or arrow function expressions`\n\t\t\t});\n\t\t}\n\n\t\tconst { body, params } = computation.value;\n\n\t\twalkThroughTopFunctionScope(body, (node: Node) => {\n\t\t\tif (isThisGetCallExpression(node) && !node.callee.property.computed) {\n\t\t\t\tvalidator.error(node, {\n\t\t\t\t\tcode: `impure-computed`,\n\t\t\t\t\tmessage: `Cannot use this.get(...) — values must be passed into the function as arguments`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (node.type === 'ThisExpression') {\n\t\t\t\tvalidator.error(node, {\n\t\t\t\t\tcode: `impure-computed`,\n\t\t\t\t\tmessage: `Computed properties should be pure functions — they do not have access to the component instance and cannot use 'this'. Did you mean to put this in 'methods'?`\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif (params.length === 0) {\n\t\t\tvalidator.error(computation.value, {\n\t\t\t\tcode: `impure-computed`,\n\t\t\t\tmessage: `A computed value must depend on at least one property`\n\t\t\t});\n\t\t}\n\n\t\tif (params.length > 1) {\n\t\t\tvalidator.error(computation.value, {\n\t\t\t\tcode: `invalid-computed-arguments`,\n\t\t\t\tmessage: `Computed properties must take a single argument`\n\t\t\t});\n\t\t}\n\t});\n}\n","function isReference(node, parent) {\n if (node.type === 'MemberExpression') {\n return !node.computed && isReference(node.object, node);\n }\n if (node.type === 'Identifier') {\n // the only time we could have an identifier node without a parent is\n // if it's the entire body of a function without a block statement –\n // i.e. an arrow function expression like `a => a`\n if (!parent)\n return true;\n // TODO is this right?\n if (parent.type === 'MemberExpression' || parent.type === 'MethodDefinition') {\n return parent.computed || node === parent.object;\n }\n // disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n if (parent.type === 'Property')\n return parent.computed || node === parent.value;\n // disregard the `bar` in `export { foo as bar }`\n if (parent.type === 'ExportSpecifier' && node !== parent.local)\n return false;\n return true;\n }\n return false;\n}\n\nexport default isReference;\n","import { walk } from 'estree-walker';\nimport isReference from 'is-reference';\nimport { Node } from '../../../interfaces';\n\nexport default function usesThisOrArguments(node: Node) {\n\tlet result = false;\n\n\twalk(node, {\n\t\tenter(node: Node, parent: Node) {\n\t\t\tif (\n\t\t\t\tresult ||\n\t\t\t\tnode.type === 'FunctionExpression' ||\n\t\t\t\tnode.type === 'FunctionDeclaration'\n\t\t\t) {\n\t\t\t\treturn this.skip();\n\t\t\t}\n\n\t\t\tif (node.type === 'ThisExpression') {\n\t\t\t\tresult = true;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tnode.type === 'Identifier' &&\n\t\t\t\tisReference(node, parent) &&\n\t\t\t\tnode.name === 'arguments'\n\t\t\t) {\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t},\n\t});\n\n\treturn result;\n}\n","import usesThisOrArguments from '../utils/usesThisOrArguments';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function oncreate(validator: Validator, prop: Node) {\n\tif (prop.value.type === 'ArrowFunctionExpression') {\n\t\tif (usesThisOrArguments(prop.value.body)) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `invalid-oncreate-property`,\n\t\t\t\tmessage: `'oncreate' should be a function expression, not an arrow function expression`\n\t\t\t});\n\t\t}\n\t}\n}\n","import usesThisOrArguments from '../utils/usesThisOrArguments';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function ondestroy(validator: Validator, prop: Node) {\n\tif (prop.value.type === 'ArrowFunctionExpression') {\n\t\tif (usesThisOrArguments(prop.value.body)) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `invalid-ondestroy-property`,\n\t\t\t\tmessage: `'ondestroy' should be a function expression, not an arrow function expression`\n\t\t\t});\n\t\t}\n\t}\n}\n","import usesThisOrArguments from '../utils/usesThisOrArguments';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function onstate(validator: Validator, prop: Node) {\n\tif (prop.value.type === 'ArrowFunctionExpression') {\n\t\tif (usesThisOrArguments(prop.value.body)) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `invalid-onstate-property`,\n\t\t\t\tmessage: `'onstate' should be a function expression, not an arrow function expression`\n\t\t\t});\n\t\t}\n\t}\n}\n","import usesThisOrArguments from '../utils/usesThisOrArguments';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function onupdate(validator: Validator, prop: Node) {\n\tif (prop.value.type === 'ArrowFunctionExpression') {\n\t\tif (usesThisOrArguments(prop.value.body)) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `invalid-onupdate-property`,\n\t\t\t\tmessage: `'onupdate' should be a function expression, not an arrow function expression`\n\t\t\t});\n\t\t}\n\t}\n}\n","import oncreate from './oncreate';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function onrender(validator: Validator, prop: Node) {\n\tvalidator.warn(prop, {\n\t\tcode: `deprecated-onrender`,\n\t\tmessage: `'onrender' has been deprecated in favour of 'oncreate', and will cause an error in Svelte 2.x`\n\t});\n\n\toncreate(validator, prop);\n}\n","import ondestroy from './ondestroy';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function onteardown(validator: Validator, prop: Node) {\n\tvalidator.warn(prop, {\n\t\tcode: `deprecated-onteardown`,\n\t\tmessage: `'onteardown' has been deprecated in favour of 'ondestroy', and will cause an error in Svelte 2.x`\n\t});\n\n\tondestroy(validator, prop);\n}\n","import checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport { walk } from 'estree-walker';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\nimport walkThroughTopFunctionScope from '../../../utils/walkThroughTopFunctionScope';\nimport isThisGetCallExpression from '../../../utils/isThisGetCallExpression';\n\nexport default function helpers(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-helpers-property`,\n\t\t\tmessage: `The 'helpers' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n\n\tprop.value.properties.forEach((prop: Node) => {\n\t\tif (!/FunctionExpression/.test(prop.value.type)) return;\n\n\t\tlet usesArguments = false;\n\n\t\twalkThroughTopFunctionScope(prop.value.body, (node: Node) => {\n\t\t\tif (isThisGetCallExpression(node) && !node.callee.property.computed) {\n\t\t\t\tvalidator.error(node, {\n\t\t\t\t\tcode: `impure-helper`,\n\t\t\t\t\tmessage: `Cannot use this.get(...) — values must be passed into the helper function as arguments`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (node.type === 'ThisExpression') {\n\t\t\t\tvalidator.error(node, {\n\t\t\t\t\tcode: `impure-helper`,\n\t\t\t\t\tmessage: `Helpers should be pure functions — they do not have access to the component instance and cannot use 'this'. Did you mean to put this in 'methods'?`\n\t\t\t\t});\n\t\t\t} else if (node.type === 'Identifier' && node.name === 'arguments') {\n\t\t\t\tusesArguments = true;\n\t\t\t}\n\t\t});\n\n\t\tif (prop.value.params.length === 0 && !usesArguments) {\n\t\t\tvalidator.warn(prop, {\n\t\t\t\tcode: `impure-helper`,\n\t\t\t\tmessage: `Helpers should be pure functions, with at least one argument`\n\t\t\t});\n\t\t}\n\t});\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function checkForAccessors(\n\tvalidator: Validator,\n\tproperties: Node[],\n\tlabel: string\n) {\n\tproperties.forEach(prop => {\n\t\tif (prop.kind !== 'init') {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `illegal-accessor`,\n\t\t\t\tmessage: `${label} cannot use getters and setters`\n\t\t\t});\n\t\t}\n\t});\n}\n","import checkForAccessors from '../utils/checkForAccessors';\nimport checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport usesThisOrArguments from '../utils/usesThisOrArguments';\nimport getName from '../../../utils/getName';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nconst builtin = new Set(['set', 'get', 'on', 'fire', 'destroy']);\n\nexport default function methods(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-methods-property`,\n\t\t\tmessage: `The 'methods' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForAccessors(validator, prop.value.properties, 'Methods');\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n\n\tprop.value.properties.forEach((prop: Node) => {\n\t\tconst name = getName(prop.key);\n\n\t\tif (builtin.has(name)) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `invalid-method-name`,\n\t\t\t\tmessage: `Cannot overwrite built-in method '${name}'`\n\t\t\t});\n\t\t}\n\n\t\tif (prop.value.type === 'ArrowFunctionExpression') {\n\t\t\tif (usesThisOrArguments(prop.value.body)) {\n\t\t\t\tvalidator.error(prop, {\n\t\t\t\t\tcode: `invalid-method-value`,\n\t\t\t\t\tmessage: `Method '${prop.key.name}' should be a function expression, not an arrow function expression`\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n","import checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport getName from '../../../utils/getName';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function components(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-components-property`,\n\t\t\tmessage: `The 'components' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n\n\tprop.value.properties.forEach((component: Node) => {\n\t\tconst name = getName(component.key);\n\n\t\tif (name === 'state') {\n\t\t\t// TODO is this still true?\n\t\t\tvalidator.error(component, {\n\t\t\t\tcode: `invalid-name`,\n\t\t\t\tmessage: `Component constructors cannot be called 'state' due to technical limitations`\n\t\t\t});\n\t\t}\n\n\t\tif (!/^[A-Z]/.test(name)) {\n\t\t\tvalidator.error(component, {\n\t\t\t\tcode: `component-lowercase`,\n\t\t\t\tmessage: `Component names must be capitalised`\n\t\t\t});\n\t\t}\n\t});\n}\n","import checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function events(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-events-property`,\n\t\t\tmessage: `The 'events' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n}\n","export const html = 'http://www.w3.org/1999/xhtml';\nexport const mathml = 'http://www.w3.org/1998/Math/MathML';\nexport const svg = 'http://www.w3.org/2000/svg';\nexport const xlink = 'http://www.w3.org/1999/xlink';\nexport const xml = 'http://www.w3.org/XML/1998/namespace';\nexport const xmlns = 'http://www.w3.org/2000/xmlns';\n\nexport const validNamespaces = [\n\t'html',\n\t'mathml',\n\t'svg',\n\t'xlink',\n\t'xml',\n\t'xmlns',\n\thtml,\n\tmathml,\n\tsvg,\n\txlink,\n\txml,\n\txmlns,\n];\n\nconst namespaces: Record<string, string> = { html, mathml, svg, xlink, xml, xmlns };\n\nexport default namespaces;\n","import { Node } from '../interfaces';\n\nexport default function nodeToString(node: Node) {\n\tif (node.type === 'Literal' && typeof node.value === 'string') {\n\t\treturn node.value;\n\t} else if (node.type === 'TemplateLiteral'\n\t && node.quasis.length === 1\n\t && node.expressions.length === 0) {\n\t\treturn node.quasis[0].value.raw;\n\t}\n}\n","// adapted from https://github.com/Glench/fuzzyset.js/blob/master/lib/fuzzyset.js\n// BSD Licensed\n\nconst GRAM_SIZE_LOWER = 2;\nconst GRAM_SIZE_UPPER = 3;\n\n// return an edit distance from 0 to 1\nfunction _distance(str1: string, str2: string) {\n\tif (str1 === null && str2 === null)\n\t\tthrow 'Trying to compare two null values';\n\tif (str1 === null || str2 === null) return 0;\n\tstr1 = String(str1);\n\tstr2 = String(str2);\n\n\tconst distance = levenshtein(str1, str2);\n\tif (str1.length > str2.length) {\n\t\treturn 1 - distance / str1.length;\n\t} else {\n\t\treturn 1 - distance / str2.length;\n\t}\n}\n\n// helper functions\nfunction levenshtein(str1: string, str2: string) {\n\tconst current: number[] = [];\n\tlet prev;\n\tlet value;\n\n\tfor (let i = 0; i <= str2.length; i++) {\n\t\tfor (let j = 0; j <= str1.length; j++) {\n\t\t\tif (i && j) {\n\t\t\t\tif (str1.charAt(j - 1) === str2.charAt(i - 1)) {\n\t\t\t\t\tvalue = prev;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = Math.min(current[j], current[j - 1], prev) + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalue = i + j;\n\t\t\t}\n\n\t\t\tprev = current[j];\n\t\t\tcurrent[j] = value;\n\t\t}\n\t}\n\n\treturn current.pop();\n}\n\nconst _nonWordRe = /[^\\w, ]+/;\n\nfunction _iterateGrams(value: string, gramSize: number) {\n\tgramSize = gramSize || 2;\n\tconst simplified = '-' + value.toLowerCase().replace(_nonWordRe, '') + '-';\n\tconst lenDiff = gramSize - simplified.length;\n\tconst results = [];\n\n\tif (lenDiff > 0) {\n\t\tfor (let i = 0; i < lenDiff; ++i) {\n\t\t\tvalue += '-';\n\t\t}\n\t}\n\tfor (let i = 0; i < simplified.length - gramSize + 1; ++i) {\n\t\tresults.push(simplified.slice(i, i + gramSize));\n\t}\n\treturn results;\n}\n\nfunction _gramCounter(value: string, gramSize: number) {\n\t// return an object where key=gram, value=number of occurrences\n\tgramSize = gramSize || 2;\n\tconst result = {};\n\tconst grams = _iterateGrams(value, gramSize);\n\tlet i = 0;\n\n\tfor (i; i < grams.length; ++i) {\n\t\tif (grams[i] in result) {\n\t\t\tresult[grams[i]] += 1;\n\t\t} else {\n\t\t\tresult[grams[i]] = 1;\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction sortDescending(a, b) {\n\treturn b[0] - a[0];\n}\n\nexport default class FuzzySet {\n\texactSet: object;\n\tmatchDict: object;\n\titems: object;\n\n\tconstructor(arr: string[]) {\n\t\t// define all the object functions and attributes\n\t\tthis.exactSet = {};\n\t\tthis.matchDict = {};\n\t\tthis.items = {};\n\n\t\t// initialization\n\t\tfor (let i = GRAM_SIZE_LOWER; i < GRAM_SIZE_UPPER + 1; ++i) {\n\t\t\tthis.items[i] = [];\n\t\t}\n\t\t// add all the items to the set\n\t\tfor (let i = 0; i < arr.length; ++i) {\n\t\t\tthis.add(arr[i]);\n\t\t}\n\t}\n\n\tadd(value: string) {\n\t\tconst normalizedValue = value.toLowerCase();\n\t\tif (normalizedValue in this.exactSet) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet i = GRAM_SIZE_LOWER;\n\t\tfor (i; i < GRAM_SIZE_UPPER + 1; ++i) {\n\t\t\tthis._add(value, i);\n\t\t}\n\t}\n\n\t_add(value: string, gramSize: number) {\n\t\tconst normalizedValue = value.toLowerCase();\n\t\tconst items = this.items[gramSize] || [];\n\t\tconst index = items.length;\n\n\t\titems.push(0);\n\t\tconst gramCounts = _gramCounter(normalizedValue, gramSize);\n\t\tlet sumOfSquareGramCounts = 0;\n\t\tlet gram;\n\t\tlet gramCount;\n\n\t\tfor (gram in gramCounts) {\n\t\t\tgramCount = gramCounts[gram];\n\t\t\tsumOfSquareGramCounts += Math.pow(gramCount, 2);\n\t\t\tif (gram in this.matchDict) {\n\t\t\t\tthis.matchDict[gram].push([index, gramCount]);\n\t\t\t} else {\n\t\t\t\tthis.matchDict[gram] = [[index, gramCount]];\n\t\t\t}\n\t\t}\n\t\tconst vectorNormal = Math.sqrt(sumOfSquareGramCounts);\n\t\titems[index] = [vectorNormal, normalizedValue];\n\t\tthis.items[gramSize] = items;\n\t\tthis.exactSet[normalizedValue] = value;\n\t};\n\n\tget(value: string) {\n\t\tconst normalizedValue = value.toLowerCase();\n\t\tconst result = this.exactSet[normalizedValue];\n\n\t\tif (result) {\n\t\t\treturn [[1, result]];\n\t\t}\n\n\t\tlet results = [];\n\t\t// start with high gram size and if there are no results, go to lower gram sizes\n\t\tfor (\n\t\t\tlet gramSize = GRAM_SIZE_UPPER;\n\t\t\tgramSize >= GRAM_SIZE_LOWER;\n\t\t\t--gramSize\n\t\t) {\n\t\t\tresults = this.__get(value, gramSize);\n\t\t\tif (results) {\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t__get(value: string, gramSize: number) {\n\t\tconst normalizedValue = value.toLowerCase();\n\t\tconst matches = {};\n\t\tconst gramCounts = _gramCounter(normalizedValue, gramSize);\n\t\tconst items = this.items[gramSize];\n\t\tlet sumOfSquareGramCounts = 0;\n\t\tlet gram;\n\t\tlet gramCount;\n\t\tlet i;\n\t\tlet index;\n\t\tlet otherGramCount;\n\n\t\tfor (gram in gramCounts) {\n\t\t\tgramCount = gramCounts[gram];\n\t\t\tsumOfSquareGramCounts += Math.pow(gramCount, 2);\n\t\t\tif (gram in this.matchDict) {\n\t\t\t\tfor (i = 0; i < this.matchDict[gram].length; ++i) {\n\t\t\t\t\tindex = this.matchDict[gram][i][0];\n\t\t\t\t\totherGramCount = this.matchDict[gram][i][1];\n\t\t\t\t\tif (index in matches) {\n\t\t\t\t\t\tmatches[index] += gramCount * otherGramCount;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatches[index] = gramCount * otherGramCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst vectorNormal = Math.sqrt(sumOfSquareGramCounts);\n\t\tlet results = [];\n\t\tlet matchScore;\n\n\t\t// build a results list of [score, str]\n\t\tfor (const matchIndex in matches) {\n\t\t\tmatchScore = matches[matchIndex];\n\t\t\tresults.push([\n\t\t\t\tmatchScore / (vectorNormal * items[matchIndex][0]),\n\t\t\t\titems[matchIndex][1],\n\t\t\t]);\n\t\t}\n\n\t\tresults.sort(sortDescending);\n\n\t\tlet newResults = [];\n\t\tconst endIndex = Math.min(50, results.length);\n\t\t// truncate somewhat arbitrarily to 50\n\t\tfor (let i = 0; i < endIndex; ++i) {\n\t\t\tnewResults.push([\n\t\t\t\t_distance(results[i][1], normalizedValue),\n\t\t\t\tresults[i][1],\n\t\t\t]);\n\t\t}\n\t\tresults = newResults;\n\t\tresults.sort(sortDescending);\n\n\t\tnewResults = [];\n\t\tfor (let i = 0; i < results.length; ++i) {\n\t\t\tif (results[i][0] == results[0][0]) {\n\t\t\t\tnewResults.push([results[i][0], this.exactSet[results[i][1]]]);\n\t\t\t}\n\t\t}\n\n\t\treturn newResults;\n\t};\n}","import FuzzySet from './FuzzySet';\n\nexport default function fuzzymatch(name: string, names: string[]) {\n\tconst set = new FuzzySet(names);\n\tconst matches = set.get(name);\n\n\treturn matches && matches[0] && matches[0][0] > 0.7 ? matches[0][1] : null;\n}\n","import * as namespaces from '../../../utils/namespaces';\nimport nodeToString from '../../../utils/nodeToString'\nimport fuzzymatch from '../../utils/fuzzymatch';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nconst valid = new Set(namespaces.validNamespaces);\n\nexport default function namespace(validator: Validator, prop: Node) {\n\tconst ns = nodeToString(prop.value);\n\n\tif (typeof ns !== 'string') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-namespace-property`,\n\t\t\tmessage: `The 'namespace' property must be a string literal representing a valid namespace`\n\t\t});\n\t}\n\n\tif (!valid.has(ns)) {\n\t\tconst match = fuzzymatch(ns, namespaces.validNamespaces);\n\t\tif (match) {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `invalid-namespace-property`,\n\t\t\t\tmessage: `Invalid namespace '${ns}' (did you mean '${match}'?)`\n\t\t\t});\n\t\t} else {\n\t\t\tvalidator.error(prop, {\n\t\t\t\tcode: `invalid-namespace-property`,\n\t\t\t\tmessage: `Invalid namespace '${ns}'`\n\t\t\t});\n\t\t}\n\t}\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function preload(validator: Validator, prop: Node) {\n\t// not sure there's anything we need to check here...\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\nimport nodeToString from '../../../utils/nodeToString';\n\nexport default function props(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ArrayExpression') {\n\t\tvalidator.error(prop.value, {\n\t\t\tcode: `invalid-props-property`,\n\t\t\tmessage: `'props' must be an array expression, if specified`\n\t\t});\n\t}\n\n\tprop.value.elements.forEach((element: Node) => {\n\t\tif (typeof nodeToString(element) !== 'string') {\n\t\t\tvalidator.error(element, {\n\t\t\t\tcode: `invalid-props-property`,\n\t\t\t\tmessage: `'props' must be an array of string literals`\n\t\t\t});\n\t\t}\n\t});\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\nimport nodeToString from '../../../utils/nodeToString';\n\nexport default function tag(validator: Validator, prop: Node) {\n\tconst tag = nodeToString(prop.value);\n\tif (typeof tag !== 'string') {\n\t\tvalidator.error(prop.value, {\n\t\t\tcode: `invalid-tag-property`,\n\t\t\tmessage: `'tag' must be a string literal`\n\t\t});\n\t}\n\n\tif (!/^[a-zA-Z][a-zA-Z0-9]*-[a-zA-Z0-9-]+$/.test(tag)) {\n\t\tvalidator.error(prop.value, {\n\t\t\tcode: `invalid-tag-property`,\n\t\t\tmessage: `tag name must be two or more words joined by the '-' character`\n\t\t});\n\t}\n}\n","import checkForDupes from '../utils/checkForDupes';\nimport checkForComputedKeys from '../utils/checkForComputedKeys';\nimport { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function transitions(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'ObjectExpression') {\n\t\tvalidator.error(prop, {\n\t\t\tcode: `invalid-transitions-property`,\n\t\t\tmessage: `The 'transitions' property must be an object literal`\n\t\t});\n\t}\n\n\tcheckForDupes(validator, prop.value.properties);\n\tcheckForComputedKeys(validator, prop.value.properties);\n\n\tprop.value.properties.forEach(() => {\n\t\t// TODO probably some validation that can happen here...\n\t\t// checking for use of `this` etc?\n\t});\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nconst disallowed = new Set(['Literal', 'ObjectExpression', 'ArrayExpression']);\n\nexport default function setup(validator: Validator, prop: Node) {\n\twhile (prop.type === 'ParenthesizedExpression') prop = prop.expression;\n\n\tif (disallowed.has(prop.value.type)) {\n\t\tvalidator.error(prop.value, {\n\t\t\tcode: `invalid-setup-property`,\n\t\t\tmessage: `'setup' must be a function`\n\t\t});\n\t}\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function store(validator: Validator, prop: Node) {\n\t// not sure there's anything we need to check here...\n}\n","import { Validator } from '../../index';\nimport { Node } from '../../../interfaces';\n\nexport default function immutable(validator: Validator, prop: Node) {\n\tif (prop.value.type !== 'Literal' || typeof prop.value.value !== 'boolean') {\n\t\tvalidator.error(prop.value, {\n\t\t\tcode: `invalid-immutable-property`,\n\t\t\tmessage: `'immutable' must be a boolean literal`\n\t\t});\n\t}\n}\n","import data from './data';\nimport actions from './actions';\nimport animations from './animations';\nimport computed from './computed';\nimport oncreate from './oncreate';\nimport ondestroy from './ondestroy';\nimport onstate from './onstate';\nimport onupdate from './onupdate';\nimport onrender from './onrender';\nimport onteardown from './onteardown';\nimport helpers from './helpers';\nimport methods from './methods';\nimport components from './components';\nimport events from './events';\nimport namespace from './namespace';\nimport preload from './preload';\nimport props from './props';\nimport tag from './tag';\nimport transitions from './transitions';\nimport setup from './setup';\nimport store from './store';\nimport immutable from './immutable';\n\nexport default {\n\tdata,\n\tactions,\n\tanimations,\n\tcomputed,\n\toncreate,\n\tondestroy,\n\tonstate,\n\tonupdate,\n\tonrender,\n\tonteardown,\n\thelpers,\n\tmethods,\n\tcomponents,\n\tevents,\n\tnamespace,\n\tpreload,\n\tprops,\n\ttag,\n\ttransitions,\n\tsetup,\n\tstore,\n\timmutable,\n};\n","import propValidators from './propValidators/index';\nimport fuzzymatch from '../utils/fuzzymatch';\nimport checkForDupes from './utils/checkForDupes';\nimport checkForComputedKeys from './utils/checkForComputedKeys';\nimport namespaces from '../../utils/namespaces';\nimport nodeToString from '../../utils/nodeToString';\nimport getName from '../../utils/getName';\nimport { Validator } from '../';\nimport { Node } from '../../interfaces';\n\nconst validPropList = Object.keys(propValidators);\n\nexport default function validateJs(validator: Validator, js: Node) {\n\tjs.content.body.forEach((node: Node) => {\n\t\t// check there are no named exports\n\t\tif (node.type === 'ExportNamedDeclaration') {\n\t\t\tvalidator.error(node, {\n\t\t\t\tcode: `named-export`,\n\t\t\t\tmessage: `A component can only have a default export`\n\t\t\t});\n\t\t}\n\n\t\tif (node.type === 'ExportDefaultDeclaration') {\n\t\t\tif (node.declaration.type !== 'ObjectExpression') {\n\t\t\t\tvalidator.error(node.declaration, {\n\t\t\t\t\tcode: `invalid-default-export`,\n\t\t\t\t\tmessage: `Default export must be an object literal`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcheckForComputedKeys(validator, node.declaration.properties);\n\t\t\tcheckForDupes(validator, node.declaration.properties);\n\n\t\t\tconst props = validator.properties;\n\n\t\t\tnode.declaration.properties.forEach((prop: Node) => {\n\t\t\t\tprops.set(getName(prop.key), prop);\n\t\t\t});\n\n\t\t\t// Remove these checks in version 2\n\t\t\tif (props.has('oncreate') && props.has('onrender')) {\n\t\t\t\tvalidator.error(props.get('onrender'), {\n\t\t\t\t\tcode: `duplicate-oncreate`,\n\t\t\t\t\tmessage: 'Cannot have both oncreate and onrender'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (props.has('ondestroy') && props.has('onteardown')) {\n\t\t\t\tvalidator.error(props.get('onteardown'), {\n\t\t\t\t\tcode: `duplicate-ondestroy`,\n\t\t\t\t\tmessage: 'Cannot have both ondestroy and onteardown'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// ensure all exported props are valid\n\t\t\tnode.declaration.properties.forEach((prop: Node) => {\n\t\t\t\tconst name = getName(prop.key);\n\t\t\t\tconst propValidator = propValidators[name];\n\n\t\t\t\tif (propValidator) {\n\t\t\t\t\tpropValidator(validator, prop);\n\t\t\t\t} else {\n\t\t\t\t\tconst match = fuzzymatch(name, validPropList);\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tvalidator.error(prop, {\n\t\t\t\t\t\t\tcode: `unexpected-property`,\n\t\t\t\t\t\t\tmessage: `Unexpected property '${name}' (did you mean '${match}'?)`\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (/FunctionExpression/.test(prop.value.type)) {\n\t\t\t\t\t\tvalidator.error(prop, {\n\t\t\t\t\t\t\tcode: `unexpected-property`,\n\t\t\t\t\t\t\tmessage: `Unexpected property '${name}' (did you mean to include it in 'methods'?)`\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalidator.error(prop, {\n\t\t\t\t\t\t\tcode: `unexpected-property`,\n\t\t\t\t\t\t\tmessage: `Unexpected property '${name}'`\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (props.has('namespace')) {\n\t\t\t\tconst ns = nodeToString(props.get('namespace').value);\n\t\t\t\tvalidator.namespace = namespaces[ns] || ns;\n\t\t\t}\n\n\t\t\tvalidator.defaultExport = node;\n\t\t}\n\t});\n\n\t['components', 'methods', 'helpers', 'transitions', 'animations', 'actions'].forEach(key => {\n\t\tif (validator.properties.has(key)) {\n\t\t\tvalidator.properties.get(key).value.properties.forEach((prop: Node) => {\n\t\t\t\tvalidator[key].set(getName(prop.key), prop.value);\n\t\t\t});\n\t\t}\n\t});\n}\n","import { Node } from '../interfaces';\n\nexport default function flattenReference(node: Node) {\n\tif (node.type === 'Expression') throw new Error('bad');\n\tconst nodes = [];\n\tconst parts = [];\n\tconst propEnd = node.end;\n\n\twhile (node.type === 'MemberExpression') {\n\t\tif (node.computed) return null;\n\n\t\tnodes.unshift(node.property);\n\t\tparts.unshift(node.property.name);\n\n\t\tnode = node.object;\n\t}\n\n\tconst propStart = node.end;\n\tconst name = node.type === 'Identifier'\n\t\t? node.name\n\t\t: node.type === 'ThisExpression' ? 'this' : null;\n\n\tif (!name) return null;\n\n\tparts.unshift(name);\n\tnodes.unshift(node);\n\n\treturn { name, nodes, parts, keypath: `${name}[✂${propStart}-${propEnd}✂]` };\n}\n","export default function list(items: string[], conjunction = 'or') {\n\tif (items.length === 1) return items[0];\n\treturn `${items.slice(0, -1).join(', ')} ${conjunction} ${items[\n\t\titems.length - 1\n\t]}`;\n}\n","const validCalleeObjects = new Set(['this', 'event', 'console']);\n\nexport default validCalleeObjects;","import flattenReference from '../../utils/flattenReference';\nimport list from '../../utils/list';\nimport validate, { Validator } from '../index';\nimport validCalleeObjects from '../../utils/validCalleeObjects';\nimport { Node } from '../../interfaces';\n\nconst validBuiltins = new Set(['set', 'fire', 'destroy']);\n\nexport default function validateEventHandlerCallee(\n\tvalidator: Validator,\n\tattribute: Node,\n\trefCallees: Node[]\n) {\n\tif (!attribute.expression) return;\n\n\tconst { callee, type } = attribute.expression;\n\n\tif (type !== 'CallExpression') {\n\t\tvalidator.error(attribute.expression, {\n\t\t\tcode: `invalid-event-handler`,\n\t\t\tmessage: `Expected a call expression`\n\t\t});\n\t}\n\n\tconst { name } = flattenReference(callee);\n\n\tif (validCalleeObjects.has(name) || name === 'options') return;\n\n\tif (name === 'refs') {\n\t\trefCallees.push(callee);\n\t\treturn;\n\t}\n\n\tif (\n\t\t(callee.type === 'Identifier' && validBuiltins.has(callee.name)) ||\n\t\tvalidator.methods.has(callee.name)\n\t) {\n\t\treturn;\n\t}\n\n\tif (name[0] === '$') {\n\t\t// assume it's a store method\n\t\treturn;\n\t}\n\n\tconst validCallees = ['this.*', 'event.*', 'options.*', 'console.*'].concat(\n\t\tArray.from(validBuiltins),\n\t\tArray.from(validator.methods.keys())\n\t);\n\n\tlet message = `'${validator.source.slice(callee.start, callee.end)}' is an invalid callee ` ;\n\n\tif (name === 'store') {\n\t\tmessage += `(did you mean '$${validator.source.slice(callee.start + 6, callee.end)}(...)'?)`;\n\t} else {\n\t\tmessage += `(should be one of ${list(validCallees)})`;\n\n\t\tif (callee.type === 'Identifier' && validator.helpers.has(callee.name)) {\n\t\t\tmessage += `. '${callee.name}' exists on 'helpers', did you put it in the wrong place?`;\n\t\t}\n\t}\n\n\tvalidator.warn(attribute.expression, {\n\t\tcode: `invalid-callee`,\n\t\tmessage\n\t});\n}\n","import * as namespaces from '../../utils/namespaces';\nimport validateEventHandler from './validateEventHandler';\nimport validate, { Validator } from '../index';\nimport { Node } from '../../interfaces';\n\nexport default function validateComponent(\n\tvalidator: Validator,\n\tnode: Node,\n\trefs: Map<string, Node[]>,\n\trefCallees: Node[],\n\tstack: Node[],\n\telementStack: Node[]\n) {\n\tif (node.name !== 'svelte:self' && node.name !== 'svelte:component' && !validator.components.has(node.name)) {\n\t\tvalidator.error(node, {\n\t\t\tcode: `missing-component`,\n\t\t\tmessage: `${node.name} component is not defined`\n\t\t});\n\t}\n\n\tvalidator.used.components.add(node.name);\n\n\tnode.attributes.forEach((attribute: Node) => {\n\t\tif (attribute.type === 'Ref') {\n\t\t\tif (!refs.has(attribute.name)) refs.set(attribute.name, []);\n\t\t\trefs.get(attribute.name).push(node);\n\t\t}\n\n\t\tif (attribute.type === 'EventHandler') {\n\t\t\tvalidator.used.events.add(attribute.name);\n\t\t\tvalidateEventHandler(validator, attribute, refCallees);\n\t\t} else if (attribute.type === 'Transition') {\n\t\t\tvalidator.error(attribute, {\n\t\t\t\tcode: `invalid-transition`,\n\t\t\t\tmessage: `Transitions can only be applied to DOM elements, not components`\n\t\t\t});\n\t\t} else if (attribute.type === 'Action') {\n\t\t\tvalidator.error(attribute, {\n\t\t\t\tcode: `invalid-action`,\n\t\t\t\tmessage: `Actions can only be applied to DOM elements, not components`\n\t\t\t});\n\t\t}\n\t});\n}","import * as namespaces from '../../utils/namespaces';\nimport validateEventHandler from './validateEventHandler';\nimport validate, { Validator } from '../index';\nimport { Node } from '../../interfaces';\nimport { dimensions } from '../../utils/patterns';\nimport isVoidElementName from '../../utils/isVoidElementName';\n\nconst svg = /^(?:altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform|circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix|feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern|image|line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata|missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor|stop|switch|symbol|text|textPath|tref|tspan|unknown|use|view|vkern)$/;\n\nexport default function validateElement(\n\tvalidator: Validator,\n\tnode: Node,\n\trefs: Map<string, Node[]>,\n\trefCallees: Node[],\n\tstack: Node[],\n\telementStack: Node[]\n) {\n\tif (elementStack.length === 0 && validator.namespace !== namespaces.svg && svg.test(node.name)) {\n\t\tvalidator.warn(node, {\n\t\t\tcode: `missing-namespace`,\n\t\t\tmessage: `<${node.name}> is an SVG element – did you forget to add { namespace: 'svg' } ?`\n\t\t});\n\t}\n\n\tif (node.name === 'slot') {\n\t\tconst nameAttribute = node.attributes.find((attribute: Node) => attribute.name === 'name');\n\t\tif (nameAttribute) {\n\t\t\tif (nameAttribute.value.length !== 1 || nameAttribute.value[0].type !== 'Text') {\n\t\t\t\tvalidator.error(nameAttribute, {\n\t\t\t\t\tcode: `dynamic-slot-name`,\n\t\t\t\t\tmessage: `<slot> name cannot be dynamic`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst slotName = nameAttribute.value[0].data;\n\t\t\tif (slotName === 'default') {\n\t\t\t\tvalidator.error(nameAttribute, {\n\t\t\t\t\tcode: `invalid-slot-name`,\n\t\t\t\t\tmessage: `default is a reserved word — it cannot be used as a slot name`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// TODO should duplicate slots be disallowed? Feels like it's more likely to be a\n\t\t\t// bug than anything. Perhaps it should be a warning\n\n\t\t\t// if (validator.slots.has(slotName)) {\n\t\t\t// \tvalidator.error(`duplicate '${slotName}' <slot> element`, nameAttribute.start);\n\t\t\t// }\n\n\t\t\t// validator.slots.add(slotName);\n\t\t} else {\n\t\t\t// if (validator.slots.has('default')) {\n\t\t\t// \tvalidator.error(`duplicate default <slot> element`, node.start);\n\t\t\t// }\n\n\t\t\t// validator.slots.add('default');\n\t\t}\n\t}\n\n\tif (node.name === 'title') {\n\t\tif (node.attributes.length > 0) {\n\t\t\tvalidator.error(node.attributes[0], {\n\t\t\t\tcode: `illegal-attribute`,\n\t\t\t\tmessage: `<title> cannot have attributes`\n\t\t\t});\n\t\t}\n\n\t\tnode.children.forEach(child => {\n\t\t\tif (child.type !== 'Text' && child.type !== 'MustacheTag') {\n\t\t\t\tvalidator.error(child, {\n\t\t\t\t\tcode: 'illegal-structure',\n\t\t\t\t\tmessage: `<title> can only contain text and {{tags}}`\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tlet hasIntro: boolean;\n\tlet hasOutro: boolean;\n\tlet hasTransition: boolean;\n\tlet hasAnimation: boolean;\n\n\tnode.attributes.forEach((attribute: Node) => {\n\t\tif (attribute.type === 'Ref') {\n\t\t\tif (!refs.has(attribute.name)) refs.set(attribute.name, []);\n\t\t\trefs.get(attribute.name).push(node);\n\t\t}\n\n\t\tif (attribute.type === 'Binding') {\n\t\t\tconst { name } = attribute;\n\n\t\t\tif (name === 'value') {\n\t\t\t\tif (\n\t\t\t\t\tnode.name !== 'input' &&\n\t\t\t\t\tnode.name !== 'textarea' &&\n\t\t\t\t\tnode.name !== 'select'\n\t\t\t\t) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `'value' is not a valid binding on <${node.name}> elements`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (node.name === 'select') {\n\t\t\t\t\tconst attribute = node.attributes.find(\n\t\t\t\t\t\t(attribute: Node) => attribute.name === 'multiple'\n\t\t\t\t\t);\n\n\t\t\t\t\tif (attribute && isDynamic(attribute)) {\n\t\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\t\tcode: `dynamic-multiple-attribute`,\n\t\t\t\t\t\t\tmessage: `'multiple' attribute cannot be dynamic if select uses two-way binding`\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcheckTypeAttribute(validator, node);\n\t\t\t\t}\n\t\t\t} else if (name === 'checked' || name === 'indeterminate') {\n\t\t\t\tif (node.name !== 'input') {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `'${name}' is not a valid binding on <${node.name}> elements`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (checkTypeAttribute(validator, node) !== 'checkbox') {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `'${name}' binding can only be used with <input type=\"checkbox\">`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (name === 'group') {\n\t\t\t\tif (node.name !== 'input') {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `'group' is not a valid binding on <${node.name}> elements`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst type = checkTypeAttribute(validator, node);\n\n\t\t\t\tif (type !== 'checkbox' && type !== 'radio') {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `'checked' binding can only be used with <input type=\"checkbox\"> or <input type=\"radio\">`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tname === 'currentTime' ||\n\t\t\t\tname === 'duration' ||\n\t\t\t\tname === 'paused' ||\n\t\t\t\tname === 'buffered' ||\n\t\t\t\tname === 'seekable' ||\n\t\t\t\tname === 'played' ||\n\t\t\t\tname === 'volume'\n\t\t\t) {\n\t\t\t\tif (node.name !== 'audio' && node.name !== 'video') {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `'${name}' binding can only be used with <audio> or <video>`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (dimensions.test(name)) {\n\t\t\t\tif (node.name === 'svg' && (name === 'offsetWidth' || name === 'offsetHeight')) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${attribute.name}' is not a valid binding on <svg>. Use '${name.replace('offset', 'client')}' instead`\n\t\t\t\t\t});\n\t\t\t\t} else if (svg.test(node.name)) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${attribute.name}' is not a valid binding on SVG elements`\n\t\t\t\t\t});\n\t\t\t\t} else if (isVoidElementName(node.name)) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: 'invalid-binding',\n\t\t\t\t\t\tmessage: `'${attribute.name}' is not a valid binding on void elements like <${node.name}>. Use a wrapper element instead`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\tmessage: `'${attribute.name}' is not a valid binding`\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (attribute.type === 'EventHandler') {\n\t\t\tvalidator.used.events.add(attribute.name);\n\t\t\tvalidateEventHandler(validator, attribute, refCallees);\n\t\t} else if (attribute.type === 'Transition') {\n\t\t\tvalidator.used.transitions.add(attribute.name);\n\n\t\t\tconst bidi = attribute.intro && attribute.outro;\n\n\t\t\tif (hasTransition) {\n\t\t\t\tif (bidi) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `duplicate-transition`,\n\t\t\t\t\t\tmessage: `An element can only have one 'transition' directive`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `duplicate-transition`,\n\t\t\t\t\tmessage: `An element cannot have both a 'transition' directive and an '${attribute.intro ? 'in' : 'out'}' directive`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ((hasIntro && attribute.intro) || (hasOutro && attribute.outro)) {\n\t\t\t\tif (bidi) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `duplicate-transition`,\n\t\t\t\t\t\tmessage: `An element cannot have both an '${hasIntro ? 'in' : 'out'}' directive and a 'transition' directive`\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `duplicate-transition`,\n\t\t\t\t\tmessage: `An element can only have one '${hasIntro ? 'in' : 'out'}' directive`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (attribute.intro) hasIntro = true;\n\t\t\tif (attribute.outro) hasOutro = true;\n\t\t\tif (bidi) hasTransition = true;\n\n\t\t\tif (!validator.transitions.has(attribute.name)) {\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `missing-transition`,\n\t\t\t\t\tmessage: `Missing transition '${attribute.name}'`\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (attribute.type === 'Animation') {\n\t\t\tvalidator.used.animations.add(attribute.name);\n\n\t\t\tif (hasAnimation) {\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `duplicate-animation`,\n\t\t\t\t\tmessage: `An element can only have one 'animate' directive`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!validator.animations.has(attribute.name)) {\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `missing-animation`,\n\t\t\t\t\tmessage: `Missing animation '${attribute.name}'`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst parent = stack[stack.length - 1];\n\t\t\tif (!parent || parent.type !== 'EachBlock' || !parent.key) {\n\t\t\t\t// TODO can we relax the 'immediate child' rule?\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `invalid-animation`,\n\t\t\t\t\tmessage: `An element that use the animate directive must be the immediate child of a keyed each block`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (parent.children.length > 1) {\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `invalid-animation`,\n\t\t\t\t\tmessage: `An element that use the animate directive must be the sole child of a keyed each block`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thasAnimation = true;\n\t\t} else if (attribute.type === 'Attribute') {\n\t\t\tif (attribute.name === 'value' && node.name === 'textarea') {\n\t\t\t\tif (node.children.length) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `textarea-duplicate-value`,\n\t\t\t\t\t\tmessage: `A <textarea> can have either a value attribute or (equivalently) child content, but not both`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (attribute.name === 'slot') {\n\t\t\t\tcheckSlotAttribute(validator, node, attribute, stack);\n\t\t\t}\n\t\t} else if (attribute.type === 'Action') {\n\t\t\tvalidator.used.actions.add(attribute.name);\n\n\t\t\tif (!validator.actions.has(attribute.name)) {\n\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\tcode: `missing-action`,\n\t\t\t\t\tmessage: `Missing action '${attribute.name}'`\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction checkTypeAttribute(validator: Validator, node: Node) {\n\tconst attribute = node.attributes.find(\n\t\t(attribute: Node) => attribute.name === 'type'\n\t);\n\tif (!attribute) return null;\n\n\tif (attribute.value === true) {\n\t\tvalidator.error(attribute, {\n\t\t\tcode: `missing-type`,\n\t\t\tmessage: `'type' attribute must be specified`\n\t\t});\n\t}\n\n\tif (isDynamic(attribute)) {\n\t\tvalidator.error(attribute, {\n\t\t\tcode: `invalid-type`,\n\t\t\tmessage: `'type' attribute cannot be dynamic if input uses two-way binding`\n\t\t});\n\t}\n\n\treturn attribute.value[0].data;\n}\n\nfunction checkSlotAttribute(validator: Validator, node: Node, attribute: Node, stack: Node[]) {\n\tif (isDynamic(attribute)) {\n\t\tvalidator.error(attribute, {\n\t\t\tcode: `invalid-slot-attribute`,\n\t\t\tmessage: `slot attribute cannot have a dynamic value`\n\t\t});\n\t}\n\n\tlet i = stack.length;\n\twhile (i--) {\n\t\tconst parent = stack[i];\n\n\t\tif (parent.type === 'Component') {\n\t\t\t// if we're inside a component or a custom element, gravy\n\t\t\tif (parent.name === 'svelte:self' || parent.name === 'svelte:component' || validator.components.has(parent.name)) return;\n\t\t} else if (parent.type === 'Element') {\n\t\t\tif (/-/.test(parent.name)) return;\n\t\t}\n\n\t\tif (parent.type === 'IfBlock' || parent.type === 'EachBlock') {\n\t\t\tconst message = `Cannot place slotted elements inside an ${parent.type === 'IfBlock' ? 'if' : 'each'}-block`;\n\t\t\tvalidator.error(attribute, {\n\t\t\t\tcode: `invalid-slotted-content`,\n\t\t\t\tmessage\n\t\t\t});\n\t\t}\n\t}\n\n\tvalidator.error(attribute, {\n\t\tcode: `invalid-slotted-content`,\n\t\tmessage: `Element with a slot='...' attribute must be a descendant of a component or custom element`\n\t});\n}\n\nfunction isDynamic(attribute: Node) {\n\tif (attribute.value === true) return false;\n\treturn attribute.value.length > 1 || attribute.value[0].type !== 'Text';\n}\n","import flattenReference from '../../utils/flattenReference';\nimport fuzzymatch from '../utils/fuzzymatch';\nimport list from '../../utils/list';\nimport validateEventHandler from './validateEventHandler';\nimport { Validator } from '../index';\nimport { Node } from '../../interfaces';\n\nconst validBindings = [\n\t'innerWidth',\n\t'innerHeight',\n\t'outerWidth',\n\t'outerHeight',\n\t'scrollX',\n\t'scrollY',\n\t'online'\n];\n\nexport default function validateWindow(validator: Validator, node: Node, refs: Map<string, Node[]>, refCallees: Node[]) {\n\tnode.attributes.forEach((attribute: Node) => {\n\t\tif (attribute.type === 'Binding') {\n\t\t\tif (attribute.value.type !== 'Identifier') {\n\t\t\t\tconst { parts } = flattenReference(attribute.value);\n\n\t\t\t\tvalidator.error(attribute.value, {\n\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\tmessage: `Bindings on <svelte:window> must be to top-level properties, e.g. '${parts[parts.length - 1]}' rather than '${parts.join('.')}'`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!~validBindings.indexOf(attribute.name)) {\n\t\t\t\tconst match = attribute.name === 'width'\n\t\t\t\t\t? 'innerWidth'\n\t\t\t\t\t: attribute.name === 'height'\n\t\t\t\t\t\t? 'innerHeight'\n\t\t\t\t\t\t: fuzzymatch(attribute.name, validBindings);\n\n\t\t\t\tconst message = `'${attribute.name}' is not a valid binding on <svelte:window>`;\n\n\t\t\t\tif (match) {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `${message} (did you mean '${match}'?)`\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.error(attribute, {\n\t\t\t\t\t\tcode: `invalid-binding`,\n\t\t\t\t\t\tmessage: `${message} — valid bindings are ${list(validBindings)}`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (attribute.type === 'EventHandler') {\n\t\t\tvalidator.used.events.add(attribute.name);\n\t\t\tvalidateEventHandler(validator, attribute, refCallees);\n\t\t}\n\t});\n}\n","import validateElement from './validateElement';\nimport { Validator } from '../index';\nimport { Node } from '../../interfaces';\n\nexport default function validateHead(validator: Validator, node: Node, refs: Map<string, Node[]>, refCallees: Node[]) {\n\tif (node.attributes.length) {\n\t\tvalidator.error(node.attributes[0], {\n\t\t\tcode: `invalid-attribute`,\n\t\t\tmessage: `<svelte:head> should not have any attributes or directives`\n\t\t});\n\t}\n\n\t// TODO ensure only valid elements are included here\n\n\tnode.children.forEach(node => {\n\t\tif (node.type !== 'Element' && node.type !== 'Title') return; // TODO handle {{#if}} and friends?\n\t\tvalidateElement(validator, node, refs, refCallees, [], []);\n\t});\n}\n","import * as namespaces from '../../utils/namespaces';\nimport validateEventHandler from './validateEventHandler';\nimport validate, { Validator } from '../index';\nimport { Node } from '../../interfaces';\n\nexport default function validateSlot(\n\tvalidator: Validator,\n\tnode: Node\n) {\n\tnode.attributes.forEach(attr => {\n\t\tif (attr.type !== 'Attribute') {\n\t\t\tvalidator.error(attr, {\n\t\t\t\tcode: `invalid-slot-directive`,\n\t\t\t\tmessage: `<slot> cannot have directives`\n\t\t\t});\n\t\t}\n\n\t\tif (attr.name !== 'name') {\n\t\t\tvalidator.error(attr, {\n\t\t\t\tcode: `invalid-slot-attribute`,\n\t\t\t\tmessage: `\"name\" is the only attribute permitted on <slot> elements`\n\t\t\t});\n\t\t}\n\n\t\tif (attr.value.length !== 1 || attr.value[0].type !== 'Text') {\n\t\t\tvalidator.error(attr, {\n\t\t\t\tcode: `dynamic-slot-name`,\n\t\t\t\tmessage: `<slot> name cannot be dynamic`\n\t\t\t});\n\t\t}\n\n\t\tconst slotName = attr.value[0].data;\n\t\tif (slotName === 'default') {\n\t\t\tvalidator.error(attr, {\n\t\t\t\tcode: `invalid-slot-name`,\n\t\t\t\tmessage: `default is a reserved word — it cannot be used as a slot name`\n\t\t\t});\n\t\t}\n\n\t\t// TODO should duplicate slots be disallowed? Feels like it's more likely to be a\n\t\t// bug than anything. Perhaps it should be a warning\n\n\t\t// if (validator.slots.has(slotName)) {\n\t\t// \tvalidator.error(`duplicate '${slotName}' <slot> element`, nameAttribute.start);\n\t\t// }\n\n\t\t// validator.slots.add(slotName);\n\t});\n\n\t// if (node.attributes.length === 0) && validator.slots.has('default')) {\n\t// \tvalidator.error(node, {\n\t// \t\tcode: `duplicate-slot`,\n\t// \t\tmessage: `duplicate default <slot> element`\n\t// \t});\n\t// }\n}","import { Node } from '../interfaces';\n\nexport default function getStaticAttributeValue(node: Node, name: string) {\n\tconst attribute = node.attributes.find(\n\t\t(attr: Node) => attr.type === 'Attribute' && attr.name.toLowerCase() === name\n\t);\n\n\tif (!attribute) return null;\n\n\tif (attribute.value === true) return true;\n\tif (attribute.value.length === 0) return '';\n\n\tif (attribute.value.length === 1 && attribute.value[0].type === 'Text') {\n\t\treturn attribute.value[0].data;\n\t}\n\n\treturn null;\n}\n","import * as namespaces from '../../utils/namespaces';\nimport getStaticAttributeValue from '../../utils/getStaticAttributeValue';\nimport fuzzymatch from '../utils/fuzzymatch';\nimport validateEventHandler from './validateEventHandler';\nimport { Validator } from '../index';\nimport { Node } from '../../interfaces';\n\nconst ariaAttributes = 'activedescendant atomic autocomplete busy checked controls current describedby details disabled dropeffect errormessage expanded flowto grabbed haspopup hidden invalid keyshortcuts label labelledby level live modal multiline multiselectable orientation owns placeholder posinset pressed readonly relevant required roledescription selected setsize sort valuemax valuemin valuenow valuetext'.split(' ');\nconst ariaAttributeSet = new Set(ariaAttributes);\n\nconst ariaRoles = 'alert alertdialog application article banner button cell checkbox columnheader combobox command complementary composite contentinfo definition dialog directory document feed figure form grid gridcell group heading img input landmark link list listbox listitem log main marquee math menu menubar menuitem menuitemcheckbox menuitemradio navigation none note option presentation progressbar radio radiogroup range region roletype row rowgroup rowheader scrollbar search searchbox section sectionhead select separator slider spinbutton status structure switch tab table tablist tabpanel term textbox timer toolbar tooltip tree treegrid treeitem widget window'.split(' ');\nconst ariaRoleSet = new Set(ariaRoles);\n\nconst invisibleElements = new Set(['meta', 'html', 'script', 'style']);\n\nexport default function a11y(\n\tvalidator: Validator,\n\tnode: Node,\n\telementStack: Node[]\n) {\n\tif (node.type === 'Text') {\n\t\t// accessible-emoji\n\t\treturn;\n\t}\n\n\tif (node.type !== 'Element') return;\n\n\tconst attributeMap = new Map();\n\tnode.attributes.forEach((attribute: Node) => {\n\t\tif (attribute.type === 'Spread') return;\n\n\t\tconst name = attribute.name.toLowerCase();\n\n\t\t// aria-props\n\t\tif (name.startsWith('aria-')) {\n\t\t\tif (invisibleElements.has(node.name)) {\n\t\t\t\t// aria-unsupported-elements\n\t\t\t\tvalidator.warn(attribute, {\n\t\t\t\t\tcode: `a11y-aria-attributes`,\n\t\t\t\t\tmessage: `A11y: <${node.name}> should not have aria-* attributes`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst type = name.slice(5);\n\t\t\tif (!ariaAttributeSet.has(type)) {\n\t\t\t\tconst match = fuzzymatch(type, ariaAttributes);\n\t\t\t\tlet message = `A11y: Unknown aria attribute 'aria-${type}'`;\n\t\t\t\tif (match) message += ` (did you mean '${match}'?)`;\n\n\t\t\t\tvalidator.warn(attribute, {\n\t\t\t\t\tcode: `a11y-unknown-aria-attribute`,\n\t\t\t\t\tmessage\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// aria-role\n\t\tif (name === 'role') {\n\t\t\tif (invisibleElements.has(node.name)) {\n\t\t\t\t// aria-unsupported-elements\n\t\t\t\tvalidator.warn(attribute, {\n\t\t\t\t\tcode: `a11y-misplaced-role`,\n\t\t\t\t\tmessage: `A11y: <${node.name}> should not have role attribute`\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst value = getStaticAttributeValue(node, 'role');\n\t\t\tif (value && !ariaRoleSet.has(value)) {\n\t\t\t\tconst match = fuzzymatch(value, ariaRoles);\n\t\t\t\tlet message = `A11y: Unknown role '${value}'`;\n\t\t\t\tif (match) message += ` (did you mean '${match}'?)`;\n\n\t\t\t\tvalidator.warn(attribute, {\n\t\t\t\t\tcode: `a11y-unknown-role`,\n\t\t\t\t\tmessage\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// no-access-key\n\t\tif (name === 'accesskey') {\n\t\t\tvalidator.warn(attribute, {\n\t\t\t\tcode: `a11y-accesskey`,\n\t\t\t\tmessage: `A11y: Avoid using accesskey`\n\t\t\t});\n\t\t}\n\n\t\t// no-autofocus\n\t\tif (name === 'autofocus') {\n\t\t\tvalidator.warn(attribute, {\n\t\t\t\tcode: `a11y-autofocus`,\n\t\t\t\tmessage: `A11y: Avoid using autofocus`\n\t\t\t});\n\t\t}\n\n\t\t// scope\n\t\tif (name === 'scope' && node.name !== 'th') {\n\t\t\tvalidator.warn(attribute, {\n\t\t\t\tcode: `a11y-misplaced-scope`,\n\t\t\t\tmessage: `A11y: The scope attribute should only be used with <th> elements`\n\t\t\t});\n\t\t}\n\n\t\t// tabindex-no-positive\n\t\tif (name === 'tabindex') {\n\t\t\tconst value = getStaticAttributeValue(node, 'tabindex');\n\t\t\tif (!isNaN(value) && +value > 0) {\n\t\t\t\tvalidator.warn(attribute, {\n\t\t\t\t\tcode: `a11y-positive-tabindex`,\n\t\t\t\t\tmessage: `A11y: avoid tabindex values above zero`\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tattributeMap.set(attribute.name, attribute);\n\t});\n\n\tfunction shouldHaveAttribute(attributes: string[], name = node.name) {\n\t\tif (attributes.length === 0 || !attributes.some((name: string) => attributeMap.has(name))) {\n\t\t\tconst article = /^[aeiou]/.test(attributes[0]) ? 'an' : 'a';\n\t\t\tconst sequence = attributes.length > 1 ?\n\t\t\t\tattributes.slice(0, -1).join(', ') + ` or ${attributes[attributes.length - 1]}` :\n\t\t\t\tattributes[0];\n\n\t\t\tvalidator.warn(node, {\n\t\t\t\tcode: `a11y-missing-attribute`,\n\t\t\t\tmessage: `A11y: <${name}> element should have ${article} ${sequence} attribute`\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction shouldHaveContent() {\n\t\tif (node.children.length === 0) {\n\t\t\tvalidator.warn(node, {\n\t\t\t\tcode: `a11y-missing-content`,\n\t\t\t\tmessage: `A11y: <${node.name}> element should have child content`\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction shouldHaveValidHref (attribute) {\n\t\tconst href = attributeMap.get(attribute);\n\t\tconst value = getStaticAttributeValue(node, attribute);\n\t\tif (value === '' || value === '#') {\n\t\t\tvalidator.warn(href, {\n\t\t\t\tcode: `a11y-invalid-attribute`,\n\t\t\t\tmessage: `A11y: '${value}' is not a valid ${attribute} attribute`\n\t\t\t});\n\t\t}\n\t}\n\n\tif (node.name === 'a') {\n\t\tif (attributeMap.has('href')) {\n\t\t\t// anchor-is-valid\n\t\t\tshouldHaveValidHref('href')\n\t\t} else if (attributeMap.has('xlink:href')) {\n\t\t\t// anchor-in-svg-is-valid\n\t\t\tshouldHaveValidHref('xlink:href')\n\t\t} else {\n\t\t\tvalidator.warn(node, {\n\t\t\t\tcode: `a11y-missing-attribute`,\n\t\t\t\tmessage: `A11y: <a> element should have an href attribute`\n\t\t\t});\n\t\t}\n\n\t\t// anchor-has-content\n\t\tshouldHaveContent();\n\t}\n\n\tif (node.name === 'img') shouldHaveAttribute(['alt']);\n\tif (node.name === 'area') shouldHaveAttribute(['alt', 'aria-label', 'aria-labelledby']);\n\tif (node.name === 'object') shouldHaveAttribute(['title', 'aria-label', 'aria-labelledby']);\n\tif (node.name === 'input' && getStaticAttributeValue(node, 'type') === 'image') {\n\t\tshouldHaveAttribute(['alt', 'aria-label', 'aria-labelledby'], 'input type=\"image\"');\n\t}\n\n\t// heading-has-content\n\tif (/^h[1-6]$/.test(node.name)) {\n\t\tshouldHaveContent();\n\n\t\tif (attributeMap.has('aria-hidden')) {\n\t\t\tvalidator.warn(attributeMap.get('aria-hidden'), {\n\t\t\t\tcode: `a11y-hidden`,\n\t\t\t\tmessage: `A11y: <${node.name}> element should not be hidden`\n\t\t\t});\n\t\t}\n\t}\n\n\t// iframe-has-title\n\tif (node.name === 'iframe') {\n\t\tshouldHaveAttribute(['title']);\n\t}\n\n\t// html-has-lang\n\tif (node.name === 'html') {\n\t\tshouldHaveAttribute(['lang']);\n\t}\n\n\t// no-distracting-elements\n\tif (node.name === 'marquee' || node.name === 'blink') {\n\t\tvalidator.warn(node, {\n\t\t\tcode: `a11y-distracting-elements`,\n\t\t\tmessage: `A11y: Avoid <${node.name}> elements`\n\t\t});\n\t}\n\n\tif (node.name === 'figcaption') {\n\t\tconst parent = elementStack[elementStack.length - 1];\n\t\tif (parent) {\n\t\t\tif (parent.name !== 'figure') {\n\t\t\t\tvalidator.warn(node, {\n\t\t\t\t\tcode: `a11y-structure`,\n\t\t\t\t\tmessage: `A11y: <figcaption> must be an immediate child of <figure>`\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst children = parent.children.filter(node => {\n\t\t\t\t\tif (node.type === 'Comment') return false;\n\t\t\t\t\tif (node.type === 'Text') return /\\S/.test(node.data);\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tconst index = children.indexOf(node);\n\n\t\t\t\tif (index !== 0 && index !== children.length - 1) {\n\t\t\t\t\tvalidator.warn(node, {\n\t\t\t\t\t\tcode: `a11y-structure`,\n\t\t\t\t\t\tmessage: `A11y: <figcaption> must be first or last child of <figure>`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction getValue(attribute: Node) {\n\tif (attribute.value.length === 0) return '';\n\tif (attribute.value.length === 1 && attribute.value[0].type === 'Text') return attribute.value[0].data;\n\n\treturn null;\n}\n","export default function unpackDestructuring(\n\tcontexts: Array<{ name: string, tail: string }>,\n\tnode: Node,\n\ttail: string\n) {\n\tif (!node) return;\n\n\tif (node.type === 'Identifier') {\n\t\tcontexts.push({\n\t\t\tkey: node,\n\t\t\ttail\n\t\t});\n\t} else if (node.type === 'ArrayPattern') {\n\t\tnode.elements.forEach((element, i) => {\n\t\t\tunpackDestructuring(contexts, element, `${tail}[${i}]`);\n\t\t});\n\t} else if (node.type === 'ObjectPattern') {\n\t\tnode.properties.forEach((property) => {\n\t\t\tunpackDestructuring(contexts, property.value, `${tail}.${property.key.name}`);\n\t\t});\n\t}\n}","import validateComponent from './validateComponent';\nimport validateElement from './validateElement';\nimport validateWindow from './validateWindow';\nimport validateHead from './validateHead';\nimport validateSlot from './validateSlot';\nimport a11y from './a11y';\nimport fuzzymatch from '../utils/fuzzymatch'\nimport flattenReference from '../../utils/flattenReference';\nimport { Validator } from '../index';\nimport { Node } from '../../interfaces';\nimport unpackDestructuring from '../../utils/unpackDestructuring';\n\nfunction isEmptyBlock(node: Node) {\n\tif (!/Block$/.test(node.type) || !node.children) return false;\n\tif (node.children.length > 1) return false;\n\tconst child = node.children[0];\n\treturn !child || (child.type === 'Text' && !/\\S/.test(child.data));\n}\n\nexport default function validateHtml(validator: Validator, html: Node) {\n\tconst refs = new Map();\n\tconst refCallees: Node[] = [];\n\tconst stack: Node[] = [];\n\tconst elementStack: Node[] = [];\n\n\tfunction visit(node: Node) {\n\t\tif (node.type === 'Window') {\n\t\t\tvalidateWindow(validator, node, refs, refCallees);\n\t\t}\n\n\t\telse if (node.type === 'Head') {\n\t\t\tvalidateHead(validator, node, refs, refCallees);\n\t\t}\n\n\t\telse if (node.type === 'Slot') {\n\t\t\tvalidateSlot(validator, node);\n\t\t}\n\n\t\telse if (node.type === 'Component' || node.name === 'svelte:self' || node.name === 'svelte:component') {\n\t\t\tvalidateComponent(\n\t\t\t\tvalidator,\n\t\t\t\tnode,\n\t\t\t\trefs,\n\t\t\t\trefCallees,\n\t\t\t\tstack,\n\t\t\t\telementStack\n\t\t\t);\n\t\t}\n\n\t\telse if (node.type === 'Element') {\n\t\t\tvalidateElement(\n\t\t\t\tvalidator,\n\t\t\t\tnode,\n\t\t\t\trefs,\n\t\t\t\trefCallees,\n\t\t\t\tstack,\n\t\t\t\telementStack\n\t\t\t);\n\n\t\t\ta11y(validator, node, elementStack);\n\t\t}\n\n\t\telse if (node.type === 'EachBlock') {\n\t\t\tconst contexts = [];\n\t\t\tunpackDestructuring(contexts, node.context, '');\n\n\t\t\tcontexts.forEach(prop => {\n\t\t\t\tif (validator.helpers.has(prop.key.name)) {\n\t\t\t\t\tvalidator.warn(prop.key, {\n\t\t\t\t\t\tcode: `each-context-clash`,\n\t\t\t\t\t\tmessage: `Context clashes with a helper. Rename one or the other to eliminate any ambiguity`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (validator.options.dev && isEmptyBlock(node)) {\n\t\t\tvalidator.warn(node, {\n\t\t\t\tcode: `empty-block`,\n\t\t\t\tmessage: 'Empty block'\n\t\t\t});\n\t\t}\n\n\t\tif (node.children) {\n\t\t\tif (node.type === 'Element') elementStack.push(node);\n\t\t\tstack.push(node);\n\t\t\tnode.children.forEach(visit);\n\t\t\tstack.pop();\n\t\t\tif (node.type === 'Element') elementStack.pop();\n\t\t}\n\n\t\tif (node.else) {\n\t\t\tvisit(node.else);\n\t\t}\n\n\t\tif (node.type === 'AwaitBlock') {\n\t\t\tvisit(node.pending);\n\t\t\tvisit(node.then);\n\t\t\tvisit(node.catch);\n\t\t}\n\t}\n\n\thtml.children.forEach(visit);\n\n\trefCallees.forEach(callee => {\n\t\tconst { parts } = flattenReference(callee);\n\t\tconst ref = parts[1];\n\n\t\tif (refs.has(ref)) {\n\t\t\t// TODO check method is valid, e.g. `audio.stop()` should be `audio.pause()`\n\t\t} else {\n\t\t\tconst match = fuzzymatch(ref, Array.from(refs.keys()));\n\n\t\t\tlet message = `'refs.${ref}' does not exist`;\n\t\t\tif (match) message += ` (did you mean 'refs.${match}'?)`;\n\n\t\t\tvalidator.error(callee, {\n\t\t\t\tcode: `missing-ref`,\n\t\t\t\tmessage\n\t\t\t});\n\t\t}\n\t});\n}\n","import validateJs from './js/index';\nimport validateHtml from './html/index';\nimport { getLocator, Location } from 'locate-character';\nimport getCodeFrame from '../utils/getCodeFrame';\nimport Stats from '../Stats';\nimport error from '../utils/error';\nimport Stylesheet from '../css/Stylesheet';\nimport { Node, Ast, CompileOptions, Warning } from '../interfaces';\n\nexport class Validator {\n\treadonly source: string;\n\treadonly filename: string;\n\treadonly stats: Stats;\n\n\toptions: CompileOptions;\n\tlocator?: (pos: number) => Location;\n\n\tnamespace: string;\n\tdefaultExport: Node;\n\tproperties: Map<string, Node>;\n\tcomponents: Map<string, Node>;\n\tmethods: Map<string, Node>;\n\thelpers: Map<string, Node>;\n\tanimations: Map<string, Node>;\n\ttransitions: Map<string, Node>;\n\tactions: Map<string, Node>;\n\tslots: Set<string>;\n\n\tused: {\n\t\tcomponents: Set<string>;\n\t\thelpers: Set<string>;\n\t\tevents: Set<string>;\n\t\tanimations: Set<string>;\n\t\ttransitions: Set<string>;\n\t\tactions: Set<string>;\n\t};\n\n\tconstructor(ast: Ast, source: string, stats: Stats, options: CompileOptions) {\n\t\tthis.source = source;\n\t\tthis.stats = stats;\n\n\t\tthis.filename = options.filename;\n\t\tthis.options = options;\n\n\t\tthis.namespace = null;\n\t\tthis.defaultExport = null;\n\n\t\tthis.properties = new Map();\n\t\tthis.components = new Map();\n\t\tthis.methods = new Map();\n\t\tthis.helpers = new Map();\n\t\tthis.animations = new Map();\n\t\tthis.transitions = new Map();\n\t\tthis.actions = new Map();\n\t\tthis.slots = new Set();\n\n\t\tthis.used = {\n\t\t\tcomponents: new Set(),\n\t\t\thelpers: new Set(),\n\t\t\tevents: new Set(),\n\t\t\tanimations: new Set(),\n\t\t\ttransitions: new Set(),\n\t\t\tactions: new Set(),\n\t\t};\n\t}\n\n\terror(pos: { start: number, end: number }, { code, message } : { code: string, message: string }) {\n\t\terror(message, {\n\t\t\tname: 'ValidationError',\n\t\t\tcode,\n\t\t\tsource: this.source,\n\t\t\tstart: pos.start,\n\t\t\tend: pos.end,\n\t\t\tfilename: this.filename\n\t\t});\n\t}\n\n\twarn(pos: { start: number, end: number }, { code, message }: { code: string, message: string }) {\n\t\tif (!this.locator) this.locator = getLocator(this.source, { offsetLine: 1 });\n\t\tconst start = this.locator(pos.start);\n\t\tconst end = this.locator(pos.end);\n\n\t\tconst frame = getCodeFrame(this.source, start.line - 1, start.column);\n\n\t\tthis.stats.warn({\n\t\t\tcode,\n\t\t\tmessage,\n\t\t\tframe,\n\t\t\tstart,\n\t\t\tend,\n\t\t\tpos: pos.start,\n\t\t\tfilename: this.filename,\n\t\t\ttoString: () => `${message} (${start.line + 1}:${start.column})\\n${frame}`,\n\t\t});\n\t}\n}\n\nexport default function validate(\n\tast: Ast,\n\tsource: string,\n\tstylesheet: Stylesheet,\n\tstats: Stats,\n\toptions: CompileOptions\n) {\n\tconst { onerror, name, filename, dev, parser } = options;\n\n\ttry {\n\t\tif (name && !/^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(name)) {\n\t\t\tconst error = new Error(`options.name must be a valid identifier (got '${name}')`);\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (name && /^[a-z]/.test(name)) {\n\t\t\tconst message = `options.name should be capitalised`;\n\t\t\tstats.warn({\n\t\t\t\tcode: `options-lowercase-name`,\n\t\t\t\tmessage,\n\t\t\t\tfilename,\n\t\t\t\ttoString: () => message,\n\t\t\t});\n\t\t}\n\n\t\tconst validator = new Validator(ast, source, stats, {\n\t\t\tname,\n\t\t\tfilename,\n\t\t\tdev,\n\t\t\tparser\n\t\t});\n\n\t\tif (ast.js) {\n\t\t\tvalidateJs(validator, ast.js);\n\t\t}\n\n\t\tif (ast.css) {\n\t\t\tstylesheet.validate(validator);\n\t\t}\n\n\t\tif (ast.html) {\n\t\t\tvalidateHtml(validator, ast.html);\n\t\t}\n\n\t\t// need to do a second pass of the JS, now that we've analysed the markup\n\t\tif (ast.js && validator.defaultExport) {\n\t\t\tconst categories = {\n\t\t\t\tcomponents: 'component',\n\t\t\t\t// TODO helpers require a bit more work — need to analyse all expressions\n\t\t\t\t// helpers: 'helper',\n\t\t\t\tevents: 'event definition',\n\t\t\t\ttransitions: 'transition',\n\t\t\t\tactions: 'actions',\n\t\t\t};\n\n\t\t\tObject.keys(categories).forEach(category => {\n\t\t\t\tconst definitions = validator.defaultExport.declaration.properties.find(prop => prop.key.name === category);\n\t\t\t\tif (definitions) {\n\t\t\t\t\tdefinitions.value.properties.forEach(prop => {\n\t\t\t\t\t\tconst { name } = prop.key;\n\t\t\t\t\t\tif (!validator.used[category].has(name)) {\n\t\t\t\t\t\t\tvalidator.warn(prop, {\n\t\t\t\t\t\t\t\tcode: `unused-${category.slice(0, -1)}`,\n\t\t\t\t\t\t\t\tmessage: `The '${name}' ${categories[category]} is unused`\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} catch (err) {\n\t\tif (onerror) {\n\t\t\tonerror(err);\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n","const start = /\\n(\\t+)/;\n\nexport default function deindent(\n\tstrings: TemplateStringsArray,\n\t...values: any[]\n) {\n\tconst indentation = start.exec(strings[0])[1];\n\tconst pattern = new RegExp(`^${indentation}`, 'gm');\n\n\tlet result = strings[0].replace(start, '').replace(pattern, '');\n\n\tlet trailingIndentation = getTrailingIndentation(result);\n\n\tfor (let i = 1; i < strings.length; i += 1) {\n\t\tlet expression = values[i - 1];\n\t\tconst string = strings[i].replace(pattern, '');\n\n\t\tif (Array.isArray(expression)) {\n\t\t\texpression = expression.length ? expression.join('\\n') : null;\n\t\t}\n\n\t\tif (expression || expression === '') {\n\t\t\tconst value = String(expression).replace(\n\t\t\t\t/\\n/g,\n\t\t\t\t`\\n${trailingIndentation}`\n\t\t\t);\n\t\t\tresult += value + string;\n\t\t} else {\n\t\t\tlet c = result.length;\n\t\t\twhile (/\\s/.test(result[c - 1])) c -= 1;\n\t\t\tresult = result.slice(0, c) + string;\n\t\t}\n\n\t\ttrailingIndentation = getTrailingIndentation(result);\n\t}\n\n\treturn result.trim().replace(/\\t+$/gm, '');\n}\n\nfunction getTrailingIndentation(str: string) {\n\tlet i = str.length;\n\twhile (str[i - 1] === ' ' || str[i - 1] === '\\t') i -= 1;\n\treturn str.slice(i, str.length);\n}\n","export function stringify(data: string, options = {}) {\n\treturn JSON.stringify(escape(data, options));\n}\n\nexport function escape(data: string, { onlyEscapeAtSymbol = false } = {}) {\n\treturn data.replace(onlyEscapeAtSymbol ? /(%+|@+)/g : /(%+|@+|#+)/g, (match: string) => {\n\t\treturn match + match[0];\n\t});\n}\n\nconst escaped = {\n\t'&': '&amp;',\n\t'<': '&lt;',\n\t'>': '&gt;',\n};\n\nexport function escapeHTML(html) {\n\treturn String(html).replace(/[&<>]/g, match => escaped[match]);\n}\n\nexport function escapeTemplate(str) {\n\treturn str.replace(/(\\${|`|\\\\)/g, '\\\\$1');\n}\n","import repeat from './repeat';\n\nenum ChunkType {\n\tLine,\n\tBlock\n}\n\ninterface Condition {\n\tcondition: string;\n\tused: boolean;\n}\n\nexport default class CodeBuilder {\n\tresult: string;\n\tfirst: ChunkType;\n\tlast: ChunkType;\n\tlastCondition: string;\n\tconditionStack: Condition[];\n\tindent: string;\n\n\tconstructor(str = '') {\n\t\tthis.result = str;\n\n\t\tconst initial = str\n\t\t\t? /\\n/.test(str) ? ChunkType.Block : ChunkType.Line\n\t\t\t: null;\n\t\tthis.first = initial;\n\t\tthis.last = initial;\n\n\t\tthis.lastCondition = null;\n\t\tthis.conditionStack = [];\n\t\tthis.indent = '';\n\t}\n\n\taddConditional(condition: string, body: string) {\n\t\tthis.reifyConditions();\n\n\t\tbody = body.replace(/^/gm, `${this.indent}\\t`);\n\n\t\tif (condition === this.lastCondition) {\n\t\t\tthis.result += `\\n${body}`;\n\t\t} else {\n\t\t\tif (this.lastCondition) {\n\t\t\t\tthis.result += `\\n${this.indent}}`;\n\t\t\t}\n\n\t\t\tthis.result += `${this.last === ChunkType.Block ? '\\n\\n' : '\\n'}${this.indent}if (${condition}) {\\n${body}`;\n\t\t\tthis.lastCondition = condition;\n\t\t}\n\n\t\tthis.last = ChunkType.Block;\n\t}\n\n\taddLine(line: string) {\n\t\tthis.reifyConditions();\n\n\t\tif (this.lastCondition) {\n\t\t\tthis.result += `\\n${this.indent}}`;\n\t\t\tthis.lastCondition = null;\n\t\t}\n\n\t\tif (this.last === ChunkType.Block) {\n\t\t\tthis.result += `\\n\\n${this.indent}${line}`;\n\t\t} else if (this.last === ChunkType.Line) {\n\t\t\tthis.result += `\\n${this.indent}${line}`;\n\t\t} else {\n\t\t\tthis.result += line;\n\t\t}\n\n\t\tthis.last = ChunkType.Line;\n\t\tif (!this.first) this.first = ChunkType.Line;\n\t}\n\n\taddLineAtStart(line: string) {\n\t\tthis.reifyConditions();\n\n\t\tif (this.first === ChunkType.Block) {\n\t\t\tthis.result = `${line}\\n\\n${this.indent}${this.result}`;\n\t\t} else if (this.first === ChunkType.Line) {\n\t\t\tthis.result = `${line}\\n${this.indent}${this.result}`;\n\t\t} else {\n\t\t\tthis.result += line;\n\t\t}\n\n\t\tthis.first = ChunkType.Line;\n\t\tif (!this.last) this.last = ChunkType.Line;\n\t}\n\n\taddBlock(block: string) {\n\t\tthis.reifyConditions();\n\n\t\tif (this.indent) block = block.replace(/^/gm, `${this.indent}`);\n\n\t\tif (this.lastCondition) {\n\t\t\tthis.result += `\\n${this.indent}}`;\n\t\t\tthis.lastCondition = null;\n\t\t}\n\n\t\tif (this.result) {\n\t\t\tthis.result += `\\n\\n${this.indent}${block}`;\n\t\t} else {\n\t\t\tthis.result += block;\n\t\t}\n\n\t\tthis.last = ChunkType.Block;\n\t\tif (!this.first) this.first = ChunkType.Block;\n\t}\n\n\taddBlockAtStart(block: string) {\n\t\tthis.reifyConditions();\n\n\t\tif (this.result) {\n\t\t\tthis.result = `${block}\\n\\n${this.indent}${this.result}`;\n\t\t} else {\n\t\t\tthis.result += block;\n\t\t}\n\n\t\tthis.first = ChunkType.Block;\n\t\tif (!this.last) this.last = ChunkType.Block;\n\t}\n\n\tisEmpty() {\n\t\treturn this.result === '';\n\t}\n\n\tpushCondition(condition: string) {\n\t\tthis.conditionStack.push({ condition, used: false });\n\t}\n\n\tpopCondition() {\n\t\tconst { used } = this.conditionStack.pop();\n\n\t\tthis.indent = repeat('\\t', this.conditionStack.length);\n\t\tif (used) this.addLine('}');\n\t}\n\n\treifyConditions() {\n\t\tfor (let i = 0; i < this.conditionStack.length; i += 1) {\n\t\t\tconst condition = this.conditionStack[i];\n\t\t\tif (!condition.used) {\n\t\t\t\tconst line = `if (${condition.condition}) {`;\n\n\t\t\t\tif (this.last === ChunkType.Block) {\n\t\t\t\t\tthis.result += `\\n\\n${this.indent}${line}`;\n\t\t\t\t} else if (this.last === ChunkType.Line) {\n\t\t\t\t\tthis.result += `\\n${this.indent}${line}`;\n\t\t\t\t} else {\n\t\t\t\t\tthis.result += line;\n\t\t\t\t}\n\n\t\t\t\tthis.last = ChunkType.Line;\n\t\t\t\tif (!this.first) this.first = ChunkType.Line;\n\n\t\t\t\tthis.indent = repeat('\\t', this.conditionStack.length);\n\t\t\t\tcondition.used = true;\n\t\t\t}\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn this.result.trim() + (this.lastCondition ? `\\n}` : ``);\n\t}\n}\n","export default new Set([\n\t'Array',\n\t'Boolean',\n\t'console',\n\t'Date',\n\t'decodeURI',\n\t'decodeURIComponent',\n\t'encodeURI',\n\t'encodeURIComponent',\n\t'Infinity',\n\t'Intl',\n\t'isFinite',\n\t'isNaN',\n\t'JSON',\n\t'Map',\n\t'Math',\n\t'NaN',\n\t'Number',\n\t'Object',\n\t'parseFloat',\n\t'parseInt',\n\t'Promise',\n\t'RegExp',\n\t'Set',\n\t'String',\n\t'undefined',\n]);\n","var charToInteger = {};\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nfor (var i = 0; i < chars.length; i++) {\n charToInteger[chars.charCodeAt(i)] = i;\n}\nfunction decode(mappings) {\n var generatedCodeColumn = 0; // first field\n var sourceFileIndex = 0; // second field\n var sourceCodeLine = 0; // third field\n var sourceCodeColumn = 0; // fourth field\n var nameIndex = 0; // fifth field\n var decoded = [];\n var line = [];\n var segment = [];\n for (var i = 0, j = 0, shift = 0, value = 0; i < mappings.length; i++) {\n var c = mappings.charCodeAt(i);\n if (c === 44) {\n if (segment.length)\n line.push(segment);\n segment = [];\n j = 0;\n }\n else if (c === 59) {\n if (segment.length)\n line.push(segment);\n segment = [];\n j = 0;\n decoded.push(line);\n line = [];\n generatedCodeColumn = 0;\n }\n else {\n var integer = charToInteger[c];\n if (integer === undefined) {\n throw new Error('Invalid character (' + String.fromCharCode(c) + ')');\n }\n var hasContinuationBit = integer & 32;\n integer &= 31;\n value += integer << shift;\n if (hasContinuationBit) {\n shift += 5;\n }\n else {\n var shouldNegate = value & 1;\n value >>= 1;\n var num = shouldNegate ? -value : value;\n if (j == 0) {\n generatedCodeColumn += num;\n segment.push(generatedCodeColumn);\n }\n else if (j === 1) {\n sourceFileIndex += num;\n segment.push(sourceFileIndex);\n }\n else if (j === 2) {\n sourceCodeLine += num;\n segment.push(sourceCodeLine);\n }\n else if (j === 3) {\n sourceCodeColumn += num;\n segment.push(sourceCodeColumn);\n }\n else if (j === 4) {\n nameIndex += num;\n segment.push(nameIndex);\n }\n j++;\n value = shift = 0; // reset\n }\n }\n }\n if (segment.length)\n line.push(segment);\n decoded.push(line);\n return decoded;\n}\nfunction encode(decoded) {\n var sourceFileIndex = 0; // second field\n var sourceCodeLine = 0; // third field\n var sourceCodeColumn = 0; // fourth field\n var nameIndex = 0; // fifth field\n var mappings = '';\n for (var i = 0; i < decoded.length; i++) {\n var line = decoded[i];\n if (i > 0)\n mappings += ';';\n if (line.length === 0)\n continue;\n var generatedCodeColumn = 0; // first field\n var lineMappings = [];\n for (var _i = 0, line_1 = line; _i < line_1.length; _i++) {\n var segment = line_1[_i];\n var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);\n generatedCodeColumn = segment[0];\n if (segment.length > 1) {\n segmentMappings +=\n encodeInteger(segment[1] - sourceFileIndex) +\n encodeInteger(segment[2] - sourceCodeLine) +\n encodeInteger(segment[3] - sourceCodeColumn);\n sourceFileIndex = segment[1];\n sourceCodeLine = segment[2];\n sourceCodeColumn = segment[3];\n }\n if (segment.length === 5) {\n segmentMappings += encodeInteger(segment[4] - nameIndex);\n nameIndex = segment[4];\n }\n lineMappings.push(segmentMappings);\n }\n mappings += lineMappings.join(',');\n }\n return mappings;\n}\nfunction encodeInteger(num) {\n var result = '';\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n var clamped = num & 31;\n num >>= 5;\n if (num > 0) {\n clamped |= 32;\n }\n result += chars[clamped];\n } while (num > 0);\n return result;\n}\n\nexport { decode, encode };\n//# sourceMappingURL=sourcemap-codec.es.js.map\n","import { encode } from 'sourcemap-codec';\n\nvar Chunk = function Chunk(start, end, content) {\n\tthis.start = start;\n\tthis.end = end;\n\tthis.original = content;\n\n\tthis.intro = '';\n\tthis.outro = '';\n\n\tthis.content = content;\n\tthis.storeName = false;\n\tthis.edited = false;\n\n\t// we make these non-enumerable, for sanity while debugging\n\tObject.defineProperties(this, {\n\t\tprevious: { writable: true, value: null },\n\t\tnext: { writable: true, value: null }\n\t});\n};\n\nChunk.prototype.appendLeft = function appendLeft (content) {\n\tthis.outro += content;\n};\n\nChunk.prototype.appendRight = function appendRight (content) {\n\tthis.intro = this.intro + content;\n};\n\nChunk.prototype.clone = function clone () {\n\tvar chunk = new Chunk(this.start, this.end, this.original);\n\n\tchunk.intro = this.intro;\n\tchunk.outro = this.outro;\n\tchunk.content = this.content;\n\tchunk.storeName = this.storeName;\n\tchunk.edited = this.edited;\n\n\treturn chunk;\n};\n\nChunk.prototype.contains = function contains (index) {\n\treturn this.start < index && index < this.end;\n};\n\nChunk.prototype.eachNext = function eachNext (fn) {\n\tvar chunk = this;\n\twhile (chunk) {\n\t\tfn(chunk);\n\t\tchunk = chunk.next;\n\t}\n};\n\nChunk.prototype.eachPrevious = function eachPrevious (fn) {\n\tvar chunk = this;\n\twhile (chunk) {\n\t\tfn(chunk);\n\t\tchunk = chunk.previous;\n\t}\n};\n\nChunk.prototype.edit = function edit (content, storeName, contentOnly) {\n\tthis.content = content;\n\tif (!contentOnly) {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t}\n\tthis.storeName = storeName;\n\n\tthis.edited = true;\n\n\treturn this;\n};\n\nChunk.prototype.prependLeft = function prependLeft (content) {\n\tthis.outro = content + this.outro;\n};\n\nChunk.prototype.prependRight = function prependRight (content) {\n\tthis.intro = content + this.intro;\n};\n\nChunk.prototype.split = function split (index) {\n\tvar sliceIndex = index - this.start;\n\n\tvar originalBefore = this.original.slice(0, sliceIndex);\n\tvar originalAfter = this.original.slice(sliceIndex);\n\n\tthis.original = originalBefore;\n\n\tvar newChunk = new Chunk(index, this.end, originalAfter);\n\tnewChunk.outro = this.outro;\n\tthis.outro = '';\n\n\tthis.end = index;\n\n\tif (this.edited) {\n\t\t// TODO is this block necessary?...\n\t\tnewChunk.edit('', false);\n\t\tthis.content = '';\n\t} else {\n\t\tthis.content = originalBefore;\n\t}\n\n\tnewChunk.next = this.next;\n\tif (newChunk.next) { newChunk.next.previous = newChunk; }\n\tnewChunk.previous = this;\n\tthis.next = newChunk;\n\n\treturn newChunk;\n};\n\nChunk.prototype.toString = function toString () {\n\treturn this.intro + this.content + this.outro;\n};\n\nChunk.prototype.trimEnd = function trimEnd (rx) {\n\tthis.outro = this.outro.replace(rx, '');\n\tif (this.outro.length) { return true; }\n\n\tvar trimmed = this.content.replace(rx, '');\n\n\tif (trimmed.length) {\n\t\tif (trimmed !== this.content) {\n\t\t\tthis.split(this.start + trimmed.length).edit('', false);\n\t\t}\n\t\treturn true;\n\n\t} else {\n\t\tthis.edit('', false);\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) { return true; }\n\t}\n};\n\nChunk.prototype.trimStart = function trimStart (rx) {\n\tthis.intro = this.intro.replace(rx, '');\n\tif (this.intro.length) { return true; }\n\n\tvar trimmed = this.content.replace(rx, '');\n\n\tif (trimmed.length) {\n\t\tif (trimmed !== this.content) {\n\t\t\tthis.split(this.end - trimmed.length);\n\t\t\tthis.edit('', false);\n\t\t}\n\t\treturn true;\n\n\t} else {\n\t\tthis.edit('', false);\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) { return true; }\n\t}\n};\n\nvar btoa = function () {\n\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n};\nif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n\tbtoa = window.btoa;\n} else if (typeof Buffer === 'function') {\n\tbtoa = function (str) { return new Buffer(str).toString('base64'); };\n}\n\nvar SourceMap = function SourceMap(properties) {\n\tthis.version = 3;\n\tthis.file = properties.file;\n\tthis.sources = properties.sources;\n\tthis.sourcesContent = properties.sourcesContent;\n\tthis.names = properties.names;\n\tthis.mappings = encode(properties.mappings);\n};\n\nSourceMap.prototype.toString = function toString () {\n\treturn JSON.stringify(this);\n};\n\nSourceMap.prototype.toUrl = function toUrl () {\n\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n};\n\nfunction guessIndent(code) {\n\tvar lines = code.split('\\n');\n\n\tvar tabbed = lines.filter(function (line) { return /^\\t+/.test(line); });\n\tvar spaced = lines.filter(function (line) { return /^ {2,}/.test(line); });\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tvar min = spaced.reduce(function (previous, current) {\n\t\tvar numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n\tvar fromParts = from.split(/[/\\\\]/);\n\tvar toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tvar i = fromParts.length;\n\t\twhile (i--) { fromParts[i] = '..'; }\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n\tvar originalLines = source.split('\\n');\n\tvar lineOffsets = [];\n\n\tfor (var i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tvar i = 0;\n\t\tvar j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tvar m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tvar line = i - 1;\n\t\tvar column = index - lineOffsets[line];\n\t\treturn { line: line, column: column };\n\t};\n}\n\nvar Mappings = function Mappings(hires) {\n\tthis.hires = hires;\n\tthis.generatedCodeLine = 0;\n\tthis.generatedCodeColumn = 0;\n\tthis.raw = [];\n\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\tthis.pending = null;\n};\n\nMappings.prototype.addEdit = function addEdit (sourceIndex, content, loc, nameIndex) {\n\tif (content.length) {\n\t\tvar segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\tif (nameIndex >= 0) {\n\t\t\tsegment.push(nameIndex);\n\t\t}\n\t\tthis.rawSegments.push(segment);\n\t} else if (this.pending) {\n\t\tthis.rawSegments.push(this.pending);\n\t}\n\n\tthis.advance(content);\n\tthis.pending = null;\n};\n\nMappings.prototype.addUneditedChunk = function addUneditedChunk (sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tvar this$1 = this;\n\n\tvar originalCharIndex = chunk.start;\n\tvar first = true;\n\n\twhile (originalCharIndex < chunk.end) {\n\t\tif (this$1.hires || first || sourcemapLocations[originalCharIndex]) {\n\t\t\tthis$1.rawSegments.push([this$1.generatedCodeColumn, sourceIndex, loc.line, loc.column]);\n\t\t}\n\n\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\tloc.line += 1;\n\t\t\tloc.column = 0;\n\t\t\tthis$1.generatedCodeLine += 1;\n\t\t\tthis$1.raw[this$1.generatedCodeLine] = this$1.rawSegments = [];\n\t\t\tthis$1.generatedCodeColumn = 0;\n\t\t} else {\n\t\t\tloc.column += 1;\n\t\t\tthis$1.generatedCodeColumn += 1;\n\t\t}\n\n\t\toriginalCharIndex += 1;\n\t\tfirst = false;\n\t}\n\n\tthis.pending = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n};\n\nMappings.prototype.advance = function advance (str) {\n\t\tvar this$1 = this;\n\n\tif (!str) { return; }\n\n\tvar lines = str.split('\\n');\n\n\tif (lines.length > 1) {\n\t\tfor (var i = 0; i < lines.length - 1; i++) {\n\t\t\tthis$1.generatedCodeLine++;\n\t\t\tthis$1.raw[this$1.generatedCodeLine] = this$1.rawSegments = [];\n\t\t}\n\t\tthis.generatedCodeColumn = 0;\n\t}\n\n\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n};\n\nvar warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false\n};\n\nvar MagicString = function MagicString(string, options) {\n\tif ( options === void 0 ) options = {};\n\n\tvar chunk = new Chunk(0, string.length, string);\n\n\tObject.defineProperties(this, {\n\t\toriginal: { writable: true, value: string },\n\t\toutro: { writable: true, value: '' },\n\t\tintro: { writable: true, value: '' },\n\t\tfirstChunk: { writable: true, value: chunk },\n\t\tlastChunk: { writable: true, value: chunk },\n\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\tbyStart: { writable: true, value: {} },\n\t\tbyEnd: { writable: true, value: {} },\n\t\tfilename: { writable: true, value: options.filename },\n\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\tsourcemapLocations: { writable: true, value: {} },\n\t\tstoredNames: { writable: true, value: {} },\n\t\tindentStr: { writable: true, value: guessIndent(string) }\n\t});\n\n\tthis.byStart[0] = chunk;\n\tthis.byEnd[string.length] = chunk;\n};\n\nMagicString.prototype.addSourcemapLocation = function addSourcemapLocation (char) {\n\tthis.sourcemapLocations[char] = true;\n};\n\nMagicString.prototype.append = function append (content) {\n\tif (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }\n\n\tthis.outro += content;\n\treturn this;\n};\n\nMagicString.prototype.appendLeft = function appendLeft (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byEnd[index];\n\n\tif (chunk) {\n\t\tchunk.appendLeft(content);\n\t} else {\n\t\tthis.intro += content;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.appendRight = function appendRight (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byStart[index];\n\n\tif (chunk) {\n\t\tchunk.appendRight(content);\n\t} else {\n\t\tthis.outro += content;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.clone = function clone () {\n\tvar cloned = new MagicString(this.original, { filename: this.filename });\n\n\tvar originalChunk = this.firstChunk;\n\tvar clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\twhile (originalChunk) {\n\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\tvar nextOriginalChunk = originalChunk.next;\n\t\tvar nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\tif (nextClonedChunk) {\n\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\tclonedChunk = nextClonedChunk;\n\t\t}\n\n\t\toriginalChunk = nextOriginalChunk;\n\t}\n\n\tcloned.lastChunk = clonedChunk;\n\n\tif (this.indentExclusionRanges) {\n\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t}\n\n\tObject.keys(this.sourcemapLocations).forEach(function (loc) {\n\t\tcloned.sourcemapLocations[loc] = true;\n\t});\n\n\treturn cloned;\n};\n\nMagicString.prototype.generateDecodedMap = function generateDecodedMap (options) {\n\t\tvar this$1 = this;\n\n\toptions = options || {};\n\n\tvar sourceIndex = 0;\n\tvar names = Object.keys(this.storedNames);\n\tvar mappings = new Mappings(options.hires);\n\n\tvar locate = getLocator(this.original);\n\n\tif (this.intro) {\n\t\tmappings.advance(this.intro);\n\t}\n\n\tthis.firstChunk.eachNext(function (chunk) {\n\t\tvar loc = locate(chunk.start);\n\n\t\tif (chunk.intro.length) { mappings.advance(chunk.intro); }\n\n\t\tif (chunk.edited) {\n\t\t\tmappings.addEdit(\n\t\t\t\tsourceIndex,\n\t\t\t\tchunk.content,\n\t\t\t\tloc,\n\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1\n\t\t\t);\n\t\t} else {\n\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this$1.original, loc, this$1.sourcemapLocations);\n\t\t}\n\n\t\tif (chunk.outro.length) { mappings.advance(chunk.outro); }\n\t});\n\n\treturn {\n\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n\t\tsources: [options.source ? getRelativePath(options.file || '', options.source) : null],\n\t\tsourcesContent: options.includeContent ? [this.original] : [null],\n\t\tnames: names,\n\t\tmappings: mappings.raw\n\t};\n};\n\nMagicString.prototype.generateMap = function generateMap (options) {\n\treturn new SourceMap(this.generateDecodedMap(options));\n};\n\nMagicString.prototype.getIndentString = function getIndentString () {\n\treturn this.indentStr === null ? '\\t' : this.indentStr;\n};\n\nMagicString.prototype.indent = function indent (indentStr, options) {\n\t\tvar this$1 = this;\n\n\tvar pattern = /^[^\\r\\n]/gm;\n\n\tif (isObject(indentStr)) {\n\t\toptions = indentStr;\n\t\tindentStr = undefined;\n\t}\n\n\tindentStr = indentStr !== undefined ? indentStr : this.indentStr || '\\t';\n\n\tif (indentStr === '') { return this; } // noop\n\n\toptions = options || {};\n\n\t// Process exclusion ranges\n\tvar isExcluded = {};\n\n\tif (options.exclude) {\n\t\tvar exclusions =\n\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\texclusions.forEach(function (exclusion) {\n\t\t\tfor (var i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\tisExcluded[i] = true;\n\t\t\t}\n\t\t});\n\t}\n\n\tvar shouldIndentNextCharacter = options.indentStart !== false;\n\tvar replacer = function (match) {\n\t\tif (shouldIndentNextCharacter) { return (\"\" + indentStr + match); }\n\t\tshouldIndentNextCharacter = true;\n\t\treturn match;\n\t};\n\n\tthis.intro = this.intro.replace(pattern, replacer);\n\n\tvar charIndex = 0;\n\tvar chunk = this.firstChunk;\n\n\twhile (chunk) {\n\t\tvar end = chunk.end;\n\n\t\tif (chunk.edited) {\n\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tcharIndex = chunk.start;\n\n\t\t\twhile (charIndex < end) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tvar char = this$1.original[charIndex];\n\n\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis$1._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcharIndex += 1;\n\t\t\t}\n\t\t}\n\n\t\tcharIndex = chunk.end;\n\t\tchunk = chunk.next;\n\t}\n\n\tthis.outro = this.outro.replace(pattern, replacer);\n\n\treturn this;\n};\n\nMagicString.prototype.insert = function insert () {\n\tthrow new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)');\n};\n\nMagicString.prototype.insertLeft = function insertLeft (index, content) {\n\tif (!warned.insertLeft) {\n\t\tconsole.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'); // eslint-disable-line no-console\n\t\twarned.insertLeft = true;\n\t}\n\n\treturn this.appendLeft(index, content);\n};\n\nMagicString.prototype.insertRight = function insertRight (index, content) {\n\tif (!warned.insertRight) {\n\t\tconsole.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'); // eslint-disable-line no-console\n\t\twarned.insertRight = true;\n\t}\n\n\treturn this.prependRight(index, content);\n};\n\nMagicString.prototype.move = function move (start, end, index) {\n\tif (index >= start && index <= end) { throw new Error('Cannot move a selection inside itself'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\tthis._split(index);\n\n\tvar first = this.byStart[start];\n\tvar last = this.byEnd[end];\n\n\tvar oldLeft = first.previous;\n\tvar oldRight = last.next;\n\n\tvar newRight = this.byStart[index];\n\tif (!newRight && last === this.lastChunk) { return this; }\n\tvar newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\tif (oldLeft) { oldLeft.next = oldRight; }\n\tif (oldRight) { oldRight.previous = oldLeft; }\n\n\tif (newLeft) { newLeft.next = first; }\n\tif (newRight) { newRight.previous = last; }\n\n\tif (!first.previous) { this.firstChunk = last.next; }\n\tif (!last.next) {\n\t\tthis.lastChunk = first.previous;\n\t\tthis.lastChunk.next = null;\n\t}\n\n\tfirst.previous = newLeft;\n\tlast.next = newRight || null;\n\n\tif (!newLeft) { this.firstChunk = first; }\n\tif (!newRight) { this.lastChunk = last; }\n\treturn this;\n};\n\nMagicString.prototype.overwrite = function overwrite (start, end, content, options) {\n\t\tvar this$1 = this;\n\n\tif (typeof content !== 'string') { throw new TypeError('replacement content must be a string'); }\n\n\twhile (start < 0) { start += this$1.original.length; }\n\twhile (end < 0) { end += this$1.original.length; }\n\n\tif (end > this.original.length) { throw new Error('end is out of bounds'); }\n\tif (start === end)\n\t\t{ throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\n\tif (options === true) {\n\t\tif (!warned.storeName) {\n\t\t\tconsole.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'); // eslint-disable-line no-console\n\t\t\twarned.storeName = true;\n\t\t}\n\n\t\toptions = { storeName: true };\n\t}\n\tvar storeName = options !== undefined ? options.storeName : false;\n\tvar contentOnly = options !== undefined ? options.contentOnly : false;\n\n\tif (storeName) {\n\t\tvar original = this.original.slice(start, end);\n\t\tthis.storedNames[original] = true;\n\t}\n\n\tvar first = this.byStart[start];\n\tvar last = this.byEnd[end];\n\n\tif (first) {\n\t\tif (end > first.end && first.next !== this.byStart[first.end]) {\n\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t}\n\n\t\tfirst.edit(content, storeName, contentOnly);\n\n\t\tif (first !== last) {\n\t\t\tvar chunk = first.next;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tchunk.edit('', false);\n\t\t\t\tchunk = chunk.next;\n\t\t\t}\n\n\t\t\tchunk.edit('', false);\n\t\t}\n\t} else {\n\t\t// must be inserting at the end\n\t\tvar newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\tlast.next = newChunk;\n\t\tnewChunk.previous = last;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.prepend = function prepend (content) {\n\tif (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }\n\n\tthis.intro = content + this.intro;\n\treturn this;\n};\n\nMagicString.prototype.prependLeft = function prependLeft (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byEnd[index];\n\n\tif (chunk) {\n\t\tchunk.prependLeft(content);\n\t} else {\n\t\tthis.intro = content + this.intro;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.prependRight = function prependRight (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byStart[index];\n\n\tif (chunk) {\n\t\tchunk.prependRight(content);\n\t} else {\n\t\tthis.outro = content + this.outro;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.remove = function remove (start, end) {\n\t\tvar this$1 = this;\n\n\twhile (start < 0) { start += this$1.original.length; }\n\twhile (end < 0) { end += this$1.original.length; }\n\n\tif (start === end) { return this; }\n\n\tif (start < 0 || end > this.original.length) { throw new Error('Character is out of bounds'); }\n\tif (start > end) { throw new Error('end must be greater than start'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\n\tvar chunk = this.byStart[start];\n\n\twhile (chunk) {\n\t\tchunk.intro = '';\n\t\tchunk.outro = '';\n\t\tchunk.edit('');\n\n\t\tchunk = end > chunk.end ? this$1.byStart[chunk.end] : null;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.lastChar = function lastChar () {\n\tvar chunk = this.lastChunk;\n\tdo {\n\t\tif (chunk.outro.length)\n\t\t\t{ return chunk.outro[chunk.outro.length - 1]; }\n\t\tif (chunk.content.length)\n\t\t\t{ return chunk.content[chunk.content.length - 1]; }\n\t\tif (chunk.intro.length)\n\t\t\t{ return chunk.intro[chunk.intro.length - 1]; }\n\t} while (chunk = chunk.previous);\n\treturn '';\n};\n\nMagicString.prototype.slice = function slice (start, end) {\n\t\tvar this$1 = this;\n\t\tif ( start === void 0 ) start = 0;\n\t\tif ( end === void 0 ) end = this.original.length;\n\n\twhile (start < 0) { start += this$1.original.length; }\n\twhile (end < 0) { end += this$1.original.length; }\n\n\tvar result = '';\n\n\t// find start chunk\n\tvar chunk = this.firstChunk;\n\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t// found end chunk before start\n\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\treturn result;\n\t\t}\n\n\t\tchunk = chunk.next;\n\t}\n\n\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t{ throw new Error((\"Cannot use replaced character \" + start + \" as slice start anchor.\")); }\n\n\tvar startChunk = chunk;\n\twhile (chunk) {\n\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\tresult += chunk.intro;\n\t\t}\n\n\t\tvar containsEnd = chunk.start < end && chunk.end >= end;\n\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t{ throw new Error((\"Cannot use replaced character \" + end + \" as slice end anchor.\")); }\n\n\t\tvar sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\tvar sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\tresult += chunk.outro;\n\t\t}\n\n\t\tif (containsEnd) {\n\t\t\tbreak;\n\t\t}\n\n\t\tchunk = chunk.next;\n\t}\n\n\treturn result;\n};\n\n// TODO deprecate this? not really very useful\nMagicString.prototype.snip = function snip (start, end) {\n\tvar clone = this.clone();\n\tclone.remove(0, start);\n\tclone.remove(end, clone.original.length);\n\n\treturn clone;\n};\n\nMagicString.prototype._split = function _split (index) {\n\t\tvar this$1 = this;\n\n\tif (this.byStart[index] || this.byEnd[index]) { return; }\n\n\tvar chunk = this.lastSearchedChunk;\n\tvar searchForward = index > chunk.end;\n\n\twhile (chunk) {\n\t\tif (chunk.contains(index)) { return this$1._splitChunk(chunk, index); }\n\n\t\tchunk = searchForward ? this$1.byStart[chunk.end] : this$1.byEnd[chunk.start];\n\t}\n};\n\nMagicString.prototype._splitChunk = function _splitChunk (chunk, index) {\n\tif (chunk.edited && chunk.content.length) {\n\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\tvar loc = getLocator(this.original)(index);\n\t\tthrow new Error(\n\t\t\t(\"Cannot split a chunk that has already been edited (\" + (loc.line) + \":\" + (loc.column) + \"\\\"\" + (chunk.original) + \"\\\")\")\n\t\t);\n\t}\n\n\tvar newChunk = chunk.split(index);\n\n\tthis.byEnd[index] = chunk;\n\tthis.byStart[index] = newChunk;\n\tthis.byEnd[newChunk.end] = newChunk;\n\n\tif (chunk === this.lastChunk) { this.lastChunk = newChunk; }\n\n\tthis.lastSearchedChunk = chunk;\n\treturn true;\n};\n\nMagicString.prototype.toString = function toString () {\n\tvar str = this.intro;\n\n\tvar chunk = this.firstChunk;\n\twhile (chunk) {\n\t\tstr += chunk.toString();\n\t\tchunk = chunk.next;\n\t}\n\n\treturn str + this.outro;\n};\n\nMagicString.prototype.isEmpty = function isEmpty () {\n\tvar chunk = this.firstChunk;\n\tdo {\n\t\tif (chunk.intro.length && chunk.intro.trim() ||\n\t\t\t\tchunk.content.length && chunk.content.trim() ||\n\t\t\t\tchunk.outro.length && chunk.outro.trim())\n\t\t\t{ return false; }\n\t} while (chunk = chunk.next);\n\treturn true;\n};\n\nMagicString.prototype.trimLines = function trimLines () {\n\treturn this.trim('[\\\\r\\\\n]');\n};\n\nMagicString.prototype.trim = function trim (charType) {\n\treturn this.trimStart(charType).trimEnd(charType);\n};\n\nMagicString.prototype.trimEndAborted = function trimEndAborted (charType) {\n\t\tvar this$1 = this;\n\n\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\n\tthis.outro = this.outro.replace(rx, '');\n\tif (this.outro.length) { return true; }\n\n\tvar chunk = this.lastChunk;\n\n\tdo {\n\t\tvar end = chunk.end;\n\t\tvar aborted = chunk.trimEnd(rx);\n\n\t\t// if chunk was trimmed, we have a new lastChunk\n\t\tif (chunk.end !== end) {\n\t\t\tif (this$1.lastChunk === chunk) {\n\t\t\t\tthis$1.lastChunk = chunk.next;\n\t\t\t}\n\n\t\t\tthis$1.byEnd[chunk.end] = chunk;\n\t\t\tthis$1.byStart[chunk.next.start] = chunk.next;\n\t\t\tthis$1.byEnd[chunk.next.end] = chunk.next;\n\t\t}\n\n\t\tif (aborted) { return true; }\n\t\tchunk = chunk.previous;\n\t} while (chunk);\n\n\treturn false;\n};\n\nMagicString.prototype.trimEnd = function trimEnd (charType) {\n\tthis.trimEndAborted(charType);\n\treturn this;\n};\nMagicString.prototype.trimStartAborted = function trimStartAborted (charType) {\n\t\tvar this$1 = this;\n\n\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\tthis.intro = this.intro.replace(rx, '');\n\tif (this.intro.length) { return true; }\n\n\tvar chunk = this.firstChunk;\n\n\tdo {\n\t\tvar end = chunk.end;\n\t\tvar aborted = chunk.trimStart(rx);\n\n\t\tif (chunk.end !== end) {\n\t\t\t// special case...\n\t\t\tif (chunk === this$1.lastChunk) { this$1.lastChunk = chunk.next; }\n\n\t\t\tthis$1.byEnd[chunk.end] = chunk;\n\t\t\tthis$1.byStart[chunk.next.start] = chunk.next;\n\t\t\tthis$1.byEnd[chunk.next.end] = chunk.next;\n\t\t}\n\n\t\tif (aborted) { return true; }\n\t\tchunk = chunk.next;\n\t} while (chunk);\n\n\treturn false;\n};\n\nMagicString.prototype.trimStart = function trimStart (charType) {\n\tthis.trimStartAborted(charType);\n\treturn this;\n};\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nvar Bundle = function Bundle(options) {\n\tif ( options === void 0 ) options = {};\n\n\tthis.intro = options.intro || '';\n\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\tthis.sources = [];\n\tthis.uniqueSources = [];\n\tthis.uniqueSourceIndexByFilename = {};\n};\n\nBundle.prototype.addSource = function addSource (source) {\n\tif (source instanceof MagicString) {\n\t\treturn this.addSource({\n\t\t\tcontent: source,\n\t\t\tfilename: source.filename,\n\t\t\tseparator: this.separator\n\t\t});\n\t}\n\n\tif (!isObject(source) || !source.content) {\n\t\tthrow new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`');\n\t}\n\n\t['filename', 'indentExclusionRanges', 'separator'].forEach(function (option) {\n\t\tif (!hasOwnProp.call(source, option)) { source[option] = source.content[option]; }\n\t});\n\n\tif (source.separator === undefined) {\n\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\tsource.separator = this.separator;\n\t}\n\n\tif (source.filename) {\n\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t} else {\n\t\t\tvar uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\tthrow new Error((\"Illegal source: same filename (\" + (source.filename) + \"), different contents\"));\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.sources.push(source);\n\treturn this;\n};\n\nBundle.prototype.append = function append (str, options) {\n\tthis.addSource({\n\t\tcontent: new MagicString(str),\n\t\tseparator: (options && options.separator) || ''\n\t});\n\n\treturn this;\n};\n\nBundle.prototype.clone = function clone () {\n\tvar bundle = new Bundle({\n\t\tintro: this.intro,\n\t\tseparator: this.separator\n\t});\n\n\tthis.sources.forEach(function (source) {\n\t\tbundle.addSource({\n\t\t\tfilename: source.filename,\n\t\t\tcontent: source.content.clone(),\n\t\t\tseparator: source.separator\n\t\t});\n\t});\n\n\treturn bundle;\n};\n\nBundle.prototype.generateDecodedMap = function generateDecodedMap (options) {\n\t\tvar this$1 = this;\n\t\tif ( options === void 0 ) options = {};\n\n\tvar names = [];\n\tthis.sources.forEach(function (source) {\n\t\tObject.keys(source.content.storedNames).forEach(function (name) {\n\t\t\tif (!~names.indexOf(name)) { names.push(name); }\n\t\t});\n\t});\n\n\tvar mappings = new Mappings(options.hires);\n\n\tif (this.intro) {\n\t\tmappings.advance(this.intro);\n\t}\n\n\tthis.sources.forEach(function (source, i) {\n\t\tif (i > 0) {\n\t\t\tmappings.advance(this$1.separator);\n\t\t}\n\n\t\tvar sourceIndex = source.filename ? this$1.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\tvar magicString = source.content;\n\t\tvar locate = getLocator(magicString.original);\n\n\t\tif (magicString.intro) {\n\t\t\tmappings.advance(magicString.intro);\n\t\t}\n\n\t\tmagicString.firstChunk.eachNext(function (chunk) {\n\t\t\tvar loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) { mappings.advance(chunk.intro); }\n\n\t\t\tif (source.filename) {\n\t\t\t\tif (chunk.edited) {\n\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tchunk,\n\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmagicString.sourcemapLocations\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmappings.advance(chunk.content);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) { mappings.advance(chunk.outro); }\n\t\t});\n\n\t\tif (magicString.outro) {\n\t\t\tmappings.advance(magicString.outro);\n\t\t}\n\t});\n\n\treturn {\n\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n\t\tsources: this.uniqueSources.map(function (source) {\n\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t}),\n\t\tsourcesContent: this.uniqueSources.map(function (source) {\n\t\t\treturn options.includeContent ? source.content : null;\n\t\t}),\n\t\tnames: names,\n\t\tmappings: mappings.raw\n\t};\n};\n\nBundle.prototype.generateMap = function generateMap (options) {\n\treturn new SourceMap(this.generateDecodedMap(options));\n};\n\nBundle.prototype.getIndentString = function getIndentString () {\n\tvar indentStringCounts = {};\n\n\tthis.sources.forEach(function (source) {\n\t\tvar indentStr = source.content.indentStr;\n\n\t\tif (indentStr === null) { return; }\n\n\t\tif (!indentStringCounts[indentStr]) { indentStringCounts[indentStr] = 0; }\n\t\tindentStringCounts[indentStr] += 1;\n\t});\n\n\treturn (\n\t\tObject.keys(indentStringCounts).sort(function (a, b) {\n\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t})[0] || '\\t'\n\t);\n};\n\nBundle.prototype.indent = function indent (indentStr) {\n\t\tvar this$1 = this;\n\n\tif (!arguments.length) {\n\t\tindentStr = this.getIndentString();\n\t}\n\n\tif (indentStr === '') { return this; } // noop\n\n\tvar trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\tthis.sources.forEach(function (source, i) {\n\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\tvar indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\tsource.content.indent(indentStr, {\n\t\t\texclude: source.indentExclusionRanges,\n\t\t\tindentStart: indentStart //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t});\n\n\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t});\n\n\tif (this.intro) {\n\t\tthis.intro =\n\t\t\tindentStr +\n\t\t\tthis.intro.replace(/^[^\\n]/gm, function (match, index) {\n\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t});\n\t}\n\n\treturn this;\n};\n\nBundle.prototype.prepend = function prepend (str) {\n\tthis.intro = str + this.intro;\n\treturn this;\n};\n\nBundle.prototype.toString = function toString () {\n\t\tvar this$1 = this;\n\n\tvar body = this.sources\n\t\t.map(function (source, i) {\n\t\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\t\tvar str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\treturn str;\n\t\t})\n\t\t.join('');\n\n\treturn this.intro + body;\n};\n\nBundle.prototype.isEmpty = function isEmpty () {\n\tif (this.intro.length && this.intro.trim())\n\t\t{ return false; }\n\tif (this.sources.some(function (source) { return !source.content.isEmpty(); }))\n\t\t{ return false; }\n\treturn true;\n};\n\nBundle.prototype.trimLines = function trimLines () {\n\treturn this.trim('[\\\\r\\\\n]');\n};\n\nBundle.prototype.trim = function trim (charType) {\n\treturn this.trimStart(charType).trimEnd(charType);\n};\n\nBundle.prototype.trimStart = function trimStart (charType) {\n\t\tvar this$1 = this;\n\n\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\tthis.intro = this.intro.replace(rx, '');\n\n\tif (!this.intro) {\n\t\tvar source;\n\t\tvar i = 0;\n\n\t\tdo {\n\t\t\tsource = this$1.sources[i++];\n\t\t\tif (!source) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimStartAborted(charType));\n\t}\n\n\treturn this;\n};\n\nBundle.prototype.trimEnd = function trimEnd (charType) {\n\t\tvar this$1 = this;\n\n\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\n\tvar source;\n\tvar i = this.sources.length - 1;\n\n\tdo {\n\t\tsource = this$1.sources[i--];\n\t\tif (!source) {\n\t\t\tthis$1.intro = this$1.intro.replace(rx, '');\n\t\t\tbreak;\n\t\t}\n\t} while (!source.content.trimEndAborted(charType));\n\n\treturn this;\n};\n\nexport default MagicString;\nexport { Bundle, SourceMap };\n//# sourceMappingURL=magic-string.es.js.map\n","import MagicString from 'magic-string';\nimport getName from '../utils/getName';\nimport { Node } from '../interfaces';\n\nconst keys = {\n\tObjectExpression: 'properties',\n\tProgram: 'body',\n};\n\nconst offsets = {\n\tObjectExpression: [1, -1],\n\tProgram: [0, 0],\n};\n\nexport function removeNode(code: MagicString, parent: Node, node: Node) {\n\tconst key = keys[parent.type];\n\tconst offset = offsets[parent.type];\n\tif (!key || !offset) throw new Error(`not implemented: ${parent.type}`);\n\n\tconst list = parent[key];\n\tconst i = list.indexOf(node);\n\tif (i === -1) throw new Error('node not in list');\n\n\tlet a;\n\tlet b;\n\n\tif (list.length === 1) {\n\t\t// remove everything, leave {}\n\t\ta = parent.start + offset[0];\n\t\tb = parent.end + offset[1];\n\t} else if (i === 0) {\n\t\t// remove everything before second node, including comments\n\t\ta = parent.start + offset[0];\n\t\twhile (/\\s/.test(code.original[a])) a += 1;\n\n\t\tb = list[i].end;\n\t\twhile (/[\\s,]/.test(code.original[b])) b += 1;\n\t} else {\n\t\t// remove the end of the previous node to the end of this one\n\t\ta = list[i - 1].end;\n\t\tb = node.end;\n\t}\n\n\tcode.remove(a, b);\n\tlist.splice(i, 1);\n\treturn;\n}\n\nexport function removeObjectKey(code: MagicString, node: Node, key: string) {\n\tif (node.type !== 'ObjectExpression') return;\n\n\tlet i = node.properties.length;\n\twhile (i--) {\n\t\tconst property = node.properties[i];\n\t\tif (property.key.type === 'Identifier' && getName(property.key) === key) {\n\t\t\tremoveNode(code, node, property);\n\t\t}\n\t}\n}\n","import deindent from '../utils/deindent';\nimport list from '../utils/list';\nimport { CompileOptions, ModuleFormat, Node, ShorthandImport } from '../interfaces';\n\ninterface Dependency {\n\tname: string;\n\tstatements: string[];\n\tsource: string;\n}\n\nconst wrappers = { es, amd, cjs, iife, umd, eval: expr };\n\nexport default function wrapModule(\n\tcode: string,\n\tformat: ModuleFormat,\n\tname: string,\n\toptions: CompileOptions,\n\tbanner: string,\n\tsharedPath: string,\n\thelpers: { name: string, alias: string }[],\n\timports: Node[],\n\tshorthandImports: ShorthandImport[],\n\tsource: string\n): string {\n\tif (format === 'es') return es(code, name, options, banner, sharedPath, helpers, imports, shorthandImports, source);\n\n\tconst dependencies = imports.map((declaration, i) => {\n\t\tconst defaultImport = declaration.specifiers.find(\n\t\t\t(x: Node) =>\n\t\t\t\tx.type === 'ImportDefaultSpecifier' ||\n\t\t\t\t(x.type === 'ImportSpecifier' && x.imported.name === 'default')\n\t\t);\n\n\t\tconst namespaceImport = declaration.specifiers.find(\n\t\t\t(x: Node) => x.type === 'ImportNamespaceSpecifier'\n\t\t);\n\n\t\tconst namedImports = declaration.specifiers.filter(\n\t\t\t(x: Node) =>\n\t\t\t\tx.type === 'ImportSpecifier' && x.imported.name !== 'default'\n\t\t);\n\n\t\tconst name = defaultImport || namespaceImport\n\t\t\t? (defaultImport || namespaceImport).local.name\n\t\t\t: `__import${i}`;\n\n\t\tconst statements: string[] = [];\n\n\t\tnamedImports.forEach((specifier: Node) => {\n\t\t\tstatements.push(\n\t\t\t\t`var ${specifier.local.name} = ${name}.${specifier.imported.name};`\n\t\t\t);\n\t\t});\n\n\t\tif (defaultImport) {\n\t\t\tstatements.push(\n\t\t\t\t`${name} = (${name} && ${name}.__esModule) ? ${name}[\"default\"] : ${name};`\n\t\t\t);\n\t\t}\n\n\t\treturn { name, statements, source: declaration.source.value };\n\t})\n\t.concat(\n\t\tshorthandImports.map(({ name, source }) => ({\n\t\t\tname,\n\t\t\tstatements: [\n\t\t\t\t`${name} = (${name} && ${name}.__esModule) ? ${name}[\"default\"] : ${name};`,\n\t\t\t],\n\t\t\tsource,\n\t\t}))\n\t);\n\n\tif (format === 'amd') return amd(code, name, options, banner, dependencies);\n\tif (format === 'cjs') return cjs(code, name, options, banner, sharedPath, helpers, dependencies);\n\tif (format === 'iife') return iife(code, name, options, banner, dependencies);\n\tif (format === 'umd') return umd(code, name, options, banner, dependencies);\n\tif (format === 'eval') return expr(code, name, options, banner, dependencies);\n\n\tthrow new Error(`options.format is invalid (must be ${list(Object.keys(wrappers))})`);\n}\n\nfunction es(\n\tcode: string,\n\tname: string,\n\toptions: CompileOptions,\n\tbanner: string,\n\tsharedPath: string,\n\thelpers: { name: string, alias: string }[],\n\timports: Node[],\n\tshorthandImports: ShorthandImport[],\n\tsource: string\n) {\n\tconst importHelpers = helpers.length > 0 && (\n\t\t`import { ${helpers.map(h => h.name === h.alias ? h.name : `${h.name} as ${h.alias}`).join(', ')} } from ${JSON.stringify(sharedPath)};`\n\t);\n\n\tconst importBlock = imports.length > 0 && (\n\t\timports\n\t\t\t.map((declaration: Node) => source.slice(declaration.start, declaration.end))\n\t\t\t.join('\\n')\n\t);\n\n\tconst shorthandImportBlock = shorthandImports.length > 0 && (\n\t\tshorthandImports.map(({ name, source }) => `import ${name} from ${JSON.stringify(source)};`).join('\\n')\n\t);\n\n\treturn deindent`\n\t\t${banner}\n\t\t${importHelpers}\n\t\t${importBlock}\n\t\t${shorthandImportBlock}\n\n\t\t${code}\n\t\texport default ${name};`;\n}\n\nfunction amd(\n\tcode: string,\n\tname: string,\n\toptions: CompileOptions,\n\tbanner: string,\n\tdependencies: Dependency[]\n) {\n\tconst sourceString = dependencies.length\n\t\t? `[${dependencies.map(d => `\"${removeExtension(d.source)}\"`).join(', ')}], `\n\t\t: '';\n\n\tconst id = options.amd && options.amd.id;\n\n\treturn deindent`\n\t\tdefine(${id ? `\"${id}\", ` : ''}${sourceString}function(${paramString(dependencies)}) { \"use strict\";\n\t\t\t${getCompatibilityStatements(dependencies)}\n\n\t\t\t${code}\n\t\t\treturn ${name};\n\t\t});`;\n}\n\nfunction cjs(\n\tcode: string,\n\tname: string,\n\toptions: CompileOptions,\n\tbanner: string,\n\tsharedPath: string,\n\thelpers: { name: string, alias: string }[],\n\tdependencies: Dependency[]\n) {\n\tconst helperDeclarations = helpers.map(h => `${h.alias === h.name ? h.name : `${h.name}: ${h.alias}`}`).join(', ');\n\n\tconst helperBlock = helpers.length > 0 && (\n\t\t`var { ${helperDeclarations} } = require(${JSON.stringify(sharedPath)});\\n`\n\t);\n\n\tconst requireBlock = dependencies.length > 0 && (\n\t\tdependencies\n\t\t\t.map(d => `var ${d.name} = require(\"${d.source}\");`)\n\t\t\t.join('\\n\\n')\n\t);\n\n\treturn deindent`\n\t\t${banner}\n\t\t\"use strict\";\n\n\t\t${helperBlock}\n\t\t${requireBlock}\n\t\t${getCompatibilityStatements(dependencies)}\n\n\t\t${code}\n\n\t\tmodule.exports = ${name};`\n}\n\nfunction iife(\n\tcode: string,\n\tname: string,\n\toptions: CompileOptions,\n\tbanner: string,\n\tdependencies: Dependency[]\n) {\n\tif (!options.name) {\n\t\tthrow new Error(`Missing required 'name' option for IIFE export`);\n\t}\n\n\tconst globals = getGlobals(dependencies, options);\n\n\treturn deindent`\n\t\t${banner}\n\t\tvar ${options.name} = (function(${paramString(dependencies)}) { \"use strict\";\n\t\t\t${getCompatibilityStatements(dependencies)}\n\n\t\t\t${code}\n\t\t\treturn ${name};\n\t\t}(${globals.join(', ')}));`;\n}\n\nfunction umd(\n\tcode: string,\n\tname: string,\n\toptions: CompileOptions,\n\tbanner: string,\n\tdependencies: Dependency[]\n) {\n\tif (!options.name) {\n\t\tthrow new Error(`Missing required 'name' option for UMD export`);\n\t}\n\n\tconst amdId = options.amd && options.amd.id ? `'${options.amd.id}', ` : '';\n\n\tconst amdDeps = dependencies.length\n\t\t? `[${dependencies.map(d => `\"${removeExtension(d.source)}\"`).join(', ')}], `\n\t\t: '';\n\n\tconst cjsDeps = dependencies\n\t\t.map(d => `require(\"${d.source}\")`)\n\t\t.join(', ');\n\n\tconst globals = getGlobals(dependencies, options);\n\n\treturn deindent`\n\t\t${banner}\n\t\t(function(global, factory) {\n\t\t\ttypeof exports === \"object\" && typeof module !== \"undefined\" ? module.exports = factory(${cjsDeps}) :\n\t\t\ttypeof define === \"function\" && define.amd ? define(${amdId}${amdDeps}factory) :\n\t\t\t(global.${options.name} = factory(${globals.join(', ')}));\n\t\t}(this, (function (${paramString(dependencies)}) { \"use strict\";\n\n\t\t\t${getCompatibilityStatements(dependencies)}\n\n\t\t\t${code}\n\n\t\t\treturn ${name};\n\n\t\t})));`;\n}\n\nfunction expr(\n\tcode: string,\n\tname: string,\n\toptions: CompileOptions,\n\tbanner: string,\n\tdependencies: Dependency[]\n) {\n\tconst globals = getGlobals(dependencies, options);\n\n\treturn deindent`\n\t\t(function (${paramString(dependencies)}) { \"use strict\";\n\t\t\t${banner}\n\n\t\t\t${getCompatibilityStatements(dependencies)}\n\n\t\t\t${code}\n\n\t\t\treturn ${name};\n\t\t}(${globals.join(', ')}))`;\n}\n\nfunction paramString(dependencies: Dependency[]) {\n\treturn dependencies.map(dep => dep.name).join(', ');\n}\n\nfunction removeExtension(file: string) {\n\tconst index = file.lastIndexOf('.');\n\treturn ~index ? file.slice(0, index) : file;\n}\n\nfunction getCompatibilityStatements(dependencies: Dependency[]) {\n\tif (!dependencies.length) return null;\n\n\tconst statements: string[] = [];\n\n\tdependencies.forEach(dependency => {\n\t\tstatements.push(...dependency.statements);\n\t});\n\n\treturn statements.join('\\n');\n}\n\nfunction getGlobals(dependencies: Dependency[], options: CompileOptions) {\n\tconst { globals, onerror, onwarn } = options;\n\tconst globalFn = getGlobalFn(globals);\n\n\treturn dependencies.map(d => {\n\t\tlet name = globalFn(d.source);\n\n\t\tif (!name) {\n\t\t\tif (d.name.startsWith('__import')) {\n\t\t\t\tconst error = new Error(\n\t\t\t\t\t`Could not determine name for imported module '${d.source}' – use options.globals`\n\t\t\t\t);\n\t\t\t\tonerror(error);\n\t\t\t} else {\n\t\t\t\tconst warning = {\n\t\t\t\t\tcode: `options-missing-globals`,\n\t\t\t\t\tmessage: `No name was supplied for imported module '${d.source}'. Guessing '${d.name}', but you should use options.globals`,\n\t\t\t\t};\n\n\t\t\t\tonwarn(warning);\n\t\t\t}\n\n\t\t\tname = d.name;\n\t\t}\n\n\t\treturn name;\n\t});\n}\n\nfunction getGlobalFn(globals: any): (id: string) => string {\n\tif (typeof globals === 'function') return globals;\n\tif (typeof globals === 'object') {\n\t\treturn id => globals[id];\n\t}\n\n\treturn () => undefined;\n}\n","import { walk } from 'estree-walker';\nimport isReference from 'is-reference';\nimport { Node } from '../interfaces';\n\nexport function createScopes(expression: Node) {\n\tconst map = new WeakMap();\n\n\tconst globals = new Set();\n\tlet scope = new Scope(null, false);\n\n\twalk(expression, {\n\t\tenter(node: Node, parent: Node) {\n\t\t\tif (/Function/.test(node.type)) {\n\t\t\t\tif (node.type === 'FunctionDeclaration') {\n\t\t\t\t\tscope.declarations.add(node.id.name);\n\t\t\t\t} else {\n\t\t\t\t\tscope = new Scope(scope, false);\n\t\t\t\t\tmap.set(node, scope);\n\t\t\t\t\tif (node.id) scope.declarations.add(node.id.name);\n\t\t\t\t}\n\n\t\t\t\tnode.params.forEach((param: Node) => {\n\t\t\t\t\textractNames(param).forEach(name => {\n\t\t\t\t\t\tscope.declarations.add(name);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (/For(?:In|Of)Statement/.test(node.type)) {\n\t\t\t\tscope = new Scope(scope, true);\n\t\t\t\tmap.set(node, scope);\n\t\t\t} else if (node.type === 'BlockStatement') {\n\t\t\t\tscope = new Scope(scope, true);\n\t\t\t\tmap.set(node, scope);\n\t\t\t} else if (/(Function|Class|Variable)Declaration/.test(node.type)) {\n\t\t\t\tscope.addDeclaration(node);\n\t\t\t} else if (isReference(node, parent)) {\n\t\t\t\tif (!scope.has(node.name)) {\n\t\t\t\t\tglobals.add(node.name);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tleave(node: Node) {\n\t\t\tif (map.has(node)) {\n\t\t\t\tscope = scope.parent;\n\t\t\t}\n\t\t},\n\t});\n\n\treturn { map, scope, globals };\n}\n\n// TODO remove this in favour of weakmap version\nexport default function annotateWithScopes(expression: Node) {\n\tconst globals = new Set();\n\tlet scope = new Scope(null, false);\n\n\twalk(expression, {\n\t\tenter(node: Node, parent: Node) {\n\t\t\tif (/Function/.test(node.type)) {\n\t\t\t\tif (node.type === 'FunctionDeclaration') {\n\t\t\t\t\tscope.declarations.add(node.id.name);\n\t\t\t\t} else {\n\t\t\t\t\tnode._scope = scope = new Scope(scope, false);\n\t\t\t\t\tif (node.id) scope.declarations.add(node.id.name);\n\t\t\t\t}\n\n\t\t\t\tnode.params.forEach((param: Node) => {\n\t\t\t\t\textractNames(param).forEach(name => {\n\t\t\t\t\t\tscope.declarations.add(name);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (/For(?:In|Of)Statement/.test(node.type)) {\n\t\t\t\tnode._scope = scope = new Scope(scope, true);\n\t\t\t} else if (node.type === 'BlockStatement') {\n\t\t\t\tnode._scope = scope = new Scope(scope, true);\n\t\t\t} else if (/(Function|Class|Variable)Declaration/.test(node.type)) {\n\t\t\t\tscope.addDeclaration(node);\n\t\t\t} else if (isReference(node, parent)) {\n\t\t\t\tif (!scope.has(node.name)) {\n\t\t\t\t\tglobals.add(node.name);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tleave(node: Node) {\n\t\t\tif (node._scope) {\n\t\t\t\tscope = scope.parent;\n\t\t\t}\n\t\t},\n\t});\n\n\treturn { scope, globals };\n}\n\nexport class Scope {\n\tparent: Scope;\n\tblock: boolean;\n\tdeclarations: Set<string>;\n\n\tconstructor(parent: Scope, block: boolean) {\n\t\tthis.parent = parent;\n\t\tthis.block = block;\n\t\tthis.declarations = new Set();\n\t}\n\n\taddDeclaration(node: Node) {\n\t\tif (node.kind === 'var' && !this.block && this.parent) {\n\t\t\tthis.parent.addDeclaration(node);\n\t\t} else if (node.type === 'VariableDeclaration') {\n\t\t\tnode.declarations.forEach((declarator: Node) => {\n\t\t\t\textractNames(declarator.id).forEach(name => {\n\t\t\t\t\tthis.declarations.add(name);\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tthis.declarations.add(node.id.name);\n\t\t}\n\t}\n\n\thas(name: string): boolean {\n\t\treturn (\n\t\t\tthis.declarations.has(name) || (this.parent && this.parent.has(name))\n\t\t);\n\t}\n}\n\nfunction extractNames(param: Node) {\n\tconst names: string[] = [];\n\textractors[param.type](names, param);\n\treturn names;\n}\n\nconst extractors = {\n\tIdentifier(names: string[], param: Node) {\n\t\tnames.push(param.name);\n\t},\n\n\tObjectPattern(names: string[], param: Node) {\n\t\tparam.properties.forEach((prop: Node) => {\n\t\t\textractors[prop.value.type](names, prop.value);\n\t\t});\n\t},\n\n\tArrayPattern(names: string[], param: Node) {\n\t\tparam.elements.forEach((element: Node) => {\n\t\t\tif (element) extractors[element.type](names, element);\n\t\t});\n\t},\n\n\tRestElement(names: string[], param: Node) {\n\t\textractors[param.argument.type](names, param.argument);\n\t},\n\n\tAssignmentPattern(names: string[], param: Node) {\n\t\textractors[param.left.type](names, param.left);\n\t},\n};\n","export const test = typeof process !== 'undefined' && process.env.TEST;","import Compiler from './../../Compiler';\nimport Block from '../../dom/Block';\nimport { trimStart, trimEnd } from '../../../utils/trim';\n\nexport default class Node {\n\treadonly start: number;\n\treadonly end: number;\n\treadonly compiler: Compiler;\n\treadonly parent: Node;\n\treadonly type: string;\n\n\tprev?: Node;\n\tnext?: Node;\n\n\tcanUseInnerHTML: boolean;\n\tvar: string;\n\n\tconstructor(compiler: Compiler, parent, scope, info: any) {\n\t\tthis.start = info.start;\n\t\tthis.end = info.end;\n\t\tthis.type = info.type;\n\n\t\t// this makes properties non-enumerable, which makes logging\n\t\t// bearable. might have a performance cost. TODO remove in prod?\n\t\tObject.defineProperties(this, {\n\t\t\tcompiler: {\n\t\t\t\tvalue: compiler\n\t\t\t},\n\t\t\tparent: {\n\t\t\t\tvalue: parent\n\t\t\t}\n\t\t});\n\t}\n\n\tcannotUseInnerHTML() {\n\t\tif (this.canUseInnerHTML !== false) {\n\t\t\tthis.canUseInnerHTML = false;\n\t\t\tif (this.parent) this.parent.cannotUseInnerHTML();\n\t\t}\n\t}\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\t// implemented by subclasses\n\t}\n\n\tinitChildren(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\t// glue text nodes together\n\t\tconst cleaned: Node[] = [];\n\t\tlet lastChild: Node;\n\n\t\tlet windowComponent;\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tif (child.type === 'Comment') return;\n\n\t\t\t// special case — this is an easy way to remove whitespace surrounding\n\t\t\t// <svelte:window/>. lil hacky but it works\n\t\t\tif (child.type === 'Window') {\n\t\t\t\twindowComponent = child;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (child.type === 'Text' && lastChild && lastChild.type === 'Text') {\n\t\t\t\tlastChild.data += child.data;\n\t\t\t\tlastChild.end = child.end;\n\t\t\t} else {\n\t\t\t\tif (child.type === 'Text' && stripWhitespace && cleaned.length === 0) {\n\t\t\t\t\tchild.data = trimStart(child.data);\n\t\t\t\t\tif (child.data) cleaned.push(child);\n\t\t\t\t} else {\n\t\t\t\t\tcleaned.push(child);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlastChild = child;\n\t\t});\n\n\t\tlastChild = null;\n\n\t\tcleaned.forEach((child: Node, i: number) => {\n\t\t\tchild.canUseInnerHTML = !this.compiler.options.hydratable;\n\n\t\t\tchild.init(block, stripWhitespace, cleaned[i + 1] || nextSibling);\n\n\t\t\tif (child.shouldSkip) return;\n\n\t\t\tif (lastChild) lastChild.next = child;\n\t\t\tchild.prev = lastChild;\n\n\t\t\tlastChild = child;\n\t\t});\n\n\t\t// We want to remove trailing whitespace inside an element/component/block,\n\t\t// *unless* there is no whitespace between this node and its next sibling\n\t\tif (stripWhitespace && lastChild && lastChild.type === 'Text') {\n\t\t\tconst shouldTrim = (\n\t\t\t\tnextSibling ? (nextSibling.type === 'Text' && /^\\s/.test(nextSibling.data)) : !this.hasAncestor('EachBlock')\n\t\t\t);\n\n\t\t\tif (shouldTrim) {\n\t\t\t\tlastChild.data = trimEnd(lastChild.data);\n\t\t\t\tif (!lastChild.data) {\n\t\t\t\t\tcleaned.pop();\n\t\t\t\t\tlastChild = cleaned[cleaned.length - 1];\n\t\t\t\t\tlastChild.next = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.children = cleaned;\n\t\tif (windowComponent) cleaned.unshift(windowComponent);\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\t// implemented by subclasses\n\t}\n\n\tisDomNode() {\n\t\treturn this.type === 'Element' || this.type === 'Text' || this.type === 'MustacheTag';\n\t}\n\n\thasAncestor(type: string) {\n\t\treturn this.parent ?\n\t\t\tthis.parent.type === type || this.parent.hasAncestor(type) :\n\t\t\tfalse;\n\t}\n\n\tfindNearest(selector: RegExp) {\n\t\tif (selector.test(this.type)) return this;\n\t\tif (this.parent) return this.parent.findNearest(selector);\n\t}\n\n\tgetOrCreateAnchor(block: Block, parentNode: string, parentNodes: string) {\n\t\t// TODO use this in EachBlock and IfBlock — tricky because\n\t\t// children need to be created first\n\t\tconst needsAnchor = this.next ? !this.next.isDomNode() : !parentNode || !this.parent.isDomNode();\n\t\tconst anchor = needsAnchor\n\t\t\t? block.getUniqueName(`${this.var}_anchor`)\n\t\t\t: (this.next && this.next.var) || 'null';\n\n\t\tif (needsAnchor) {\n\t\t\tblock.addElement(\n\t\t\t\tanchor,\n\t\t\t\t`@createComment()`,\n\t\t\t\tparentNodes && `@createComment()`,\n\t\t\t\tparentNode\n\t\t\t);\n\t\t}\n\n\t\treturn anchor;\n\t}\n\n\tgetUpdateMountNode(anchor: string) {\n\t\treturn this.parent.isDomNode() ? this.parent.var : `${anchor}.parentNode`;\n\t}\n\n\tremount(name: string) {\n\t\treturn `${this.var}.m(${name}._slotted.default, null);`;\n\t}\n}","import Node from './shared/Node';\nimport Block from '../dom/Block';\nimport mapChildren from './shared/mapChildren';\n\nexport default class PendingBlock extends Node {\n\tblock: Block;\n\tchildren: Node[];\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.children = mapChildren(compiler, parent, scope, info.children);\n\t}\n}","import Node from './shared/Node';\nimport Block from '../dom/Block';\nimport mapChildren from './shared/mapChildren';\n\nexport default class ThenBlock extends Node {\n\tblock: Block;\n\tchildren: Node[];\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.children = mapChildren(compiler, parent, scope, info.children);\n\t}\n}","import Node from './shared/Node';\nimport Block from '../dom/Block';\nimport mapChildren from './shared/mapChildren';\n\nexport default class CatchBlock extends Node {\n\tblock: Block;\n\tchildren: Node[];\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.children = mapChildren(compiler, parent, scope, info.children);\n\t}\n}","import Compiler from '../compile/Compiler';\nimport { Node } from '../interfaces';\n\nexport default function createDebuggingComment(node: Node, compiler: Compiler) {\n\tconst { locate, source } = compiler;\n\n\tlet c = node.start;\n\tif (node.type === 'ElseBlock') {\n\t\twhile (source[c - 1] !== '{') c -= 1;\n\t\twhile (source[c - 1] === '{') c -= 1;\n\t}\n\n\tlet d = node.expression ? node.expression.node.end : c;\n\twhile (source[d] !== '}') d += 1;\n\twhile (source[d] === '}') d += 1;\n\n\tconst start = locate(c);\n\tconst loc = `(${start.line + 1}:${start.column})`;\n\n\treturn `${loc} ${source.slice(c, d)}`.replace(/\\s/g, ' ');\n}\n","import Compiler from '../../Compiler';\nimport { walk } from 'estree-walker';\nimport isReference from 'is-reference';\nimport flattenReference from '../../../utils/flattenReference';\nimport { createScopes } from '../../../utils/annotateWithScopes';\nimport { Node } from '../../../interfaces';\n\nconst binaryOperators: Record<string, number> = {\n\t'**': 15,\n\t'*': 14,\n\t'/': 14,\n\t'%': 14,\n\t'+': 13,\n\t'-': 13,\n\t'<<': 12,\n\t'>>': 12,\n\t'>>>': 12,\n\t'<': 11,\n\t'<=': 11,\n\t'>': 11,\n\t'>=': 11,\n\t'in': 11,\n\t'instanceof': 11,\n\t'==': 10,\n\t'!=': 10,\n\t'===': 10,\n\t'!==': 10,\n\t'&': 9,\n\t'^': 8,\n\t'|': 7\n};\n\nconst logicalOperators: Record<string, number> = {\n\t'&&': 6,\n\t'||': 5\n};\n\nconst precedence: Record<string, (node?: Node) => number> = {\n\tLiteral: () => 21,\n\tIdentifier: () => 21,\n\tParenthesizedExpression: () => 20,\n\tMemberExpression: () => 19,\n\tNewExpression: () => 19, // can be 18 (if no args) but makes no practical difference\n\tCallExpression: () => 19,\n\tUpdateExpression: () => 17,\n\tUnaryExpression: () => 16,\n\tBinaryExpression: (node: Node) => binaryOperators[node.operator],\n\tLogicalExpression: (node: Node) => logicalOperators[node.operator],\n\tConditionalExpression: () => 4,\n\tAssignmentExpression: () => 3,\n\tYieldExpression: () => 2,\n\tSpreadElement: () => 1,\n\tSequenceExpression: () => 0\n};\n\nexport default class Expression {\n\tcompiler: Compiler;\n\tnode: any;\n\tsnippet: string;\n\n\tusesContext: boolean;\n\treferences: Set<string>;\n\tdependencies: Set<string>;\n\n\tthisReferences: Array<{ start: number, end: number }>;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\t// TODO revert to direct property access in prod?\n\t\tObject.defineProperties(this, {\n\t\t\tcompiler: {\n\t\t\t\tvalue: compiler\n\t\t\t}\n\t\t});\n\n\t\tthis.node = info;\n\t\tthis.thisReferences = [];\n\n\t\tthis.snippet = `[✂${info.start}-${info.end}✂]`;\n\n\t\tthis.usesContext = false;\n\n\t\tconst dependencies = new Set();\n\n\t\tconst { code, helpers } = compiler;\n\n\t\tlet { map, scope: currentScope } = createScopes(info);\n\n\t\tconst isEventHandler = parent.type === 'EventHandler';\n\t\tconst expression = this;\n\t\tconst isSynthetic = parent.isSynthetic;\n\n\t\twalk(info, {\n\t\t\tenter(node: any, parent: any, key: string) {\n\t\t\t\t// don't manipulate shorthand props twice\n\t\t\t\tif (key === 'value' && parent.shorthand) return;\n\n\t\t\t\tcode.addSourcemapLocation(node.start);\n\t\t\t\tcode.addSourcemapLocation(node.end);\n\n\t\t\t\tif (map.has(node)) {\n\t\t\t\t\tcurrentScope = map.get(node);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node.type === 'ThisExpression') {\n\t\t\t\t\texpression.thisReferences.push(node);\n\t\t\t\t}\n\n\t\t\t\tif (isReference(node, parent)) {\n\t\t\t\t\tconst { name, nodes } = flattenReference(node);\n\n\t\t\t\t\tif (currentScope.has(name) || (name === 'event' && isEventHandler)) return;\n\n\t\t\t\t\tif (compiler.helpers.has(name)) {\n\t\t\t\t\t\tlet object = node;\n\t\t\t\t\t\twhile (object.type === 'MemberExpression') object = object.object;\n\n\t\t\t\t\t\tconst alias = compiler.templateVars.get(`helpers-${name}`);\n\t\t\t\t\t\tif (alias !== name) code.overwrite(object.start, object.end, alias);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\texpression.usesContext = true;\n\n\t\t\t\t\tif (!isSynthetic) {\n\t\t\t\t\t\t// <option> value attribute could be synthetic — avoid double editing\n\t\t\t\t\t\tcode.prependRight(node.start, key === 'key' && parent.shorthand\n\t\t\t\t\t\t\t? `${name}: ctx.`\n\t\t\t\t\t\t\t: 'ctx.');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (scope.names.has(name)) {\n\t\t\t\t\t\tscope.dependenciesForName.get(name).forEach(dependency => {\n\t\t\t\t\t\t\tdependencies.add(dependency);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdependencies.add(name);\n\t\t\t\t\t\tcompiler.expectedProperties.add(name);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.type === 'MemberExpression') {\n\t\t\t\t\t\tnodes.forEach(node => {\n\t\t\t\t\t\t\tcode.addSourcemapLocation(node.start);\n\t\t\t\t\t\t\tcode.addSourcemapLocation(node.end);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.skip();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tleave(node: Node, parent: Node) {\n\t\t\t\tif (map.has(node)) currentScope = currentScope.parent;\n\t\t\t}\n\t\t});\n\n\t\tthis.dependencies = dependencies;\n\t}\n\n\tgetPrecedence() {\n\t\treturn this.node.type in precedence ? precedence[this.node.type](this.node) : 0;\n\t}\n\n\toverwriteThis(name) {\n\t\tthis.thisReferences.forEach(ref => {\n\t\t\tthis.compiler.code.overwrite(ref.start, ref.end, name, {\n\t\t\t\tstoreName: true\n\t\t\t});\n\t\t});\n\t}\n}","import deindent from '../../utils/deindent';\nimport Node from './shared/Node';\nimport Block from '../dom/Block';\nimport PendingBlock from './PendingBlock';\nimport ThenBlock from './ThenBlock';\nimport CatchBlock from './CatchBlock';\nimport createDebuggingComment from '../../utils/createDebuggingComment';\nimport Expression from './shared/Expression';\nimport { SsrTarget } from '../ssr';\n\nexport default class AwaitBlock extends Node {\n\texpression: Expression;\n\tvalue: string;\n\terror: string;\n\n\tpending: PendingBlock;\n\tthen: ThenBlock;\n\tcatch: CatchBlock;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.expression = new Expression(compiler, this, scope, info.expression);\n\t\tconst deps = this.expression.dependencies;\n\n\t\tthis.value = info.value;\n\t\tthis.error = info.error;\n\n\t\tthis.pending = new PendingBlock(compiler, this, scope, info.pending);\n\t\tthis.then = new ThenBlock(compiler, this, scope.add(this.value, deps), info.then);\n\t\tthis.catch = new CatchBlock(compiler, this, scope.add(this.error, deps), info.catch);\n\t}\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\tthis.cannotUseInnerHTML();\n\n\t\tthis.var = block.getUniqueName('await_block');\n\t\tblock.addDependencies(this.expression.dependencies);\n\n\t\tlet isDynamic = false;\n\t\tlet hasIntros = false;\n\t\tlet hasOutros = false;\n\n\t\t['pending', 'then', 'catch'].forEach(status => {\n\t\t\tconst child = this[status];\n\n\t\t\tchild.block = block.child({\n\t\t\t\tcomment: createDebuggingComment(child, this.compiler),\n\t\t\t\tname: this.compiler.getUniqueName(`create_${status}_block`)\n\t\t\t});\n\n\t\t\tchild.initChildren(child.block, stripWhitespace, nextSibling);\n\t\t\tthis.compiler.target.blocks.push(child.block);\n\n\t\t\tif (child.block.dependencies.size > 0) {\n\t\t\t\tisDynamic = true;\n\t\t\t\tblock.addDependencies(child.block.dependencies);\n\t\t\t}\n\n\t\t\tif (child.block.hasIntros) hasIntros = true;\n\t\t\tif (child.block.hasOutros) hasOutros = true;\n\t\t});\n\n\t\tthis.pending.block.hasUpdateMethod = isDynamic;\n\t\tthis.then.block.hasUpdateMethod = isDynamic;\n\t\tthis.catch.block.hasUpdateMethod = isDynamic;\n\n\t\tthis.pending.block.hasIntroMethod = hasIntros;\n\t\tthis.then.block.hasIntroMethod = hasIntros;\n\t\tthis.catch.block.hasIntroMethod = hasIntros;\n\n\t\tthis.pending.block.hasOutroMethod = hasOutros;\n\t\tthis.then.block.hasOutroMethod = hasOutros;\n\t\tthis.catch.block.hasOutroMethod = hasOutros;\n\n\t\tif (hasOutros && this.compiler.options.nestedTransitions) block.addOutro();\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst name = this.var;\n\n\t\tconst anchor = this.getOrCreateAnchor(block, parentNode, parentNodes);\n\t\tconst updateMountNode = this.getUpdateMountNode(anchor);\n\n\t\tconst { snippet } = this.expression;\n\n\t\tconst info = block.getUniqueName(`info`);\n\t\tconst promise = block.getUniqueName(`promise`);\n\n\t\tblock.addVariable(promise);\n\n\t\tblock.maintainContext = true;\n\n\t\tconst infoProps = [\n\t\t\tblock.alias('component') === 'component' ? 'component' : `component: #component`,\n\t\t\t'ctx',\n\t\t\t'current: null',\n\t\t\tthis.pending.block.name && `pending: ${this.pending.block.name}`,\n\t\t\tthis.then.block.name && `then: ${this.then.block.name}`,\n\t\t\tthis.catch.block.name && `catch: ${this.catch.block.name}`,\n\t\t\tthis.then.block.name && `value: '${this.value}'`,\n\t\t\tthis.catch.block.name && `error: '${this.error}'`,\n\t\t\tthis.pending.block.hasOutroMethod && `blocks: Array(3)`\n\t\t].filter(Boolean);\n\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tlet ${info} = {\n\t\t\t\t${infoProps.join(',\\n')}\n\t\t\t};\n\t\t`);\n\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\t@handlePromise(${promise} = ${snippet}, ${info});\n\t\t`);\n\n\t\tblock.builders.create.addBlock(deindent`\n\t\t\t${info}.block.c();\n\t\t`);\n\n\t\tif (parentNodes) {\n\t\t\tblock.builders.claim.addBlock(deindent`\n\t\t\t\t${info}.block.l(${parentNodes});\n\t\t\t`);\n\t\t}\n\n\t\tconst initialMountNode = parentNode || '#target';\n\t\tconst anchorNode = parentNode ? 'null' : 'anchor';\n\n\t\tconst hasTransitions = this.pending.block.hasIntroMethod || this.pending.block.hasOutroMethod;\n\n\t\tblock.builders.mount.addBlock(deindent`\n\t\t\t${info}.block.${hasTransitions ? 'i' : 'm'}(${initialMountNode}, ${info}.anchor = ${anchorNode});\n\t\t\t${info}.mount = () => ${updateMountNode};\n\t\t`);\n\n\t\tconst conditions = [];\n\t\tif (this.expression.dependencies.size > 0) {\n\t\t\tconditions.push(\n\t\t\t\t`(${[...this.expression.dependencies].map(dep => `'${dep}' in changed`).join(' || ')})`\n\t\t\t);\n\t\t}\n\n\t\tconditions.push(\n\t\t\t`${promise} !== (${promise} = ${snippet})`,\n\t\t\t`@handlePromise(${promise}, ${info})`\n\t\t);\n\n\t\tblock.builders.update.addLine(\n\t\t\t`${info}.ctx = ctx;`\n\t\t);\n\n\t\tif (this.pending.block.hasUpdateMethod) {\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\tif (${conditions.join(' && ')}) {\n\t\t\t\t\t// nothing\n\t\t\t\t} else {\n\t\t\t\t\t${info}.block.p(changed, @assign(@assign({}, ctx), ${info}.resolved));\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\t${conditions.join(' && ')}\n\t\t\t`);\n\t\t}\n\n\t\tif (this.pending.block.hasOutroMethod && this.compiler.options.nestedTransitions) {\n\t\t\tblock.builders.outro.addBlock(deindent`\n\t\t\t\t#outrocallback = @callAfter(#outrocallback, 3);\n\t\t\t\tfor (let #i = 0; #i < 3; #i += 1) {\n\t\t\t\t\tconst block = ${info}.blocks[#i];\n\t\t\t\t\tif (block) block.o(#outrocallback);\n\t\t\t\t\telse #outrocallback();\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t${info}.block.d(${parentNode ? '' : 'detach'});\n\t\t\t${info} = null;\n\t\t`);\n\n\t\t[this.pending, this.then, this.catch].forEach(status => {\n\t\t\tstatus.children.forEach(child => {\n\t\t\t\tchild.build(status.block, null, 'nodes');\n\t\t\t});\n\t\t});\n\t}\n\n\tssr() {\n\t\tconst target: SsrTarget = <SsrTarget>this.compiler.target;\n\t\tconst { snippet } = this.expression;\n\n\t\ttarget.append('${(function(__value) { if(@isPromise(__value)) return `');\n\n\t\tthis.pending.children.forEach((child: Node) => {\n\t\t\tchild.ssr();\n\t\t});\n\n\t\ttarget.append('`; return function(ctx) { return `');\n\n\t\tthis.then.children.forEach((child: Node) => {\n\t\t\tchild.ssr();\n\t\t});\n\n\t\ttarget.append(`\\`;}(Object.assign({}, ctx, { ${this.value}: __value }));}(${snippet})) }`);\n\t}\n}\n","import Node from './shared/Node';\n\nexport default class Comment extends Node {\n\ttype: 'Comment';\n\tdata: string;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.data = info.data;\n\t}\n\n\tssr() {\n\t\t// Allow option to preserve comments, otherwise ignore\n\t\tif (this.compiler.options.preserveComments) {\n\t\t\tthis.compiler.target.append(`<!--${this.data}-->`);\n\t\t}\n\t}\n}","export default function stringifyProps(props: string[]) {\n\tif (!props.length) return '{}';\n\n\tconst joined = props.join(', ');\n\tif (joined.length > 40) {\n\t\t// make larger data objects readable\n\t\treturn `{\\n\\t${props.join(',\\n\\t')}\\n}`;\n\t}\n\n\treturn `{ ${joined} }`;\n}","import { Node } from '../interfaces';\n\nexport default function getTailSnippet(node: Node) {\n\tconst end = node.end;\n\twhile (node.type === 'MemberExpression') node = node.object;\n\tconst start = node.end;\n\n\treturn `[✂${start}-${end}✂]`;\n}\n","import { Node } from '../interfaces';\n\nexport default function getObject(node: Node) {\n\twhile (node.type === 'MemberExpression') node = node.object;\n\treturn node;\n}\n","import isValidIdentifier from './isValidIdentifier';\nimport reservedNames from './reservedNames';\n\nexport function quoteNameIfNecessary(name) {\n\tif (!isValidIdentifier(name)) return `\"${name}\"`;\n\treturn name;\n}\n\nexport function quotePropIfNecessary(name) {\n\tif (!isValidIdentifier(name)) return `[\"${name}\"]`;\n\treturn `.${name}`;\n}","const svgAttributes = 'accent-height accumulate additive alignment-baseline allowReorder alphabetic amplitude arabic-form ascent attributeName attributeType autoReverse azimuth baseFrequency baseline-shift baseProfile bbox begin bias by calcMode cap-height class clip clipPathUnits clip-path clip-rule color color-interpolation color-interpolation-filters color-profile color-rendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominant-baseline dur dx dy edgeMode elevation enable-background end exponent externalResourcesRequired fill fill-opacity fill-rule filter filterRes filterUnits flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight format from fr fx fy g1 g2 glyph-name glyph-orientation-horizontal glyph-orientation-vertical glyphRef gradientTransform gradientUnits hanging height href horiz-adv-x horiz-origin-x id ideographic image-rendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lang lengthAdjust letter-spacing lighting-color limitingConeAngle local marker-end marker-mid marker-start markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical max media method min mode name numOctaves offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload opacity operator order orient orientation origin overflow overline-position overline-thickness panose-1 paint-order pathLength patternContentUnits patternTransform patternUnits pointer-events points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shape-rendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stop-color stop-opacity strikethrough-position strikethrough-thickness string stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width style surfaceScale systemLanguage tabindex tableValues target targetX targetY text-anchor text-decoration text-rendering textLength to transform type u1 u2 underline-position underline-thickness unicode unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget visibility width widths word-spacing writing-mode x x-height x1 x2 xChannelSelector xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xml:lang xml:space y y1 y2 yChannelSelector z zoomAndPan'.split(' ');\n\nconst svgAttributeLookup = new Map();\n\nsvgAttributes.forEach(name => {\n\tsvgAttributeLookup.set(name.toLowerCase(), name);\n});\n\nexport default function fixAttributeCasing(name) {\n\tname = name.toLowerCase();\n\treturn svgAttributeLookup.get(name) || name;\n}\n","export default function addToSet(a: Set<any>, b: Set<any>) {\n\tb.forEach(item => {\n\t\ta.add(item);\n\t});\n}","import deindent from '../../utils/deindent';\nimport { escape, escapeTemplate, stringify } from '../../utils/stringify';\nimport fixAttributeCasing from '../../utils/fixAttributeCasing';\nimport addToSet from '../../utils/addToSet';\nimport Compiler from '../Compiler';\nimport Node from './shared/Node';\nimport Element from './Element';\nimport Text from './Text';\nimport Block from '../dom/Block';\nimport Expression from './shared/Expression';\n\nexport interface StyleProp {\n\tkey: string;\n\tvalue: Node[];\n}\n\nexport default class Attribute extends Node {\n\ttype: 'Attribute';\n\tstart: number;\n\tend: number;\n\n\tcompiler: Compiler;\n\tparent: Element;\n\tname: string;\n\tisSpread: boolean;\n\tisTrue: boolean;\n\tisDynamic: boolean;\n\tisSynthetic: boolean;\n\tshouldCache: boolean;\n\texpression?: Expression;\n\tchunks: (Text | Expression)[];\n\tdependencies: Set<string>;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tif (info.type === 'Spread') {\n\t\t\tthis.name = null;\n\t\t\tthis.isSpread = true;\n\t\t\tthis.isTrue = false;\n\t\t\tthis.isSynthetic = false;\n\n\t\t\tthis.expression = new Expression(compiler, this, scope, info.expression);\n\t\t\tthis.dependencies = this.expression.dependencies;\n\t\t\tthis.chunks = null;\n\n\t\t\tthis.isDynamic = true; // TODO not necessarily\n\t\t\tthis.shouldCache = false; // TODO does this mean anything here?\n\t\t}\n\n\t\telse {\n\t\t\tthis.name = info.name;\n\t\t\tthis.isTrue = info.value === true;\n\t\t\tthis.isSynthetic = info.synthetic;\n\n\t\t\tthis.dependencies = new Set();\n\n\t\t\tthis.chunks = this.isTrue\n\t\t\t\t? []\n\t\t\t\t: info.value.map(node => {\n\t\t\t\t\tif (node.type === 'Text') return node;\n\n\t\t\t\t\tconst expression = new Expression(compiler, this, scope, node.expression);\n\n\t\t\t\t\taddToSet(this.dependencies, expression.dependencies);\n\t\t\t\t\treturn expression;\n\t\t\t\t});\n\n\t\t\tthis.isDynamic = this.dependencies.size > 0;\n\n\t\t\tthis.shouldCache = this.isDynamic\n\t\t\t\t? this.chunks.length === 1\n\t\t\t\t\t? this.chunks[0].node.type !== 'Identifier' || scope.names.has(this.chunks[0].node.name)\n\t\t\t\t\t: true\n\t\t\t\t: false;\n\t\t}\n\t}\n\n\tgetValue() {\n\t\tif (this.isTrue) return true;\n\t\tif (this.chunks.length === 0) return `\"\"`;\n\n\t\tif (this.chunks.length === 1) {\n\t\t\treturn this.chunks[0].type === 'Text'\n\t\t\t\t? stringify(this.chunks[0].data)\n\t\t\t\t: this.chunks[0].snippet;\n\t\t}\n\n\t\treturn (this.chunks[0].type === 'Text' ? '' : `\"\" + `) +\n\t\t\tthis.chunks\n\t\t\t\t.map(chunk => {\n\t\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\t\treturn stringify(chunk.data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn chunk.getPrecedence() <= 13 ? `(${chunk.snippet})` : chunk.snippet;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.join(' + ');\n\t}\n\n\trender(block: Block) {\n\t\tconst node = this.parent;\n\t\tconst name = fixAttributeCasing(this.name);\n\n\t\tif (name === 'style') {\n\t\t\tconst styleProps = optimizeStyle(this.chunks);\n\t\t\tif (styleProps) {\n\t\t\t\tthis.renderStyle(block, styleProps);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet metadata = node.namespace ? null : attributeLookup[name];\n\t\tif (metadata && metadata.appliesTo && !~metadata.appliesTo.indexOf(node.name))\n\t\t\tmetadata = null;\n\n\t\tconst isIndirectlyBoundValue =\n\t\t\tname === 'value' &&\n\t\t\t(node.name === 'option' || // TODO check it's actually bound\n\t\t\t\t(node.name === 'input' &&\n\t\t\t\t\tnode.bindings.find(\n\t\t\t\t\t\t(binding: Binding) =>\n\t\t\t\t\t\t\t/checked|group/.test(binding.name)\n\t\t\t\t\t\t)));\n\n\t\tconst propertyName = isIndirectlyBoundValue\n\t\t\t? '__value'\n\t\t\t: metadata && metadata.propertyName;\n\n\t\t// xlink is a special case... we could maybe extend this to generic\n\t\t// namespaced attributes but I'm not sure that's applicable in\n\t\t// HTML5?\n\t\tconst method = name.slice(0, 6) === 'xlink:'\n\t\t\t? '@setXlinkAttribute'\n\t\t\t: '@setAttribute';\n\n\t\tconst isLegacyInputType = this.compiler.options.legacy && name === 'type' && this.parent.name === 'input';\n\n\t\tconst isDataSet = /^data-/.test(name) && !this.compiler.options.legacy && !node.namespace;\n\t\tconst camelCaseName = isDataSet ? name.replace('data-', '').replace(/(-\\w)/g, function (m) {\n\t\t\treturn m[1].toUpperCase();\n\t\t}) : name;\n\n\t\tif (this.isDynamic) {\n\t\t\tlet value;\n\n\t\t\t// TODO some of this code is repeated in Tag.ts — would be good to\n\t\t\t// DRY it out if that's possible without introducing crazy indirection\n\t\t\tif (this.chunks.length === 1) {\n\t\t\t\t// single {tag} — may be a non-string\n\t\t\t\tvalue = this.chunks[0].snippet;\n\t\t\t} else {\n\t\t\t\t// '{foo} {bar}' — treat as string concatenation\n\t\t\t\tvalue =\n\t\t\t\t\t(this.chunks[0].type === 'Text' ? '' : `\"\" + `) +\n\t\t\t\t\tthis.chunks\n\t\t\t\t\t\t.map((chunk: Node) => {\n\t\t\t\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\t\t\t\treturn stringify(chunk.data);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn chunk.getPrecedence() <= 13\n\t\t\t\t\t\t\t\t\t? `(${chunk.snippet})`\n\t\t\t\t\t\t\t\t\t: chunk.snippet;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(' + ');\n\t\t\t}\n\n\t\t\tconst isSelectValueAttribute =\n\t\t\t\tname === 'value' && node.name === 'select';\n\n\t\t\tconst shouldCache = this.shouldCache || isSelectValueAttribute;\n\n\t\t\tconst last = shouldCache && block.getUniqueName(\n\t\t\t\t`${node.var}_${name.replace(/[^a-zA-Z_$]/g, '_')}_value`\n\t\t\t);\n\n\t\t\tif (shouldCache) block.addVariable(last);\n\n\t\t\tlet updater;\n\t\t\tconst init = shouldCache ? `${last} = ${value}` : value;\n\n\t\t\tif (isLegacyInputType) {\n\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t`@setInputType(${node.var}, ${init});`\n\t\t\t\t);\n\t\t\t\tupdater = `@setInputType(${node.var}, ${shouldCache ? last : value});`;\n\t\t\t} else if (isSelectValueAttribute) {\n\t\t\t\t// annoying special case\n\t\t\t\tconst isMultipleSelect = node.getStaticAttributeValue('multiple');\n\t\t\t\tconst i = block.getUniqueName('i');\n\t\t\t\tconst option = block.getUniqueName('option');\n\n\t\t\t\tconst ifStatement = isMultipleSelect\n\t\t\t\t\t? deindent`\n\t\t\t\t\t\t${option}.selected = ~${last}.indexOf(${option}.__value);`\n\t\t\t\t\t: deindent`\n\t\t\t\t\t\tif (${option}.__value === ${last}) {\n\t\t\t\t\t\t\t${option}.selected = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}`;\n\n\t\t\t\tupdater = deindent`\n\t\t\t\t\tfor (var ${i} = 0; ${i} < ${node.var}.options.length; ${i} += 1) {\n\t\t\t\t\t\tvar ${option} = ${node.var}.options[${i}];\n\n\t\t\t\t\t\t${ifStatement}\n\t\t\t\t\t}\n\t\t\t\t`;\n\n\t\t\t\tblock.builders.hydrate.addBlock(deindent`\n\t\t\t\t\t${last} = ${value};\n\t\t\t\t\t${updater}\n\t\t\t\t`);\n\t\t\t} else if (propertyName) {\n\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t`${node.var}.${propertyName} = ${init};`\n\t\t\t\t);\n\t\t\t\tupdater = `${node.var}.${propertyName} = ${shouldCache ? last : value};`;\n\t\t\t} else if (isDataSet) {\n\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t`${node.var}.dataset.${camelCaseName} = ${init};`\n\t\t\t\t);\n\t\t\t\tupdater = `${node.var}.dataset.${camelCaseName} = ${shouldCache ? last : value};`;\n\t\t\t} else {\n\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t`${method}(${node.var}, \"${name}\", ${init});`\n\t\t\t\t);\n\t\t\t\tupdater = `${method}(${node.var}, \"${name}\", ${shouldCache ? last : value});`;\n\t\t\t}\n\n\t\t\tif (this.dependencies.size || isSelectValueAttribute) {\n\t\t\t\tconst dependencies = Array.from(this.dependencies);\n\t\t\t\tconst changedCheck = (\n\t\t\t\t\t( block.hasOutros ? `#outroing || ` : '' ) +\n\t\t\t\t\tdependencies.map(dependency => `changed.${dependency}`).join(' || ')\n\t\t\t\t);\n\n\t\t\t\tconst updateCachedValue = `${last} !== (${last} = ${value})`;\n\n\t\t\t\tconst condition = shouldCache ?\n\t\t\t\t\t( dependencies.length ? `(${changedCheck}) && ${updateCachedValue}` : updateCachedValue ) :\n\t\t\t\t\tchangedCheck;\n\n\t\t\t\tblock.builders.update.addConditional(\n\t\t\t\t\tcondition,\n\t\t\t\t\tupdater\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst value = this.getValue();\n\n\t\t\tconst statement = (\n\t\t\t\tisLegacyInputType\n\t\t\t\t\t? `@setInputType(${node.var}, ${value});`\n\t\t\t\t\t: propertyName\n\t\t\t\t\t\t? `${node.var}.${propertyName} = ${value};`\n\t\t\t\t\t\t: isDataSet\n\t\t\t\t\t\t\t? `${node.var}.dataset.${camelCaseName} = ${value};`\n\t\t\t\t\t\t\t: `${method}(${node.var}, \"${name}\", ${value});`\n\t\t\t);\n\n\t\t\tblock.builders.hydrate.addLine(statement);\n\n\t\t\t// special case – autofocus. has to be handled in a bit of a weird way\n\t\t\tif (this.isTrue && name === 'autofocus') {\n\t\t\t\tblock.autofocus = node.var;\n\t\t\t}\n\t\t}\n\n\t\tif (isIndirectlyBoundValue) {\n\t\t\tconst updateValue = `${node.var}.value = ${node.var}.__value;`;\n\n\t\t\tblock.builders.hydrate.addLine(updateValue);\n\t\t\tif (this.isDynamic) block.builders.update.addLine(updateValue);\n\t\t}\n\t}\n\n\trenderStyle(\n\t\tblock: Block,\n\t\tstyleProps: StyleProp[]\n\t) {\n\t\tstyleProps.forEach((prop: StyleProp) => {\n\t\t\tlet value;\n\n\t\t\tif (isDynamic(prop.value)) {\n\t\t\t\tconst propDependencies = new Set();\n\t\t\t\tlet shouldCache;\n\n\t\t\t\tvalue =\n\t\t\t\t\t((prop.value.length === 1 || prop.value[0].type === 'Text') ? '' : `\"\" + `) +\n\t\t\t\t\tprop.value\n\t\t\t\t\t\t.map((chunk: Node) => {\n\t\t\t\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\t\t\t\treturn stringify(chunk.data);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst { dependencies, snippet } = chunk;\n\n\t\t\t\t\t\t\t\tdependencies.forEach(d => {\n\t\t\t\t\t\t\t\t\tpropDependencies.add(d);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn chunk.getPrecedence() <= 13 ? `(${snippet})` : snippet;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(' + ');\n\n\t\t\t\tif (propDependencies.size) {\n\t\t\t\t\tconst dependencies = Array.from(propDependencies);\n\t\t\t\t\tconst condition = (\n\t\t\t\t\t\t(block.hasOutros ? `#outroing || ` : '') +\n\t\t\t\t\t\tdependencies.map(dependency => `changed.${dependency}`).join(' || ')\n\t\t\t\t\t);\n\n\t\t\t\t\tblock.builders.update.addConditional(\n\t\t\t\t\t\tcondition,\n\t\t\t\t\t\t`@setStyle(${this.parent.var}, \"${prop.key}\", ${value});`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalue = stringify(prop.value[0].data);\n\t\t\t}\n\n\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t`@setStyle(${this.parent.var}, \"${prop.key}\", ${value});`\n\t\t\t);\n\t\t});\n\t}\n\n\tstringifyForSsr() {\n\t\treturn this.chunks\n\t\t\t.map((chunk: Node) => {\n\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\treturn escapeTemplate(escape(chunk.data).replace(/\"/g, '&quot;'));\n\t\t\t\t}\n\n\t\t\t\treturn '${@escape(' + chunk.snippet + ')}';\n\t\t\t})\n\t\t\t.join('');\n\t}\n}\n\n// source: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\nconst attributeLookup = {\n\taccept: { appliesTo: ['form', 'input'] },\n\t'accept-charset': { propertyName: 'acceptCharset', appliesTo: ['form'] },\n\taccesskey: { propertyName: 'accessKey' },\n\taction: { appliesTo: ['form'] },\n\talign: {\n\t\tappliesTo: [\n\t\t\t'applet',\n\t\t\t'caption',\n\t\t\t'col',\n\t\t\t'colgroup',\n\t\t\t'hr',\n\t\t\t'iframe',\n\t\t\t'img',\n\t\t\t'table',\n\t\t\t'tbody',\n\t\t\t'td',\n\t\t\t'tfoot',\n\t\t\t'th',\n\t\t\t'thead',\n\t\t\t'tr',\n\t\t],\n\t},\n\tallowfullscreen: { propertyName: 'allowFullscreen', appliesTo: ['iframe'] },\n\talt: { appliesTo: ['applet', 'area', 'img', 'input'] },\n\tasync: { appliesTo: ['script'] },\n\tautocomplete: { appliesTo: ['form', 'input'] },\n\tautofocus: { appliesTo: ['button', 'input', 'keygen', 'select', 'textarea'] },\n\tautoplay: { appliesTo: ['audio', 'video'] },\n\tautosave: { appliesTo: ['input'] },\n\tbgcolor: {\n\t\tpropertyName: 'bgColor',\n\t\tappliesTo: [\n\t\t\t'body',\n\t\t\t'col',\n\t\t\t'colgroup',\n\t\t\t'marquee',\n\t\t\t'table',\n\t\t\t'tbody',\n\t\t\t'tfoot',\n\t\t\t'td',\n\t\t\t'th',\n\t\t\t'tr',\n\t\t],\n\t},\n\tborder: { appliesTo: ['img', 'object', 'table'] },\n\tbuffered: { appliesTo: ['audio', 'video'] },\n\tchallenge: { appliesTo: ['keygen'] },\n\tcharset: { appliesTo: ['meta', 'script'] },\n\tchecked: { appliesTo: ['command', 'input'] },\n\tcite: { appliesTo: ['blockquote', 'del', 'ins', 'q'] },\n\tclass: { propertyName: 'className' },\n\tcode: { appliesTo: ['applet'] },\n\tcodebase: { propertyName: 'codeBase', appliesTo: ['applet'] },\n\tcolor: { appliesTo: ['basefont', 'font', 'hr'] },\n\tcols: { appliesTo: ['textarea'] },\n\tcolspan: { propertyName: 'colSpan', appliesTo: ['td', 'th'] },\n\tcontent: { appliesTo: ['meta'] },\n\tcontenteditable: { propertyName: 'contentEditable' },\n\tcontextmenu: {},\n\tcontrols: { appliesTo: ['audio', 'video'] },\n\tcoords: { appliesTo: ['area'] },\n\tdata: { appliesTo: ['object'] },\n\tdatetime: { propertyName: 'dateTime', appliesTo: ['del', 'ins', 'time'] },\n\tdefault: { appliesTo: ['track'] },\n\tdefer: { appliesTo: ['script'] },\n\tdir: {},\n\tdirname: { propertyName: 'dirName', appliesTo: ['input', 'textarea'] },\n\tdisabled: {\n\t\tappliesTo: [\n\t\t\t'button',\n\t\t\t'command',\n\t\t\t'fieldset',\n\t\t\t'input',\n\t\t\t'keygen',\n\t\t\t'optgroup',\n\t\t\t'option',\n\t\t\t'select',\n\t\t\t'textarea',\n\t\t],\n\t},\n\tdownload: { appliesTo: ['a', 'area'] },\n\tdraggable: {},\n\tdropzone: {},\n\tenctype: { appliesTo: ['form'] },\n\tfor: { propertyName: 'htmlFor', appliesTo: ['label', 'output'] },\n\tform: {\n\t\tappliesTo: [\n\t\t\t'button',\n\t\t\t'fieldset',\n\t\t\t'input',\n\t\t\t'keygen',\n\t\t\t'label',\n\t\t\t'meter',\n\t\t\t'object',\n\t\t\t'output',\n\t\t\t'progress',\n\t\t\t'select',\n\t\t\t'textarea',\n\t\t],\n\t},\n\tformaction: { appliesTo: ['input', 'button'] },\n\theaders: { appliesTo: ['td', 'th'] },\n\theight: {\n\t\tappliesTo: ['canvas', 'embed', 'iframe', 'img', 'input', 'object', 'video'],\n\t},\n\thidden: {},\n\thigh: { appliesTo: ['meter'] },\n\thref: { appliesTo: ['a', 'area', 'base', 'link'] },\n\threflang: { appliesTo: ['a', 'area', 'link'] },\n\t'http-equiv': { propertyName: 'httpEquiv', appliesTo: ['meta'] },\n\ticon: { appliesTo: ['command'] },\n\tid: {},\n\tindeterminate: { appliesTo: ['input'] },\n\tismap: { propertyName: 'isMap', appliesTo: ['img'] },\n\titemprop: {},\n\tkeytype: { appliesTo: ['keygen'] },\n\tkind: { appliesTo: ['track'] },\n\tlabel: { appliesTo: ['track'] },\n\tlang: {},\n\tlanguage: { appliesTo: ['script'] },\n\tloop: { appliesTo: ['audio', 'bgsound', 'marquee', 'video'] },\n\tlow: { appliesTo: ['meter'] },\n\tmanifest: { appliesTo: ['html'] },\n\tmax: { appliesTo: ['input', 'meter', 'progress'] },\n\tmaxlength: { propertyName: 'maxLength', appliesTo: ['input', 'textarea'] },\n\tmedia: { appliesTo: ['a', 'area', 'link', 'source', 'style'] },\n\tmethod: { appliesTo: ['form'] },\n\tmin: { appliesTo: ['input', 'meter'] },\n\tmultiple: { appliesTo: ['input', 'select'] },\n\tmuted: { appliesTo: ['audio', 'video'] },\n\tname: {\n\t\tappliesTo: [\n\t\t\t'button',\n\t\t\t'form',\n\t\t\t'fieldset',\n\t\t\t'iframe',\n\t\t\t'input',\n\t\t\t'keygen',\n\t\t\t'object',\n\t\t\t'output',\n\t\t\t'select',\n\t\t\t'textarea',\n\t\t\t'map',\n\t\t\t'meta',\n\t\t\t'param',\n\t\t],\n\t},\n\tnovalidate: { propertyName: 'noValidate', appliesTo: ['form'] },\n\topen: { appliesTo: ['details'] },\n\toptimum: { appliesTo: ['meter'] },\n\tpattern: { appliesTo: ['input'] },\n\tping: { appliesTo: ['a', 'area'] },\n\tplaceholder: { appliesTo: ['input', 'textarea'] },\n\tposter: { appliesTo: ['video'] },\n\tpreload: { appliesTo: ['audio', 'video'] },\n\tradiogroup: { appliesTo: ['command'] },\n\treadonly: { propertyName: 'readOnly', appliesTo: ['input', 'textarea'] },\n\trel: { appliesTo: ['a', 'area', 'link'] },\n\trequired: { appliesTo: ['input', 'select', 'textarea'] },\n\treversed: { appliesTo: ['ol'] },\n\trows: { appliesTo: ['textarea'] },\n\trowspan: { propertyName: 'rowSpan', appliesTo: ['td', 'th'] },\n\tsandbox: { appliesTo: ['iframe'] },\n\tscope: { appliesTo: ['th'] },\n\tscoped: { appliesTo: ['style'] },\n\tseamless: { appliesTo: ['iframe'] },\n\tselected: { appliesTo: ['option'] },\n\tshape: { appliesTo: ['a', 'area'] },\n\tsize: { appliesTo: ['input', 'select'] },\n\tsizes: { appliesTo: ['link', 'img', 'source'] },\n\tspan: { appliesTo: ['col', 'colgroup'] },\n\tspellcheck: {},\n\tsrc: {\n\t\tappliesTo: [\n\t\t\t'audio',\n\t\t\t'embed',\n\t\t\t'iframe',\n\t\t\t'img',\n\t\t\t'input',\n\t\t\t'script',\n\t\t\t'source',\n\t\t\t'track',\n\t\t\t'video',\n\t\t],\n\t},\n\tsrcdoc: { appliesTo: ['iframe'] },\n\tsrclang: { appliesTo: ['track'] },\n\tsrcset: { appliesTo: ['img'] },\n\tstart: { appliesTo: ['ol'] },\n\tstep: { appliesTo: ['input'] },\n\tstyle: { propertyName: 'style.cssText' },\n\tsummary: { appliesTo: ['table'] },\n\ttabindex: { propertyName: 'tabIndex' },\n\ttarget: { appliesTo: ['a', 'area', 'base', 'form'] },\n\ttitle: {},\n\ttype: {\n\t\tappliesTo: [\n\t\t\t'button',\n\t\t\t'command',\n\t\t\t'embed',\n\t\t\t'object',\n\t\t\t'script',\n\t\t\t'source',\n\t\t\t'style',\n\t\t\t'menu',\n\t\t],\n\t},\n\tusemap: { propertyName: 'useMap', appliesTo: ['img', 'input', 'object'] },\n\tvalue: {\n\t\tappliesTo: [\n\t\t\t'button',\n\t\t\t'option',\n\t\t\t'input',\n\t\t\t'li',\n\t\t\t'meter',\n\t\t\t'progress',\n\t\t\t'param',\n\t\t\t'select',\n\t\t\t'textarea',\n\t\t],\n\t},\n\tvolume: { appliesTo: ['audio', 'video'] },\n\twidth: {\n\t\tappliesTo: ['canvas', 'embed', 'iframe', 'img', 'input', 'object', 'video'],\n\t},\n\twrap: { appliesTo: ['textarea'] },\n};\n\nObject.keys(attributeLookup).forEach(name => {\n\tconst metadata = attributeLookup[name];\n\tif (!metadata.propertyName) metadata.propertyName = name;\n});\n\nfunction optimizeStyle(value: Node[]) {\n\tlet expectingKey = true;\n\tlet i = 0;\n\n\tconst props: { key: string, value: Node[] }[] = [];\n\tlet chunks = value.slice();\n\n\twhile (chunks.length) {\n\t\tconst chunk = chunks[0];\n\n\t\tif (chunk.type !== 'Text') return null;\n\n\t\tconst keyMatch = /^\\s*([\\w-]+):\\s*/.exec(chunk.data);\n\t\tif (!keyMatch) return null;\n\n\t\tconst key = keyMatch[1];\n\n\t\tconst offset = keyMatch.index + keyMatch[0].length;\n\t\tconst remainingData = chunk.data.slice(offset);\n\n\t\tif (remainingData) {\n\t\t\tchunks[0] = {\n\t\t\t\tstart: chunk.start + offset,\n\t\t\t\tend: chunk.end,\n\t\t\t\ttype: 'Text',\n\t\t\t\tdata: remainingData\n\t\t\t};\n\t\t} else {\n\t\t\tchunks.shift();\n\t\t}\n\n\t\tconst result = getStyleValue(chunks);\n\t\tif (!result) return null;\n\n\t\tprops.push({ key, value: result.value });\n\t\tchunks = result.chunks;\n\t}\n\n\treturn props;\n}\n\nfunction getStyleValue(chunks: Node[]) {\n\tconst value: Node[] = [];\n\n\tlet inUrl = false;\n\tlet quoteMark = null;\n\tlet escaped = false;\n\n\twhile (chunks.length) {\n\t\tconst chunk = chunks.shift();\n\n\t\tif (chunk.type === 'Text') {\n\t\t\tlet c = 0;\n\t\t\twhile (c < chunk.data.length) {\n\t\t\t\tconst char = chunk.data[c];\n\n\t\t\t\tif (escaped) {\n\t\t\t\t\tescaped = false;\n\t\t\t\t} else if (char === '\\\\') {\n\t\t\t\t\tescaped = true;\n\t\t\t\t} else if (char === quoteMark) {\n\t\t\t\t\tquoteMark === null;\n\t\t\t\t} else if (char === '\"' || char === \"'\") {\n\t\t\t\t\tquoteMark = char;\n\t\t\t\t} else if (char === ')' && inUrl) {\n\t\t\t\t\tinUrl = false;\n\t\t\t\t} else if (char === 'u' && chunk.data.slice(c, c + 4) === 'url(') {\n\t\t\t\t\tinUrl = true;\n\t\t\t\t} else if (char === ';' && !inUrl && !quoteMark) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tc += 1;\n\t\t\t}\n\n\t\t\tif (c > 0) {\n\t\t\t\tvalue.push({\n\t\t\t\t\ttype: 'Text',\n\t\t\t\t\tstart: chunk.start,\n\t\t\t\t\tend: chunk.start + c,\n\t\t\t\t\tdata: chunk.data.slice(0, c)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\twhile (/[;\\s]/.test(chunk.data[c])) c += 1;\n\t\t\tconst remainingData = chunk.data.slice(c);\n\n\t\t\tif (remainingData) {\n\t\t\t\tchunks.unshift({\n\t\t\t\t\tstart: chunk.start + c,\n\t\t\t\t\tend: chunk.end,\n\t\t\t\t\ttype: 'Text',\n\t\t\t\t\tdata: remainingData\n\t\t\t\t});\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tvalue.push(chunk);\n\t\t}\n\t}\n\n\treturn {\n\t\tchunks,\n\t\tvalue\n\t};\n}\n\nfunction isDynamic(value: Node[]) {\n\treturn value.length > 1 || value[0].type !== 'Text';\n}\n","import Node from './shared/Node';\nimport Element from './Element';\nimport getObject from '../../utils/getObject';\nimport getTailSnippet from '../../utils/getTailSnippet';\nimport flattenReference from '../../utils/flattenReference';\nimport Compiler from '../Compiler';\nimport Block from '../dom/Block';\nimport Expression from './shared/Expression';\nimport { dimensions } from '../../utils/patterns';\n\nconst readOnlyMediaAttributes = new Set([\n\t'duration',\n\t'buffered',\n\t'seekable',\n\t'played'\n]);\n\n// TODO a lot of this element-specific stuff should live in Element —\n// Binding should ideally be agnostic between Element and Component\n\nexport default class Binding extends Node {\n\tname: string;\n\tvalue: Expression;\n\tisContextual: boolean;\n\tusesContext: boolean;\n\tobj: string;\n\tprop: string;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.name = info.name;\n\t\tthis.value = new Expression(compiler, this, scope, info.value);\n\n\t\tlet obj;\n\t\tlet prop;\n\n\t\tconst { name } = getObject(this.value.node);\n\t\tthis.isContextual = scope.names.has(name);\n\n\t\tif (this.value.node.type === 'MemberExpression') {\n\t\t\tprop = `[✂${this.value.node.property.start}-${this.value.node.property.end}✂]`;\n\t\t\tif (!this.value.node.computed) prop = `'${prop}'`;\n\t\t\tobj = `[✂${this.value.node.object.start}-${this.value.node.object.end}✂]`;\n\n\t\t\tthis.usesContext = true;\n\t\t} else {\n\t\t\tobj = 'ctx';\n\t\t\tprop = `'${name}'`;\n\n\t\t\tthis.usesContext = scope.names.has(name);\n\t\t}\n\n\t\tthis.obj = obj;\n\t\tthis.prop = prop;\n\t}\n\n\tmunge(\n\t\tblock: Block\n\t) {\n\t\tconst node: Element = this.parent;\n\n\t\tconst needsLock = node.name !== 'input' || !/radio|checkbox|range|color/.test(node.getStaticAttributeValue('type'));\n\t\tconst isReadOnly = (\n\t\t\t(node.isMediaNode() && readOnlyMediaAttributes.has(this.name)) ||\n\t\t\tdimensions.test(this.name)\n\t\t);\n\n\t\tlet updateCondition: string;\n\n\t\tconst { name } = getObject(this.value.node);\n\t\tconst { snippet } = this.value;\n\n\t\t// special case: if you have e.g. `<input type=checkbox bind:checked=selected.done>`\n\t\t// and `selected` is an object chosen with a <select>, then when `checked` changes,\n\t\t// we need to tell the component to update all the values `selected` might be\n\t\t// pointing to\n\t\t// TODO should this happen in preprocess?\n\t\tconst dependencies = new Set(this.value.dependencies);\n\t\tthis.value.dependencies.forEach((prop: string) => {\n\t\t\tconst indirectDependencies = this.compiler.indirectDependencies.get(prop);\n\t\t\tif (indirectDependencies) {\n\t\t\t\tindirectDependencies.forEach(indirectDependency => {\n\t\t\t\t\tdependencies.add(indirectDependency);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// view to model\n\t\tconst valueFromDom = getValueFromDom(this.compiler, node, this);\n\t\tconst handler = getEventHandler(this, this.compiler, block, name, snippet, dependencies, valueFromDom);\n\n\t\t// model to view\n\t\tlet updateDom = getDomUpdater(node, this, snippet);\n\t\tlet initialUpdate = updateDom;\n\n\t\t// special cases\n\t\tif (this.name === 'group') {\n\t\t\tconst bindingGroup = getBindingGroup(this.compiler, this.value.node);\n\n\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t`#component._bindingGroups[${bindingGroup}].push(${node.var});`\n\t\t\t);\n\n\t\t\tblock.builders.destroy.addLine(\n\t\t\t\t`#component._bindingGroups[${bindingGroup}].splice(#component._bindingGroups[${bindingGroup}].indexOf(${node.var}), 1);`\n\t\t\t);\n\t\t}\n\n\t\tif (this.name === 'currentTime' || this.name === 'volume') {\n\t\t\tupdateCondition = `!isNaN(${snippet})`;\n\n\t\t\tif (this.name === 'currentTime') initialUpdate = null;\n\t\t}\n\n\t\tif (this.name === 'paused') {\n\t\t\t// this is necessary to prevent audio restarting by itself\n\t\t\tconst last = block.getUniqueName(`${node.var}_is_paused`);\n\t\t\tblock.addVariable(last, 'true');\n\n\t\t\tupdateCondition = `${last} !== (${last} = ${snippet})`;\n\t\t\tupdateDom = `${node.var}[${last} ? \"pause\" : \"play\"]();`;\n\t\t\tinitialUpdate = null;\n\t\t}\n\n\t\t// bind:offsetWidth and bind:offsetHeight\n\t\tif (dimensions.test(this.name)) {\n\t\t\tinitialUpdate = null;\n\t\t\tupdateDom = null;\n\t\t}\n\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tobject: name,\n\t\t\thandler,\n\t\t\tupdateDom,\n\t\t\tinitialUpdate,\n\t\t\tneedsLock: !isReadOnly && needsLock,\n\t\t\tupdateCondition,\n\t\t\tisReadOnlyMediaAttribute: this.isReadOnlyMediaAttribute()\n\t\t};\n\t}\n\n\tisReadOnlyMediaAttribute() {\n\t\treturn readOnlyMediaAttributes.has(this.name);\n\t}\n}\n\nfunction getDomUpdater(\n\tnode: Element,\n\tbinding: Binding,\n\tsnippet: string\n) {\n\tif (binding.isReadOnlyMediaAttribute()) {\n\t\treturn null;\n\t}\n\n\tif (node.name === 'select') {\n\t\treturn node.getStaticAttributeValue('multiple') === true ?\n\t\t\t`@selectOptions(${node.var}, ${snippet})` :\n\t\t\t`@selectOption(${node.var}, ${snippet})`;\n\t}\n\n\tif (binding.name === 'group') {\n\t\tconst type = node.getStaticAttributeValue('type');\n\n\t\tconst condition = type === 'checkbox'\n\t\t\t? `~${snippet}.indexOf(${node.var}.__value)`\n\t\t\t: `${node.var}.__value === ${snippet}`;\n\n\t\treturn `${node.var}.checked = ${condition};`\n\t}\n\n\treturn `${node.var}.${binding.name} = ${snippet};`;\n}\n\nfunction getBindingGroup(compiler: Compiler, value: Node) {\n\tconst { parts } = flattenReference(value); // TODO handle cases involving computed member expressions\n\tconst keypath = parts.join('.');\n\n\t// TODO handle contextual bindings — `keypath` should include unique ID of\n\t// each block that provides context\n\tlet index = compiler.bindingGroups.indexOf(keypath);\n\tif (index === -1) {\n\t\tindex = compiler.bindingGroups.length;\n\t\tcompiler.bindingGroups.push(keypath);\n\t}\n\n\treturn index;\n}\n\nfunction getEventHandler(\n\tbinding: Binding,\n\tcompiler: Compiler,\n\tblock: Block,\n\tname: string,\n\tsnippet: string,\n\tdependencies: string[],\n\tvalue: string,\n\tisContextual: boolean\n) {\n\tconst storeDependencies = [...dependencies].filter(prop => prop[0] === '$').map(prop => prop.slice(1));\n\tdependencies = [...dependencies].filter(prop => prop[0] !== '$');\n\n\tif (binding.isContextual) {\n\t\tconst tail = binding.value.node.type === 'MemberExpression'\n\t\t\t? getTailSnippet(binding.value.node)\n\t\t\t: '';\n\n\t\tconst head = block.bindings.get(name);\n\n\t\treturn {\n\t\t\tusesContext: true,\n\t\t\tusesState: true,\n\t\t\tusesStore: storeDependencies.length > 0,\n\t\t\tmutation: `${head}${tail} = ${value};`,\n\t\t\tprops: dependencies.map(prop => `${prop}: ctx.${prop}`),\n\t\t\tstoreProps: storeDependencies.map(prop => `${prop}: $.${prop}`)\n\t\t};\n\t}\n\n\tif (binding.value.node.type === 'MemberExpression') {\n\t\t// This is a little confusing, and should probably be tidied up\n\t\t// at some point. It addresses a tricky bug (#893), wherein\n\t\t// Svelte tries to `set()` a computed property, which throws an\n\t\t// error in dev mode. a) it's possible that we should be\n\t\t// replacing computations with *their* dependencies, and b)\n\t\t// we should probably populate `compiler.target.readonly` sooner so\n\t\t// that we don't have to do the `.some()` here\n\t\tdependencies = dependencies.filter(prop => !compiler.computations.some(computation => computation.key === prop));\n\n\t\treturn {\n\t\t\tusesContext: false,\n\t\t\tusesState: true,\n\t\t\tusesStore: storeDependencies.length > 0,\n\t\t\tmutation: `${snippet} = ${value}`,\n\t\t\tprops: dependencies.map((prop: string) => `${prop}: ctx.${prop}`),\n\t\t\tstoreProps: storeDependencies.map(prop => `${prop}: $.${prop}`)\n\t\t};\n\t}\n\n\tlet props;\n\tlet storeProps;\n\n\tif (name[0] === '$') {\n\t\tprops = [];\n\t\tstoreProps = [`${name.slice(1)}: ${value}`];\n\t} else {\n\t\tprops = [`${name}: ${value}`];\n\t\tstoreProps = [];\n\t}\n\n\treturn {\n\t\tusesContext: false,\n\t\tusesState: false,\n\t\tusesStore: false,\n\t\tmutation: null,\n\t\tprops,\n\t\tstoreProps\n\t};\n}\n\nfunction getValueFromDom(\n\tcompiler: Compiler,\n\tnode: Element,\n\tbinding: Node\n) {\n\t// <select bind:value='selected>\n\tif (node.name === 'select') {\n\t\treturn node.getStaticAttributeValue('multiple') === true ?\n\t\t\t`@selectMultipleValue(${node.var})` :\n\t\t\t`@selectValue(${node.var})`;\n\t}\n\n\tconst type = node.getStaticAttributeValue('type');\n\n\t// <input type='checkbox' bind:group='foo'>\n\tif (binding.name === 'group') {\n\t\tconst bindingGroup = getBindingGroup(compiler, binding.value.node);\n\t\tif (type === 'checkbox') {\n\t\t\treturn `@getBindingGroupValue(#component._bindingGroups[${bindingGroup}])`;\n\t\t}\n\n\t\treturn `${node.var}.__value`;\n\t}\n\n\t// <input type='range|number' bind:value>\n\tif (type === 'range' || type === 'number') {\n\t\treturn `@toNumber(${node.var}.${binding.name})`;\n\t}\n\n\tif ((binding.name === 'buffered' || binding.name === 'seekable' || binding.name === 'played')) {\n\t\treturn `@timeRangesToArray(${node.var}.${binding.name})`\n\t}\n\n\t// everything else\n\treturn `${node.var}.${binding.name}`;\n}\n\nfunction isComputed(node: Node) {\n\twhile (node.type === 'MemberExpression') {\n\t\tif (node.computed) return true;\n\t\tnode = node.object;\n\t}\n\n\treturn false;\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\nimport addToSet from '../../utils/addToSet';\nimport flattenReference from '../../utils/flattenReference';\nimport validCalleeObjects from '../../utils/validCalleeObjects';\n\nexport default class EventHandler extends Node {\n\tname: string;\n\tdependencies: Set<string>;\n\texpression: Node;\n\tcallee: any; // TODO\n\n\tusesComponent: boolean;\n\tusesContext: boolean;\n\tisCustomEvent: boolean;\n\tshouldHoist: boolean;\n\n\tinsertionPoint: number;\n\targs: Expression[];\n\tsnippet: string;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.name = info.name;\n\t\tthis.dependencies = new Set();\n\n\t\tif (info.expression) {\n\t\t\tthis.callee = flattenReference(info.expression.callee);\n\t\t\tthis.insertionPoint = info.expression.start;\n\n\t\t\tthis.usesComponent = !validCalleeObjects.has(this.callee.name);\n\t\t\tthis.usesContext = false;\n\n\t\t\tthis.args = info.expression.arguments.map(param => {\n\t\t\t\tconst expression = new Expression(compiler, this, scope, param);\n\t\t\t\taddToSet(this.dependencies, expression.dependencies);\n\t\t\t\tif (expression.usesContext) this.usesContext = true;\n\t\t\t\treturn expression;\n\t\t\t});\n\n\t\t\tthis.snippet = `[✂${info.expression.start}-${info.expression.end}✂];`;\n\t\t} else {\n\t\t\tthis.callee = null;\n\t\t\tthis.insertionPoint = null;\n\n\t\t\tthis.args = null;\n\t\t\tthis.usesComponent = true;\n\t\t\tthis.usesContext = false;\n\n\t\t\tthis.snippet = null; // TODO handle shorthand events here?\n\t\t}\n\n\t\tthis.isCustomEvent = compiler.events.has(this.name);\n\t\tthis.shouldHoist = !this.isCustomEvent && parent.hasAncestor('EachBlock');\n\t}\n\n\trender(compiler, block, hoisted) { // TODO hoist more event handlers\n\t\tif (this.insertionPoint === null) return; // TODO handle shorthand events here?\n\n\t\tif (!validCalleeObjects.has(this.callee.name)) {\n\t\t\tconst component = hoisted ? `component` : block.alias(`component`);\n\n\t\t\t// allow event.stopPropagation(), this.select() etc\n\t\t\t// TODO verify that it's a valid callee (i.e. built-in or declared method)\n\t\t\tif (this.callee.name[0] === '$' && !compiler.methods.has(this.callee.name)) {\n\t\t\t\tcompiler.code.overwrite(\n\t\t\t\t\tthis.insertionPoint,\n\t\t\t\t\tthis.insertionPoint + 1,\n\t\t\t\t\t`${component}.store.`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcompiler.code.prependRight(\n\t\t\t\t\tthis.insertionPoint,\n\t\t\t\t\t`${component}.`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isCustomEvent) {\n\t\t\tthis.args.forEach(arg => {\n\t\t\t\targ.overwriteThis(this.parent.var);\n\t\t\t});\n\n\t\t\tif (this.callee && this.callee.name === 'this') {\n\t\t\t\tconst node = this.callee.nodes[0];\n\t\t\t\tcompiler.code.overwrite(node.start, node.end, this.parent.var, {\n\t\t\t\t\tstoreName: true,\n\t\t\t\t\tcontentOnly: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}","import deindent from '../../utils/deindent';\nimport flattenReference from '../../utils/flattenReference';\nimport validCalleeObjects from '../../utils/validCalleeObjects';\nimport stringifyProps from '../../utils/stringifyProps';\nimport CodeBuilder from '../../utils/CodeBuilder';\nimport getTailSnippet from '../../utils/getTailSnippet';\nimport getObject from '../../utils/getObject';\nimport { quoteNameIfNecessary } from '../../utils/quoteIfNecessary';\nimport { escape, escapeTemplate, stringify } from '../../utils/stringify';\nimport Node from './shared/Node';\nimport Block from '../dom/Block';\nimport Attribute from './Attribute';\nimport usesThisOrArguments from '../../validate/js/utils/usesThisOrArguments';\nimport mapChildren from './shared/mapChildren';\nimport Binding from './Binding';\nimport EventHandler from './EventHandler';\nimport Expression from './shared/Expression';\nimport { AppendTarget } from '../../interfaces';\nimport addToSet from '../../utils/addToSet';\n\nexport default class Component extends Node {\n\ttype: 'Component';\n\tname: string;\n\texpression: Expression;\n\tattributes: Attribute[];\n\tbindings: Binding[];\n\thandlers: EventHandler[];\n\tchildren: Node[];\n\tref: string;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tcompiler.hasComponents = true;\n\n\t\tthis.name = info.name;\n\n\t\tthis.expression = this.name === 'svelte:component'\n\t\t\t? new Expression(compiler, this, scope, info.expression)\n\t\t\t: null;\n\n\t\tthis.attributes = [];\n\t\tthis.bindings = [];\n\t\tthis.handlers = [];\n\n\t\tinfo.attributes.forEach(node => {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase 'Attribute':\n\t\t\t\tcase 'Spread':\n\t\t\t\t\tthis.attributes.push(new Attribute(compiler, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Binding':\n\t\t\t\t\tthis.bindings.push(new Binding(compiler, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EventHandler':\n\t\t\t\t\tthis.handlers.push(new EventHandler(compiler, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Ref':\n\t\t\t\t\t// TODO catch this in validation\n\t\t\t\t\tif (this.ref) throw new Error(`Duplicate refs`);\n\n\t\t\t\t\tcompiler.usesRefs = true\n\t\t\t\t\tthis.ref = node.name;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Not implemented: ${node.type}`);\n\t\t\t}\n\t\t});\n\n\t\tthis.children = mapChildren(compiler, this, scope, info.children);\n\t}\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\tthis.cannotUseInnerHTML();\n\n\t\tthis.attributes.forEach(attr => {\n\t\t\tblock.addDependencies(attr.dependencies);\n\t\t});\n\n\t\tthis.bindings.forEach(binding => {\n\t\t\tblock.addDependencies(binding.value.dependencies);\n\t\t});\n\n\t\tthis.handlers.forEach(handler => {\n\t\t\tblock.addDependencies(handler.dependencies);\n\t\t});\n\n\t\tthis.var = block.getUniqueName(\n\t\t\t(\n\t\t\t\tthis.name === 'svelte:self' ? this.compiler.name :\n\t\t\t\tthis.name === 'svelte:component' ? 'switch_instance' :\n\t\t\t\tthis.name\n\t\t\t).toLowerCase()\n\t\t);\n\n\t\tif (this.children.length) {\n\t\t\tthis._slots = new Set(['default']);\n\n\t\t\tthis.children.forEach(child => {\n\t\t\t\tchild.init(block, stripWhitespace, nextSibling);\n\t\t\t});\n\t\t}\n\n\t\tif (this.compiler.options.nestedTransitions) {\n\t\t\tblock.addOutro();\n\t\t}\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst { compiler } = this;\n\n\t\tconst name = this.var;\n\n\t\tconst componentInitProperties = [`root: #component.root`];\n\n\t\tif (this.children.length > 0) {\n\t\t\tconst slots = Array.from(this._slots).map(name => `${quoteNameIfNecessary(name)}: @createFragment()`);\n\t\t\tcomponentInitProperties.push(`slots: { ${slots.join(', ')} }`);\n\n\t\t\tthis.children.forEach((child: Node) => {\n\t\t\t\tchild.build(block, `${this.var}._slotted.default`, 'nodes');\n\t\t\t});\n\t\t}\n\n\t\tconst statements: string[] = [];\n\n\t\tconst name_initial_data = block.getUniqueName(`${name}_initial_data`);\n\t\tconst name_changes = block.getUniqueName(`${name}_changes`);\n\t\tlet name_updating: string;\n\t\tlet beforecreate: string = null;\n\n\t\tconst updates: string[] = [];\n\n\t\tconst usesSpread = !!this.attributes.find(a => a.isSpread);\n\n\t\tconst attributeObject = usesSpread\n\t\t\t? '{}'\n\t\t\t: stringifyProps(\n\t\t\t\tthis.attributes.map(attr => `${attr.name}: ${attr.getValue()}`)\n\t\t\t);\n\n\t\tif (this.attributes.length || this.bindings.length) {\n\t\t\tcomponentInitProperties.push(`data: ${name_initial_data}`);\n\t\t}\n\n\t\tif (!usesSpread && (this.attributes.filter(a => a.isDynamic).length || this.bindings.length)) {\n\t\t\tupdates.push(`var ${name_changes} = {};`);\n\t\t}\n\n\t\tif (this.attributes.length) {\n\t\t\tif (usesSpread) {\n\t\t\t\tconst levels = block.getUniqueName(`${this.var}_spread_levels`);\n\n\t\t\t\tconst initialProps = [];\n\t\t\t\tconst changes = [];\n\n\t\t\t\tconst allDependencies = new Set();\n\n\t\t\t\tthis.attributes.forEach(attr => {\n\t\t\t\t\taddToSet(allDependencies, attr.dependencies);\n\t\t\t\t});\n\n\t\t\t\tthis.attributes.forEach(attr => {\n\t\t\t\t\tconst { name, dependencies } = attr;\n\n\t\t\t\t\tconst condition = dependencies.size > 0 && (dependencies.size !== allDependencies.size)\n\t\t\t\t\t\t? [...dependencies].map(d => `changed.${d}`).join(' || ')\n\t\t\t\t\t\t: null;\n\n\t\t\t\t\tif (attr.isSpread) {\n\t\t\t\t\t\tconst value = attr.expression.snippet;\n\t\t\t\t\t\tinitialProps.push(value);\n\n\t\t\t\t\t\tchanges.push(condition ? `${condition} && ${value}` : value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst obj = `{ ${quoteNameIfNecessary(name)}: ${attr.getValue()} }`;\n\t\t\t\t\t\tinitialProps.push(obj);\n\n\t\t\t\t\t\tchanges.push(condition ? `${condition} && ${obj}` : obj);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\t\tvar ${levels} = [\n\t\t\t\t\t\t${initialProps.join(',\\n')}\n\t\t\t\t\t];\n\t\t\t\t`);\n\n\t\t\t\tstatements.push(deindent`\n\t\t\t\t\tfor (var #i = 0; #i < ${levels}.length; #i += 1) {\n\t\t\t\t\t\t${name_initial_data} = @assign(${name_initial_data}, ${levels}[#i]);\n\t\t\t\t\t}\n\t\t\t\t`);\n\n\t\t\t\tconst conditions = [...allDependencies].map(dep => `changed.${dep}`).join(' || ');\n\n\t\t\t\tupdates.push(deindent`\n\t\t\t\t\tvar ${name_changes} = ${allDependencies.size === 1 ? `${conditions}` : `(${conditions})`} ? @getSpreadUpdate(${levels}, [\n\t\t\t\t\t\t${changes.join(',\\n')}\n\t\t\t\t\t]) : {};\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tthis.attributes\n\t\t\t\t\t.filter((attribute: Attribute) => attribute.isDynamic)\n\t\t\t\t\t.forEach((attribute: Attribute) => {\n\t\t\t\t\t\tif (attribute.dependencies.size > 0) {\n\t\t\t\t\t\t\tupdates.push(deindent`\n\t\t\t\t\t\t\t\tif (${[...attribute.dependencies]\n\t\t\t\t\t\t\t\t\t.map(dependency => `changed.${dependency}`)\n\t\t\t\t\t\t\t\t\t.join(' || ')}) ${name_changes}.${attribute.name} = ${attribute.getValue()};\n\t\t\t\t\t\t\t`);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\n\t\tif (this.bindings.length) {\n\t\t\tcompiler.target.hasComplexBindings = true;\n\n\t\t\tname_updating = block.alias(`${name}_updating`);\n\t\t\tblock.addVariable(name_updating, '{}');\n\n\t\t\tlet hasLocalBindings = false;\n\t\t\tlet hasStoreBindings = false;\n\n\t\t\tconst builder = new CodeBuilder();\n\n\t\t\tthis.bindings.forEach((binding: Binding) => {\n\t\t\t\tlet { name: key } = getObject(binding.value.node);\n\n\t\t\t\tlet setFromChild;\n\n\t\t\t\tif (binding.isContextual) {\n\t\t\t\t\tconst computed = isComputed(binding.value.node);\n\t\t\t\t\tconst tail = binding.value.node.type === 'MemberExpression' ? getTailSnippet(binding.value.node) : '';\n\n\t\t\t\t\tconst head = block.bindings.get(key);\n\n\t\t\t\t\tconst lhs = binding.value.node.type === 'MemberExpression'\n\t\t\t\t\t\t? binding.value.snippet\n\t\t\t\t\t\t: `${head}${tail} = childState.${binding.name}`;\n\n\t\t\t\t\tsetFromChild = deindent`\n\t\t\t\t\t\t${lhs} = childState.${binding.name};\n\n\t\t\t\t\t\t${[...binding.value.dependencies]\n\t\t\t\t\t\t\t.map((name: string) => {\n\t\t\t\t\t\t\t\tconst isStoreProp = name[0] === '$';\n\t\t\t\t\t\t\t\tconst prop = isStoreProp ? name.slice(1) : name;\n\t\t\t\t\t\t\t\tconst newState = isStoreProp ? 'newStoreState' : 'newState';\n\n\t\t\t\t\t\t\t\tif (isStoreProp) hasStoreBindings = true;\n\t\t\t\t\t\t\t\telse hasLocalBindings = true;\n\n\t\t\t\t\t\t\t\treturn `${newState}.${prop} = ctx.${name};`;\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t`;\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tconst isStoreProp = key[0] === '$';\n\t\t\t\t\tconst prop = isStoreProp ? key.slice(1) : key;\n\t\t\t\t\tconst newState = isStoreProp ? 'newStoreState' : 'newState';\n\n\t\t\t\t\tif (isStoreProp) hasStoreBindings = true;\n\t\t\t\t\telse hasLocalBindings = true;\n\n\t\t\t\t\tif (binding.value.node.type === 'MemberExpression') {\n\t\t\t\t\t\tsetFromChild = deindent`\n\t\t\t\t\t\t\t${binding.value.snippet} = childState.${binding.name};\n\t\t\t\t\t\t\t${newState}.${prop} = ctx.${key};\n\t\t\t\t\t\t`;\n\t\t\t\t\t}\n\n\t\t\t\t\telse {\n\t\t\t\t\t\tsetFromChild = `${newState}.${prop} = childState.${binding.name};`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tstatements.push(deindent`\n\t\t\t\t\tif (${binding.value.snippet} !== void 0) {\n\t\t\t\t\t\t${name_initial_data}.${binding.name} = ${binding.value.snippet};\n\t\t\t\t\t\t${name_updating}.${binding.name} = true;\n\t\t\t\t\t}`\n\t\t\t\t);\n\n\t\t\t\tbuilder.addConditional(\n\t\t\t\t\t`!${name_updating}.${binding.name} && changed.${binding.name}`,\n\t\t\t\t\tsetFromChild\n\t\t\t\t);\n\n\t\t\t\tupdates.push(deindent`\n\t\t\t\t\tif (!${name_updating}.${binding.name} && ${[...binding.value.dependencies].map((dependency: string) => `changed.${dependency}`).join(' || ')}) {\n\t\t\t\t\t\t${name_changes}.${binding.name} = ${binding.value.snippet};\n\t\t\t\t\t\t${name_updating}.${binding.name} = ${binding.value.snippet} !== void 0;\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t});\n\n\t\t\tblock.maintainContext = true; // TODO put this somewhere more logical\n\n\t\t\tconst initialisers = [\n\t\t\t\thasLocalBindings && 'newState = {}',\n\t\t\t\thasStoreBindings && 'newStoreState = {}',\n\t\t\t].filter(Boolean).join(', ');\n\n\t\t\t// TODO use component.on('state', ...) instead of _bind\n\t\t\tcomponentInitProperties.push(deindent`\n\t\t\t\t_bind(changed, childState) {\n\t\t\t\t\tvar ${initialisers};\n\t\t\t\t\t${builder}\n\t\t\t\t\t${hasStoreBindings && `#component.store.set(newStoreState);`}\n\t\t\t\t\t${hasLocalBindings && `#component._set(newState);`}\n\t\t\t\t\t${name_updating} = {};\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tbeforecreate = deindent`\n\t\t\t\t#component.root._beforecreate.push(() => {\n\t\t\t\t\t${name}._bind({ ${this.bindings.map(b => `${b.name}: 1`).join(', ')} }, ${name}.get());\n\t\t\t\t});\n\t\t\t`;\n\t\t}\n\n\t\tthis.handlers.forEach(handler => {\n\t\t\thandler.var = block.getUniqueName(`${this.var}_${handler.name}`); // TODO this is hacky\n\t\t\thandler.render(compiler, block, false); // TODO hoist when possible\n\t\t\tif (handler.usesContext) block.maintainContext = true; // TODO is there a better place to put this?\n\t\t});\n\n\t\tif (this.name === 'svelte:component') {\n\t\t\tconst switch_value = block.getUniqueName('switch_value');\n\t\t\tconst switch_props = block.getUniqueName('switch_props');\n\n\t\t\tconst { dependencies, snippet } = this.expression;\n\n\t\t\tconst anchor = this.getOrCreateAnchor(block, parentNode, parentNodes);\n\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\tvar ${switch_value} = ${snippet};\n\n\t\t\t\tfunction ${switch_props}(ctx) {\n\t\t\t\t\t${(this.attributes.length || this.bindings.length) && deindent`\n\t\t\t\t\tvar ${name_initial_data} = ${attributeObject};`}\n\t\t\t\t\t${statements}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t${componentInitProperties.join(',\\n')}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (${switch_value}) {\n\t\t\t\t\tvar ${name} = new ${switch_value}(${switch_props}(ctx));\n\n\t\t\t\t\t${beforecreate}\n\t\t\t\t}\n\n\t\t\t\t${this.handlers.map(handler => deindent`\n\t\t\t\t\tfunction ${handler.var}(event) {\n\t\t\t\t\t\t${handler.snippet || `#component.fire(\"${handler.name}\", event);`}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (${name}) ${name}.on(\"${handler.name}\", ${handler.var});\n\t\t\t\t`)}\n\t\t\t`);\n\n\t\t\tblock.builders.create.addLine(\n\t\t\t\t`if (${name}) ${name}._fragment.c();`\n\t\t\t);\n\n\t\t\tif (parentNodes) {\n\t\t\t\tblock.builders.claim.addLine(\n\t\t\t\t\t`if (${name}) ${name}._fragment.l(${parentNodes});`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tblock.builders.mount.addBlock(deindent`\n\t\t\t\tif (${name}) {\n\t\t\t\t\t${name}._mount(${parentNode || '#target'}, ${parentNode ? 'null' : 'anchor'});\n\t\t\t\t\t${this.ref && `#component.refs.${this.ref} = ${name};`}\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tconst updateMountNode = this.getUpdateMountNode(anchor);\n\n\t\t\tif (updates.length) {\n\t\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\t\t${updates}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\tif (${switch_value} !== (${switch_value} = ${snippet})) {\n\t\t\t\t\tif (${name}) ${name}.destroy();\n\n\t\t\t\t\tif (${switch_value}) {\n\t\t\t\t\t\t${name} = new ${switch_value}(${switch_props}(ctx));\n\n\t\t\t\t\t\t${this.bindings.length > 0 && deindent`\n\t\t\t\t\t\t#component.root._beforecreate.push(() => {\n\t\t\t\t\t\t\tconst changed = {};\n\t\t\t\t\t\t\t${this.bindings.map(binding => deindent`\n\t\t\t\t\t\t\tif (${binding.value.snippet} === void 0) changed.${binding.name} = 1;`)}\n\t\t\t\t\t\t\t${name}._bind(changed, ${name}.get());\n\t\t\t\t\t\t});`}\n\t\t\t\t\t\t${name}._fragment.c();\n\n\t\t\t\t\t\t${this.children.map(child => child.remount(name))}\n\t\t\t\t\t\t${name}._mount(${updateMountNode}, ${anchor});\n\n\t\t\t\t\t\t${this.handlers.map(handler => deindent`\n\t\t\t\t\t\t\t${name}.on(\"${handler.name}\", ${handler.var});\n\t\t\t\t\t\t`)}\n\n\t\t\t\t\t\t${this.ref && `#component.refs.${this.ref} = ${name};`}\n\t\t\t\t\t}\n\n\t\t\t\t\t${this.ref && deindent`\n\t\t\t\t\t\telse if (#component.refs.${this.ref} === ${name}) {\n\t\t\t\t\t\t\t#component.refs.${this.ref} = null;\n\t\t\t\t\t\t}`}\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tif (updates.length) {\n\t\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\t\telse if (${switch_value}) {\n\t\t\t\t\t\t${name}._set(${name_changes});\n\t\t\t\t\t\t${this.bindings.length && `${name_updating} = {};`}\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.builders.destroy.addLine(`if (${name}) ${name}.destroy(${parentNode ? '' : 'detach'});`);\n\t\t} else {\n\t\t\tconst expression = this.name === 'svelte:self'\n\t\t\t\t? compiler.name\n\t\t\t\t: `%components-${this.name}`;\n\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\t${(this.attributes.length || this.bindings.length) && deindent`\n\t\t\t\tvar ${name_initial_data} = ${attributeObject};`}\n\t\t\t\t${statements}\n\t\t\t\tvar ${name} = new ${expression}({\n\t\t\t\t\t${componentInitProperties.join(',\\n')}\n\t\t\t\t});\n\n\t\t\t\t${beforecreate}\n\n\t\t\t\t${this.handlers.map(handler => deindent`\n\t\t\t\t\t${name}.on(\"${handler.name}\", function(event) {\n\t\t\t\t\t\t${handler.snippet || `#component.fire(\"${handler.name}\", event);`}\n\t\t\t\t\t});\n\t\t\t\t`)}\n\n\t\t\t\t${this.ref && `#component.refs.${this.ref} = ${name};`}\n\t\t\t`);\n\n\t\t\tblock.builders.create.addLine(`${name}._fragment.c();`);\n\n\t\t\tif (parentNodes) {\n\t\t\t\tblock.builders.claim.addLine(\n\t\t\t\t\t`${name}._fragment.l(${parentNodes});`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tblock.builders.mount.addLine(\n\t\t\t\t`${name}._mount(${parentNode || '#target'}, ${parentNode ? 'null' : 'anchor'});`\n\t\t\t);\n\n\t\t\tif (updates.length) {\n\t\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\t\t${updates}\n\t\t\t\t\t${name}._set(${name_changes});\n\t\t\t\t\t${this.bindings.length && `${name_updating} = {};`}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.builders.destroy.addLine(deindent`\n\t\t\t\t${name}.destroy(${parentNode ? '' : 'detach'});\n\t\t\t\t${this.ref && `if (#component.refs.${this.ref} === ${name}) #component.refs.${this.ref} = null;`}\n\t\t\t`);\n\t\t}\n\n\t\tif (this.compiler.options.nestedTransitions) {\n\t\t\tblock.builders.outro.addLine(\n\t\t\t\t`${name}._fragment.o(#outrocallback);`\n\t\t\t);\n\t\t}\n\t}\n\n\tremount(name: string) {\n\t\treturn `${this.var}._mount(${name}._slotted.default, null);`;\n\t}\n\n\tssr() {\n\t\tfunction stringifyAttribute(chunk: Node) {\n\t\t\tif (chunk.type === 'Text') {\n\t\t\t\treturn escapeTemplate(escape(chunk.data));\n\t\t\t}\n\n\t\t\treturn '${@escape( ' + chunk.snippet + ')}';\n\t\t}\n\n\t\tconst bindingProps = this.bindings.map(binding => {\n\t\t\tconst { name } = getObject(binding.value.node);\n\t\t\tconst tail = binding.value.node.type === 'MemberExpression'\n\t\t\t\t? getTailSnippet(binding.value.node)\n\t\t\t\t: '';\n\n\t\t\treturn `${binding.name}: ctx.${name}${tail}`;\n\t\t});\n\n\t\tfunction getAttributeValue(attribute) {\n\t\t\tif (attribute.isTrue) return `true`;\n\t\t\tif (attribute.chunks.length === 0) return `''`;\n\n\t\t\tif (attribute.chunks.length === 1) {\n\t\t\t\tconst chunk = attribute.chunks[0];\n\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\treturn stringify(chunk.data);\n\t\t\t\t}\n\n\t\t\t\treturn chunk.snippet;\n\t\t\t}\n\n\t\t\treturn '`' + attribute.chunks.map(stringifyAttribute).join('') + '`';\n\t\t}\n\n\t\tconst usesSpread = this.attributes.find(attr => attr.isSpread);\n\n\t\tconst props = usesSpread\n\t\t\t? `Object.assign(${\n\t\t\t\tthis.attributes\n\t\t\t\t\t.map(attribute => {\n\t\t\t\t\t\tif (attribute.isSpread) {\n\t\t\t\t\t\t\treturn attribute.expression.snippet;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn `{ ${attribute.name}: ${getAttributeValue(attribute)} }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.concat(bindingProps.map(p => `{ ${p} }`))\n\t\t\t\t\t.join(', ')\n\t\t\t})`\n\t\t\t: `{ ${this.attributes\n\t\t\t\t.map(attribute => `${attribute.name}: ${getAttributeValue(attribute)}`)\n\t\t\t\t.concat(bindingProps)\n\t\t\t\t.join(', ')} }`;\n\n\t\tconst isDynamicComponent = this.name === 'svelte:component';\n\n\t\tconst expression = (\n\t\t\tthis.name === 'svelte:self' ? this.compiler.name :\n\t\t\t(isDynamicComponent ? `((${this.expression.snippet}) || @missingComponent)` :\n\t\t\t`%components-${this.name}`)\n\t\t);\n\n\t\tthis.bindings.forEach(binding => {\n\t\t\tconst conditions = [];\n\n\t\t\tlet node = this;\n\t\t\twhile (node = node.parent) {\n\t\t\t\tif (node.type === 'IfBlock') {\n\t\t\t\t\t// TODO handle contextual bindings...\n\t\t\t\t\tconditions.push(`(${node.expression.snippet})`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconditions.push(`!('${binding.name}' in ctx)`);\n\n\t\t\tconst { name } = getObject(binding.value.node);\n\n\t\t\tthis.compiler.target.bindings.push(deindent`\n\t\t\t\tif (${conditions.reverse().join('&&')}) {\n\t\t\t\t\ttmp = ${expression}.data();\n\t\t\t\t\tif ('${name}' in tmp) {\n\t\t\t\t\t\tctx.${binding.name} = tmp.${name};\n\t\t\t\t\t\tsettled = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`);\n\t\t});\n\n\t\tlet open = `\\${${expression}._render(__result, ${props}`;\n\n\t\tconst options = [];\n\t\toptions.push(`store: options.store`);\n\n\t\tif (this.children.length) {\n\t\t\tconst appendTarget: AppendTarget = {\n\t\t\t\tslots: { default: '' },\n\t\t\t\tslotStack: ['default']\n\t\t\t};\n\n\t\t\tthis.compiler.target.appendTargets.push(appendTarget);\n\n\t\t\tthis.children.forEach((child: Node) => {\n\t\t\t\tchild.ssr();\n\t\t\t});\n\n\t\t\tconst slotted = Object.keys(appendTarget.slots)\n\t\t\t\t.map(name => `${quoteNameIfNecessary(name)}: () => \\`${appendTarget.slots[name]}\\``)\n\t\t\t\t.join(', ');\n\n\t\t\toptions.push(`slotted: { ${slotted} }`);\n\n\t\t\tthis.compiler.target.appendTargets.pop();\n\t\t}\n\n\t\tif (options.length) {\n\t\t\topen += `, { ${options.join(', ')} }`;\n\t\t}\n\n\t\tthis.compiler.target.append(open);\n\t\tthis.compiler.target.append(')}');\n\t}\n}\n\nfunction isComputed(node: Node) {\n\twhile (node.type === 'MemberExpression') {\n\t\tif (node.computed) return true;\n\t\tnode = node.object;\n\t}\n\n\treturn false;\n}\n","import Node from './shared/Node';\nimport Block from '../dom/Block';\nimport mapChildren from './shared/mapChildren';\n\nexport default class ElseBlock extends Node {\n\ttype: 'ElseBlock';\n\tchildren: Node[];\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.children = mapChildren(compiler, this, scope, info.children);\n\t}\n}","import deindent from '../../utils/deindent';\nimport Node from './shared/Node';\nimport ElseBlock from './ElseBlock';\nimport Block from '../dom/Block';\nimport createDebuggingComment from '../../utils/createDebuggingComment';\nimport Expression from './shared/Expression';\nimport mapChildren from './shared/mapChildren';\nimport TemplateScope from './shared/TemplateScope';\nimport unpackDestructuring from '../../utils/unpackDestructuring';\n\nexport default class EachBlock extends Node {\n\ttype: 'EachBlock';\n\n\tblock: Block;\n\texpression: Expression;\n\n\titerations: string;\n\tindex: string;\n\tcontext: string;\n\tkey: Expression;\n\tscope: TemplateScope;\n\tcontexts: Array<{ name: string, tail: string }>;\n\n\tchildren: Node[];\n\telse?: ElseBlock;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.expression = new Expression(compiler, this, scope, info.expression);\n\t\tthis.context = info.context.name || 'each'; // TODO this is used to facilitate binding; currently fails with destructuring\n\t\tthis.index = info.index;\n\n\t\tthis.scope = scope.child();\n\n\t\tthis.contexts = [];\n\t\tunpackDestructuring(this.contexts, info.context, '');\n\n\t\tthis.contexts.forEach(context => {\n\t\t\tthis.scope.add(context.key.name, this.expression.dependencies);\n\t\t});\n\n\t\tthis.key = info.key\n\t\t\t? new Expression(compiler, this, this.scope, info.key)\n\t\t\t: null;\n\n\t\tif (this.index) {\n\t\t\t// index can only change if this is a keyed each block\n\t\t\tconst dependencies = this.key ? this.expression.dependencies : [];\n\t\t\tthis.scope.add(this.index, dependencies);\n\t\t}\n\n\t\tthis.children = mapChildren(compiler, this, this.scope, info.children);\n\n\t\tthis.else = info.else\n\t\t\t? new ElseBlock(compiler, this, this.scope, info.else)\n\t\t\t: null;\n\t}\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\tthis.cannotUseInnerHTML();\n\n\t\tthis.var = block.getUniqueName(`each`);\n\t\tthis.iterations = block.getUniqueName(`${this.var}_blocks`);\n\t\tthis.get_each_context = this.compiler.getUniqueName(`get_${this.var}_context`);\n\n\t\tconst { dependencies } = this.expression;\n\t\tblock.addDependencies(dependencies);\n\n\t\tthis.block = block.child({\n\t\t\tcomment: createDebuggingComment(this, this.compiler),\n\t\t\tname: this.compiler.getUniqueName('create_each_block'),\n\t\t\tkey: this.key,\n\n\t\t\tbindings: new Map(block.bindings)\n\t\t});\n\n\t\tthis.each_block_value = this.compiler.getUniqueName('each_value');\n\n\t\tconst indexName = this.index || this.compiler.getUniqueName(`${this.context}_index`);\n\n\t\tthis.contexts.forEach(prop => {\n\t\t\tthis.block.bindings.set(prop.key.name, `ctx.${this.each_block_value}[ctx.${indexName}]${prop.tail}`);\n\t\t});\n\n\t\tif (this.index) {\n\t\t\tthis.block.getUniqueName(this.index); // this prevents name collisions (#1254)\n\t\t}\n\n\t\tthis.contextProps = this.contexts.map(prop => `child_ctx.${prop.key.name} = list[i]${prop.tail};`);\n\n\t\t// TODO only add these if necessary\n\t\tthis.contextProps.push(\n\t\t\t`child_ctx.${this.each_block_value} = list;`,\n\t\t\t`child_ctx.${indexName} = i;`\n\t\t);\n\n\t\tthis.compiler.target.blocks.push(this.block);\n\t\tthis.initChildren(this.block, stripWhitespace, nextSibling);\n\t\tblock.addDependencies(this.block.dependencies);\n\t\tthis.block.hasUpdateMethod = this.block.dependencies.size > 0;\n\n\t\tif (this.else) {\n\t\t\tthis.else.block = block.child({\n\t\t\t\tcomment: createDebuggingComment(this.else, this.compiler),\n\t\t\t\tname: this.compiler.getUniqueName(`${this.block.name}_else`),\n\t\t\t});\n\n\t\t\tthis.compiler.target.blocks.push(this.else.block);\n\t\t\tthis.else.initChildren(\n\t\t\t\tthis.else.block,\n\t\t\t\tstripWhitespace,\n\t\t\t\tnextSibling\n\t\t\t);\n\t\t\tthis.else.block.hasUpdateMethod = this.else.block.dependencies.size > 0;\n\t\t}\n\n\t\tif (this.block.hasOutros || (this.else && this.else.block.hasOutros)) {\n\t\t\tblock.addOutro();\n\t\t}\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tif (this.children.length === 0) return;\n\n\t\tconst { compiler } = this;\n\n\t\tconst each = this.var;\n\n\t\tconst create_each_block = this.block.name;\n\t\tconst iterations = this.iterations;\n\n\t\tconst needsAnchor = this.next ? !this.next.isDomNode() : !parentNode || !this.parent.isDomNode();\n\t\tconst anchor = needsAnchor\n\t\t\t? block.getUniqueName(`${each}_anchor`)\n\t\t\t: (this.next && this.next.var) || 'null';\n\n\t\t// hack the sourcemap, so that if data is missing the bug\n\t\t// is easy to find\n\t\tlet c = this.start + 2;\n\t\twhile (compiler.source[c] !== 'e') c += 1;\n\t\tcompiler.code.overwrite(c, c + 4, 'length');\n\t\tconst length = `[✂${c}-${c+4}✂]`;\n\n\t\tconst mountOrIntro = (this.block.hasIntroMethod || this.block.hasOutroMethod) ? 'i' : 'm';\n\t\tconst vars = {\n\t\t\teach,\n\t\t\tcreate_each_block,\n\t\t\tlength,\n\t\t\titerations,\n\t\t\tanchor,\n\t\t\tmountOrIntro,\n\t\t};\n\n\t\tconst { snippet } = this.expression;\n\n\t\tblock.builders.init.addLine(`var ${this.each_block_value} = ${snippet};`);\n\n\t\tthis.compiler.target.blocks.push(deindent`\n\t\t\tfunction ${this.get_each_context}(ctx, list, i) {\n\t\t\t\tconst child_ctx = Object.create(ctx);\n\t\t\t\t${this.contextProps}\n\t\t\t\treturn child_ctx;\n\t\t\t}\n\t\t`);\n\n\t\tif (this.key) {\n\t\t\tthis.buildKeyed(block, parentNode, parentNodes, snippet, vars);\n\t\t} else {\n\t\t\tthis.buildUnkeyed(block, parentNode, parentNodes, snippet, vars);\n\t\t}\n\n\t\tif (needsAnchor) {\n\t\t\tblock.addElement(\n\t\t\t\tanchor,\n\t\t\t\t`@createComment()`,\n\t\t\t\tparentNodes && `@createComment()`,\n\t\t\t\tparentNode\n\t\t\t);\n\t\t}\n\n\t\tif (this.else) {\n\t\t\tconst each_block_else = compiler.getUniqueName(`${each}_else`);\n\n\t\t\tblock.builders.init.addLine(`var ${each_block_else} = null;`);\n\n\t\t\t// TODO neaten this up... will end up with an empty line in the block\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\tif (!${this.each_block_value}.${length}) {\n\t\t\t\t\t${each_block_else} = ${this.else.block.name}(#component, ctx);\n\t\t\t\t\t${each_block_else}.c();\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tblock.builders.mount.addBlock(deindent`\n\t\t\t\tif (${each_block_else}) {\n\t\t\t\t\t${each_block_else}.${mountOrIntro}(${parentNode || '#target'}, null);\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tconst initialMountNode = parentNode || `${anchor}.parentNode`;\n\n\t\t\tif (this.else.block.hasUpdateMethod) {\n\t\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\t\tif (!${this.each_block_value}.${length} && ${each_block_else}) {\n\t\t\t\t\t\t${each_block_else}.p(changed, ctx);\n\t\t\t\t\t} else if (!${this.each_block_value}.${length}) {\n\t\t\t\t\t\t${each_block_else} = ${this.else.block.name}(#component, ctx);\n\t\t\t\t\t\t${each_block_else}.c();\n\t\t\t\t\t\t${each_block_else}.${mountOrIntro}(${initialMountNode}, ${anchor});\n\t\t\t\t\t} else if (${each_block_else}) {\n\t\t\t\t\t\t${each_block_else}.d(1);\n\t\t\t\t\t\t${each_block_else} = null;\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\t\tif (${this.each_block_value}.${length}) {\n\t\t\t\t\t\tif (${each_block_else}) {\n\t\t\t\t\t\t\t${each_block_else}.d(1);\n\t\t\t\t\t\t\t${each_block_else} = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!${each_block_else}) {\n\t\t\t\t\t\t${each_block_else} = ${this.else.block.name}(#component, ctx);\n\t\t\t\t\t\t${each_block_else}.c();\n\t\t\t\t\t\t${each_block_else}.${mountOrIntro}(${initialMountNode}, ${anchor});\n\t\t\t\t\t}\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\tif (${each_block_else}) ${each_block_else}.d(${parentNode ? '' : 'detach'});\n\t\t\t`);\n\t\t}\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.build(this.block, null, 'nodes');\n\t\t});\n\n\t\tif (this.else) {\n\t\t\tthis.else.children.forEach((child: Node) => {\n\t\t\t\tchild.build(this.else.block, null, 'nodes');\n\t\t\t});\n\t\t}\n\t}\n\n\tbuildKeyed(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string,\n\t\tsnippet: string,\n\t\t{\n\t\t\teach,\n\t\t\tcreate_each_block,\n\t\t\tlength,\n\t\t\tanchor,\n\t\t\tmountOrIntro,\n\t\t}\n\t) {\n\t\tconst get_key = block.getUniqueName('get_key');\n\t\tconst blocks = block.getUniqueName(`${each}_blocks`);\n\t\tconst lookup = block.getUniqueName(`${each}_lookup`);\n\n\t\tblock.addVariable(blocks, '[]');\n\t\tblock.addVariable(lookup, `@blankObject()`);\n\n\t\tif (this.children[0].isDomNode()) {\n\t\t\tthis.block.first = this.children[0].var;\n\t\t} else {\n\t\t\tthis.block.first = this.block.getUniqueName('first');\n\t\t\tthis.block.addElement(\n\t\t\t\tthis.block.first,\n\t\t\t\t`@createComment()`,\n\t\t\t\tparentNodes && `@createComment()`,\n\t\t\t\tnull\n\t\t\t);\n\t\t}\n\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tconst ${get_key} = ctx => ${this.key.snippet};\n\n\t\t\tfor (var #i = 0; #i < ${this.each_block_value}.${length}; #i += 1) {\n\t\t\t\tlet child_ctx = ${this.get_each_context}(ctx, ${this.each_block_value}, #i);\n\t\t\t\tlet key = ${get_key}(child_ctx);\n\t\t\t\t${blocks}[#i] = ${lookup}[key] = ${create_each_block}(#component, key, child_ctx);\n\t\t\t}\n\t\t`);\n\n\t\tconst initialMountNode = parentNode || '#target';\n\t\tconst updateMountNode = this.getUpdateMountNode(anchor);\n\t\tconst anchorNode = parentNode ? 'null' : 'anchor';\n\n\t\tblock.builders.create.addBlock(deindent`\n\t\t\tfor (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].c();\n\t\t`);\n\n\t\tif (parentNodes) {\n\t\t\tblock.builders.claim.addBlock(deindent`\n\t\t\t\tfor (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].l(${parentNodes});\n\t\t\t`);\n\t\t}\n\n\t\tblock.builders.mount.addBlock(deindent`\n\t\t\tfor (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].${mountOrIntro}(${initialMountNode}, ${anchorNode});\n\t\t`);\n\n\t\tconst dynamic = this.block.hasUpdateMethod;\n\n\t\tconst rects = block.getUniqueName('rects');\n\t\tconst destroy = this.block.hasAnimation\n\t\t\t? `@fixAndOutroAndDestroyBlock`\n\t\t\t: this.block.hasOutros\n\t\t\t\t? `@outroAndDestroyBlock`\n\t\t\t\t: `@destroyBlock`;\n\n\t\tblock.builders.update.addBlock(deindent`\n\t\t\tconst ${this.each_block_value} = ${snippet};\n\n\t\t\t${this.block.hasOutros && `@transitionManager.groupOutros();`}\n\t\t\t${this.block.hasAnimation && `for (let #i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].r();`}\n\t\t\t${blocks} = @updateKeyedEach(${blocks}, #component, changed, ${get_key}, ${dynamic ? '1' : '0'}, ctx, ${this.each_block_value}, ${lookup}, ${updateMountNode}, ${destroy}, ${create_each_block}, \"${mountOrIntro}\", ${anchor}, ${this.get_each_context});\n\t\t\t${this.block.hasAnimation && `for (let #i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].a();`}\n\t\t`);\n\n\t\tif (this.compiler.options.nestedTransitions) {\n\t\t\tblock.builders.outro.addBlock(deindent`\n\t\t\t\t#outrocallback = @callAfter(#outrocallback, ${blocks}.length);\n\t\t\t\tfor (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].o(#outrocallback);\n\t\t\t`);\n\t\t}\n\n\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\tfor (#i = 0; #i < ${blocks}.length; #i += 1) ${blocks}[#i].d(${parentNode ? '' : 'detach'});\n\t\t`);\n\t}\n\n\tbuildUnkeyed(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string,\n\t\tsnippet: string,\n\t\t{\n\t\t\tcreate_each_block,\n\t\t\tlength,\n\t\t\titerations,\n\t\t\tanchor,\n\t\t\tmountOrIntro,\n\t\t}\n\t) {\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tvar ${iterations} = [];\n\n\t\t\tfor (var #i = 0; #i < ${this.each_block_value}.${length}; #i += 1) {\n\t\t\t\t${iterations}[#i] = ${create_each_block}(#component, ${this.get_each_context}(ctx, ${this.each_block_value}, #i));\n\t\t\t}\n\t\t`);\n\n\t\tconst initialMountNode = parentNode || '#target';\n\t\tconst updateMountNode = this.getUpdateMountNode(anchor);\n\t\tconst anchorNode = parentNode ? 'null' : 'anchor';\n\n\t\tblock.builders.create.addBlock(deindent`\n\t\t\tfor (var #i = 0; #i < ${iterations}.length; #i += 1) {\n\t\t\t\t${iterations}[#i].c();\n\t\t\t}\n\t\t`);\n\n\t\tif (parentNodes) {\n\t\t\tblock.builders.claim.addBlock(deindent`\n\t\t\t\tfor (var #i = 0; #i < ${iterations}.length; #i += 1) {\n\t\t\t\t\t${iterations}[#i].l(${parentNodes});\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.builders.mount.addBlock(deindent`\n\t\t\tfor (var #i = 0; #i < ${iterations}.length; #i += 1) {\n\t\t\t\t${iterations}[#i].${mountOrIntro}(${initialMountNode}, ${anchorNode});\n\t\t\t}\n\t\t`);\n\n\t\tconst allDependencies = new Set(this.block.dependencies);\n\t\tconst { dependencies } = this.expression;\n\t\tdependencies.forEach((dependency: string) => {\n\t\t\tallDependencies.add(dependency);\n\t\t});\n\n\t\tconst outro = this.block.hasOutros && block.getUniqueName('outro')\n\t\tif (outro) {\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\tfunction ${outro}(i, detach, fn) {\n\t\t\t\t\tif (${iterations}[i]) {\n\t\t\t\t\t\t${iterations}[i].o(() => {\n\t\t\t\t\t\t\t${iterations}[i].d(detach);\n\t\t\t\t\t\t\tif (detach) ${iterations}[i] = null;\n\t\t\t\t\t\t\tif (fn) fn();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\t// TODO do this for keyed blocks as well\n\t\tconst condition = Array.from(allDependencies)\n\t\t\t.map(dependency => `changed.${dependency}`)\n\t\t\t.join(' || ');\n\n\t\tif (condition !== '') {\n\t\t\tconst forLoopBody = this.block.hasUpdateMethod\n\t\t\t\t? (this.block.hasIntros || this.block.hasOutros)\n\t\t\t\t\t? deindent`\n\t\t\t\t\t\tif (${iterations}[#i]) {\n\t\t\t\t\t\t\t${iterations}[#i].p(changed, child_ctx);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t${iterations}[#i] = ${create_each_block}(#component, child_ctx);\n\t\t\t\t\t\t\t${iterations}[#i].c();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t${iterations}[#i].i(${updateMountNode}, ${anchor});\n\t\t\t\t\t`\n\t\t\t\t\t: deindent`\n\t\t\t\t\t\tif (${iterations}[#i]) {\n\t\t\t\t\t\t\t${iterations}[#i].p(changed, child_ctx);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t${iterations}[#i] = ${create_each_block}(#component, child_ctx);\n\t\t\t\t\t\t\t${iterations}[#i].c();\n\t\t\t\t\t\t\t${iterations}[#i].m(${updateMountNode}, ${anchor});\n\t\t\t\t\t\t}\n\t\t\t\t\t`\n\t\t\t\t: deindent`\n\t\t\t\t\t${iterations}[#i] = ${create_each_block}(#component, child_ctx);\n\t\t\t\t\t${iterations}[#i].c();\n\t\t\t\t\t${iterations}[#i].${mountOrIntro}(${updateMountNode}, ${anchor});\n\t\t\t\t`;\n\n\t\t\tconst start = this.block.hasUpdateMethod ? '0' : `${iterations}.length`;\n\n\t\t\tlet destroy;\n\n\t\t\tif (this.block.hasOutros) {\n\t\t\t\tdestroy = deindent`\n\t\t\t\t\t@transitionManager.groupOutros();\n\t\t\t\t\tfor (; #i < ${iterations}.length; #i += 1) ${outro}(#i, 1);\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tdestroy = deindent`\n\t\t\t\t\tfor (; #i < ${iterations}.length; #i += 1) {\n\t\t\t\t\t\t${iterations}[#i].d(1);\n\t\t\t\t\t}\n\t\t\t\t\t${iterations}.length = ${this.each_block_value}.${length};\n\t\t\t\t`;\n\t\t\t}\n\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\tif (${condition}) {\n\t\t\t\t\t${this.each_block_value} = ${snippet};\n\n\t\t\t\t\tfor (var #i = ${start}; #i < ${this.each_block_value}.${length}; #i += 1) {\n\t\t\t\t\t\tconst child_ctx = ${this.get_each_context}(ctx, ${this.each_block_value}, #i);\n\n\t\t\t\t\t\t${forLoopBody}\n\t\t\t\t\t}\n\n\t\t\t\t\t${destroy}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tif (outro && this.compiler.options.nestedTransitions) {\n\t\t\tblock.builders.outro.addBlock(deindent`\n\t\t\t\t#outrocallback = @callAfter(#outrocallback, #i);\n\t\t\t\tfor (let #i = 0; #i < ${iterations}.length; #i += 1) ${outro}(#i, 0, #outrocallback);`\n\t\t\t);\n\t\t}\n\n\t\tblock.builders.destroy.addBlock(`@destroyEach(${iterations}, detach);`);\n\t}\n\n\tremount(name: string) {\n\t\t// TODO consider keyed blocks\n\t\treturn `for (var #i = 0; #i < ${this.iterations}.length; #i += 1) ${this.iterations}[#i].m(${name}._slotted.default, null);`;\n\t}\n\n\tssr() {\n\t\tconst { compiler } = this;\n\t\tconst { snippet } = this.expression;\n\n\t\tconst props = this.contexts.map(prop => `${prop.key.name}: item${prop.tail}`);\n\n\t\tconst getContext = this.index\n\t\t\t? `(item, i) => Object.assign({}, ctx, { ${props.join(', ')}, ${this.index}: i })`\n\t\t\t: `item => Object.assign({}, ctx, { ${props.join(', ')} })`;\n\n\t\tconst open = `\\${ ${this.else ? `${snippet}.length ? ` : ''}@each(${snippet}, ${getContext}, ctx => \\``;\n\t\tcompiler.target.append(open);\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.ssr();\n\t\t});\n\n\t\tconst close = `\\`)`;\n\t\tcompiler.target.append(close);\n\n\t\tif (this.else) {\n\t\t\tcompiler.target.append(` : \\``);\n\t\t\tthis.else.children.forEach((child: Node) => {\n\t\t\t\tchild.ssr();\n\t\t\t});\n\t\t\tcompiler.target.append(`\\``);\n\t\t}\n\n\t\tcompiler.target.append('}');\n\t}\n}\n","import Node from './shared/Node';\nimport Expression from './shared/Expression';\n\nexport default class Transition extends Node {\n\ttype: 'Transition';\n\tname: string;\n\texpression: Expression;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.name = info.name;\n\n\t\tthis.expression = info.expression\n\t\t\t? new Expression(compiler, this, scope, info.expression)\n\t\t\t: null;\n\t}\n}","import Block from '../dom/Block';\nimport Node from './shared/Node';\nimport Expression from './shared/Expression';\n\nexport default class Animation extends Node {\n\ttype: 'Animation';\n\tname: string;\n\texpression: Expression;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.name = info.name;\n\n\t\tthis.expression = info.expression\n\t\t\t? new Expression(compiler, this, scope, info.expression)\n\t\t\t: null;\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\n\t}\n}","import Node from './shared/Node';\nimport Expression from './shared/Expression';\n\nexport default class Action extends Node {\n\ttype: 'Action';\n\tname: string;\n\texpression: Expression;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.name = info.name;\n\n\t\tthis.expression = info.expression\n\t\t\t? new Expression(compiler, this, scope, info.expression)\n\t\t\t: null;\n\t}\n}","import { escape, escapeHTML, escapeTemplate, stringify } from '../../utils/stringify';\nimport Node from './shared/Node';\nimport Block from '../dom/Block';\n\n// Whitespace inside one of these elements will not result in\n// a whitespace node being created in any circumstances. (This\n// list is almost certainly very incomplete)\nconst elementsWithoutText = new Set([\n\t'audio',\n\t'datalist',\n\t'dl',\n\t'ol',\n\t'optgroup',\n\t'select',\n\t'ul',\n\t'video',\n]);\n\nfunction shouldSkip(node: Text) {\n\tif (/\\S/.test(node.data)) return false;\n\n\tconst parentElement = node.findNearest(/(?:Element|Component|Head)/);\n\tif (!parentElement) return false;\n\n\tif (parentElement.type === 'Head') return true;\n\tif (parentElement.type === 'Component') return parentElement.children.length === 1 && node === parentElement.children[0];\n\n\treturn parentElement.namespace || elementsWithoutText.has(parentElement.name);\n}\n\nexport default class Text extends Node {\n\ttype: 'Text';\n\tdata: string;\n\tshouldSkip: boolean;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.data = info.data;\n\t}\n\n\tinit(block: Block) {\n\t\tconst parentElement = this.findNearest(/(?:Element|Component)/);\n\n\t\tif (shouldSkip(this)) {\n\t\t\tthis.shouldSkip = true;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.var = block.getUniqueName(`text`);\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tif (this.shouldSkip) return;\n\n\t\tblock.addElement(\n\t\t\tthis.var,\n\t\t\t`@createText(${stringify(this.data)})`,\n\t\t\tparentNodes && `@claimText(${parentNodes}, ${stringify(this.data)})`,\n\t\t\tparentNode\n\t\t);\n\t}\n\n\tremount(name: string) {\n\t\treturn `@appendNode(${this.var}, ${name}._slotted.default);`;\n\t}\n\n\tssr() {\n\t\tlet text = this.data;\n\t\tif (\n\t\t\t!this.parent ||\n\t\t\tthis.parent.type !== 'Element' ||\n\t\t\t(this.parent.name !== 'script' && this.parent.name !== 'style')\n\t\t) {\n\t\t\t// unless this Text node is inside a <script> or <style> element, escape &,<,>\n\t\t\ttext = escapeHTML(text);\n\t\t}\n\t\tthis.compiler.target.append(escape(escapeTemplate(text)));\n\t}\n}","import deindent from '../../utils/deindent';\nimport { stringify, escapeHTML } from '../../utils/stringify';\nimport flattenReference from '../../utils/flattenReference';\nimport isVoidElementName from '../../utils/isVoidElementName';\nimport validCalleeObjects from '../../utils/validCalleeObjects';\nimport reservedNames from '../../utils/reservedNames';\nimport fixAttributeCasing from '../../utils/fixAttributeCasing';\nimport { quoteNameIfNecessary, quotePropIfNecessary } from '../../utils/quoteIfNecessary';\nimport Compiler from '../Compiler';\nimport Node from './shared/Node';\nimport Block from '../dom/Block';\nimport Attribute from './Attribute';\nimport Binding from './Binding';\nimport EventHandler from './EventHandler';\nimport Transition from './Transition';\nimport Animation from './Animation';\nimport Action from './Action';\nimport Text from './Text';\nimport * as namespaces from '../../utils/namespaces';\nimport mapChildren from './shared/mapChildren';\nimport { dimensions } from '../../utils/patterns';\n\n// source: https://gist.github.com/ArjanSchouten/0b8574a6ad7f5065a5e7\nconst booleanAttributes = new Set('async autocomplete autofocus autoplay border challenge checked compact contenteditable controls default defer disabled formnovalidate frameborder hidden indeterminate ismap loop multiple muted nohref noresize noshade novalidate nowrap open readonly required reversed scoped scrolling seamless selected sortable spellcheck translate'.split(' '));\n\nexport default class Element extends Node {\n\ttype: 'Element';\n\tname: string;\n\tscope: any; // TODO\n\tattributes: Attribute[];\n\tactions: Action[];\n\tbindings: Binding[];\n\thandlers: EventHandler[];\n\tintro?: Transition;\n\toutro?: Transition;\n\tanimation?: Animation;\n\tchildren: Node[];\n\n\tref: string;\n\tnamespace: string;\n\n\tconstructor(compiler, parent, scope, info: any) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.name = info.name;\n\t\tthis.scope = scope;\n\n\t\tconst parentElement = parent.findNearest(/^Element/);\n\t\tthis.namespace = this.name === 'svg' ?\n\t\t\tnamespaces.svg :\n\t\t\tparentElement ? parentElement.namespace : this.compiler.namespace;\n\n\t\tthis.attributes = [];\n\t\tthis.actions = [];\n\t\tthis.bindings = [];\n\t\tthis.handlers = [];\n\n\t\tthis.intro = null;\n\t\tthis.outro = null;\n\t\tthis.animation = null;\n\n\t\tif (this.name === 'textarea') {\n\t\t\t// this is an egregious hack, but it's the easiest way to get <textarea>\n\t\t\t// children treated the same way as a value attribute\n\t\t\tif (info.children.length > 0) {\n\t\t\t\tinfo.attributes.push({\n\t\t\t\t\ttype: 'Attribute',\n\t\t\t\t\tname: 'value',\n\t\t\t\t\tvalue: info.children\n\t\t\t\t});\n\n\t\t\t\tinfo.children = [];\n\t\t\t}\n\t\t}\n\n\t\tif (this.name === 'option') {\n\t\t\t// Special case — treat these the same way:\n\t\t\t// <option>{foo}</option>\n\t\t\t// <option value={foo}>{foo}</option>\n\t\t\tconst valueAttribute = info.attributes.find((attribute: Node) => attribute.name === 'value');\n\n\t\t\tif (!valueAttribute) {\n\t\t\t\tinfo.attributes.push({\n\t\t\t\t\ttype: 'Attribute',\n\t\t\t\t\tname: 'value',\n\t\t\t\t\tvalue: info.children,\n\t\t\t\t\tsynthetic: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tinfo.attributes.forEach(node => {\n\t\t\tswitch (node.type) {\n\t\t\t\tcase 'Action':\n\t\t\t\t\tthis.actions.push(new Action(compiler, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Attribute':\n\t\t\t\tcase 'Spread':\n\t\t\t\t\t// special case\n\t\t\t\t\tif (node.name === 'xmlns') this.namespace = node.value[0].data;\n\n\t\t\t\t\tthis.attributes.push(new Attribute(compiler, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Binding':\n\t\t\t\t\tthis.bindings.push(new Binding(compiler, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EventHandler':\n\t\t\t\t\tthis.handlers.push(new EventHandler(compiler, this, scope, node));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Transition':\n\t\t\t\t\tconst transition = new Transition(compiler, this, scope, node);\n\t\t\t\t\tif (node.intro) this.intro = transition;\n\t\t\t\t\tif (node.outro) this.outro = transition;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Animation':\n\t\t\t\t\tthis.animation = new Animation(compiler, this, scope, node);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Ref':\n\t\t\t\t\t// TODO catch this in validation\n\t\t\t\t\tif (this.ref) throw new Error(`Duplicate refs`);\n\n\t\t\t\t\tcompiler.usesRefs = true\n\t\t\t\t\tthis.ref = node.name;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Not implemented: ${node.type}`);\n\t\t\t}\n\t\t});\n\n\t\tthis.children = mapChildren(compiler, this, scope, info.children);\n\n\t\tcompiler.stylesheet.apply(this);\n\t}\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\tif (this.name === 'slot' || this.name === 'option') {\n\t\t\tthis.cannotUseInnerHTML();\n\t\t}\n\n\t\tthis.var = block.getUniqueName(\n\t\t\tthis.name.replace(/[^a-zA-Z0-9_$]/g, '_')\n\t\t);\n\n\t\tthis.attributes.forEach(attr => {\n\t\t\tif (attr.dependencies.size) {\n\t\t\t\tthis.parent.cannotUseInnerHTML();\n\t\t\t\tblock.addDependencies(attr.dependencies);\n\n\t\t\t\t// special case — <option value={foo}> — see below\n\t\t\t\tif (this.name === 'option' && attr.name === 'value') {\n\t\t\t\t\tlet select = this.parent;\n\t\t\t\t\twhile (select && (select.type !== 'Element' || select.name !== 'select')) select = select.parent;\n\n\t\t\t\t\tif (select && select.selectBindingDependencies) {\n\t\t\t\t\t\tselect.selectBindingDependencies.forEach(prop => {\n\t\t\t\t\t\t\tattr.dependencies.forEach((dependency: string) => {\n\t\t\t\t\t\t\t\tthis.compiler.indirectDependencies.get(prop).add(dependency);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.actions.forEach(action => {\n\t\t\tthis.parent.cannotUseInnerHTML();\n\t\t\tif (action.expression) {\n\t\t\t\tblock.addDependencies(action.expression.dependencies);\n\t\t\t}\n\t\t});\n\n\t\tthis.bindings.forEach(binding => {\n\t\t\tthis.parent.cannotUseInnerHTML();\n\t\t\tblock.addDependencies(binding.value.dependencies);\n\t\t});\n\n\t\tthis.handlers.forEach(handler => {\n\t\t\tthis.parent.cannotUseInnerHTML();\n\t\t\tblock.addDependencies(handler.dependencies);\n\t\t});\n\n\t\tif (this.intro || this.outro || this.animation || this.ref) {\n\t\t\tthis.parent.cannotUseInnerHTML();\n\t\t}\n\n\t\tif (this.intro) block.addIntro();\n\t\tif (this.outro) block.addOutro();\n\t\tif (this.animation) block.addAnimation();\n\n\t\tconst valueAttribute = this.attributes.find((attribute: Attribute) => attribute.name === 'value');\n\n\t\t// special case — in a case like this...\n\t\t//\n\t\t// <select bind:value='foo'>\n\t\t// <option value='{bar}'>bar</option>\n\t\t// <option value='{baz}'>baz</option>\n\t\t// </option>\n\t\t//\n\t\t// ...we need to know that `foo` depends on `bar` and `baz`,\n\t\t// so that if `foo.qux` changes, we know that we need to\n\t\t// mark `bar` and `baz` as dirty too\n\t\tif (this.name === 'select') {\n\t\t\tconst binding = this.bindings.find(node => node.name === 'value');\n\t\t\tif (binding) {\n\t\t\t\t// TODO does this also apply to e.g. `<input type='checkbox' bind:group='foo'>`?\n\t\t\t\tconst dependencies = binding.value.dependencies;\n\t\t\t\tthis.selectBindingDependencies = dependencies;\n\t\t\t\tdependencies.forEach((prop: string) => {\n\t\t\t\t\tthis.compiler.indirectDependencies.set(prop, new Set());\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.selectBindingDependencies = null;\n\t\t\t}\n\t\t}\n\n\t\tconst slot = this.getStaticAttributeValue('slot');\n\t\tif (slot && this.hasAncestor('Component')) {\n\t\t\tthis.cannotUseInnerHTML();\n\t\t\tthis.slotted = true;\n\t\t\t// TODO validate slots — no nesting, no dynamic names...\n\t\t\tconst component = this.findNearest(/^Component/);\n\t\t\tcomponent._slots.add(slot);\n\t\t}\n\n\t\tif (this.children.length) {\n\t\t\tif (this.name === 'pre' || this.name === 'textarea') stripWhitespace = false;\n\t\t\tthis.initChildren(block, stripWhitespace, nextSibling);\n\t\t}\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst { compiler } = this;\n\n\t\tif (this.name === 'slot') {\n\t\t\tconst slotName = this.getStaticAttributeValue('name') || 'default';\n\t\t\tthis.compiler.slots.add(slotName);\n\t\t}\n\n\t\tif (this.name === 'noscript') return;\n\n\t\tconst childState = {\n\t\t\tparentNode: this.var,\n\t\t\tparentNodes: parentNodes && block.getUniqueName(`${this.var}_nodes`) // if we're in unclaimable territory, i.e. <head>, parentNodes is null\n\t\t};\n\n\t\tconst name = this.var;\n\n\t\tconst slot = this.attributes.find((attribute: Node) => attribute.name === 'slot');\n\t\tconst prop = slot && quotePropIfNecessary(slot.chunks[0].data);\n\t\tconst initialMountNode = this.slotted ?\n\t\t\t`${this.findNearest(/^Component/).var}._slotted${prop}` : // TODO this looks bonkers\n\t\t\tparentNode;\n\n\t\tblock.addVariable(name);\n\t\tconst renderStatement = getRenderStatement(this.namespace, this.name);\n\t\tblock.builders.create.addLine(\n\t\t\t`${name} = ${renderStatement};`\n\t\t);\n\n\t\tif (this.compiler.options.hydratable) {\n\t\t\tif (parentNodes) {\n\t\t\t\tblock.builders.claim.addBlock(deindent`\n\t\t\t\t\t${name} = ${getClaimStatement(compiler, this.namespace, parentNodes, this)};\n\t\t\t\t\tvar ${childState.parentNodes} = @children(${name});\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.builders.claim.addLine(\n\t\t\t\t\t`${name} = ${renderStatement};`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (initialMountNode) {\n\t\t\tblock.builders.mount.addLine(\n\t\t\t\t`@appendNode(${name}, ${initialMountNode});`\n\t\t\t);\n\n\t\t\tif (initialMountNode === 'document.head') {\n\t\t\t\tblock.builders.destroy.addLine(`@detachNode(${name});`);\n\t\t\t}\n\t\t} else {\n\t\t\tblock.builders.mount.addLine(`@insertNode(${name}, #target, anchor);`);\n\n\t\t\t// TODO we eventually need to consider what happens to elements\n\t\t\t// that belong to the same outgroup as an outroing element...\n\t\t\tblock.builders.destroy.addConditional('detach', `@detachNode(${name});`);\n\t\t}\n\n\t\t// TODO move this into a class as well?\n\t\tif (this._cssRefAttribute) {\n\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t`@setAttribute(${name}, \"svelte-ref-${this._cssRefAttribute}\", \"\");`\n\t\t\t)\n\t\t}\n\n\t\t// insert static children with textContent or innerHTML\n\t\tif (!this.namespace && this.canUseInnerHTML && this.children.length > 0) {\n\t\t\tif (this.children.length === 1 && this.children[0].type === 'Text') {\n\t\t\t\tblock.builders.create.addLine(\n\t\t\t\t\t`${name}.textContent = ${stringify(this.children[0].data)};`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tblock.builders.create.addLine(\n\t\t\t\t\t`${name}.innerHTML = ${stringify(this.children.map(toHTML).join(''))};`\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.children.forEach((child: Node) => {\n\t\t\t\tchild.build(block, childState.parentNode, childState.parentNodes);\n\t\t\t});\n\t\t}\n\n\t\tlet hasHoistedEventHandlerOrBinding = (\n\t\t\t//(this.hasAncestor('EachBlock') && this.bindings.length > 0) ||\n\t\t\tthis.handlers.some(handler => handler.shouldHoist)\n\t\t);\n\t\tconst eventHandlerOrBindingUsesComponent = (\n\t\t\tthis.bindings.length > 0 ||\n\t\t\tthis.handlers.some(handler => handler.usesComponent)\n\t\t);\n\n\t\tconst eventHandlerOrBindingUsesContext = (\n\t\t\tthis.bindings.some(binding => binding.usesContext) ||\n\t\t\tthis.handlers.some(handler => handler.usesContext)\n\t\t);\n\n\t\tif (hasHoistedEventHandlerOrBinding) {\n\t\t\tconst initialProps: string[] = [];\n\t\t\tconst updates: string[] = [];\n\n\t\t\tif (eventHandlerOrBindingUsesComponent) {\n\t\t\t\tconst component = block.alias('component');\n\t\t\t\tinitialProps.push(component === 'component' ? 'component' : `component: ${component}`);\n\t\t\t}\n\n\t\t\tif (eventHandlerOrBindingUsesContext) {\n\t\t\t\tinitialProps.push(`ctx`);\n\t\t\t\tblock.builders.update.addLine(`${name}._svelte.ctx = ctx;`);\n\t\t\t}\n\n\t\t\tif (initialProps.length) {\n\t\t\t\tblock.builders.hydrate.addBlock(deindent`\n\t\t\t\t\t${name}._svelte = { ${initialProps.join(', ')} };\n\t\t\t\t`);\n\t\t\t}\n\t\t} else {\n\t\t\tif (eventHandlerOrBindingUsesContext) {\n\t\t\t\tblock.maintainContext = true;\n\t\t\t}\n\t\t}\n\n\t\tthis.addBindings(block);\n\t\tthis.addEventHandlers(block);\n\t\tif (this.ref) this.addRef(block);\n\t\tthis.addAttributes(block);\n\t\tthis.addTransitions(block);\n\t\tthis.addAnimation(block);\n\t\tthis.addActions(block);\n\n\t\tif (this.initialUpdate) {\n\t\t\tblock.builders.mount.addBlock(this.initialUpdate);\n\t\t}\n\n\t\tif (childState.parentNodes) {\n\t\t\tblock.builders.claim.addLine(\n\t\t\t\t`${childState.parentNodes}.forEach(@detachNode);`\n\t\t\t);\n\t\t}\n\n\t\tfunction toHTML(node: Element | Text) {\n\t\t\tif (node.type === 'Text') {\n\t\t\t\treturn node.parent &&\n\t\t\t\t\tnode.parent.type === 'Element' &&\n\t\t\t\t\t(node.parent.name === 'script' || node.parent.name === 'style')\n\t\t\t\t\t? node.data\n\t\t\t\t\t: escapeHTML(node.data);\n\t\t\t}\n\n\t\t\tif (node.name === 'noscript') return '';\n\n\t\t\tlet open = `<${node.name}`;\n\n\t\t\tif (node._cssRefAttribute) {\n\t\t\t\topen += ` svelte-ref-${node._cssRefAttribute}`;\n\t\t\t}\n\n\t\t\tnode.attributes.forEach((attr: Node) => {\n\t\t\t\topen += ` ${fixAttributeCasing(attr.name)}${stringifyAttributeValue(attr.chunks)}`\n\t\t\t});\n\n\t\t\tif (isVoidElementName(node.name)) return open + '>';\n\n\t\t\treturn `${open}>${node.children.map(toHTML).join('')}</${node.name}>`;\n\t\t}\n\t}\n\n\taddBindings(\n\t\tblock: Block\n\t) {\n\t\tif (this.bindings.length === 0) return;\n\n\t\tif (this.name === 'select' || this.isMediaNode()) this.compiler.target.hasComplexBindings = true;\n\n\t\tconst needsLock = this.name !== 'input' || !/radio|checkbox|range|color/.test(this.getStaticAttributeValue('type'));\n\n\t\t// TODO munge in constructor\n\t\tconst mungedBindings = this.bindings.map(binding => binding.munge(block));\n\n\t\tconst lock = mungedBindings.some(binding => binding.needsLock) ?\n\t\t\tblock.getUniqueName(`${this.var}_updating`) :\n\t\t\tnull;\n\n\t\tif (lock) block.addVariable(lock, 'false');\n\n\t\tconst groups = events\n\t\t\t.map(event => {\n\t\t\t\treturn {\n\t\t\t\t\tevents: event.eventNames,\n\t\t\t\t\tbindings: mungedBindings.filter(binding => event.filter(this, binding.name))\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter(group => group.bindings.length);\n\n\t\tgroups.forEach(group => {\n\t\t\tconst handler = block.getUniqueName(`${this.var}_${group.events.join('_')}_handler`);\n\n\t\t\tconst needsLock = group.bindings.some(binding => binding.needsLock);\n\n\t\t\tgroup.bindings.forEach(binding => {\n\t\t\t\tif (!binding.updateDom) return;\n\n\t\t\t\tconst updateConditions = needsLock ? [`!${lock}`] : [];\n\t\t\t\tif (binding.updateCondition) updateConditions.push(binding.updateCondition);\n\n\t\t\t\tblock.builders.update.addLine(\n\t\t\t\t\tupdateConditions.length ? `if (${updateConditions.join(' && ')}) ${binding.updateDom}` : binding.updateDom\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tconst usesContext = group.bindings.some(binding => binding.handler.usesContext);\n\t\t\tconst usesState = group.bindings.some(binding => binding.handler.usesState);\n\t\t\tconst usesStore = group.bindings.some(binding => binding.handler.usesStore);\n\t\t\tconst mutations = group.bindings.map(binding => binding.handler.mutation).filter(Boolean).join('\\n');\n\n\t\t\tconst props = new Set();\n\t\t\tconst storeProps = new Set();\n\t\t\tgroup.bindings.forEach(binding => {\n\t\t\t\tbinding.handler.props.forEach(prop => {\n\t\t\t\t\tprops.add(prop);\n\t\t\t\t});\n\n\t\t\t\tbinding.handler.storeProps.forEach(prop => {\n\t\t\t\t\tstoreProps.add(prop);\n\t\t\t\t});\n\t\t\t}); // TODO use stringifyProps here, once indenting is fixed\n\n\t\t\t// media bindings — awkward special case. The native timeupdate events\n\t\t\t// fire too infrequently, so we need to take matters into our\n\t\t\t// own hands\n\t\t\tlet animation_frame;\n\t\t\tif (group.events[0] === 'timeupdate') {\n\t\t\t\tanimation_frame = block.getUniqueName(`${this.var}_animationframe`);\n\t\t\t\tblock.addVariable(animation_frame);\n\t\t\t}\n\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\tfunction ${handler}() {\n\t\t\t\t\t${\n\t\t\t\t\t\tanimation_frame && deindent`\n\t\t\t\t\t\t\tcancelAnimationFrame(${animation_frame});\n\t\t\t\t\t\t\tif (!${this.var}.paused) ${animation_frame} = requestAnimationFrame(${handler});`\n\t\t\t\t\t}\n\t\t\t\t\t${usesStore && `var $ = #component.store.get();`}\n\t\t\t\t\t${needsLock && `${lock} = true;`}\n\t\t\t\t\t${mutations.length > 0 && mutations}\n\t\t\t\t\t${props.size > 0 && `#component.set({ ${Array.from(props).join(', ')} });`}\n\t\t\t\t\t${storeProps.size > 0 && `#component.store.set({ ${Array.from(storeProps).join(', ')} });`}\n\t\t\t\t\t${needsLock && `${lock} = false;`}\n\t\t\t\t}\n\t\t\t`);\n\n\t\t\tgroup.events.forEach(name => {\n\t\t\t\tif (name === 'resize') {\n\t\t\t\t\t// special case\n\t\t\t\t\tconst resize_listener = block.getUniqueName(`${this.var}_resize_listener`);\n\t\t\t\t\tblock.addVariable(resize_listener);\n\n\t\t\t\t\tblock.builders.mount.addLine(\n\t\t\t\t\t\t`${resize_listener} = @addResizeListener(${this.var}, ${handler});`\n\t\t\t\t\t);\n\n\t\t\t\t\tblock.builders.destroy.addLine(\n\t\t\t\t\t\t`${resize_listener}.cancel();`\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t\t`@addListener(${this.var}, \"${name}\", ${handler});`\n\t\t\t\t\t);\n\n\t\t\t\t\tblock.builders.destroy.addLine(\n\t\t\t\t\t\t`@removeListener(${this.var}, \"${name}\", ${handler});`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst allInitialStateIsDefined = group.bindings\n\t\t\t\t.map(binding => `'${binding.object}' in ctx`)\n\t\t\t\t.join(' && ');\n\n\t\t\tif (this.name === 'select' || group.bindings.find(binding => binding.name === 'indeterminate' || binding.isReadOnlyMediaAttribute)) {\n\t\t\t\tthis.compiler.target.hasComplexBindings = true;\n\n\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t`if (!(${allInitialStateIsDefined})) #component.root._beforecreate.push(${handler});`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (group.events[0] === 'resize') {\n\t\t\t\tthis.compiler.target.hasComplexBindings = true;\n\n\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t`#component.root._beforecreate.push(${handler});`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tthis.initialUpdate = mungedBindings.map(binding => binding.initialUpdate).filter(Boolean).join('\\n');\n\t}\n\n\taddAttributes(block: Block) {\n\t\tif (this.attributes.find(attr => attr.type === 'Spread')) {\n\t\t\tthis.addSpreadAttributes(block);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.attributes.forEach((attribute: Attribute) => {\n\t\t\tattribute.render(block);\n\t\t});\n\t}\n\n\taddSpreadAttributes(block: Block) {\n\t\tconst levels = block.getUniqueName(`${this.var}_levels`);\n\t\tconst data = block.getUniqueName(`${this.var}_data`);\n\n\t\tconst initialProps = [];\n\t\tconst updates = [];\n\n\t\tthis.attributes\n\t\t\t.filter(attr => attr.type === 'Attribute' || attr.type === 'Spread')\n\t\t\t.forEach(attr => {\n\t\t\t\tconst condition = attr.dependencies.size > 0\n\t\t\t\t\t? [...attr.dependencies].map(d => `changed.${d}`).join(' || ')\n\t\t\t\t\t: null;\n\n\t\t\t\tif (attr.isSpread) {\n\t\t\t\t\tconst { snippet, dependencies } = attr.expression;\n\n\t\t\t\t\tinitialProps.push(snippet);\n\n\t\t\t\t\tupdates.push(condition ? `${condition} && ${snippet}` : snippet);\n\t\t\t\t} else {\n\t\t\t\t\tconst snippet = `{ ${quoteNameIfNecessary(attr.name)}: ${attr.getValue()} }`;\n\t\t\t\t\tinitialProps.push(snippet);\n\n\t\t\t\t\tupdates.push(condition ? `${condition} && ${snippet}` : snippet);\n\t\t\t\t}\n\t\t\t});\n\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tvar ${levels} = [\n\t\t\t\t${initialProps.join(',\\n')}\n\t\t\t];\n\n\t\t\tvar ${data} = {};\n\t\t\tfor (var #i = 0; #i < ${levels}.length; #i += 1) {\n\t\t\t\t${data} = @assign(${data}, ${levels}[#i]);\n\t\t\t}\n\t\t`);\n\n\t\tblock.builders.hydrate.addLine(\n\t\t\t`@setAttributes(${this.var}, ${data});`\n\t\t);\n\n\t\tblock.builders.update.addBlock(deindent`\n\t\t\t@setAttributes(${this.var}, @getSpreadUpdate(${levels}, [\n\t\t\t\t${updates.join(',\\n')}\n\t\t\t]));\n\t\t`);\n\t}\n\n\taddEventHandlers(block: Block) {\n\t\tconst { compiler } = this;\n\n\t\tthis.handlers.forEach(handler => {\n\t\t\tconst isCustomEvent = compiler.events.has(handler.name);\n\n\t\t\tif (handler.callee) {\n\t\t\t\thandler.render(this.compiler, block, handler.shouldHoist);\n\t\t\t}\n\n\t\t\tconst target = handler.shouldHoist ? 'this' : this.var;\n\n\t\t\t// get a name for the event handler that is globally unique\n\t\t\t// if hoisted, locally unique otherwise\n\t\t\tconst handlerName = (handler.shouldHoist ? compiler : block).getUniqueName(\n\t\t\t\t`${handler.name.replace(/[^a-zA-Z0-9_$]/g, '_')}_handler`\n\t\t\t);\n\n\t\t\tconst component = block.alias('component'); // can't use #component, might be hoisted\n\n\t\t\t// create the handler body\n\t\t\tconst handlerBody = deindent`\n\t\t\t\t${handler.shouldHoist && (\n\t\t\t\t\thandler.usesComponent || handler.usesContext\n\t\t\t\t\t\t? `const { ${[handler.usesComponent && 'component', handler.usesContext && 'ctx'].filter(Boolean).join(', ')} } = ${target}._svelte;`\n\t\t\t\t\t\t: null\n\t\t\t\t)}\n\n\t\t\t\t${handler.snippet ?\n\t\t\t\t\thandler.snippet :\n\t\t\t\t\t`${component}.fire(\"${handler.name}\", event);`}\n\t\t\t`;\n\n\t\t\tif (isCustomEvent) {\n\t\t\t\tblock.addVariable(handlerName);\n\n\t\t\t\tblock.builders.hydrate.addBlock(deindent`\n\t\t\t\t\t${handlerName} = %events-${handler.name}.call(${component}, ${this.var}, function(event) {\n\t\t\t\t\t\t${handlerBody}\n\t\t\t\t\t});\n\t\t\t\t`);\n\n\t\t\t\tblock.builders.destroy.addLine(deindent`\n\t\t\t\t\t${handlerName}.destroy();\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tconst handlerFunction = deindent`\n\t\t\t\t\tfunction ${handlerName}(event) {\n\t\t\t\t\t\t${handlerBody}\n\t\t\t\t\t}\n\t\t\t\t`;\n\n\t\t\t\tif (handler.shouldHoist) {\n\t\t\t\t\tcompiler.target.blocks.push(handlerFunction);\n\t\t\t\t} else {\n\t\t\t\t\tblock.builders.init.addBlock(handlerFunction);\n\t\t\t\t}\n\n\t\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t\t`@addListener(${this.var}, \"${handler.name}\", ${handlerName});`\n\t\t\t\t);\n\n\t\t\t\tblock.builders.destroy.addLine(\n\t\t\t\t\t`@removeListener(${this.var}, \"${handler.name}\", ${handlerName});`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\taddRef(block: Block) {\n\t\tconst ref = `#component.refs.${this.ref}`;\n\n\t\tblock.builders.mount.addLine(\n\t\t\t`${ref} = ${this.var};`\n\t\t);\n\n\t\tblock.builders.destroy.addLine(\n\t\t\t`if (${ref} === ${this.var}) ${ref} = null;`\n\t\t);\n\t}\n\n\taddTransitions(\n\t\tblock: Block\n\t) {\n\t\tconst { intro, outro } = this;\n\n\t\tif (!intro && !outro) return;\n\n\t\tif (intro === outro) {\n\t\t\tconst name = block.getUniqueName(`${this.var}_transition`);\n\t\t\tconst snippet = intro.expression\n\t\t\t\t? intro.expression.snippet\n\t\t\t\t: '{}';\n\n\t\t\tblock.addVariable(name);\n\n\t\t\tconst fn = `%transitions-${intro.name}`;\n\n\t\t\tblock.builders.intro.addConditional(`#component.root._intro`, deindent`\n\t\t\t\tif (${name}) ${name}.invalidate();\n\n\t\t\t\t#component.root._aftercreate.push(() => {\n\t\t\t\t\tif (!${name}) ${name} = @wrapTransition(#component, ${this.var}, ${fn}, ${snippet}, true);\n\t\t\t\t\t${name}.run(1);\n\t\t\t\t});\n\t\t\t`);\n\n\t\t\tblock.builders.outro.addBlock(deindent`\n\t\t\t\tif (!${name}) ${name} = @wrapTransition(#component, ${this.var}, ${fn}, ${snippet}, false);\n\t\t\t\t${name}.run(0, () => {\n\t\t\t\t\t#outrocallback();\n\t\t\t\t\t${name} = null;\n\t\t\t\t});\n\t\t\t`);\n\t\t} else {\n\t\t\tconst introName = intro && block.getUniqueName(`${this.var}_intro`);\n\t\t\tconst outroName = outro && block.getUniqueName(`${this.var}_outro`);\n\n\t\t\tif (intro) {\n\t\t\t\tblock.addVariable(introName);\n\t\t\t\tconst snippet = intro.expression\n\t\t\t\t\t? intro.expression.snippet\n\t\t\t\t\t: '{}';\n\n\t\t\t\tconst fn = `%transitions-${intro.name}`; // TODO add built-in transitions?\n\n\t\t\t\tif (outro) {\n\t\t\t\t\tblock.builders.intro.addBlock(deindent`\n\t\t\t\t\t\tif (${introName}) ${introName}.abort();\n\t\t\t\t\t\tif (${outroName}) ${outroName}.abort();\n\t\t\t\t\t`);\n\t\t\t\t}\n\n\t\t\t\tblock.builders.intro.addConditional(`#component.root._intro`, deindent`\n\t\t\t\t\t#component.root._aftercreate.push(() => {\n\t\t\t\t\t\t${introName} = @wrapTransition(#component, ${this.var}, ${fn}, ${snippet}, true);\n\t\t\t\t\t\t${introName}.run(1);\n\t\t\t\t\t});\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tif (outro) {\n\t\t\t\tblock.addVariable(outroName);\n\t\t\t\tconst snippet = outro.expression\n\t\t\t\t\t? outro.expression.snippet\n\t\t\t\t\t: '{}';\n\n\t\t\t\tconst fn = `%transitions-${outro.name}`;\n\n\t\t\t\tblock.builders.intro.addBlock(deindent`\n\t\t\t\t\tif (${outroName}) ${outroName}.abort();\n\t\t\t\t`);\n\n\t\t\t\t// TODO hide elements that have outro'd (unless they belong to a still-outroing\n\t\t\t\t// group) prior to their removal from the DOM\n\t\t\t\tblock.builders.outro.addBlock(deindent`\n\t\t\t\t\t${outroName} = @wrapTransition(#component, ${this.var}, ${fn}, ${snippet}, false);\n\t\t\t\t\t${outroName}.run(0, #outrocallback);\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t}\n\n\taddAnimation(block: Block) {\n\t\tif (!this.animation) return;\n\n\t\tconst rect = block.getUniqueName('rect');\n\t\tconst animation = block.getUniqueName('animation');\n\n\t\tblock.addVariable(rect);\n\t\tblock.addVariable(animation);\n\n\t\tblock.builders.measure.addBlock(deindent`\n\t\t\t${rect} = ${this.var}.getBoundingClientRect();\n\t\t`);\n\n\t\tblock.builders.fix.addBlock(deindent`\n\t\t\t@fixPosition(${this.var});\n\t\t\tif (${animation}) ${animation}.stop();\n\t\t`);\n\n\t\tconst params = this.animation.expression ? this.animation.expression.snippet : '{}';\n\t\tblock.builders.animate.addBlock(deindent`\n\t\t\tif (${animation}) ${animation}.stop();\n\t\t\t${animation} = @wrapAnimation(${this.var}, ${rect}, %animations-${this.animation.name}, ${params});\n\t\t`);\n\t}\n\n\taddActions(block: Block) {\n\t\tthis.actions.forEach(action => {\n\t\t\tconst { expression } = action;\n\t\t\tlet snippet, dependencies;\n\t\t\tif (expression) {\n\t\t\t\tsnippet = action.expression.snippet;\n\t\t\t\tdependencies = action.expression.dependencies;\n\t\t\t}\n\n\t\t\tconst name = block.getUniqueName(\n\t\t\t\t`${action.name.replace(/[^a-zA-Z0-9_$]/g, '_')}_action`\n\t\t\t);\n\n\t\t\tblock.addVariable(name);\n\t\t\tconst fn = `%actions-${action.name}`;\n\n\t\t\tblock.builders.hydrate.addLine(\n\t\t\t\t`${name} = ${fn}.call(#component, ${this.var}${snippet ? `, ${snippet}` : ''}) || {};`\n\t\t\t);\n\n\t\t\tif (dependencies && dependencies.size > 0) {\n\t\t\t\tlet conditional = `typeof ${name}.update === 'function' && `;\n\t\t\t\tconst deps = [...dependencies].map(dependency => `changed.${dependency}`).join(' || ');\n\t\t\t\tconditional += dependencies.size > 1 ? `(${deps})` : deps;\n\n\t\t\t\tblock.builders.update.addConditional(\n\t\t\t\t\tconditional,\n\t\t\t\t\t`${name}.update.call(#component, ${snippet});`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tblock.builders.destroy.addLine(\n\t\t\t\t`if (typeof ${name}.destroy === 'function') ${name}.destroy.call(#component);`\n\t\t\t);\n\t\t});\n\t}\n\n\tgetStaticAttributeValue(name: string) {\n\t\tconst attribute = this.attributes.find(\n\t\t\t(attr: Attribute) => attr.type === 'Attribute' && attr.name.toLowerCase() === name\n\t\t);\n\n\t\tif (!attribute) return null;\n\n\t\tif (attribute.isTrue) return true;\n\t\tif (attribute.chunks.length === 0) return '';\n\n\t\tif (attribute.chunks.length === 1 && attribute.chunks[0].type === 'Text') {\n\t\t\treturn attribute.chunks[0].data;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tisMediaNode() {\n\t\treturn this.name === 'audio' || this.name === 'video';\n\t}\n\n\tremount(name: string) {\n\t\tconst slot = this.attributes.find(attribute => attribute.name === 'slot');\n\t\tif (slot) {\n\t\t\tconst prop = quotePropIfNecessary(slot.chunks[0].data);\n\t\t\treturn `@appendNode(${this.var}, ${name}._slotted${prop});`;\n\t\t}\n\n\t\treturn `@appendNode(${this.var}, ${name}._slotted.default);`;\n\t}\n\n\taddCssClass() {\n\t\tconst classAttribute = this.attributes.find(a => a.name === 'class');\n\t\tif (classAttribute && !classAttribute.isTrue) {\n\t\t\tif (classAttribute.chunks.length === 1 && classAttribute.chunks[0].type === 'Text') {\n\t\t\t\t(<Text>classAttribute.chunks[0]).data += ` ${this.compiler.stylesheet.id}`;\n\t\t\t} else {\n\t\t\t\t(<Node[]>classAttribute.chunks).push(\n\t\t\t\t\tnew Text(this.compiler, this, this.scope, {\n\t\t\t\t\t\ttype: 'Text',\n\t\t\t\t\t\tdata: ` ${this.compiler.stylesheet.id}`\n\t\t\t\t\t})\n\n\t\t\t\t\t// new Text({ type: 'Text', data: ` ${this.compiler.stylesheet.id}` })\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.attributes.push(\n\t\t\t\tnew Attribute(this.compiler, this, this.scope, {\n\t\t\t\t\ttype: 'Attribute',\n\t\t\t\t\tname: 'class',\n\t\t\t\t\tvalue: [{ type: 'Text', data: `${this.compiler.stylesheet.id}` }]\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\tssr() {\n\t\tconst { compiler } = this;\n\n\t\tlet openingTag = `<${this.name}`;\n\t\tlet textareaContents; // awkward special case\n\n\t\tconst slot = this.getStaticAttributeValue('slot');\n\t\tif (slot && this.hasAncestor('Component')) {\n\t\t\tconst slot = this.attributes.find((attribute: Node) => attribute.name === 'slot');\n\t\t\tconst slotName = slot.chunks[0].data;\n\t\t\tconst appendTarget = compiler.target.appendTargets[compiler.target.appendTargets.length - 1];\n\t\t\tappendTarget.slotStack.push(slotName);\n\t\t\tappendTarget.slots[slotName] = '';\n\t\t}\n\n\t\tif (this.attributes.find(attr => attr.isSpread)) {\n\t\t\t// TODO dry this out\n\t\t\tconst args = [];\n\t\t\tthis.attributes.forEach(attribute => {\n\t\t\t\tif (attribute.isSpread) {\n\t\t\t\t\targs.push(attribute.expression.snippet);\n\t\t\t\t} else {\n\t\t\t\t\tif (attribute.name === 'value' && this.name === 'textarea') {\n\t\t\t\t\t\ttextareaContents = attribute.stringifyForSsr();\n\t\t\t\t\t} else if (attribute.isTrue) {\n\t\t\t\t\t\targs.push(`{ ${quoteNameIfNecessary(attribute.name)}: true }`);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tbooleanAttributes.has(attribute.name) &&\n\t\t\t\t\t\tattribute.chunks.length === 1 &&\n\t\t\t\t\t\tattribute.chunks[0].type !== 'Text'\n\t\t\t\t\t) {\n\t\t\t\t\t\t// a boolean attribute with one non-Text chunk\n\t\t\t\t\t\targs.push(`{ ${quoteNameIfNecessary(attribute.name)}: ${attribute.chunks[0].snippet} }`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs.push(`{ ${quoteNameIfNecessary(attribute.name)}: \\`${attribute.stringifyForSsr()}\\` }`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\topeningTag += \"${@spread([\" + args.join(', ') + \"])}\";\n\t\t} else {\n\t\t\tthis.attributes.forEach((attribute: Node) => {\n\t\t\t\tif (attribute.type !== 'Attribute') return;\n\n\t\t\t\tif (attribute.name === 'value' && this.name === 'textarea') {\n\t\t\t\t\ttextareaContents = attribute.stringifyForSsr();\n\t\t\t\t} else if (attribute.isTrue) {\n\t\t\t\t\topeningTag += ` ${attribute.name}`;\n\t\t\t\t} else if (\n\t\t\t\t\tbooleanAttributes.has(attribute.name) &&\n\t\t\t\t\tattribute.chunks.length === 1 &&\n\t\t\t\t\tattribute.chunks[0].type !== 'Text'\n\t\t\t\t) {\n\t\t\t\t\t// a boolean attribute with one non-Text chunk\n\t\t\t\t\topeningTag += '${' + attribute.chunks[0].snippet + ' ? \" ' + attribute.name + '\" : \"\" }';\n\t\t\t\t} else {\n\t\t\t\t\topeningTag += ` ${attribute.name}=\"${attribute.stringifyForSsr()}\"`;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this._cssRefAttribute) {\n\t\t\topeningTag += ` svelte-ref-${this._cssRefAttribute}`;\n\t\t}\n\n\t\topeningTag += '>';\n\n\t\tcompiler.target.append(openingTag);\n\n\t\tif (this.name === 'textarea' && textareaContents !== undefined) {\n\t\t\tcompiler.target.append(textareaContents);\n\t\t} else {\n\t\t\tthis.children.forEach((child: Node) => {\n\t\t\t\tchild.ssr();\n\t\t\t});\n\t\t}\n\n\t\tif (!isVoidElementName(this.name)) {\n\t\t\tcompiler.target.append(`</${this.name}>`);\n\t\t}\n\t}\n}\n\nfunction getRenderStatement(\n\tnamespace: string,\n\tname: string\n) {\n\tif (namespace === 'http://www.w3.org/2000/svg') {\n\t\treturn `@createSvgElement(\"${name}\")`;\n\t}\n\n\tif (namespace) {\n\t\treturn `document.createElementNS(\"${namespace}\", \"${name}\")`;\n\t}\n\n\treturn `@createElement(\"${name}\")`;\n}\n\nfunction getClaimStatement(\n\tcompiler: Compiler,\n\tnamespace: string,\n\tnodes: string,\n\tnode: Node\n) {\n\tconst attributes = node.attributes\n\t\t.filter((attr: Node) => attr.type === 'Attribute')\n\t\t.map((attr: Node) => `${quoteNameIfNecessary(attr.name)}: true`)\n\t\t.join(', ');\n\n\tconst name = namespace ? node.name : node.name.toUpperCase();\n\n\treturn `@claimElement(${nodes}, \"${name}\", ${attributes\n\t\t? `{ ${attributes} }`\n\t\t: `{}`}, ${namespace === namespaces.svg ? true : false})`;\n}\n\nfunction stringifyAttributeValue(value: Node[] | true) {\n\tif (value === true) return '';\n\tif (value.length === 0) return `=\"\"`;\n\n\tconst data = value[0].data;\n\treturn `=${JSON.stringify(data)}`;\n}\n\nconst events = [\n\t{\n\t\teventNames: ['input'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.name === 'textarea' ||\n\t\t\tnode.name === 'input' && !/radio|checkbox|range/.test(node.getStaticAttributeValue('type'))\n\t},\n\t{\n\t\teventNames: ['change'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.name === 'select' ||\n\t\t\tnode.name === 'input' && /radio|checkbox/.test(node.getStaticAttributeValue('type'))\n\t},\n\t{\n\t\teventNames: ['change', 'input'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.name === 'input' && node.getStaticAttributeValue('type') === 'range'\n\t},\n\n\t{\n\t\teventNames: ['resize'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tdimensions.test(name)\n\t},\n\n\t// media events\n\t{\n\t\teventNames: ['timeupdate'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.isMediaNode() &&\n\t\t\t(name === 'currentTime' || name === 'played')\n\t},\n\t{\n\t\teventNames: ['durationchange'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.isMediaNode() &&\n\t\t\tname === 'duration'\n\t},\n\t{\n\t\teventNames: ['play', 'pause'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.isMediaNode() &&\n\t\t\tname === 'paused'\n\t},\n\t{\n\t\teventNames: ['progress'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.isMediaNode() &&\n\t\t\tname === 'buffered'\n\t},\n\t{\n\t\teventNames: ['loadedmetadata'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.isMediaNode() &&\n\t\t\t(name === 'buffered' || name === 'seekable')\n\t},\n\t{\n\t\teventNames: ['volumechange'],\n\t\tfilter: (node: Element, name: string) =>\n\t\t\tnode.isMediaNode() &&\n\t\t\tname === 'volume'\n\t}\n];\n","import deindent from '../../utils/deindent';\nimport { stringify } from '../../utils/stringify';\nimport Node from './shared/Node';\nimport Block from '../dom/Block';\nimport Attribute from './Attribute';\nimport mapChildren from './shared/mapChildren';\n\nexport default class Head extends Node {\n\ttype: 'Head';\n\tchildren: any[]; // TODO\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.children = mapChildren(compiler, parent, scope, info.children.filter(child => {\n\t\t\treturn (child.type !== 'Text' || /\\S/.test(child.data));\n\t\t}));\n\t}\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\tthis.initChildren(block, true, null);\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tthis.var = 'document.head';\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.build(block, 'document.head', null);\n\t\t});\n\t}\n\n\tssr() {\n\t\tthis.compiler.target.append('${(__result.head += `');\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.ssr();\n\t\t});\n\n\t\tthis.compiler.target.append('`, \"\")}');\n\t}\n}\n","import deindent from '../../utils/deindent';\nimport Node from './shared/Node';\nimport ElseBlock from './ElseBlock';\nimport Compiler from '../Compiler';\nimport Block from '../dom/Block';\nimport createDebuggingComment from '../../utils/createDebuggingComment';\nimport Expression from './shared/Expression';\nimport mapChildren from './shared/mapChildren';\n\nfunction isElseIf(node: ElseBlock) {\n\treturn (\n\t\tnode && node.children.length === 1 && node.children[0].type === 'IfBlock'\n\t);\n}\n\nfunction isElseBranch(branch) {\n\treturn branch.block && !branch.condition;\n}\n\nexport default class IfBlock extends Node {\n\ttype: 'IfBlock';\n\texpression: Expression;\n\tchildren: any[];\n\telse: ElseBlock;\n\n\tblock: Block;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.expression = new Expression(compiler, this, scope, info.expression);\n\t\tthis.children = mapChildren(compiler, this, scope, info.children);\n\n\t\tthis.else = info.else\n\t\t\t? new ElseBlock(compiler, this, scope, info.else)\n\t\t\t: null;\n\t}\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\tconst { compiler } = this;\n\n\t\tthis.cannotUseInnerHTML();\n\n\t\tconst blocks: Block[] = [];\n\t\tlet dynamic = false;\n\t\tlet hasIntros = false;\n\t\tlet hasOutros = false;\n\n\t\tfunction attachBlocks(node: IfBlock) {\n\t\t\tnode.var = block.getUniqueName(`if_block`);\n\n\t\t\tblock.addDependencies(node.expression.dependencies);\n\n\t\t\tnode.block = block.child({\n\t\t\t\tcomment: createDebuggingComment(node, compiler),\n\t\t\t\tname: compiler.getUniqueName(`create_if_block`),\n\t\t\t});\n\n\t\t\tblocks.push(node.block);\n\t\t\tnode.initChildren(node.block, stripWhitespace, nextSibling);\n\n\t\t\tif (node.block.dependencies.size > 0) {\n\t\t\t\tdynamic = true;\n\t\t\t\tblock.addDependencies(node.block.dependencies);\n\t\t\t}\n\n\t\t\tif (node.block.hasIntros) hasIntros = true;\n\t\t\tif (node.block.hasOutros) hasOutros = true;\n\n\t\t\tif (isElseIf(node.else)) {\n\t\t\t\tattachBlocks(node.else.children[0]);\n\t\t\t} else if (node.else) {\n\t\t\t\tnode.else.block = block.child({\n\t\t\t\t\tcomment: createDebuggingComment(node.else, compiler),\n\t\t\t\t\tname: compiler.getUniqueName(`create_if_block`),\n\t\t\t\t});\n\n\t\t\t\tblocks.push(node.else.block);\n\t\t\t\tnode.else.initChildren(\n\t\t\t\t\tnode.else.block,\n\t\t\t\t\tstripWhitespace,\n\t\t\t\t\tnextSibling\n\t\t\t\t);\n\n\t\t\t\tif (node.else.block.dependencies.size > 0) {\n\t\t\t\t\tdynamic = true;\n\t\t\t\t\tblock.addDependencies(node.else.block.dependencies);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tattachBlocks(this);\n\n\t\tif (compiler.options.nestedTransitions) {\n\t\t\tif (hasIntros) block.addIntro();\n\t\t\tif (hasOutros) block.addOutro();\n\t\t}\n\n\t\tblocks.forEach(block => {\n\t\t\tblock.hasUpdateMethod = dynamic;\n\t\t\tblock.hasIntroMethod = hasIntros;\n\t\t\tblock.hasOutroMethod = hasOutros;\n\t\t});\n\n\t\tcompiler.target.blocks.push(...blocks);\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst name = this.var;\n\n\t\tconst needsAnchor = this.next ? !this.next.isDomNode() : !parentNode || !this.parent.isDomNode();\n\t\tconst anchor = needsAnchor\n\t\t\t? block.getUniqueName(`${name}_anchor`)\n\t\t\t: (this.next && this.next.var) || 'null';\n\n\t\tconst branches = this.getBranches(block, parentNode, parentNodes, this);\n\n\t\tconst hasElse = isElseBranch(branches[branches.length - 1]);\n\t\tconst if_name = hasElse ? '' : `if (${name}) `;\n\n\t\tconst dynamic = branches[0].hasUpdateMethod; // can use [0] as proxy for all, since they necessarily have the same value\n\t\tconst hasOutros = branches[0].hasOutroMethod;\n\n\t\tconst vars = { name, anchor, if_name, hasElse };\n\n\t\tif (this.else) {\n\t\t\tif (hasOutros) {\n\t\t\t\tthis.buildCompoundWithOutros(block, parentNode, parentNodes, branches, dynamic, vars);\n\n\t\t\t\tif (this.compiler.options.nestedTransitions) {\n\t\t\t\t\tblock.builders.outro.addLine(\n\t\t\t\t\t\t`${name}.o(#outrocallback);`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.buildCompound(block, parentNode, parentNodes, branches, dynamic, vars);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.buildSimple(block, parentNode, parentNodes, branches[0], dynamic, vars);\n\n\t\t\tif (hasOutros && this.compiler.options.nestedTransitions) {\n\t\t\t\tblock.builders.outro.addLine(\n\t\t\t\t\t`if (${name}) ${name}.o(#outrocallback);`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tblock.builders.create.addLine(`${if_name}${name}.c();`);\n\n\t\tif (parentNodes) {\n\t\t\tblock.builders.claim.addLine(\n\t\t\t\t`${if_name}${name}.l(${parentNodes});`\n\t\t\t);\n\t\t}\n\n\t\tif (needsAnchor) {\n\t\t\tblock.addElement(\n\t\t\t\tanchor,\n\t\t\t\t`@createComment()`,\n\t\t\t\tparentNodes && `@createComment()`,\n\t\t\t\tparentNode\n\t\t\t);\n\t\t}\n\t}\n\n\tbuildCompound(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string,\n\t\tbranches,\n\t\tdynamic,\n\t\t{ name, anchor, hasElse, if_name }\n\t) {\n\t\tconst select_block_type = this.compiler.getUniqueName(`select_block_type`);\n\t\tconst current_block_type = block.getUniqueName(`current_block_type`);\n\t\tconst current_block_type_and = hasElse ? '' : `${current_block_type} && `;\n\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tfunction ${select_block_type}(ctx) {\n\t\t\t\t${branches\n\t\t\t\t\t.map(({ condition, block }) => `${condition ? `if (${condition}) ` : ''}return ${block};`)\n\t\t\t\t\t.join('\\n')}\n\t\t\t}\n\t\t`);\n\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tvar ${current_block_type} = ${select_block_type}(ctx);\n\t\t\tvar ${name} = ${current_block_type_and}${current_block_type}(#component, ctx);\n\t\t`);\n\n\t\tconst mountOrIntro = branches[0].hasIntroMethod ? 'i' : 'm';\n\n\t\tconst initialMountNode = parentNode || '#target';\n\t\tconst anchorNode = parentNode ? 'null' : 'anchor';\n\t\tblock.builders.mount.addLine(\n\t\t\t`${if_name}${name}.${mountOrIntro}(${initialMountNode}, ${anchorNode});`\n\t\t);\n\n\t\tconst updateMountNode = this.getUpdateMountNode(anchor);\n\n\t\tconst changeBlock = deindent`\n\t\t\t${hasElse\n\t\t\t\t? deindent`\n\t\t\t\t\t${name}.d(1);\n\t\t\t\t`\n\t\t\t\t: deindent`\n\t\t\t\t\tif (${name}) {\n\t\t\t\t\t\t${name}.d(1);\n\t\t\t\t\t}`}\n\t\t\t${name} = ${current_block_type_and}${current_block_type}(#component, ctx);\n\t\t\t${if_name}${name}.c();\n\t\t\t${if_name}${name}.${mountOrIntro}(${updateMountNode}, ${anchor});\n\t\t`;\n\n\t\tif (dynamic) {\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\tif (${current_block_type} === (${current_block_type} = ${select_block_type}(ctx)) && ${name}) {\n\t\t\t\t\t${name}.p(changed, ctx);\n\t\t\t\t} else {\n\t\t\t\t\t${changeBlock}\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\tif (${current_block_type} !== (${current_block_type} = ${select_block_type}(ctx))) {\n\t\t\t\t\t${changeBlock}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.builders.destroy.addLine(`${if_name}${name}.d(${parentNode ? '' : 'detach'});`);\n\t}\n\n\t// if any of the siblings have outros, we need to keep references to the blocks\n\t// (TODO does this only apply to bidi transitions?)\n\tbuildCompoundWithOutros(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string,\n\t\tbranches,\n\t\tdynamic,\n\t\t{ name, anchor, hasElse }\n\t) {\n\t\tconst select_block_type = block.getUniqueName(`select_block_type`);\n\t\tconst current_block_type_index = block.getUniqueName(`current_block_type_index`);\n\t\tconst previous_block_index = block.getUniqueName(`previous_block_index`);\n\t\tconst if_block_creators = block.getUniqueName(`if_block_creators`);\n\t\tconst if_blocks = block.getUniqueName(`if_blocks`);\n\n\t\tconst if_current_block_type_index = hasElse\n\t\t\t? ''\n\t\t\t: `if (~${current_block_type_index}) `;\n\n\t\tblock.addVariable(current_block_type_index);\n\t\tblock.addVariable(name);\n\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tvar ${if_block_creators} = [\n\t\t\t\t${branches.map(branch => branch.block).join(',\\n')}\n\t\t\t];\n\n\t\t\tvar ${if_blocks} = [];\n\n\t\t\tfunction ${select_block_type}(ctx) {\n\t\t\t\t${branches\n\t\t\t\t\t.map(({ condition, block }, i) => `${condition ? `if (${condition}) ` : ''}return ${block ? i : -1};`)\n\t\t\t\t\t.join('\\n')}\n\t\t\t}\n\t\t`);\n\n\t\tif (hasElse) {\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\t${current_block_type_index} = ${select_block_type}(ctx);\n\t\t\t\t${name} = ${if_blocks}[${current_block_type_index}] = ${if_block_creators}[${current_block_type_index}](#component, ctx);\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\tif (~(${current_block_type_index} = ${select_block_type}(ctx))) {\n\t\t\t\t\t${name} = ${if_blocks}[${current_block_type_index}] = ${if_block_creators}[${current_block_type_index}](#component, ctx);\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tconst mountOrIntro = branches[0].hasIntroMethod ? 'i' : 'm';\n\t\tconst initialMountNode = parentNode || '#target';\n\t\tconst anchorNode = parentNode ? 'null' : 'anchor';\n\n\t\tblock.builders.mount.addLine(\n\t\t\t`${if_current_block_type_index}${if_blocks}[${current_block_type_index}].${mountOrIntro}(${initialMountNode}, ${anchorNode});`\n\t\t);\n\n\t\tconst updateMountNode = this.getUpdateMountNode(anchor);\n\n\t\tconst destroyOldBlock = deindent`\n\t\t\t@transitionManager.groupOutros();\n\t\t\t${name}.o(function() {\n\t\t\t\t${if_blocks}[${previous_block_index}].d(1);\n\t\t\t\t${if_blocks}[${previous_block_index}] = null;\n\t\t\t});\n\t\t`;\n\n\t\tconst createNewBlock = deindent`\n\t\t\t${name} = ${if_blocks}[${current_block_type_index}];\n\t\t\tif (!${name}) {\n\t\t\t\t${name} = ${if_blocks}[${current_block_type_index}] = ${if_block_creators}[${current_block_type_index}](#component, ctx);\n\t\t\t\t${name}.c();\n\t\t\t}\n\t\t\t${name}.${mountOrIntro}(${updateMountNode}, ${anchor});\n\t\t`;\n\n\t\tconst changeBlock = hasElse\n\t\t\t? deindent`\n\t\t\t\t${destroyOldBlock}\n\n\t\t\t\t${createNewBlock}\n\t\t\t`\n\t\t\t: deindent`\n\t\t\t\tif (${name}) {\n\t\t\t\t\t${destroyOldBlock}\n\t\t\t\t}\n\n\t\t\t\tif (~${current_block_type_index}) {\n\t\t\t\t\t${createNewBlock}\n\t\t\t\t} else {\n\t\t\t\t\t${name} = null;\n\t\t\t\t}\n\t\t\t`;\n\n\t\tif (dynamic) {\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\tvar ${previous_block_index} = ${current_block_type_index};\n\t\t\t\t${current_block_type_index} = ${select_block_type}(ctx);\n\t\t\t\tif (${current_block_type_index} === ${previous_block_index}) {\n\t\t\t\t\t${if_current_block_type_index}${if_blocks}[${current_block_type_index}].p(changed, ctx);\n\t\t\t\t} else {\n\t\t\t\t\t${changeBlock}\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.builders.update.addBlock(deindent`\n\t\t\t\tvar ${previous_block_index} = ${current_block_type_index};\n\t\t\t\t${current_block_type_index} = ${select_block_type}(ctx);\n\t\t\t\tif (${current_block_type_index} !== ${previous_block_index}) {\n\t\t\t\t\t${changeBlock}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\tblock.builders.destroy.addLine(deindent`\n\t\t\t${if_current_block_type_index}${if_blocks}[${current_block_type_index}].d(${parentNode ? '' : 'detach'});\n\t\t`);\n\t}\n\n\tbuildSimple(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string,\n\t\tbranch,\n\t\tdynamic,\n\t\t{ name, anchor, if_name }\n\t) {\n\t\tblock.builders.init.addBlock(deindent`\n\t\t\tvar ${name} = (${branch.condition}) && ${branch.block}(#component, ctx);\n\t\t`);\n\n\t\tconst mountOrIntro = branch.hasIntroMethod ? 'i' : 'm';\n\t\tconst initialMountNode = parentNode || '#target';\n\t\tconst anchorNode = parentNode ? 'null' : 'anchor';\n\n\t\tblock.builders.mount.addLine(\n\t\t\t`if (${name}) ${name}.${mountOrIntro}(${initialMountNode}, ${anchorNode});`\n\t\t);\n\n\t\tconst updateMountNode = this.getUpdateMountNode(anchor);\n\n\t\tconst enter = dynamic\n\t\t\t? (branch.hasIntroMethod || branch.hasOutroMethod)\n\t\t\t\t? deindent`\n\t\t\t\t\tif (${name}) {\n\t\t\t\t\t\t${name}.p(changed, ctx);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${name} = ${branch.block}(#component, ctx);\n\t\t\t\t\t\tif (${name}) ${name}.c();\n\t\t\t\t\t}\n\n\t\t\t\t\t${name}.i(${updateMountNode}, ${anchor});\n\t\t\t\t`\n\t\t\t\t: deindent`\n\t\t\t\t\tif (${name}) {\n\t\t\t\t\t\t${name}.p(changed, ctx);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t${name} = ${branch.block}(#component, ctx);\n\t\t\t\t\t\t${name}.c();\n\t\t\t\t\t\t${name}.m(${updateMountNode}, ${anchor});\n\t\t\t\t\t}\n\t\t\t\t`\n\t\t\t: (branch.hasIntroMethod || branch.hasOutroMethod)\n\t\t\t\t? deindent`\n\t\t\t\t\tif (!${name}) {\n\t\t\t\t\t\t${name} = ${branch.block}(#component, ctx);\n\t\t\t\t\t\t${name}.c();\n\t\t\t\t\t}\n\t\t\t\t\t${name}.i(${updateMountNode}, ${anchor});\n\t\t\t\t`\n\t\t\t\t: deindent`\n\t\t\t\t\tif (!${name}) {\n\t\t\t\t\t\t${name} = ${branch.block}(#component, ctx);\n\t\t\t\t\t\t${name}.c();\n\t\t\t\t\t\t${name}.m(${updateMountNode}, ${anchor});\n\t\t\t\t\t}\n\t\t\t\t`;\n\n\t\t// no `p()` here — we don't want to update outroing nodes,\n\t\t// as that will typically result in glitching\n\t\tconst exit = branch.hasOutroMethod\n\t\t\t? deindent`\n\t\t\t\t@transitionManager.groupOutros();\n\t\t\t\t${name}.o(function() {\n\t\t\t\t\t${name}.d(1);\n\t\t\t\t\t${name} = null;\n\t\t\t\t});\n\t\t\t`\n\t\t\t: deindent`\n\t\t\t\t${name}.d(1);\n\t\t\t\t${name} = null;\n\t\t\t`;\n\n\t\tblock.builders.update.addBlock(deindent`\n\t\t\tif (${branch.condition}) {\n\t\t\t\t${enter}\n\t\t\t} else if (${name}) {\n\t\t\t\t${exit}\n\t\t\t}\n\t\t`);\n\n\t\tblock.builders.destroy.addLine(`${if_name}${name}.d(${parentNode ? '' : 'detach'});`);\n\t}\n\n\tgetBranches(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string,\n\t\tnode: IfBlock\n\t) {\n\t\tconst branches = [\n\t\t\t{\n\t\t\t\tcondition: node.expression.snippet,\n\t\t\t\tblock: node.block.name,\n\t\t\t\thasUpdateMethod: node.block.hasUpdateMethod,\n\t\t\t\thasIntroMethod: node.block.hasIntroMethod,\n\t\t\t\thasOutroMethod: node.block.hasOutroMethod,\n\t\t\t},\n\t\t];\n\n\t\tthis.visitChildren(block, node);\n\n\t\tif (isElseIf(node.else)) {\n\t\t\tbranches.push(\n\t\t\t\t...this.getBranches(block, parentNode, parentNodes, node.else.children[0])\n\t\t\t);\n\t\t} else {\n\t\t\tbranches.push({\n\t\t\t\tcondition: null,\n\t\t\t\tblock: node.else ? node.else.block.name : null,\n\t\t\t\thasUpdateMethod: node.else ? node.else.block.hasUpdateMethod : false,\n\t\t\t\thasIntroMethod: node.else ? node.else.block.hasIntroMethod : false,\n\t\t\t\thasOutroMethod: node.else ? node.else.block.hasOutroMethod : false,\n\t\t\t});\n\n\t\t\tif (node.else) {\n\t\t\t\tthis.visitChildren(block, node.else);\n\t\t\t}\n\t\t}\n\n\t\treturn branches;\n\t}\n\n\tssr() {\n\t\tconst { compiler } = this;\n\t\tconst { snippet } = this.expression;\n\n\t\tcompiler.target.append('${ ' + snippet + ' ? `');\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.ssr();\n\t\t});\n\n\t\tcompiler.target.append('` : `');\n\n\t\tif (this.else) {\n\t\t\tthis.else.children.forEach((child: Node) => {\n\t\t\t\tchild.ssr();\n\t\t\t});\n\t\t}\n\n\t\tcompiler.target.append('` }');\n\t}\n\n\tvisitChildren(block: Block, node: Node) {\n\t\tnode.children.forEach((child: Node) => {\n\t\t\tchild.build(node.block, null, 'nodes');\n\t\t});\n\t}\n}","import Node from './Node';\nimport Expression from './Expression';\nimport Block from '../../dom/Block';\n\nexport default class Tag extends Node {\n\texpression: Expression;\n\tshouldCache: boolean;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.expression = new Expression(compiler, this, scope, info.expression);\n\n\t\tthis.shouldCache = (\n\t\t\tinfo.expression.type !== 'Identifier' ||\n\t\t\t(this.expression.dependencies.size && scope.names.has(info.expression.name))\n\t\t);\n\t}\n\n\tinit(block: Block) {\n\t\tthis.cannotUseInnerHTML();\n\t\tthis.var = block.getUniqueName(this.type === 'MustacheTag' ? 'text' : 'raw');\n\t\tblock.addDependencies(this.expression.dependencies);\n\t}\n\n\trenameThisMethod(\n\t\tblock: Block,\n\t\tupdate: ((value: string) => string)\n\t) {\n\t\tconst { snippet, dependencies } = this.expression;\n\n\t\tconst value = this.shouldCache && block.getUniqueName(`${this.var}_value`);\n\t\tconst content = this.shouldCache ? value : snippet;\n\n\t\tif (this.shouldCache) block.addVariable(value, snippet);\n\n\t\tif (dependencies.size) {\n\t\t\tconst changedCheck = (\n\t\t\t\t(block.hasOutros ? `#outroing || ` : '') +\n\t\t\t\t[...dependencies].map((dependency: string) => `changed.${dependency}`).join(' || ')\n\t\t\t);\n\n\t\t\tconst updateCachedValue = `${value} !== (${value} = ${snippet})`;\n\n\t\t\tconst condition = this.shouldCache ?\n\t\t\t\t(dependencies.size ? `(${changedCheck}) && ${updateCachedValue}` : updateCachedValue) :\n\t\t\t\tchangedCheck;\n\n\t\t\tblock.builders.update.addConditional(\n\t\t\t\tcondition,\n\t\t\t\tupdate(content)\n\t\t\t);\n\t\t}\n\n\t\treturn { init: content };\n\t}\n}","import Node from './shared/Node';\nimport Tag from './shared/Tag';\nimport Block from '../dom/Block';\n\nexport default class MustacheTag extends Tag {\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst { init } = this.renameThisMethod(\n\t\t\tblock,\n\t\t\tvalue => `${this.var}.data = ${value};`\n\t\t);\n\n\t\tblock.addElement(\n\t\t\tthis.var,\n\t\t\t`@createText(${init})`,\n\t\t\tparentNodes && `@claimText(${parentNodes}, ${init})`,\n\t\t\tparentNode\n\t\t);\n\t}\n\n\tremount(name: string) {\n\t\treturn `@appendNode(${this.var}, ${name}._slotted.default);`;\n\t}\n\n\tssr() {\n\t\tthis.compiler.target.append(\n\t\t\tthis.parent &&\n\t\t\tthis.parent.type === 'Element' &&\n\t\t\tthis.parent.name === 'style'\n\t\t\t\t? '${' + this.expression.snippet + '}'\n\t\t\t\t: '${@escape(' + this.expression.snippet + ')}'\n\t\t);\n\t}\n}","import deindent from '../../utils/deindent';\nimport Node from './shared/Node';\nimport Tag from './shared/Tag';\nimport Block from '../dom/Block';\n\nexport default class RawMustacheTag extends Tag {\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst name = this.var;\n\n\t\tconst needsAnchorBefore = this.prev ? this.prev.type !== 'Element' : !parentNode;\n\t\tconst needsAnchorAfter = this.next ? this.next.type !== 'Element' : !parentNode;\n\n\t\tconst anchorBefore = needsAnchorBefore\n\t\t\t? block.getUniqueName(`${name}_before`)\n\t\t\t: (this.prev && this.prev.var) || 'null';\n\n\t\tconst anchorAfter = needsAnchorAfter\n\t\t\t? block.getUniqueName(`${name}_after`)\n\t\t\t: (this.next && this.next.var) || 'null';\n\n\t\tlet detach: string;\n\t\tlet insert: (content: string) => string;\n\t\tlet useInnerHTML = false;\n\n\t\tif (anchorBefore === 'null' && anchorAfter === 'null') {\n\t\t\tuseInnerHTML = true;\n\t\t\tdetach = `${parentNode}.innerHTML = '';`;\n\t\t\tinsert = content => `${parentNode}.innerHTML = ${content};`;\n\t\t} else if (anchorBefore === 'null') {\n\t\t\tdetach = `@detachBefore(${anchorAfter});`;\n\t\t\tinsert = content => `${anchorAfter}.insertAdjacentHTML(\"beforebegin\", ${content});`;\n\t\t} else if (anchorAfter === 'null') {\n\t\t\tdetach = `@detachAfter(${anchorBefore});`;\n\t\t\tinsert = content => `${anchorBefore}.insertAdjacentHTML(\"afterend\", ${content});`;\n\t\t} else {\n\t\t\tdetach = `@detachBetween(${anchorBefore}, ${anchorAfter});`;\n\t\t\tinsert = content => `${anchorBefore}.insertAdjacentHTML(\"afterend\", ${content});`;\n\t\t}\n\n\t\tconst { init } = this.renameThisMethod(\n\t\t\tblock,\n\t\t\tcontent => deindent`\n\t\t\t\t${!useInnerHTML && detach}\n\t\t\t\t${insert(content)}\n\t\t\t`\n\t\t);\n\n\t\t// we would have used comments here, but the `insertAdjacentHTML` api only\n\t\t// exists for `Element`s.\n\t\tif (needsAnchorBefore) {\n\t\t\tblock.addElement(\n\t\t\t\tanchorBefore,\n\t\t\t\t`@createElement('noscript')`,\n\t\t\t\tparentNodes && `@createElement('noscript')`,\n\t\t\t\tparentNode,\n\t\t\t\ttrue\n\t\t\t);\n\t\t}\n\n\t\tfunction addAnchorAfter() {\n\t\t\tblock.addElement(\n\t\t\t\tanchorAfter,\n\t\t\t\t`@createElement('noscript')`,\n\t\t\t\tparentNodes && `@createElement('noscript')`,\n\t\t\t\tparentNode\n\t\t\t);\n\t\t}\n\n\t\tif (needsAnchorAfter && anchorBefore === 'null') {\n\t\t\t// anchorAfter needs to be in the DOM before we\n\t\t\t// insert the HTML...\n\t\t\taddAnchorAfter();\n\t\t}\n\n\t\tblock.builders.mount.addLine(insert(init));\n\n\t\tif (!parentNode) {\n\t\t\tblock.builders.destroy.addConditional('detach', needsAnchorBefore\n\t\t\t\t? `${detach}\\n@detachNode(${anchorBefore});`\n\t\t\t\t: detach);\n\t\t}\n\n\t\tif (needsAnchorAfter && anchorBefore !== 'null') {\n\t\t\t// ...otherwise it should go afterwards\n\t\t\taddAnchorAfter();\n\t\t}\n\t}\n\n\tremount(name: string) {\n\t\treturn `@appendNode(${this.var}, ${name}._slotted.default);`;\n\t}\n\n\tssr() {\n\t\tthis.compiler.target.append('${' + this.expression.snippet + '}');\n\t}\n}","import deindent from '../../utils/deindent';\nimport isValidIdentifier from '../../utils/isValidIdentifier';\nimport reservedNames from '../../utils/reservedNames';\nimport Node from './shared/Node';\nimport Element from './Element';\nimport Attribute from './Attribute';\nimport Block from '../dom/Block';\nimport { quotePropIfNecessary } from '../../utils/quoteIfNecessary';\n\nfunction sanitize(name) {\n\treturn name.replace(/[^a-zA-Z]+/g, '_').replace(/^_/, '').replace(/_$/, '');\n}\n\nexport default class Slot extends Element {\n\ttype: 'Element';\n\tname: string;\n\tattributes: Attribute[];\n\tchildren: Node[];\n\n\tinit(\n\t\tblock: Block,\n\t\tstripWhitespace: boolean,\n\t\tnextSibling: Node\n\t) {\n\t\tthis.cannotUseInnerHTML();\n\n\t\tthis.var = block.getUniqueName('slot');\n\n\t\tif (this.children.length) {\n\t\t\tthis.initChildren(block, stripWhitespace, nextSibling);\n\t\t}\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst { compiler } = this;\n\n\t\tconst slotName = this.getStaticAttributeValue('name') || 'default';\n\t\tcompiler.slots.add(slotName);\n\n\t\tconst content_name = block.getUniqueName(`slot_content_${sanitize(slotName)}`);\n\t\tconst prop = quotePropIfNecessary(slotName);\n\t\tblock.addVariable(content_name, `#component._slotted${prop}`);\n\n\t\tconst needsAnchorBefore = this.prev ? this.prev.type !== 'Element' : !parentNode;\n\t\tconst needsAnchorAfter = this.next ? this.next.type !== 'Element' : !parentNode;\n\n\t\tconst anchorBefore = needsAnchorBefore\n\t\t\t? block.getUniqueName(`${content_name}_before`)\n\t\t\t: (this.prev && this.prev.var) || 'null';\n\n\t\tconst anchorAfter = needsAnchorAfter\n\t\t\t? block.getUniqueName(`${content_name}_after`)\n\t\t\t: (this.next && this.next.var) || 'null';\n\n\t\tif (needsAnchorBefore) block.addVariable(anchorBefore);\n\t\tif (needsAnchorAfter) block.addVariable(anchorAfter);\n\n\t\tlet mountBefore = block.builders.mount.toString();\n\t\tlet destroyBefore = block.builders.destroy.toString();\n\n\t\tblock.builders.create.pushCondition(`!${content_name}`);\n\t\tblock.builders.hydrate.pushCondition(`!${content_name}`);\n\t\tblock.builders.mount.pushCondition(`!${content_name}`);\n\t\tblock.builders.update.pushCondition(`!${content_name}`);\n\t\tblock.builders.destroy.pushCondition(`!${content_name}`);\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.build(block, parentNode, parentNodes);\n\t\t});\n\n\t\tblock.builders.create.popCondition();\n\t\tblock.builders.hydrate.popCondition();\n\t\tblock.builders.mount.popCondition();\n\t\tblock.builders.update.popCondition();\n\t\tblock.builders.destroy.popCondition();\n\n\t\tconst mountLeadin = block.builders.mount.toString() !== mountBefore\n\t\t\t? `else`\n\t\t\t: `if (${content_name})`;\n\n\t\tif (parentNode) {\n\t\t\tblock.builders.mount.addBlock(deindent`\n\t\t\t\t${mountLeadin} {\n\t\t\t\t\t${needsAnchorBefore && `@appendNode(${anchorBefore} || (${anchorBefore} = @createComment()), ${parentNode});`}\n\t\t\t\t\t@appendNode(${content_name}, ${parentNode});\n\t\t\t\t\t${needsAnchorAfter && `@appendNode(${anchorAfter} || (${anchorAfter} = @createComment()), ${parentNode});`}\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.builders.mount.addBlock(deindent`\n\t\t\t\t${mountLeadin} {\n\t\t\t\t\t${needsAnchorBefore && `@insertNode(${anchorBefore} || (${anchorBefore} = @createComment()), #target, anchor);`}\n\t\t\t\t\t@insertNode(${content_name}, #target, anchor);\n\t\t\t\t\t${needsAnchorAfter && `@insertNode(${anchorAfter} || (${anchorAfter} = @createComment()), #target, anchor);`}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\t// if the slot is unmounted, move nodes back into the document fragment,\n\t\t// so that it can be reinserted later\n\t\t// TODO so that this can work with public API, component._slotted should\n\t\t// be all fragments, derived from options.slots. Not === options.slots\n\t\tconst unmountLeadin = block.builders.destroy.toString() !== destroyBefore\n\t\t\t? `else`\n\t\t\t: `if (${content_name})`;\n\n\t\tif (anchorBefore === 'null' && anchorAfter === 'null') {\n\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\t${unmountLeadin} {\n\t\t\t\t\t@reinsertChildren(${parentNode}, ${content_name});\n\t\t\t\t}\n\t\t\t`);\n\t\t} else if (anchorBefore === 'null') {\n\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\t${unmountLeadin} {\n\t\t\t\t\t@reinsertBefore(${anchorAfter}, ${content_name});\n\t\t\t\t}\n\t\t\t`);\n\t\t} else if (anchorAfter === 'null') {\n\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\t${unmountLeadin} {\n\t\t\t\t\t@reinsertAfter(${anchorBefore}, ${content_name});\n\t\t\t\t}\n\t\t\t`);\n\t\t} else {\n\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\t${unmountLeadin} {\n\t\t\t\t\t@reinsertBetween(${anchorBefore}, ${anchorAfter}, ${content_name});\n\t\t\t\t\t@detachNode(${anchorBefore});\n\t\t\t\t\t@detachNode(${anchorAfter});\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\t}\n\n\tgetStaticAttributeValue(name: string) {\n\t\tconst attribute = this.attributes.find(\n\t\t\tattr => attr.name.toLowerCase() === name\n\t\t);\n\n\t\tif (!attribute) return null;\n\n\t\tif (attribute.isTrue) return true;\n\t\tif (attribute.chunks.length === 0) return '';\n\n\t\tif (attribute.chunks.length === 1 && attribute.chunks[0].type === 'Text') {\n\t\t\treturn attribute.chunks[0].data;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tssr() {\n\t\tconst name = this.attributes.find(attribute => attribute.name === 'name');\n\n\t\tconst slotName = name && name.chunks[0].data || 'default';\n\t\tconst prop = quotePropIfNecessary(slotName);\n\n\t\tthis.compiler.target.append(`\\${options && options.slotted && options.slotted${prop} ? options.slotted${prop}() : \\``);\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.ssr();\n\t\t});\n\n\t\tthis.compiler.target.append(`\\`}`);\n\t}\n}","import { stringify } from '../../utils/stringify';\nimport Node from './shared/Node';\nimport Block from '../dom/Block';\nimport mapChildren from './shared/mapChildren';\n\nexport default class Title extends Node {\n\ttype: 'Title';\n\tchildren: any[]; // TODO\n\tshouldCache: boolean;\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\t\tthis.children = mapChildren(compiler, parent, scope, info.children);\n\n\t\tthis.shouldCache = info.children.length === 1\n\t\t\t? (\n\t\t\t\tinfo.children[0].type !== 'Identifier' ||\n\t\t\t\tscope.names.has(info.children[0].name)\n\t\t\t)\n\t\t\t: true;\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst isDynamic = !!this.children.find(node => node.type !== 'Text');\n\n\t\tif (isDynamic) {\n\t\t\tlet value;\n\n\t\t\tconst allDependencies = new Set();\n\n\t\t\t// TODO some of this code is repeated in Tag.ts — would be good to\n\t\t\t// DRY it out if that's possible without introducing crazy indirection\n\t\t\tif (this.children.length === 1) {\n\t\t\t\t// single {{tag}} — may be a non-string\n\t\t\t\tconst { expression } = this.children[0];\n\t\t\t\tconst { dependencies, snippet } = this.children[0].expression;\n\n\t\t\t\tvalue = snippet;\n\t\t\t\tdependencies.forEach(d => {\n\t\t\t\t\tallDependencies.add(d);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// '{foo} {bar}' — treat as string concatenation\n\t\t\t\tvalue =\n\t\t\t\t\t(this.children[0].type === 'Text' ? '' : `\"\" + `) +\n\t\t\t\t\tthis.children\n\t\t\t\t\t\t.map((chunk: Node) => {\n\t\t\t\t\t\t\tif (chunk.type === 'Text') {\n\t\t\t\t\t\t\t\treturn stringify(chunk.data);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst { dependencies, snippet } = chunk.expression;\n\n\t\t\t\t\t\t\t\tdependencies.forEach(d => {\n\t\t\t\t\t\t\t\t\tallDependencies.add(d);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn chunk.expression.getPrecedence() <= 13 ? `(${snippet})` : snippet;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(' + ');\n\t\t\t}\n\n\t\t\tconst last = this.shouldCache && block.getUniqueName(\n\t\t\t\t`title_value`\n\t\t\t);\n\n\t\t\tif (this.shouldCache) block.addVariable(last);\n\n\t\t\tlet updater;\n\t\t\tconst init = this.shouldCache ? `${last} = ${value}` : value;\n\n\t\t\tblock.builders.init.addLine(\n\t\t\t\t`document.title = ${init};`\n\t\t\t);\n\t\t\tupdater = `document.title = ${this.shouldCache ? last : value};`;\n\n\t\t\tif (allDependencies.size) {\n\t\t\t\tconst dependencies = Array.from(allDependencies);\n\t\t\t\tconst changedCheck = (\n\t\t\t\t\t( block.hasOutros ? `#outroing || ` : '' ) +\n\t\t\t\t\tdependencies.map(dependency => `changed.${dependency}`).join(' || ')\n\t\t\t\t);\n\n\t\t\t\tconst updateCachedValue = `${last} !== (${last} = ${value})`;\n\n\t\t\t\tconst condition = this.shouldCache ?\n\t\t\t\t\t( dependencies.length ? `(${changedCheck}) && ${updateCachedValue}` : updateCachedValue ) :\n\t\t\t\t\tchangedCheck;\n\n\t\t\t\tblock.builders.update.addConditional(\n\t\t\t\t\tcondition,\n\t\t\t\t\tupdater\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst value = stringify(this.children[0].data);\n\t\t\tblock.builders.hydrate.addLine(`document.title = ${value};`);\n\t\t}\n\t}\n\n\tssr() {\n\t\tthis.compiler.target.append(`<title>`);\n\n\t\tthis.children.forEach((child: Node) => {\n\t\t\tchild.ssr();\n\t\t});\n\n\t\tthis.compiler.target.append(`</title>`);\n\t}\n}","import CodeBuilder from '../../utils/CodeBuilder';\nimport deindent from '../../utils/deindent';\nimport { stringify } from '../../utils/stringify';\nimport flattenReference from '../../utils/flattenReference';\nimport isVoidElementName from '../../utils/isVoidElementName';\nimport validCalleeObjects from '../../utils/validCalleeObjects';\nimport reservedNames from '../../utils/reservedNames';\nimport Node from './shared/Node';\nimport Block from '../dom/Block';\nimport Binding from './Binding';\nimport EventHandler from './EventHandler';\n\nconst associatedEvents = {\n\tinnerWidth: 'resize',\n\tinnerHeight: 'resize',\n\touterWidth: 'resize',\n\touterHeight: 'resize',\n\n\tscrollX: 'scroll',\n\tscrollY: 'scroll',\n};\n\nconst properties = {\n\tscrollX: 'pageXOffset',\n\tscrollY: 'pageYOffset'\n};\n\nconst readonly = new Set([\n\t'innerWidth',\n\t'innerHeight',\n\t'outerWidth',\n\t'outerHeight',\n\t'online',\n]);\n\nexport default class Window extends Node {\n\ttype: 'Window';\n\thandlers: EventHandler[];\n\tbindings: Binding[];\n\n\tconstructor(compiler, parent, scope, info) {\n\t\tsuper(compiler, parent, scope, info);\n\n\t\tthis.handlers = [];\n\t\tthis.bindings = [];\n\n\t\tinfo.attributes.forEach(node => {\n\t\t\tif (node.type === 'EventHandler') {\n\t\t\t\tthis.handlers.push(new EventHandler(compiler, this, scope, node));\n\t\t\t} else if (node.type === 'Binding') {\n\t\t\t\tthis.bindings.push(new Binding(compiler, this, scope, node));\n\t\t\t}\n\t\t});\n\t}\n\n\tbuild(\n\t\tblock: Block,\n\t\tparentNode: string,\n\t\tparentNodes: string\n\t) {\n\t\tconst { compiler } = this;\n\n\t\tconst events = {};\n\t\tconst bindings: Record<string, string> = {};\n\n\t\tthis.handlers.forEach(handler => {\n\t\t\t// TODO verify that it's a valid callee (i.e. built-in or declared method)\n\t\t\tcompiler.addSourcemapLocations(handler.expression);\n\n\t\t\tconst isCustomEvent = compiler.events.has(handler.name);\n\n\t\t\tlet usesState = handler.dependencies.size > 0;\n\n\t\t\thandler.render(compiler, block, false); // TODO hoist?\n\n\t\t\tconst handlerName = block.getUniqueName(`onwindow${handler.name}`);\n\t\t\tconst handlerBody = deindent`\n\t\t\t\t${usesState && `var ctx = #component.get();`}\n\t\t\t\t${handler.snippet};\n\t\t\t`;\n\n\t\t\tif (isCustomEvent) {\n\t\t\t\t// TODO dry this out\n\t\t\t\tblock.addVariable(handlerName);\n\n\t\t\t\tblock.builders.hydrate.addBlock(deindent`\n\t\t\t\t\t${handlerName} = %events-${handler.name}.call(#component, window, function(event) {\n\t\t\t\t\t\t${handlerBody}\n\t\t\t\t\t});\n\t\t\t\t`);\n\n\t\t\t\tblock.builders.destroy.addLine(deindent`\n\t\t\t\t\t${handlerName}.destroy();\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\t\tfunction ${handlerName}(event) {\n\t\t\t\t\t\t${handlerBody}\n\t\t\t\t\t}\n\t\t\t\t\twindow.addEventListener(\"${handler.name}\", ${handlerName});\n\t\t\t\t`);\n\n\t\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\t\twindow.removeEventListener(\"${handler.name}\", ${handlerName});\n\t\t\t\t`);\n\t\t\t}\n\t\t});\n\n\t\tthis.bindings.forEach(binding => {\n\t\t\t// in dev mode, throw if read-only values are written to\n\t\t\tif (readonly.has(binding.name)) {\n\t\t\t\tcompiler.target.readonly.add(binding.value.node.name);\n\t\t\t}\n\n\t\t\tbindings[binding.name] = binding.value.node.name;\n\n\t\t\t// bind:online is a special case, we need to listen for two separate events\n\t\t\tif (binding.name === 'online') return;\n\n\t\t\tconst associatedEvent = associatedEvents[binding.name];\n\t\t\tconst property = properties[binding.name] || binding.name;\n\n\t\t\tif (!events[associatedEvent]) events[associatedEvent] = [];\n\t\t\tevents[associatedEvent].push(\n\t\t\t\t`${binding.value.node.name}: this.${property}`\n\t\t\t);\n\n\t\t\t// add initial value\n\t\t\tcompiler.target.metaBindings.push(\n\t\t\t\t`this._state.${binding.value.node.name} = window.${property};`\n\t\t\t);\n\t\t});\n\n\t\tconst lock = block.getUniqueName(`window_updating`);\n\t\tconst clear = block.getUniqueName(`clear_window_updating`);\n\t\tconst timeout = block.getUniqueName(`window_updating_timeout`);\n\n\t\tObject.keys(events).forEach(event => {\n\t\t\tconst handlerName = block.getUniqueName(`onwindow${event}`);\n\t\t\tconst props = events[event].join(',\\n');\n\n\t\t\tif (event === 'scroll') {\n\t\t\t\t// TODO other bidirectional bindings...\n\t\t\t\tblock.addVariable(lock, 'false');\n\t\t\t\tblock.addVariable(clear, `function() { ${lock} = false; }`);\n\t\t\t\tblock.addVariable(timeout);\n\t\t\t}\n\n\t\t\tconst handlerBody = deindent`\n\t\t\t\t${event === 'scroll' && deindent`\n\t\t\t\t\tif (${lock}) return;\n\t\t\t\t\t${lock} = true;\n\t\t\t\t`}\n\t\t\t\t${compiler.options.dev && `component._updatingReadonlyProperty = true;`}\n\n\t\t\t\t#component.set({\n\t\t\t\t\t${props}\n\t\t\t\t});\n\n\t\t\t\t${compiler.options.dev && `component._updatingReadonlyProperty = false;`}\n\t\t\t\t${event === 'scroll' && `${lock} = false;`}\n\t\t\t`;\n\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\tfunction ${handlerName}(event) {\n\t\t\t\t\t${handlerBody}\n\t\t\t\t}\n\t\t\t\twindow.addEventListener(\"${event}\", ${handlerName});\n\t\t\t`);\n\n\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\twindow.removeEventListener(\"${event}\", ${handlerName});\n\t\t\t`);\n\t\t});\n\n\t\t// special case... might need to abstract this out if we add more special cases\n\t\tif (bindings.scrollX || bindings.scrollY) {\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\t#component.on(\"state\", ({ changed, current }) => {\n\t\t\t\t\tif (${\n\t\t\t\t\t\t[bindings.scrollX, bindings.scrollY].map(\n\t\t\t\t\t\t\tbinding => binding && `changed[\"${binding}\"]`\n\t\t\t\t\t\t).filter(Boolean).join(' || ')\n\t\t\t\t\t}) {\n\t\t\t\t\t\t${lock} = true;\n\t\t\t\t\t\tclearTimeout(${timeout});\n\t\t\t\t\t\twindow.scrollTo(${\n\t\t\t\t\t\t\tbindings.scrollX ? `current[\"${bindings.scrollX}\"]` : `window.pageXOffset`\n\t\t\t\t\t\t}, ${\n\t\t\t\t\t\t\tbindings.scrollY ? `current[\"${bindings.scrollY}\"]` : `window.pageYOffset`\n\t\t\t\t\t\t});\n\t\t\t\t\t\t${timeout} = setTimeout(${clear}, 100);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t`);\n\t\t}\n\n\t\t// another special case. (I'm starting to think these are all special cases.)\n\t\tif (bindings.online) {\n\t\t\tconst handlerName = block.getUniqueName(`onlinestatuschanged`);\n\t\t\tblock.builders.init.addBlock(deindent`\n\t\t\t\tfunction ${handlerName}(event) {\n\t\t\t\t\t#component.set({ ${bindings.online}: navigator.onLine });\n\t\t\t\t}\n\t\t\t\twindow.addEventListener(\"online\", ${handlerName});\n\t\t\t\twindow.addEventListener(\"offline\", ${handlerName});\n\t\t\t`);\n\n\t\t\t// add initial value\n\t\t\tcompiler.target.metaBindings.push(\n\t\t\t\t`this._state.${bindings.online} = navigator.onLine;`\n\t\t\t);\n\n\t\t\tblock.builders.destroy.addBlock(deindent`\n\t\t\t\twindow.removeEventListener(\"online\", ${handlerName});\n\t\t\t\twindow.removeEventListener(\"offline\", ${handlerName});\n\t\t\t`);\n\t\t}\n\t}\n\n\tssr() {\n\t\t// noop\n\t}\n}\n","import AwaitBlock from '../AwaitBlock';\nimport Comment from '../Comment';\nimport Component from '../Component';\nimport EachBlock from '../EachBlock';\nimport Element from '../Element';\nimport Head from '../Head';\nimport IfBlock from '../IfBlock';\nimport MustacheTag from '../MustacheTag';\nimport RawMustacheTag from '../RawMustacheTag';\nimport Slot from '../Slot';\nimport Text from '../Text';\nimport Title from '../Title';\nimport Window from '../Window';\nimport Node from './Node';\n\nfunction getConstructor(type): typeof Node {\n\tswitch (type) {\n\t\tcase 'AwaitBlock': return AwaitBlock;\n\t\tcase 'Comment': return Comment;\n\t\tcase 'Component': return Component;\n\t\tcase 'EachBlock': return EachBlock;\n\t\tcase 'Element': return Element;\n\t\tcase 'Head': return Head;\n\t\tcase 'IfBlock': return IfBlock;\n\t\tcase 'MustacheTag': return MustacheTag;\n\t\tcase 'RawMustacheTag': return RawMustacheTag;\n\t\tcase 'Slot': return Slot;\n\t\tcase 'Text': return Text;\n\t\tcase 'Title': return Title;\n\t\tcase 'Window': return Window;\n\t\tdefault: throw new Error(`Not implemented: ${type}`);\n\t}\n}\n\nexport default function mapChildren(compiler, parent, scope, children: any[]) {\n\tlet last = null;\n\treturn children.map(child => {\n\t\tconst constructor = getConstructor(child.type);\n\t\tconst node = new constructor(compiler, parent, scope, child);\n\n\t\tif (last) last.next = node;\n\t\tnode.prev = last;\n\t\tlast = node;\n\n\t\treturn node;\n\t});\n}","import CodeBuilder from '../../utils/CodeBuilder';\nimport deindent from '../../utils/deindent';\nimport { escape } from '../../utils/stringify';\nimport Compiler from '../Compiler';\nimport { Node } from '../../interfaces';\n\nexport interface BlockOptions {\n\tparent?: Block;\n\tname: string;\n\tcompiler?: Compiler;\n\tcomment?: string;\n\tkey?: string;\n\tbindings?: Map<string, string>;\n\tdependencies?: Set<string>;\n}\n\nexport default class Block {\n\tparent?: Block;\n\tcompiler: Compiler;\n\tname: string;\n\tcomment?: string;\n\n\tkey: string;\n\tfirst: string;\n\n\tdependencies: Set<string>;\n\n\tbindings: Map<string, string>;\n\n\tbuilders: {\n\t\tinit: CodeBuilder;\n\t\tcreate: CodeBuilder;\n\t\tclaim: CodeBuilder;\n\t\thydrate: CodeBuilder;\n\t\tmount: CodeBuilder;\n\t\tmeasure: CodeBuilder;\n\t\tfix: CodeBuilder;\n\t\tanimate: CodeBuilder;\n\t\tintro: CodeBuilder;\n\t\tupdate: CodeBuilder;\n\t\toutro: CodeBuilder;\n\t\tdestroy: CodeBuilder;\n\t};\n\n\tmaintainContext: boolean;\n\thasAnimation: boolean;\n\thasIntros: boolean;\n\thasOutros: boolean;\n\thasIntroMethod: boolean; // could have the method without the transition, due to siblings\n\thasOutroMethod: boolean;\n\toutros: number;\n\n\taliases: Map<string, string>;\n\tvariables: Map<string, string>;\n\tgetUniqueName: (name: string) => string;\n\n\thasUpdateMethod: boolean;\n\tautofocus: string;\n\n\tconstructor(options: BlockOptions) {\n\t\tthis.parent = options.parent;\n\t\tthis.compiler = options.compiler;\n\t\tthis.name = options.name;\n\t\tthis.comment = options.comment;\n\n\t\t// for keyed each blocks\n\t\tthis.key = options.key;\n\t\tthis.first = null;\n\n\t\tthis.dependencies = new Set();\n\n\t\tthis.bindings = options.bindings;\n\n\t\tthis.builders = {\n\t\t\tinit: new CodeBuilder(),\n\t\t\tcreate: new CodeBuilder(),\n\t\t\tclaim: new CodeBuilder(),\n\t\t\thydrate: new CodeBuilder(),\n\t\t\tmount: new CodeBuilder(),\n\t\t\tmeasure: new CodeBuilder(),\n\t\t\tfix: new CodeBuilder(),\n\t\t\tanimate: new CodeBuilder(),\n\t\t\tintro: new CodeBuilder(),\n\t\t\tupdate: new CodeBuilder(),\n\t\t\toutro: new CodeBuilder(),\n\t\t\tdestroy: new CodeBuilder(),\n\t\t};\n\n\t\tthis.hasAnimation = false;\n\t\tthis.hasIntroMethod = false; // a block could have an intro method but not intro transitions, e.g. if a sibling block has intros\n\t\tthis.hasOutroMethod = false;\n\t\tthis.outros = 0;\n\n\t\tthis.getUniqueName = this.compiler.getUniqueNameMaker();\n\t\tthis.variables = new Map();\n\n\t\tthis.aliases = new Map()\n\t\t\t.set('component', this.getUniqueName('component'))\n\t\t\t.set('ctx', this.getUniqueName('ctx'));\n\t\tif (this.key) this.aliases.set('key', this.getUniqueName('key'));\n\n\t\tthis.hasUpdateMethod = false; // determined later\n\t}\n\n\taddDependencies(dependencies: Set<string>) {\n\t\tdependencies.forEach(dependency => {\n\t\t\tthis.dependencies.add(dependency);\n\t\t});\n\t}\n\n\taddElement(\n\t\tname: string,\n\t\trenderStatement: string,\n\t\tclaimStatement: string,\n\t\tparentNode: string,\n\t\tnoDetach?: boolean\n\t) {\n\t\tthis.addVariable(name);\n\t\tthis.builders.create.addLine(`${name} = ${renderStatement};`);\n\t\tthis.builders.claim.addLine(`${name} = ${claimStatement || renderStatement};`);\n\n\t\tif (parentNode) {\n\t\t\tthis.builders.mount.addLine(`@appendNode(${name}, ${parentNode});`);\n\t\t\tif (parentNode === 'document.head') this.builders.destroy.addLine(`@detachNode(${name});`);\n\t\t} else {\n\t\t\tthis.builders.mount.addLine(`@insertNode(${name}, #target, anchor);`);\n\t\t\tif (!noDetach) this.builders.destroy.addConditional('detach', `@detachNode(${name});`);\n\t\t}\n\t}\n\n\taddIntro() {\n\t\tthis.hasIntros = this.hasIntroMethod = this.compiler.target.hasIntroTransitions = true;\n\t}\n\n\taddOutro() {\n\t\tthis.hasOutros = this.hasOutroMethod = this.compiler.target.hasOutroTransitions = true;\n\t\tthis.outros += 1;\n\t}\n\n\taddAnimation() {\n\t\tthis.hasAnimation = true;\n\t}\n\n\taddVariable(name: string, init?: string) {\n\t\tif (this.variables.has(name) && this.variables.get(name) !== init) {\n\t\t\tthrow new Error(\n\t\t\t\t`Variable '${name}' already initialised with a different value`\n\t\t\t);\n\t\t}\n\n\t\tthis.variables.set(name, init);\n\t}\n\n\talias(name: string) {\n\t\tif (!this.aliases.has(name)) {\n\t\t\tthis.aliases.set(name, this.getUniqueName(name));\n\t\t}\n\n\t\treturn this.aliases.get(name);\n\t}\n\n\tchild(options: BlockOptions) {\n\t\treturn new Block(Object.assign({}, this, { key: null }, options, { parent: this }));\n\t}\n\n\ttoString() {\n\t\tconst { dev } = this.compiler.options;\n\n\t\tlet introing;\n\t\tconst hasIntros = !this.builders.intro.isEmpty();\n\t\tif (hasIntros) {\n\t\t\tintroing = this.getUniqueName('introing');\n\t\t\tthis.addVariable(introing);\n\t\t}\n\n\t\tlet outroing;\n\t\tconst hasOutros = !this.builders.outro.isEmpty();\n\t\tif (hasOutros) {\n\t\t\toutroing = this.alias('outroing');\n\t\t\tthis.addVariable(outroing);\n\t\t}\n\n\t\tif (this.autofocus) {\n\t\t\tthis.builders.mount.addLine(`${this.autofocus}.focus();`);\n\t\t}\n\n\t\tconst properties = new CodeBuilder();\n\n\t\tlet localKey;\n\t\tif (this.key) {\n\t\t\tlocalKey = this.getUniqueName('key');\n\t\t\tproperties.addBlock(`key: ${localKey},`);\n\t\t}\n\n\t\tif (this.first) {\n\t\t\tproperties.addBlock(`first: null,`);\n\t\t\tthis.builders.hydrate.addLine(`this.first = ${this.first};`);\n\t\t}\n\n\t\tif (this.builders.create.isEmpty() && this.builders.hydrate.isEmpty()) {\n\t\t\tproperties.addBlock(`c: @noop,`);\n\t\t} else {\n\t\t\tconst hydrate = !this.builders.hydrate.isEmpty() && (\n\t\t\t\tthis.compiler.options.hydratable\n\t\t\t\t\t? `this.h()`\n\t\t\t\t\t: this.builders.hydrate\n\t\t\t);\n\n\t\t\tproperties.addBlock(deindent`\n\t\t\t\t${dev ? 'c: function create' : 'c'}() {\n\t\t\t\t\t${this.builders.create}\n\t\t\t\t\t${hydrate}\n\t\t\t\t},\n\t\t\t`);\n\t\t}\n\n\t\tif (this.compiler.options.hydratable) {\n\t\t\tif (this.builders.claim.isEmpty() && this.builders.hydrate.isEmpty()) {\n\t\t\t\tproperties.addBlock(`l: @noop,`);\n\t\t\t} else {\n\t\t\t\tproperties.addBlock(deindent`\n\t\t\t\t\t${dev ? 'l: function claim' : 'l'}(nodes) {\n\t\t\t\t\t\t${this.builders.claim}\n\t\t\t\t\t\t${!this.builders.hydrate.isEmpty() && `this.h();`}\n\t\t\t\t\t},\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.compiler.options.hydratable && !this.builders.hydrate.isEmpty()) {\n\t\t\tproperties.addBlock(deindent`\n\t\t\t\t${dev ? 'h: function hydrate' : 'h'}() {\n\t\t\t\t\t${this.builders.hydrate}\n\t\t\t\t},\n\t\t\t`);\n\t\t}\n\n\t\tif (this.builders.mount.isEmpty()) {\n\t\t\tproperties.addBlock(`m: @noop,`);\n\t\t} else {\n\t\t\tproperties.addBlock(deindent`\n\t\t\t\t${dev ? 'm: function mount' : 'm'}(#target, anchor) {\n\t\t\t\t\t${this.builders.mount}\n\t\t\t\t},\n\t\t\t`);\n\t\t}\n\n\t\tif (this.hasUpdateMethod || this.maintainContext) {\n\t\t\tif (this.builders.update.isEmpty() && !this.maintainContext) {\n\t\t\t\tproperties.addBlock(`p: @noop,`);\n\t\t\t} else {\n\t\t\t\tproperties.addBlock(deindent`\n\t\t\t\t\t${dev ? 'p: function update' : 'p'}(changed, ${this.maintainContext ? '_ctx' : 'ctx'}) {\n\t\t\t\t\t\t${this.maintainContext && `ctx = _ctx;`}\n\t\t\t\t\t\t${this.builders.update}\n\t\t\t\t\t},\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.hasAnimation) {\n\t\t\tproperties.addBlock(deindent`\n\t\t\t\t${dev ? `r: function measure` : `r`}() {\n\t\t\t\t\t${this.builders.measure}\n\t\t\t\t},\n\n\t\t\t\t${dev ? `f: function fix` : `f`}() {\n\t\t\t\t\t${this.builders.fix}\n\t\t\t\t},\n\n\t\t\t\t${dev ? `a: function animate` : `a`}() {\n\t\t\t\t\t${this.builders.animate}\n\t\t\t\t},\n\t\t\t`);\n\t\t}\n\n\t\tif (this.hasIntroMethod || this.hasOutroMethod) {\n\t\t\tif (hasIntros) {\n\t\t\t\tproperties.addBlock(deindent`\n\t\t\t\t\t${dev ? 'i: function intro' : 'i'}(#target, anchor) {\n\t\t\t\t\t\tif (${introing}) return;\n\t\t\t\t\t\t${introing} = true;\n\t\t\t\t\t\t${hasOutros && `${outroing} = false;`}\n\n\t\t\t\t\t\t${this.builders.intro}\n\n\t\t\t\t\t\tthis.m(#target, anchor);\n\t\t\t\t\t},\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tif (this.builders.mount.isEmpty()) {\n\t\t\t\t\tproperties.addBlock(`i: @noop,`);\n\t\t\t\t} else {\n\t\t\t\t\tproperties.addBlock(deindent`\n\t\t\t\t\t\t${dev ? 'i: function intro' : 'i'}(#target, anchor) {\n\t\t\t\t\t\t\tthis.m(#target, anchor);\n\t\t\t\t\t\t},\n\t\t\t\t\t`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hasOutros) {\n\t\t\t\tproperties.addBlock(deindent`\n\t\t\t\t\t${dev ? 'o: function outro' : 'o'}(#outrocallback) {\n\t\t\t\t\t\tif (${outroing}) return;\n\t\t\t\t\t\t${outroing} = true;\n\t\t\t\t\t\t${hasIntros && `${introing} = false;`}\n\n\t\t\t\t\t\t${this.outros > 1 && `#outrocallback = @callAfter(#outrocallback, ${this.outros});`}\n\n\t\t\t\t\t\t${this.builders.outro}\n\t\t\t\t\t},\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tproperties.addBlock(deindent`\n\t\t\t\t\to: @run,\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.builders.destroy.isEmpty()) {\n\t\t\tproperties.addBlock(`d: @noop`);\n\t\t} else {\n\t\t\tproperties.addBlock(deindent`\n\t\t\t\t${dev ? 'd: function destroy' : 'd'}(detach) {\n\t\t\t\t\t${this.builders.destroy}\n\t\t\t\t}\n\t\t\t`);\n\t\t}\n\n\t\treturn deindent`\n\t\t\t${this.comment && `// ${escape(this.comment)}`}\n\t\t\tfunction ${this.name}(#component${this.key ? `, ${localKey}` : ''}, ctx) {\n\t\t\t\t${this.variables.size > 0 &&\n\t\t\t\t\t`var ${Array.from(this.variables.keys())\n\t\t\t\t\t\t.map(key => {\n\t\t\t\t\t\t\tconst init = this.variables.get(key);\n\t\t\t\t\t\t\treturn init !== undefined ? `${key} = ${init}` : key;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(', ')};`}\n\n\t\t\t\t${!this.builders.init.isEmpty() && this.builders.init}\n\n\t\t\t\treturn {\n\t\t\t\t\t${properties}\n\t\t\t\t};\n\t\t\t}\n\t\t`.replace(/(#+)(\\w*)/g, (match: string, sigil: string, name: string) => {\n\t\t\treturn sigil === '#' ? this.alias(name) : sigil.slice(1) + name;\n\t\t});\n\t}\n}\n","export default class TemplateScope {\n\tnames: Set<string>;\n\tdependenciesForName: Map<string, string>;\n\n\tconstructor(parent?: TemplateScope) {\n\t\tthis.names = new Set(parent ? parent.names : []);\n\t\tthis.dependenciesForName = new Map(parent ? parent.dependenciesForName : []);\n\t}\n\n\tadd(name, dependencies) {\n\t\tthis.names.add(name);\n\t\tthis.dependenciesForName.set(name, dependencies);\n\t\treturn this;\n\t}\n\n\tchild() {\n\t\treturn new TemplateScope(this);\n\t}\n}","import Node from './shared/Node';\nimport Compiler from '../Compiler';\nimport mapChildren from './shared/mapChildren';\nimport Block from '../dom/Block';\nimport TemplateScope from './shared/TemplateScope';\n\nexport default class Fragment extends Node {\n\tblock: Block;\n\tchildren: Node[];\n\tscope: TemplateScope;\n\n\tconstructor(compiler: Compiler, info: any) {\n\t\tconst scope = new TemplateScope();\n\t\tsuper(compiler, null, scope, info);\n\n\t\tthis.scope = scope;\n\t\tthis.children = mapChildren(compiler, this, scope, info.children);\n\t}\n\n\tinit() {\n\t\tthis.block = new Block({\n\t\t\tcompiler: this.compiler,\n\t\t\tname: '@create_main_fragment',\n\t\t\tkey: null,\n\n\t\t\tbindings: new Map(),\n\n\t\t\tdependencies: new Set(),\n\t\t});\n\n\t\tthis.compiler.target.blocks.push(this.block);\n\t\tthis.initChildren(this.block, true, null);\n\n\t\tthis.block.hasUpdateMethod = true;\n\t}\n\n\tbuild() {\n\t\tthis.init();\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.build(this.block, null, 'nodes');\n\t\t});\n\t}\n}","// this file is auto-generated, do not edit it\nconst shared: Record<string, string> = {\n\t\"wrapAnimation\": \"function wrapAnimation(node, from, fn, params) {\\n\\tif (!from) return;\\n\\n\\tconst to = node.getBoundingClientRect();\\n\\tif (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom) return;\\n\\n\\tconst info = fn(node, { from, to }, params);\\n\\n\\tconst duration = 'duration' in info ? info.duration : 300;\\n\\tconst delay = 'delay' in info ? info.delay : 0;\\n\\tconst ease = info.easing || linear;\\n\\tconst start = window.performance.now() + delay;\\n\\tconst end = start + duration;\\n\\n\\tconst program = {\\n\\t\\ta: 0,\\n\\t\\tt: 0,\\n\\t\\tb: 1,\\n\\t\\tdelta: 1,\\n\\t\\tduration,\\n\\t\\tstart,\\n\\t\\tend\\n\\t};\\n\\n\\tconst cssText = node.style.cssText;\\n\\n\\tconst animation = {\\n\\t\\tpending: delay ? program : null,\\n\\t\\tprogram: delay ? null : program,\\n\\t\\trunning: true,\\n\\n\\t\\tstart() {\\n\\t\\t\\tif (info.css) {\\n\\t\\t\\t\\tif (delay) node.style.cssText = cssText;\\n\\n\\t\\t\\t\\tconst rule = generateRule(program, ease, info.css);\\n\\t\\t\\t\\tprogram.name = `__svelte_${hash(rule)}`;\\n\\n\\t\\t\\t\\ttransitionManager.addRule(rule, program.name);\\n\\n\\t\\t\\t\\tnode.style.animation = (node.style.animation || '')\\n\\t\\t\\t\\t\\t.split(', ')\\n\\t\\t\\t\\t\\t.filter(anim => anim && (program.delta < 0 || !/__svelte/.test(anim)))\\n\\t\\t\\t\\t\\t.concat(`${program.name} ${program.duration}ms linear 1 forwards`)\\n\\t\\t\\t\\t\\t.join(', ');\\n\\t\\t\\t}\\n\\n\\t\\t\\tanimation.program = program;\\n\\t\\t\\tanimation.pending = null;\\n\\t\\t},\\n\\n\\t\\tupdate: now => {\\n\\t\\t\\tconst p = now - program.start;\\n\\t\\t\\tconst t = program.a + program.delta * ease(p / program.duration);\\n\\t\\t\\tif (info.tick) info.tick(t, 1 - t);\\n\\t\\t},\\n\\n\\t\\tdone() {\\n\\t\\t\\tif (info.tick) info.tick(1, 0);\\n\\t\\t\\tanimation.stop();\\n\\t\\t},\\n\\n\\t\\tstop() {\\n\\t\\t\\tif (info.css) transitionManager.deleteRule(node, program.name);\\n\\t\\t\\tanimation.running = false;\\n\\t\\t}\\n\\t};\\n\\n\\ttransitionManager.add(animation);\\n\\n\\tif (info.tick) info.tick(0, 1);\\n\\n\\tif (delay) {\\n\\t\\tif (info.css) node.style.cssText += info.css(0, 1);\\n\\t} else {\\n\\t\\tanimation.start();\\n\\t}\\n\\n\\treturn animation;\\n}\",\n\t\"fixPosition\": \"function fixPosition(node) {\\n\\tconst style = getComputedStyle(node);\\n\\n\\tif (style.position !== 'absolute' && style.position !== 'fixed') {\\n\\t\\tconst { width, height } = style;\\n\\t\\tconst a = node.getBoundingClientRect();\\n\\t\\tnode.style.position = 'absolute';\\n\\t\\tnode.style.width = width;\\n\\t\\tnode.style.height = height;\\n\\t\\tconst b = node.getBoundingClientRect();\\n\\n\\t\\tif (a.left !== b.left || a.top !== b.top) {\\n\\t\\t\\tconst style = getComputedStyle(node);\\n\\t\\t\\tconst transform = style.transform === 'none' ? '' : style.transform;\\n\\n\\t\\t\\tnode.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\\n\\t\\t}\\n\\t}\\n}\",\n\t\"handlePromise\": \"function handlePromise(promise, info) {\\n\\tvar token = info.token = {};\\n\\n\\tfunction update(type, index, key, value) {\\n\\t\\tif (info.token !== token) return;\\n\\n\\t\\tinfo.resolved = key && { [key]: value };\\n\\n\\t\\tconst child_ctx = assign(assign({}, info.ctx), info.resolved);\\n\\t\\tconst block = type && (info.current = type)(info.component, child_ctx);\\n\\n\\t\\tif (info.block) {\\n\\t\\t\\tif (info.blocks) {\\n\\t\\t\\t\\tinfo.blocks.forEach((block, i) => {\\n\\t\\t\\t\\t\\tif (i !== index && block) {\\n\\t\\t\\t\\t\\t\\ttransitionManager.groupOutros();\\n\\t\\t\\t\\t\\t\\tblock.o(() => {\\n\\t\\t\\t\\t\\t\\t\\tblock.d(1);\\n\\t\\t\\t\\t\\t\\t\\tinfo.blocks[i] = null;\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tinfo.block.d(1);\\n\\t\\t\\t}\\n\\n\\t\\t\\tblock.c();\\n\\t\\t\\tblock[block.i ? 'i' : 'm'](info.mount(), info.anchor);\\n\\n\\t\\t\\tinfo.component.root.set({}); // flush any handlers that were created\\n\\t\\t}\\n\\n\\t\\tinfo.block = block;\\n\\t\\tif (info.blocks) info.blocks[index] = block;\\n\\t}\\n\\n\\tif (isPromise(promise)) {\\n\\t\\tpromise.then(value => {\\n\\t\\t\\tupdate(info.then, 1, info.value, value);\\n\\t\\t}, error => {\\n\\t\\t\\tupdate(info.catch, 2, info.error, error);\\n\\t\\t});\\n\\n\\t\\t// if we previously had a then/catch block, destroy it\\n\\t\\tif (info.current !== info.pending) {\\n\\t\\t\\tupdate(info.pending, 0);\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\t} else {\\n\\t\\tif (info.current !== info.then) {\\n\\t\\t\\tupdate(info.then, 1, info.value, promise);\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\n\\t\\tinfo.resolved = { [info.value]: promise };\\n\\t}\\n}\",\n\t\"appendNode\": \"function appendNode(node, target) {\\n\\ttarget.appendChild(node);\\n}\",\n\t\"insertNode\": \"function insertNode(node, target, anchor) {\\n\\ttarget.insertBefore(node, anchor);\\n}\",\n\t\"detachNode\": \"function detachNode(node) {\\n\\tnode.parentNode.removeChild(node);\\n}\",\n\t\"detachBetween\": \"function detachBetween(before, after) {\\n\\twhile (before.nextSibling && before.nextSibling !== after) {\\n\\t\\tbefore.parentNode.removeChild(before.nextSibling);\\n\\t}\\n}\",\n\t\"detachBefore\": \"function detachBefore(after) {\\n\\twhile (after.previousSibling) {\\n\\t\\tafter.parentNode.removeChild(after.previousSibling);\\n\\t}\\n}\",\n\t\"detachAfter\": \"function detachAfter(before) {\\n\\twhile (before.nextSibling) {\\n\\t\\tbefore.parentNode.removeChild(before.nextSibling);\\n\\t}\\n}\",\n\t\"reinsertBetween\": \"function reinsertBetween(before, after, target) {\\n\\twhile (before.nextSibling && before.nextSibling !== after) {\\n\\t\\ttarget.appendChild(before.parentNode.removeChild(before.nextSibling));\\n\\t}\\n}\",\n\t\"reinsertChildren\": \"function reinsertChildren(parent, target) {\\n\\twhile (parent.firstChild) target.appendChild(parent.firstChild);\\n}\",\n\t\"reinsertAfter\": \"function reinsertAfter(before, target) {\\n\\twhile (before.nextSibling) target.appendChild(before.nextSibling);\\n}\",\n\t\"reinsertBefore\": \"function reinsertBefore(after, target) {\\n\\tvar parent = after.parentNode;\\n\\twhile (parent.firstChild !== after) target.appendChild(parent.firstChild);\\n}\",\n\t\"destroyEach\": \"function destroyEach(iterations, detach) {\\n\\tfor (var i = 0; i < iterations.length; i += 1) {\\n\\t\\tif (iterations[i]) iterations[i].d(detach);\\n\\t}\\n}\",\n\t\"createFragment\": \"function createFragment() {\\n\\treturn document.createDocumentFragment();\\n}\",\n\t\"createElement\": \"function createElement(name) {\\n\\treturn document.createElement(name);\\n}\",\n\t\"createSvgElement\": \"function createSvgElement(name) {\\n\\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\\n}\",\n\t\"createText\": \"function createText(data) {\\n\\treturn document.createTextNode(data);\\n}\",\n\t\"createComment\": \"function createComment() {\\n\\treturn document.createComment('');\\n}\",\n\t\"addListener\": \"function addListener(node, event, handler) {\\n\\tnode.addEventListener(event, handler, false);\\n}\",\n\t\"removeListener\": \"function removeListener(node, event, handler) {\\n\\tnode.removeEventListener(event, handler, false);\\n}\",\n\t\"setAttribute\": \"function setAttribute(node, attribute, value) {\\n\\tnode.setAttribute(attribute, value);\\n}\",\n\t\"setAttributes\": \"function setAttributes(node, attributes) {\\n\\tfor (var key in attributes) {\\n\\t\\tif (key in node) {\\n\\t\\t\\tnode[key] = attributes[key];\\n\\t\\t} else {\\n\\t\\t\\tif (attributes[key] === undefined) removeAttribute(node, key);\\n\\t\\t\\telse setAttribute(node, key, attributes[key]);\\n\\t\\t}\\n\\t}\\n}\",\n\t\"removeAttribute\": \"function removeAttribute(node, attribute) {\\n\\tnode.removeAttribute(attribute);\\n}\",\n\t\"setXlinkAttribute\": \"function setXlinkAttribute(node, attribute, value) {\\n\\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\\n}\",\n\t\"getBindingGroupValue\": \"function getBindingGroupValue(group) {\\n\\tvar value = [];\\n\\tfor (var i = 0; i < group.length; i += 1) {\\n\\t\\tif (group[i].checked) value.push(group[i].__value);\\n\\t}\\n\\treturn value;\\n}\",\n\t\"toNumber\": \"function toNumber(value) {\\n\\treturn value === '' ? undefined : +value;\\n}\",\n\t\"timeRangesToArray\": \"function timeRangesToArray(ranges) {\\n\\tvar array = [];\\n\\tfor (var i = 0; i < ranges.length; i += 1) {\\n\\t\\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\\n\\t}\\n\\treturn array;\\n}\",\n\t\"children\": \"function children (element) {\\n\\treturn Array.from(element.childNodes);\\n}\",\n\t\"claimElement\": \"function claimElement (nodes, name, attributes, svg) {\\n\\tfor (var i = 0; i < nodes.length; i += 1) {\\n\\t\\tvar node = nodes[i];\\n\\t\\tif (node.nodeName === name) {\\n\\t\\t\\tfor (var j = 0; j < node.attributes.length; j += 1) {\\n\\t\\t\\t\\tvar attribute = node.attributes[j];\\n\\t\\t\\t\\tif (!attributes[attribute.name]) node.removeAttribute(attribute.name);\\n\\t\\t\\t}\\n\\t\\t\\treturn nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\\n\\t\\t}\\n\\t}\\n\\n\\treturn svg ? createSvgElement(name) : createElement(name);\\n}\",\n\t\"claimText\": \"function claimText (nodes, data) {\\n\\tfor (var i = 0; i < nodes.length; i += 1) {\\n\\t\\tvar node = nodes[i];\\n\\t\\tif (node.nodeType === 3) {\\n\\t\\t\\tnode.data = data;\\n\\t\\t\\treturn nodes.splice(i, 1)[0];\\n\\t\\t}\\n\\t}\\n\\n\\treturn createText(data);\\n}\",\n\t\"setInputType\": \"function setInputType(input, type) {\\n\\ttry {\\n\\t\\tinput.type = type;\\n\\t} catch (e) {}\\n}\",\n\t\"setStyle\": \"function setStyle(node, key, value) {\\n\\tnode.style.setProperty(key, value);\\n}\",\n\t\"selectOption\": \"function selectOption(select, value) {\\n\\tfor (var i = 0; i < select.options.length; i += 1) {\\n\\t\\tvar option = select.options[i];\\n\\n\\t\\tif (option.__value === value) {\\n\\t\\t\\toption.selected = true;\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t}\\n}\",\n\t\"selectOptions\": \"function selectOptions(select, value) {\\n\\tfor (var i = 0; i < select.options.length; i += 1) {\\n\\t\\tvar option = select.options[i];\\n\\t\\toption.selected = ~value.indexOf(option.__value);\\n\\t}\\n}\",\n\t\"selectValue\": \"function selectValue(select) {\\n\\tvar selectedOption = select.querySelector(':checked') || select.options[0];\\n\\treturn selectedOption && selectedOption.__value;\\n}\",\n\t\"selectMultipleValue\": \"function selectMultipleValue(select) {\\n\\treturn [].map.call(select.querySelectorAll(':checked'), function(option) {\\n\\t\\treturn option.__value;\\n\\t});\\n}\",\n\t\"addResizeListener\": \"function addResizeListener(element, fn) {\\n\\tif (getComputedStyle(element).position === 'static') {\\n\\t\\telement.style.position = 'relative';\\n\\t}\\n\\n\\tconst object = document.createElement('object');\\n\\tobject.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\\n\\tobject.type = 'text/html';\\n\\n\\tlet win;\\n\\n\\tobject.onload = () => {\\n\\t\\twin = object.contentDocument.defaultView;\\n\\t\\twin.addEventListener('resize', fn);\\n\\t};\\n\\n\\tif (/Trident/.test(navigator.userAgent)) {\\n\\t\\telement.appendChild(object);\\n\\t\\tobject.data = 'about:blank';\\n\\t} else {\\n\\t\\tobject.data = 'about:blank';\\n\\t\\telement.appendChild(object);\\n\\t}\\n\\n\\treturn {\\n\\t\\tcancel: () => {\\n\\t\\t\\twin.removeEventListener('resize', fn);\\n\\t\\t\\telement.removeChild(object);\\n\\t\\t}\\n\\t};\\n}\",\n\t\"blankObject\": \"function blankObject() {\\n\\treturn Object.create(null);\\n}\",\n\t\"destroy\": \"function destroy(detach) {\\n\\tthis.destroy = noop;\\n\\tthis.fire('destroy');\\n\\tthis.set = noop;\\n\\n\\tthis._fragment.d(detach !== false);\\n\\tthis._fragment = null;\\n\\tthis._state = {};\\n}\",\n\t\"destroyDev\": \"function destroyDev(detach) {\\n\\tdestroy.call(this, detach);\\n\\tthis.destroy = function() {\\n\\t\\tconsole.warn('Component was already destroyed');\\n\\t};\\n}\",\n\t\"_differs\": \"function _differs(a, b) {\\n\\treturn a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\\n}\",\n\t\"_differsImmutable\": \"function _differsImmutable(a, b) {\\n\\treturn a != a ? b == b : a !== b;\\n}\",\n\t\"fire\": \"function fire(eventName, data) {\\n\\tvar handlers =\\n\\t\\teventName in this._handlers && this._handlers[eventName].slice();\\n\\tif (!handlers) return;\\n\\n\\tfor (var i = 0; i < handlers.length; i += 1) {\\n\\t\\tvar handler = handlers[i];\\n\\n\\t\\tif (!handler.__calling) {\\n\\t\\t\\thandler.__calling = true;\\n\\t\\t\\thandler.call(this, data);\\n\\t\\t\\thandler.__calling = false;\\n\\t\\t}\\n\\t}\\n}\",\n\t\"get\": \"function get() {\\n\\treturn this._state;\\n}\",\n\t\"init\": \"function init(component, options) {\\n\\tcomponent._handlers = blankObject();\\n\\tcomponent._bind = options._bind;\\n\\n\\tcomponent.options = options;\\n\\tcomponent.root = options.root || component;\\n\\tcomponent.store = component.root.store || options.store;\\n}\",\n\t\"on\": \"function on(eventName, handler) {\\n\\tvar handlers = this._handlers[eventName] || (this._handlers[eventName] = []);\\n\\thandlers.push(handler);\\n\\n\\treturn {\\n\\t\\tcancel: function() {\\n\\t\\t\\tvar index = handlers.indexOf(handler);\\n\\t\\t\\tif (~index) handlers.splice(index, 1);\\n\\t\\t}\\n\\t};\\n}\",\n\t\"run\": \"function run(fn) {\\n\\tfn();\\n}\",\n\t\"set\": \"function set(newState) {\\n\\tthis._set(assign({}, newState));\\n\\tif (this.root._lock) return;\\n\\tthis.root._lock = true;\\n\\tcallAll(this.root._beforecreate);\\n\\tcallAll(this.root._oncreate);\\n\\tcallAll(this.root._aftercreate);\\n\\tthis.root._lock = false;\\n}\",\n\t\"_set\": \"function _set(newState) {\\n\\tvar oldState = this._state,\\n\\t\\tchanged = {},\\n\\t\\tdirty = false;\\n\\n\\tfor (var key in newState) {\\n\\t\\tif (this._differs(newState[key], oldState[key])) changed[key] = dirty = true;\\n\\t}\\n\\tif (!dirty) return;\\n\\n\\tthis._state = assign(assign({}, oldState), newState);\\n\\tthis._recompute(changed, this._state);\\n\\tif (this._bind) this._bind(changed, this._state);\\n\\n\\tif (this._fragment) {\\n\\t\\tthis.fire(\\\"state\\\", { changed: changed, current: this._state, previous: oldState });\\n\\t\\tthis._fragment.p(changed, this._state);\\n\\t\\tthis.fire(\\\"update\\\", { changed: changed, current: this._state, previous: oldState });\\n\\t}\\n}\",\n\t\"setDev\": \"function setDev(newState) {\\n\\tif (typeof newState !== 'object') {\\n\\t\\tthrow new Error(\\n\\t\\t\\tthis._debugName + '.set was called without an object of data key-values to update.'\\n\\t\\t);\\n\\t}\\n\\n\\tthis._checkReadOnly(newState);\\n\\tset.call(this, newState);\\n}\",\n\t\"callAll\": \"function callAll(fns) {\\n\\twhile (fns && fns.length) fns.shift()();\\n}\",\n\t\"_mount\": \"function _mount(target, anchor) {\\n\\tthis._fragment[this._fragment.i ? 'i' : 'm'](target, anchor || null);\\n}\",\n\t\"PENDING\": \"{}\",\n\t\"SUCCESS\": \"{}\",\n\t\"FAILURE\": \"{}\",\n\t\"removeFromStore\": \"function removeFromStore() {\\n\\tthis.store._remove(this);\\n}\",\n\t\"proto\": \"{\\n\\tdestroy,\\n\\tget,\\n\\tfire,\\n\\ton,\\n\\tset,\\n\\t_recompute: noop,\\n\\t_set,\\n\\t_mount,\\n\\t_differs\\n}\",\n\t\"protoDev\": \"{\\n\\tdestroy: destroyDev,\\n\\tget,\\n\\tfire,\\n\\ton,\\n\\tset: setDev,\\n\\t_recompute: noop,\\n\\t_set,\\n\\t_mount,\\n\\t_differs\\n}\",\n\t\"destroyBlock\": \"function destroyBlock(block, lookup) {\\n\\tblock.d(1);\\n\\tlookup[block.key] = null;\\n}\",\n\t\"outroAndDestroyBlock\": \"function outroAndDestroyBlock(block, lookup) {\\n\\tblock.o(function() {\\n\\t\\tdestroyBlock(block, lookup);\\n\\t});\\n}\",\n\t\"fixAndOutroAndDestroyBlock\": \"function fixAndOutroAndDestroyBlock(block, lookup) {\\n\\tblock.f();\\n\\toutroAndDestroyBlock(block, lookup);\\n}\",\n\t\"updateKeyedEach\": \"function updateKeyedEach(old_blocks, component, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, intro_method, next, get_context) {\\n\\tvar o = old_blocks.length;\\n\\tvar n = list.length;\\n\\n\\tvar i = o;\\n\\tvar old_indexes = {};\\n\\twhile (i--) old_indexes[old_blocks[i].key] = i;\\n\\n\\tvar new_blocks = [];\\n\\tvar new_lookup = {};\\n\\tvar deltas = {};\\n\\n\\tvar i = n;\\n\\twhile (i--) {\\n\\t\\tvar child_ctx = get_context(ctx, list, i);\\n\\t\\tvar key = get_key(child_ctx);\\n\\t\\tvar block = lookup[key];\\n\\n\\t\\tif (!block) {\\n\\t\\t\\tblock = create_each_block(component, key, child_ctx);\\n\\t\\t\\tblock.c();\\n\\t\\t} else if (dynamic) {\\n\\t\\t\\tblock.p(changed, child_ctx);\\n\\t\\t}\\n\\n\\t\\tnew_blocks[i] = new_lookup[key] = block;\\n\\n\\t\\tif (key in old_indexes) deltas[key] = Math.abs(i - old_indexes[key]);\\n\\t}\\n\\n\\tvar will_move = {};\\n\\tvar did_move = {};\\n\\n\\tfunction insert(block) {\\n\\t\\tblock[intro_method](node, next);\\n\\t\\tlookup[block.key] = block;\\n\\t\\tnext = block.first;\\n\\t\\tn--;\\n\\t}\\n\\n\\twhile (o && n) {\\n\\t\\tvar new_block = new_blocks[n - 1];\\n\\t\\tvar old_block = old_blocks[o - 1];\\n\\t\\tvar new_key = new_block.key;\\n\\t\\tvar old_key = old_block.key;\\n\\n\\t\\tif (new_block === old_block) {\\n\\t\\t\\t// do nothing\\n\\t\\t\\tnext = new_block.first;\\n\\t\\t\\to--;\\n\\t\\t\\tn--;\\n\\t\\t}\\n\\n\\t\\telse if (!new_lookup[old_key]) {\\n\\t\\t\\t// remove old block\\n\\t\\t\\tdestroy(old_block, lookup);\\n\\t\\t\\to--;\\n\\t\\t}\\n\\n\\t\\telse if (!lookup[new_key] || will_move[new_key]) {\\n\\t\\t\\tinsert(new_block);\\n\\t\\t}\\n\\n\\t\\telse if (did_move[old_key]) {\\n\\t\\t\\to--;\\n\\n\\t\\t} else if (deltas[new_key] > deltas[old_key]) {\\n\\t\\t\\tdid_move[new_key] = true;\\n\\t\\t\\tinsert(new_block);\\n\\n\\t\\t} else {\\n\\t\\t\\twill_move[old_key] = true;\\n\\t\\t\\to--;\\n\\t\\t}\\n\\t}\\n\\n\\twhile (o--) {\\n\\t\\tvar old_block = old_blocks[o];\\n\\t\\tif (!new_lookup[old_block.key]) destroy(old_block, lookup);\\n\\t}\\n\\n\\twhile (n) insert(new_blocks[n - 1]);\\n\\n\\treturn new_blocks;\\n}\",\n\t\"measure\": \"function measure(blocks) {\\n\\tconst rects = {};\\n\\tlet i = blocks.length;\\n\\twhile (i--) rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\\n\\treturn rects;\\n}\",\n\t\"animate\": \"function animate(blocks, rects, fn, params) {\\n\\tlet i = blocks.length;\\n\\twhile (i--) {\\n\\t\\tconst block = blocks[i];\\n\\t\\tconst from = rects[block.key];\\n\\n\\t\\tif (!from) continue;\\n\\t\\tconst to = block.node.getBoundingClientRect();\\n\\n\\t\\tif (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom) continue;\\n\\n\\n\\t}\\n}\",\n\t\"getSpreadUpdate\": \"function getSpreadUpdate(levels, updates) {\\n\\tvar update = {};\\n\\n\\tvar to_null_out = {};\\n\\tvar accounted_for = {};\\n\\n\\tvar i = levels.length;\\n\\twhile (i--) {\\n\\t\\tvar o = levels[i];\\n\\t\\tvar n = updates[i];\\n\\n\\t\\tif (n) {\\n\\t\\t\\tfor (var key in o) {\\n\\t\\t\\t\\tif (!(key in n)) to_null_out[key] = 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor (var key in n) {\\n\\t\\t\\t\\tif (!accounted_for[key]) {\\n\\t\\t\\t\\t\\tupdate[key] = n[key];\\n\\t\\t\\t\\t\\taccounted_for[key] = 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tlevels[i] = n;\\n\\t\\t} else {\\n\\t\\t\\tfor (var key in o) {\\n\\t\\t\\t\\taccounted_for[key] = 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfor (var key in to_null_out) {\\n\\t\\tif (!(key in update)) update[key] = undefined;\\n\\t}\\n\\n\\treturn update;\\n}\",\n\t\"spread\": \"function spread(args) {\\n\\tconst attributes = Object.assign({}, ...args);\\n\\tlet str = '';\\n\\n\\tObject.keys(attributes).forEach(name => {\\n\\t\\tconst value = attributes[name];\\n\\t\\tif (value === undefined) return;\\n\\t\\tif (value === true) str += \\\" \\\" + name;\\n\\t\\tstr += \\\" \\\" + name + \\\"=\\\" + JSON.stringify(value);\\n\\t});\\n\\n\\treturn str;\\n}\",\n\t\"escaped\": \"{\\n\\t'\\\"': '&quot;',\\n\\t\\\"'\\\": '&#39;',\\n\\t'&': '&amp;',\\n\\t'<': '&lt;',\\n\\t'>': '&gt;'\\n}\",\n\t\"escape\": \"function escape(html) {\\n\\treturn String(html).replace(/[\\\"'&<>]/g, match => escaped[match]);\\n}\",\n\t\"each\": \"function each(items, assign, fn) {\\n\\tlet str = '';\\n\\tfor (let i = 0; i < items.length; i += 1) {\\n\\t\\tstr += fn(assign(items[i], i));\\n\\t}\\n\\treturn str;\\n}\",\n\t\"missingComponent\": \"{\\n\\t_render: () => ''\\n}\",\n\t\"linear\": \"function linear(t) {\\n\\treturn t;\\n}\",\n\t\"generateRule\": \"function generateRule({ a, b, delta, duration }, ease, fn) {\\n\\tconst step = 16.666 / duration;\\n\\tlet keyframes = '{\\\\n';\\n\\n\\tfor (let p = 0; p <= 1; p += step) {\\n\\t\\tconst t = a + delta * ease(p);\\n\\t\\tkeyframes += p * 100 + `%{${fn(t, 1 - t)}}\\\\n`;\\n\\t}\\n\\n\\treturn keyframes + `100% {${fn(b, 1 - b)}}\\\\n}`;\\n}\",\n\t\"hash\": \"function hash(str) {\\n\\tlet hash = 5381;\\n\\tlet i = str.length;\\n\\n\\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\\n\\treturn hash >>> 0;\\n}\",\n\t\"wrapTransition\": \"function wrapTransition(component, node, fn, params, intro) {\\n\\tlet obj = fn(node, params);\\n\\tlet duration;\\n\\tlet ease;\\n\\tlet cssText;\\n\\n\\tlet initialised = false;\\n\\n\\treturn {\\n\\t\\tt: intro ? 0 : 1,\\n\\t\\trunning: false,\\n\\t\\tprogram: null,\\n\\t\\tpending: null,\\n\\n\\t\\trun(b, callback) {\\n\\t\\t\\tif (typeof obj === 'function') {\\n\\t\\t\\t\\ttransitionManager.wait().then(() => {\\n\\t\\t\\t\\t\\tobj = obj();\\n\\t\\t\\t\\t\\tthis._run(b, callback);\\n\\t\\t\\t\\t});\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis._run(b, callback);\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\t_run(b, callback) {\\n\\t\\t\\tduration = obj.duration || 300;\\n\\t\\t\\tease = obj.easing || linear;\\n\\n\\t\\t\\tconst program = {\\n\\t\\t\\t\\tstart: window.performance.now() + (obj.delay || 0),\\n\\t\\t\\t\\tb,\\n\\t\\t\\t\\tcallback: callback || noop\\n\\t\\t\\t};\\n\\n\\t\\t\\tif (intro && !initialised) {\\n\\t\\t\\t\\tif (obj.css && obj.delay) {\\n\\t\\t\\t\\t\\tcssText = node.style.cssText;\\n\\t\\t\\t\\t\\tnode.style.cssText += obj.css(0, 1);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (obj.tick) obj.tick(0, 1);\\n\\t\\t\\t\\tinitialised = true;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (!b) {\\n\\t\\t\\t\\tprogram.group = transitionManager.outros;\\n\\t\\t\\t\\ttransitionManager.outros.remaining += 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (obj.delay) {\\n\\t\\t\\t\\tthis.pending = program;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.start(program);\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (!this.running) {\\n\\t\\t\\t\\tthis.running = true;\\n\\t\\t\\t\\ttransitionManager.add(this);\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tstart(program) {\\n\\t\\t\\tcomponent.fire(`${program.b ? 'intro' : 'outro'}.start`, { node });\\n\\n\\t\\t\\tprogram.a = this.t;\\n\\t\\t\\tprogram.delta = program.b - program.a;\\n\\t\\t\\tprogram.duration = duration * Math.abs(program.b - program.a);\\n\\t\\t\\tprogram.end = program.start + program.duration;\\n\\n\\t\\t\\tif (obj.css) {\\n\\t\\t\\t\\tif (obj.delay) node.style.cssText = cssText;\\n\\n\\t\\t\\t\\tconst rule = generateRule(program, ease, obj.css);\\n\\t\\t\\t\\ttransitionManager.addRule(rule, program.name = '__svelte_' + hash(rule));\\n\\n\\t\\t\\t\\tnode.style.animation = (node.style.animation || '')\\n\\t\\t\\t\\t\\t.split(', ')\\n\\t\\t\\t\\t\\t.filter(anim => anim && (program.delta < 0 || !/__svelte/.test(anim)))\\n\\t\\t\\t\\t\\t.concat(`${program.name} ${program.duration}ms linear 1 forwards`)\\n\\t\\t\\t\\t\\t.join(', ');\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.program = program;\\n\\t\\t\\tthis.pending = null;\\n\\t\\t},\\n\\n\\t\\tupdate(now) {\\n\\t\\t\\tconst program = this.program;\\n\\t\\t\\tif (!program) return;\\n\\n\\t\\t\\tconst p = now - program.start;\\n\\t\\t\\tthis.t = program.a + program.delta * ease(p / program.duration);\\n\\t\\t\\tif (obj.tick) obj.tick(this.t, 1 - this.t);\\n\\t\\t},\\n\\n\\t\\tdone() {\\n\\t\\t\\tconst program = this.program;\\n\\t\\t\\tthis.t = program.b;\\n\\n\\t\\t\\tif (obj.tick) obj.tick(this.t, 1 - this.t);\\n\\n\\t\\t\\tcomponent.fire(`${program.b ? 'intro' : 'outro'}.end`, { node });\\n\\n\\t\\t\\tif (!program.b && !program.invalidated) {\\n\\t\\t\\t\\tprogram.group.callbacks.push(() => {\\n\\t\\t\\t\\t\\tprogram.callback();\\n\\t\\t\\t\\t\\tif (obj.css) transitionManager.deleteRule(node, program.name);\\n\\t\\t\\t\\t});\\n\\n\\t\\t\\t\\tif (--program.group.remaining === 0) {\\n\\t\\t\\t\\t\\tprogram.group.callbacks.forEach(fn => {\\n\\t\\t\\t\\t\\t\\tfn();\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tif (obj.css) transitionManager.deleteRule(node, program.name);\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.running = !!this.pending;\\n\\t\\t},\\n\\n\\t\\tabort() {\\n\\t\\t\\tif (this.program) {\\n\\t\\t\\t\\tif (obj.tick) obj.tick(1, 0);\\n\\t\\t\\t\\tif (obj.css) transitionManager.deleteRule(node, this.program.name);\\n\\t\\t\\t\\tthis.program = this.pending = null;\\n\\t\\t\\t\\tthis.running = false;\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tinvalidate() {\\n\\t\\t\\tif (this.program) {\\n\\t\\t\\t\\tthis.program.invalidated = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n}\",\n\t\"transitionManager\": \"{\\n\\trunning: false,\\n\\ttransitions: [],\\n\\tbound: null,\\n\\tstylesheet: null,\\n\\tactiveRules: {},\\n\\tpromise: null,\\n\\n\\tadd(transition) {\\n\\t\\tthis.transitions.push(transition);\\n\\n\\t\\tif (!this.running) {\\n\\t\\t\\tthis.running = true;\\n\\t\\t\\trequestAnimationFrame(this.bound || (this.bound = this.next.bind(this)));\\n\\t\\t}\\n\\t},\\n\\n\\taddRule(rule, name) {\\n\\t\\tif (!this.stylesheet) {\\n\\t\\t\\tconst style = createElement('style');\\n\\t\\t\\tdocument.head.appendChild(style);\\n\\t\\t\\ttransitionManager.stylesheet = style.sheet;\\n\\t\\t}\\n\\n\\t\\tif (!this.activeRules[name]) {\\n\\t\\t\\tthis.activeRules[name] = true;\\n\\t\\t\\tthis.stylesheet.insertRule(`@keyframes ${name} ${rule}`, this.stylesheet.cssRules.length);\\n\\t\\t}\\n\\t},\\n\\n\\tnext() {\\n\\t\\tthis.running = false;\\n\\n\\t\\tconst now = window.performance.now();\\n\\t\\tlet i = this.transitions.length;\\n\\n\\t\\twhile (i--) {\\n\\t\\t\\tconst transition = this.transitions[i];\\n\\n\\t\\t\\tif (transition.program && now >= transition.program.end) {\\n\\t\\t\\t\\ttransition.done();\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (transition.pending && now >= transition.pending.start) {\\n\\t\\t\\t\\ttransition.start(transition.pending);\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (transition.running) {\\n\\t\\t\\t\\ttransition.update(now);\\n\\t\\t\\t\\tthis.running = true;\\n\\t\\t\\t} else if (!transition.pending) {\\n\\t\\t\\t\\tthis.transitions.splice(i, 1);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (this.running) {\\n\\t\\t\\trequestAnimationFrame(this.bound);\\n\\t\\t} else if (this.stylesheet) {\\n\\t\\t\\tlet i = this.stylesheet.cssRules.length;\\n\\t\\t\\twhile (i--) this.stylesheet.deleteRule(i);\\n\\t\\t\\tthis.activeRules = {};\\n\\t\\t}\\n\\t},\\n\\n\\tdeleteRule(node, name) {\\n\\t\\tnode.style.animation = node.style.animation\\n\\t\\t\\t.split(', ')\\n\\t\\t\\t.filter(anim => anim && anim.indexOf(name) === -1)\\n\\t\\t\\t.join(', ');\\n\\t},\\n\\n\\tgroupOutros() {\\n\\t\\tthis.outros = {\\n\\t\\t\\tremaining: 0,\\n\\t\\t\\tcallbacks: []\\n\\t\\t};\\n\\t},\\n\\n\\twait() {\\n\\t\\tif (!transitionManager.promise) {\\n\\t\\t\\ttransitionManager.promise = Promise.resolve();\\n\\t\\t\\ttransitionManager.promise.then(() => {\\n\\t\\t\\t\\ttransitionManager.promise = null;\\n\\t\\t\\t});\\n\\t\\t}\\n\\n\\t\\treturn transitionManager.promise;\\n\\t}\\n}\",\n\t\"noop\": \"function noop() {}\",\n\t\"assign\": \"function assign(tar, src) {\\n\\tfor (var k in src) tar[k] = src[k];\\n\\treturn tar;\\n}\",\n\t\"assignTrue\": \"function assignTrue(tar, src) {\\n\\tfor (var k in src) tar[k] = 1;\\n\\treturn tar;\\n}\",\n\t\"isPromise\": \"function isPromise(value) {\\n\\treturn value && typeof value.then === 'function';\\n}\",\n\t\"callAfter\": \"function callAfter(fn, i) {\\n\\treturn () => {\\n\\t\\tif (!--i) fn();\\n\\t};\\n}\"\n};\n\nexport default shared;","import { parseExpressionAt } from 'acorn';\nimport MagicString, { Bundle } from 'magic-string';\nimport isReference from 'is-reference';\nimport { walk, childKeys } from 'estree-walker';\nimport { getLocator } from 'locate-character';\nimport Stats from '../Stats';\nimport deindent from '../utils/deindent';\nimport CodeBuilder from '../utils/CodeBuilder';\nimport flattenReference from '../utils/flattenReference';\nimport reservedNames from '../utils/reservedNames';\nimport namespaces from '../utils/namespaces';\nimport { removeNode, removeObjectKey } from '../utils/removeNode';\nimport nodeToString from '../utils/nodeToString';\nimport wrapModule from './wrapModule';\nimport annotateWithScopes, { Scope } from '../utils/annotateWithScopes';\nimport getName from '../utils/getName';\nimport Stylesheet from '../css/Stylesheet';\nimport { test } from '../config';\nimport Fragment from './nodes/Fragment';\nimport shared from './shared';\nimport { DomTarget } from './dom/index';\nimport { SsrTarget } from './ssr/index';\nimport { Node, GenerateOptions, ShorthandImport, Ast, CompileOptions, CustomElementOptions } from '../interfaces';\n\ninterface Computation {\n\tkey: string;\n\tdeps: string[]\n}\n\nfunction detectIndentation(str: string) {\n\tconst pattern = /^[\\t\\s]{1,4}/gm;\n\tlet match;\n\n\twhile (match = pattern.exec(str)) {\n\t\tif (match[0][0] === '\\t') return '\\t';\n\t\tif (match[0].length === 2) return ' ';\n\t}\n\n\treturn ' ';\n}\n\nfunction getIndentationLevel(str: string, b: number) {\n\tlet a = b;\n\twhile (a > 0 && str[a - 1] !== '\\n') a -= 1;\n\treturn /^\\s*/.exec(str.slice(a, b))[0];\n}\n\nfunction getIndentExclusionRanges(node: Node) {\n\tconst ranges: Node[] = [];\n\twalk(node, {\n\t\tenter(node: Node) {\n\t\t\tif (node.type === 'TemplateElement') ranges.push(node);\n\t\t}\n\t});\n\treturn ranges;\n}\n\nfunction removeIndentation(\n\tcode: MagicString,\n\tstart: number,\n\tend: number,\n\tindentationLevel: string,\n\tranges: Node[]\n) {\n\tconst str = code.original.slice(start, end);\n\tconst pattern = new RegExp(`^${indentationLevel}`, 'gm');\n\tlet match;\n\n\twhile (match = pattern.exec(str)) {\n\t\t// TODO bail if we're inside an exclusion range\n\t\tcode.remove(start + match.index, start + match.index + indentationLevel.length);\n\t}\n}\n\n// We need to tell estree-walker that it should always\n// look for an `else` block, otherwise it might get\n// the wrong idea about the shape of each/if blocks\nchildKeys.EachBlock = childKeys.IfBlock = ['children', 'else'];\nchildKeys.Attribute = ['value'];\n\nexport default class Compiler {\n\tstats: Stats;\n\n\tast: Ast;\n\tsource: string;\n\tname: string;\n\toptions: CompileOptions;\n\tfragment: Fragment;\n\ttarget: DomTarget | SsrTarget;\n\n\tcustomElement: CustomElementOptions;\n\ttag: string;\n\tprops: string[];\n\n\tdefaultExport: Node[];\n\timports: Node[];\n\tshorthandImports: ShorthandImport[];\n\thelpers: Set<string>;\n\tcomponents: Set<string>;\n\tevents: Set<string>;\n\tmethods: Set<string>;\n\tanimations: Set<string>;\n\ttransitions: Set<string>;\n\tactions: Set<string>;\n\timportedComponents: Map<string, string>;\n\tnamespace: string;\n\thasComponents: boolean;\n\tcomputations: Computation[];\n\ttemplateProperties: Record<string, Node>;\n\tslots: Set<string>;\n\tjavascript: string;\n\n\tcode: MagicString;\n\n\tbindingGroups: string[];\n\tindirectDependencies: Map<string, Set<string>>;\n\texpectedProperties: Set<string>;\n\tusesRefs: boolean;\n\n\tlocate: (c: number) => { line: number, column: number };\n\n\tstylesheet: Stylesheet;\n\n\tuserVars: Set<string>;\n\ttemplateVars: Map<string, string>;\n\taliases: Map<string, string>;\n\tusedNames: Set<string>;\n\n\tconstructor(\n\t\tast: Ast,\n\t\tsource: string,\n\t\tname: string,\n\t\tstylesheet: Stylesheet,\n\t\toptions: CompileOptions,\n\t\tstats: Stats,\n\t\tdom: boolean,\n\t\ttarget: DomTarget | SsrTarget\n\t) {\n\t\tstats.start('compile');\n\t\tthis.stats = stats;\n\n\t\tthis.ast = ast;\n\t\tthis.source = source;\n\t\tthis.options = options;\n\t\tthis.target = target;\n\n\t\tthis.imports = [];\n\t\tthis.shorthandImports = [];\n\t\tthis.helpers = new Set();\n\t\tthis.components = new Set();\n\t\tthis.events = new Set();\n\t\tthis.methods = new Set();\n\t\tthis.animations = new Set();\n\t\tthis.transitions = new Set();\n\t\tthis.actions = new Set();\n\t\tthis.importedComponents = new Map();\n\t\tthis.slots = new Set();\n\n\t\tthis.bindingGroups = [];\n\t\tthis.indirectDependencies = new Map();\n\n\t\tthis.locate = getLocator(this.source);\n\n\t\t// track which properties are needed, so we can provide useful info\n\t\t// in dev mode\n\t\tthis.expectedProperties = new Set();\n\n\t\tthis.code = new MagicString(source);\n\t\tthis.usesRefs = false;\n\n\t\t// styles\n\t\tthis.stylesheet = stylesheet;\n\n\t\t// allow compiler to deconflict user's `import { get } from 'whatever'` and\n\t\t// Svelte's builtin `import { get, ... } from 'svelte/shared.ts'`;\n\t\tthis.userVars = new Set();\n\t\tthis.templateVars = new Map();\n\t\tthis.aliases = new Map();\n\t\tthis.usedNames = new Set();\n\n\t\tthis.computations = [];\n\t\tthis.templateProperties = {};\n\n\t\tthis.walkJs(dom);\n\t\tthis.name = this.alias(name);\n\n\t\tif (options.customElement === true) {\n\t\t\tthis.customElement = {\n\t\t\t\ttag: this.tag,\n\t\t\t\tprops: this.props\n\t\t\t}\n\t\t} else {\n\t\t\tthis.customElement = options.customElement;\n\t\t}\n\n\t\tif (this.customElement && !this.customElement.tag) {\n\t\t\tthrow new Error(`No tag name specified`); // TODO better error\n\t\t}\n\n\t\tthis.fragment = new Fragment(this, ast.html);\n\t\t// this.walkTemplate();\n\t\tif (!this.customElement) this.stylesheet.reify();\n\n\t\tstylesheet.warnOnUnusedSelectors(options.onwarn);\n\t}\n\n\taddSourcemapLocations(node: Node) {\n\t\twalk(node, {\n\t\t\tenter: (node: Node) => {\n\t\t\t\tthis.code.addSourcemapLocation(node.start);\n\t\t\t\tthis.code.addSourcemapLocation(node.end);\n\t\t\t},\n\t\t});\n\t}\n\n\talias(name: string) {\n\t\tif (!this.aliases.has(name)) {\n\t\t\tthis.aliases.set(name, this.getUniqueName(name));\n\t\t}\n\n\t\treturn this.aliases.get(name);\n\t}\n\n\tgenerate(result: string, options: CompileOptions, { banner = '', name, format }: GenerateOptions ) {\n\t\tconst pattern = /\\[✂(\\d+)-(\\d+)$/;\n\n\t\tconst helpers = new Set();\n\n\t\t// TODO use same regex for both\n\t\tresult = result.replace(options.generate === 'ssr' ? /(@+|#+|%+)(\\w*(?:-\\w*)?)/g : /(%+|@+)(\\w*(?:-\\w*)?)/g, (match: string, sigil: string, name: string) => {\n\t\t\tif (sigil === '@') {\n\t\t\t\tif (name in shared) {\n\t\t\t\t\tif (options.dev && `${name}Dev` in shared) name = `${name}Dev`;\n\t\t\t\t\thelpers.add(name);\n\t\t\t\t}\n\n\t\t\t\treturn this.alias(name);\n\t\t\t}\n\n\t\t\tif (sigil === '%') {\n\t\t\t\treturn this.templateVars.get(name);\n\t\t\t}\n\n\t\t\treturn sigil.slice(1) + name;\n\t\t});\n\n\t\tlet importedHelpers;\n\n\t\tif (options.shared) {\n\t\t\tif (format !== 'es' && format !== 'cjs') {\n\t\t\t\tthrow new Error(`Components with shared helpers must be compiled with \\`format: 'es'\\` or \\`format: 'cjs'\\``);\n\t\t\t}\n\n\t\t\timportedHelpers = Array.from(helpers).sort().map(name => {\n\t\t\t\tconst alias = this.alias(name);\n\t\t\t\treturn { name, alias };\n\t\t\t});\n\t\t} else {\n\t\t\tlet inlineHelpers = '';\n\n\t\t\tconst compiler = this;\n\n\t\t\timportedHelpers = [];\n\n\t\t\thelpers.forEach(name => {\n\t\t\t\tconst str = shared[name];\n\t\t\t\tconst code = new MagicString(str);\n\t\t\t\tconst expression = parseExpressionAt(str, 0);\n\n\t\t\t\tlet { scope } = annotateWithScopes(expression);\n\n\t\t\t\twalk(expression, {\n\t\t\t\t\tenter(node: Node, parent: Node) {\n\t\t\t\t\t\tif (node._scope) scope = node._scope;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnode.type === 'Identifier' &&\n\t\t\t\t\t\t\tisReference(node, parent) &&\n\t\t\t\t\t\t\t!scope.has(node.name)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (node.name in shared) {\n\t\t\t\t\t\t\t\t// this helper function depends on another one\n\t\t\t\t\t\t\t\tconst dependency = node.name;\n\t\t\t\t\t\t\t\thelpers.add(dependency);\n\n\t\t\t\t\t\t\t\tconst alias = compiler.alias(dependency);\n\t\t\t\t\t\t\t\tif (alias !== node.name) {\n\t\t\t\t\t\t\t\t\tcode.overwrite(node.start, node.end, alias);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\t\tleave(node: Node) {\n\t\t\t\t\t\tif (node._scope) scope = scope.parent;\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (name === 'transitionManager') {\n\t\t\t\t\t// special case\n\t\t\t\t\tconst global = `_svelteTransitionManager`;\n\n\t\t\t\t\tinlineHelpers += `\\n\\nvar ${this.alias('transitionManager')} = window.${global} || (window.${global} = ${code});\\n\\n`;\n\t\t\t\t} else if (name === 'escaped' || name === 'missingComponent') {\n\t\t\t\t\t// vars are an awkward special case... would be nice to avoid this\n\t\t\t\t\tconst alias = this.alias(name);\n\t\t\t\t\tinlineHelpers += `\\n\\nconst ${alias} = ${code};`\n\t\t\t\t} else {\n\t\t\t\t\tconst alias = this.alias(expression.id.name);\n\t\t\t\t\tif (alias !== expression.id.name) {\n\t\t\t\t\t\tcode.overwrite(expression.id.start, expression.id.end, alias);\n\t\t\t\t\t}\n\n\t\t\t\t\tinlineHelpers += `\\n\\n${code}`;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tresult += inlineHelpers;\n\t\t}\n\n\t\tconst sharedPath = options.shared === true\n\t\t\t? 'svelte/shared.js'\n\t\t\t: options.shared || '';\n\n\t\tconst module = wrapModule(result, format, name, options, banner, sharedPath, importedHelpers, this.imports, this.shorthandImports, this.source);\n\n\t\tconst parts = module.split('✂]');\n\t\tconst finalChunk = parts.pop();\n\n\t\tconst compiled = new Bundle({ separator: '' });\n\n\t\tfunction addString(str: string) {\n\t\t\tcompiled.addSource({\n\t\t\t\tcontent: new MagicString(str),\n\t\t\t});\n\t\t}\n\n\t\tconst { filename } = options;\n\n\t\t// special case — the source file doesn't actually get used anywhere. we need\n\t\t// to add an empty file to populate map.sources and map.sourcesContent\n\t\tif (!parts.length) {\n\t\t\tcompiled.addSource({\n\t\t\t\tfilename,\n\t\t\t\tcontent: new MagicString(this.source).remove(0, this.source.length),\n\t\t\t});\n\t\t}\n\n\t\tparts.forEach((str: string) => {\n\t\t\tconst chunk = str.replace(pattern, '');\n\t\t\tif (chunk) addString(chunk);\n\n\t\t\tconst match = pattern.exec(str);\n\n\t\t\tconst snippet = this.code.snip(+match[1], +match[2]);\n\n\t\t\tcompiled.addSource({\n\t\t\t\tfilename,\n\t\t\t\tcontent: snippet,\n\t\t\t});\n\t\t});\n\n\t\taddString(finalChunk);\n\n\t\tconst css = this.customElement ?\n\t\t\t{ code: null, map: null } :\n\t\t\tthis.stylesheet.render(options.cssOutputFilename, true);\n\n\t\tconst js = {\n\t\t\tcode: compiled.toString(),\n\t\t\tmap: compiled.generateMap({\n\t\t\t\tincludeContent: true,\n\t\t\t\tfile: options.outputFilename,\n\t\t\t})\n\t\t};\n\n\t\tthis.stats.stop('compile');\n\n\t\treturn {\n\t\t\tast: this.ast,\n\t\t\tjs,\n\t\t\tcss,\n\t\t\tstats: this.stats.render(this)\n\t\t};\n\t}\n\n\tgetUniqueName(name: string) {\n\t\tif (test) name = `${name}$`;\n\t\tlet alias = name;\n\t\tfor (\n\t\t\tlet i = 1;\n\t\t\treservedNames.has(alias) ||\n\t\t\tthis.userVars.has(alias) ||\n\t\t\tthis.usedNames.has(alias);\n\t\t\talias = `${name}_${i++}`\n\t\t);\n\t\tthis.usedNames.add(alias);\n\t\treturn alias;\n\t}\n\n\tgetUniqueNameMaker() {\n\t\tconst localUsedNames = new Set();\n\n\t\tfunction add(name: string) {\n\t\t\tlocalUsedNames.add(name);\n\t\t}\n\n\t\treservedNames.forEach(add);\n\t\tthis.userVars.forEach(add);\n\n\t\treturn (name: string) => {\n\t\t\tif (test) name = `${name}$`;\n\t\t\tlet alias = name;\n\t\t\tfor (\n\t\t\t\tlet i = 1;\n\t\t\t\tthis.usedNames.has(alias) ||\n\t\t\t\tlocalUsedNames.has(alias);\n\t\t\t\talias = `${name}_${i++}`\n\t\t\t);\n\t\t\tlocalUsedNames.add(alias);\n\t\t\treturn alias;\n\t\t};\n\t}\n\n\twalkJs(dom: boolean) {\n\t\tconst {\n\t\t\tcode,\n\t\t\tsource,\n\t\t\tcomputations,\n\t\t\tmethods,\n\t\t\ttemplateProperties,\n\t\t\timports\n\t\t} = this;\n\n\t\tconst { js } = this.ast;\n\n\t\tconst componentDefinition = new CodeBuilder();\n\n\t\tif (js) {\n\t\t\tthis.addSourcemapLocations(js.content);\n\n\t\t\tconst indentation = detectIndentation(source.slice(js.start, js.end));\n\t\t\tconst indentationLevel = getIndentationLevel(source, js.content.body[0].start);\n\t\t\tconst indentExclusionRanges = getIndentExclusionRanges(js.content);\n\n\t\t\tconst { scope, globals } = annotateWithScopes(js.content);\n\n\t\t\tscope.declarations.forEach(name => {\n\t\t\t\tthis.userVars.add(name);\n\t\t\t});\n\n\t\t\tglobals.forEach(name => {\n\t\t\t\tthis.userVars.add(name);\n\t\t\t});\n\n\t\t\tconst body = js.content.body.slice(); // slice, because we're going to be mutating the original\n\n\t\t\t// imports need to be hoisted out of the IIFE\n\t\t\tfor (let i = 0; i < body.length; i += 1) {\n\t\t\t\tconst node = body[i];\n\t\t\t\tif (node.type === 'ImportDeclaration') {\n\t\t\t\t\tremoveNode(code, js.content, node);\n\t\t\t\t\timports.push(node);\n\n\t\t\t\t\tnode.specifiers.forEach((specifier: Node) => {\n\t\t\t\t\t\tthis.userVars.add(specifier.local.name);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst defaultExport = this.defaultExport = body.find(\n\t\t\t\t(node: Node) => node.type === 'ExportDefaultDeclaration'\n\t\t\t);\n\n\t\t\tif (defaultExport) {\n\t\t\t\tdefaultExport.declaration.properties.forEach((prop: Node) => {\n\t\t\t\t\ttemplateProperties[getName(prop.key)] = prop;\n\t\t\t\t});\n\n\t\t\t\t['helpers', 'events', 'components', 'transitions', 'actions', 'animations'].forEach(key => {\n\t\t\t\t\tif (templateProperties[key]) {\n\t\t\t\t\t\ttemplateProperties[key].value.properties.forEach((prop: Node) => {\n\t\t\t\t\t\t\tthis[key].add(getName(prop.key));\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst addArrowFunctionExpression = (name: string, node: Node) => {\n\t\t\t\t\tconst { body, params, async } = node;\n\t\t\t\t\tconst fnKeyword = async ? 'async function' : 'function';\n\n\t\t\t\t\tconst paramString = params.length ?\n\t\t\t\t\t\t`[✂${params[0].start}-${params[params.length - 1].end}✂]` :\n\t\t\t\t\t\t``;\n\n\t\t\t\t\tif (body.type === 'BlockStatement') {\n\t\t\t\t\t\tcomponentDefinition.addBlock(deindent`\n\t\t\t\t\t\t\t${fnKeyword} ${name}(${paramString}) [✂${body.start}-${body.end}✂]\n\t\t\t\t\t\t`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomponentDefinition.addBlock(deindent`\n\t\t\t\t\t\t\t${fnKeyword} ${name}(${paramString}) {\n\t\t\t\t\t\t\t\treturn [✂${body.start}-${body.end}✂];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst addFunctionExpression = (name: string, node: Node) => {\n\t\t\t\t\tconst { async } = node;\n\t\t\t\t\tconst fnKeyword = async ? 'async function' : 'function';\n\n\t\t\t\t\tlet c = node.start;\n\t\t\t\t\twhile (this.source[c] !== '(') c += 1;\n\t\t\t\t\tcomponentDefinition.addBlock(deindent`\n\t\t\t\t\t\t${fnKeyword} ${name}[✂${c}-${node.end}✂];\n\t\t\t\t\t`);\n\t\t\t\t};\n\n\t\t\t\tconst addValue = (name: string, node: Node) => {\n\t\t\t\t\tcomponentDefinition.addBlock(deindent`\n\t\t\t\t\t\tvar ${name} = [✂${node.start}-${node.end}✂];\n\t\t\t\t\t`);\n\t\t\t\t};\n\n\t\t\t\tconst addDeclaration = (key: string, node: Node, allowShorthandImport?: boolean, disambiguator?: string, conflicts?: Record<string, boolean>) => {\n\t\t\t\t\tconst qualified = disambiguator ? `${disambiguator}-${key}` : key;\n\n\t\t\t\t\tif (node.type === 'Identifier' && node.name === key) {\n\t\t\t\t\t\tthis.templateVars.set(qualified, key);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet deconflicted = key;\n\t\t\t\t\tif (conflicts) while (deconflicted in conflicts) deconflicted += '_'\n\n\t\t\t\t\tlet name = this.getUniqueName(deconflicted);\n\t\t\t\t\tthis.templateVars.set(qualified, name);\n\n\t\t\t\t\tif (allowShorthandImport && node.type === 'Literal' && typeof node.value === 'string') {\n\t\t\t\t\t\tthis.shorthandImports.push({ name, source: node.value });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// deindent\n\t\t\t\t\tconst indentationLevel = getIndentationLevel(source, node.start);\n\t\t\t\t\tif (indentationLevel) {\n\t\t\t\t\t\tremoveIndentation(code, node.start, node.end, indentationLevel, indentExclusionRanges);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.type === 'ArrowFunctionExpression') {\n\t\t\t\t\t\taddArrowFunctionExpression(name, node);\n\t\t\t\t\t} else if (node.type === 'FunctionExpression') {\n\t\t\t\t\t\taddFunctionExpression(name, node);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddValue(name, node);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (templateProperties.components) {\n\t\t\t\t\ttemplateProperties.components.value.properties.forEach((property: Node) => {\n\t\t\t\t\t\taddDeclaration(getName(property.key), property.value, true, 'components');\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.computed) {\n\t\t\t\t\tconst dependencies = new Map();\n\n\t\t\t\t\tconst fullStateComputations = [];\n\n\t\t\t\t\ttemplateProperties.computed.value.properties.forEach((prop: Node) => {\n\t\t\t\t\t\tconst key = getName(prop.key);\n\t\t\t\t\t\tconst value = prop.value;\n\n\t\t\t\t\t\taddDeclaration(key, value, false, 'computed', {\n\t\t\t\t\t\t\tstate: true,\n\t\t\t\t\t\t\tchanged: true\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst param = value.params[0];\n\n\t\t\t\t\t\tif (param.type === 'ObjectPattern') {\n\t\t\t\t\t\t\tconst deps = param.properties.map(prop => prop.key.name);\n\n\t\t\t\t\t\t\tdeps.forEach(dep => {\n\t\t\t\t\t\t\t\tthis.expectedProperties.add(dep);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tdependencies.set(key, deps);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfullStateComputations.push({ key, deps: null })\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst visited = new Set();\n\n\t\t\t\t\tconst visit = (key: string) => {\n\t\t\t\t\t\tif (!dependencies.has(key)) return; // not a computation\n\n\t\t\t\t\t\tif (visited.has(key)) return;\n\t\t\t\t\t\tvisited.add(key);\n\n\t\t\t\t\t\tconst deps = dependencies.get(key);\n\t\t\t\t\t\tdeps.forEach(visit);\n\n\t\t\t\t\t\tcomputations.push({ key, deps });\n\n\t\t\t\t\t\tconst prop = templateProperties.computed.value.properties.find((prop: Node) => getName(prop.key) === key);\n\t\t\t\t\t};\n\n\t\t\t\t\ttemplateProperties.computed.value.properties.forEach((prop: Node) =>\n\t\t\t\t\t\tvisit(getName(prop.key))\n\t\t\t\t\t);\n\n\t\t\t\t\tif (fullStateComputations.length > 0) {\n\t\t\t\t\t\tcomputations.push(...fullStateComputations);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.data) {\n\t\t\t\t\taddDeclaration('data', templateProperties.data.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.events && dom) {\n\t\t\t\t\ttemplateProperties.events.value.properties.forEach((property: Node) => {\n\t\t\t\t\t\taddDeclaration(getName(property.key), property.value, false, 'events');\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.helpers) {\n\t\t\t\t\ttemplateProperties.helpers.value.properties.forEach((property: Node) => {\n\t\t\t\t\t\taddDeclaration(getName(property.key), property.value, false, 'helpers');\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.methods && dom) {\n\t\t\t\t\taddDeclaration('methods', templateProperties.methods.value);\n\n\t\t\t\t\ttemplateProperties.methods.value.properties.forEach(prop => {\n\t\t\t\t\t\tthis.methods.add(prop.key.name);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.namespace) {\n\t\t\t\t\tconst ns = nodeToString(templateProperties.namespace.value);\n\t\t\t\t\tthis.namespace = namespaces[ns] || ns;\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.oncreate && dom) {\n\t\t\t\t\taddDeclaration('oncreate', templateProperties.oncreate.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.ondestroy && dom) {\n\t\t\t\t\taddDeclaration('ondestroy', templateProperties.ondestroy.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.onstate && dom) {\n\t\t\t\t\taddDeclaration('onstate', templateProperties.onstate.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.onupdate && dom) {\n\t\t\t\t\taddDeclaration('onupdate', templateProperties.onupdate.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.preload) {\n\t\t\t\t\taddDeclaration('preload', templateProperties.preload.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.props) {\n\t\t\t\t\tthis.props = templateProperties.props.value.elements.map((element: Node) => nodeToString(element));\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.setup) {\n\t\t\t\t\taddDeclaration('setup', templateProperties.setup.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.store) {\n\t\t\t\t\taddDeclaration('store', templateProperties.store.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.tag) {\n\t\t\t\t\tthis.tag = nodeToString(templateProperties.tag.value);\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.transitions) {\n\t\t\t\t\ttemplateProperties.transitions.value.properties.forEach((property: Node) => {\n\t\t\t\t\t\taddDeclaration(getName(property.key), property.value, false, 'transitions');\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.animations) {\n\t\t\t\t\ttemplateProperties.animations.value.properties.forEach((property: Node) => {\n\t\t\t\t\t\taddDeclaration(getName(property.key), property.value, false, 'animations');\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (templateProperties.actions) {\n\t\t\t\t\ttemplateProperties.actions.value.properties.forEach((property: Node) => {\n\t\t\t\t\t\taddDeclaration(getName(property.key), property.value, false, 'actions');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (indentationLevel) {\n\t\t\t\tif (defaultExport) {\n\t\t\t\t\tremoveIndentation(code, js.content.start, defaultExport.start, indentationLevel, indentExclusionRanges);\n\t\t\t\t\tremoveIndentation(code, defaultExport.end, js.content.end, indentationLevel, indentExclusionRanges);\n\t\t\t\t} else {\n\t\t\t\t\tremoveIndentation(code, js.content.start, js.content.end, indentationLevel, indentExclusionRanges);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet a = js.content.start;\n\t\t\twhile (/\\s/.test(source[a])) a += 1;\n\n\t\t\tlet b = js.content.end;\n\t\t\twhile (/\\s/.test(source[b - 1])) b -= 1;\n\n\t\t\tif (defaultExport) {\n\t\t\t\tthis.javascript = '';\n\t\t\t\tif (a !== defaultExport.start) this.javascript += `[✂${a}-${defaultExport.start}✂]`;\n\t\t\t\tif (!componentDefinition.isEmpty()) this.javascript += componentDefinition;\n\t\t\t\tif (defaultExport.end !== b) this.javascript += `[✂${defaultExport.end}-${b}✂]`;\n\t\t\t} else {\n\t\t\t\tthis.javascript = a === b ? null : `[✂${a}-${b}✂]`;\n\t\t\t}\n\t\t}\n\t}\n}\n","import MagicString from 'magic-string';\nimport isReference from 'is-reference';\nimport { parseExpressionAt } from 'acorn';\nimport annotateWithScopes from '../../utils/annotateWithScopes';\nimport { walk } from 'estree-walker';\nimport deindent from '../../utils/deindent';\nimport { stringify, escape } from '../../utils/stringify';\nimport CodeBuilder from '../../utils/CodeBuilder';\nimport globalWhitelist from '../../utils/globalWhitelist';\nimport reservedNames from '../../utils/reservedNames';\nimport Compiler from '../Compiler';\nimport Stylesheet from '../../css/Stylesheet';\nimport Stats from '../../Stats';\nimport Block from './Block';\nimport { test } from '../../config';\nimport { Ast, CompileOptions, Node } from '../../interfaces';\n\nexport class DomTarget {\n\tblocks: (Block|string)[];\n\treadonly: Set<string>;\n\tmetaBindings: string[];\n\n\thasIntroTransitions: boolean;\n\thasOutroTransitions: boolean;\n\thasComplexBindings: boolean;\n\n\tconstructor() {\n\t\tthis.blocks = [];\n\t\tthis.readonly = new Set();\n\n\t\t// initial values for e.g. window.innerWidth, if there's a <svelte:window> meta tag\n\t\tthis.metaBindings = [];\n\t}\n}\n\nexport default function dom(\n\tast: Ast,\n\tsource: string,\n\tstylesheet: Stylesheet,\n\toptions: CompileOptions,\n\tstats: Stats\n) {\n\tconst format = options.format || 'es';\n\n\tconst target = new DomTarget();\n\tconst compiler = new Compiler(ast, source, options.name || 'SvelteComponent', stylesheet, options, stats, true, target);\n\n\tconst {\n\t\tcomputations,\n\t\tname,\n\t\ttemplateProperties,\n\t\tnamespace,\n\t} = compiler;\n\n\tcompiler.fragment.build();\n\tconst { block } = compiler.fragment;\n\n\tif (compiler.options.nestedTransitions) {\n\t\tblock.hasOutroMethod = true;\n\t}\n\n\t// prevent fragment being created twice (#1063)\n\tif (options.customElement) block.builders.create.addLine(`this.c = @noop;`);\n\n\tconst builder = new CodeBuilder();\n\tconst computationBuilder = new CodeBuilder();\n\tconst computationDeps = new Set();\n\n\tif (computations.length) {\n\t\tcomputations.forEach(({ key, deps }) => {\n\t\t\tif (target.readonly.has(key)) {\n\t\t\t\t// <svelte:window> bindings\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Cannot have a computed value '${key}' that clashes with a read-only property`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttarget.readonly.add(key);\n\n\t\t\tif (deps) {\n\t\t\t\tdeps.forEach(dep => {\n\t\t\t\t\tcomputationDeps.add(dep);\n\t\t\t\t});\n\n\t\t\t\tconst condition = `${deps.map(dep => `changed.${dep}`).join(' || ')}`;\n\t\t\t\tconst statement = `if (this._differs(state.${key}, (state.${key} = %computed-${key}(state)))) changed.${key} = true;`;\n\n\t\t\t\tcomputationBuilder.addConditional(condition, statement);\n\t\t\t} else {\n\t\t\t\t// computed property depends on entire state object —\n\t\t\t\t// these must go at the end\n\t\t\t\tcomputationBuilder.addLine(\n\t\t\t\t\t`if (this._differs(state.${key}, (state.${key} = %computed-${key}(state)))) changed.${key} = true;`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (compiler.javascript) {\n\t\tbuilder.addBlock(compiler.javascript);\n\t}\n\n\tconst css = compiler.stylesheet.render(options.filename, !compiler.customElement);\n\tconst styles = compiler.stylesheet.hasStyles && stringify(options.dev ?\n\t\t`${css.code}\\n/*# sourceMappingURL=${css.map.toUrl()} */` :\n\t\tcss.code, { onlyEscapeAtSymbol: true });\n\n\tif (styles && compiler.options.css !== false && !compiler.customElement) {\n\t\tbuilder.addBlock(deindent`\n\t\t\tfunction @add_css() {\n\t\t\t\tvar style = @createElement(\"style\");\n\t\t\t\tstyle.id = '${compiler.stylesheet.id}-style';\n\t\t\t\tstyle.textContent = ${styles};\n\t\t\t\t@appendNode(style, document.head);\n\t\t\t}\n\t\t`);\n\t}\n\n\ttarget.blocks.forEach(block => {\n\t\tbuilder.addBlock(block.toString());\n\t});\n\n\tconst sharedPath: string = options.shared === true\n\t\t? 'svelte/shared.js'\n\t\t: options.shared || '';\n\n\tconst proto = sharedPath\n\t\t? `@proto`\n\t\t: deindent`\n\t\t{\n\t\t\t${['destroy', 'get', 'fire', 'on', 'set', '_set', '_mount', '_differs']\n\t\t\t\t.map(n => `${n}: @${n}`)\n\t\t\t\t.join(',\\n')}\n\t\t}`;\n\n\tconst debugName = `<${compiler.customElement ? compiler.tag : name}>`;\n\n\t// generate initial state object\n\tconst expectedProperties = Array.from(compiler.expectedProperties);\n\tconst globals = expectedProperties.filter(prop => globalWhitelist.has(prop));\n\tconst storeProps = expectedProperties.filter(prop => prop[0] === '$');\n\tconst initialState = [];\n\n\tif (globals.length > 0) {\n\t\tinitialState.push(`{ ${globals.map(prop => `${prop} : ${prop}`).join(', ')} }`);\n\t}\n\n\tif (storeProps.length > 0) {\n\t\tinitialState.push(`this.store._init([${storeProps.map(prop => `\"${prop.slice(1)}\"`)}])`);\n\t}\n\n\tif (templateProperties.data) {\n\t\tinitialState.push(`%data()`);\n\t} else if (globals.length === 0 && storeProps.length === 0) {\n\t\tinitialState.push('{}');\n\t}\n\n\tinitialState.push(`options.data`);\n\n\tconst hasInitHooks = !!(templateProperties.oncreate || templateProperties.onstate || templateProperties.onupdate);\n\n\tconst constructorBody = deindent`\n\t\t${options.dev && `this._debugName = '${debugName}';`}\n\t\t${options.dev && !compiler.customElement &&\n\t\t\t`if (!options || (!options.target && !options.root)) throw new Error(\"'target' is a required option\");`}\n\t\t@init(this, options);\n\t\t${templateProperties.store && `this.store = %store();`}\n\t\t${compiler.usesRefs && `this.refs = {};`}\n\t\tthis._state = ${initialState.reduce((state, piece) => `@assign(${state}, ${piece})`)};\n\t\t${storeProps.length > 0 && `this.store._add(this, [${storeProps.map(prop => `\"${prop.slice(1)}\"`)}]);`}\n\t\t${target.metaBindings}\n\t\t${computations.length && `this._recompute({ ${Array.from(computationDeps).map(dep => `${dep}: 1`).join(', ')} }, this._state);`}\n\t\t${options.dev &&\n\t\t\tArray.from(compiler.expectedProperties).map(prop => {\n\t\t\t\tif (globalWhitelist.has(prop)) return;\n\t\t\t\tif (computations.find(c => c.key === prop)) return;\n\n\t\t\t\tconst message = compiler.components.has(prop) ?\n\t\t\t\t\t`${debugName} expected to find '${prop}' in \\`data\\`, but found it in \\`components\\` instead` :\n\t\t\t\t\t`${debugName} was created without expected data property '${prop}'`;\n\n\t\t\t\tconst conditions = [`!('${prop}' in this._state)`];\n\t\t\t\tif (compiler.customElement) conditions.push(`!('${prop}' in this.attributes)`);\n\n\t\t\t\treturn `if (${conditions.join(' && ')}) console.warn(\"${message}\");`\n\t\t\t})}\n\t\t${compiler.bindingGroups.length &&\n\t\t\t`this._bindingGroups = [${Array(compiler.bindingGroups.length).fill('[]').join(', ')}];`}\n\t\tthis._intro = ${compiler.options.skipIntroByDefault ? '!!options.intro' : 'true'};\n\n\t\t${templateProperties.onstate && `this._handlers.state = [%onstate];`}\n\t\t${templateProperties.onupdate && `this._handlers.update = [%onupdate];`}\n\n\t\t${(templateProperties.ondestroy || storeProps.length) && (\n\t\t\t`this._handlers.destroy = [${\n\t\t\t\t[templateProperties.ondestroy && `%ondestroy`, storeProps.length && `@removeFromStore`].filter(Boolean).join(', ')\n\t\t\t}];`\n\t\t)}\n\n\t\t${compiler.slots.size && `this._slotted = options.slots || {};`}\n\n\t\t${compiler.customElement ?\n\t\t\tdeindent`\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t\t${css.code && `this.shadowRoot.innerHTML = \\`<style>${escape(css.code, { onlyEscapeAtSymbol: true }).replace(/\\\\/g, '\\\\\\\\')}${options.dev ? `\\n/*# sourceMappingURL=${css.map.toUrl()} */` : ''}</style>\\`;`}\n\t\t\t` :\n\t\t\t(compiler.stylesheet.hasStyles && options.css !== false &&\n\t\t\t`if (!document.getElementById(\"${compiler.stylesheet.id}-style\")) @add_css();`)\n\t\t}\n\n\t\t${(hasInitHooks || compiler.hasComponents || target.hasComplexBindings || target.hasIntroTransitions) && deindent`\n\t\t\tif (!options.root) {\n\t\t\t\tthis._oncreate = [];\n\t\t\t\t${(compiler.hasComponents || target.hasComplexBindings) && `this._beforecreate = [];`}\n\t\t\t\t${(compiler.hasComponents || target.hasIntroTransitions) && `this._aftercreate = [];`}\n\t\t\t}\n\t\t`}\n\n\t\t${compiler.slots.size && `this.slots = {};`}\n\n\t\tthis._fragment = @create_main_fragment(this, this._state);\n\n\t\t${hasInitHooks && deindent`\n\t\t\tthis.root._oncreate.push(() => {\n\t\t\t\t${templateProperties.onstate && `%onstate.call(this, { changed: @assignTrue({}, this._state), current: this._state });`}\n\t\t\t\t${templateProperties.oncreate && `%oncreate.call(this);`}\n\t\t\t\tthis.fire(\"update\", { changed: @assignTrue({}, this._state), current: this._state });\n\t\t\t});\n\t\t`}\n\n\t\t${compiler.customElement ? deindent`\n\t\t\tthis._fragment.c();\n\t\t\tthis._fragment.${block.hasIntroMethod ? 'i' : 'm'}(this.shadowRoot, null);\n\n\t\t\tif (options.target) this._mount(options.target, options.anchor);\n\t\t` : deindent`\n\t\t\tif (options.target) {\n\t\t\t\t${compiler.options.hydratable\n\t\t\t\t\t? deindent`\n\t\t\t\t\t\tvar nodes = @children(options.target);\n\t\t\t\t\t\toptions.hydrate ? this._fragment.l(nodes) : this._fragment.c();\n\t\t\t\t\t\tnodes.forEach(@detachNode);\n\t\t\t\t\t` :\n\t\t\t\t\tdeindent`\n\t\t\t\t\t\t${options.dev && `if (options.hydrate) throw new Error(\"options.hydrate only works if the component was compiled with the \\`hydratable: true\\` option\");`}\n\t\t\t\t\t\tthis._fragment.c();\n\t\t\t\t\t`}\n\t\t\t\tthis._mount(options.target, options.anchor);\n\n\t\t\t\t${(compiler.hasComponents || target.hasComplexBindings || hasInitHooks || target.hasIntroTransitions) && deindent`\n\t\t\t\t\t${compiler.hasComponents && `this._lock = true;`}\n\t\t\t\t\t${(compiler.hasComponents || target.hasComplexBindings) && `@callAll(this._beforecreate);`}\n\t\t\t\t\t${(compiler.hasComponents || hasInitHooks) && `@callAll(this._oncreate);`}\n\t\t\t\t\t${(compiler.hasComponents || target.hasIntroTransitions) && `@callAll(this._aftercreate);`}\n\t\t\t\t\t${compiler.hasComponents && `this._lock = false;`}\n\t\t\t\t`}\n\t\t\t}\n\t\t`}\n\n\t\t${compiler.options.skipIntroByDefault && `this._intro = true;`}\n\t`;\n\n\tif (compiler.customElement) {\n\t\tconst props = compiler.props || Array.from(compiler.expectedProperties);\n\n\t\tbuilder.addBlock(deindent`\n\t\t\tclass ${name} extends HTMLElement {\n\t\t\t\tconstructor(options = {}) {\n\t\t\t\t\tsuper();\n\t\t\t\t\t${constructorBody}\n\t\t\t\t}\n\n\t\t\t\tstatic get observedAttributes() {\n\t\t\t\t\treturn ${JSON.stringify(props)};\n\t\t\t\t}\n\n\t\t\t\t${props.map(prop => deindent`\n\t\t\t\t\tget ${prop}() {\n\t\t\t\t\t\treturn this.get().${prop};\n\t\t\t\t\t}\n\n\t\t\t\t\tset ${prop}(value) {\n\t\t\t\t\t\tthis.set({ ${prop}: value });\n\t\t\t\t\t}\n\t\t\t\t`).join('\\n\\n')}\n\n\t\t\t\t${compiler.slots.size && deindent`\n\t\t\t\t\tconnectedCallback() {\n\t\t\t\t\t\tObject.keys(this._slotted).forEach(key => {\n\t\t\t\t\t\t\tthis.appendChild(this._slotted[key]);\n\t\t\t\t\t\t});\n\t\t\t\t\t}`}\n\n\t\t\t\tattributeChangedCallback(attr, oldValue, newValue) {\n\t\t\t\t\tthis.set({ [attr]: newValue });\n\t\t\t\t}\n\n\t\t\t\t${(compiler.hasComponents || target.hasComplexBindings || templateProperties.oncreate || target.hasIntroTransitions) && deindent`\n\t\t\t\t\tconnectedCallback() {\n\t\t\t\t\t\t${compiler.hasComponents && `this._lock = true;`}\n\t\t\t\t\t\t${(compiler.hasComponents || target.hasComplexBindings) && `@callAll(this._beforecreate);`}\n\t\t\t\t\t\t${(compiler.hasComponents || templateProperties.oncreate) && `@callAll(this._oncreate);`}\n\t\t\t\t\t\t${(compiler.hasComponents || target.hasIntroTransitions) && `@callAll(this._aftercreate);`}\n\t\t\t\t\t\t${compiler.hasComponents && `this._lock = false;`}\n\t\t\t\t\t}\n\t\t\t\t`}\n\t\t\t}\n\n\t\t\t@assign(${name}.prototype, ${proto});\n\t\t\t${templateProperties.methods && `@assign(${name}.prototype, %methods);`}\n\t\t\t@assign(${name}.prototype, {\n\t\t\t\t_mount(target, anchor) {\n\t\t\t\t\ttarget.insertBefore(this, anchor);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcustomElements.define(\"${compiler.tag}\", ${name});\n\t\t`);\n\t} else {\n\t\tbuilder.addBlock(deindent`\n\t\t\tfunction ${name}(options) {\n\t\t\t\t${constructorBody}\n\t\t\t}\n\n\t\t\t@assign(${name}.prototype, ${proto});\n\t\t\t${templateProperties.methods && `@assign(${name}.prototype, %methods);`}\n\t\t`);\n\t}\n\n\tconst immutable = templateProperties.immutable ? templateProperties.immutable.value.value : options.immutable;\n\n\tbuilder.addBlock(deindent`\n\t\t${options.dev && deindent`\n\t\t\t${name}.prototype._checkReadOnly = function _checkReadOnly(newState) {\n\t\t\t\t${Array.from(target.readonly).map(\n\t\t\t\t\tprop =>\n\t\t\t\t\t\t`if ('${prop}' in newState && !this._updatingReadonlyProperty) throw new Error(\"${debugName}: Cannot set read-only property '${prop}'\");`\n\t\t\t\t)}\n\t\t\t};\n\t\t`}\n\n\t\t${computations.length ? deindent`\n\t\t\t${name}.prototype._recompute = function _recompute(changed, state) {\n\t\t\t\t${computationBuilder}\n\t\t\t}\n\t\t` : (!sharedPath && `${name}.prototype._recompute = @noop;`)}\n\n\t\t${templateProperties.setup && `%setup(${name});`}\n\n\t\t${templateProperties.preload && `${name}.preload = %preload;`}\n\n\t\t${immutable && `${name}.prototype._differs = @_differsImmutable;`}\n\t`);\n\n\tlet result = builder.toString();\n\n\tconst filename = options.filename && (\n\t\ttypeof process !== 'undefined' ? options.filename.replace(process.cwd(), '').replace(/^[\\/\\\\]/, '') : options.filename\n\t);\n\n\treturn compiler.generate(result, options, {\n\t\tbanner: `/* ${filename ? `${filename} ` : ``}generated by Svelte v${\"__VERSION__\"} */`,\n\t\tsharedPath,\n\t\tname,\n\t\tformat,\n\t});\n}\n","import deindent from '../../utils/deindent';\nimport Compiler from '../Compiler';\nimport Stats from '../../Stats';\nimport Stylesheet from '../../css/Stylesheet';\nimport { removeNode, removeObjectKey } from '../../utils/removeNode';\nimport getName from '../../utils/getName';\nimport globalWhitelist from '../../utils/globalWhitelist';\nimport { Ast, Node, CompileOptions } from '../../interfaces';\nimport { AppendTarget } from '../../interfaces';\nimport { stringify } from '../../utils/stringify';\n\nexport class SsrTarget {\n\tbindings: string[];\n\trenderCode: string;\n\tappendTargets: AppendTarget[];\n\n\tconstructor() {\n\t\tthis.bindings = [];\n\t\tthis.renderCode = '';\n\t\tthis.appendTargets = [];\n\t}\n\n\tappend(code: string) {\n\t\tif (this.appendTargets.length) {\n\t\t\tconst appendTarget = this.appendTargets[this.appendTargets.length - 1];\n\t\t\tconst slotName = appendTarget.slotStack[appendTarget.slotStack.length - 1];\n\t\t\tappendTarget.slots[slotName] += code;\n\t\t} else {\n\t\t\tthis.renderCode += code;\n\t\t}\n\t}\n}\n\nexport default function ssr(\n\tast: Ast,\n\tsource: string,\n\tstylesheet: Stylesheet,\n\toptions: CompileOptions,\n\tstats: Stats\n) {\n\tconst format = options.format || 'cjs';\n\n\tconst target = new SsrTarget();\n\tconst compiler = new Compiler(ast, source, options.name || 'SvelteComponent', stylesheet, options, stats, false, target);\n\n\tconst { computations, name, templateProperties } = compiler;\n\n\t// create main render() function\n\ttrim(compiler.fragment.children).forEach((node: Node) => {\n\t\tnode.ssr();\n\t});\n\n\tconst css = compiler.customElement ?\n\t\t{ code: null, map: null } :\n\t\tcompiler.stylesheet.render(options.filename, true);\n\n\t// generate initial state object\n\tconst expectedProperties = Array.from(compiler.expectedProperties);\n\tconst globals = expectedProperties.filter(prop => globalWhitelist.has(prop));\n\tconst storeProps = expectedProperties.filter(prop => prop[0] === '$');\n\n\tconst initialState = [];\n\tif (globals.length > 0) {\n\t\tinitialState.push(`{ ${globals.map(prop => `${prop} : ${prop}`).join(', ')} }`);\n\t}\n\n\tif (storeProps.length > 0) {\n\t\tconst initialize = `_init([${storeProps.map(prop => `\"${prop.slice(1)}\"`)}])`\n\t\tinitialState.push(`options.store.${initialize}`);\n\t}\n\n\tif (templateProperties.data) {\n\t\tinitialState.push(`%data()`);\n\t} else if (globals.length === 0 && storeProps.length === 0) {\n\t\tinitialState.push('{}');\n\t}\n\n\tinitialState.push('ctx');\n\n\tconst helpers = new Set();\n\n\t// TODO concatenate CSS maps\n\tconst result = deindent`\n\t\t${compiler.javascript}\n\n\t\tvar ${name} = {};\n\n\t\t${options.filename && `${name}.filename = ${stringify(options.filename)}`};\n\n\t\t${name}.data = function() {\n\t\t\treturn ${templateProperties.data ? `%data()` : `{}`};\n\t\t};\n\n\t\t${name}.render = function(state, options = {}) {\n\t\t\tvar components = new Set();\n\n\t\t\tfunction addComponent(component) {\n\t\t\t\tcomponents.add(component);\n\t\t\t}\n\n\t\t\tvar result = { head: '', addComponent };\n\t\t\tvar html = ${name}._render(result, state, options);\n\n\t\t\tvar cssCode = Array.from(components).map(c => c.css && c.css.code).filter(Boolean).join('\\\\n');\n\n\t\t\treturn {\n\t\t\t\thtml,\n\t\t\t\thead: result.head,\n\t\t\t\tcss: { code: cssCode, map: null },\n\t\t\t\ttoString() {\n\t\t\t\t\treturn html;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t${name}._render = function(__result, ctx, options) {\n\t\t\t${templateProperties.store && `options.store = %store();`}\n\t\t\t__result.addComponent(${name});\n\n\t\t\tctx = Object.assign(${initialState.join(', ')});\n\n\t\t\t${computations.map(\n\t\t\t\t({ key }) => `ctx.${key} = %computed-${key}(ctx);`\n\t\t\t)}\n\n\t\t\t${target.bindings.length &&\n\t\t\t\tdeindent`\n\t\t\t\tvar settled = false;\n\t\t\t\tvar tmp;\n\n\t\t\t\twhile (!settled) {\n\t\t\t\t\tsettled = true;\n\n\t\t\t\t\t${target.bindings.join('\\n\\n')}\n\t\t\t\t}\n\t\t\t`}\n\n\t\t\treturn \\`${target.renderCode}\\`;\n\t\t};\n\n\t\t${name}.css = {\n\t\t\tcode: ${css.code ? stringify(css.code) : `''`},\n\t\t\tmap: ${css.map ? stringify(css.map.toString()) : 'null'}\n\t\t};\n\n\t\tvar warned = false;\n\n\t\t${templateProperties.preload && `${name}.preload = %preload;`}\n\t`;\n\n\treturn compiler.generate(result, options, { name, format });\n}\n\nfunction trim(nodes) {\n\tlet start = 0;\n\tfor (; start < nodes.length; start += 1) {\n\t\tconst node = nodes[start];\n\t\tif (node.type !== 'Text') break;\n\n\t\tnode.data = node.data.replace(/^\\s+/, '');\n\t\tif (node.data) break;\n\t}\n\n\tlet end = nodes.length;\n\tfor (; end > start; end -= 1) {\n\t\tconst node = nodes[end - 1];\n\t\tif (node.type !== 'Text') break;\n\n\t\tnode.data = node.data.replace(/\\s+$/, '');\n\t\tif (node.data) break;\n\t}\n\n\treturn nodes.slice(start, end);\n}\n","import { Node, Warning } from './interfaces';\nimport Compiler from './compile/Compiler';\n\nconst now = (typeof process !== 'undefined' && process.hrtime)\n\t? () => {\n\t\tconst t = process.hrtime();\n\t\treturn t[0] * 1e3 + t[1] / 1e6;\n\t}\n\t: () => self.performance.now();\n\ntype Timing = {\n\tlabel: string;\n\tstart: number;\n\tend: number;\n\tchildren: Timing[];\n}\n\nfunction collapseTimings(timings) {\n\tconst result = {};\n\ttimings.forEach(timing => {\n\t\tresult[timing.label] = Object.assign({\n\t\t\ttotal: timing.end - timing.start\n\t\t}, timing.children && collapseTimings(timing.children));\n\t});\n\treturn result;\n}\n\nexport default class Stats {\n\tonwarn: (warning: Warning) => void;\n\n\tstartTime: number;\n\tcurrentTiming: Timing;\n\tcurrentChildren: Timing[];\n\ttimings: Timing[];\n\tstack: Timing[];\n\twarnings: Warning[];\n\n\tconstructor({ onwarn }: {\n\t\tonwarn: (warning: Warning) => void\n\t}) {\n\t\tthis.startTime = now();\n\t\tthis.stack = [];\n\t\tthis.currentChildren = this.timings = [];\n\n\t\tthis.onwarn = onwarn;\n\n\t\tthis.warnings = [];\n\t}\n\n\tstart(label) {\n\t\tconst timing = {\n\t\t\tlabel,\n\t\t\tstart: now(),\n\t\t\tend: null,\n\t\t\tchildren: []\n\t\t};\n\n\t\tthis.currentChildren.push(timing);\n\t\tthis.stack.push(timing);\n\n\t\tthis.currentTiming = timing;\n\t\tthis.currentChildren = timing.children;\n\t}\n\n\tstop(label) {\n\t\tif (label !== this.currentTiming.label) {\n\t\t\tthrow new Error(`Mismatched timing labels`);\n\t\t}\n\n\t\tthis.currentTiming.end = now();\n\t\tthis.stack.pop();\n\t\tthis.currentTiming = this.stack[this.stack.length - 1];\n\t\tthis.currentChildren = this.currentTiming ? this.currentTiming.children : this.timings;\n\t}\n\n\trender(compiler: Compiler) {\n\t\tconst timings = Object.assign({\n\t\t\ttotal: now() - this.startTime\n\t\t}, collapseTimings(this.timings));\n\n\t\t// TODO would be good to have this info even\n\t\t// if options.generate is false\n\t\tconst imports = compiler && compiler.imports.map(node => {\n\t\t\treturn {\n\t\t\t\tsource: node.source.value,\n\t\t\t\tspecifiers: node.specifiers.map(specifier => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: (\n\t\t\t\t\t\t\tspecifier.type === 'ImportDefaultSpecifier' ? 'default' :\n\t\t\t\t\t\t\tspecifier.type === 'ImportNamespaceSpecifier' ? '*' :\n\t\t\t\t\t\t\tspecifier.imported.name\n\t\t\t\t\t\t),\n\t\t\t\t\t\tas: specifier.local.name\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\tconst hooks: Record<string, boolean> = compiler && {\n\t\t\toncreate: !!compiler.templateProperties.oncreate,\n\t\t\tondestroy: !!compiler.templateProperties.ondestroy,\n\t\t\tonstate: !!compiler.templateProperties.onstate,\n\t\t\tonupdate: !!compiler.templateProperties.onupdate\n\t\t};\n\n\t\treturn {\n\t\t\ttimings,\n\t\t\twarnings: this.warnings,\n\t\t\timports,\n\t\t\thooks\n\t\t};\n\t}\n\n\twarn(warning) {\n\t\tthis.warnings.push(warning);\n\t\tthis.onwarn(warning);\n\t}\n}","export function noop() {}\n\nexport function assign(tar, src) {\n\tfor (var k in src) tar[k] = src[k];\n\treturn tar;\n}\n\nexport function assignTrue(tar, src) {\n\tfor (var k in src) tar[k] = 1;\n\treturn tar;\n}\n\nexport function isPromise(value) {\n\treturn value && typeof value.then === 'function';\n}\n\nexport function callAfter(fn, i) {\n\treturn () => {\n\t\tif (!--i) fn();\n\t};\n}","import { Node } from '../interfaces';\n\nexport const UNKNOWN = {};\n\nexport function gatherPossibleValues(node: Node, set: Set<string|{}>) {\n\tif (node.type === 'Literal') {\n\t\tset.add(node.value);\n\t}\n\n\telse if (node.type === 'ConditionalExpression') {\n\t\tgatherPossibleValues(node.consequent, set);\n\t\tgatherPossibleValues(node.alternate, set);\n\t}\n\n\telse {\n\t\tset.add(UNKNOWN);\n\t}\n}","import MagicString from 'magic-string';\nimport Stylesheet from './Stylesheet';\nimport { gatherPossibleValues, UNKNOWN } from './gatherPossibleValues';\nimport { Validator } from '../validate/index';\nimport { Node } from '../interfaces';\n\nexport default class Selector {\n\tnode: Node;\n\tstylesheet: Stylesheet;\n\tblocks: Block[];\n\tlocalBlocks: Block[];\n\tused: boolean;\n\n\tconstructor(node: Node, stylesheet: Stylesheet) {\n\t\tthis.node = node;\n\t\tthis.stylesheet = stylesheet;\n\n\t\tthis.blocks = groupSelectors(node);\n\n\t\t// take trailing :global(...) selectors out of consideration\n\t\tlet i = this.blocks.length;\n\t\twhile (i > 0) {\n\t\t\tif (!this.blocks[i - 1].global) break;\n\t\t\ti -= 1;\n\t\t}\n\n\t\tthis.localBlocks = this.blocks.slice(0, i);\n\t\tthis.used = this.blocks[0].global;\n\t}\n\n\tapply(node: Node, stack: Node[]) {\n\t\tconst toEncapsulate: Node[] = [];\n\t\tapplySelector(this.localBlocks.slice(), node, stack.slice(), toEncapsulate);\n\n\t\tif (toEncapsulate.length > 0) {\n\t\t\ttoEncapsulate.filter((_, i) => i === 0 || i === toEncapsulate.length - 1).forEach(({ node, block }) => {\n\t\t\t\tthis.stylesheet.nodesWithCssClass.add(node);\n\t\t\t\tblock.shouldEncapsulate = true;\n\t\t\t});\n\n\t\t\tthis.used = true;\n\t\t}\n\t}\n\n\tminify(code: MagicString) {\n\t\tlet c: number = null;\n\t\tthis.blocks.forEach((block, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tif (block.start - c > 1) {\n\t\t\t\t\tcode.overwrite(c, block.start, block.combinator.name || ' ');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc = block.end;\n\t\t});\n\t}\n\n\ttransform(code: MagicString, attr: string) {\n\t\tfunction encapsulateBlock(block: Block) {\n\t\t\tlet i = block.selectors.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst selector = block.selectors[i];\n\t\t\t\tif (selector.type === 'PseudoElementSelector' || selector.type === 'PseudoClassSelector') continue;\n\n\t\t\t\tif (selector.type === 'TypeSelector' && selector.name === '*') {\n\t\t\t\t\tcode.overwrite(selector.start, selector.end, attr);\n\t\t\t\t} else {\n\t\t\t\t\tcode.appendLeft(selector.end, attr);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ti = block.selectors.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst selector = block.selectors[i];\n\n\t\t\t\tif (selector.type === 'RefSelector') {\n\t\t\t\t\tcode.overwrite(selector.start, selector.end, `[svelte-ref-${selector.name}]`, {\n\t\t\t\t\t\tcontentOnly: true,\n\t\t\t\t\t\tstoreName: false\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.blocks.forEach((block, i) => {\n\t\t\tif (block.global) {\n\t\t\t\tconst selector = block.selectors[0];\n\t\t\t\tconst first = selector.children[0];\n\t\t\t\tconst last = selector.children[selector.children.length - 1];\n\t\t\t\tcode.remove(selector.start, first.start).remove(last.end, selector.end);\n\t\t\t}\n\n\t\t\tif (block.shouldEncapsulate) encapsulateBlock(block);\n\t\t});\n\t}\n\n\tvalidate(validator: Validator) {\n\t\tthis.blocks.forEach((block) => {\n\t\t\tlet i = block.selectors.length;\n\t\t\twhile (i-- > 1) {\n\t\t\t\tconst selector = block.selectors[i];\n\t\t\t\tif (selector.type === 'PseudoClassSelector' && selector.name === 'global') {\n\t\t\t\t\tvalidator.error(selector, {\n\t\t\t\t\t\tcode: `css-invalid-global`,\n\t\t\t\t\t\tmessage: `:global(...) must be the first element in a compound selector`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tlet start = 0;\n\t\tlet end = this.blocks.length;\n\n\t\tfor (; start < end; start += 1) {\n\t\t\tif (!this.blocks[start].global) break;\n\t\t}\n\n\t\tfor (; end > start; end -= 1) {\n\t\t\tif (!this.blocks[end - 1].global) break;\n\t\t}\n\n\t\tfor (let i = start; i < end; i += 1) {\n\t\t\tif (this.blocks[i].global) {\n\t\t\t\tvalidator.error(this.blocks[i].selectors[0], {\n\t\t\t\t\tcode: `css-invalid-global`,\n\t\t\t\t\tmessage: `:global(...) can be at the start or end of a selector sequence, but not in the middle`\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction isDescendantSelector(selector: Node) {\n\treturn selector.type === 'WhiteSpace' || selector.type === 'Combinator';\n}\n\nfunction applySelector(blocks: Block[], node: Node, stack: Node[], toEncapsulate: any[]): boolean {\n\tconst block = blocks.pop();\n\tif (!block) return false;\n\n\tif (!node) {\n\t\treturn blocks.every(block => block.global);\n\t}\n\n\tlet i = block.selectors.length;\n\tlet j = stack.length;\n\n\twhile (i--) {\n\t\tconst selector = block.selectors[i];\n\n\t\tif (selector.type === 'PseudoClassSelector' && selector.name === 'global') {\n\t\t\t// TODO shouldn't see this here... maybe we should enforce that :global(...)\n\t\t\t// cannot be sandwiched between non-global selectors?\n\t\t\treturn false;\n\t\t}\n\n\t\tif (selector.type === 'PseudoClassSelector' || selector.type === 'PseudoElementSelector') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (selector.type === 'ClassSelector') {\n\t\t\tif (!attributeMatches(node, 'class', selector.name, '~=', false)) return false;\n\t\t}\n\n\t\telse if (selector.type === 'IdSelector') {\n\t\t\tif (!attributeMatches(node, 'id', selector.name, '=', false)) return false;\n\t\t}\n\n\t\telse if (selector.type === 'AttributeSelector') {\n\t\t\tif (!attributeMatches(node, selector.name.name, selector.value && unquote(selector.value), selector.matcher, selector.flags)) return false;\n\t\t}\n\n\t\telse if (selector.type === 'TypeSelector') {\n\t\t\t// remove toLowerCase() in v2, when uppercase elements will be forbidden\n\t\t\tif (node.name.toLowerCase() !== selector.name.toLowerCase() && selector.name !== '*') return false;\n\t\t}\n\n\t\telse if (selector.type === 'RefSelector') {\n\t\t\tif (node.ref === selector.name) {\n\t\t\t\tnode._cssRefAttribute = selector.name;\n\t\t\t\ttoEncapsulate.push({ node, block });\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\telse {\n\t\t\t// bail. TODO figure out what these could be\n\t\t\ttoEncapsulate.push({ node, block });\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tif (block.combinator) {\n\t\tif (block.combinator.type === 'WhiteSpace') {\n\t\t\twhile (stack.length) {\n\t\t\t\tif (applySelector(blocks.slice(), stack.pop(), stack, toEncapsulate)) {\n\t\t\t\t\ttoEncapsulate.push({ node, block });\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} else if (block.combinator.name === '>') {\n\t\t\tif (applySelector(blocks, stack.pop(), stack, toEncapsulate)) {\n\t\t\t\ttoEncapsulate.push({ node, block });\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// TODO other combinators\n\t\ttoEncapsulate.push({ node, block });\n\t\treturn true;\n\t}\n\n\ttoEncapsulate.push({ node, block });\n\treturn true;\n}\n\nconst operators = {\n\t'=' : (value: string, flags: string) => new RegExp(`^${value}$`, flags),\n\t'~=': (value: string, flags: string) => new RegExp(`\\\\b${value}\\\\b`, flags),\n\t'|=': (value: string, flags: string) => new RegExp(`^${value}(-.+)?$`, flags),\n\t'^=': (value: string, flags: string) => new RegExp(`^${value}`, flags),\n\t'$=': (value: string, flags: string) => new RegExp(`${value}$`, flags),\n\t'*=': (value: string, flags: string) => new RegExp(value, flags)\n};\n\nfunction attributeMatches(node: Node, name: string, expectedValue: string, operator: string, caseInsensitive: boolean) {\n\tconst spread = node.attributes.find(attr => attr.type === 'Spread');\n\tif (spread) return true;\n\n\tconst attr = node.attributes.find((attr: Node) => attr.name === name);\n\tif (!attr) return false;\n\tif (attr.isTrue) return operator === null;\n\tif (attr.chunks.length > 1) return true;\n\tif (!expectedValue) return true;\n\n\tconst pattern = operators[operator](expectedValue, caseInsensitive ? 'i' : '');\n\tconst value = attr.chunks[0];\n\n\tif (!value) return false;\n\tif (value.type === 'Text') return pattern.test(value.data);\n\n\tconst possibleValues = new Set();\n\tgatherPossibleValues(value.node, possibleValues);\n\tif (possibleValues.has(UNKNOWN)) return true;\n\n\tfor (const x of Array.from(possibleValues)) { // TypeScript for-of is slightly unlike JS\n\t\tif (pattern.test(x)) return true;\n\t}\n\n\treturn false;\n}\n\nfunction isDynamic(value: Node) {\n\treturn value.length > 1 || value[0].type !== 'Text';\n}\n\nfunction unquote(value: Node) {\n\tif (value.type === 'Identifier') return value.name;\n\tconst str = value.value;\n\tif (str[0] === str[str.length - 1] && str[0] === \"'\" || str[0] === '\"') {\n\t\treturn str.slice(1, str.length - 1);\n\t}\n\treturn str;\n}\n\nclass Block {\n\tglobal: boolean;\n\tcombinator: Node;\n\tselectors: Node[]\n\tstart: number;\n\tend: number;\n\tshouldEncapsulate: boolean;\n\n\tconstructor(combinator: Node) {\n\t\tthis.combinator = combinator;\n\t\tthis.global = false;\n\t\tthis.selectors = [];\n\n\t\tthis.start = null;\n\t\tthis.end = null;\n\n\t\tthis.shouldEncapsulate = false;\n\t}\n\n\tadd(selector: Node) {\n\t\tif (this.selectors.length === 0) {\n\t\t\tthis.start = selector.start;\n\t\t\tthis.global = selector.type === 'PseudoClassSelector' && selector.name === 'global';\n\t\t}\n\n\t\tthis.selectors.push(selector);\n\t\tthis.end = selector.end;\n\t}\n}\n\nfunction groupSelectors(selector: Node) {\n\tlet block: Block = new Block(null);\n\n\tconst blocks = [block];\n\n\tselector.children.forEach((child: Node, i: number) => {\n\t\tif (child.type === 'WhiteSpace' || child.type === 'Combinator') {\n\t\t\tblock = new Block(child);\n\t\t\tblocks.push(block);\n\t\t} else {\n\t\t\tblock.add(child);\n\t\t}\n\t});\n\n\treturn blocks;\n}\n","// https://github.com/darkskyapp/string-hash/blob/master/index.js\nexport default function hash(str: string): string {\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn (hash >>> 0).toString(36);\n}\n","import MagicString from 'magic-string';\nimport { walk } from 'estree-walker';\nimport { getLocator } from 'locate-character';\nimport Selector from './Selector';\nimport getCodeFrame from '../utils/getCodeFrame';\nimport hash from '../utils/hash';\nimport Element from '../compile/nodes/Element';\nimport { Validator } from '../validate/index';\nimport { Node, Ast, Warning } from '../interfaces';\n\nclass Rule {\n\tselectors: Selector[];\n\tdeclarations: Declaration[];\n\tnode: Node;\n\tparent: Atrule;\n\n\tconstructor(node: Node, stylesheet, parent?: Atrule) {\n\t\tthis.node = node;\n\t\tthis.parent = parent;\n\t\tthis.selectors = node.selector.children.map((node: Node) => new Selector(node, stylesheet));\n\t\tthis.declarations = node.block.children.map((node: Node) => new Declaration(node));\n\t}\n\n\tapply(node: Element, stack: Element[]) {\n\t\tthis.selectors.forEach(selector => selector.apply(node, stack)); // TODO move the logic in here?\n\t}\n\n\tisUsed(dev: boolean) {\n\t\tif (this.parent && this.parent.node.type === 'Atrule' && this.parent.node.name === 'keyframes') return true;\n\t\tif (this.declarations.length === 0) return dev;\n\t\treturn this.selectors.some(s => s.used);\n\t}\n\n\tminify(code: MagicString, dev: boolean) {\n\t\tlet c = this.node.start;\n\t\tlet started = false;\n\n\t\tthis.selectors.forEach((selector, i) => {\n\t\t\tif (selector.used) {\n\t\t\t\tconst separator = started ? ',' : '';\n\t\t\t\tif ((selector.node.start - c) > separator.length) {\n\t\t\t\t\tcode.overwrite(c, selector.node.start, separator);\n\t\t\t\t}\n\n\t\t\t\tselector.minify(code);\n\t\t\t\tc = selector.node.end;\n\n\t\t\t\tstarted = true;\n\t\t\t}\n\t\t});\n\n\t\tcode.remove(c, this.node.block.start);\n\n\t\tc = this.node.block.start + 1;\n\t\tthis.declarations.forEach((declaration, i) => {\n\t\t\tconst separator = i > 0 ? ';' : '';\n\t\t\tif ((declaration.node.start - c) > separator.length) {\n\t\t\t\tcode.overwrite(c, declaration.node.start, separator);\n\t\t\t}\n\n\t\t\tdeclaration.minify(code);\n\n\t\t\tc = declaration.node.end;\n\t\t});\n\n\t\tcode.remove(c, this.node.block.end - 1);\n\t}\n\n\ttransform(code: MagicString, id: string, keyframes: Map<string, string>) {\n\t\tif (this.parent && this.parent.node.type === 'Atrule' && this.parent.node.name === 'keyframes') return true;\n\n\t\tconst attr = `.${id}`;\n\n\t\tthis.selectors.forEach(selector => selector.transform(code, attr));\n\t\tthis.declarations.forEach(declaration => declaration.transform(code, keyframes));\n\t}\n\n\tvalidate(validator: Validator) {\n\t\tthis.selectors.forEach(selector => {\n\t\t\tselector.validate(validator);\n\t\t});\n\t}\n\n\twarnOnUnusedSelector(handler: (selector: Selector) => void) {\n\t\tthis.selectors.forEach(selector => {\n\t\t\tif (!selector.used) handler(selector);\n\t\t});\n\t}\n}\n\nclass Declaration {\n\tnode: Node;\n\n\tconstructor(node: Node) {\n\t\tthis.node = node;\n\t}\n\n\ttransform(code: MagicString, keyframes: Map<string, string>) {\n\t\tconst property = this.node.property && this.node.property.toLowerCase();\n\t\tif (property === 'animation' || property === 'animation-name') {\n\t\t\tthis.node.value.children.forEach((block: Node) => {\n\t\t\t\tif (block.type === 'Identifier') {\n\t\t\t\t\tconst name = block.name;\n\t\t\t\t\tif (keyframes.has(name)) {\n\t\t\t\t\t\tcode.overwrite(block.start, block.end, keyframes.get(name));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tminify(code: MagicString) {\n\t\tif (!this.node.property) return; // @apply, and possibly other weird cases?\n\n\t\tconst c = this.node.start + this.node.property.length;\n\t\tconst first = this.node.value.children ?\n\t\t\tthis.node.value.children[0] :\n\t\t\tthis.node.value;\n\n\t\tlet start = first.start;\n\t\twhile (/\\s/.test(code.original[start])) start += 1;\n\n\t\tif (start - c > 1) {\n\t\t\tcode.overwrite(c, start, ':');\n\t\t}\n\t}\n}\n\nclass Atrule {\n\tnode: Node;\n\tchildren: (Atrule|Rule)[];\n\n\tconstructor(node: Node) {\n\t\tthis.node = node;\n\t\tthis.children = [];\n\t}\n\n\tapply(node: Element, stack: Element[]) {\n\t\tif (this.node.name === 'media' || this.node.name === 'supports') {\n\t\t\tthis.children.forEach(child => {\n\t\t\t\tchild.apply(node, stack);\n\t\t\t});\n\t\t}\n\n\t\telse if (this.node.name === 'keyframes') {\n\t\t\tthis.children.forEach((rule: Rule) => {\n\t\t\t\trule.selectors.forEach(selector => {\n\t\t\t\t\tselector.used = true;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tisUsed(dev: boolean) {\n\t\treturn true; // TODO\n\t}\n\n\tminify(code: MagicString, dev: boolean) {\n\t\tif (this.node.name === 'media') {\n\t\t\tconst expressionChar = code.original[this.node.expression.start];\n\t\t\tlet c = this.node.start + (expressionChar === '(' ? 6 : 7);\n\t\t\tif (this.node.expression.start > c) code.remove(c, this.node.expression.start);\n\n\t\t\tthis.node.expression.children.forEach((query: Node) => {\n\t\t\t\t// TODO minify queries\n\t\t\t\tc = query.end;\n\t\t\t});\n\n\t\t\tcode.remove(c, this.node.block.start);\n\t\t} else if (this.node.name === 'keyframes') {\n\t\t\tlet c = this.node.start + 10;\n\t\t\tif (this.node.expression.start - c > 1) code.overwrite(c, this.node.expression.start, ' ');\n\t\t\tc = this.node.expression.end;\n\t\t\tif (this.node.block.start - c > 0) code.remove(c, this.node.block.start);\n\t\t} else if (this.node.name === 'supports') {\n\t\t\tlet c = this.node.start + 9;\n\t\t\tif (this.node.expression.start - c > 1) code.overwrite(c, this.node.expression.start, ' ');\n\t\t\tthis.node.expression.children.forEach((query: Node) => {\n\t\t\t\t// TODO minify queries\n\t\t\t\tc = query.end;\n\t\t\t});\n\t\t\tcode.remove(c, this.node.block.start);\n\t\t}\n\n\t\t// TODO other atrules\n\n\t\tif (this.node.block) {\n\t\t\tlet c = this.node.block.start + 1;\n\n\t\t\tthis.children.forEach(child => {\n\t\t\t\tif (child.isUsed(dev)) {\n\t\t\t\t\tcode.remove(c, child.node.start);\n\t\t\t\t\tchild.minify(code, dev);\n\t\t\t\t\tc = child.node.end;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcode.remove(c, this.node.block.end - 1);\n\t\t}\n\t}\n\n\ttransform(code: MagicString, id: string, keyframes: Map<string, string>) {\n\t\tif (this.node.name === 'keyframes') {\n\t\t\tthis.node.expression.children.forEach(({ type, name, start, end }: Node) => {\n\t\t\t\tif (type === 'Identifier') {\n\t\t\t\t\tif (name.startsWith('-global-')) {\n\t\t\t\t\t\tcode.remove(start, start + 8);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite(start, end, keyframes.get(name));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.transform(code, id, keyframes);\n\t\t})\n\t}\n\n\tvalidate(validator: Validator) {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.validate(validator);\n\t\t});\n\t}\n\n\twarnOnUnusedSelector(handler: (selector: Selector) => void) {\n\t\tif (this.node.name !== 'media') return;\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.warnOnUnusedSelector(handler);\n\t\t});\n\t}\n}\n\nconst keys = {};\n\nexport default class Stylesheet {\n\tsource: string;\n\tast: Ast;\n\tfilename: string;\n\tdev: boolean;\n\n\thasStyles: boolean;\n\tid: string;\n\n\tchildren: (Rule|Atrule)[];\n\tkeyframes: Map<string, string>;\n\n\tnodesWithCssClass: Set<Node>;\n\n\tconstructor(source: string, ast: Ast, filename: string, dev: boolean) {\n\t\tthis.source = source;\n\t\tthis.ast = ast;\n\t\tthis.filename = filename;\n\t\tthis.dev = dev;\n\n\t\tthis.children = [];\n\t\tthis.keyframes = new Map();\n\n\t\tthis.nodesWithCssClass = new Set();\n\n\t\tif (ast.css && ast.css.children.length) {\n\t\t\tthis.id = `svelte-${hash(ast.css.content.styles)}`;\n\n\t\t\tthis.hasStyles = true;\n\n\t\t\tconst stack: (Rule | Atrule)[] = [];\n\t\t\tlet currentAtrule: Atrule = null;\n\n\t\t\twalk(this.ast.css, {\n\t\t\t\tenter: (node: Node) => {\n\t\t\t\t\tif (node.type === 'Atrule') {\n\t\t\t\t\t\tconst last = stack[stack.length - 1];\n\n\t\t\t\t\t\tconst atrule = new Atrule(node);\n\t\t\t\t\t\tstack.push(atrule);\n\n\t\t\t\t\t\t// this is an awkward special case — @apply (and\n\t\t\t\t\t\t// possibly other future constructs)\n\t\t\t\t\t\tif (last && !(last instanceof Atrule)) return;\n\n\t\t\t\t\t\tif (currentAtrule) {\n\t\t\t\t\t\t\tcurrentAtrule.children.push(atrule);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.children.push(atrule);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (node.name === 'keyframes') {\n\t\t\t\t\t\t\tnode.expression.children.forEach((expression: Node) => {\n\t\t\t\t\t\t\t\tif (expression.type === 'Identifier' && !expression.name.startsWith('-global-')) {\n\t\t\t\t\t\t\t\t\tthis.keyframes.set(expression.name, `${this.id}-${expression.name}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentAtrule = atrule;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (node.type === 'Rule') {\n\t\t\t\t\t\tconst rule = new Rule(node, this, currentAtrule);\n\t\t\t\t\t\tstack.push(rule);\n\n\t\t\t\t\t\tif (currentAtrule) {\n\t\t\t\t\t\t\tcurrentAtrule.children.push(rule);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.children.push(rule);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tleave: (node: Node) => {\n\t\t\t\t\tif (node.type === 'Rule' || node.type === 'Atrule') stack.pop();\n\t\t\t\t\tif (node.type === 'Atrule') currentAtrule = <Atrule>stack[stack.length - 1];\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.hasStyles = false;\n\t\t}\n\t}\n\n\tapply(node: Element) {\n\t\tif (!this.hasStyles) return;\n\n\t\tconst stack: Element[] = [];\n\t\tlet parent: Node = node;\n\t\twhile (parent = parent.parent) {\n\t\t\tif (parent.type === 'Element') stack.unshift(<Element>parent);\n\t\t}\n\n\t\tfor (let i = 0; i < this.children.length; i += 1) {\n\t\t\tconst child = this.children[i];\n\t\t\tchild.apply(node, stack);\n\t\t}\n\t}\n\n\treify() {\n\t\tthis.nodesWithCssClass.forEach((node: Node) => {\n\t\t\tnode.addCssClass();\n\t\t});\n\t}\n\n\trender(cssOutputFilename: string, shouldTransformSelectors: boolean) {\n\t\tif (!this.hasStyles) {\n\t\t\treturn { code: null, map: null };\n\t\t}\n\n\t\tconst code = new MagicString(this.source);\n\n\t\twalk(this.ast.css, {\n\t\t\tenter: (node: Node) => {\n\t\t\t\tcode.addSourcemapLocation(node.start);\n\t\t\t\tcode.addSourcemapLocation(node.end);\n\t\t\t}\n\t\t});\n\n\t\tif (shouldTransformSelectors) {\n\t\t\tthis.children.forEach((child: (Atrule|Rule)) => {\n\t\t\t\tchild.transform(code, this.id, this.keyframes);\n\t\t\t});\n\t\t}\n\n\t\tlet c = 0;\n\t\tthis.children.forEach(child => {\n\t\t\tif (child.isUsed(this.dev)) {\n\t\t\t\tcode.remove(c, child.node.start);\n\t\t\t\tchild.minify(code, this.dev);\n\t\t\t\tc = child.node.end;\n\t\t\t}\n\t\t});\n\n\t\tcode.remove(c, this.source.length);\n\n\t\treturn {\n\t\t\tcode: code.toString(),\n\t\t\tmap: code.generateMap({\n\t\t\t\tincludeContent: true,\n\t\t\t\tsource: this.filename,\n\t\t\t\tfile: cssOutputFilename\n\t\t\t})\n\t\t};\n\t}\n\n\tvalidate(validator: Validator) {\n\t\tthis.children.forEach(child => {\n\t\t\tchild.validate(validator);\n\t\t});\n\t}\n\n\twarnOnUnusedSelectors(onwarn: (warning: Warning) => void) {\n\t\tlet locator;\n\n\t\tconst handler = (selector: Selector) => {\n\t\t\tconst pos = selector.node.start;\n\n\t\t\tif (!locator) locator = getLocator(this.source, { offsetLine: 1 });\n\t\t\tconst start = locator(pos);\n\t\t\tconst end = locator(selector.node.end);\n\n\t\t\tconst frame = getCodeFrame(this.source, start.line - 1, start.column);\n\t\t\tconst message = `Unused CSS selector`;\n\n\t\t\tonwarn({\n\t\t\t\tcode: `css-unused-selector`,\n\t\t\t\tmessage,\n\t\t\t\tframe,\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\tpos,\n\t\t\t\tfilename: this.filename,\n\t\t\t\ttoString: () => `${message} (${start.line}:${start.column})\\n${frame}`,\n\t\t\t});\n\t\t};\n\n\t\tthis.children.forEach(child => {\n\t\t\tchild.warnOnUnusedSelector(handler);\n\t\t});\n\t}\n}\n","import parse from './parse/index';\nimport validate from './validate/index';\nimport generate from './compile/dom/index';\nimport generateSSR from './compile/ssr/index';\nimport Stats from './Stats';\nimport { assign } from './shared/index.js';\nimport Stylesheet from './css/Stylesheet';\nimport { Ast, CompileOptions, Warning, PreprocessOptions, Preprocessor } from './interfaces';\nimport { SourceMap } from 'magic-string';\n\nconst version = '__VERSION__';\n\nfunction normalizeOptions(options: CompileOptions): CompileOptions {\n\tlet normalizedOptions = assign({ generate: 'dom' }, options);\n\tconst { onwarn, onerror } = normalizedOptions;\n\tnormalizedOptions.onwarn = onwarn\n\t\t? (warning: Warning) => onwarn(warning, defaultOnwarn)\n\t\t: defaultOnwarn;\n\tnormalizedOptions.onerror = onerror\n\t\t? (error: Error) => onerror(error, defaultOnerror)\n\t\t: defaultOnerror;\n\treturn normalizedOptions;\n}\n\nfunction defaultOnwarn(warning: Warning) {\n\tif (warning.start) {\n\t\tconsole.warn(\n\t\t\t`(${warning.start.line}:${warning.start.column}) – ${warning.message}`\n\t\t); // eslint-disable-line no-console\n\t} else {\n\t\tconsole.warn(warning.message); // eslint-disable-line no-console\n\t}\n}\n\nfunction defaultOnerror(error: Error) {\n\tthrow error;\n}\n\nfunction parseAttributeValue(value: string) {\n\treturn /^['\"]/.test(value) ?\n\t\tvalue.slice(1, -1) :\n\t\tvalue;\n}\n\nfunction parseAttributes(str: string) {\n\tconst attrs = {};\n\tstr.split(/\\s+/).filter(Boolean).forEach(attr => {\n\t\tconst [name, value] = attr.split('=');\n\t\tattrs[name] = value ? parseAttributeValue(value) : true;\n\t});\n\treturn attrs;\n}\n\nasync function replaceTagContents(source, type: 'script' | 'style', preprocessor: Preprocessor, options: PreprocessOptions) {\n\tconst exp = new RegExp(`<${type}([\\\\S\\\\s]*?)>([\\\\S\\\\s]*?)<\\\\/${type}>`, 'ig');\n\tconst match = exp.exec(source);\n\n\tif (match) {\n\t\tconst attributes: Record<string, string | boolean> = parseAttributes(match[1]);\n\t\tconst content: string = match[2];\n\t\tconst processed: { code: string, map?: SourceMap | string } = await preprocessor({\n\t\t\tcontent,\n\t\t\tattributes,\n\t\t\tfilename : options.filename\n\t\t});\n\n\t\tif (processed && processed.code) {\n\t\t\treturn (\n\t\t\t\tsource.slice(0, match.index) +\n\t\t\t\t`<${type}>${processed.code}</${type}>` +\n\t\t\t\tsource.slice(match.index + match[0].length)\n\t\t\t);\n\t\t}\n\t}\n\n\treturn source;\n}\n\nexport async function preprocess(source: string, options: PreprocessOptions) {\n\tconst { markup, style, script } = options;\n\tif (!!markup) {\n\t\tconst processed: { code: string, map?: SourceMap | string } = await markup({\n\t\t\tcontent: source,\n\t\t\tfilename: options.filename\n\t\t});\n\t\tsource = processed.code;\n\t}\n\n\tif (!!style) {\n\t\tsource = await replaceTagContents(source, 'style', style, options);\n\t}\n\n\tif (!!script) {\n\t\tsource = await replaceTagContents(source, 'script', script, options);\n\t}\n\n\treturn {\n\t\t// TODO return separated output, in future version where svelte.compile supports it:\n\t\t// style: { code: styleCode, map: styleMap },\n\t\t// script { code: scriptCode, map: scriptMap },\n\t\t// markup { code: markupCode, map: markupMap },\n\n\t\ttoString() {\n\t\t\treturn source;\n\t\t}\n\t};\n}\n\nfunction compile(source: string, _options: CompileOptions) {\n\tconst options = normalizeOptions(_options);\n\tlet ast: Ast;\n\n\tconst stats = new Stats({\n\t\tonwarn: options.onwarn\n\t});\n\n\ttry {\n\t\tstats.start('parse');\n\t\tast = parse(source, options);\n\t\tstats.stop('parse');\n\t} catch (err) {\n\t\toptions.onerror(err);\n\t\treturn;\n\t}\n\n\tstats.start('stylesheet');\n\tconst stylesheet = new Stylesheet(source, ast, options.filename, options.dev);\n\tstats.stop('stylesheet');\n\n\tstats.start('validate');\n\tvalidate(ast, source, stylesheet, stats, options);\n\tstats.stop('validate');\n\n\tif (options.generate === false) {\n\t\treturn { ast, stats: stats.render(null), js: null, css: null };\n\t}\n\n\tconst compiler = options.generate === 'ssr' ? generateSSR : generate;\n\n\treturn compiler(ast, source, stylesheet, options, stats);\n};\n\nfunction create(source: string, _options: CompileOptions = {}) {\n\t_options.format = 'eval';\n\n\tconst compiled = compile(source, _options);\n\n\tif (!compiled || !compiled.js.code) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\treturn (new Function(`return ${compiled.js.code}`))();\n\t} catch (err) {\n\t\tif (_options.onerror) {\n\t\t\t_options.onerror(err);\n\t\t\treturn;\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport { parse, create, compile, version as VERSION };\n"],"names":["acorn.parse","PUNCTUATION","STOP_URL_RAW","TYPE","PUNCTUATOR","TAB","N","F","R","SPACE","NAME","SYMBOL_TYPE","firstCharOffset","utils","cmpStr","isNumber","findLastNonSpaceLocation","findWhiteSpaceEnd","findCommentEnd","findStringEnd","findNumberEnd","findIdentifierEnd","findUrlRawEnd","WHITESPACE","IDENTIFIER","NUMBER","STRING","COMMENT","CDO","CDC","ATRULE","FUNCTION","URL","RAW","FULLSTOP","PLUSSIGN","HYPHENMINUS","SafeUint32Array","CssSyntaxError","require$$0","List","Tokenizer","sequence","cmpChar","LEFTPARENTHESIS","LEFTSQUAREBRACKET","NUMBERSIGN","SOLIDUS","ASTERISK","GREATERTHANSIGN","COMMA","EXCLAMATIONMARK","require$$1","require$$2","LEFTCURLYBRACKET","COLON","require$$3","require$$4","SEMICOLON","RIGHTCURLYBRACKET","consumeRaw","RIGHTSQUAREBRACKET","VERTICALLINE","TILDE","DOLLARSIGN","RIGHTPARENTHESIS","isHex","PERCENTSIGN","endsWith","require$$5","require$$6","require$$7","require$$8","require$$9","toString","isArray","parse","readExpression","readSequence","error","Parser","getName","namespaces.validNamespaces","disallowed","data","animations","tag","transitions","list","validateEventHandler","svg","namespaces.svg","i","getLocator","Node","isDynamic","isComputed","shouldSkip","events","Comment","Block","assign","Selector","Declaration","hash","Atrule","Rule","version","generateSSR","generate"],"mappings":"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EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;IAE7lC;IACA,IAAI,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,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,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,GAAG;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,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"}