UNPKG

808 kBSource Map (JSON)View Raw
1{"version":3,"file":"buble.es.js","sources":["../node_modules/acorn/dist/acorn.es.js","../node_modules/acorn-jsx/xhtml.js","../node_modules/acorn-jsx/inject.js","../node_modules/acorn5-object-spread/inject.js","../src/program/keys.js","../src/program/Node.js","../src/utils/spread.js","../src/program/types/ArrayExpression.js","../src/program/types/ArrowFunctionExpression.js","../src/utils/locate.js","../src/utils/getSnippet.js","../src/utils/CompileError.js","../src/program/types/AssignmentExpression.js","../src/program/types/BinaryExpression.js","../src/utils/patterns.js","../src/program/types/BreakStatement.js","../src/program/types/CallExpression.js","../src/utils/array.js","../src/utils/reserved.js","../src/program/types/ClassBody.js","../src/utils/deindent.js","../src/program/types/ClassDeclaration.js","../src/program/types/ClassExpression.js","../src/program/types/ContinueStatement.js","../src/program/types/ExportDefaultDeclaration.js","../src/program/types/ExportNamedDeclaration.js","../src/program/types/shared/LoopStatement.js","../src/program/extractNames.js","../src/program/types/ForStatement.js","../src/program/types/ForInStatement.js","../src/utils/destructure.js","../src/program/types/ForOfStatement.js","../src/program/types/FunctionDeclaration.js","../src/program/types/FunctionExpression.js","../src/utils/isReference.js","../src/program/types/Identifier.js","../src/program/types/IfStatement.js","../src/program/types/ImportDeclaration.js","../src/program/types/ImportDefaultSpecifier.js","../src/program/types/ImportSpecifier.js","../src/program/types/JSXAttribute.js","../src/program/types/JSXClosingElement.js","../src/program/types/JSXElement.js","../src/program/types/JSXExpressionContainer.js","../src/program/types/JSXOpeningElement.js","../src/program/types/JSXSpreadAttribute.js","../node_modules/regjsgen/regjsgen.js","../node_modules/regjsparser/parser.js","../node_modules/regenerate/regenerate.js","../node_modules/unicode-canonical-property-names-ecmascript/index.js","../node_modules/unicode-property-aliases-ecmascript/index.js","../node_modules/unicode-match-property-ecmascript/index.js","../node_modules/unicode-match-property-value-ecmascript/data/mappings.js","../node_modules/unicode-match-property-value-ecmascript/index.js","../node_modules/regexpu-core/data/iu-mappings.js","../node_modules/regexpu-core/data/character-class-escape-sets.js","../node_modules/regexpu-core/rewrite-pattern.js","../src/program/types/Literal.js","../src/program/types/MemberExpression.js","../src/program/types/NewExpression.js","../src/program/types/ObjectExpression.js","../src/program/types/Property.js","../src/program/types/ReturnStatement.js","../src/program/types/SpreadElement.js","../src/program/types/Super.js","../src/program/types/TaggedTemplateExpression.js","../src/program/types/TemplateElement.js","../src/program/types/TemplateLiteral.js","../src/program/types/ThisExpression.js","../src/program/types/UpdateExpression.js","../src/program/types/VariableDeclaration.js","../src/program/types/VariableDeclarator.js","../src/program/types/index.js","../src/program/wrap.js","../src/program/Scope.js","../src/program/BlockStatement.js","../src/program/Program.js","../src/support.js","../src/index.js"],"sourcesContent":["// 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\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\\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\\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-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fd5\\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\\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\\u0d01-\\u0d03\\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\\u1cf8\\u1cf9\\u1dc0-\\u1df5\\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,17,26,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,449,56,264,8,2,36,18,0,50,29,881,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,0,32,6124,20,754,9486,1,3071,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,10591,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,838,7,2,7,17,9,57,21,2,13,19882,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\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\n};\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n return this.value === name && this.eat(types.name)\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 -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 var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1;\n if (!andThrow) { return pos >= 0 }\n if (pos > -1) { this.raise(pos, \"Shorthand property assignments are valid only in destructuring patterns\"); }\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.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.type !== types.name || this.options.ecmaVersion < 6 || this.value != \"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 (!this.isKeyword(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.type !== types.name || this.options.ecmaVersion < 8 || this.value != \"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() && declaration) {\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 this.labels.push(loopLabel);\n this.enterLexicalScope();\n this.expect(types.parenL);\n if (this.type === types.semi) { return this.parseFor(node, null) }\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 { return this.parseForIn(node, init$1) }\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 this.toAssignable(init);\n this.checkLVal(init);\n this.checkPatternErrors(refDestructuringErrors, true);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\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.isFunction = function() {\n return this.type === types._function || this.isAsyncFunction()\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.isFunction());\n node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.isFunction()) : 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 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 node.left = init;\n node.right = 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, 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 >= 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 if (this$1.eat(types.semi)) { continue }\n var method = this$1.startNode();\n var isGenerator = this$1.eat(types.star);\n var isAsync = false;\n var isMaybeStatic = this$1.type === types.name && this$1.value === \"static\";\n this$1.parsePropertyName(method);\n method.static = isMaybeStatic && this$1.type !== types.parenL;\n if (method.static) {\n if (isGenerator) { this$1.unexpected(); }\n isGenerator = this$1.eat(types.star);\n this$1.parsePropertyName(method);\n }\n if (this$1.options.ecmaVersion >= 8 && !isGenerator && !method.computed &&\n method.key.type === \"Identifier\" && method.key.name === \"async\" && this$1.type !== types.parenL &&\n !this$1.canInsertSemicolon()) {\n isAsync = true;\n this$1.parsePropertyName(method);\n }\n method.kind = \"method\";\n var isGetSet = false;\n if (!method.computed) {\n var key = method.key;\n if (!isGenerator && !isAsync && key.type === \"Identifier\" && this$1.type !== types.parenL && (key.name === \"get\" || key.name === \"set\")) {\n isGetSet = true;\n method.kind = key.name;\n key = this$1.parsePropertyName(method);\n }\n if (!method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (hadConstructor) { this$1.raise(key.start, \"Duplicate constructor in the same class\"); }\n if (isGetSet) { this$1.raise(key.start, \"Constructor can't have get/set modifier\"); }\n if (isGenerator) { this$1.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this$1.raise(key.start, \"Constructor can't be an async method\"); }\n method.kind = \"constructor\";\n hadConstructor = true;\n }\n }\n this$1.parseClassMethod(classBody, method, isGenerator, isAsync);\n if (isGetSet) {\n var paramCount = method.kind === \"get\" ? 0 : 1;\n if (method.value.params.length !== paramCount) {\n var start = method.value.start;\n if (method.kind === \"get\")\n { this$1.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this$1.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n { this$1.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\");\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\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 node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected();\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 node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected();\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.value);\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 == \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\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\nvar pp$2 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$2.toAssignable = function(node, isBinding) {\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 break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.kind !== \"init\") { this$1.raise(prop.key.start, \"Object pattern can't contain getter or setter\"); }\n this$1.toAssignable(prop.value, isBinding);\n }\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"AssignmentExpression\":\n if (node.operator === \"=\") {\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n // falls through to AssignmentPattern\n } else {\n this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\");\n break\n }\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 }\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 if (end) {\n var last = exprList[end - 1];\n if (last && last.type == \"RestElement\") {\n --end;\n } else if (last && last.type == \"SpreadElement\") {\n last.type = \"RestElement\";\n var arg = last.argument;\n this.toAssignable(arg, isBinding);\n --end;\n }\n\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this$1.toAssignable(elt, isBinding); }\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) { return this.parseIdent() }\n switch (this.type) {\n case types.name:\n return this.parseIdent()\n\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 default:\n this.unexpected();\n }\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, (bindingType ? \"Binding\" : \"Assigning to\") + \" 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.value, bindingType, checkClashes);\n }\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) {\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) { this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\"); }\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 this.checkPatternErrors(refDestructuringErrors, true);\n if (!ownDestructuringErrors) { DestructuringErrors.call(refDestructuringErrors); }\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.left = this.type === types.eq ? this.toAssignable(left) : left;\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(refDestructuringErrors);\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();\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\n case types._this:\n var type = this.type === types._this ? \"ThisExpression\" : \"Super\";\n node = this.startNode();\n this.next();\n return this.finishNode(node, type)\n\n case types.name:\n var startPos = this.start, startLoc = this.startLoc;\n var id = this.parseIdent(this.type !== types.name);\n if (this.options.ecmaVersion >= 8 && 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) {\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, innerParenStart;\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 if (this$1.type === types.parenL && !innerParenStart) {\n innerParenStart = this$1.start;\n }\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 if (innerParenStart) { this.unexpected(innerParenStart); }\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 node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\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\n// Parse an object literal or binding pattern.\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) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\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.startNode(), isGenerator = (void 0), isAsync = (void 0), startPos = (void 0), startLoc = (void 0);\n if (this$1.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this$1.start;\n startLoc = this$1.startLoc;\n }\n if (!isPattern)\n { isGenerator = this$1.eat(types.star); }\n }\n this$1.parsePropertyName(prop);\n if (!isPattern && this$1.options.ecmaVersion >= 8 && !isGenerator && this$1.isAsyncProp(prop)) {\n isAsync = true;\n this$1.parsePropertyName(prop, refDestructuringErrors);\n } else {\n isAsync = false;\n }\n this$1.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors);\n this$1.checkPropClash(prop, propHash);\n node.properties.push(this$1.finishNode(prop, \"Property\"));\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) {\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 (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 || isPattern) { 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.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\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.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 { this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\")); }\n};\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 } 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\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// Are we running under Rhino?\nvar isRhino = typeof Packages == \"object\" && Object.prototype.toString.call(Packages) == \"[object JavaPackage]\";\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 && 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 // 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\n// Parse a regular expression. Some context-awareness is necessary,\n// since a '/' inside a '[]' set does not end the expression.\n\nfunction tryCreateRegexp(src, flags, throwErrorAt, parser) {\n try {\n return new RegExp(src, flags)\n } catch (e) {\n if (throwErrorAt !== undefined) {\n if (e instanceof SyntaxError) { parser.raise(throwErrorAt, \"Error parsing regular expression: \" + e.message); }\n throw e\n }\n }\n}\n\nvar regexpUnicodeSupport = !!tryCreateRegexp(\"\\uffff\", \"u\");\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 content = this.input.slice(start, this.pos);\n ++this.pos;\n // Need to use `readWord1` because '\\uXXXX' sequences are allowed\n // here (don't ask).\n var mods = this.readWord1();\n var tmp = content, tmpFlags = \"\";\n if (mods) {\n var validFlags = /^[gim]*$/;\n if (this.options.ecmaVersion >= 6) { validFlags = /^[gimuy]*$/; }\n if (!validFlags.test(mods)) { this.raise(start, \"Invalid regular expression flag\"); }\n if (mods.indexOf(\"u\") >= 0) {\n if (regexpUnicodeSupport) {\n tmpFlags = \"u\";\n } else {\n // Replace each astral symbol and every Unicode escape sequence that\n // possibly represents an astral symbol or a paired surrogate with a\n // single ASCII symbol to avoid throwing on regular expressions that\n // are only valid in combination with the `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it would\n // be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function (_match, code, offset) {\n code = Number(\"0x\" + code);\n if (code > 0x10FFFF) { this$1.raise(start + offset + 3, \"Code point out of bounds\"); }\n return \"x\"\n });\n tmp = tmp.replace(/\\\\u([a-fA-F0-9]{4})|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, \"x\");\n tmpFlags = tmpFlags.replace(\"u\", \"\");\n }\n }\n }\n // Detect invalid regular expressions.\n var value = null;\n // Rhino's regular expression parser is flaky and throws uncatchable exceptions,\n // so don't do detection if we are running under Rhino\n if (!isRhino) {\n tryCreateRegexp(tmp, tmpFlags, start, this);\n // Get a regular expression object for this pattern-flag pair, or `null` in\n // case the current environment doesn't support the flags it uses.\n value = tryCreateRegexp(content, mods);\n }\n return this.finishToken(types.regexp, {pattern: content, flags: mods, 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, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48;\n if (!startsWithDot && this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n if (octal && this.pos == start + 1) { octal = false; }\n var next = this.input.charCodeAt(this.pos);\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n isFloat = true;\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 isFloat = true;\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var str = this.input.slice(start, this.pos), val;\n if (isFloat) { val = parseFloat(str); }\n else if (!octal || str.length === 1) { val = parseInt(str, 10); }\n else if (this.strict) { this.raise(start, \"Invalid number\"); }\n else if (/[89]/.test(str)) { val = parseInt(str, 10); }\n else { val = parseInt(str, 8); }\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 if (octalStr !== \"0\" && (this.strict || inTemplate)) {\n this.invalidStringToken(this.pos - 2, \"Octal literal in strict mode\");\n }\n this.pos += octalStr.length - 1;\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/ternjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/ternjs/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.1.2\";\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","module.exports = {\n quot: '\\u0022',\n amp: '&',\n apos: '\\u0027',\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\\u00A1',\n cent: '\\u00A2',\n pound: '\\u00A3',\n curren: '\\u00A4',\n yen: '\\u00A5',\n brvbar: '\\u00A6',\n sect: '\\u00A7',\n uml: '\\u00A8',\n copy: '\\u00A9',\n ordf: '\\u00AA',\n laquo: '\\u00AB',\n not: '\\u00AC',\n shy: '\\u00AD',\n reg: '\\u00AE',\n macr: '\\u00AF',\n deg: '\\u00B0',\n plusmn: '\\u00B1',\n sup2: '\\u00B2',\n sup3: '\\u00B3',\n acute: '\\u00B4',\n micro: '\\u00B5',\n para: '\\u00B6',\n middot: '\\u00B7',\n cedil: '\\u00B8',\n sup1: '\\u00B9',\n ordm: '\\u00BA',\n raquo: '\\u00BB',\n frac14: '\\u00BC',\n frac12: '\\u00BD',\n frac34: '\\u00BE',\n iquest: '\\u00BF',\n Agrave: '\\u00C0',\n Aacute: '\\u00C1',\n Acirc: '\\u00C2',\n Atilde: '\\u00C3',\n Auml: '\\u00C4',\n Aring: '\\u00C5',\n AElig: '\\u00C6',\n Ccedil: '\\u00C7',\n Egrave: '\\u00C8',\n Eacute: '\\u00C9',\n Ecirc: '\\u00CA',\n Euml: '\\u00CB',\n Igrave: '\\u00CC',\n Iacute: '\\u00CD',\n Icirc: '\\u00CE',\n Iuml: '\\u00CF',\n ETH: '\\u00D0',\n Ntilde: '\\u00D1',\n Ograve: '\\u00D2',\n Oacute: '\\u00D3',\n Ocirc: '\\u00D4',\n Otilde: '\\u00D5',\n Ouml: '\\u00D6',\n times: '\\u00D7',\n Oslash: '\\u00D8',\n Ugrave: '\\u00D9',\n Uacute: '\\u00DA',\n Ucirc: '\\u00DB',\n Uuml: '\\u00DC',\n Yacute: '\\u00DD',\n THORN: '\\u00DE',\n szlig: '\\u00DF',\n agrave: '\\u00E0',\n aacute: '\\u00E1',\n acirc: '\\u00E2',\n atilde: '\\u00E3',\n auml: '\\u00E4',\n aring: '\\u00E5',\n aelig: '\\u00E6',\n ccedil: '\\u00E7',\n egrave: '\\u00E8',\n eacute: '\\u00E9',\n ecirc: '\\u00EA',\n euml: '\\u00EB',\n igrave: '\\u00EC',\n iacute: '\\u00ED',\n icirc: '\\u00EE',\n iuml: '\\u00EF',\n eth: '\\u00F0',\n ntilde: '\\u00F1',\n ograve: '\\u00F2',\n oacute: '\\u00F3',\n ocirc: '\\u00F4',\n otilde: '\\u00F5',\n ouml: '\\u00F6',\n divide: '\\u00F7',\n oslash: '\\u00F8',\n ugrave: '\\u00F9',\n uacute: '\\u00FA',\n ucirc: '\\u00FB',\n uuml: '\\u00FC',\n yacute: '\\u00FD',\n thorn: '\\u00FE',\n yuml: '\\u00FF',\n OElig: '\\u0152',\n oelig: '\\u0153',\n Scaron: '\\u0160',\n scaron: '\\u0161',\n Yuml: '\\u0178',\n fnof: '\\u0192',\n circ: '\\u02C6',\n tilde: '\\u02DC',\n Alpha: '\\u0391',\n Beta: '\\u0392',\n Gamma: '\\u0393',\n Delta: '\\u0394',\n Epsilon: '\\u0395',\n Zeta: '\\u0396',\n Eta: '\\u0397',\n Theta: '\\u0398',\n Iota: '\\u0399',\n Kappa: '\\u039A',\n Lambda: '\\u039B',\n Mu: '\\u039C',\n Nu: '\\u039D',\n Xi: '\\u039E',\n Omicron: '\\u039F',\n Pi: '\\u03A0',\n Rho: '\\u03A1',\n Sigma: '\\u03A3',\n Tau: '\\u03A4',\n Upsilon: '\\u03A5',\n Phi: '\\u03A6',\n Chi: '\\u03A7',\n Psi: '\\u03A8',\n Omega: '\\u03A9',\n alpha: '\\u03B1',\n beta: '\\u03B2',\n gamma: '\\u03B3',\n delta: '\\u03B4',\n epsilon: '\\u03B5',\n zeta: '\\u03B6',\n eta: '\\u03B7',\n theta: '\\u03B8',\n iota: '\\u03B9',\n kappa: '\\u03BA',\n lambda: '\\u03BB',\n mu: '\\u03BC',\n nu: '\\u03BD',\n xi: '\\u03BE',\n omicron: '\\u03BF',\n pi: '\\u03C0',\n rho: '\\u03C1',\n sigmaf: '\\u03C2',\n sigma: '\\u03C3',\n tau: '\\u03C4',\n upsilon: '\\u03C5',\n phi: '\\u03C6',\n chi: '\\u03C7',\n psi: '\\u03C8',\n omega: '\\u03C9',\n thetasym: '\\u03D1',\n upsih: '\\u03D2',\n piv: '\\u03D6',\n ensp: '\\u2002',\n emsp: '\\u2003',\n thinsp: '\\u2009',\n zwnj: '\\u200C',\n zwj: '\\u200D',\n lrm: '\\u200E',\n rlm: '\\u200F',\n ndash: '\\u2013',\n mdash: '\\u2014',\n lsquo: '\\u2018',\n rsquo: '\\u2019',\n sbquo: '\\u201A',\n ldquo: '\\u201C',\n rdquo: '\\u201D',\n bdquo: '\\u201E',\n dagger: '\\u2020',\n Dagger: '\\u2021',\n bull: '\\u2022',\n hellip: '\\u2026',\n permil: '\\u2030',\n prime: '\\u2032',\n Prime: '\\u2033',\n lsaquo: '\\u2039',\n rsaquo: '\\u203A',\n oline: '\\u203E',\n frasl: '\\u2044',\n euro: '\\u20AC',\n image: '\\u2111',\n weierp: '\\u2118',\n real: '\\u211C',\n trade: '\\u2122',\n alefsym: '\\u2135',\n larr: '\\u2190',\n uarr: '\\u2191',\n rarr: '\\u2192',\n darr: '\\u2193',\n harr: '\\u2194',\n crarr: '\\u21B5',\n lArr: '\\u21D0',\n uArr: '\\u21D1',\n rArr: '\\u21D2',\n dArr: '\\u21D3',\n hArr: '\\u21D4',\n forall: '\\u2200',\n part: '\\u2202',\n exist: '\\u2203',\n empty: '\\u2205',\n nabla: '\\u2207',\n isin: '\\u2208',\n notin: '\\u2209',\n ni: '\\u220B',\n prod: '\\u220F',\n sum: '\\u2211',\n minus: '\\u2212',\n lowast: '\\u2217',\n radic: '\\u221A',\n prop: '\\u221D',\n infin: '\\u221E',\n ang: '\\u2220',\n and: '\\u2227',\n or: '\\u2228',\n cap: '\\u2229',\n cup: '\\u222A',\n 'int': '\\u222B',\n there4: '\\u2234',\n sim: '\\u223C',\n cong: '\\u2245',\n asymp: '\\u2248',\n ne: '\\u2260',\n equiv: '\\u2261',\n le: '\\u2264',\n ge: '\\u2265',\n sub: '\\u2282',\n sup: '\\u2283',\n nsub: '\\u2284',\n sube: '\\u2286',\n supe: '\\u2287',\n oplus: '\\u2295',\n otimes: '\\u2297',\n perp: '\\u22A5',\n sdot: '\\u22C5',\n lceil: '\\u2308',\n rceil: '\\u2309',\n lfloor: '\\u230A',\n rfloor: '\\u230B',\n lang: '\\u2329',\n rang: '\\u232A',\n loz: '\\u25CA',\n spades: '\\u2660',\n clubs: '\\u2663',\n hearts: '\\u2665',\n diams: '\\u2666'\n};\n","'use strict';\n\nvar XHTMLEntities = require('./xhtml');\n\nvar hexNumber = /^[\\da-fA-F]+$/;\nvar decimalNumber = /^\\d+$/;\n\nmodule.exports = function(acorn) {\n var tt = acorn.tokTypes;\n var tc = acorn.tokContexts;\n\n tc.j_oTag = new acorn.TokContext('<tag', false);\n tc.j_cTag = new acorn.TokContext('</tag', false);\n tc.j_expr = new acorn.TokContext('<tag>...</tag>', true, true);\n\n tt.jsxName = new acorn.TokenType('jsxName');\n tt.jsxText = new acorn.TokenType('jsxText', {beforeExpr: true});\n tt.jsxTagStart = new acorn.TokenType('jsxTagStart');\n tt.jsxTagEnd = new acorn.TokenType('jsxTagEnd');\n\n tt.jsxTagStart.updateContext = function() {\n this.context.push(tc.j_expr); // treat as beginning of JSX expression\n this.context.push(tc.j_oTag); // start opening tag context\n this.exprAllowed = false;\n };\n tt.jsxTagEnd.updateContext = function(prevType) {\n var out = this.context.pop();\n if (out === tc.j_oTag && prevType === tt.slash || out === tc.j_cTag) {\n this.context.pop();\n this.exprAllowed = this.curContext() === tc.j_expr;\n } else {\n this.exprAllowed = true;\n }\n };\n\n var pp = acorn.Parser.prototype;\n\n // Reads inline JSX contents token.\n\n pp.jsx_readToken = function() {\n var out = '', chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length)\n this.raise(this.start, 'Unterminated JSX contents');\n var ch = this.input.charCodeAt(this.pos);\n\n switch (ch) {\n case 60: // '<'\n case 123: // '{'\n if (this.pos === this.start) {\n if (ch === 60 && this.exprAllowed) {\n ++this.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return this.getTokenFromCode(ch);\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(tt.jsxText, out);\n\n case 38: // '&'\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readEntity();\n chunkStart = this.pos;\n break;\n\n default:\n if (acorn.isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readNewLine(true);\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n }\n };\n\n pp.jsx_readNewLine = function(normalizeCRLF) {\n var ch = this.input.charCodeAt(this.pos);\n var out;\n ++this.pos;\n if (ch === 13 && this.input.charCodeAt(this.pos) === 10) {\n ++this.pos;\n out = normalizeCRLF ? '\\n' : '\\r\\n';\n } else {\n out = String.fromCharCode(ch);\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n\n return out;\n };\n\n pp.jsx_readString = function(quote) {\n var out = '', chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length)\n this.raise(this.start, 'Unterminated string constant');\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) break;\n if (ch === 38) { // '&'\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readEntity();\n chunkStart = this.pos;\n } else if (acorn.isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readNewLine(false);\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(tt.string, out);\n };\n\n pp.jsx_readEntity = function() {\n var str = '', count = 0, entity;\n var ch = this.input[this.pos];\n if (ch !== '&')\n this.raise(this.pos, 'Entity must start with an ampersand');\n var startPos = ++this.pos;\n while (this.pos < this.input.length && count++ < 10) {\n ch = this.input[this.pos++];\n if (ch === ';') {\n if (str[0] === '#') {\n if (str[1] === 'x') {\n str = str.substr(2);\n if (hexNumber.test(str))\n entity = String.fromCharCode(parseInt(str, 16));\n } else {\n str = str.substr(1);\n if (decimalNumber.test(str))\n entity = String.fromCharCode(parseInt(str, 10));\n }\n } else {\n entity = XHTMLEntities[str];\n }\n break;\n }\n str += ch;\n }\n if (!entity) {\n this.pos = startPos;\n return '&';\n }\n return entity;\n };\n\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can't contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n pp.jsx_readWord = function() {\n var ch, start = this.pos;\n do {\n ch = this.input.charCodeAt(++this.pos);\n } while (acorn.isIdentifierChar(ch) || ch === 45); // '-'\n return this.finishToken(tt.jsxName, this.input.slice(start, this.pos));\n };\n\n // Transforms JSX element name to string.\n\n function getQualifiedJSXName(object) {\n if (object.type === 'JSXIdentifier')\n return object.name;\n\n if (object.type === 'JSXNamespacedName')\n return object.namespace.name + ':' + object.name.name;\n\n if (object.type === 'JSXMemberExpression')\n return getQualifiedJSXName(object.object) + '.' +\n getQualifiedJSXName(object.property);\n }\n\n // Parse next token as JSX identifier\n\n pp.jsx_parseIdentifier = function() {\n var node = this.startNode();\n if (this.type === tt.jsxName)\n node.name = this.value;\n else if (this.type.keyword)\n node.name = this.type.keyword;\n else\n this.unexpected();\n this.next();\n return this.finishNode(node, 'JSXIdentifier');\n };\n\n // Parse namespaced identifier.\n\n pp.jsx_parseNamespacedName = function() {\n var startPos = this.start, startLoc = this.startLoc;\n var name = this.jsx_parseIdentifier();\n if (!this.options.plugins.jsx.allowNamespaces || !this.eat(tt.colon)) return name;\n var node = this.startNodeAt(startPos, startLoc);\n node.namespace = name;\n node.name = this.jsx_parseIdentifier();\n return this.finishNode(node, 'JSXNamespacedName');\n };\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n pp.jsx_parseElementName = function() {\n var startPos = this.start, startLoc = this.startLoc;\n var node = this.jsx_parseNamespacedName();\n if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !this.options.plugins.jsx.allowNamespacedObjects) {\n this.unexpected();\n }\n while (this.eat(tt.dot)) {\n var newNode = this.startNodeAt(startPos, startLoc);\n newNode.object = node;\n newNode.property = this.jsx_parseIdentifier();\n node = this.finishNode(newNode, 'JSXMemberExpression');\n }\n return node;\n };\n\n // Parses any type of JSX attribute value.\n\n pp.jsx_parseAttributeValue = function() {\n switch (this.type) {\n case tt.braceL:\n var node = this.jsx_parseExpressionContainer();\n if (node.expression.type === 'JSXEmptyExpression')\n this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression');\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom();\n\n default:\n this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text');\n }\n };\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n pp.jsx_parseEmptyExpression = function() {\n var node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);\n return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc);\n };\n\n // Parses JSX expression enclosed into curly brackets.\n\n\n pp.jsx_parseExpressionContainer = function() {\n var node = this.startNode();\n this.next();\n node.expression = this.type === tt.braceR\n ? this.jsx_parseEmptyExpression()\n : this.parseExpression();\n this.expect(tt.braceR);\n return this.finishNode(node, 'JSXExpressionContainer');\n };\n\n // Parses following JSX attribute name-value pair.\n\n pp.jsx_parseAttribute = function() {\n var node = this.startNode();\n if (this.eat(tt.braceL)) {\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssign();\n this.expect(tt.braceR);\n return this.finishNode(node, 'JSXSpreadAttribute');\n }\n node.name = this.jsx_parseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null;\n return this.finishNode(node, 'JSXAttribute');\n };\n\n // Parses JSX opening tag starting after '<'.\n\n pp.jsx_parseOpeningElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n node.attributes = [];\n node.name = this.jsx_parseElementName();\n while (this.type !== tt.slash && this.type !== tt.jsxTagEnd)\n node.attributes.push(this.jsx_parseAttribute());\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, 'JSXOpeningElement');\n };\n\n // Parses JSX closing tag starting after '</'.\n\n pp.jsx_parseClosingElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n node.name = this.jsx_parseElementName();\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, 'JSXClosingElement');\n };\n\n // Parses entire JSX element, including it's opening tag\n // (starting after '<'), attributes, contents and closing tag.\n\n pp.jsx_parseElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n var children = [];\n var openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc);\n var closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.type) {\n case tt.jsxTagStart:\n startPos = this.start; startLoc = this.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);\n break contents;\n }\n children.push(this.jsx_parseElementAt(startPos, startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseExprAtom());\n break;\n\n case tt.braceL:\n children.push(this.jsx_parseExpressionContainer());\n break;\n\n default:\n this.unexpected();\n }\n }\n if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n this.raise(\n closingElement.start,\n 'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>');\n }\n }\n\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n node.children = children;\n if (this.type === tt.relational && this.value === \"<\") {\n this.raise(this.start, \"Adjacent JSX elements must be wrapped in an enclosing tag\");\n }\n return this.finishNode(node, 'JSXElement');\n };\n\n // Parses entire JSX element from current position.\n\n pp.jsx_parseElement = function() {\n var startPos = this.start, startLoc = this.startLoc;\n this.next();\n return this.jsx_parseElementAt(startPos, startLoc);\n };\n\n acorn.plugins.jsx = function(instance, opts) {\n if (!opts) {\n return;\n }\n\n if (typeof opts !== 'object') {\n opts = {};\n }\n\n instance.options.plugins.jsx = {\n allowNamespaces: opts.allowNamespaces !== false,\n allowNamespacedObjects: !!opts.allowNamespacedObjects\n };\n\n instance.extend('parseExprAtom', function(inner) {\n return function(refShortHandDefaultPos) {\n if (this.type === tt.jsxText)\n return this.parseLiteral(this.value);\n else if (this.type === tt.jsxTagStart)\n return this.jsx_parseElement();\n else\n return inner.call(this, refShortHandDefaultPos);\n };\n });\n\n instance.extend('readToken', function(inner) {\n return function(code) {\n var context = this.curContext();\n\n if (context === tc.j_expr) return this.jsx_readToken();\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (acorn.isIdentifierStart(code)) return this.jsx_readWord();\n\n if (code == 62) {\n ++this.pos;\n return this.finishToken(tt.jsxTagEnd);\n }\n\n if ((code === 34 || code === 39) && context == tc.j_oTag)\n return this.jsx_readString(code);\n }\n\n if (code === 60 && this.exprAllowed) {\n ++this.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return inner.call(this, code);\n };\n });\n\n instance.extend('updateContext', function(inner) {\n return function(prevType) {\n if (this.type == tt.braceL) {\n var curContext = this.curContext();\n if (curContext == tc.j_oTag) this.context.push(tc.b_expr);\n else if (curContext == tc.j_expr) this.context.push(tc.b_tmpl);\n else inner.call(this, prevType);\n this.exprAllowed = true;\n } else if (this.type === tt.slash && prevType === tt.jsxTagStart) {\n this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n this.context.push(tc.j_cTag); // reconsider as closing tag context\n this.exprAllowed = false;\n } else {\n return inner.call(this, prevType);\n }\n };\n });\n };\n\n return acorn;\n};\n","'use strict';\n\nmodule.exports = function(acorn) {\n if (acorn.version.substr(0, 1) !== \"5\") {\n throw new Error(\"Unsupported acorn version \" + acorn.version + \", please use acorn 5\");\n }\n var tt = acorn.tokTypes;\n var pp = acorn.Parser.prototype;\n\n // this is the same parseObj that acorn has with...\n function parseObj(isPattern, refDestructuringErrors) {\n let node = this.startNode(), first = true, propHash = {}\n node.properties = []\n this.next()\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let prop = this.startNode(), isGenerator, isAsync, startPos, startLoc\n if (this.options.ecmaVersion >= 6) {\n // ...the spread logic borrowed from babylon :)\n if (this.type === tt.ellipsis) {\n prop = isPattern ? this.parseRestBinding() : this.parseSpread(refDestructuringErrors)\n node.properties.push(prop)\n if (this.type === tt.comma) {\n if (isPattern) {\n this.raise(this.start, \"Comma is not permitted after the rest element\")\n } else if (refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start\n }\n }\n continue\n }\n\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(tt.star)\n }\n this.parsePropertyName(prop)\n if (!isPattern && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true\n this.parsePropertyName(prop, refDestructuringErrors)\n } else {\n isAsync = false\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors)\n if (!isPattern) this.checkPropClash(prop, propHash)\n node.properties.push(this.finishNode(prop, \"Property\"))\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n }\n\n const getCheckLVal = origCheckLVal => function (expr, bindingType, checkClashes) {\n if (expr.type == \"ObjectPattern\") {\n for (let prop of expr.properties)\n this.checkLVal(prop, bindingType, checkClashes)\n return\n } else if (expr.type === \"Property\") {\n // AssignmentProperty has type == \"Property\"\n return this.checkLVal(expr.value, bindingType, checkClashes)\n }\n return origCheckLVal.apply(this, arguments)\n }\n\n acorn.plugins.objectSpread = function objectSpreadPlugin(instance) {\n pp.parseObj = parseObj;\n instance.extend(\"checkLVal\", getCheckLVal)\n instance.extend(\"toAssignable\", nextMethod => function(node, isBinding) {\n if (this.options.ecmaVersion >= 6 && node) {\n if (node.type == \"ObjectExpression\") {\n node.type = \"ObjectPattern\"\n for (let prop of node.properties)\n this.toAssignable(prop, isBinding)\n return node\n } else if (node.type === \"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 return this.toAssignable(node.value, isBinding)\n } else if (node.type === \"SpreadElement\") {\n node.type = \"RestElement\"\n return this.toAssignable(node.argument, isBinding)\n }\n }\n return nextMethod.apply(this, arguments)\n })\n instance.extend(\"checkPatternExport\", nextMethod => function(exports, pat) {\n if (pat.type == \"ObjectPattern\") {\n for (let prop of pat.properties)\n this.checkPatternExport(exports, prop)\n return\n } else if (pat.type === \"Property\") {\n return this.checkPatternExport(exports, pat.value)\n } else if (pat.type === \"RestElement\") {\n return this.checkPatternExport(exports, pat.argument)\n }\n nextMethod.apply(this, arguments)\n })\n };\n\n return acorn;\n};\n","export default {\n\tProgram: [ 'body' ],\n\tLiteral: []\n};\n","import wrap from './wrap.js';\nimport keys from './keys.js';\n\n// used for debugging, without the noise created by\n// circular references\nfunction toJSON ( node ) {\n\tvar obj = {};\n\n\tObject.keys( node ).forEach( key => {\n\t\tif ( key === 'parent' || key === 'program' || key === 'keys' || key === '__wrapped' ) return;\n\n\t\tif ( Array.isArray( node[ key ] ) ) {\n\t\t\tobj[ key ] = node[ key ].map( toJSON );\n\t\t} else if ( node[ key ] && node[ key ].toJSON ) {\n\t\t\tobj[ key ] = node[ key ].toJSON();\n\t\t} else {\n\t\t\tobj[ key ] = node[ key ];\n\t\t}\n\t});\n\n\treturn obj;\n}\n\nexport default class Node {\n\tconstructor ( raw, parent ) {\n\t\traw.parent = parent;\n\t\traw.program = parent.program || parent;\n\t\traw.depth = parent.depth + 1;\n\t\traw.keys = keys[ raw.type ];\n\t\traw.indentation = undefined;\n\n\t\tfor ( const key of keys[ raw.type ] ) {\n\t\t\twrap( raw[ key ], raw );\n\t\t}\n\n\t\traw.program.magicString.addSourcemapLocation( raw.start );\n\t\traw.program.magicString.addSourcemapLocation( raw.end );\n\t}\n\n\tancestor ( level ) {\n\t\tlet node = this;\n\t\twhile ( level-- ) {\n\t\t\tnode = node.parent;\n\t\t\tif ( !node ) return null;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tcontains ( node ) {\n\t\twhile ( node ) {\n\t\t\tif ( node === this ) return true;\n\t\t\tnode = node.parent;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfindLexicalBoundary () {\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindNearest ( type ) {\n\t\tif ( typeof type === 'string' ) type = new RegExp( `^${type}$` );\n\t\tif ( type.test( this.type ) ) return this;\n\t\treturn this.parent.findNearest( type );\n\t}\n\n\tunparenthesizedParent () {\n\t\tlet node = this.parent;\n\t\twhile ( node && node.type === 'ParenthesizedExpression' ) {\n\t\t\tnode = node.parent;\n\t\t}\n\t\treturn node;\n\t}\n\n\tunparenthesize () {\n\t\tlet node = this;\n\t\twhile ( node.type === 'ParenthesizedExpression' ) {\n\t\t\tnode = node.expression;\n\t\t}\n\t\treturn node;\n\t}\n\n\tfindScope ( functionScope ) {\n\t\treturn this.parent.findScope( functionScope );\n\t}\n\n\tgetIndentation () {\n\t\treturn this.parent.getIndentation();\n\t}\n\n\tinitialise ( transforms ) {\n\t\tfor ( var key of this.keys ) {\n\t\t\tconst value = this[ key ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\tvalue.forEach( node => node && node.initialise( transforms ) );\n\t\t\t} else if ( value && typeof value === 'object' ) {\n\t\t\t\tvalue.initialise( transforms );\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON () {\n\t\treturn toJSON( this );\n\t}\n\n\ttoString () {\n\t\treturn this.program.magicString.original.slice( this.start, this.end );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tfor ( const key of this.keys ) {\n\t\t\tconst value = this[ key ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\tvalue.forEach( node => node && node.transpile( code, transforms ) );\n\t\t\t} else if ( value && typeof value === 'object' ) {\n\t\t\t\tvalue.transpile( code, transforms );\n\t\t\t}\n\t\t}\n\t}\n}\n","export function isArguments ( node ) {\n\treturn node.type === 'Identifier' && node.name === 'arguments';\n}\n\nexport default function spread ( code, elements, start, argumentsArrayAlias, isNew ) {\n\tlet i = elements.length;\n\tlet firstSpreadIndex = -1;\n\n\twhile ( i-- ) {\n\t\tconst element = elements[i];\n\t\tif ( element && element.type === 'SpreadElement' ) {\n\t\t\tif ( isArguments( element.argument ) ) {\n\t\t\t\tcode.overwrite( element.argument.start, element.argument.end, argumentsArrayAlias );\n\t\t\t}\n\n\t\t\tfirstSpreadIndex = i;\n\t\t}\n\t}\n\n\tif ( firstSpreadIndex === -1 ) return false; // false indicates no spread elements\n\n\tif (isNew) {\n\t\tfor ( i = 0; i < elements.length; i += 1 ) {\n\t\t\tlet element = elements[i];\n\t\t\tif ( element.type === 'SpreadElement' ) {\n\t\t\t\tcode.remove( element.start, element.argument.start );\n\t\t\t} else {\n\t\t\t\tcode.prependRight( element.start, '[' );\n\t\t\t\tcode.prependRight( element.end, ']' );\n\t\t\t}\n\t\t}\n\n\t\treturn true; // true indicates some spread elements\n\t}\n\n\tlet element = elements[ firstSpreadIndex ];\n\tconst previousElement = elements[ firstSpreadIndex - 1 ];\n\n\tif ( !previousElement ) {\n\t\tcode.remove( start, element.start );\n\t\tcode.overwrite( element.end, elements[1].start, '.concat( ' );\n\t} else {\n\t\tcode.overwrite( previousElement.end, element.start, ' ].concat( ' );\n\t}\n\n\tfor ( i = firstSpreadIndex; i < elements.length; i += 1 ) {\n\t\telement = elements[i];\n\n\t\tif ( element ) {\n\t\t\tif ( element.type === 'SpreadElement' ) {\n\t\t\t\tcode.remove( element.start, element.argument.start );\n\t\t\t} else {\n\t\t\t\tcode.appendLeft( element.start, '[' );\n\t\t\t\tcode.appendLeft( element.end, ']' );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true; // true indicates some spread elements\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\n\nexport default class ArrayExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.spreadRest && this.elements.length ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.elements.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst element = this.elements[i];\n\t\t\t\tif ( element && element.type === 'SpreadElement' && isArguments( element.argument ) ) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.spreadRest ) {\n\t\t\t// erase trailing comma after last array element if not an array hole\n\t\t\tif ( this.elements.length ) {\n\t\t\t\tlet lastElement = this.elements[ this.elements.length - 1 ];\n\t\t\t\tif ( lastElement && /\\s*,/.test( code.original.slice( lastElement.end, this.end ) ) ) {\n\t\t\t\t\tcode.overwrite( lastElement.end, this.end - 1, ' ' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( this.elements.length === 1 ) {\n\t\t\t\tconst element = this.elements[0];\n\n\t\t\t\tif ( element && element.type === 'SpreadElement' ) {\n\t\t\t\t\t// special case – [ ...arguments ]\n\t\t\t\t\tif ( isArguments( element.argument ) ) {\n\t\t\t\t\t\tcode.overwrite( this.start, this.end, `[].concat( ${this.argumentsArrayAlias} )` ); // TODO if this is the only use of argsArray, don't bother concating\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite( this.start, element.argument.start, '[].concat( ' );\n\t\t\t\t\t\tcode.overwrite( element.end, this.end, ' )' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst hasSpreadElements = spread( code, this.elements, this.start, this.argumentsArrayAlias );\n\n\t\t\t\tif ( hasSpreadElements ) {\n\t\t\t\t\tcode.overwrite( this.end - 1, this.end, ')' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ArrowFunctionExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.body.createScope();\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.arrow || this.needsArguments(transforms) ) {\n\t\t\t// remove arrow\n\t\t\tlet charIndex = this.body.start;\n\t\t\twhile ( code.original[ charIndex ] !== '=' ) {\n\t\t\t\tcharIndex -= 1;\n\t\t\t}\n\t\t\tcode.remove( charIndex, this.body.start );\n\n\t\t\tsuper.transpile( code, transforms );\n\n\t\t\t// wrap naked parameter\n\t\t\tif ( this.params.length === 1 && this.start === this.params[0].start ) {\n\t\t\t\tcode.prependRight( this.params[0].start, '(' );\n\t\t\t\tcode.appendLeft( this.params[0].end, ')' );\n\t\t\t}\n\n\t\t\t// add function\n\t\t\tif ( this.parent && this.parent.type === 'ExpressionStatement' ) {\n\t\t\t\t// standalone expression statement\n\t\t\t\tcode.prependRight( this.start, '!function' );\n\t\t\t} else {\n\t\t\t\tcode.prependRight( this.start, 'function ' );\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tsuper.transpile( code, transforms );\n\t\t}\n\t}\n\n\t// Returns whether any transforms that will happen use `arguments`\n\tneedsArguments(transforms) {\n\t\treturn transforms.spreadRest && this.params.filter( param => param.type === 'RestElement' ).length > 0\n\t}\n}\n","export default function locate ( source, index ) {\n\tvar lines = source.split( '\\n' );\n\tvar len = lines.length;\n\n\tvar lineStart = 0;\n\tvar i;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tvar line = lines[i];\n\t\tvar lineEnd = lineStart + line.length + 1; // +1 for newline\n\n\t\tif ( lineEnd > index ) {\n\t\t\treturn { line: i + 1, column: index - lineStart, char: i };\n\t\t}\n\n\t\tlineStart = lineEnd;\n\t}\n\n\tthrow new Error( 'Could not determine location of character' );\n}\n","function pad ( num, len ) {\n\tlet result = String( num );\n\treturn result + repeat( ' ', len - result.length );\n}\n\nfunction repeat ( str, times ) {\n\tlet result = '';\n\twhile ( times-- ) result += str;\n\treturn result;\n}\n\nexport default function getSnippet ( source, loc, length = 1 ) {\n\tconst first = Math.max( loc.line - 5, 0 );\n\tconst last = loc.line;\n\n\tconst numDigits = String( last ).length;\n\n\tconst lines = source.split( '\\n' ).slice( first, last );\n\n\tconst lastLine = lines[ lines.length - 1 ];\n\tconst offset = lastLine.slice( 0, loc.column ).replace( /\\t/g, ' ' ).length;\n\n\tlet snippet = lines\n\t\t.map( ( line, i ) => `${pad( i + first + 1, numDigits )} : ${line.replace( /\\t/g, ' ')}` )\n\t\t.join( '\\n' );\n\n\tsnippet += '\\n' + repeat( ' ', numDigits + 3 + offset ) + repeat( '^', length );\n\n\treturn snippet;\n}\n","import locate from './locate.js';\nimport getSnippet from './getSnippet.js';\n\nexport default class CompileError extends Error {\n\tconstructor ( message, node ) {\n\t\tsuper( message );\n\n\t\tthis.name = 'CompileError';\n\t\tif ( !node ) { return; }\n\n\t\tconst source = node.program.magicString.original;\n\t\tconst loc = locate( source, node.start );\n\n\t\tthis.message = message + ` (${loc.line}:${loc.column})`;\n\n\t\tthis.stack = new Error().stack.replace( new RegExp( `.+new ${this.name}.+\\\\n`, 'm' ), '' );\n\n\t\tthis.loc = loc;\n\t\tthis.snippet = getSnippet( source, loc, node.end - node.start );\n\t}\n\n\ttoString () {\n\t\treturn `${this.name}: ${this.message}\\n${this.snippet}`;\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class AssignmentExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.left.type === 'Identifier' ) {\n\t\t\tconst declaration = this.findScope( false ).findDeclaration( this.left.name );\n\t\t\tif ( declaration && declaration.kind === 'const' ) {\n\t\t\t\tthrow new CompileError( `${this.left.name} is read-only`, this.left );\n\t\t\t}\n\n\t\t\t// special case – https://gitlab.com/Rich-Harris/buble/issues/11\n\t\t\tconst statement = declaration && declaration.node.ancestor( 3 );\n\t\t\tif ( statement && statement.type === 'ForStatement' && statement.body.contains( this ) ) {\n\t\t\t\tstatement.reassigned[ this.left.name ] = true;\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.operator === '**=' && transforms.exponentiation ) {\n\t\t\tthis.transpileExponentiation( code, transforms );\n\t\t}\n\n\t\telse if ( /Pattern/.test( this.left.type ) && transforms.destructuring ) {\n\t\t\tthis.transpileDestructuring( code, transforms );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n\n\ttranspileDestructuring ( code ) {\n\t\tconst scope = this.findScope( true );\n\t\tconst assign = scope.createIdentifier( 'assign' );\n\t\tconst temporaries = [ assign ];\n\n\t\tconst start = this.start;\n\n\t\t// We need to pick out some elements from the original code,\n\t\t// interleaved with generated code. These helpers are used to\n\t\t// easily do that while keeping the order of the output\n\t\t// predictable.\n\t\tlet text = '';\n\t\tfunction use ( node ) {\n\t\t\tcode.prependRight( node.start, text );\n\t\t\tcode.move( node.start, node.end, start );\n\t\t\ttext = '';\n\t\t}\n\t\tfunction write ( string ) {\n\t\t\ttext += string;\n\t\t}\n\n\t\twrite( `(${assign} = ` );\n\t\tuse( this.right );\n\n\t\t// Walk `pattern`, generating code that assigns the value in\n\t\t// `ref` to it. When `mayDuplicate` is false, the function\n\t\t// must take care to only output `ref` once.\n\t\tfunction destructure ( pattern, ref, mayDuplicate ) {\n\t\t\tif ( pattern.type === 'Identifier' || pattern.type === 'MemberExpression' ) {\n\t\t\t\twrite( ', ' );\n\t\t\t\tuse( pattern );\n\t\t\t\twrite( ` = ${ref}` );\n\t\t\t}\n\n\t\t\telse if ( pattern.type === 'AssignmentPattern' ) {\n\t\t\t\tif ( pattern.left.type === 'Identifier' ) {\n\t\t\t\t\tcode.remove( pattern.start, pattern.right.start );\n\n\t\t\t\t\tconst target = pattern.left.name;\n\t\t\t\t\tlet source = ref;\n\t\t\t\t\tif ( !mayDuplicate ) {\n\t\t\t\t\t\twrite( `, ${target} = ${ref}` );\n\t\t\t\t\t\tsource = target;\n\t\t\t\t\t}\n\t\t\t\t\twrite( `, ${target} = ${source} === void 0 ? ` );\n\t\t\t\t\tuse( pattern.right );\n\t\t\t\t\twrite( ` : ${source}` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.remove( pattern.left.end, pattern.right.start );\n\n\t\t\t\t\tconst target = scope.createIdentifier( 'temp' );\n\t\t\t\t\tlet source = ref;\n\t\t\t\t\ttemporaries.push( target );\n\t\t\t\t\tif ( !mayDuplicate ) {\n\t\t\t\t\t\twrite( `, ${target} = ${ref}` );\n\t\t\t\t\t\tsource = target;\n\t\t\t\t\t}\n\t\t\t\t\twrite( `, ${target} = ${source} === void 0 ? ` );\n\t\t\t\t\tuse( pattern.right );\n\t\t\t\t\twrite( ` : ${source}` );\n\t\t\t\t\tdestructure( pattern.left, target, true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( pattern.type === 'ArrayPattern' ) {\n\t\t\t\tconst elements = pattern.elements;\n\t\t\t\tif ( elements.length === 1 ) {\n\t\t\t\t\tcode.remove( pattern.start, elements[0].start );\n\t\t\t\t\tdestructure( elements[0], `${ref}[0]`, false );\n\t\t\t\t\tcode.remove( elements[0].end, pattern.end );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif ( !mayDuplicate ) {\n\t\t\t\t\t\tconst temp = scope.createIdentifier( 'array' );\n\t\t\t\t\t\ttemporaries.push( temp );\n\t\t\t\t\t\twrite( `, ${temp} = ${ref}` );\n\t\t\t\t\t\tref = temp;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet c = pattern.start;\n\t\t\t\t\telements.forEach( ( element, i ) => {\n\t\t\t\t\t\tif (!element) return;\n\n\t\t\t\t\t\tcode.remove(c, element.start);\n\t\t\t\t\t\tc = element.end;\n\n\t\t\t\t\t\tif ( element.type === 'RestElement' ) {\n\t\t\t\t\t\t\tcode.remove( element.start, element.argument.start );\n\t\t\t\t\t\t\tdestructure( element.argument, `${ref}.slice(${i})`, false );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdestructure( element, `${ref}[${i}]`, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tcode.remove(c, pattern.end);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( pattern.type === 'ObjectPattern' ) {\n\t\t\t\tconst props = pattern.properties;\n\t\t\t\tif ( props.length == 1 ) {\n\t\t\t\t\tconst prop = props[0];\n\t\t\t\t\tconst value = prop.computed || prop.key.type !== 'Identifier' ? `${ref}[${code.slice(prop.key.start, prop.key.end)}]` : `${ref}.${prop.key.name}`;\n\n\t\t\t\t\tcode.remove( pattern.start, prop.value.start );\n\t\t\t\t\tdestructure( prop.value, value, false );\n\t\t\t\t\tcode.remove( prop.end, pattern.end );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif ( !mayDuplicate ) {\n\t\t\t\t\t\tconst temp = scope.createIdentifier( 'obj' );\n\t\t\t\t\t\ttemporaries.push( temp );\n\t\t\t\t\t\twrite( `, ${temp} = ${ref}` );\n\t\t\t\t\t\tref = temp;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet c = pattern.start;\n\n\t\t\t\t\tprops.forEach( prop => {\n\t\t\t\t\t\tconst value = prop.computed || prop.key.type !== 'Identifier' ? `${ref}[${code.slice(prop.key.start, prop.key.end)}]` : `${ref}.${prop.key.name}`;\n\n\t\t\t\t\t\tcode.remove(c, prop.value.start);\n\t\t\t\t\t\tc = prop.end;\n\n\t\t\t\t\t\tdestructure( prop.value, value, false );\n\t\t\t\t\t});\n\n\t\t\t\t\tcode.remove(c, pattern.end);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tthrow new Error( `Unexpected node type in destructuring assignment (${pattern.type})` );\n\t\t\t}\n\t\t}\n\n\t\tdestructure( this.left, assign, true );\n\t\tcode.remove( this.left.end, this.right.start );\n\n\t\tif ( this.unparenthesizedParent().type === 'ExpressionStatement' ) {\n\t\t\t// no rvalue needed for expression statement\n\t\t\tcode.prependRight( start, `${text})` );\n\t\t} else {\n\t\t\t// destructuring is part of an expression - need an rvalue\n\t\t\tcode.prependRight( start, `${text}, ${assign})` );\n\t\t}\n\n\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\tcode.appendLeft( statement.start, `var ${temporaries.join( ', ' )};\\n${statement.getIndentation()}` );\n\t}\n\n\ttranspileExponentiation ( code ) {\n\t\tconst scope = this.findScope( false );\n\t\tconst getAlias = name => {\n\t\t\tconst declaration = scope.findDeclaration( name );\n\t\t\treturn declaration ? declaration.name : name;\n\t\t};\n\n\t\t// first, the easy part – `**=` -> `=`\n\t\tlet charIndex = this.left.end;\n\t\twhile ( code.original[ charIndex ] !== '*' ) charIndex += 1;\n\t\tcode.remove( charIndex, charIndex + 2 );\n\n\t\t// how we do the next part depends on a number of factors – whether\n\t\t// this is a top-level statement, and whether we're updating a\n\t\t// simple or complex reference\n\t\tlet base;\n\n\t\tconst left = this.left.unparenthesize();\n\n\t\tif ( left.type === 'Identifier' ) {\n\t\t\tbase = getAlias( left.name );\n\t\t} else if ( left.type === 'MemberExpression' ) {\n\t\t\tlet object;\n\t\t\tlet needsObjectVar = false;\n\t\t\tlet property;\n\t\t\tlet needsPropertyVar = false;\n\n\t\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\t\tconst i0 = statement.getIndentation();\n\n\t\t\tif ( left.property.type === 'Identifier' ) {\n\t\t\t\tproperty = left.computed ? getAlias( left.property.name ) : left.property.name;\n\t\t\t} else {\n\t\t\t\tproperty = scope.createIdentifier( 'property' );\n\t\t\t\tneedsPropertyVar = true;\n\t\t\t}\n\n\t\t\tif ( left.object.type === 'Identifier' ) {\n\t\t\t\tobject = getAlias( left.object.name );\n\t\t\t} else {\n\t\t\t\tobject = scope.createIdentifier( 'object' );\n\t\t\t\tneedsObjectVar = true;\n\t\t\t}\n\n\t\t\tif ( left.start === statement.start ) {\n\t\t\t\tif ( needsObjectVar && needsPropertyVar ) {\n\t\t\t\t\tcode.prependRight( statement.start, `var ${object} = ` );\n\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `;\\n${i0}var ${property} = ` );\n\t\t\t\t\tcode.overwrite( left.property.end, left.end, `;\\n${i0}${object}[${property}]` );\n\t\t\t\t}\n\n\t\t\t\telse if ( needsObjectVar ) {\n\t\t\t\t\tcode.prependRight( statement.start, `var ${object} = ` );\n\t\t\t\t\tcode.appendLeft( left.object.end, `;\\n${i0}` );\n\t\t\t\t\tcode.appendLeft( left.object.end, object );\n\t\t\t\t}\n\n\t\t\t\telse if ( needsPropertyVar ) {\n\t\t\t\t\tcode.prependRight( left.property.start, `var ${property} = ` );\n\t\t\t\t\tcode.appendLeft( left.property.end, `;\\n${i0}` );\n\t\t\t\t\tcode.move( left.property.start, left.property.end, this.start );\n\n\t\t\t\t\tcode.appendLeft( left.object.end, `[${property}]` );\n\t\t\t\t\tcode.remove( left.object.end, left.property.start );\n\t\t\t\t\tcode.remove( left.property.end, left.end );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tlet declarators = [];\n\t\t\t\tif ( needsObjectVar ) declarators.push( object );\n\t\t\t\tif ( needsPropertyVar ) declarators.push( property );\n\n\t\t\t\tif ( declarators.length ) {\n\t\t\t\t\tcode.prependRight( statement.start, `var ${declarators.join( ', ' )};\\n${i0}` );\n\t\t\t\t}\n\n\t\t\t\tif ( needsObjectVar && needsPropertyVar ) {\n\t\t\t\t\tcode.prependRight( left.start, `( ${object} = ` );\n\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `, ${property} = ` );\n\t\t\t\t\tcode.overwrite( left.property.end, left.end, `, ${object}[${property}]` );\n\t\t\t\t}\n\n\t\t\t\telse if ( needsObjectVar ) {\n\t\t\t\t\tcode.prependRight( left.start, `( ${object} = ` );\n\t\t\t\t\tcode.appendLeft( left.object.end, `, ${object}` );\n\t\t\t\t}\n\n\t\t\t\telse if ( needsPropertyVar ) {\n\t\t\t\t\tcode.prependRight( left.property.start, `( ${property} = ` );\n\t\t\t\t\tcode.appendLeft( left.property.end, `, ` );\n\t\t\t\t\tcode.move( left.property.start, left.property.end, left.start );\n\n\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `[${property}]` );\n\t\t\t\t\tcode.remove( left.property.end, left.end );\n\t\t\t\t}\n\n\t\t\t\tif ( needsPropertyVar ) {\n\t\t\t\t\tcode.appendLeft( this.end, ` )` );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = object + ( left.computed || needsPropertyVar ? `[${property}]` : `.${property}` );\n\t\t}\n\n\t\tcode.prependRight( this.right.start, `Math.pow( ${base}, ` );\n\t\tcode.appendLeft( this.right.end, ` )` );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class BinaryExpression extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( this.operator === '**' && transforms.exponentiation ) {\n\t\t\tcode.prependRight( this.start, `Math.pow( ` );\n\t\t\tcode.overwrite( this.left.end, this.right.start, `, ` );\n\t\t\tcode.appendLeft( this.end, ` )` );\n\t\t}\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","export const loopStatement = /(?:For(?:In|Of)?|While)Statement/;\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class BreakStatement extends Node {\n\tinitialise () {\n\t\tconst loop = this.findNearest( loopStatement );\n\t\tconst switchCase = this.findNearest( 'SwitchCase' );\n\n\t\tif ( loop && ( !switchCase || loop.depth > switchCase.depth ) ) {\n\t\t\tloop.canBreak = true;\n\t\t\tthis.loop = loop;\n\t\t}\n\t}\n\n\ttranspile ( code ) {\n\t\tif ( this.loop && this.loop.shouldRewriteAsFunction ) {\n\t\t\tif ( this.label ) throw new CompileError( 'Labels are not currently supported in a loop with locally-scoped variables', this );\n\t\t\tcode.overwrite( this.start, this.start + 5, `return 'break'` );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\n\nexport default class CallExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.spreadRest && this.arguments.length > 1 ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.arguments.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst arg = this.arguments[i];\n\t\t\t\tif ( arg.type === 'SpreadElement' && isArguments( arg.argument ) ) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.spreadRest && this.arguments.length ) {\n\t\t\tlet hasSpreadElements = false;\n\t\t\tlet context;\n\n\t\t\tconst firstArgument = this.arguments[0];\n\n\t\t\tif ( this.arguments.length === 1 ) {\n\t\t\t\tif ( firstArgument.type === 'SpreadElement' ) {\n\t\t\t\t\tcode.remove( firstArgument.start, firstArgument.argument.start );\n\t\t\t\t\thasSpreadElements = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thasSpreadElements = spread( code, this.arguments, firstArgument.start, this.argumentsArrayAlias );\n\t\t\t}\n\n\t\t\tif ( hasSpreadElements ) {\n\n\t\t\t\t// we need to handle super() and super.method() differently\n\t\t\t\t// due to its instance\n\t\t\t\tlet _super = null;\n\t\t\t\tif ( this.callee.type === 'Super' ) {\n\t\t\t\t\t_super = this.callee;\n\t\t\t\t}\n\t\t\t\telse if ( this.callee.type === 'MemberExpression' && this.callee.object.type === 'Super' ) {\n\t\t\t\t\t_super = this.callee.object;\n\t\t\t\t}\n\n\t\t\t\tif ( !_super && this.callee.type === 'MemberExpression' ) {\n\t\t\t\t\tif ( this.callee.object.type === 'Identifier' ) {\n\t\t\t\t\t\tcontext = this.callee.object.name;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext = this.findScope( true ).createIdentifier( 'ref' );\n\t\t\t\t\t\tconst callExpression = this.callee.object;\n\t\t\t\t\t\tconst enclosure = callExpression.findNearest( /Function/ );\n\t\t\t\t\t\tconst block = enclosure ? enclosure.body.body\n\t\t\t\t\t\t\t: callExpression.findNearest( /^Program$/ ).body;\n\t\t\t\t\t\tconst lastStatementInBlock = block[ block.length - 1 ];\n\t\t\t\t\t\tconst i0 = lastStatementInBlock.getIndentation();\n\t\t\t\t\t\tcode.prependRight( callExpression.start, `(${context} = ` );\n\t\t\t\t\t\tcode.appendLeft( callExpression.end, `)` );\n\t\t\t\t\t\tcode.appendLeft( lastStatementInBlock.end, `\\n${i0}var ${context};` );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext = 'void 0';\n\t\t\t\t}\n\n\t\t\t\tcode.appendLeft( this.callee.end, '.apply' );\n\n\t\t\t\tif ( _super ) {\n\t\t\t\t\t_super.noCall = true; // bit hacky...\n\n\t\t\t\t\tif ( this.arguments.length > 1 ) {\n\t\t\t\t\t\tif ( firstArgument.type !== 'SpreadElement' ) {\n\t\t\t\t\t\t\tcode.prependRight( firstArgument.start, `[ ` );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode.appendLeft( this.arguments[ this.arguments.length - 1 ].end, ' )' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telse if ( this.arguments.length === 1 ) {\n\t\t\t\t\tcode.prependRight( firstArgument.start, `${context}, ` );\n\t\t\t\t} else {\n\t\t\t\t\tif ( firstArgument.type === 'SpreadElement' ) {\n\t\t\t\t\t\tcode.appendLeft( firstArgument.start, `${context}, ` );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.appendLeft( firstArgument.start, `${context}, [ ` );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.appendLeft( this.arguments[ this.arguments.length - 1 ].end, ' )' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","export function findIndex ( array, fn ) {\n\tfor ( let i = 0; i < array.length; i += 1 ) {\n\t\tif ( fn( array[i], i ) ) return i;\n\t}\n\n\treturn -1;\n}\n\nexport function find ( array, fn ) {\n\treturn array[ findIndex( array, fn ) ];\n}\n","let reserved = Object.create( null );\n'do if in for let new try var case else enum eval null this true void with await break catch class const false super throw while yield delete export import public return static switch typeof default extends finally package private continue debugger function arguments interface protected implements instanceof'.split( ' ' )\n\t.forEach( word => reserved[ word ] = true );\n\nexport default reserved;\n","import Node from '../Node.js';\nimport { findIndex } from '../../utils/array.js';\nimport reserved from '../../utils/reserved.js';\n\n// TODO this code is pretty wild, tidy it up\nexport default class ClassBody extends Node {\n\ttranspile ( code, transforms, inFunctionExpression, superName ) {\n\t\tif ( transforms.classes ) {\n\t\t\tconst name = this.parent.name;\n\n\t\t\tconst indentStr = code.getIndentString();\n\t\t\tconst i0 = this.getIndentation() + ( inFunctionExpression ? indentStr : '' );\n\t\t\tconst i1 = i0 + indentStr;\n\n\t\t\tconst constructorIndex = findIndex( this.body, node => node.kind === 'constructor' );\n\t\t\tconst constructor = this.body[ constructorIndex ];\n\n\t\t\tlet introBlock = '';\n\t\t\tlet outroBlock = '';\n\n\t\t\tif ( this.body.length ) {\n\t\t\t\tcode.remove( this.start, this.body[0].start );\n\t\t\t\tcode.remove( this.body[ this.body.length - 1 ].end, this.end );\n\t\t\t} else {\n\t\t\t\tcode.remove( this.start, this.end );\n\t\t\t}\n\n\t\t\tif ( constructor ) {\n\t\t\t\tconstructor.value.body.isConstructorBody = true;\n\n\t\t\t\tconst previousMethod = this.body[ constructorIndex - 1 ];\n\t\t\t\tconst nextMethod = this.body[ constructorIndex + 1 ];\n\n\t\t\t\t// ensure constructor is first\n\t\t\t\tif ( constructorIndex > 0 ) {\n\t\t\t\t\tcode.remove( previousMethod.end, constructor.start );\n\t\t\t\t\tcode.move( constructor.start, nextMethod ? nextMethod.start : this.end - 1, this.body[0].start );\n\t\t\t\t}\n\n\t\t\t\tif ( !inFunctionExpression ) code.appendLeft( constructor.end, ';' );\n\t\t\t}\n\n\t\t\tlet namedFunctions = this.program.options.namedFunctionExpressions !== false;\n\t\t\tlet namedConstructor = namedFunctions || this.parent.superClass || this.parent.type !== 'ClassDeclaration';\n\t\t\tif ( this.parent.superClass ) {\n\t\t\t\tlet inheritanceBlock = `if ( ${superName} ) ${name}.__proto__ = ${superName};\\n${i0}${name}.prototype = Object.create( ${superName} && ${superName}.prototype );\\n${i0}${name}.prototype.constructor = ${name};`;\n\n\t\t\t\tif ( constructor ) {\n\t\t\t\t\tintroBlock += `\\n\\n${i0}` + inheritanceBlock;\n\t\t\t\t} else {\n\t\t\t\t\tconst fn = `function ${name} () {` + ( superName ?\n\t\t\t\t\t\t`\\n${i1}${superName}.apply(this, arguments);\\n${i0}}` :\n\t\t\t\t\t\t`}` ) + ( inFunctionExpression ? '' : ';' ) + ( this.body.length ? `\\n\\n${i0}` : '' );\n\n\t\t\t\t\tinheritanceBlock = fn + inheritanceBlock;\n\t\t\t\t\tintroBlock += inheritanceBlock + `\\n\\n${i0}`;\n\t\t\t\t}\n\t\t\t} else if ( !constructor ) {\n\t\t\t\tlet fn = 'function ' + (namedConstructor ? name + ' ' : '') + '() {}';\n\t\t\t\tif ( this.parent.type === 'ClassDeclaration' ) fn += ';';\n\t\t\t\tif ( this.body.length ) fn += `\\n\\n${i0}`;\n\n\t\t\t\tintroBlock += fn;\n\t\t\t}\n\n\t\t\tconst scope = this.findScope( false );\n\n\t\t\tlet prototypeGettersAndSetters = [];\n\t\t\tlet staticGettersAndSetters = [];\n\t\t\tlet prototypeAccessors;\n\t\t\tlet staticAccessors;\n\n\t\t\tthis.body.forEach( ( method, i ) => {\n\t\t\t\tif ( method.kind === 'constructor' ) {\n\t\t\t\t\tlet constructorName = namedConstructor ? ' ' + name : '';\n\t\t\t\t\tcode.overwrite( method.key.start, method.key.end, `function${constructorName}` );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( method.static ) {\n\t\t\t\t\tconst len = code.original[ method.start + 6 ] == ' ' ? 7 : 6;\n\t\t\t\t\tcode.remove( method.start, method.start + len );\n\t\t\t\t}\n\n\t\t\t\tconst isAccessor = method.kind !== 'method';\n\t\t\t\tlet lhs;\n\n\t\t\t\tlet methodName = method.key.name;\n\t\t\t\tif ( reserved[ methodName ] || method.value.body.scope.references[methodName] ) {\n\t\t\t\t\tmethodName = scope.createIdentifier( methodName );\n\t\t\t\t}\n\n\t\t\t\t// when method name is a string or a number let's pretend it's a computed method\n\n\t\t\t\tlet fake_computed = false;\n\t\t\t\tif ( ! method.computed && method.key.type === 'Literal' ) {\n\t\t\t\t\tfake_computed = true;\n\t\t\t\t\tmethod.computed = true;\n\t\t\t\t}\n\n\t\t\t\tif ( isAccessor ) {\n\t\t\t\t\tif ( method.computed ) {\n\t\t\t\t\t\tthrow new Error( 'Computed accessor properties are not currently supported' );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.remove( method.start, method.key.start );\n\n\t\t\t\t\tif ( method.static ) {\n\t\t\t\t\t\tif ( !~staticGettersAndSetters.indexOf( method.key.name ) ) staticGettersAndSetters.push( method.key.name );\n\t\t\t\t\t\tif ( !staticAccessors ) staticAccessors = scope.createIdentifier( 'staticAccessors' );\n\n\t\t\t\t\t\tlhs = `${staticAccessors}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( !~prototypeGettersAndSetters.indexOf( method.key.name ) ) prototypeGettersAndSetters.push( method.key.name );\n\t\t\t\t\t\tif ( !prototypeAccessors ) prototypeAccessors = scope.createIdentifier( 'prototypeAccessors' );\n\n\t\t\t\t\t\tlhs = `${prototypeAccessors}`;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlhs = method.static ?\n\t\t\t\t\t\t`${name}` :\n\t\t\t\t\t\t`${name}.prototype`;\n\t\t\t\t}\n\n\t\t\t\tif ( !method.computed ) lhs += '.';\n\n\t\t\t\tconst insertNewlines = ( constructorIndex > 0 && i === constructorIndex + 1 ) ||\n\t\t\t\t ( i === 0 && constructorIndex === this.body.length - 1 );\n\n\t\t\t\tif ( insertNewlines ) lhs = `\\n\\n${i0}${lhs}`;\n\n\t\t\t\tlet c = method.key.end;\n\t\t\t\tif ( method.computed ) {\n\t\t\t\t\tif ( fake_computed ) {\n\t\t\t\t\t\tcode.prependRight( method.key.start, '[' );\n\t\t\t\t\t\tcode.appendLeft( method.key.end, ']' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twhile ( code.original[c] !== ']' ) c += 1;\n\t\t\t\t\t\tc += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst funcName = method.computed || isAccessor || !namedFunctions ? '' : `${methodName} `;\n\t\t\t\tconst rhs = ( isAccessor ? `.${method.kind}` : '' ) + ` = function` + ( method.value.generator ? '* ' : ' ' ) + funcName;\n\t\t\t\tcode.remove( c, method.value.start );\n\t\t\t\tcode.prependRight( method.value.start, rhs );\n\t\t\t\tcode.appendLeft( method.end, ';' );\n\n\t\t\t\tif ( method.value.generator ) code.remove( method.start, method.key.start );\n\n\t\t\t\tcode.prependRight( method.start, lhs );\n\t\t\t});\n\n\t\t\tif ( prototypeGettersAndSetters.length || staticGettersAndSetters.length ) {\n\t\t\t\tlet intro = [];\n\t\t\t\tlet outro = [];\n\n\t\t\t\tif ( prototypeGettersAndSetters.length ) {\n\t\t\t\t\tintro.push( `var ${prototypeAccessors} = { ${prototypeGettersAndSetters.map( name => `${name}: { configurable: true }` ).join( ',' )} };` );\n\t\t\t\t\toutro.push( `Object.defineProperties( ${name}.prototype, ${prototypeAccessors} );` );\n\t\t\t\t}\n\n\t\t\t\tif ( staticGettersAndSetters.length ) {\n\t\t\t\t\tintro.push( `var ${staticAccessors} = { ${staticGettersAndSetters.map( name => `${name}: { configurable: true }` ).join( ',' )} };` );\n\t\t\t\t\toutro.push( `Object.defineProperties( ${name}, ${staticAccessors} );` );\n\t\t\t\t}\n\n\t\t\t\tif ( constructor ) introBlock += `\\n\\n${i0}`;\n\t\t\t\tintroBlock += intro.join( `\\n${i0}` );\n\t\t\t\tif ( !constructor ) introBlock += `\\n\\n${i0}`;\n\n\t\t\t\toutroBlock += `\\n\\n${i0}` + outro.join( `\\n${i0}` );\n\t\t\t}\n\n\t\t\tif ( constructor ) {\n\t\t\t\tcode.appendLeft( constructor.end, introBlock );\n\t\t\t} else {\n\t\t\t\tcode.prependRight( this.start, introBlock );\n\t\t\t}\n\n\t\t\tcode.appendLeft( this.end, outroBlock );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","// TODO this function is slightly flawed – it works on the original string,\n// not its current edited state.\n// That's not a problem for the way that it's currently used, but it could\n// be in future...\nexport default function deindent ( node, code ) {\n\tconst start = node.start;\n\tconst end = node.end;\n\n\tconst indentStr = code.getIndentString();\n\tconst indentStrLen = indentStr.length;\n\tconst indentStart = start - indentStrLen;\n\n\tif ( !node.program.indentExclusions[ indentStart ]\n\t&& code.original.slice( indentStart, start ) === indentStr ) {\n\t\tcode.remove( indentStart, start );\n\t}\n\n\tconst pattern = new RegExp( indentStr + '\\\\S', 'g' );\n\tconst slice = code.original.slice( start, end );\n\tlet match;\n\n\twhile ( match = pattern.exec( slice ) ) {\n\t\tconst removeStart = start + match.index;\n\t\tif ( !node.program.indentExclusions[ removeStart ] ) {\n\t\t\tcode.remove( removeStart, removeStart + indentStrLen );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport deindent from '../../utils/deindent.js';\n\nexport default class ClassDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.name = this.id.name;\n\t\tthis.findScope( true ).addDeclaration( this.id, 'class' );\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tif ( !this.superClass ) deindent( this.body, code );\n\n\t\t\tconst superName = this.superClass && ( this.superClass.name || 'superclass' );\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\t// if this is an export default statement, we have to move the export to\n\t\t\t// after the declaration, because `export default var Foo = ...` is illegal\n\t\t\tconst syntheticDefaultExport = this.parent.type === 'ExportDefaultDeclaration' ?\n\t\t\t\t`\\n\\n${i0}export default ${this.id.name};` :\n\t\t\t\t'';\n\n\t\t\tif ( syntheticDefaultExport ) code.remove( this.parent.start, this.start );\n\n\t\t\tcode.overwrite( this.start, this.id.start, 'var ' );\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tif ( this.superClass.end === this.body.start ) {\n\t\t\t\t\tcode.remove( this.id.end, this.superClass.start );\n\t\t\t\t\tcode.appendLeft( this.id.end, ` = (function (${superName}) {\\n${i1}` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite( this.id.end, this.superClass.start, ' = ' );\n\t\t\t\t\tcode.overwrite( this.superClass.end, this.body.start, `(function (${superName}) {\\n${i1}` );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( this.id.end === this.body.start ) {\n\t\t\t\t\tcode.appendLeft( this.id.end, ' = ' );\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite( this.id.end, this.body.start, ' = ' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.body.transpile( code, transforms, !!this.superClass, superName );\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tcode.appendLeft( this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}(` );\n\t\t\t\tcode.move( this.superClass.start, this.superClass.end, this.end );\n\t\t\t\tcode.prependRight( this.end, `));${syntheticDefaultExport}` );\n\t\t\t} else if ( syntheticDefaultExport ) {\n\t\t\t\tcode.prependRight( this.end, syntheticDefaultExport );\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tthis.body.transpile( code, transforms, false, null );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ClassExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.name = this.id ? this.id.name :\n\t\t this.parent.type === 'VariableDeclarator' ? this.parent.id.name :\n\t\t this.parent.type === 'AssignmentExpression' ? this.parent.left.name :\n\t\t this.findScope( true ).createIdentifier( 'anonymous' );\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tconst superName = this.superClass && ( this.superClass.name || 'superclass' );\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tcode.remove( this.start, this.superClass.start );\n\t\t\t\tcode.remove( this.superClass.end, this.body.start );\n\t\t\t\tcode.appendLeft( this.start, `(function (${superName}) {\\n${i1}` );\n\t\t\t} else {\n\t\t\t\tcode.overwrite( this.start, this.body.start, `(function () {\\n${i1}` );\n\t\t\t}\n\n\t\t\tthis.body.transpile( code, transforms, true, superName );\n\n\t\t\tconst outro = `\\n\\n${i1}return ${this.name};\\n${i0}}(`;\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tcode.appendLeft( this.end, outro );\n\t\t\t\tcode.move( this.superClass.start, this.superClass.end, this.end );\n\t\t\t\tcode.prependRight( this.end, '))' );\n\t\t\t} else {\n\t\t\t\tcode.appendLeft( this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}())` );\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tthis.body.transpile( code, transforms, false );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ContinueStatement extends Node {\n\ttranspile ( code ) {\n\t\tconst loop = this.findNearest( loopStatement );\n\t\tif ( loop.shouldRewriteAsFunction ) {\n\t\t\tif ( this.label ) throw new CompileError( 'Labels are not currently supported in a loop with locally-scoped variables', this );\n\t\t\tcode.overwrite( this.start, this.start + 8, 'return' );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportDefaultDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.moduleExport ) throw new CompileError( 'export is not supported', this );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportNamedDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.moduleExport ) throw new CompileError( 'export is not supported', this );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../../Node.js';\n\nexport default class LoopStatement extends Node {\n\tfindScope ( functionScope ) {\n\t\treturn functionScope || !this.createdScope ? this.parent.findScope( functionScope ) : this.body.scope;\n\t}\n\n\tinitialise ( transforms ) {\n\t\tthis.body.createScope();\n\t\tthis.createdScope = true;\n\n\t\t// this is populated as and when reassignments occur\n\t\tthis.reassigned = Object.create( null );\n\t\tthis.aliases = Object.create( null );\n\n\t\tsuper.initialise( transforms );\n\n\t\tif ( transforms.letConst ) {\n\t\t\t// see if any block-scoped declarations are referenced\n\t\t\t// inside function expressions\n\t\t\tconst names = Object.keys( this.body.scope.declarations );\n\n\t\t\tlet i = names.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst name = names[i];\n\t\t\t\tconst declaration = this.body.scope.declarations[ name ];\n\n\t\t\t\tlet j = declaration.instances.length;\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\tconst instance = declaration.instances[j];\n\t\t\t\t\tconst nearestFunctionExpression = instance.findNearest( /Function/ );\n\n\t\t\t\t\tif ( nearestFunctionExpression && nearestFunctionExpression.depth > this.depth ) {\n\t\t\t\t\t\tthis.shouldRewriteAsFunction = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( this.shouldRewriteAsFunction ) break;\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst needsBlock = this.type != 'ForOfStatement' && (\n\t\t\tthis.body.type !== 'BlockStatement'\n\t\t\t|| this.body.type === 'BlockStatement' && this.body.synthetic );\n\n\t\tif ( this.shouldRewriteAsFunction ) {\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tconst argString = this.args ? ` ${this.args.join( ', ' )} ` : '';\n\t\t\tconst paramString = this.params ? ` ${this.params.join( ', ' )} ` : '';\n\n\t\t\tconst functionScope = this.findScope( true );\n\t\t\tconst loop = functionScope.createIdentifier( 'loop' );\n\n\t\t\tconst before = `var ${loop} = function (${paramString}) ` + ( this.body.synthetic ? `{\\n${i0}${code.getIndentString()}` : '' );\n\t\t\tconst after = ( this.body.synthetic ? `\\n${i0}}` : '' ) + `;\\n\\n${i0}`;\n\n\t\t\tcode.prependRight( this.body.start, before );\n\t\t\tcode.appendLeft( this.body.end, after );\n\t\t\tcode.move( this.start, this.body.start, this.body.end );\n\n\t\t\tif ( this.canBreak || this.canReturn ) {\n\t\t\t\tconst returned = functionScope.createIdentifier( 'returned' );\n\n\t\t\t\tlet insert = `{\\n${i1}var ${returned} = ${loop}(${argString});\\n`;\n\t\t\t\tif ( this.canBreak ) insert += `\\n${i1}if ( ${returned} === 'break' ) break;`;\n\t\t\t\tif ( this.canReturn ) insert += `\\n${i1}if ( ${returned} ) return ${returned}.v;`;\n\t\t\t\tinsert += `\\n${i0}}`;\n\n\t\t\t\tcode.prependRight( this.body.end, insert );\n\t\t\t} else {\n\t\t\t\tconst callExpression = `${loop}(${argString});`;\n\n\t\t\t\tif ( this.type === 'DoWhileStatement' ) {\n\t\t\t\t\tcode.overwrite( this.start, this.body.start, `do {\\n${i1}${callExpression}\\n${i0}}` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.prependRight( this.body.end, callExpression );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( needsBlock ) {\n\t\t\tcode.appendLeft( this.body.start, '{ ' );\n\t\t\tcode.prependRight( this.body.end, ' }' );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","export default function extractNames ( node ) {\n\tconst names = [];\n\textractors[ node.type ]( names, node );\n\treturn names;\n}\n\nconst extractors = {\n\tIdentifier ( names, node ) {\n\t\tnames.push( node );\n\t},\n\n\tObjectPattern ( names, node ) {\n\t\tfor ( const prop of node.properties ) {\n\t\t\textractors[ prop.type ]( names, prop );\n\t\t}\n\t},\n\n\tProperty ( names, node ) {\n\t\textractors[ node.value.type ]( names, node.value );\n\t},\n\n\tArrayPattern ( names, node ) {\n\t\tfor ( const element of node.elements ) {\n\t\t\tif ( element ) extractors[ element.type ]( names, element );\n\t\t}\n\t},\n\n\tRestElement ( names, node ) {\n\t\textractors[ node.argument.type ]( names, node.argument );\n\t},\n\n\tAssignmentPattern ( names, node ) {\n\t\textractors[ node.left.type ]( names, node.left );\n\t}\n};\n","import LoopStatement from './shared/LoopStatement.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForStatement extends LoopStatement {\n\tfindScope ( functionScope ) {\n\t\treturn functionScope || !this.createdScope ? this.parent.findScope( functionScope ) : this.body.scope;\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst i1 = this.getIndentation() + code.getIndentString();\n\n\t\tif ( this.shouldRewriteAsFunction ) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names = this.init.type === 'VariableDeclaration' ?\n\t\t\t\t[].concat.apply( [], this.init.declarations.map( declarator => extractNames( declarator.id ) ) ) :\n\t\t\t\t[];\n\n\t\t\tconst aliases = this.aliases;\n\n\t\t\tthis.args = names.map( name => name in this.aliases ? this.aliases[ name ].outer : name );\n\t\t\tthis.params = names.map( name => name in this.aliases ? this.aliases[ name ].inner : name );\n\n\t\t\tconst updates = Object.keys( this.reassigned )\n\t\t\t\t.map( name => `${aliases[ name ].outer} = ${aliases[ name ].inner};` );\n\n\t\t\tif ( updates.length ) {\n\t\t\t\tif ( this.body.synthetic ) {\n\t\t\t\t\tcode.appendLeft( this.body.body[0].end, `; ${updates.join(` `)}` );\n\t\t\t\t} else {\n\t\t\t\t\tconst lastStatement = this.body.body[ this.body.body.length - 1 ];\n\t\t\t\t\tcode.appendLeft( lastStatement.end, `\\n\\n${i1}${updates.join(`\\n${i1}`)}` );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForInStatement extends LoopStatement {\n\tfindScope ( functionScope ) {\n\t\treturn functionScope || !this.createdScope ? this.parent.findScope( functionScope ) : this.body.scope;\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.shouldRewriteAsFunction ) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names = this.left.type === 'VariableDeclaration' ?\n\t\t\t\t[].concat.apply( [], this.left.declarations.map( declarator => extractNames( declarator.id ) ) ) :\n\t\t\t\t[];\n\n\t\t\tthis.args = names.map( name => name in this.aliases ? this.aliases[ name ].outer : name );\n\t\t\tthis.params = names.map( name => name in this.aliases ? this.aliases[ name ].inner : name );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import { findIndex } from './array.js';\n\nconst handlers = {\n\tIdentifier: destructureIdentifier,\n\tAssignmentPattern: destructureAssignmentPattern,\n\tArrayPattern: destructureArrayPattern,\n\tObjectPattern: destructureObjectPattern\n};\n\nexport default function destructure ( code, scope, node, ref, inline, statementGenerators ) {\n\thandlers[ node.type ]( code, scope, node, ref, inline, statementGenerators );\n}\n\nfunction destructureIdentifier ( code, scope, node, ref, inline, statementGenerators ) {\n\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\tcode.prependRight( node.start, inline ? prefix : `${prefix}var ` );\n\t\tcode.appendLeft( node.end, ` = ${ref}${suffix}` );\n\t\tcode.move( node.start, node.end, start );\n\t});\n}\n\nfunction destructureAssignmentPattern ( code, scope, node, ref, inline, statementGenerators ) {\n\tconst isIdentifier = node.left.type === 'Identifier';\n\tconst name = isIdentifier ? node.left.name : ref;\n\n\tif ( !inline ) {\n\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\tcode.prependRight( node.left.end, `${prefix}if ( ${name} === void 0 ) ${name}` );\n\t\t\tcode.move( node.left.end, node.right.end, start );\n\t\t\tcode.appendLeft( node.right.end, suffix );\n\t\t});\n\t}\n\n\tif ( !isIdentifier ) {\n\t\tdestructure( code, scope, node.left, ref, inline, statementGenerators );\n\t}\n}\n\nfunction destructureArrayPattern ( code, scope, node, ref, inline, statementGenerators ) {\n\tlet c = node.start;\n\n\tnode.elements.forEach( ( element, i ) => {\n\t\tif ( !element ) return;\n\n\t\tif ( element.type === 'RestElement' ) {\n\t\t\thandleProperty( code, scope, c, element.argument, `${ref}.slice(${i})`, inline, statementGenerators );\n\t\t} else {\n\t\t\thandleProperty( code, scope, c, element, `${ref}[${i}]`, inline, statementGenerators );\n\t\t}\n\t\tc = element.end;\n\t});\n\n\tcode.remove( c, node.end );\n}\n\nfunction destructureObjectPattern ( code, scope, node, ref, inline, statementGenerators ) {\n\tlet c = node.start;\n\n\tconst nonRestKeys = [];\n\tnode.properties.forEach( prop => {\n\t\tlet value;\n\t\tlet content\n\t\tif (prop.type === \"Property\") {\n\t\t\tconst isComputedKey = prop.computed || prop.key.type !== 'Identifier'\n\t\t\tconst key = isComputedKey ? code.slice(prop.key.start, prop.key.end) : prop.key.name\n\t\t\tvalue = isComputedKey ? `${ref}[${key}]` : `${ref}.${key}`;\n\t\t\tcontent = prop.value;\n\t\t\tnonRestKeys.push(isComputedKey ? key : '\"' + key + '\"')\n\t\t} else if (prop.type === \"RestElement\") {\n\t\t\tcontent = prop.argument\n\t\t\tvalue = scope.createIdentifier( 'rest' );\n\t\t\tconst n = scope.createIdentifier( 'n' );\n\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tcode.overwrite(prop.start, c = prop.argument.start, `${prefix}var ${value} = {}; for (var ${n} in ${ref}) if([${nonRestKeys.join(\", \")}].indexOf(${n}) === -1) ${value}[${n}] = ${ref}[${n}]${suffix}`)\n\t\t\t\tcode.move(prop.start, c, start)\n\t\t\t} );\n\t\t} else {\n\t\t\tthrow new CompileError( this, `Unexpected node of type ${prop.type} in object pattern`)\n\t\t}\n\t\thandleProperty( code, scope, c, content, value, inline, statementGenerators );\n\t\tc = prop.end;\n\t});\n\n\tcode.remove( c, node.end );\n}\n\nfunction handleProperty ( code, scope, c, node, value, inline, statementGenerators ) {\n\tswitch ( node.type ) {\n\t\tcase 'Identifier': {\n\t\t\tcode.remove( c, node.start );\n\t\t\tdestructureIdentifier( code, scope, node, value, inline, statementGenerators );\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'AssignmentPattern': {\n\t\t\tlet name;\n\n\t\t\tconst isIdentifier = node.left.type === 'Identifier';\n\n\t\t\tif ( isIdentifier ) {\n\t\t\t\tname = node.left.name;\n\t\t\t\tconst declaration = scope.findDeclaration( name );\n\t\t\t\tif ( declaration ) name = declaration.name;\n\t\t\t} else {\n\t\t\t\tname = scope.createIdentifier( value );\n\t\t\t}\n\n\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tif ( inline ) {\n\t\t\t\t\tcode.prependRight( node.right.start, `${name} = ${value} === undefined ? ` );\n\t\t\t\t\tcode.appendLeft( node.right.end, ` : ${value}` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.prependRight( node.right.start, `${prefix}var ${name} = ${value}; if ( ${name} === void 0 ) ${name} = ` );\n\t\t\t\t\tcode.appendLeft( node.right.end, suffix );\n\t\t\t\t}\n\n\t\t\t\tcode.move( node.right.start, node.right.end, start );\n\t\t\t});\n\n\t\t\tif ( isIdentifier ) {\n\t\t\t\tcode.remove( c, node.right.start );\n\t\t\t} else {\n\t\t\t\tcode.remove( c, node.left.start );\n\t\t\t\tcode.remove( node.left.end, node.right.start );\n\t\t\t\thandleProperty( code, scope, c, node.left, name, inline, statementGenerators );\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'ObjectPattern': {\n\t\t\tcode.remove( c, c = node.start );\n\n\t\t\tlet ref = value;\n\t\t\tif ( node.properties.length > 1 ) {\n\t\t\t\tref = scope.createIdentifier( value );\n\n\t\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t// this feels a tiny bit hacky, but we can't do a\n\t\t\t\t\t// straightforward appendLeft and keep correct order...\n\t\t\t\t\tcode.prependRight( node.start, `${prefix}var ${ref} = ` );\n\t\t\t\t\tcode.overwrite( node.start, c = node.start + 1, value );\n\t\t\t\t\tcode.appendLeft( c, suffix );\n\n\t\t\t\t\tcode.overwrite( node.start, c = node.start + 1, `${prefix}var ${ref} = ${value}${suffix}` );\n\t\t\t\t\tcode.move( node.start, c, start );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdestructureObjectPattern( code, scope, node, ref, inline, statementGenerators );\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'ArrayPattern': {\n\t\t\tcode.remove( c, c = node.start );\n\n\t\t\tif ( node.elements.filter( Boolean ).length > 1 ) {\n\t\t\t\tconst ref = scope.createIdentifier( value );\n\n\t\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\tcode.prependRight( node.start, `${prefix}var ${ref} = ` );\n\t\t\t\t\tcode.overwrite( node.start, c = node.start + 1, value, { contentOnly: true });\n\t\t\t\t\tcode.appendLeft( c, suffix );\n\n\t\t\t\t\tcode.move( node.start, c, start );\n\t\t\t\t});\n\n\t\t\t\tnode.elements.forEach( ( element, i ) => {\n\t\t\t\t\tif ( !element ) return;\n\n\t\t\t\t\tif ( element.type === 'RestElement' ) {\n\t\t\t\t\t\thandleProperty( code, scope, c, element.argument, `${ref}.slice(${i})`, inline, statementGenerators );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleProperty( code, scope, c, element, `${ref}[${i}]`, inline, statementGenerators );\n\t\t\t\t\t}\n\t\t\t\t\tc = element.end;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst index = findIndex( node.elements, Boolean );\n\t\t\t\tconst element = node.elements[ index ];\n\t\t\t\tif ( element.type === 'RestElement' ) {\n\t\t\t\t\thandleProperty( code, scope, c, element.argument, `${value}.slice(${index})`, inline, statementGenerators );\n\t\t\t\t} else {\n\t\t\t\t\thandleProperty( code, scope, c, element, `${value}[${index}]`, inline, statementGenerators );\n\t\t\t\t}\n\t\t\t\tc = element.end;\n\t\t\t}\n\n\t\t\tcode.remove( c, node.end );\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tthrow new Error( `Unexpected node type in destructuring (${node.type})` );\n\t\t}\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport CompileError from '../../utils/CompileError.js';\nimport destructure from '../../utils/destructure.js';\n\nexport default class ForOfStatement extends LoopStatement {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.forOf && !transforms.dangerousForOf ) throw new CompileError( 'for...of statements are not supported. Use `transforms: { forOf: false }` to skip transformation and disable this error, or `transforms: { dangerousForOf: true }` if you know what you\\'re doing', this );\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\t\tif ( !transforms.dangerousForOf ) return;\n\n\t\t// edge case (#80)\n\t\tif ( !this.body.body[0] ) {\n\t\t\tif ( this.left.type === 'VariableDeclaration' && this.left.kind === 'var' ) {\n\t\t\t\tcode.remove( this.start, this.left.start );\n\t\t\t\tcode.appendLeft( this.left.end, ';' );\n\t\t\t\tcode.remove( this.left.end, this.end );\n\t\t\t} else {\n\t\t\t\tcode.remove( this.start, this.end );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = this.findScope( true );\n\t\tconst i0 = this.getIndentation();\n\t\tconst i1 = i0 + code.getIndentString();\n\n\t\tconst key = scope.createIdentifier( 'i' );\n\t\tconst list = scope.createIdentifier( 'list' );\n\n\t\tif ( this.body.synthetic ) {\n\t\t\tcode.prependRight( this.left.start, `{\\n${i1}` );\n\t\t\tcode.appendLeft( this.body.body[0].end, `\\n${i0}}` );\n\t\t}\n\n\t\tconst bodyStart = this.body.body[0].start;\n\n\t\tcode.remove( this.left.end, this.right.start );\n\t\tcode.move( this.left.start, this.left.end, bodyStart );\n\n\n\t\tcode.prependRight( this.right.start, `var ${key} = 0, ${list} = ` );\n\t\tcode.appendLeft( this.right.end, `; ${key} < ${list}.length; ${key} += 1` );\n\n\t\t// destructuring. TODO non declaration destructuring\n\t\tconst declarator = this.left.type === 'VariableDeclaration' && this.left.declarations[0];\n\t\tif ( declarator && declarator.id.type !== 'Identifier' ) {\n\t\t\tlet statementGenerators = [];\n\t\t\tconst ref = scope.createIdentifier( 'ref' );\n\t\t\tdestructure( code, scope, declarator.id, ref, false, statementGenerators );\n\n\t\t\tlet suffix = `;\\n${i1}`;\n\t\t\tstatementGenerators.forEach( ( fn, i ) => {\n\t\t\t\tif ( i === statementGenerators.length - 1 ) {\n\t\t\t\t\tsuffix = `;\\n\\n${i1}`;\n\t\t\t\t}\n\n\t\t\t\tfn( bodyStart, '', suffix );\n\t\t\t});\n\n\t\t\tcode.appendLeft( this.left.start + this.left.kind.length + 1, ref );\n\t\t\tcode.appendLeft( this.left.end, ` = ${list}[${key}];\\n${i1}` );\n\t\t} else {\n\t\t\tcode.appendLeft( this.left.end, ` = ${list}[${key}];\\n\\n${i1}` );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class FunctionDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.generator && transforms.generator ) {\n\t\t\tthrow new CompileError( 'Generators are not supported', this );\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tthis.findScope( true ).addDeclaration( this.id, 'function' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class FunctionExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.generator && transforms.generator ) {\n\t\t\tthrow new CompileError( 'Generators are not supported', this );\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tif ( this.id ) {\n\t\t\t// function expression IDs belong to the child scope...\n\t\t\tthis.body.scope.addDeclaration( this.id, 'function' );\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\n\t\tconst parent = this.parent;\n\t\tlet methodName;\n\n\t\tif ( transforms.conciseMethodProperty\n\t\t\t\t&& parent.type === 'Property'\n\t\t\t\t&& parent.kind === 'init'\n\t\t\t\t&& parent.method\n\t\t\t\t&& parent.key.type === 'Identifier' ) {\n\t\t\t// object literal concise method\n\t\t\tmethodName = parent.key.name;\n\t\t}\n\t\telse if ( transforms.classes\n\t\t\t\t&& parent.type === 'MethodDefinition'\n\t\t\t\t&& parent.kind === 'method'\n\t\t\t\t&& parent.key.type === 'Identifier' ) {\n\t\t\t// method definition in a class\n\t\t\tmethodName = parent.key.name;\n\t\t}\n\t\telse if ( this.id && this.id.type === 'Identifier' ) {\n\t\t\t// naked function expression\n\t\t\tmethodName = this.id.alias || this.id.name;\n\t\t}\n\n\t\tif ( methodName ) {\n\t\t\tfor ( const param of this.params ) {\n\t\t\t\tif ( param.type === 'Identifier' && methodName === param.name ) {\n\t\t\t\t\t// workaround for Safari 9/WebKit bug:\n\t\t\t\t\t// https://gitlab.com/Rich-Harris/buble/issues/154\n\t\t\t\t\t// change parameter name when same as method name\n\n\t\t\t\t\tconst scope = this.body.scope;\n\t\t\t\t\tconst declaration = scope.declarations[ methodName ];\n\n\t\t\t\t\tconst alias = scope.createIdentifier( methodName );\n\t\t\t\t\tparam.alias = alias;\n\n\t\t\t\t\tfor ( const identifier of declaration.instances ) {\n\t\t\t\t\t\tidentifier.alias = alias;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","export default function isReference ( node, parent ) {\n\tif ( node.type === 'MemberExpression' ) {\n\t\treturn !node.computed && isReference( node.object, node );\n\t}\n\n\tif ( node.type === 'Identifier' ) {\n\t\t// the only time we could have an identifier node without a parent is\n\t\t// if it's the entire body of a function without a block statement –\n\t\t// i.e. an arrow function expression like `a => a`\n\t\tif ( !parent ) return true;\n\n\t\tif ( /(Function|Class)Expression/.test( parent.type ) ) return false;\n\n\t\tif ( parent.type === 'VariableDeclarator' ) return node === parent.init;\n\n\t\t// TODO is this right?\n\t\tif ( parent.type === 'MemberExpression' || parent.type === 'MethodDefinition' ) {\n\t\t\treturn parent.computed || node === parent.object;\n\t\t}\n\n\t\tif ( parent.type === 'ArrayPattern' ) return false;\n\n\t\t// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\t\tif ( parent.type === 'Property' ) {\n\t\t\tif ( parent.parent.type === 'ObjectPattern' ) return false;\n\t\t\treturn parent.computed || node === parent.value;\n\t\t}\n\n\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\tif ( parent.type === 'MethodDefinition' ) return false;\n\n\t\t// disregard the `bar` in `export { foo as bar }`\n\t\tif ( parent.type === 'ExportSpecifier' && node !== parent.local ) return false;\n\n\t\treturn true;\n\t}\n}\n","import Node from '../Node.js';\nimport isReference from '../../utils/isReference.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class Identifier extends Node {\n\tfindScope ( functionScope ) {\n\t\tif ( this.parent.params && ~this.parent.params.indexOf( this ) ) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\tif ( this.parent.type === 'FunctionExpression' && this === this.parent.id ) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\treturn this.parent.findScope( functionScope\t);\n\t}\n\n\tinitialise ( transforms ) {\n\t\tif ( transforms.arrow && isReference( this, this.parent ) ) {\n\t\t\tif ( this.name === 'arguments' && !this.findScope( false ).contains( this.name ) ) {\n\t\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\t\tconst arrowFunction = this.findNearest( 'ArrowFunctionExpression' );\n\t\t\t\tconst loop = this.findNearest( loopStatement );\n\n\t\t\t\tif ( arrowFunction && arrowFunction.depth > lexicalBoundary.depth ) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\n\t\t\t\tif ( loop && loop.body.contains( this ) && loop.depth > lexicalBoundary.depth ) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.findScope( false ).addReference( this );\n\t\t}\n\t}\n\n\ttranspile ( code ) {\n\t\tif ( this.alias ) {\n\t\t\tcode.overwrite( this.start, this.end, this.alias, { storeName: true, contentOnly: true });\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class IfStatement extends Node {\n\tinitialise ( transforms ) {\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.consequent.type !== 'BlockStatement'\n\t\t\t\t|| this.consequent.type === 'BlockStatement' && this.consequent.synthetic ) {\n\t\t\tcode.appendLeft( this.consequent.start, '{ ' );\n\t\t\tcode.prependRight( this.consequent.end, ' }' );\n\t\t}\n\n\t\tif ( this.alternate && this.alternate.type !== 'IfStatement' && (\n\t\t\t\tthis.alternate.type !== 'BlockStatement'\n\t\t\t\t|| this.alternate.type === 'BlockStatement' && this.alternate.synthetic ) ) {\n\t\t\tcode.appendLeft( this.alternate.start, '{ ' );\n\t\t\tcode.prependRight( this.alternate.end, ' }' );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ImportDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.moduleImport ) throw new CompileError( 'import is not supported', this );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportDefaultSpecifier extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.findScope( true ).addDeclaration( this.local, 'import' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportSpecifier extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.findScope( true ).addDeclaration( this.local, 'import' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nconst hasDashes = val => /-/.test(val);\n\nconst formatKey = key => hasDashes(key) ? `'${key}'` : key;\n\nconst formatVal = val => val ? '' : 'true';\n\nexport default class JSXAttribute extends Node {\n\ttranspile ( code, transforms ) {\n\t\tconst { start, name }\t= this.name;\n\n\t\t// Overwrite equals sign if value is present.\n\t\tconst end = this.value ? this.value.start : this.name.end;\n\n\t\tcode.overwrite( start, end, `${formatKey(name)}: ${formatVal(this.value)}` );\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nfunction containsNewLine ( node ) {\n\treturn node.type === 'Literal' && !/\\S/.test( node.value ) && /\\n/.test( node.value );\n}\n\nexport default class JSXClosingElement extends Node {\n\ttranspile ( code ) {\n\t\tlet spaceBeforeParen = true;\n\n\t\tconst lastChild = this.parent.children[ this.parent.children.length - 1 ];\n\n\t\t// omit space before closing paren if\n\t\t// a) this is on a separate line, or\n\t\t// b) there are no children but there are attributes\n\t\tif ( ( lastChild && containsNewLine( lastChild ) ) || ( this.parent.openingElement.attributes.length ) ) {\n\t\t\tspaceBeforeParen = false;\n\t\t}\n\n\t\tcode.overwrite( this.start, this.end, spaceBeforeParen ? ' )' : ')' );\n\t}\n}\n","import Node from '../Node.js';\n\nfunction normalise ( str, removeTrailingWhitespace ) {\n\tif ( removeTrailingWhitespace && /\\n/.test( str ) ) {\n\t\tstr = str.replace( /\\s+$/, '' );\n\t}\n\n\tstr = str\n\t\t.replace( /^\\n\\r?\\s+/, '' ) // remove leading newline + space\n\t\t.replace( /\\s*\\n\\r?\\s*/gm, ' ' ); // replace newlines with spaces\n\n\t// TODO prefer single quotes?\n\treturn JSON.stringify( str );\n}\n\nexport default class JSXElement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\n\t\tconst children = this.children.filter( child => {\n\t\t\tif ( child.type !== 'Literal' ) return true;\n\n\t\t\t// remove whitespace-only literals, unless on a single line\n\t\t\treturn /\\S/.test( child.value ) || !/\\n/.test( child.value );\n\t\t});\n\n\t\tif ( children.length ) {\n\t\t\tlet c = this.openingElement.end;\n\n\t\t\tlet i;\n\t\t\tfor ( i = 0; i < children.length; i += 1 ) {\n\t\t\t\tconst child = children[i];\n\n\t\t\t\tif ( child.type === 'JSXExpressionContainer' && child.expression.type === 'JSXEmptyExpression' ) {\n\t\t\t\t\t// empty block is a no op\n\t\t\t\t} else {\n\t\t\t\t\tconst tail = code.original[ c ] === '\\n' && child.type !== 'Literal' ? '' : ' ';\n\t\t\t\t\tcode.appendLeft( c, `,${tail}` );\n\t\t\t\t}\n\n\t\t\t\tif ( child.type === 'Literal' ) {\n\t\t\t\t\tconst str = normalise( child.value, i === children.length - 1 );\n\t\t\t\t\tcode.overwrite( child.start, child.end, str );\n\t\t\t\t}\n\n\t\t\t\tc = child.end;\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXExpressionContainer extends Node {\n\ttranspile ( code, transforms ) {\n\t\tcode.remove( this.start, this.expression.start );\n\t\tcode.remove( this.expression.end, this.end );\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class JSXOpeningElement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\n\t\tcode.overwrite( this.start, this.name.start, `${this.program.jsx}( ` );\n\n\t\tconst html = this.name.type === 'JSXIdentifier' && this.name.name[0] === this.name.name[0].toLowerCase();\n\t\tif ( html ) code.prependRight( this.name.start, `'` );\n\n\t\tconst len = this.attributes.length;\n\t\tlet c = this.name.end;\n\n\t\tif ( len ) {\n\t\t\tlet i;\n\n\t\t\tlet hasSpread = false;\n\t\t\tfor ( i = 0; i < len; i += 1 ) {\n\t\t\t\tif ( this.attributes[i].type === 'JSXSpreadAttribute' ) {\n\t\t\t\t\thasSpread = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc = this.attributes[0].end;\n\n\t\t\tfor ( i = 0; i < len; i += 1 ) {\n\t\t\t\tconst attr = this.attributes[i];\n\n\t\t\t\tif ( i > 0 ) {\n\t\t\t\t\tif ( attr.start === c )\n\t\t\t\t\t\tcode.prependRight( c, ', ' );\n\t\t\t\t\telse\n\t\t\t\t\t\tcode.overwrite( c, attr.start, ', ' );\n\t\t\t\t}\n\n\t\t\t\tif ( hasSpread && attr.type !== 'JSXSpreadAttribute' ) {\n\t\t\t\t\tconst lastAttr = this.attributes[ i - 1 ];\n\t\t\t\t\tconst nextAttr = this.attributes[ i + 1 ];\n\n\t\t\t\t\tif ( !lastAttr || lastAttr.type === 'JSXSpreadAttribute' ) {\n\t\t\t\t\t\tcode.prependRight( attr.start, '{ ' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !nextAttr || nextAttr.type === 'JSXSpreadAttribute' ) {\n\t\t\t\t\t\tcode.appendLeft( attr.end, ' }' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tc = attr.end;\n\t\t\t}\n\n\t\t\tlet after;\n\t\t\tlet before;\n\t\t\tif ( hasSpread ) {\n\t\t\t\tif ( len === 1 ) {\n\t\t\t\t\tbefore = html ? `',` : ',';\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.program.options.objectAssign) {\n\t\t\t\t\t\tthrow new CompileError( 'Mixed JSX attributes ending in spread requires specified objectAssign option with \\'Object.assign\\' or polyfill helper.', this );\n\t\t\t\t\t}\n\t\t\t\t\tbefore = html ? `', ${this.program.options.objectAssign}({},` : `, ${this.program.options.objectAssign}({},`;\n\t\t\t\t\tafter = ')';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbefore = html ? `', {` : ', {';\n\t\t\t\tafter = ' }';\n\t\t\t}\n\n\t\t\tcode.prependRight( this.name.end, before );\n\n\t\t\tif ( after ) {\n\t\t\t\tcode.appendLeft( this.attributes[ len - 1 ].end, after );\n\t\t\t}\n\t\t} else {\n\t\t\tcode.appendLeft( this.name.end, html ? `', null` : `, null` );\n\t\t\tc = this.name.end;\n\t\t}\n\n\t\tif ( this.selfClosing ) {\n\t\t\tcode.overwrite( c, this.end, this.attributes.length ? `)` : ` )` );\n\t\t} else {\n\t\t\tcode.remove( c, this.end );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXSpreadAttribute extends Node {\n\ttranspile ( code, transforms ) {\n\t\tcode.remove( this.start, this.argument.start );\n\t\tcode.remove( this.argument.end, this.end );\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","/*!\r\n * regjsgen 0.3.0\r\n * Copyright 2014-2016 Benjamin Tan <https://demoneaux.github.io/>\r\n * Available under MIT license <https://github.com/demoneaux/regjsgen/blob/master/LICENSE>\r\n */\r\n;(function() {\r\n 'use strict';\r\n\r\n // Used to determine if values are of the language type `Object`.\r\n var objectTypes = {\r\n 'function': true,\r\n 'object': true\r\n };\r\n\r\n // Used as a reference to the global object.\r\n var root = (objectTypes[typeof window] && window) || this;\r\n\r\n // Detect free variable `exports`.\r\n var freeExports = objectTypes[typeof exports] && exports;\r\n\r\n // Detect free variable `module`.\r\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\r\n\r\n // Detect free variable `global` from Node.js or Browserified code and use it as `root`.\r\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\r\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\r\n root = freeGlobal;\r\n }\r\n\r\n // Used to check objects for own properties.\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Generates strings based on the given code points.\r\n // Based on https://mths.be/fromcodepoint v0.2.0 by @mathias.\r\n var stringFromCharCode = String.fromCharCode;\r\n var floor = Math.floor;\r\n function fromCodePoint() {\r\n var MAX_SIZE = 0x4000;\r\n var codeUnits = [];\r\n var highSurrogate;\r\n var lowSurrogate;\r\n var index = -1;\r\n var length = arguments.length;\r\n if (!length) {\r\n return '';\r\n }\r\n var result = '';\r\n while (++index < length) {\r\n var codePoint = Number(arguments[index]);\r\n if (\r\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\r\n codePoint < 0 || // not a valid Unicode code point\r\n codePoint > 0x10FFFF || // not a valid Unicode code point\r\n floor(codePoint) != codePoint // not an integer\r\n ) {\r\n throw RangeError('Invalid code point: ' + codePoint);\r\n }\r\n if (codePoint <= 0xFFFF) {\r\n // BMP code point\r\n codeUnits.push(codePoint);\r\n } else {\r\n // Astral code point; split in surrogate halves\r\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\r\n codePoint -= 0x10000;\r\n highSurrogate = (codePoint >> 10) + 0xD800;\r\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\r\n codeUnits.push(highSurrogate, lowSurrogate);\r\n }\r\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\r\n result += stringFromCharCode.apply(null, codeUnits);\r\n codeUnits.length = 0;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Ensures that nodes have the correct types.\r\n var assertTypeRegexMap = {};\r\n function assertType(type, expected) {\r\n if (expected.indexOf('|') == -1) {\r\n if (type == expected) {\r\n return;\r\n }\r\n\r\n throw Error('Invalid node type: ' + type + '; expected type: ' + expected);\r\n }\r\n\r\n expected = hasOwnProperty.call(assertTypeRegexMap, expected)\r\n ? assertTypeRegexMap[expected]\r\n : (assertTypeRegexMap[expected] = RegExp('^(?:' + expected + ')$'));\r\n\r\n if (expected.test(type)) {\r\n return;\r\n }\r\n\r\n throw Error('Invalid node type: ' + type + '; expected types: ' + expected);\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Generates a regular expression string based on an AST.\r\n function generate(node) {\r\n var type = node.type;\r\n\r\n if (hasOwnProperty.call(generators, type)) {\r\n return generators[type](node);\r\n }\r\n\r\n throw Error('Invalid node type: ' + type);\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n function generateAlternative(node) {\r\n assertType(node.type, 'alternative');\r\n\r\n var terms = node.body,\r\n i = -1,\r\n length = terms.length,\r\n result = '';\r\n\r\n while (++i < length) {\r\n result += generateTerm(terms[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function generateAnchor(node) {\r\n assertType(node.type, 'anchor');\r\n\r\n switch (node.kind) {\r\n case 'start':\r\n return '^';\r\n case 'end':\r\n return '$';\r\n case 'boundary':\r\n return '\\\\b';\r\n case 'not-boundary':\r\n return '\\\\B';\r\n default:\r\n throw Error('Invalid assertion');\r\n }\r\n }\r\n\r\n function generateAtom(node) {\r\n assertType(node.type, 'anchor|characterClass|characterClassEscape|dot|group|reference|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateCharacterClass(node) {\r\n assertType(node.type, 'characterClass');\r\n\r\n var classRanges = node.body,\r\n i = -1,\r\n length = classRanges.length,\r\n result = '';\r\n\r\n if (node.negative) {\r\n result += '^';\r\n }\r\n\r\n while (++i < length) {\r\n result += generateClassAtom(classRanges[i]);\r\n }\r\n\r\n return '[' + result + ']';\r\n }\r\n\r\n function generateCharacterClassEscape(node) {\r\n assertType(node.type, 'characterClassEscape');\r\n\r\n return '\\\\' + node.value;\r\n }\r\n\r\n function generateUnicodePropertyEscape(node) {\r\n assertType(node.type, 'unicodePropertyEscape');\r\n\r\n return '\\\\' + (node.negative ? 'P' : 'p') + '{' + node.value + '}';\r\n }\r\n\r\n function generateCharacterClassRange(node) {\r\n assertType(node.type, 'characterClassRange');\r\n\r\n var min = node.min,\r\n max = node.max;\r\n\r\n if (min.type == 'characterClassRange' || max.type == 'characterClassRange') {\r\n throw Error('Invalid character class range');\r\n }\r\n\r\n return generateClassAtom(min) + '-' + generateClassAtom(max);\r\n }\r\n\r\n function generateClassAtom(node) {\r\n assertType(node.type, 'anchor|characterClassEscape|characterClassRange|dot|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateDisjunction(node) {\r\n assertType(node.type, 'disjunction');\r\n\r\n var body = node.body,\r\n i = -1,\r\n length = body.length,\r\n result = '';\r\n\r\n while (++i < length) {\r\n if (i != 0) {\r\n result += '|';\r\n }\r\n result += generate(body[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function generateDot(node) {\r\n assertType(node.type, 'dot');\r\n\r\n return '.';\r\n }\r\n\r\n function generateGroup(node) {\r\n assertType(node.type, 'group');\r\n\r\n var result = '';\r\n\r\n switch (node.behavior) {\r\n case 'normal':\r\n break;\r\n case 'ignore':\r\n result += '?:';\r\n break;\r\n case 'lookahead':\r\n result += '?=';\r\n break;\r\n case 'negativeLookahead':\r\n result += '?!';\r\n break;\r\n default:\r\n throw Error('Invalid behaviour: ' + node.behaviour);\r\n }\r\n\r\n var body = node.body,\r\n i = -1,\r\n length = body.length;\r\n\r\n while (++i < length) {\r\n result += generate(body[i]);\r\n }\r\n\r\n return '(' + result + ')';\r\n }\r\n\r\n function generateQuantifier(node) {\r\n assertType(node.type, 'quantifier');\r\n\r\n var quantifier = '',\r\n min = node.min,\r\n max = node.max;\r\n\r\n if (max == null) {\r\n if (min == 0) {\r\n quantifier = '*';\r\n } else if (min == 1) {\r\n quantifier = '+';\r\n } else {\r\n quantifier = '{' + min + ',}';\r\n }\r\n } else if (min == max) {\r\n quantifier = '{' + min + '}';\r\n } else if (min == 0 && max == 1) {\r\n quantifier = '?';\r\n } else {\r\n quantifier = '{' + min + ',' + max + '}';\r\n }\r\n\r\n if (!node.greedy) {\r\n quantifier += '?';\r\n }\r\n\r\n return generateAtom(node.body[0]) + quantifier;\r\n }\r\n\r\n function generateReference(node) {\r\n assertType(node.type, 'reference');\r\n\r\n return '\\\\' + node.matchIndex;\r\n }\r\n\r\n function generateTerm(node) {\r\n assertType(node.type, 'anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|unicodePropertyEscape|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateValue(node) {\r\n assertType(node.type, 'value');\r\n\r\n var kind = node.kind,\r\n codePoint = node.codePoint;\r\n\r\n switch (kind) {\r\n case 'controlLetter':\r\n return '\\\\c' + fromCodePoint(codePoint + 64);\r\n case 'hexadecimalEscape':\r\n return '\\\\x' + ('00' + codePoint.toString(16).toUpperCase()).slice(-2);\r\n case 'identifier':\r\n return '\\\\' + fromCodePoint(codePoint);\r\n case 'null':\r\n return '\\\\' + codePoint;\r\n case 'octal':\r\n return '\\\\' + codePoint.toString(8);\r\n case 'singleEscape':\r\n switch (codePoint) {\r\n case 0x0008:\r\n return '\\\\b';\r\n case 0x0009:\r\n return '\\\\t';\r\n case 0x000A:\r\n return '\\\\n';\r\n case 0x000B:\r\n return '\\\\v';\r\n case 0x000C:\r\n return '\\\\f';\r\n case 0x000D:\r\n return '\\\\r';\r\n default:\r\n throw Error('Invalid codepoint: ' + codePoint);\r\n }\r\n case 'symbol':\r\n return fromCodePoint(codePoint);\r\n case 'unicodeEscape':\r\n return '\\\\u' + ('0000' + codePoint.toString(16).toUpperCase()).slice(-4);\r\n case 'unicodeCodePointEscape':\r\n return '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\r\n default:\r\n throw Error('Unsupported node kind: ' + kind);\r\n }\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Used to generate strings for each node type.\r\n var generators = {\r\n 'alternative': generateAlternative,\r\n 'anchor': generateAnchor,\r\n 'characterClass': generateCharacterClass,\r\n 'characterClassEscape': generateCharacterClassEscape,\r\n 'characterClassRange': generateCharacterClassRange,\r\n 'unicodePropertyEscape': generateUnicodePropertyEscape,\r\n 'disjunction': generateDisjunction,\r\n 'dot': generateDot,\r\n 'group': generateGroup,\r\n 'quantifier': generateQuantifier,\r\n 'reference': generateReference,\r\n 'value': generateValue\r\n };\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Export regjsgen.\r\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\r\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\r\n // Define as an anonymous module so it can be aliased through path mapping.\r\n define(function() {\r\n return {\r\n 'generate': generate\r\n };\r\n });\r\n }\r\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\r\n else if (freeExports && freeModule) {\r\n // Export for CommonJS support.\r\n freeExports.generate = generate;\r\n }\r\n else {\r\n // Export to the global object.\r\n root.regjsgen = {\r\n 'generate': generate\r\n };\r\n }\r\n}.call(this));\r\n","// regjsparser\n//\n// ==================================================================\n//\n// See ECMA-262 Standard: 15.10.1\n//\n// NOTE: The ECMA-262 standard uses the term \"Assertion\" for /^/. Here the\n// term \"Anchor\" is used.\n//\n// Pattern ::\n// Disjunction\n//\n// Disjunction ::\n// Alternative\n// Alternative | Disjunction\n//\n// Alternative ::\n// [empty]\n// Alternative Term\n//\n// Term ::\n// Anchor\n// Atom\n// Atom Quantifier\n//\n// Anchor ::\n// ^\n// $\n// \\ b\n// \\ B\n// ( ? = Disjunction )\n// ( ? ! Disjunction )\n//\n// Quantifier ::\n// QuantifierPrefix\n// QuantifierPrefix ?\n//\n// QuantifierPrefix ::\n// *\n// +\n// ?\n// { DecimalDigits }\n// { DecimalDigits , }\n// { DecimalDigits , DecimalDigits }\n//\n// Atom ::\n// PatternCharacter\n// .\n// \\ AtomEscape\n// CharacterClass\n// ( Disjunction )\n// ( ? : Disjunction )\n//\n// PatternCharacter ::\n// SourceCharacter but not any of: ^ $ \\ . * + ? ( ) [ ] { } |\n//\n// AtomEscape ::\n// DecimalEscape\n// CharacterEscape\n// CharacterClassEscape\n//\n// CharacterEscape[U] ::\n// ControlEscape\n// c ControlLetter\n// HexEscapeSequence\n// RegExpUnicodeEscapeSequence[?U] (ES6)\n// IdentityEscape[?U]\n//\n// ControlEscape ::\n// one of f n r t v\n// ControlLetter ::\n// one of\n// a b c d e f g h i j k l m n o p q r s t u v w x y z\n// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n//\n// IdentityEscape ::\n// SourceCharacter but not IdentifierPart\n// <ZWJ>\n// <ZWNJ>\n//\n// DecimalEscape ::\n// DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n//\n// CharacterClassEscape ::\n// one of d D s S w W\n//\n// CharacterClass ::\n// [ [lookahead ∉ {^}] ClassRanges ]\n// [ ^ ClassRanges ]\n//\n// ClassRanges ::\n// [empty]\n// NonemptyClassRanges\n//\n// NonemptyClassRanges ::\n// ClassAtom\n// ClassAtom NonemptyClassRangesNoDash\n// ClassAtom - ClassAtom ClassRanges\n//\n// NonemptyClassRangesNoDash ::\n// ClassAtom\n// ClassAtomNoDash NonemptyClassRangesNoDash\n// ClassAtomNoDash - ClassAtom ClassRanges\n//\n// ClassAtom ::\n// -\n// ClassAtomNoDash\n//\n// ClassAtomNoDash ::\n// SourceCharacter but not one of \\ or ] or -\n// \\ ClassEscape\n//\n// ClassEscape ::\n// DecimalEscape\n// b\n// CharacterEscape\n// CharacterClassEscape\n\n(function() {\n\n function parse(str, flags, features) {\n if (!features) {\n features = {};\n }\n function addRaw(node) {\n node.raw = str.substring(node.range[0], node.range[1]);\n return node;\n }\n\n function updateRawStart(node, start) {\n node.range[0] = start;\n return addRaw(node);\n }\n\n function createAnchor(kind, rawLength) {\n return addRaw({\n type: 'anchor',\n kind: kind,\n range: [\n pos - rawLength,\n pos\n ]\n });\n }\n\n function createValue(kind, codePoint, from, to) {\n return addRaw({\n type: 'value',\n kind: kind,\n codePoint: codePoint,\n range: [from, to]\n });\n }\n\n function createEscaped(kind, codePoint, value, fromOffset) {\n fromOffset = fromOffset || 0;\n return createValue(kind, codePoint, pos - (value.length + fromOffset), pos);\n }\n\n function createCharacter(matches) {\n var _char = matches[0];\n var first = _char.charCodeAt(0);\n if (hasUnicodeFlag) {\n var second;\n if (_char.length === 1 && first >= 0xD800 && first <= 0xDBFF) {\n second = lookahead().charCodeAt(0);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n pos++;\n return createValue(\n 'symbol',\n (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000,\n pos - 2, pos);\n }\n }\n }\n return createValue('symbol', first, pos - 1, pos);\n }\n\n function createDisjunction(alternatives, from, to) {\n return addRaw({\n type: 'disjunction',\n body: alternatives,\n range: [\n from,\n to\n ]\n });\n }\n\n function createDot() {\n return addRaw({\n type: 'dot',\n range: [\n pos - 1,\n pos\n ]\n });\n }\n\n function createCharacterClassEscape(value) {\n return addRaw({\n type: 'characterClassEscape',\n value: value,\n range: [\n pos - 2,\n pos\n ]\n });\n }\n\n function createReference(matchIndex) {\n return addRaw({\n type: 'reference',\n matchIndex: parseInt(matchIndex, 10),\n range: [\n pos - 1 - matchIndex.length,\n pos\n ]\n });\n }\n\n function createGroup(behavior, disjunction, from, to) {\n return addRaw({\n type: 'group',\n behavior: behavior,\n body: disjunction,\n range: [\n from,\n to\n ]\n });\n }\n\n function createQuantifier(min, max, from, to) {\n if (to == null) {\n from = pos - 1;\n to = pos;\n }\n\n return addRaw({\n type: 'quantifier',\n min: min,\n max: max,\n greedy: true,\n body: null, // set later on\n range: [\n from,\n to\n ]\n });\n }\n\n function createAlternative(terms, from, to) {\n return addRaw({\n type: 'alternative',\n body: terms,\n range: [\n from,\n to\n ]\n });\n }\n\n function createCharacterClass(classRanges, negative, from, to) {\n return addRaw({\n type: 'characterClass',\n body: classRanges,\n negative: negative,\n range: [\n from,\n to\n ]\n });\n }\n\n function createClassRange(min, max, from, to) {\n // See 15.10.2.15:\n if (min.codePoint > max.codePoint) {\n bail('invalid range in character class', min.raw + '-' + max.raw, from, to);\n }\n\n return addRaw({\n type: 'characterClassRange',\n min: min,\n max: max,\n range: [\n from,\n to\n ]\n });\n }\n\n function flattenBody(body) {\n if (body.type === 'alternative') {\n return body.body;\n } else {\n return [body];\n }\n }\n\n function isEmpty(obj) {\n return obj.type === 'empty';\n }\n\n function incr(amount) {\n amount = (amount || 1);\n var res = str.substring(pos, pos + amount);\n pos += (amount || 1);\n return res;\n }\n\n function skip(value) {\n if (!match(value)) {\n bail('character', value);\n }\n }\n\n function match(value) {\n if (str.indexOf(value, pos) === pos) {\n return incr(value.length);\n }\n }\n\n function lookahead() {\n return str[pos];\n }\n\n function current(value) {\n return str.indexOf(value, pos) === pos;\n }\n\n function next(value) {\n return str[pos + 1] === value;\n }\n\n function matchReg(regExp) {\n var subStr = str.substring(pos);\n var res = subStr.match(regExp);\n if (res) {\n res.range = [];\n res.range[0] = pos;\n incr(res[0].length);\n res.range[1] = pos;\n }\n return res;\n }\n\n function parseDisjunction() {\n // Disjunction ::\n // Alternative\n // Alternative | Disjunction\n var res = [], from = pos;\n res.push(parseAlternative());\n\n while (match('|')) {\n res.push(parseAlternative());\n }\n\n if (res.length === 1) {\n return res[0];\n }\n\n return createDisjunction(res, from, pos);\n }\n\n function parseAlternative() {\n var res = [], from = pos;\n var term;\n\n // Alternative ::\n // [empty]\n // Alternative Term\n while (term = parseTerm()) {\n res.push(term);\n }\n\n if (res.length === 1) {\n return res[0];\n }\n\n return createAlternative(res, from, pos);\n }\n\n function parseTerm() {\n // Term ::\n // Anchor\n // Atom\n // Atom Quantifier\n\n if (pos >= str.length || current('|') || current(')')) {\n return null; /* Means: The term is empty */\n }\n\n var anchor = parseAnchor();\n\n if (anchor) {\n return anchor;\n }\n\n var atom = parseAtom();\n if (!atom) {\n bail('Expected atom');\n }\n var quantifier = parseQuantifier() || false;\n if (quantifier) {\n quantifier.body = flattenBody(atom);\n // The quantifier contains the atom. Therefore, the beginning of the\n // quantifier range is given by the beginning of the atom.\n updateRawStart(quantifier, atom.range[0]);\n return quantifier;\n }\n return atom;\n }\n\n function parseGroup(matchA, typeA, matchB, typeB) {\n var type = null, from = pos;\n\n if (match(matchA)) {\n type = typeA;\n } else if (match(matchB)) {\n type = typeB;\n } else {\n return false;\n }\n\n var body = parseDisjunction();\n if (!body) {\n bail('Expected disjunction');\n }\n skip(')');\n var group = createGroup(type, flattenBody(body), from, pos);\n\n if (type == 'normal') {\n // Keep track of the number of closed groups. This is required for\n // parseDecimalEscape(). In case the string is parsed a second time the\n // value already holds the total count and no incrementation is required.\n if (firstIteration) {\n closedCaptureCounter++;\n }\n }\n return group;\n }\n\n function parseAnchor() {\n // Anchor ::\n // ^\n // $\n // \\ b\n // \\ B\n // ( ? = Disjunction )\n // ( ? ! Disjunction )\n var res, from = pos;\n\n if (match('^')) {\n return createAnchor('start', 1 /* rawLength */);\n } else if (match('$')) {\n return createAnchor('end', 1 /* rawLength */);\n } else if (match('\\\\b')) {\n return createAnchor('boundary', 2 /* rawLength */);\n } else if (match('\\\\B')) {\n return createAnchor('not-boundary', 2 /* rawLength */);\n } else {\n return parseGroup('(?=', 'lookahead', '(?!', 'negativeLookahead');\n }\n }\n\n function parseQuantifier() {\n // Quantifier ::\n // QuantifierPrefix\n // QuantifierPrefix ?\n //\n // QuantifierPrefix ::\n // *\n // +\n // ?\n // { DecimalDigits }\n // { DecimalDigits , }\n // { DecimalDigits , DecimalDigits }\n\n var res, from = pos;\n var quantifier;\n var min, max;\n\n if (match('*')) {\n quantifier = createQuantifier(0);\n }\n else if (match('+')) {\n quantifier = createQuantifier(1);\n }\n else if (match('?')) {\n quantifier = createQuantifier(0, 1);\n }\n else if (res = matchReg(/^\\{([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, min, res.range[0], res.range[1]);\n }\n else if (res = matchReg(/^\\{([0-9]+),\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, undefined, res.range[0], res.range[1]);\n }\n else if (res = matchReg(/^\\{([0-9]+),([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n max = parseInt(res[2], 10);\n if (min > max) {\n bail('numbers out of order in {} quantifier', '', from, pos);\n }\n quantifier = createQuantifier(min, max, res.range[0], res.range[1]);\n }\n\n if (quantifier) {\n if (match('?')) {\n quantifier.greedy = false;\n quantifier.range[1] += 1;\n }\n }\n\n return quantifier;\n }\n\n function parseAtom() {\n // Atom ::\n // PatternCharacter\n // .\n // \\ AtomEscape\n // CharacterClass\n // ( Disjunction )\n // ( ? : Disjunction )\n\n var res;\n\n // jviereck: allow ']', '}' here as well to be compatible with browser's\n // implementations: ']'.match(/]/);\n // if (res = matchReg(/^[^^$\\\\.*+?()[\\]{}|]/)) {\n if (res = matchReg(/^[^^$\\\\.*+?(){[|]/)) {\n // PatternCharacter\n return createCharacter(res);\n }\n else if (match('.')) {\n // .\n return createDot();\n }\n else if (match('\\\\')) {\n // \\ AtomEscape\n res = parseAtomEscape();\n if (!res) {\n bail('atomEscape');\n }\n return res;\n }\n else if (res = parseCharacterClass()) {\n return res;\n }\n else {\n // ( Disjunction )\n // ( ? : Disjunction )\n return parseGroup('(?:', 'ignore', '(', 'normal');\n }\n }\n\n function parseUnicodeSurrogatePairEscape(firstEscape) {\n if (hasUnicodeFlag) {\n var first, second;\n if (firstEscape.kind == 'unicodeEscape' &&\n (first = firstEscape.codePoint) >= 0xD800 && first <= 0xDBFF &&\n current('\\\\') && next('u') ) {\n var prevPos = pos;\n pos++;\n var secondEscape = parseClassEscape();\n if (secondEscape.kind == 'unicodeEscape' &&\n (second = secondEscape.codePoint) >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n firstEscape.range[1] = secondEscape.range[1];\n firstEscape.codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n firstEscape.type = 'value';\n firstEscape.kind = 'unicodeCodePointEscape';\n addRaw(firstEscape);\n }\n else {\n pos = prevPos;\n }\n }\n }\n return firstEscape;\n }\n\n function parseClassEscape() {\n return parseAtomEscape(true);\n }\n\n function parseAtomEscape(insideCharacterClass) {\n // AtomEscape ::\n // DecimalEscape\n // CharacterEscape\n // CharacterClassEscape\n\n var res, from = pos;\n\n res = parseDecimalEscape();\n if (res) {\n return res;\n }\n\n // For ClassEscape\n if (insideCharacterClass) {\n if (match('b')) {\n // 15.10.2.19\n // The production ClassEscape :: b evaluates by returning the\n // CharSet containing the one character <BS> (Unicode value 0008).\n return createEscaped('singleEscape', 0x0008, '\\\\b');\n } else if (match('B')) {\n bail('\\\\B not possible inside of CharacterClass', '', from);\n }\n }\n\n res = parseCharacterEscape();\n\n return res;\n }\n\n\n function parseDecimalEscape() {\n // DecimalEscape ::\n // DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n // CharacterClassEscape :: one of d D s S w W\n\n var res, match;\n\n if (res = matchReg(/^(?!0)\\d+/)) {\n match = res[0];\n var refIdx = parseInt(res[0], 10);\n if (refIdx <= closedCaptureCounter) {\n // If the number is smaller than the normal-groups found so\n // far, then it is a reference...\n return createReference(res[0]);\n } else {\n // ... otherwise it needs to be interpreted as a octal (if the\n // number is in an octal format). If it is NOT octal format,\n // then the slash is ignored and the number is matched later\n // as normal characters.\n\n // Recall the negative decision to decide if the input must be parsed\n // a second time with the total normal-groups.\n backrefDenied.push(refIdx);\n\n // Reset the position again, as maybe only parts of the previous\n // matched numbers are actual octal numbers. E.g. in '019' only\n // the '01' should be matched.\n incr(-res[0].length);\n if (res = matchReg(/^[0-7]{1,3}/)) {\n return createEscaped('octal', parseInt(res[0], 8), res[0], 1);\n } else {\n // If we end up here, we have a case like /\\91/. Then the\n // first slash is to be ignored and the 9 & 1 to be treated\n // like ordinary characters. Create a character for the\n // first number only here - other number-characters\n // (if available) will be matched later.\n res = createCharacter(matchReg(/^[89]/));\n return updateRawStart(res, res.range[0] - 1);\n }\n }\n }\n // Only allow octal numbers in the following. All matched numbers start\n // with a zero (if the do not, the previous if-branch is executed).\n // If the number is not octal format and starts with zero (e.g. `091`)\n // then only the zeros `0` is treated here and the `91` are ordinary\n // characters.\n // Example:\n // /\\091/.exec('\\091')[0].length === 3\n else if (res = matchReg(/^[0-7]{1,3}/)) {\n match = res[0];\n if (/^0{1,3}$/.test(match)) {\n // If they are all zeros, then only take the first one.\n return createEscaped('null', 0x0000, '0', match.length + 1);\n } else {\n return createEscaped('octal', parseInt(match, 8), match, 1);\n }\n } else if (res = matchReg(/^[dDsSwW]/)) {\n return createCharacterClassEscape(res[0]);\n }\n return false;\n }\n\n function parseCharacterEscape() {\n // CharacterEscape ::\n // ControlEscape\n // c ControlLetter\n // HexEscapeSequence\n // UnicodeEscapeSequence\n // IdentityEscape\n\n var res;\n if (res = matchReg(/^[fnrtv]/)) {\n // ControlEscape\n var codePoint = 0;\n switch (res[0]) {\n case 't': codePoint = 0x009; break;\n case 'n': codePoint = 0x00A; break;\n case 'v': codePoint = 0x00B; break;\n case 'f': codePoint = 0x00C; break;\n case 'r': codePoint = 0x00D; break;\n }\n return createEscaped('singleEscape', codePoint, '\\\\' + res[0]);\n } else if (res = matchReg(/^c([a-zA-Z])/)) {\n // c ControlLetter\n return createEscaped('controlLetter', res[1].charCodeAt(0) % 32, res[1], 2);\n } else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) {\n // HexEscapeSequence\n return createEscaped('hexadecimalEscape', parseInt(res[1], 16), res[1], 2);\n } else if (res = matchReg(/^u([0-9a-fA-F]{4})/)) {\n // UnicodeEscapeSequence\n return parseUnicodeSurrogatePairEscape(\n createEscaped('unicodeEscape', parseInt(res[1], 16), res[1], 2)\n );\n } else if (hasUnicodeFlag && (res = matchReg(/^u\\{([0-9a-fA-F]+)\\}/))) {\n // RegExpUnicodeEscapeSequence (ES6 Unicode code point escape)\n return createEscaped('unicodeCodePointEscape', parseInt(res[1], 16), res[1], 4);\n } else if (features.unicodePropertyEscape && hasUnicodeFlag && (res = matchReg(/^([pP])\\{([^\\}]+)\\}/))) {\n // https://github.com/jviereck/regjsparser/issues/77\n return addRaw({\n type: 'unicodePropertyEscape',\n negative: res[1] === 'P',\n value: res[2],\n range: [res.range[0] - 1, res.range[1]],\n raw: res[0]\n });\n } else {\n // IdentityEscape\n return parseIdentityEscape();\n }\n }\n\n // Taken from the Esprima parser.\n function isIdentifierPart(ch) {\n // Generated by `tools/generate-identifier-regex.js`.\n var NonAsciiIdentifierPart = new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\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\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\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\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]');\n\n return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch <= 122) || // a..z\n (ch >= 48 && ch <= 57) || // 0..9\n (ch === 92) || // \\ (backslash)\n ((ch >= 0x80) && NonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n }\n\n function parseIdentityEscape() {\n // IdentityEscape ::\n // SourceCharacter but not IdentifierPart\n // <ZWJ>\n // <ZWNJ>\n\n var ZWJ = '\\u200C';\n var ZWNJ = '\\u200D';\n\n var tmp;\n\n if (!isIdentifierPart(lookahead())) {\n tmp = incr();\n return createEscaped('identifier', tmp.charCodeAt(0), tmp, 1);\n }\n\n if (match(ZWJ)) {\n // <ZWJ>\n return createEscaped('identifier', 0x200C, ZWJ);\n } else if (match(ZWNJ)) {\n // <ZWNJ>\n return createEscaped('identifier', 0x200D, ZWNJ);\n }\n\n return null;\n }\n\n function parseCharacterClass() {\n // CharacterClass ::\n // [ [lookahead ∉ {^}] ClassRanges ]\n // [ ^ ClassRanges ]\n\n var res, from = pos;\n if (res = matchReg(/^\\[\\^/)) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, true, from, pos);\n } else if (match('[')) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, false, from, pos);\n }\n\n return null;\n }\n\n function parseClassRanges() {\n // ClassRanges ::\n // [empty]\n // NonemptyClassRanges\n\n var res;\n if (current(']')) {\n // Empty array means nothing insinde of the ClassRange.\n return [];\n } else {\n res = parseNonemptyClassRanges();\n if (!res) {\n bail('nonEmptyClassRanges');\n }\n return res;\n }\n }\n\n function parseHelperClassRanges(atom) {\n var from, to, res;\n if (current('-') && !next(']')) {\n // ClassAtom - ClassAtom ClassRanges\n skip('-');\n\n res = parseClassAtom();\n if (!res) {\n bail('classAtom');\n }\n to = pos;\n var classRanges = parseClassRanges();\n if (!classRanges) {\n bail('classRanges');\n }\n from = atom.range[0];\n if (classRanges.type === 'empty') {\n return [createClassRange(atom, res, from, to)];\n }\n return [createClassRange(atom, res, from, to)].concat(classRanges);\n }\n\n res = parseNonemptyClassRangesNoDash();\n if (!res) {\n bail('nonEmptyClassRangesNoDash');\n }\n\n return [atom].concat(res);\n }\n\n function parseNonemptyClassRanges() {\n // NonemptyClassRanges ::\n // ClassAtom\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n\n var atom = parseClassAtom();\n if (!atom) {\n bail('classAtom');\n }\n\n if (current(']')) {\n // ClassAtom\n return [atom];\n }\n\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n return parseHelperClassRanges(atom);\n }\n\n function parseNonemptyClassRangesNoDash() {\n // NonemptyClassRangesNoDash ::\n // ClassAtom\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n\n var res = parseClassAtom();\n if (!res) {\n bail('classAtom');\n }\n if (current(']')) {\n // ClassAtom\n return res;\n }\n\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n return parseHelperClassRanges(res);\n }\n\n function parseClassAtom() {\n // ClassAtom ::\n // -\n // ClassAtomNoDash\n if (match('-')) {\n return createCharacter('-');\n } else {\n return parseClassAtomNoDash();\n }\n }\n\n function parseClassAtomNoDash() {\n // ClassAtomNoDash ::\n // SourceCharacter but not one of \\ or ] or -\n // \\ ClassEscape\n\n var res;\n if (res = matchReg(/^[^\\\\\\]-]/)) {\n return createCharacter(res[0]);\n } else if (match('\\\\')) {\n res = parseClassEscape();\n if (!res) {\n bail('classEscape');\n }\n\n return parseUnicodeSurrogatePairEscape(res);\n }\n }\n\n function bail(message, details, from, to) {\n from = from == null ? pos : from;\n to = to == null ? from : to;\n\n var contextStart = Math.max(0, from - 10);\n var contextEnd = Math.min(to + 10, str.length);\n\n // Output a bit of context and a line pointing to where our error is.\n //\n // We are assuming that there are no actual newlines in the content as this is a regular expression.\n var context = ' ' + str.substring(contextStart, contextEnd);\n var pointer = ' ' + new Array(from - contextStart + 1).join(' ') + '^';\n\n throw SyntaxError(message + ' at position ' + from + (details ? ': ' + details : '') + '\\n' + context + '\\n' + pointer);\n }\n\n var backrefDenied = [];\n var closedCaptureCounter = 0;\n var firstIteration = true;\n var hasUnicodeFlag = (flags || \"\").indexOf(\"u\") !== -1;\n var pos = 0;\n\n // Convert the input to a string and treat the empty string special.\n str = String(str);\n if (str === '') {\n str = '(?:)';\n }\n\n var result = parseDisjunction();\n\n if (result.range[1] !== str.length) {\n bail('Could not parse entire input - got stuck', '', result.range[1]);\n }\n\n // The spec requires to interpret the `\\2` in `/\\2()()/` as backreference.\n // As the parser collects the number of capture groups as the string is\n // parsed it is impossible to make these decisions at the point when the\n // `\\2` is handled. In case the local decision turns out to be wrong after\n // the parsing has finished, the input string is parsed a second time with\n // the total number of capture groups set.\n //\n // SEE: https://github.com/jviereck/regjsparser/issues/70\n for (var i = 0; i < backrefDenied.length; i++) {\n if (backrefDenied[i] <= closedCaptureCounter) {\n // Parse the input a second time.\n pos = 0;\n firstIteration = false;\n return parseDisjunction();\n }\n }\n\n return result;\n }\n\n var regjsparser = {\n parse: parse\n };\n\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = regjsparser;\n } else {\n window.regjsparser = regjsparser;\n }\n\n}());\n","/*! https://mths.be/regenerate v1.3.3 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js/io.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar ERRORS = {\n\t\t'rangeOrder': 'A range\\u2019s `stop` value must be greater than or equal ' +\n\t\t\t'to the `start` value.',\n\t\t'codePointRange': 'Invalid code point value. Code points range from ' +\n\t\t\t'U+000000 to U+10FFFF.'\n\t};\n\n\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-pairs\n\tvar HIGH_SURROGATE_MIN = 0xD800;\n\tvar HIGH_SURROGATE_MAX = 0xDBFF;\n\tvar LOW_SURROGATE_MIN = 0xDC00;\n\tvar LOW_SURROGATE_MAX = 0xDFFF;\n\n\t// In Regenerate output, `\\0` is never preceded by `\\` because we sort by\n\t// code point value, so let’s keep this regular expression simple.\n\tvar regexNull = /\\\\x00([^0123456789]|$)/g;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar extend = function(destination, source) {\n\t\tvar key;\n\t\tfor (key in source) {\n\t\t\tif (hasOwnProperty.call(source, key)) {\n\t\t\t\tdestination[key] = source[key];\n\t\t\t}\n\t\t}\n\t\treturn destination;\n\t};\n\n\tvar forEach = function(array, callback) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tcallback(array[index], index);\n\t\t}\n\t};\n\n\tvar toString = object.toString;\n\tvar isArray = function(value) {\n\t\treturn toString.call(value) == '[object Array]';\n\t};\n\tvar isNumber = function(value) {\n\t\treturn typeof value == 'number' ||\n\t\t\ttoString.call(value) == '[object Number]';\n\t};\n\n\t// This assumes that `number` is a positive integer that `toString()`s nicely\n\t// (which is the case for all code point values).\n\tvar zeroes = '0000';\n\tvar pad = function(number, totalCharacters) {\n\t\tvar string = String(number);\n\t\treturn string.length < totalCharacters\n\t\t\t? (zeroes + string).slice(-totalCharacters)\n\t\t\t: string;\n\t};\n\n\tvar hex = function(number) {\n\t\treturn Number(number).toString(16).toUpperCase();\n\t};\n\n\tvar slice = [].slice;\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar dataFromCodePoints = function(codePoints) {\n\t\tvar index = -1;\n\t\tvar length = codePoints.length;\n\t\tvar max = length - 1;\n\t\tvar result = [];\n\t\tvar isStart = true;\n\t\tvar tmp;\n\t\tvar previous = 0;\n\t\twhile (++index < length) {\n\t\t\ttmp = codePoints[index];\n\t\t\tif (isStart) {\n\t\t\t\tresult.push(tmp);\n\t\t\t\tprevious = tmp;\n\t\t\t\tisStart = false;\n\t\t\t} else {\n\t\t\t\tif (tmp == previous + 1) {\n\t\t\t\t\tif (index != max) {\n\t\t\t\t\t\tprevious = tmp;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisStart = true;\n\t\t\t\t\t\tresult.push(tmp + 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// End the previous range and start a new one.\n\t\t\t\t\tresult.push(previous + 1, tmp);\n\t\t\t\t\tprevious = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!isStart) {\n\t\t\tresult.push(tmp + 1);\n\t\t}\n\t\treturn result;\n\t};\n\n\tvar dataRemove = function(data, codePoint) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\t// Modify this pair.\n\t\t\t\tif (codePoint == start) {\n\t\t\t\t\tif (end == start + 1) {\n\t\t\t\t\t\t// Just remove `start` and `end`.\n\t\t\t\t\t\tdata.splice(index, 2);\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Just replace `start` with a new value.\n\t\t\t\t\t\tdata[index] = codePoint + 1;\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t}\n\t\t\t\t} else if (codePoint == end - 1) {\n\t\t\t\t\t// Just replace `end` with a new value.\n\t\t\t\t\tdata[index + 1] = codePoint;\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\t// Replace `[start, end]` with `[startA, endA, startB, endB]`.\n\t\t\t\t\tdata.splice(index, 2, start, codePoint, codePoint + 1, end);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataRemoveRange = function(data, rangeStart, rangeEnd) {\n\t\tif (rangeEnd < rangeStart) {\n\t\t\tthrow Error(ERRORS.rangeOrder);\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\twhile (index < data.length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n\t\t\t// Exit as soon as no more matching pairs can be found.\n\t\t\tif (start > rangeEnd) {\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if this range pair is equal to, or forms a subset of, the range\n\t\t\t// to be removed.\n\t\t\t// E.g. we have `[0, 11, 40, 51]` and want to remove 0-10 → `[40, 51]`.\n\t\t\t// E.g. we have `[40, 51]` and want to remove 0-100 → `[]`.\n\t\t\tif (rangeStart <= start && rangeEnd >= end) {\n\t\t\t\t// Remove this pair.\n\t\t\t\tdata.splice(index, 2);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check if both `rangeStart` and `rangeEnd` are within the bounds of\n\t\t\t// this pair.\n\t\t\t// E.g. we have `[0, 11]` and want to remove 4-6 → `[0, 4, 7, 11]`.\n\t\t\tif (rangeStart >= start && rangeEnd < end) {\n\t\t\t\tif (rangeStart == start) {\n\t\t\t\t\t// Replace `[start, end]` with `[startB, endB]`.\n\t\t\t\t\tdata[index] = rangeEnd + 1;\n\t\t\t\t\tdata[index + 1] = end + 1;\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\t// Replace `[start, end]` with `[startA, endA, startB, endB]`.\n\t\t\t\tdata.splice(index, 2, start, rangeStart, rangeEnd + 1, end + 1);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if only `rangeStart` is within the bounds of this pair.\n\t\t\t// E.g. we have `[0, 11]` and want to remove 4-20 → `[0, 4]`.\n\t\t\tif (rangeStart >= start && rangeStart <= end) {\n\t\t\t\t// Replace `end` with `rangeStart`.\n\t\t\t\tdata[index + 1] = rangeStart;\n\t\t\t\t// Note: we cannot `return` just yet, in case any following pairs still\n\t\t\t\t// contain matching code points.\n\t\t\t\t// E.g. we have `[0, 11, 14, 31]` and want to remove 4-20\n\t\t\t\t// → `[0, 4, 21, 31]`.\n\t\t\t}\n\n\t\t\t// Check if only `rangeEnd` is within the bounds of this pair.\n\t\t\t// E.g. we have `[14, 31]` and want to remove 4-20 → `[21, 31]`.\n\t\t\telse if (rangeEnd >= start && rangeEnd <= end) {\n\t\t\t\t// Just replace `start`.\n\t\t\t\tdata[index] = rangeEnd + 1;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\t var dataAdd = function(data, codePoint) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar lastIndex = null;\n\t\tvar length = data.length;\n\t\tif (codePoint < 0x0 || codePoint > 0x10FFFF) {\n\t\t\tthrow RangeError(ERRORS.codePointRange);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\n\t\t\t// Check if the code point is already in the set.\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tif (codePoint == start - 1) {\n\t\t\t\t// Just replace `start` with a new value.\n\t\t\t\tdata[index] = codePoint;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// At this point, if `start` is `greater` than `codePoint`, insert a new\n\t\t\t// `[start, end]` pair before the current pair, or after the current pair\n\t\t\t// if there is a known `lastIndex`.\n\t\t\tif (start > codePoint) {\n\t\t\t\tdata.splice(\n\t\t\t\t\tlastIndex != null ? lastIndex + 2 : 0,\n\t\t\t\t\t0,\n\t\t\t\t\tcodePoint,\n\t\t\t\t\tcodePoint + 1\n\t\t\t\t);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tif (codePoint == end) {\n\t\t\t\t// Check if adding this code point causes two separate ranges to become\n\t\t\t\t// a single range, e.g. `dataAdd([0, 4, 5, 10], 4)` → `[0, 10]`.\n\t\t\t\tif (codePoint + 1 == data[index + 2]) {\n\t\t\t\t\tdata.splice(index, 4, start, data[index + 3]);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\t// Else, just replace `end` with a new value.\n\t\t\t\tdata[index + 1] = codePoint + 1;\n\t\t\t\treturn data;\n\t\t\t}\n\t\t\tlastIndex = index;\n\t\t\tindex += 2;\n\t\t}\n\t\t// The loop has finished; add the new pair to the end of the data set.\n\t\tdata.push(codePoint, codePoint + 1);\n\t\treturn data;\n\t};\n\n\tvar dataAddData = function(dataA, dataB) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar data = dataA.slice();\n\t\tvar length = dataB.length;\n\t\twhile (index < length) {\n\t\t\tstart = dataB[index];\n\t\t\tend = dataB[index + 1] - 1;\n\t\t\tif (start == end) {\n\t\t\t\tdata = dataAdd(data, start);\n\t\t\t} else {\n\t\t\t\tdata = dataAddRange(data, start, end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataRemoveData = function(dataA, dataB) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar data = dataA.slice();\n\t\tvar length = dataB.length;\n\t\twhile (index < length) {\n\t\t\tstart = dataB[index];\n\t\t\tend = dataB[index + 1] - 1;\n\t\t\tif (start == end) {\n\t\t\t\tdata = dataRemove(data, start);\n\t\t\t} else {\n\t\t\t\tdata = dataRemoveRange(data, start, end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataAddRange = function(data, rangeStart, rangeEnd) {\n\t\tif (rangeEnd < rangeStart) {\n\t\t\tthrow Error(ERRORS.rangeOrder);\n\t\t}\n\t\tif (\n\t\t\trangeStart < 0x0 || rangeStart > 0x10FFFF ||\n\t\t\trangeEnd < 0x0 || rangeEnd > 0x10FFFF\n\t\t) {\n\t\t\tthrow RangeError(ERRORS.codePointRange);\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar added = false;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\n\t\t\tif (added) {\n\t\t\t\t// The range has already been added to the set; at this point, we just\n\t\t\t\t// need to get rid of the following ranges in case they overlap.\n\n\t\t\t\t// Check if this range can be combined with the previous range.\n\t\t\t\tif (start == rangeEnd + 1) {\n\t\t\t\t\tdata.splice(index - 1, 2);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Exit as soon as no more possibly overlapping pairs can be found.\n\t\t\t\tif (start > rangeEnd) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// E.g. `[0, 11, 12, 16]` and we’ve added 5-15, so we now have\n\t\t\t\t// `[0, 16, 12, 16]`. Remove the `12,16` part, as it lies within the\n\t\t\t\t// `0,16` range that was previously added.\n\t\t\t\tif (start >= rangeStart && start <= rangeEnd) {\n\t\t\t\t\t// `start` lies within the range that was previously added.\n\n\t\t\t\t\tif (end > rangeStart && end - 1 <= rangeEnd) {\n\t\t\t\t\t\t// `end` lies within the range that was previously added as well,\n\t\t\t\t\t\t// so remove this pair.\n\t\t\t\t\t\tdata.splice(index, 2);\n\t\t\t\t\t\tindex -= 2;\n\t\t\t\t\t\t// Note: we cannot `return` just yet, as there may still be other\n\t\t\t\t\t\t// overlapping pairs.\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// `start` lies within the range that was previously added, but\n\t\t\t\t\t\t// `end` doesn’t. E.g. `[0, 11, 12, 31]` and we’ve added 5-15, so\n\t\t\t\t\t\t// now we have `[0, 16, 12, 31]`. This must be written as `[0, 31]`.\n\t\t\t\t\t\t// Remove the previously added `end` and the current `start`.\n\t\t\t\t\t\tdata.splice(index - 1, 2);\n\t\t\t\t\t\tindex -= 2;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: we cannot return yet.\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\telse if (start == rangeEnd + 1) {\n\t\t\t\tdata[index] = rangeStart;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if a new pair must be inserted *before* the current one.\n\t\t\telse if (start > rangeEnd) {\n\t\t\t\tdata.splice(index, 0, rangeStart, rangeEnd + 1);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\telse if (rangeStart >= start && rangeStart < end && rangeEnd + 1 <= end) {\n\t\t\t\t// The new range lies entirely within an existing range pair. No action\n\t\t\t\t// needed.\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\telse if (\n\t\t\t\t// E.g. `[0, 11]` and you add 5-15 → `[0, 16]`.\n\t\t\t\t(rangeStart >= start && rangeStart < end) ||\n\t\t\t\t// E.g. `[0, 3]` and you add 3-6 → `[0, 7]`.\n\t\t\t\tend == rangeStart\n\t\t\t) {\n\t\t\t\t// Replace `end` with the new value.\n\t\t\t\tdata[index + 1] = rangeEnd + 1;\n\t\t\t\t// Make sure the next range pair doesn’t overlap, e.g. `[0, 11, 12, 14]`\n\t\t\t\t// and you add 5-15 → `[0, 16]`, i.e. remove the `12,14` part.\n\t\t\t\tadded = true;\n\t\t\t\t// Note: we cannot `return` just yet.\n\t\t\t}\n\n\t\t\telse if (rangeStart <= start && rangeEnd + 1 >= end) {\n\t\t\t\t// The new range is a superset of the old range.\n\t\t\t\tdata[index] = rangeStart;\n\t\t\t\tdata[index + 1] = rangeEnd + 1;\n\t\t\t\tadded = true;\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\t// The loop has finished without doing anything; add the new pair to the end\n\t\t// of the data set.\n\t\tif (!added) {\n\t\t\tdata.push(rangeStart, rangeEnd + 1);\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataContains = function(data, codePoint) {\n\t\tvar index = 0;\n\t\tvar length = data.length;\n\t\t// Exit early if `codePoint` is not within `data`’s overall range.\n\t\tvar start = data[index];\n\t\tvar end = data[length - 1];\n\t\tif (length >= 2) {\n\t\t\tif (codePoint < start || codePoint > end) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar dataIntersection = function(data, codePoints) {\n\t\tvar index = 0;\n\t\tvar length = codePoints.length;\n\t\tvar codePoint;\n\t\tvar result = [];\n\t\twhile (index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tif (dataContains(data, codePoint)) {\n\t\t\t\tresult.push(codePoint);\n\t\t\t}\n\t\t\t++index;\n\t\t}\n\t\treturn dataFromCodePoints(result);\n\t};\n\n\tvar dataIsEmpty = function(data) {\n\t\treturn !data.length;\n\t};\n\n\tvar dataIsSingleton = function(data) {\n\t\t// Check if the set only represents a single code point.\n\t\treturn data.length == 2 && data[0] + 1 == data[1];\n\t};\n\n\tvar dataToArray = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar result = [];\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\twhile (start < end) {\n\t\t\t\tresult.push(start);\n\t\t\t\t++start;\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\tvar floor = Math.floor;\n\tvar highSurrogate = function(codePoint) {\n\t\treturn parseInt(\n\t\t\tfloor((codePoint - 0x10000) / 0x400) + HIGH_SURROGATE_MIN,\n\t\t\t10\n\t\t);\n\t};\n\n\tvar lowSurrogate = function(codePoint) {\n\t\treturn parseInt(\n\t\t\t(codePoint - 0x10000) % 0x400 + LOW_SURROGATE_MIN,\n\t\t\t10\n\t\t);\n\t};\n\n\tvar stringFromCharCode = String.fromCharCode;\n\tvar codePointToString = function(codePoint) {\n\t\tvar string;\n\t\t// https://mathiasbynens.be/notes/javascript-escapes#single\n\t\t// Note: the `\\b` escape sequence for U+0008 BACKSPACE in strings has a\n\t\t// different meaning in regular expressions (word boundary), so it cannot\n\t\t// be used here.\n\t\tif (codePoint == 0x09) {\n\t\t\tstring = '\\\\t';\n\t\t}\n\t\t// Note: IE < 9 treats `'\\v'` as `'v'`, so avoid using it.\n\t\t// else if (codePoint == 0x0B) {\n\t\t// \tstring = '\\\\v';\n\t\t// }\n\t\telse if (codePoint == 0x0A) {\n\t\t\tstring = '\\\\n';\n\t\t}\n\t\telse if (codePoint == 0x0C) {\n\t\t\tstring = '\\\\f';\n\t\t}\n\t\telse if (codePoint == 0x0D) {\n\t\t\tstring = '\\\\r';\n\t\t}\n\t\telse if (codePoint == 0x5C) {\n\t\t\tstring = '\\\\\\\\';\n\t\t}\n\t\telse if (\n\t\t\tcodePoint == 0x24 ||\n\t\t\t(codePoint >= 0x28 && codePoint <= 0x2B) ||\n\t\t\t(codePoint >= 0x2D && codePoint <= 0x2F) ||\n\t\t\tcodePoint == 0x3F ||\n\t\t\t(codePoint >= 0x5B && codePoint <= 0x5E) ||\n\t\t\t(codePoint >= 0x7B && codePoint <= 0x7D)\n\t\t) {\n\t\t\t// The code point maps to an unsafe printable ASCII character;\n\t\t\t// backslash-escape it. Here’s the list of those symbols:\n\t\t\t//\n\t\t\t// $()*+-./?[\\]^{|}\n\t\t\t//\n\t\t\t// See #7 for more info.\n\t\t\tstring = '\\\\' + stringFromCharCode(codePoint);\n\t\t}\n\t\telse if (codePoint >= 0x20 && codePoint <= 0x7E) {\n\t\t\t// The code point maps to one of these printable ASCII symbols\n\t\t\t// (including the space character):\n\t\t\t//\n\t\t\t// !\"#%&',/0123456789:;<=>@ABCDEFGHIJKLMNO\n\t\t\t// PQRSTUVWXYZ_`abcdefghijklmnopqrstuvwxyz~\n\t\t\t//\n\t\t\t// These can safely be used directly.\n\t\t\tstring = stringFromCharCode(codePoint);\n\t\t}\n\t\telse if (codePoint <= 0xFF) {\n\t\t\t// https://mathiasbynens.be/notes/javascript-escapes#hexadecimal\n\t\t\tstring = '\\\\x' + pad(hex(codePoint), 2);\n\t\t}\n\t\telse { // `codePoint <= 0xFFFF` holds true.\n\t\t\t// https://mathiasbynens.be/notes/javascript-escapes#unicode\n\t\t\tstring = '\\\\u' + pad(hex(codePoint), 4);\n\t\t}\n\n\t\t// There’s no need to account for astral symbols / surrogate pairs here,\n\t\t// since `codePointToString` is private and only used for BMP code points.\n\t\t// But if that’s what you need, just add an `else` block with this code:\n\t\t//\n\t\t// string = '\\\\u' + pad(hex(highSurrogate(codePoint)), 4)\n\t\t// \t+ '\\\\u' + pad(hex(lowSurrogate(codePoint)), 4);\n\n\t\treturn string;\n\t};\n\n\tvar codePointToStringUnicode = function(codePoint) {\n\t\tif (codePoint <= 0xFFFF) {\n\t\t\treturn codePointToString(codePoint);\n\t\t}\n\t\treturn '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\n\t};\n\n\tvar symbolToCodePoint = function(symbol) {\n\t\tvar length = symbol.length;\n\t\tvar first = symbol.charCodeAt(0);\n\t\tvar second;\n\t\tif (\n\t\t\tfirst >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX &&\n\t\t\tlength > 1 // There is a next code unit.\n\t\t) {\n\t\t\t// `first` is a high surrogate, and there is a next character. Assume\n\t\t\t// it’s a low surrogate (else it’s invalid usage of Regenerate anyway).\n\t\t\tsecond = symbol.charCodeAt(1);\n\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\treturn (first - HIGH_SURROGATE_MIN) * 0x400 +\n\t\t\t\tsecond - LOW_SURROGATE_MIN + 0x10000;\n\t\t}\n\t\treturn first;\n\t};\n\n\tvar createBMPCharacterClasses = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar result = '';\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\tif (dataIsSingleton(data)) {\n\t\t\treturn codePointToString(data[0]);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\t\t\tif (start == end) {\n\t\t\t\tresult += codePointToString(start);\n\t\t\t} else if (start + 1 == end) {\n\t\t\t\tresult += codePointToString(start) + codePointToString(end);\n\t\t\t} else {\n\t\t\t\tresult += codePointToString(start) + '-' + codePointToString(end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn '[' + result + ']';\n\t};\n\n\tvar createUnicodeCharacterClasses = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar result = '';\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\tif (dataIsSingleton(data)) {\n\t\t\treturn codePointToStringUnicode(data[0]);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\t\t\tif (start == end) {\n\t\t\t\tresult += codePointToStringUnicode(start);\n\t\t\t} else if (start + 1 == end) {\n\t\t\t\tresult += codePointToStringUnicode(start) + codePointToStringUnicode(end);\n\t\t\t} else {\n\t\t\t\tresult += codePointToStringUnicode(start) + '-' + codePointToStringUnicode(end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn '[' + result + ']';\n\t};\n\n\tvar splitAtBMP = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar loneHighSurrogates = [];\n\t\tvar loneLowSurrogates = [];\n\t\tvar bmp = [];\n\t\tvar astral = [];\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n\t\t\tif (start < HIGH_SURROGATE_MIN) {\n\n\t\t\t\t// The range starts and ends before the high surrogate range.\n\t\t\t\t// E.g. (0, 0x10).\n\t\t\t\tif (end < HIGH_SURROGATE_MIN) {\n\t\t\t\t\tbmp.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends within it.\n\t\t\t\t// E.g. (0, 0xD855).\n\t\t\t\tif (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends in the low\n\t\t\t\t// surrogate range. E.g. (0, 0xDCFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends after the\n\t\t\t\t// low surrogate range. E.g. (0, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start >= HIGH_SURROGATE_MIN && start <= HIGH_SURROGATE_MAX) {\n\n\t\t\t\t// The range starts and ends in the high surrogate range.\n\t\t\t\t// E.g. (0xD855, 0xD866).\n\t\t\t\tif (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the high surrogate range and ends in the low\n\t\t\t\t// surrogate range. E.g. (0xD855, 0xDCFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the high surrogate range and ends after the low\n\t\t\t\t// surrogate range. E.g. (0xD855, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start >= LOW_SURROGATE_MIN && start <= LOW_SURROGATE_MAX) {\n\n\t\t\t\t// The range starts and ends in the low surrogate range.\n\t\t\t\t// E.g. (0xDCFF, 0xDDFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneLowSurrogates.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the low surrogate range and ends after the low\n\t\t\t\t// surrogate range. E.g. (0xDCFF, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneLowSurrogates.push(start, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start > LOW_SURROGATE_MAX && start <= 0xFFFF) {\n\n\t\t\t\t// The range starts and ends after the low surrogate range.\n\t\t\t\t// E.g. (0xFFAA, 0x10FFFF).\n\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\tbmp.push(start, end + 1);\n\t\t\t\t} else {\n\t\t\t\t\tbmp.push(start, 0xFFFF + 1);\n\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// The range starts and ends in the astral range.\n\t\t\t\tastral.push(start, end + 1);\n\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\treturn {\n\t\t\t'loneHighSurrogates': loneHighSurrogates,\n\t\t\t'loneLowSurrogates': loneLowSurrogates,\n\t\t\t'bmp': bmp,\n\t\t\t'astral': astral\n\t\t};\n\t};\n\n\tvar optimizeSurrogateMappings = function(surrogateMappings) {\n\t\tvar result = [];\n\t\tvar tmpLow = [];\n\t\tvar addLow = false;\n\t\tvar mapping;\n\t\tvar nextMapping;\n\t\tvar highSurrogates;\n\t\tvar lowSurrogates;\n\t\tvar nextHighSurrogates;\n\t\tvar nextLowSurrogates;\n\t\tvar index = -1;\n\t\tvar length = surrogateMappings.length;\n\t\twhile (++index < length) {\n\t\t\tmapping = surrogateMappings[index];\n\t\t\tnextMapping = surrogateMappings[index + 1];\n\t\t\tif (!nextMapping) {\n\t\t\t\tresult.push(mapping);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thighSurrogates = mapping[0];\n\t\t\tlowSurrogates = mapping[1];\n\t\t\tnextHighSurrogates = nextMapping[0];\n\t\t\tnextLowSurrogates = nextMapping[1];\n\n\t\t\t// Check for identical high surrogate ranges.\n\t\t\ttmpLow = lowSurrogates;\n\t\t\twhile (\n\t\t\t\tnextHighSurrogates &&\n\t\t\t\thighSurrogates[0] == nextHighSurrogates[0] &&\n\t\t\t\thighSurrogates[1] == nextHighSurrogates[1]\n\t\t\t) {\n\t\t\t\t// Merge with the next item.\n\t\t\t\tif (dataIsSingleton(nextLowSurrogates)) {\n\t\t\t\t\ttmpLow = dataAdd(tmpLow, nextLowSurrogates[0]);\n\t\t\t\t} else {\n\t\t\t\t\ttmpLow = dataAddRange(\n\t\t\t\t\t\ttmpLow,\n\t\t\t\t\t\tnextLowSurrogates[0],\n\t\t\t\t\t\tnextLowSurrogates[1] - 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t\tmapping = surrogateMappings[index];\n\t\t\t\thighSurrogates = mapping[0];\n\t\t\t\tlowSurrogates = mapping[1];\n\t\t\t\tnextMapping = surrogateMappings[index + 1];\n\t\t\t\tnextHighSurrogates = nextMapping && nextMapping[0];\n\t\t\t\tnextLowSurrogates = nextMapping && nextMapping[1];\n\t\t\t\taddLow = true;\n\t\t\t}\n\t\t\tresult.push([\n\t\t\t\thighSurrogates,\n\t\t\t\taddLow ? tmpLow : lowSurrogates\n\t\t\t]);\n\t\t\taddLow = false;\n\t\t}\n\t\treturn optimizeByLowSurrogates(result);\n\t};\n\n\tvar optimizeByLowSurrogates = function(surrogateMappings) {\n\t\tif (surrogateMappings.length == 1) {\n\t\t\treturn surrogateMappings;\n\t\t}\n\t\tvar index = -1;\n\t\tvar innerIndex = -1;\n\t\twhile (++index < surrogateMappings.length) {\n\t\t\tvar mapping = surrogateMappings[index];\n\t\t\tvar lowSurrogates = mapping[1];\n\t\t\tvar lowSurrogateStart = lowSurrogates[0];\n\t\t\tvar lowSurrogateEnd = lowSurrogates[1];\n\t\t\tinnerIndex = index; // Note: the loop starts at the next index.\n\t\t\twhile (++innerIndex < surrogateMappings.length) {\n\t\t\t\tvar otherMapping = surrogateMappings[innerIndex];\n\t\t\t\tvar otherLowSurrogates = otherMapping[1];\n\t\t\t\tvar otherLowSurrogateStart = otherLowSurrogates[0];\n\t\t\t\tvar otherLowSurrogateEnd = otherLowSurrogates[1];\n\t\t\t\tif (\n\t\t\t\t\tlowSurrogateStart == otherLowSurrogateStart &&\n\t\t\t\t\tlowSurrogateEnd == otherLowSurrogateEnd\n\t\t\t\t) {\n\t\t\t\t\t// Add the code points in the other item to this one.\n\t\t\t\t\tif (dataIsSingleton(otherMapping[0])) {\n\t\t\t\t\t\tmapping[0] = dataAdd(mapping[0], otherMapping[0][0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapping[0] = dataAddRange(\n\t\t\t\t\t\t\tmapping[0],\n\t\t\t\t\t\t\totherMapping[0][0],\n\t\t\t\t\t\t\totherMapping[0][1] - 1\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Remove the other, now redundant, item.\n\t\t\t\t\tsurrogateMappings.splice(innerIndex, 1);\n\t\t\t\t\t--innerIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn surrogateMappings;\n\t};\n\n\tvar surrogateSet = function(data) {\n\t\t// Exit early if `data` is an empty set.\n\t\tif (!data.length) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar startHigh;\n\t\tvar startLow;\n\t\tvar endHigh;\n\t\tvar endLow;\n\t\tvar surrogateMappings = [];\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1;\n\n\t\t\tstartHigh = highSurrogate(start);\n\t\t\tstartLow = lowSurrogate(start);\n\t\t\tendHigh = highSurrogate(end);\n\t\t\tendLow = lowSurrogate(end);\n\n\t\t\tvar startsWithLowestLowSurrogate = startLow == LOW_SURROGATE_MIN;\n\t\t\tvar endsWithHighestLowSurrogate = endLow == LOW_SURROGATE_MAX;\n\t\t\tvar complete = false;\n\n\t\t\t// Append the previous high-surrogate-to-low-surrogate mappings.\n\t\t\t// Step 1: `(startHigh, startLow)` to `(startHigh, LOW_SURROGATE_MAX)`.\n\t\t\tif (\n\t\t\t\tstartHigh == endHigh ||\n\t\t\t\tstartsWithLowestLowSurrogate && endsWithHighestLowSurrogate\n\t\t\t) {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[startHigh, endHigh + 1],\n\t\t\t\t\t[startLow, endLow + 1]\n\t\t\t\t]);\n\t\t\t\tcomplete = true;\n\t\t\t} else {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[startHigh, startHigh + 1],\n\t\t\t\t\t[startLow, LOW_SURROGATE_MAX + 1]\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\t// Step 2: `(startHigh + 1, LOW_SURROGATE_MIN)` to\n\t\t\t// `(endHigh - 1, LOW_SURROGATE_MAX)`.\n\t\t\tif (!complete && startHigh + 1 < endHigh) {\n\t\t\t\tif (endsWithHighestLowSurrogate) {\n\t\t\t\t\t// Combine step 2 and step 3.\n\t\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t\t[startHigh + 1, endHigh + 1],\n\t\t\t\t\t\t[LOW_SURROGATE_MIN, endLow + 1]\n\t\t\t\t\t]);\n\t\t\t\t\tcomplete = true;\n\t\t\t\t} else {\n\t\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t\t[startHigh + 1, endHigh],\n\t\t\t\t\t\t[LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Step 3. `(endHigh, LOW_SURROGATE_MIN)` to `(endHigh, endLow)`.\n\t\t\tif (!complete) {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[endHigh, endHigh + 1],\n\t\t\t\t\t[LOW_SURROGATE_MIN, endLow + 1]\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\n\t\t// The format of `surrogateMappings` is as follows:\n\t\t//\n\t\t// [ surrogateMapping1, surrogateMapping2 ]\n\t\t//\n\t\t// i.e.:\n\t\t//\n\t\t// [\n\t\t// [ highSurrogates1, lowSurrogates1 ],\n\t\t// [ highSurrogates2, lowSurrogates2 ]\n\t\t// ]\n\t\treturn optimizeSurrogateMappings(surrogateMappings);\n\t};\n\n\tvar createSurrogateCharacterClasses = function(surrogateMappings) {\n\t\tvar result = [];\n\t\tforEach(surrogateMappings, function(surrogateMapping) {\n\t\t\tvar highSurrogates = surrogateMapping[0];\n\t\t\tvar lowSurrogates = surrogateMapping[1];\n\t\t\tresult.push(\n\t\t\t\tcreateBMPCharacterClasses(highSurrogates) +\n\t\t\t\tcreateBMPCharacterClasses(lowSurrogates)\n\t\t\t);\n\t\t});\n\t\treturn result.join('|');\n\t};\n\n\tvar createCharacterClassesFromData = function(data, bmpOnly, hasUnicodeFlag) {\n\t\tif (hasUnicodeFlag) {\n\t\t\treturn createUnicodeCharacterClasses(data);\n\t\t}\n\t\tvar result = [];\n\n\t\tvar parts = splitAtBMP(data);\n\t\tvar loneHighSurrogates = parts.loneHighSurrogates;\n\t\tvar loneLowSurrogates = parts.loneLowSurrogates;\n\t\tvar bmp = parts.bmp;\n\t\tvar astral = parts.astral;\n\t\tvar hasLoneHighSurrogates = !dataIsEmpty(loneHighSurrogates);\n\t\tvar hasLoneLowSurrogates = !dataIsEmpty(loneLowSurrogates);\n\n\t\tvar surrogateMappings = surrogateSet(astral);\n\n\t\tif (bmpOnly) {\n\t\t\tbmp = dataAddData(bmp, loneHighSurrogates);\n\t\t\thasLoneHighSurrogates = false;\n\t\t\tbmp = dataAddData(bmp, loneLowSurrogates);\n\t\t\thasLoneLowSurrogates = false;\n\t\t}\n\n\t\tif (!dataIsEmpty(bmp)) {\n\t\t\t// The data set contains BMP code points that are not high surrogates\n\t\t\t// needed for astral code points in the set.\n\t\t\tresult.push(createBMPCharacterClasses(bmp));\n\t\t}\n\t\tif (surrogateMappings.length) {\n\t\t\t// The data set contains astral code points; append character classes\n\t\t\t// based on their surrogate pairs.\n\t\t\tresult.push(createSurrogateCharacterClasses(surrogateMappings));\n\t\t}\n\t\t// https://gist.github.com/mathiasbynens/bbe7f870208abcfec860\n\t\tif (hasLoneHighSurrogates) {\n\t\t\tresult.push(\n\t\t\t\tcreateBMPCharacterClasses(loneHighSurrogates) +\n\t\t\t\t// Make sure the high surrogates aren’t part of a surrogate pair.\n\t\t\t\t'(?![\\\\uDC00-\\\\uDFFF])'\n\t\t\t);\n\t\t}\n\t\tif (hasLoneLowSurrogates) {\n\t\t\tresult.push(\n\t\t\t\t// It is not possible to accurately assert the low surrogates aren’t\n\t\t\t\t// part of a surrogate pair, since JavaScript regular expressions do\n\t\t\t\t// not support lookbehind.\n\t\t\t\t'(?:[^\\\\uD800-\\\\uDBFF]|^)' +\n\t\t\t\tcreateBMPCharacterClasses(loneLowSurrogates)\n\t\t\t);\n\t\t}\n\t\treturn result.join('|');\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// `regenerate` can be used as a constructor (and new methods can be added to\n\t// its prototype) but also as a regular function, the latter of which is the\n\t// documented and most common usage. For that reason, it’s not capitalized.\n\tvar regenerate = function(value) {\n\t\tif (arguments.length > 1) {\n\t\t\tvalue = slice.call(arguments);\n\t\t}\n\t\tif (this instanceof regenerate) {\n\t\t\tthis.data = [];\n\t\t\treturn value ? this.add(value) : this;\n\t\t}\n\t\treturn (new regenerate).add(value);\n\t};\n\n\tregenerate.version = '1.3.3';\n\n\tvar proto = regenerate.prototype;\n\textend(proto, {\n\t\t'add': function(value) {\n\t\t\tvar $this = this;\n\t\t\tif (value == null) {\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (value instanceof regenerate) {\n\t\t\t\t// Allow passing other Regenerate instances.\n\t\t\t\t$this.data = dataAddData($this.data, value.data);\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tvalue = slice.call(arguments);\n\t\t\t}\n\t\t\tif (isArray(value)) {\n\t\t\t\tforEach(value, function(item) {\n\t\t\t\t\t$this.add(item);\n\t\t\t\t});\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\t$this.data = dataAdd(\n\t\t\t\t$this.data,\n\t\t\t\tisNumber(value) ? value : symbolToCodePoint(value)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'remove': function(value) {\n\t\t\tvar $this = this;\n\t\t\tif (value == null) {\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (value instanceof regenerate) {\n\t\t\t\t// Allow passing other Regenerate instances.\n\t\t\t\t$this.data = dataRemoveData($this.data, value.data);\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tvalue = slice.call(arguments);\n\t\t\t}\n\t\t\tif (isArray(value)) {\n\t\t\t\tforEach(value, function(item) {\n\t\t\t\t\t$this.remove(item);\n\t\t\t\t});\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\t$this.data = dataRemove(\n\t\t\t\t$this.data,\n\t\t\t\tisNumber(value) ? value : symbolToCodePoint(value)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'addRange': function(start, end) {\n\t\t\tvar $this = this;\n\t\t\t$this.data = dataAddRange($this.data,\n\t\t\t\tisNumber(start) ? start : symbolToCodePoint(start),\n\t\t\t\tisNumber(end) ? end : symbolToCodePoint(end)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'removeRange': function(start, end) {\n\t\t\tvar $this = this;\n\t\t\tvar startCodePoint = isNumber(start) ? start : symbolToCodePoint(start);\n\t\t\tvar endCodePoint = isNumber(end) ? end : symbolToCodePoint(end);\n\t\t\t$this.data = dataRemoveRange(\n\t\t\t\t$this.data,\n\t\t\t\tstartCodePoint,\n\t\t\t\tendCodePoint\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'intersection': function(argument) {\n\t\t\tvar $this = this;\n\t\t\t// Allow passing other Regenerate instances.\n\t\t\t// TODO: Optimize this by writing and using `dataIntersectionData()`.\n\t\t\tvar array = argument instanceof regenerate ?\n\t\t\t\tdataToArray(argument.data) :\n\t\t\t\targument;\n\t\t\t$this.data = dataIntersection($this.data, array);\n\t\t\treturn $this;\n\t\t},\n\t\t'contains': function(codePoint) {\n\t\t\treturn dataContains(\n\t\t\t\tthis.data,\n\t\t\t\tisNumber(codePoint) ? codePoint : symbolToCodePoint(codePoint)\n\t\t\t);\n\t\t},\n\t\t'clone': function() {\n\t\t\tvar set = new regenerate;\n\t\t\tset.data = this.data.slice(0);\n\t\t\treturn set;\n\t\t},\n\t\t'toString': function(options) {\n\t\t\tvar result = createCharacterClassesFromData(\n\t\t\t\tthis.data,\n\t\t\t\toptions ? options.bmpOnly : false,\n\t\t\t\toptions ? options.hasUnicodeFlag : false\n\t\t\t);\n\t\t\tif (!result) {\n\t\t\t\t// For an empty set, return something that can be inserted `/here/` to\n\t\t\t\t// form a valid regular expression. Avoid `(?:)` since that matches the\n\t\t\t\t// empty string.\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\t// Use `\\0` instead of `\\x00` where possible.\n\t\t\treturn result.replace(regexNull, '\\\\0$1');\n\t\t},\n\t\t'toRegExp': function(flags) {\n\t\t\tvar pattern = this.toString(\n\t\t\t\tflags && flags.indexOf('u') != -1 ?\n\t\t\t\t\t{ 'hasUnicodeFlag': true } :\n\t\t\t\t\tnull\n\t\t\t);\n\t\t\treturn RegExp(pattern, flags || '');\n\t\t},\n\t\t'valueOf': function() { // Note: `valueOf` is aliased as `toArray`.\n\t\t\treturn dataToArray(this.data);\n\t\t}\n\t});\n\n\tproto.toArray = proto.valueOf;\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn regenerate;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = regenerate;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfreeExports.regenerate = regenerate;\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.regenerate = regenerate;\n\t}\n\n}(this));\n","module.exports = new Set([\n\t// Non-binary properties:\n\t'General_Category',\n\t'Script',\n\t'Script_Extensions',\n\t// Binary properties:\n\t'Alphabetic',\n\t'Any',\n\t'ASCII',\n\t'ASCII_Hex_Digit',\n\t'Assigned',\n\t'Bidi_Control',\n\t'Bidi_Mirrored',\n\t'Case_Ignorable',\n\t'Cased',\n\t'Changes_When_Casefolded',\n\t'Changes_When_Casemapped',\n\t'Changes_When_Lowercased',\n\t'Changes_When_NFKC_Casefolded',\n\t'Changes_When_Titlecased',\n\t'Changes_When_Uppercased',\n\t'Dash',\n\t'Default_Ignorable_Code_Point',\n\t'Deprecated',\n\t'Diacritic',\n\t'Emoji',\n\t'Emoji_Component',\n\t'Emoji_Modifier',\n\t'Emoji_Modifier_Base',\n\t'Emoji_Presentation',\n\t'Extended_Pictographic',\n\t'Extender',\n\t'Grapheme_Base',\n\t'Grapheme_Extend',\n\t'Hex_Digit',\n\t'ID_Continue',\n\t'ID_Start',\n\t'Ideographic',\n\t'IDS_Binary_Operator',\n\t'IDS_Trinary_Operator',\n\t'Join_Control',\n\t'Logical_Order_Exception',\n\t'Lowercase',\n\t'Math',\n\t'Noncharacter_Code_Point',\n\t'Pattern_Syntax',\n\t'Pattern_White_Space',\n\t'Quotation_Mark',\n\t'Radical',\n\t'Regional_Indicator',\n\t'Sentence_Terminal',\n\t'Soft_Dotted',\n\t'Terminal_Punctuation',\n\t'Unified_Ideograph',\n\t'Uppercase',\n\t'Variation_Selector',\n\t'White_Space',\n\t'XID_Continue',\n\t'XID_Start'\n]);\n","// Generated using `npm run build`. Do not edit!\nmodule.exports = new Map([\n\t['scx', 'Script_Extensions'],\n\t['sc', 'Script'],\n\t['gc', 'General_Category'],\n\t['AHex', 'ASCII_Hex_Digit'],\n\t['Alpha', 'Alphabetic'],\n\t['Bidi_C', 'Bidi_Control'],\n\t['Bidi_M', 'Bidi_Mirrored'],\n\t['Cased', 'Cased'],\n\t['CI', 'Case_Ignorable'],\n\t['CWCF', 'Changes_When_Casefolded'],\n\t['CWCM', 'Changes_When_Casemapped'],\n\t['CWKCF', 'Changes_When_NFKC_Casefolded'],\n\t['CWL', 'Changes_When_Lowercased'],\n\t['CWT', 'Changes_When_Titlecased'],\n\t['CWU', 'Changes_When_Uppercased'],\n\t['Dash', 'Dash'],\n\t['Dep', 'Deprecated'],\n\t['DI', 'Default_Ignorable_Code_Point'],\n\t['Dia', 'Diacritic'],\n\t['Ext', 'Extender'],\n\t['Gr_Base', 'Grapheme_Base'],\n\t['Gr_Ext', 'Grapheme_Extend'],\n\t['Hex', 'Hex_Digit'],\n\t['IDC', 'ID_Continue'],\n\t['Ideo', 'Ideographic'],\n\t['IDS', 'ID_Start'],\n\t['IDSB', 'IDS_Binary_Operator'],\n\t['IDST', 'IDS_Trinary_Operator'],\n\t['Join_C', 'Join_Control'],\n\t['LOE', 'Logical_Order_Exception'],\n\t['Lower', 'Lowercase'],\n\t['Math', 'Math'],\n\t['NChar', 'Noncharacter_Code_Point'],\n\t['Pat_Syn', 'Pattern_Syntax'],\n\t['Pat_WS', 'Pattern_White_Space'],\n\t['QMark', 'Quotation_Mark'],\n\t['Radical', 'Radical'],\n\t['RI', 'Regional_Indicator'],\n\t['SD', 'Soft_Dotted'],\n\t['STerm', 'Sentence_Terminal'],\n\t['Term', 'Terminal_Punctuation'],\n\t['UIdeo', 'Unified_Ideograph'],\n\t['Upper', 'Uppercase'],\n\t['VS', 'Variation_Selector'],\n\t['WSpace', 'White_Space'],\n\t['space', 'White_Space'],\n\t['XIDC', 'XID_Continue'],\n\t['XIDS', 'XID_Start']\n]);\n","'use strict';\n\nconst canonicalProperties = require('unicode-canonical-property-names-ecmascript');\nconst propertyAliases = require('unicode-property-aliases-ecmascript');\n\nconst matchProperty = function(property) {\n\tif (canonicalProperties.has(property)) {\n\t\treturn property;\n\t}\n\tif (propertyAliases.has(property)) {\n\t\treturn propertyAliases.get(property);\n\t}\n\tthrow new Error(`Unknown property: ${ property }`);\n};\n\nmodule.exports = matchProperty;\n","module.exports = new Map([\n\t['General_Category', new Map([\n\t\t['C', 'Other'],\n\t\t['Cc', 'Control'],\n\t\t['cntrl', 'Control'],\n\t\t['Cf', 'Format'],\n\t\t['Cn', 'Unassigned'],\n\t\t['Co', 'Private_Use'],\n\t\t['Cs', 'Surrogate'],\n\t\t['L', 'Letter'],\n\t\t['LC', 'Cased_Letter'],\n\t\t['Ll', 'Lowercase_Letter'],\n\t\t['Lm', 'Modifier_Letter'],\n\t\t['Lo', 'Other_Letter'],\n\t\t['Lt', 'Titlecase_Letter'],\n\t\t['Lu', 'Uppercase_Letter'],\n\t\t['M', 'Mark'],\n\t\t['Combining_Mark', 'Mark'],\n\t\t['Mc', 'Spacing_Mark'],\n\t\t['Me', 'Enclosing_Mark'],\n\t\t['Mn', 'Nonspacing_Mark'],\n\t\t['N', 'Number'],\n\t\t['Nd', 'Decimal_Number'],\n\t\t['digit', 'Decimal_Number'],\n\t\t['Nl', 'Letter_Number'],\n\t\t['No', 'Other_Number'],\n\t\t['P', 'Punctuation'],\n\t\t['punct', 'Punctuation'],\n\t\t['Pc', 'Connector_Punctuation'],\n\t\t['Pd', 'Dash_Punctuation'],\n\t\t['Pe', 'Close_Punctuation'],\n\t\t['Pf', 'Final_Punctuation'],\n\t\t['Pi', 'Initial_Punctuation'],\n\t\t['Po', 'Other_Punctuation'],\n\t\t['Ps', 'Open_Punctuation'],\n\t\t['S', 'Symbol'],\n\t\t['Sc', 'Currency_Symbol'],\n\t\t['Sk', 'Modifier_Symbol'],\n\t\t['Sm', 'Math_Symbol'],\n\t\t['So', 'Other_Symbol'],\n\t\t['Z', 'Separator'],\n\t\t['Zl', 'Line_Separator'],\n\t\t['Zp', 'Paragraph_Separator'],\n\t\t['Zs', 'Space_Separator'],\n\t\t['Other', 'Other'],\n\t\t['Control', 'Control'],\n\t\t['Format', 'Format'],\n\t\t['Unassigned', 'Unassigned'],\n\t\t['Private_Use', 'Private_Use'],\n\t\t['Surrogate', 'Surrogate'],\n\t\t['Letter', 'Letter'],\n\t\t['Cased_Letter', 'Cased_Letter'],\n\t\t['Lowercase_Letter', 'Lowercase_Letter'],\n\t\t['Modifier_Letter', 'Modifier_Letter'],\n\t\t['Other_Letter', 'Other_Letter'],\n\t\t['Titlecase_Letter', 'Titlecase_Letter'],\n\t\t['Uppercase_Letter', 'Uppercase_Letter'],\n\t\t['Mark', 'Mark'],\n\t\t['Spacing_Mark', 'Spacing_Mark'],\n\t\t['Enclosing_Mark', 'Enclosing_Mark'],\n\t\t['Nonspacing_Mark', 'Nonspacing_Mark'],\n\t\t['Number', 'Number'],\n\t\t['Decimal_Number', 'Decimal_Number'],\n\t\t['Letter_Number', 'Letter_Number'],\n\t\t['Other_Number', 'Other_Number'],\n\t\t['Punctuation', 'Punctuation'],\n\t\t['Connector_Punctuation', 'Connector_Punctuation'],\n\t\t['Dash_Punctuation', 'Dash_Punctuation'],\n\t\t['Close_Punctuation', 'Close_Punctuation'],\n\t\t['Final_Punctuation', 'Final_Punctuation'],\n\t\t['Initial_Punctuation', 'Initial_Punctuation'],\n\t\t['Other_Punctuation', 'Other_Punctuation'],\n\t\t['Open_Punctuation', 'Open_Punctuation'],\n\t\t['Symbol', 'Symbol'],\n\t\t['Currency_Symbol', 'Currency_Symbol'],\n\t\t['Modifier_Symbol', 'Modifier_Symbol'],\n\t\t['Math_Symbol', 'Math_Symbol'],\n\t\t['Other_Symbol', 'Other_Symbol'],\n\t\t['Separator', 'Separator'],\n\t\t['Line_Separator', 'Line_Separator'],\n\t\t['Paragraph_Separator', 'Paragraph_Separator'],\n\t\t['Space_Separator', 'Space_Separator']\n\t])],\n\t['Script', new Map([\n\t\t['Adlm', 'Adlam'],\n\t\t['Aghb', 'Caucasian_Albanian'],\n\t\t['Ahom', 'Ahom'],\n\t\t['Arab', 'Arabic'],\n\t\t['Armi', 'Imperial_Aramaic'],\n\t\t['Armn', 'Armenian'],\n\t\t['Avst', 'Avestan'],\n\t\t['Bali', 'Balinese'],\n\t\t['Bamu', 'Bamum'],\n\t\t['Bass', 'Bassa_Vah'],\n\t\t['Batk', 'Batak'],\n\t\t['Beng', 'Bengali'],\n\t\t['Bhks', 'Bhaiksuki'],\n\t\t['Bopo', 'Bopomofo'],\n\t\t['Brah', 'Brahmi'],\n\t\t['Brai', 'Braille'],\n\t\t['Bugi', 'Buginese'],\n\t\t['Buhd', 'Buhid'],\n\t\t['Cakm', 'Chakma'],\n\t\t['Cans', 'Canadian_Aboriginal'],\n\t\t['Cari', 'Carian'],\n\t\t['Cham', 'Cham'],\n\t\t['Cher', 'Cherokee'],\n\t\t['Copt', 'Coptic'],\n\t\t['Qaac', 'Coptic'],\n\t\t['Cprt', 'Cypriot'],\n\t\t['Cyrl', 'Cyrillic'],\n\t\t['Deva', 'Devanagari'],\n\t\t['Dsrt', 'Deseret'],\n\t\t['Dupl', 'Duployan'],\n\t\t['Egyp', 'Egyptian_Hieroglyphs'],\n\t\t['Elba', 'Elbasan'],\n\t\t['Ethi', 'Ethiopic'],\n\t\t['Geor', 'Georgian'],\n\t\t['Glag', 'Glagolitic'],\n\t\t['Gonm', 'Masaram_Gondi'],\n\t\t['Goth', 'Gothic'],\n\t\t['Gran', 'Grantha'],\n\t\t['Grek', 'Greek'],\n\t\t['Gujr', 'Gujarati'],\n\t\t['Guru', 'Gurmukhi'],\n\t\t['Hang', 'Hangul'],\n\t\t['Hani', 'Han'],\n\t\t['Hano', 'Hanunoo'],\n\t\t['Hatr', 'Hatran'],\n\t\t['Hebr', 'Hebrew'],\n\t\t['Hira', 'Hiragana'],\n\t\t['Hluw', 'Anatolian_Hieroglyphs'],\n\t\t['Hmng', 'Pahawh_Hmong'],\n\t\t['Hrkt', 'Katakana_Or_Hiragana'],\n\t\t['Hung', 'Old_Hungarian'],\n\t\t['Ital', 'Old_Italic'],\n\t\t['Java', 'Javanese'],\n\t\t['Kali', 'Kayah_Li'],\n\t\t['Kana', 'Katakana'],\n\t\t['Khar', 'Kharoshthi'],\n\t\t['Khmr', 'Khmer'],\n\t\t['Khoj', 'Khojki'],\n\t\t['Knda', 'Kannada'],\n\t\t['Kthi', 'Kaithi'],\n\t\t['Lana', 'Tai_Tham'],\n\t\t['Laoo', 'Lao'],\n\t\t['Latn', 'Latin'],\n\t\t['Lepc', 'Lepcha'],\n\t\t['Limb', 'Limbu'],\n\t\t['Lina', 'Linear_A'],\n\t\t['Linb', 'Linear_B'],\n\t\t['Lisu', 'Lisu'],\n\t\t['Lyci', 'Lycian'],\n\t\t['Lydi', 'Lydian'],\n\t\t['Mahj', 'Mahajani'],\n\t\t['Mand', 'Mandaic'],\n\t\t['Mani', 'Manichaean'],\n\t\t['Marc', 'Marchen'],\n\t\t['Mend', 'Mende_Kikakui'],\n\t\t['Merc', 'Meroitic_Cursive'],\n\t\t['Mero', 'Meroitic_Hieroglyphs'],\n\t\t['Mlym', 'Malayalam'],\n\t\t['Modi', 'Modi'],\n\t\t['Mong', 'Mongolian'],\n\t\t['Mroo', 'Mro'],\n\t\t['Mtei', 'Meetei_Mayek'],\n\t\t['Mult', 'Multani'],\n\t\t['Mymr', 'Myanmar'],\n\t\t['Narb', 'Old_North_Arabian'],\n\t\t['Nbat', 'Nabataean'],\n\t\t['Newa', 'Newa'],\n\t\t['Nkoo', 'Nko'],\n\t\t['Nshu', 'Nushu'],\n\t\t['Ogam', 'Ogham'],\n\t\t['Olck', 'Ol_Chiki'],\n\t\t['Orkh', 'Old_Turkic'],\n\t\t['Orya', 'Oriya'],\n\t\t['Osge', 'Osage'],\n\t\t['Osma', 'Osmanya'],\n\t\t['Palm', 'Palmyrene'],\n\t\t['Pauc', 'Pau_Cin_Hau'],\n\t\t['Perm', 'Old_Permic'],\n\t\t['Phag', 'Phags_Pa'],\n\t\t['Phli', 'Inscriptional_Pahlavi'],\n\t\t['Phlp', 'Psalter_Pahlavi'],\n\t\t['Phnx', 'Phoenician'],\n\t\t['Plrd', 'Miao'],\n\t\t['Prti', 'Inscriptional_Parthian'],\n\t\t['Rjng', 'Rejang'],\n\t\t['Runr', 'Runic'],\n\t\t['Samr', 'Samaritan'],\n\t\t['Sarb', 'Old_South_Arabian'],\n\t\t['Saur', 'Saurashtra'],\n\t\t['Sgnw', 'SignWriting'],\n\t\t['Shaw', 'Shavian'],\n\t\t['Shrd', 'Sharada'],\n\t\t['Sidd', 'Siddham'],\n\t\t['Sind', 'Khudawadi'],\n\t\t['Sinh', 'Sinhala'],\n\t\t['Sora', 'Sora_Sompeng'],\n\t\t['Soyo', 'Soyombo'],\n\t\t['Sund', 'Sundanese'],\n\t\t['Sylo', 'Syloti_Nagri'],\n\t\t['Syrc', 'Syriac'],\n\t\t['Tagb', 'Tagbanwa'],\n\t\t['Takr', 'Takri'],\n\t\t['Tale', 'Tai_Le'],\n\t\t['Talu', 'New_Tai_Lue'],\n\t\t['Taml', 'Tamil'],\n\t\t['Tang', 'Tangut'],\n\t\t['Tavt', 'Tai_Viet'],\n\t\t['Telu', 'Telugu'],\n\t\t['Tfng', 'Tifinagh'],\n\t\t['Tglg', 'Tagalog'],\n\t\t['Thaa', 'Thaana'],\n\t\t['Thai', 'Thai'],\n\t\t['Tibt', 'Tibetan'],\n\t\t['Tirh', 'Tirhuta'],\n\t\t['Ugar', 'Ugaritic'],\n\t\t['Vaii', 'Vai'],\n\t\t['Wara', 'Warang_Citi'],\n\t\t['Xpeo', 'Old_Persian'],\n\t\t['Xsux', 'Cuneiform'],\n\t\t['Yiii', 'Yi'],\n\t\t['Zanb', 'Zanabazar_Square'],\n\t\t['Zinh', 'Inherited'],\n\t\t['Qaai', 'Inherited'],\n\t\t['Zyyy', 'Common'],\n\t\t['Zzzz', 'Unknown'],\n\t\t['Adlam', 'Adlam'],\n\t\t['Caucasian_Albanian', 'Caucasian_Albanian'],\n\t\t['Arabic', 'Arabic'],\n\t\t['Imperial_Aramaic', 'Imperial_Aramaic'],\n\t\t['Armenian', 'Armenian'],\n\t\t['Avestan', 'Avestan'],\n\t\t['Balinese', 'Balinese'],\n\t\t['Bamum', 'Bamum'],\n\t\t['Bassa_Vah', 'Bassa_Vah'],\n\t\t['Batak', 'Batak'],\n\t\t['Bengali', 'Bengali'],\n\t\t['Bhaiksuki', 'Bhaiksuki'],\n\t\t['Bopomofo', 'Bopomofo'],\n\t\t['Brahmi', 'Brahmi'],\n\t\t['Braille', 'Braille'],\n\t\t['Buginese', 'Buginese'],\n\t\t['Buhid', 'Buhid'],\n\t\t['Chakma', 'Chakma'],\n\t\t['Canadian_Aboriginal', 'Canadian_Aboriginal'],\n\t\t['Carian', 'Carian'],\n\t\t['Cherokee', 'Cherokee'],\n\t\t['Coptic', 'Coptic'],\n\t\t['Cypriot', 'Cypriot'],\n\t\t['Cyrillic', 'Cyrillic'],\n\t\t['Devanagari', 'Devanagari'],\n\t\t['Deseret', 'Deseret'],\n\t\t['Duployan', 'Duployan'],\n\t\t['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t['Elbasan', 'Elbasan'],\n\t\t['Ethiopic', 'Ethiopic'],\n\t\t['Georgian', 'Georgian'],\n\t\t['Glagolitic', 'Glagolitic'],\n\t\t['Masaram_Gondi', 'Masaram_Gondi'],\n\t\t['Gothic', 'Gothic'],\n\t\t['Grantha', 'Grantha'],\n\t\t['Greek', 'Greek'],\n\t\t['Gujarati', 'Gujarati'],\n\t\t['Gurmukhi', 'Gurmukhi'],\n\t\t['Hangul', 'Hangul'],\n\t\t['Han', 'Han'],\n\t\t['Hanunoo', 'Hanunoo'],\n\t\t['Hatran', 'Hatran'],\n\t\t['Hebrew', 'Hebrew'],\n\t\t['Hiragana', 'Hiragana'],\n\t\t['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t['Pahawh_Hmong', 'Pahawh_Hmong'],\n\t\t['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'],\n\t\t['Old_Hungarian', 'Old_Hungarian'],\n\t\t['Old_Italic', 'Old_Italic'],\n\t\t['Javanese', 'Javanese'],\n\t\t['Kayah_Li', 'Kayah_Li'],\n\t\t['Katakana', 'Katakana'],\n\t\t['Kharoshthi', 'Kharoshthi'],\n\t\t['Khmer', 'Khmer'],\n\t\t['Khojki', 'Khojki'],\n\t\t['Kannada', 'Kannada'],\n\t\t['Kaithi', 'Kaithi'],\n\t\t['Tai_Tham', 'Tai_Tham'],\n\t\t['Lao', 'Lao'],\n\t\t['Latin', 'Latin'],\n\t\t['Lepcha', 'Lepcha'],\n\t\t['Limbu', 'Limbu'],\n\t\t['Linear_A', 'Linear_A'],\n\t\t['Linear_B', 'Linear_B'],\n\t\t['Lycian', 'Lycian'],\n\t\t['Lydian', 'Lydian'],\n\t\t['Mahajani', 'Mahajani'],\n\t\t['Mandaic', 'Mandaic'],\n\t\t['Manichaean', 'Manichaean'],\n\t\t['Marchen', 'Marchen'],\n\t\t['Mende_Kikakui', 'Mende_Kikakui'],\n\t\t['Meroitic_Cursive', 'Meroitic_Cursive'],\n\t\t['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t['Malayalam', 'Malayalam'],\n\t\t['Mongolian', 'Mongolian'],\n\t\t['Mro', 'Mro'],\n\t\t['Meetei_Mayek', 'Meetei_Mayek'],\n\t\t['Multani', 'Multani'],\n\t\t['Myanmar', 'Myanmar'],\n\t\t['Old_North_Arabian', 'Old_North_Arabian'],\n\t\t['Nabataean', 'Nabataean'],\n\t\t['Nko', 'Nko'],\n\t\t['Nushu', 'Nushu'],\n\t\t['Ogham', 'Ogham'],\n\t\t['Ol_Chiki', 'Ol_Chiki'],\n\t\t['Old_Turkic', 'Old_Turkic'],\n\t\t['Oriya', 'Oriya'],\n\t\t['Osage', 'Osage'],\n\t\t['Osmanya', 'Osmanya'],\n\t\t['Palmyrene', 'Palmyrene'],\n\t\t['Pau_Cin_Hau', 'Pau_Cin_Hau'],\n\t\t['Old_Permic', 'Old_Permic'],\n\t\t['Phags_Pa', 'Phags_Pa'],\n\t\t['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'],\n\t\t['Psalter_Pahlavi', 'Psalter_Pahlavi'],\n\t\t['Phoenician', 'Phoenician'],\n\t\t['Miao', 'Miao'],\n\t\t['Inscriptional_Parthian', 'Inscriptional_Parthian'],\n\t\t['Rejang', 'Rejang'],\n\t\t['Runic', 'Runic'],\n\t\t['Samaritan', 'Samaritan'],\n\t\t['Old_South_Arabian', 'Old_South_Arabian'],\n\t\t['Saurashtra', 'Saurashtra'],\n\t\t['SignWriting', 'SignWriting'],\n\t\t['Shavian', 'Shavian'],\n\t\t['Sharada', 'Sharada'],\n\t\t['Siddham', 'Siddham'],\n\t\t['Khudawadi', 'Khudawadi'],\n\t\t['Sinhala', 'Sinhala'],\n\t\t['Sora_Sompeng', 'Sora_Sompeng'],\n\t\t['Soyombo', 'Soyombo'],\n\t\t['Sundanese', 'Sundanese'],\n\t\t['Syloti_Nagri', 'Syloti_Nagri'],\n\t\t['Syriac', 'Syriac'],\n\t\t['Tagbanwa', 'Tagbanwa'],\n\t\t['Takri', 'Takri'],\n\t\t['Tai_Le', 'Tai_Le'],\n\t\t['New_Tai_Lue', 'New_Tai_Lue'],\n\t\t['Tamil', 'Tamil'],\n\t\t['Tangut', 'Tangut'],\n\t\t['Tai_Viet', 'Tai_Viet'],\n\t\t['Telugu', 'Telugu'],\n\t\t['Tifinagh', 'Tifinagh'],\n\t\t['Tagalog', 'Tagalog'],\n\t\t['Thaana', 'Thaana'],\n\t\t['Tibetan', 'Tibetan'],\n\t\t['Tirhuta', 'Tirhuta'],\n\t\t['Ugaritic', 'Ugaritic'],\n\t\t['Vai', 'Vai'],\n\t\t['Warang_Citi', 'Warang_Citi'],\n\t\t['Old_Persian', 'Old_Persian'],\n\t\t['Cuneiform', 'Cuneiform'],\n\t\t['Yi', 'Yi'],\n\t\t['Zanabazar_Square', 'Zanabazar_Square'],\n\t\t['Inherited', 'Inherited'],\n\t\t['Common', 'Common'],\n\t\t['Unknown', 'Unknown']\n\t])],\n\t['Script_Extensions', new Map([\n\t\t['Adlm', 'Adlam'],\n\t\t['Aghb', 'Caucasian_Albanian'],\n\t\t['Ahom', 'Ahom'],\n\t\t['Arab', 'Arabic'],\n\t\t['Armi', 'Imperial_Aramaic'],\n\t\t['Armn', 'Armenian'],\n\t\t['Avst', 'Avestan'],\n\t\t['Bali', 'Balinese'],\n\t\t['Bamu', 'Bamum'],\n\t\t['Bass', 'Bassa_Vah'],\n\t\t['Batk', 'Batak'],\n\t\t['Beng', 'Bengali'],\n\t\t['Bhks', 'Bhaiksuki'],\n\t\t['Bopo', 'Bopomofo'],\n\t\t['Brah', 'Brahmi'],\n\t\t['Brai', 'Braille'],\n\t\t['Bugi', 'Buginese'],\n\t\t['Buhd', 'Buhid'],\n\t\t['Cakm', 'Chakma'],\n\t\t['Cans', 'Canadian_Aboriginal'],\n\t\t['Cari', 'Carian'],\n\t\t['Cham', 'Cham'],\n\t\t['Cher', 'Cherokee'],\n\t\t['Copt', 'Coptic'],\n\t\t['Qaac', 'Coptic'],\n\t\t['Cprt', 'Cypriot'],\n\t\t['Cyrl', 'Cyrillic'],\n\t\t['Deva', 'Devanagari'],\n\t\t['Dsrt', 'Deseret'],\n\t\t['Dupl', 'Duployan'],\n\t\t['Egyp', 'Egyptian_Hieroglyphs'],\n\t\t['Elba', 'Elbasan'],\n\t\t['Ethi', 'Ethiopic'],\n\t\t['Geor', 'Georgian'],\n\t\t['Glag', 'Glagolitic'],\n\t\t['Gonm', 'Masaram_Gondi'],\n\t\t['Goth', 'Gothic'],\n\t\t['Gran', 'Grantha'],\n\t\t['Grek', 'Greek'],\n\t\t['Gujr', 'Gujarati'],\n\t\t['Guru', 'Gurmukhi'],\n\t\t['Hang', 'Hangul'],\n\t\t['Hani', 'Han'],\n\t\t['Hano', 'Hanunoo'],\n\t\t['Hatr', 'Hatran'],\n\t\t['Hebr', 'Hebrew'],\n\t\t['Hira', 'Hiragana'],\n\t\t['Hluw', 'Anatolian_Hieroglyphs'],\n\t\t['Hmng', 'Pahawh_Hmong'],\n\t\t['Hrkt', 'Katakana_Or_Hiragana'],\n\t\t['Hung', 'Old_Hungarian'],\n\t\t['Ital', 'Old_Italic'],\n\t\t['Java', 'Javanese'],\n\t\t['Kali', 'Kayah_Li'],\n\t\t['Kana', 'Katakana'],\n\t\t['Khar', 'Kharoshthi'],\n\t\t['Khmr', 'Khmer'],\n\t\t['Khoj', 'Khojki'],\n\t\t['Knda', 'Kannada'],\n\t\t['Kthi', 'Kaithi'],\n\t\t['Lana', 'Tai_Tham'],\n\t\t['Laoo', 'Lao'],\n\t\t['Latn', 'Latin'],\n\t\t['Lepc', 'Lepcha'],\n\t\t['Limb', 'Limbu'],\n\t\t['Lina', 'Linear_A'],\n\t\t['Linb', 'Linear_B'],\n\t\t['Lisu', 'Lisu'],\n\t\t['Lyci', 'Lycian'],\n\t\t['Lydi', 'Lydian'],\n\t\t['Mahj', 'Mahajani'],\n\t\t['Mand', 'Mandaic'],\n\t\t['Mani', 'Manichaean'],\n\t\t['Marc', 'Marchen'],\n\t\t['Mend', 'Mende_Kikakui'],\n\t\t['Merc', 'Meroitic_Cursive'],\n\t\t['Mero', 'Meroitic_Hieroglyphs'],\n\t\t['Mlym', 'Malayalam'],\n\t\t['Modi', 'Modi'],\n\t\t['Mong', 'Mongolian'],\n\t\t['Mroo', 'Mro'],\n\t\t['Mtei', 'Meetei_Mayek'],\n\t\t['Mult', 'Multani'],\n\t\t['Mymr', 'Myanmar'],\n\t\t['Narb', 'Old_North_Arabian'],\n\t\t['Nbat', 'Nabataean'],\n\t\t['Newa', 'Newa'],\n\t\t['Nkoo', 'Nko'],\n\t\t['Nshu', 'Nushu'],\n\t\t['Ogam', 'Ogham'],\n\t\t['Olck', 'Ol_Chiki'],\n\t\t['Orkh', 'Old_Turkic'],\n\t\t['Orya', 'Oriya'],\n\t\t['Osge', 'Osage'],\n\t\t['Osma', 'Osmanya'],\n\t\t['Palm', 'Palmyrene'],\n\t\t['Pauc', 'Pau_Cin_Hau'],\n\t\t['Perm', 'Old_Permic'],\n\t\t['Phag', 'Phags_Pa'],\n\t\t['Phli', 'Inscriptional_Pahlavi'],\n\t\t['Phlp', 'Psalter_Pahlavi'],\n\t\t['Phnx', 'Phoenician'],\n\t\t['Plrd', 'Miao'],\n\t\t['Prti', 'Inscriptional_Parthian'],\n\t\t['Rjng', 'Rejang'],\n\t\t['Runr', 'Runic'],\n\t\t['Samr', 'Samaritan'],\n\t\t['Sarb', 'Old_South_Arabian'],\n\t\t['Saur', 'Saurashtra'],\n\t\t['Sgnw', 'SignWriting'],\n\t\t['Shaw', 'Shavian'],\n\t\t['Shrd', 'Sharada'],\n\t\t['Sidd', 'Siddham'],\n\t\t['Sind', 'Khudawadi'],\n\t\t['Sinh', 'Sinhala'],\n\t\t['Sora', 'Sora_Sompeng'],\n\t\t['Soyo', 'Soyombo'],\n\t\t['Sund', 'Sundanese'],\n\t\t['Sylo', 'Syloti_Nagri'],\n\t\t['Syrc', 'Syriac'],\n\t\t['Tagb', 'Tagbanwa'],\n\t\t['Takr', 'Takri'],\n\t\t['Tale', 'Tai_Le'],\n\t\t['Talu', 'New_Tai_Lue'],\n\t\t['Taml', 'Tamil'],\n\t\t['Tang', 'Tangut'],\n\t\t['Tavt', 'Tai_Viet'],\n\t\t['Telu', 'Telugu'],\n\t\t['Tfng', 'Tifinagh'],\n\t\t['Tglg', 'Tagalog'],\n\t\t['Thaa', 'Thaana'],\n\t\t['Thai', 'Thai'],\n\t\t['Tibt', 'Tibetan'],\n\t\t['Tirh', 'Tirhuta'],\n\t\t['Ugar', 'Ugaritic'],\n\t\t['Vaii', 'Vai'],\n\t\t['Wara', 'Warang_Citi'],\n\t\t['Xpeo', 'Old_Persian'],\n\t\t['Xsux', 'Cuneiform'],\n\t\t['Yiii', 'Yi'],\n\t\t['Zanb', 'Zanabazar_Square'],\n\t\t['Zinh', 'Inherited'],\n\t\t['Qaai', 'Inherited'],\n\t\t['Zyyy', 'Common'],\n\t\t['Zzzz', 'Unknown'],\n\t\t['Adlam', 'Adlam'],\n\t\t['Caucasian_Albanian', 'Caucasian_Albanian'],\n\t\t['Arabic', 'Arabic'],\n\t\t['Imperial_Aramaic', 'Imperial_Aramaic'],\n\t\t['Armenian', 'Armenian'],\n\t\t['Avestan', 'Avestan'],\n\t\t['Balinese', 'Balinese'],\n\t\t['Bamum', 'Bamum'],\n\t\t['Bassa_Vah', 'Bassa_Vah'],\n\t\t['Batak', 'Batak'],\n\t\t['Bengali', 'Bengali'],\n\t\t['Bhaiksuki', 'Bhaiksuki'],\n\t\t['Bopomofo', 'Bopomofo'],\n\t\t['Brahmi', 'Brahmi'],\n\t\t['Braille', 'Braille'],\n\t\t['Buginese', 'Buginese'],\n\t\t['Buhid', 'Buhid'],\n\t\t['Chakma', 'Chakma'],\n\t\t['Canadian_Aboriginal', 'Canadian_Aboriginal'],\n\t\t['Carian', 'Carian'],\n\t\t['Cherokee', 'Cherokee'],\n\t\t['Coptic', 'Coptic'],\n\t\t['Cypriot', 'Cypriot'],\n\t\t['Cyrillic', 'Cyrillic'],\n\t\t['Devanagari', 'Devanagari'],\n\t\t['Deseret', 'Deseret'],\n\t\t['Duployan', 'Duployan'],\n\t\t['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t['Elbasan', 'Elbasan'],\n\t\t['Ethiopic', 'Ethiopic'],\n\t\t['Georgian', 'Georgian'],\n\t\t['Glagolitic', 'Glagolitic'],\n\t\t['Masaram_Gondi', 'Masaram_Gondi'],\n\t\t['Gothic', 'Gothic'],\n\t\t['Grantha', 'Grantha'],\n\t\t['Greek', 'Greek'],\n\t\t['Gujarati', 'Gujarati'],\n\t\t['Gurmukhi', 'Gurmukhi'],\n\t\t['Hangul', 'Hangul'],\n\t\t['Han', 'Han'],\n\t\t['Hanunoo', 'Hanunoo'],\n\t\t['Hatran', 'Hatran'],\n\t\t['Hebrew', 'Hebrew'],\n\t\t['Hiragana', 'Hiragana'],\n\t\t['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t['Pahawh_Hmong', 'Pahawh_Hmong'],\n\t\t['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'],\n\t\t['Old_Hungarian', 'Old_Hungarian'],\n\t\t['Old_Italic', 'Old_Italic'],\n\t\t['Javanese', 'Javanese'],\n\t\t['Kayah_Li', 'Kayah_Li'],\n\t\t['Katakana', 'Katakana'],\n\t\t['Kharoshthi', 'Kharoshthi'],\n\t\t['Khmer', 'Khmer'],\n\t\t['Khojki', 'Khojki'],\n\t\t['Kannada', 'Kannada'],\n\t\t['Kaithi', 'Kaithi'],\n\t\t['Tai_Tham', 'Tai_Tham'],\n\t\t['Lao', 'Lao'],\n\t\t['Latin', 'Latin'],\n\t\t['Lepcha', 'Lepcha'],\n\t\t['Limbu', 'Limbu'],\n\t\t['Linear_A', 'Linear_A'],\n\t\t['Linear_B', 'Linear_B'],\n\t\t['Lycian', 'Lycian'],\n\t\t['Lydian', 'Lydian'],\n\t\t['Mahajani', 'Mahajani'],\n\t\t['Mandaic', 'Mandaic'],\n\t\t['Manichaean', 'Manichaean'],\n\t\t['Marchen', 'Marchen'],\n\t\t['Mende_Kikakui', 'Mende_Kikakui'],\n\t\t['Meroitic_Cursive', 'Meroitic_Cursive'],\n\t\t['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t['Malayalam', 'Malayalam'],\n\t\t['Mongolian', 'Mongolian'],\n\t\t['Mro', 'Mro'],\n\t\t['Meetei_Mayek', 'Meetei_Mayek'],\n\t\t['Multani', 'Multani'],\n\t\t['Myanmar', 'Myanmar'],\n\t\t['Old_North_Arabian', 'Old_North_Arabian'],\n\t\t['Nabataean', 'Nabataean'],\n\t\t['Nko', 'Nko'],\n\t\t['Nushu', 'Nushu'],\n\t\t['Ogham', 'Ogham'],\n\t\t['Ol_Chiki', 'Ol_Chiki'],\n\t\t['Old_Turkic', 'Old_Turkic'],\n\t\t['Oriya', 'Oriya'],\n\t\t['Osage', 'Osage'],\n\t\t['Osmanya', 'Osmanya'],\n\t\t['Palmyrene', 'Palmyrene'],\n\t\t['Pau_Cin_Hau', 'Pau_Cin_Hau'],\n\t\t['Old_Permic', 'Old_Permic'],\n\t\t['Phags_Pa', 'Phags_Pa'],\n\t\t['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'],\n\t\t['Psalter_Pahlavi', 'Psalter_Pahlavi'],\n\t\t['Phoenician', 'Phoenician'],\n\t\t['Miao', 'Miao'],\n\t\t['Inscriptional_Parthian', 'Inscriptional_Parthian'],\n\t\t['Rejang', 'Rejang'],\n\t\t['Runic', 'Runic'],\n\t\t['Samaritan', 'Samaritan'],\n\t\t['Old_South_Arabian', 'Old_South_Arabian'],\n\t\t['Saurashtra', 'Saurashtra'],\n\t\t['SignWriting', 'SignWriting'],\n\t\t['Shavian', 'Shavian'],\n\t\t['Sharada', 'Sharada'],\n\t\t['Siddham', 'Siddham'],\n\t\t['Khudawadi', 'Khudawadi'],\n\t\t['Sinhala', 'Sinhala'],\n\t\t['Sora_Sompeng', 'Sora_Sompeng'],\n\t\t['Soyombo', 'Soyombo'],\n\t\t['Sundanese', 'Sundanese'],\n\t\t['Syloti_Nagri', 'Syloti_Nagri'],\n\t\t['Syriac', 'Syriac'],\n\t\t['Tagbanwa', 'Tagbanwa'],\n\t\t['Takri', 'Takri'],\n\t\t['Tai_Le', 'Tai_Le'],\n\t\t['New_Tai_Lue', 'New_Tai_Lue'],\n\t\t['Tamil', 'Tamil'],\n\t\t['Tangut', 'Tangut'],\n\t\t['Tai_Viet', 'Tai_Viet'],\n\t\t['Telugu', 'Telugu'],\n\t\t['Tifinagh', 'Tifinagh'],\n\t\t['Tagalog', 'Tagalog'],\n\t\t['Thaana', 'Thaana'],\n\t\t['Tibetan', 'Tibetan'],\n\t\t['Tirhuta', 'Tirhuta'],\n\t\t['Ugaritic', 'Ugaritic'],\n\t\t['Vai', 'Vai'],\n\t\t['Warang_Citi', 'Warang_Citi'],\n\t\t['Old_Persian', 'Old_Persian'],\n\t\t['Cuneiform', 'Cuneiform'],\n\t\t['Yi', 'Yi'],\n\t\t['Zanabazar_Square', 'Zanabazar_Square'],\n\t\t['Inherited', 'Inherited'],\n\t\t['Common', 'Common'],\n\t\t['Unknown', 'Unknown']\n\t])]\n]);\n","'use strict';\n\nconst propertyToValueAliases = require('./data/mappings.js');\n\nconst matchPropertyValue = function(property, value) {\n\tconst aliasToValue = propertyToValueAliases.get(property);\n\tif (!aliasToValue) {\n\t\tthrow new Error(`Unknown property \\`${ property }\\`.`);\n\t}\n\tconst canonicalValue = aliasToValue.get(value);\n\tif (canonicalValue) {\n\t\treturn canonicalValue;\n\t}\n\tthrow new Error(\n\t\t`Unknown value \\`${ value }\\` for property \\`${ property }\\`.`\n\t);\n};\n\nmodule.exports = matchPropertyValue;\n","module.exports = new Map([\n\t[0x4B, 0x212A],\n\t[0x53, 0x17F],\n\t[0x6B, 0x212A],\n\t[0x73, 0x17F],\n\t[0xB5, 0x39C],\n\t[0xC5, 0x212B],\n\t[0xDF, 0x1E9E],\n\t[0xE5, 0x212B],\n\t[0x17F, 0x53],\n\t[0x1C4, 0x1C5],\n\t[0x1C5, 0x1C4],\n\t[0x1C7, 0x1C8],\n\t[0x1C8, 0x1C7],\n\t[0x1CA, 0x1CB],\n\t[0x1CB, 0x1CA],\n\t[0x1F1, 0x1F2],\n\t[0x1F2, 0x1F1],\n\t[0x26A, 0xA7AE],\n\t[0x29D, 0xA7B2],\n\t[0x345, 0x1FBE],\n\t[0x392, 0x3D0],\n\t[0x395, 0x3F5],\n\t[0x398, 0x3F4],\n\t[0x399, 0x1FBE],\n\t[0x39A, 0x3F0],\n\t[0x39C, 0xB5],\n\t[0x3A0, 0x3D6],\n\t[0x3A1, 0x3F1],\n\t[0x3A3, 0x3C2],\n\t[0x3A6, 0x3D5],\n\t[0x3A9, 0x2126],\n\t[0x3B8, 0x3F4],\n\t[0x3C2, 0x3A3],\n\t[0x3C9, 0x2126],\n\t[0x3D0, 0x392],\n\t[0x3D1, 0x3F4],\n\t[0x3D5, 0x3A6],\n\t[0x3D6, 0x3A0],\n\t[0x3F0, 0x39A],\n\t[0x3F1, 0x3A1],\n\t[0x3F4, [\n\t\t0x398,\n\t\t0x3D1,\n\t\t0x3B8\n\t]],\n\t[0x3F5, 0x395],\n\t[0x412, 0x1C80],\n\t[0x414, 0x1C81],\n\t[0x41E, 0x1C82],\n\t[0x421, 0x1C83],\n\t[0x422, 0x1C85],\n\t[0x42A, 0x1C86],\n\t[0x432, 0x1C80],\n\t[0x434, 0x1C81],\n\t[0x43E, 0x1C82],\n\t[0x441, 0x1C83],\n\t[0x442, [\n\t\t0x1C84,\n\t\t0x1C85\n\t]],\n\t[0x44A, 0x1C86],\n\t[0x462, 0x1C87],\n\t[0x463, 0x1C87],\n\t[0x13A0, 0xAB70],\n\t[0x13A1, 0xAB71],\n\t[0x13A2, 0xAB72],\n\t[0x13A3, 0xAB73],\n\t[0x13A4, 0xAB74],\n\t[0x13A5, 0xAB75],\n\t[0x13A6, 0xAB76],\n\t[0x13A7, 0xAB77],\n\t[0x13A8, 0xAB78],\n\t[0x13A9, 0xAB79],\n\t[0x13AA, 0xAB7A],\n\t[0x13AB, 0xAB7B],\n\t[0x13AC, 0xAB7C],\n\t[0x13AD, 0xAB7D],\n\t[0x13AE, 0xAB7E],\n\t[0x13AF, 0xAB7F],\n\t[0x13B0, 0xAB80],\n\t[0x13B1, 0xAB81],\n\t[0x13B2, 0xAB82],\n\t[0x13B3, 0xAB83],\n\t[0x13B4, 0xAB84],\n\t[0x13B5, 0xAB85],\n\t[0x13B6, 0xAB86],\n\t[0x13B7, 0xAB87],\n\t[0x13B8, 0xAB88],\n\t[0x13B9, 0xAB89],\n\t[0x13BA, 0xAB8A],\n\t[0x13BB, 0xAB8B],\n\t[0x13BC, 0xAB8C],\n\t[0x13BD, 0xAB8D],\n\t[0x13BE, 0xAB8E],\n\t[0x13BF, 0xAB8F],\n\t[0x13C0, 0xAB90],\n\t[0x13C1, 0xAB91],\n\t[0x13C2, 0xAB92],\n\t[0x13C3, 0xAB93],\n\t[0x13C4, 0xAB94],\n\t[0x13C5, 0xAB95],\n\t[0x13C6, 0xAB96],\n\t[0x13C7, 0xAB97],\n\t[0x13C8, 0xAB98],\n\t[0x13C9, 0xAB99],\n\t[0x13CA, 0xAB9A],\n\t[0x13CB, 0xAB9B],\n\t[0x13CC, 0xAB9C],\n\t[0x13CD, 0xAB9D],\n\t[0x13CE, 0xAB9E],\n\t[0x13CF, 0xAB9F],\n\t[0x13D0, 0xABA0],\n\t[0x13D1, 0xABA1],\n\t[0x13D2, 0xABA2],\n\t[0x13D3, 0xABA3],\n\t[0x13D4, 0xABA4],\n\t[0x13D5, 0xABA5],\n\t[0x13D6, 0xABA6],\n\t[0x13D7, 0xABA7],\n\t[0x13D8, 0xABA8],\n\t[0x13D9, 0xABA9],\n\t[0x13DA, 0xABAA],\n\t[0x13DB, 0xABAB],\n\t[0x13DC, 0xABAC],\n\t[0x13DD, 0xABAD],\n\t[0x13DE, 0xABAE],\n\t[0x13DF, 0xABAF],\n\t[0x13E0, 0xABB0],\n\t[0x13E1, 0xABB1],\n\t[0x13E2, 0xABB2],\n\t[0x13E3, 0xABB3],\n\t[0x13E4, 0xABB4],\n\t[0x13E5, 0xABB5],\n\t[0x13E6, 0xABB6],\n\t[0x13E7, 0xABB7],\n\t[0x13E8, 0xABB8],\n\t[0x13E9, 0xABB9],\n\t[0x13EA, 0xABBA],\n\t[0x13EB, 0xABBB],\n\t[0x13EC, 0xABBC],\n\t[0x13ED, 0xABBD],\n\t[0x13EE, 0xABBE],\n\t[0x13EF, 0xABBF],\n\t[0x13F0, 0x13F8],\n\t[0x13F1, 0x13F9],\n\t[0x13F2, 0x13FA],\n\t[0x13F3, 0x13FB],\n\t[0x13F4, 0x13FC],\n\t[0x13F5, 0x13FD],\n\t[0x13F8, 0x13F0],\n\t[0x13F9, 0x13F1],\n\t[0x13FA, 0x13F2],\n\t[0x13FB, 0x13F3],\n\t[0x13FC, 0x13F4],\n\t[0x13FD, 0x13F5],\n\t[0x1C80, [\n\t\t0x412,\n\t\t0x432\n\t]],\n\t[0x1C81, [\n\t\t0x414,\n\t\t0x434\n\t]],\n\t[0x1C82, [\n\t\t0x41E,\n\t\t0x43E\n\t]],\n\t[0x1C83, [\n\t\t0x421,\n\t\t0x441\n\t]],\n\t[0x1C84, [\n\t\t0x1C85,\n\t\t0x442\n\t]],\n\t[0x1C85, [\n\t\t0x422,\n\t\t0x1C84,\n\t\t0x442\n\t]],\n\t[0x1C86, [\n\t\t0x42A,\n\t\t0x44A\n\t]],\n\t[0x1C87, [\n\t\t0x462,\n\t\t0x463\n\t]],\n\t[0x1C88, [\n\t\t0xA64A,\n\t\t0xA64B\n\t]],\n\t[0x1E60, 0x1E9B],\n\t[0x1E9B, 0x1E60],\n\t[0x1E9E, 0xDF],\n\t[0x1F80, 0x1F88],\n\t[0x1F81, 0x1F89],\n\t[0x1F82, 0x1F8A],\n\t[0x1F83, 0x1F8B],\n\t[0x1F84, 0x1F8C],\n\t[0x1F85, 0x1F8D],\n\t[0x1F86, 0x1F8E],\n\t[0x1F87, 0x1F8F],\n\t[0x1F88, 0x1F80],\n\t[0x1F89, 0x1F81],\n\t[0x1F8A, 0x1F82],\n\t[0x1F8B, 0x1F83],\n\t[0x1F8C, 0x1F84],\n\t[0x1F8D, 0x1F85],\n\t[0x1F8E, 0x1F86],\n\t[0x1F8F, 0x1F87],\n\t[0x1F90, 0x1F98],\n\t[0x1F91, 0x1F99],\n\t[0x1F92, 0x1F9A],\n\t[0x1F93, 0x1F9B],\n\t[0x1F94, 0x1F9C],\n\t[0x1F95, 0x1F9D],\n\t[0x1F96, 0x1F9E],\n\t[0x1F97, 0x1F9F],\n\t[0x1F98, 0x1F90],\n\t[0x1F99, 0x1F91],\n\t[0x1F9A, 0x1F92],\n\t[0x1F9B, 0x1F93],\n\t[0x1F9C, 0x1F94],\n\t[0x1F9D, 0x1F95],\n\t[0x1F9E, 0x1F96],\n\t[0x1F9F, 0x1F97],\n\t[0x1FA0, 0x1FA8],\n\t[0x1FA1, 0x1FA9],\n\t[0x1FA2, 0x1FAA],\n\t[0x1FA3, 0x1FAB],\n\t[0x1FA4, 0x1FAC],\n\t[0x1FA5, 0x1FAD],\n\t[0x1FA6, 0x1FAE],\n\t[0x1FA7, 0x1FAF],\n\t[0x1FA8, 0x1FA0],\n\t[0x1FA9, 0x1FA1],\n\t[0x1FAA, 0x1FA2],\n\t[0x1FAB, 0x1FA3],\n\t[0x1FAC, 0x1FA4],\n\t[0x1FAD, 0x1FA5],\n\t[0x1FAE, 0x1FA6],\n\t[0x1FAF, 0x1FA7],\n\t[0x1FB3, 0x1FBC],\n\t[0x1FBC, 0x1FB3],\n\t[0x1FBE, [\n\t\t0x345,\n\t\t0x399\n\t]],\n\t[0x1FC3, 0x1FCC],\n\t[0x1FCC, 0x1FC3],\n\t[0x1FF3, 0x1FFC],\n\t[0x1FFC, 0x1FF3],\n\t[0x2126, [\n\t\t0x3A9,\n\t\t0x3C9\n\t]],\n\t[0x212A, 0x4B],\n\t[0x212B, [\n\t\t0xC5,\n\t\t0xE5\n\t]],\n\t[0xA64A, 0x1C88],\n\t[0xA64B, 0x1C88],\n\t[0xA7AE, 0x26A],\n\t[0xA7B2, 0x29D],\n\t[0xA7B3, 0xAB53],\n\t[0xA7B4, 0xA7B5],\n\t[0xA7B5, 0xA7B4],\n\t[0xA7B6, 0xA7B7],\n\t[0xA7B7, 0xA7B6],\n\t[0xAB53, 0xA7B3],\n\t[0xAB70, 0x13A0],\n\t[0xAB71, 0x13A1],\n\t[0xAB72, 0x13A2],\n\t[0xAB73, 0x13A3],\n\t[0xAB74, 0x13A4],\n\t[0xAB75, 0x13A5],\n\t[0xAB76, 0x13A6],\n\t[0xAB77, 0x13A7],\n\t[0xAB78, 0x13A8],\n\t[0xAB79, 0x13A9],\n\t[0xAB7A, 0x13AA],\n\t[0xAB7B, 0x13AB],\n\t[0xAB7C, 0x13AC],\n\t[0xAB7D, 0x13AD],\n\t[0xAB7E, 0x13AE],\n\t[0xAB7F, 0x13AF],\n\t[0xAB80, 0x13B0],\n\t[0xAB81, 0x13B1],\n\t[0xAB82, 0x13B2],\n\t[0xAB83, 0x13B3],\n\t[0xAB84, 0x13B4],\n\t[0xAB85, 0x13B5],\n\t[0xAB86, 0x13B6],\n\t[0xAB87, 0x13B7],\n\t[0xAB88, 0x13B8],\n\t[0xAB89, 0x13B9],\n\t[0xAB8A, 0x13BA],\n\t[0xAB8B, 0x13BB],\n\t[0xAB8C, 0x13BC],\n\t[0xAB8D, 0x13BD],\n\t[0xAB8E, 0x13BE],\n\t[0xAB8F, 0x13BF],\n\t[0xAB90, 0x13C0],\n\t[0xAB91, 0x13C1],\n\t[0xAB92, 0x13C2],\n\t[0xAB93, 0x13C3],\n\t[0xAB94, 0x13C4],\n\t[0xAB95, 0x13C5],\n\t[0xAB96, 0x13C6],\n\t[0xAB97, 0x13C7],\n\t[0xAB98, 0x13C8],\n\t[0xAB99, 0x13C9],\n\t[0xAB9A, 0x13CA],\n\t[0xAB9B, 0x13CB],\n\t[0xAB9C, 0x13CC],\n\t[0xAB9D, 0x13CD],\n\t[0xAB9E, 0x13CE],\n\t[0xAB9F, 0x13CF],\n\t[0xABA0, 0x13D0],\n\t[0xABA1, 0x13D1],\n\t[0xABA2, 0x13D2],\n\t[0xABA3, 0x13D3],\n\t[0xABA4, 0x13D4],\n\t[0xABA5, 0x13D5],\n\t[0xABA6, 0x13D6],\n\t[0xABA7, 0x13D7],\n\t[0xABA8, 0x13D8],\n\t[0xABA9, 0x13D9],\n\t[0xABAA, 0x13DA],\n\t[0xABAB, 0x13DB],\n\t[0xABAC, 0x13DC],\n\t[0xABAD, 0x13DD],\n\t[0xABAE, 0x13DE],\n\t[0xABAF, 0x13DF],\n\t[0xABB0, 0x13E0],\n\t[0xABB1, 0x13E1],\n\t[0xABB2, 0x13E2],\n\t[0xABB3, 0x13E3],\n\t[0xABB4, 0x13E4],\n\t[0xABB5, 0x13E5],\n\t[0xABB6, 0x13E6],\n\t[0xABB7, 0x13E7],\n\t[0xABB8, 0x13E8],\n\t[0xABB9, 0x13E9],\n\t[0xABBA, 0x13EA],\n\t[0xABBB, 0x13EB],\n\t[0xABBC, 0x13EC],\n\t[0xABBD, 0x13ED],\n\t[0xABBE, 0x13EE],\n\t[0xABBF, 0x13EF],\n\t[0x10400, 0x10428],\n\t[0x10401, 0x10429],\n\t[0x10402, 0x1042A],\n\t[0x10403, 0x1042B],\n\t[0x10404, 0x1042C],\n\t[0x10405, 0x1042D],\n\t[0x10406, 0x1042E],\n\t[0x10407, 0x1042F],\n\t[0x10408, 0x10430],\n\t[0x10409, 0x10431],\n\t[0x1040A, 0x10432],\n\t[0x1040B, 0x10433],\n\t[0x1040C, 0x10434],\n\t[0x1040D, 0x10435],\n\t[0x1040E, 0x10436],\n\t[0x1040F, 0x10437],\n\t[0x10410, 0x10438],\n\t[0x10411, 0x10439],\n\t[0x10412, 0x1043A],\n\t[0x10413, 0x1043B],\n\t[0x10414, 0x1043C],\n\t[0x10415, 0x1043D],\n\t[0x10416, 0x1043E],\n\t[0x10417, 0x1043F],\n\t[0x10418, 0x10440],\n\t[0x10419, 0x10441],\n\t[0x1041A, 0x10442],\n\t[0x1041B, 0x10443],\n\t[0x1041C, 0x10444],\n\t[0x1041D, 0x10445],\n\t[0x1041E, 0x10446],\n\t[0x1041F, 0x10447],\n\t[0x10420, 0x10448],\n\t[0x10421, 0x10449],\n\t[0x10422, 0x1044A],\n\t[0x10423, 0x1044B],\n\t[0x10424, 0x1044C],\n\t[0x10425, 0x1044D],\n\t[0x10426, 0x1044E],\n\t[0x10427, 0x1044F],\n\t[0x10428, 0x10400],\n\t[0x10429, 0x10401],\n\t[0x1042A, 0x10402],\n\t[0x1042B, 0x10403],\n\t[0x1042C, 0x10404],\n\t[0x1042D, 0x10405],\n\t[0x1042E, 0x10406],\n\t[0x1042F, 0x10407],\n\t[0x10430, 0x10408],\n\t[0x10431, 0x10409],\n\t[0x10432, 0x1040A],\n\t[0x10433, 0x1040B],\n\t[0x10434, 0x1040C],\n\t[0x10435, 0x1040D],\n\t[0x10436, 0x1040E],\n\t[0x10437, 0x1040F],\n\t[0x10438, 0x10410],\n\t[0x10439, 0x10411],\n\t[0x1043A, 0x10412],\n\t[0x1043B, 0x10413],\n\t[0x1043C, 0x10414],\n\t[0x1043D, 0x10415],\n\t[0x1043E, 0x10416],\n\t[0x1043F, 0x10417],\n\t[0x10440, 0x10418],\n\t[0x10441, 0x10419],\n\t[0x10442, 0x1041A],\n\t[0x10443, 0x1041B],\n\t[0x10444, 0x1041C],\n\t[0x10445, 0x1041D],\n\t[0x10446, 0x1041E],\n\t[0x10447, 0x1041F],\n\t[0x10448, 0x10420],\n\t[0x10449, 0x10421],\n\t[0x1044A, 0x10422],\n\t[0x1044B, 0x10423],\n\t[0x1044C, 0x10424],\n\t[0x1044D, 0x10425],\n\t[0x1044E, 0x10426],\n\t[0x1044F, 0x10427],\n\t[0x104B0, 0x104D8],\n\t[0x104B1, 0x104D9],\n\t[0x104B2, 0x104DA],\n\t[0x104B3, 0x104DB],\n\t[0x104B4, 0x104DC],\n\t[0x104B5, 0x104DD],\n\t[0x104B6, 0x104DE],\n\t[0x104B7, 0x104DF],\n\t[0x104B8, 0x104E0],\n\t[0x104B9, 0x104E1],\n\t[0x104BA, 0x104E2],\n\t[0x104BB, 0x104E3],\n\t[0x104BC, 0x104E4],\n\t[0x104BD, 0x104E5],\n\t[0x104BE, 0x104E6],\n\t[0x104BF, 0x104E7],\n\t[0x104C0, 0x104E8],\n\t[0x104C1, 0x104E9],\n\t[0x104C2, 0x104EA],\n\t[0x104C3, 0x104EB],\n\t[0x104C4, 0x104EC],\n\t[0x104C5, 0x104ED],\n\t[0x104C6, 0x104EE],\n\t[0x104C7, 0x104EF],\n\t[0x104C8, 0x104F0],\n\t[0x104C9, 0x104F1],\n\t[0x104CA, 0x104F2],\n\t[0x104CB, 0x104F3],\n\t[0x104CC, 0x104F4],\n\t[0x104CD, 0x104F5],\n\t[0x104CE, 0x104F6],\n\t[0x104CF, 0x104F7],\n\t[0x104D0, 0x104F8],\n\t[0x104D1, 0x104F9],\n\t[0x104D2, 0x104FA],\n\t[0x104D3, 0x104FB],\n\t[0x104D8, 0x104B0],\n\t[0x104D9, 0x104B1],\n\t[0x104DA, 0x104B2],\n\t[0x104DB, 0x104B3],\n\t[0x104DC, 0x104B4],\n\t[0x104DD, 0x104B5],\n\t[0x104DE, 0x104B6],\n\t[0x104DF, 0x104B7],\n\t[0x104E0, 0x104B8],\n\t[0x104E1, 0x104B9],\n\t[0x104E2, 0x104BA],\n\t[0x104E3, 0x104BB],\n\t[0x104E4, 0x104BC],\n\t[0x104E5, 0x104BD],\n\t[0x104E6, 0x104BE],\n\t[0x104E7, 0x104BF],\n\t[0x104E8, 0x104C0],\n\t[0x104E9, 0x104C1],\n\t[0x104EA, 0x104C2],\n\t[0x104EB, 0x104C3],\n\t[0x104EC, 0x104C4],\n\t[0x104ED, 0x104C5],\n\t[0x104EE, 0x104C6],\n\t[0x104EF, 0x104C7],\n\t[0x104F0, 0x104C8],\n\t[0x104F1, 0x104C9],\n\t[0x104F2, 0x104CA],\n\t[0x104F3, 0x104CB],\n\t[0x104F4, 0x104CC],\n\t[0x104F5, 0x104CD],\n\t[0x104F6, 0x104CE],\n\t[0x104F7, 0x104CF],\n\t[0x104F8, 0x104D0],\n\t[0x104F9, 0x104D1],\n\t[0x104FA, 0x104D2],\n\t[0x104FB, 0x104D3],\n\t[0x10C80, 0x10CC0],\n\t[0x10C81, 0x10CC1],\n\t[0x10C82, 0x10CC2],\n\t[0x10C83, 0x10CC3],\n\t[0x10C84, 0x10CC4],\n\t[0x10C85, 0x10CC5],\n\t[0x10C86, 0x10CC6],\n\t[0x10C87, 0x10CC7],\n\t[0x10C88, 0x10CC8],\n\t[0x10C89, 0x10CC9],\n\t[0x10C8A, 0x10CCA],\n\t[0x10C8B, 0x10CCB],\n\t[0x10C8C, 0x10CCC],\n\t[0x10C8D, 0x10CCD],\n\t[0x10C8E, 0x10CCE],\n\t[0x10C8F, 0x10CCF],\n\t[0x10C90, 0x10CD0],\n\t[0x10C91, 0x10CD1],\n\t[0x10C92, 0x10CD2],\n\t[0x10C93, 0x10CD3],\n\t[0x10C94, 0x10CD4],\n\t[0x10C95, 0x10CD5],\n\t[0x10C96, 0x10CD6],\n\t[0x10C97, 0x10CD7],\n\t[0x10C98, 0x10CD8],\n\t[0x10C99, 0x10CD9],\n\t[0x10C9A, 0x10CDA],\n\t[0x10C9B, 0x10CDB],\n\t[0x10C9C, 0x10CDC],\n\t[0x10C9D, 0x10CDD],\n\t[0x10C9E, 0x10CDE],\n\t[0x10C9F, 0x10CDF],\n\t[0x10CA0, 0x10CE0],\n\t[0x10CA1, 0x10CE1],\n\t[0x10CA2, 0x10CE2],\n\t[0x10CA3, 0x10CE3],\n\t[0x10CA4, 0x10CE4],\n\t[0x10CA5, 0x10CE5],\n\t[0x10CA6, 0x10CE6],\n\t[0x10CA7, 0x10CE7],\n\t[0x10CA8, 0x10CE8],\n\t[0x10CA9, 0x10CE9],\n\t[0x10CAA, 0x10CEA],\n\t[0x10CAB, 0x10CEB],\n\t[0x10CAC, 0x10CEC],\n\t[0x10CAD, 0x10CED],\n\t[0x10CAE, 0x10CEE],\n\t[0x10CAF, 0x10CEF],\n\t[0x10CB0, 0x10CF0],\n\t[0x10CB1, 0x10CF1],\n\t[0x10CB2, 0x10CF2],\n\t[0x10CC0, 0x10C80],\n\t[0x10CC1, 0x10C81],\n\t[0x10CC2, 0x10C82],\n\t[0x10CC3, 0x10C83],\n\t[0x10CC4, 0x10C84],\n\t[0x10CC5, 0x10C85],\n\t[0x10CC6, 0x10C86],\n\t[0x10CC7, 0x10C87],\n\t[0x10CC8, 0x10C88],\n\t[0x10CC9, 0x10C89],\n\t[0x10CCA, 0x10C8A],\n\t[0x10CCB, 0x10C8B],\n\t[0x10CCC, 0x10C8C],\n\t[0x10CCD, 0x10C8D],\n\t[0x10CCE, 0x10C8E],\n\t[0x10CCF, 0x10C8F],\n\t[0x10CD0, 0x10C90],\n\t[0x10CD1, 0x10C91],\n\t[0x10CD2, 0x10C92],\n\t[0x10CD3, 0x10C93],\n\t[0x10CD4, 0x10C94],\n\t[0x10CD5, 0x10C95],\n\t[0x10CD6, 0x10C96],\n\t[0x10CD7, 0x10C97],\n\t[0x10CD8, 0x10C98],\n\t[0x10CD9, 0x10C99],\n\t[0x10CDA, 0x10C9A],\n\t[0x10CDB, 0x10C9B],\n\t[0x10CDC, 0x10C9C],\n\t[0x10CDD, 0x10C9D],\n\t[0x10CDE, 0x10C9E],\n\t[0x10CDF, 0x10C9F],\n\t[0x10CE0, 0x10CA0],\n\t[0x10CE1, 0x10CA1],\n\t[0x10CE2, 0x10CA2],\n\t[0x10CE3, 0x10CA3],\n\t[0x10CE4, 0x10CA4],\n\t[0x10CE5, 0x10CA5],\n\t[0x10CE6, 0x10CA6],\n\t[0x10CE7, 0x10CA7],\n\t[0x10CE8, 0x10CA8],\n\t[0x10CE9, 0x10CA9],\n\t[0x10CEA, 0x10CAA],\n\t[0x10CEB, 0x10CAB],\n\t[0x10CEC, 0x10CAC],\n\t[0x10CED, 0x10CAD],\n\t[0x10CEE, 0x10CAE],\n\t[0x10CEF, 0x10CAF],\n\t[0x10CF0, 0x10CB0],\n\t[0x10CF1, 0x10CB1],\n\t[0x10CF2, 0x10CB2],\n\t[0x118A0, 0x118C0],\n\t[0x118A1, 0x118C1],\n\t[0x118A2, 0x118C2],\n\t[0x118A3, 0x118C3],\n\t[0x118A4, 0x118C4],\n\t[0x118A5, 0x118C5],\n\t[0x118A6, 0x118C6],\n\t[0x118A7, 0x118C7],\n\t[0x118A8, 0x118C8],\n\t[0x118A9, 0x118C9],\n\t[0x118AA, 0x118CA],\n\t[0x118AB, 0x118CB],\n\t[0x118AC, 0x118CC],\n\t[0x118AD, 0x118CD],\n\t[0x118AE, 0x118CE],\n\t[0x118AF, 0x118CF],\n\t[0x118B0, 0x118D0],\n\t[0x118B1, 0x118D1],\n\t[0x118B2, 0x118D2],\n\t[0x118B3, 0x118D3],\n\t[0x118B4, 0x118D4],\n\t[0x118B5, 0x118D5],\n\t[0x118B6, 0x118D6],\n\t[0x118B7, 0x118D7],\n\t[0x118B8, 0x118D8],\n\t[0x118B9, 0x118D9],\n\t[0x118BA, 0x118DA],\n\t[0x118BB, 0x118DB],\n\t[0x118BC, 0x118DC],\n\t[0x118BD, 0x118DD],\n\t[0x118BE, 0x118DE],\n\t[0x118BF, 0x118DF],\n\t[0x118C0, 0x118A0],\n\t[0x118C1, 0x118A1],\n\t[0x118C2, 0x118A2],\n\t[0x118C3, 0x118A3],\n\t[0x118C4, 0x118A4],\n\t[0x118C5, 0x118A5],\n\t[0x118C6, 0x118A6],\n\t[0x118C7, 0x118A7],\n\t[0x118C8, 0x118A8],\n\t[0x118C9, 0x118A9],\n\t[0x118CA, 0x118AA],\n\t[0x118CB, 0x118AB],\n\t[0x118CC, 0x118AC],\n\t[0x118CD, 0x118AD],\n\t[0x118CE, 0x118AE],\n\t[0x118CF, 0x118AF],\n\t[0x118D0, 0x118B0],\n\t[0x118D1, 0x118B1],\n\t[0x118D2, 0x118B2],\n\t[0x118D3, 0x118B3],\n\t[0x118D4, 0x118B4],\n\t[0x118D5, 0x118B5],\n\t[0x118D6, 0x118B6],\n\t[0x118D7, 0x118B7],\n\t[0x118D8, 0x118B8],\n\t[0x118D9, 0x118B9],\n\t[0x118DA, 0x118BA],\n\t[0x118DB, 0x118BB],\n\t[0x118DC, 0x118BC],\n\t[0x118DD, 0x118BD],\n\t[0x118DE, 0x118BE],\n\t[0x118DF, 0x118BF],\n\t[0x1E900, 0x1E922],\n\t[0x1E901, 0x1E923],\n\t[0x1E902, 0x1E924],\n\t[0x1E903, 0x1E925],\n\t[0x1E904, 0x1E926],\n\t[0x1E905, 0x1E927],\n\t[0x1E906, 0x1E928],\n\t[0x1E907, 0x1E929],\n\t[0x1E908, 0x1E92A],\n\t[0x1E909, 0x1E92B],\n\t[0x1E90A, 0x1E92C],\n\t[0x1E90B, 0x1E92D],\n\t[0x1E90C, 0x1E92E],\n\t[0x1E90D, 0x1E92F],\n\t[0x1E90E, 0x1E930],\n\t[0x1E90F, 0x1E931],\n\t[0x1E910, 0x1E932],\n\t[0x1E911, 0x1E933],\n\t[0x1E912, 0x1E934],\n\t[0x1E913, 0x1E935],\n\t[0x1E914, 0x1E936],\n\t[0x1E915, 0x1E937],\n\t[0x1E916, 0x1E938],\n\t[0x1E917, 0x1E939],\n\t[0x1E918, 0x1E93A],\n\t[0x1E919, 0x1E93B],\n\t[0x1E91A, 0x1E93C],\n\t[0x1E91B, 0x1E93D],\n\t[0x1E91C, 0x1E93E],\n\t[0x1E91D, 0x1E93F],\n\t[0x1E91E, 0x1E940],\n\t[0x1E91F, 0x1E941],\n\t[0x1E920, 0x1E942],\n\t[0x1E921, 0x1E943],\n\t[0x1E922, 0x1E900],\n\t[0x1E923, 0x1E901],\n\t[0x1E924, 0x1E902],\n\t[0x1E925, 0x1E903],\n\t[0x1E926, 0x1E904],\n\t[0x1E927, 0x1E905],\n\t[0x1E928, 0x1E906],\n\t[0x1E929, 0x1E907],\n\t[0x1E92A, 0x1E908],\n\t[0x1E92B, 0x1E909],\n\t[0x1E92C, 0x1E90A],\n\t[0x1E92D, 0x1E90B],\n\t[0x1E92E, 0x1E90C],\n\t[0x1E92F, 0x1E90D],\n\t[0x1E930, 0x1E90E],\n\t[0x1E931, 0x1E90F],\n\t[0x1E932, 0x1E910],\n\t[0x1E933, 0x1E911],\n\t[0x1E934, 0x1E912],\n\t[0x1E935, 0x1E913],\n\t[0x1E936, 0x1E914],\n\t[0x1E937, 0x1E915],\n\t[0x1E938, 0x1E916],\n\t[0x1E939, 0x1E917],\n\t[0x1E93A, 0x1E918],\n\t[0x1E93B, 0x1E919],\n\t[0x1E93C, 0x1E91A],\n\t[0x1E93D, 0x1E91B],\n\t[0x1E93E, 0x1E91C],\n\t[0x1E93F, 0x1E91D],\n\t[0x1E940, 0x1E91E],\n\t[0x1E941, 0x1E91F],\n\t[0x1E942, 0x1E920],\n\t[0x1E943, 0x1E921]\n]);\n","// Generated using `npm run build`. Do not edit.\n'use strict';\n\nconst regenerate = require('regenerate');\n\nexports.REGULAR = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0xFFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0xFFFF)],\n\t['w', regenerate(0x5F)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0xFFFF)]\n]);\n\nexports.UNICODE = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x10FFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0x10FFFF)],\n\t['w', regenerate(0x5F)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0x10FFFF)]\n]);\n\nexports.UNICODE_IGNORE_CASE = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x10FFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0x10FFFF)],\n\t['w', regenerate(0x5F, 0x17F, 0x212A)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0x17E)\n\t\t.addRange(0x180, 0x2129)\n\t\t.addRange(0x212B, 0x10FFFF)]\n]);\n","'use strict';\n\nconst generate = require('regjsgen').generate;\nconst parse = require('regjsparser').parse;\nconst regenerate = require('regenerate');\nconst unicodeMatchProperty = require('unicode-match-property-ecmascript');\nconst unicodeMatchPropertyValue = require('unicode-match-property-value-ecmascript');\nconst iuMappings = require('./data/iu-mappings.js');\nconst ESCAPE_SETS = require('./data/character-class-escape-sets.js');\n\n// Prepare a Regenerate set containing all code points, used for negative\n// character classes (if any).\nconst UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF);\n// Without the `u` flag, the range stops at 0xFFFF.\n// https://mths.be/es6#sec-pattern-semantics\nconst BMP_SET = regenerate().addRange(0x0, 0xFFFF);\n\n// Prepare a Regenerate set containing all code points that are supposed to be\n// matched by `/./u`. https://mths.be/es6#sec-atom\nconst DOT_SET_UNICODE = UNICODE_SET.clone() // all Unicode code points\n\t.remove(\n\t\t// minus `LineTerminator`s (https://mths.be/es6#sec-line-terminators):\n\t\t0x000A, // Line Feed <LF>\n\t\t0x000D, // Carriage Return <CR>\n\t\t0x2028, // Line Separator <LS>\n\t\t0x2029 // Paragraph Separator <PS>\n\t);\n// Prepare a Regenerate set containing all code points that are supposed to be\n// matched by `/./` (only BMP code points).\nconst DOT_SET = DOT_SET_UNICODE.clone()\n\t.intersection(BMP_SET);\n\nconst getCharacterClassEscapeSet = (character, unicode, ignoreCase) => {\n\tif (unicode) {\n\t\tif (ignoreCase) {\n\t\t\treturn ESCAPE_SETS.UNICODE_IGNORE_CASE.get(character);\n\t\t}\n\t\treturn ESCAPE_SETS.UNICODE.get(character);\n\t}\n\treturn ESCAPE_SETS.REGULAR.get(character);\n};\n\nconst getDotSet = (unicode, dotAll) => {\n\tif (dotAll) {\n\t\treturn unicode ? UNICODE_SET : BMP_SET;\n\t}\n\treturn unicode ? DOT_SET_UNICODE : DOT_SET;\n};\n\nconst getUnicodePropertyValueSet = (property, value) => {\n\tconst path = value ?\n\t\t`${ property }/${ value }` :\n\t\t`Binary_Property/${ property }`;\n\ttry {\n\t\treturn require(`regenerate-unicode-properties/${ path }.js`);\n\t} catch (exception) {\n\t\tthrow new Error(\n\t\t\t`Failed to recognize value \\`${ value }\\` for property ` +\n\t\t\t`\\`${ property }\\`.`\n\t\t);\n\t}\n};\n\nconst handleLoneUnicodePropertyNameOrValue = (value) => {\n\t// It could be a `General_Category` value or a binary property.\n\t// Note: `unicodeMatchPropertyValue` throws on invalid values.\n\ttry {\n\t\tconst property = 'General_Category';\n\t\tconst category = unicodeMatchPropertyValue(property, value);\n\t\treturn getUnicodePropertyValueSet(property, category);\n\t} catch (exception) {}\n\t// It’s not a `General_Category` value, so check if it’s a binary\n\t// property. Note: `unicodeMatchProperty` throws on invalid properties.\n\tconst property = unicodeMatchProperty(value);\n\treturn getUnicodePropertyValueSet(property);\n};\n\nconst getUnicodePropertyEscapeSet = (value, isNegative) => {\n\tconst parts = value.split('=');\n\tconst firstPart = parts[0];\n\tlet set;\n\tif (parts.length == 1) {\n\t\tset = handleLoneUnicodePropertyNameOrValue(firstPart);\n\t} else {\n\t\t// The pattern consists of two parts, i.e. `Property=Value`.\n\t\tconst property = unicodeMatchProperty(firstPart);\n\t\tconst value = unicodeMatchPropertyValue(property, parts[1]);\n\t\tset = getUnicodePropertyValueSet(property, value);\n\t}\n\tif (isNegative) {\n\t\treturn UNICODE_SET.clone().remove(set);\n\t}\n\treturn set.clone();\n};\n\n// Given a range of code points, add any case-folded code points in that range\n// to a set.\nregenerate.prototype.iuAddRange = function(min, max) {\n\tconst $this = this;\n\tdo {\n\t\tconst folded = caseFold(min);\n\t\tif (folded) {\n\t\t\t$this.add(folded);\n\t\t}\n\t} while (++min <= max);\n\treturn $this;\n};\n\nconst update = (item, pattern) => {\n\tlet tree = parse(pattern, config.useUnicodeFlag ? 'u' : '');\n\tswitch (tree.type) {\n\t\tcase 'characterClass':\n\t\tcase 'group':\n\t\tcase 'value':\n\t\t\t// No wrapping needed.\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// Wrap the pattern in a non-capturing group.\n\t\t\ttree = wrap(tree, pattern);\n\t}\n\tObject.assign(item, tree);\n};\n\nconst wrap = (tree, pattern) => {\n\t// Wrap the pattern in a non-capturing group.\n\treturn {\n\t\t'type': 'group',\n\t\t'behavior': 'ignore',\n\t\t'body': [tree],\n\t\t'raw': `(?:${ pattern })`\n\t};\n};\n\nconst caseFold = (codePoint) => {\n\treturn iuMappings.get(codePoint) || false;\n};\n\nconst processCharacterClass = (characterClassItem, regenerateOptions) => {\n\tlet set = regenerate();\n\tfor (const item of characterClassItem.body) {\n\t\tswitch (item.type) {\n\t\t\tcase 'value':\n\t\t\t\tset.add(item.codePoint);\n\t\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\t\tconst folded = caseFold(item.codePoint);\n\t\t\t\t\tif (folded) {\n\t\t\t\t\t\tset.add(folded);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'characterClassRange':\n\t\t\t\tconst min = item.min.codePoint;\n\t\t\t\tconst max = item.max.codePoint;\n\t\t\t\tset.addRange(min, max);\n\t\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\t\tset.iuAddRange(min, max);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'characterClassEscape':\n\t\t\t\tset.add(getCharacterClassEscapeSet(\n\t\t\t\t\titem.value,\n\t\t\t\t\tconfig.unicode,\n\t\t\t\t\tconfig.ignoreCase\n\t\t\t\t));\n\t\t\t\tbreak;\n\t\t\tcase 'unicodePropertyEscape':\n\t\t\t\tset.add(getUnicodePropertyEscapeSet(item.value, item.negative));\n\t\t\t\tbreak;\n\t\t\t// The `default` clause is only here as a safeguard; it should never be\n\t\t\t// reached. Code coverage tools should ignore it.\n\t\t\t/* istanbul ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown term type: ${ item.type }`);\n\t\t}\n\t}\n\tif (characterClassItem.negative) {\n\t\tset = (config.unicode ? UNICODE_SET : BMP_SET).clone().remove(set);\n\t}\n\tupdate(characterClassItem, set.toString(regenerateOptions));\n\treturn characterClassItem;\n};\n\nconst processTerm = (item, regenerateOptions) => {\n\tswitch (item.type) {\n\t\tcase 'dot':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetDotSet(config.unicode, config.dotAll).toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'characterClass':\n\t\t\titem = processCharacterClass(item, regenerateOptions);\n\t\t\tbreak;\n\t\tcase 'unicodePropertyEscape':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetUnicodePropertyEscapeSet(item.value, item.negative)\n\t\t\t\t\t.toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'characterClassEscape':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetCharacterClassEscapeSet(\n\t\t\t\t\titem.value,\n\t\t\t\t\tconfig.unicode,\n\t\t\t\t\tconfig.ignoreCase\n\t\t\t\t).toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'alternative':\n\t\tcase 'disjunction':\n\t\tcase 'group':\n\t\tcase 'quantifier':\n\t\t\titem.body = item.body.map(term => {\n\t\t\t\treturn processTerm(term, regenerateOptions);\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'value':\n\t\t\tconst codePoint = item.codePoint;\n\t\t\tconst set = regenerate(codePoint);\n\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\tconst folded = caseFold(codePoint);\n\t\t\t\tif (folded) {\n\t\t\t\t\tset.add(folded);\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate(item, set.toString(regenerateOptions));\n\t\t\tbreak;\n\t\tcase 'anchor':\n\t\tcase 'empty':\n\t\tcase 'group':\n\t\tcase 'reference':\n\t\t\t// Nothing to do here.\n\t\t\tbreak;\n\t\t// The `default` clause is only here as a safeguard; it should never be\n\t\t// reached. Code coverage tools should ignore it.\n\t\t/* istanbul ignore next */\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown term type: ${ item.type }`);\n\t}\n\treturn item;\n};\n\nconst config = {\n\t'ignoreCase': false,\n\t'unicode': false,\n\t'dotAll': false,\n\t'useUnicodeFlag': false\n};\nconst rewritePattern = (pattern, flags, options) => {\n\tconst regjsparserFeatures = {\n\t\t'unicodePropertyEscape': options && options.unicodePropertyEscape\n\t};\n\tconfig.ignoreCase = flags && flags.includes('i');\n\tconfig.unicode = flags && flags.includes('u');\n\tconst supportDotAllFlag = options && options.dotAllFlag;\n\tconfig.dotAll = supportDotAllFlag && flags && flags.includes('s');\n\tconfig.useUnicodeFlag = options && options.useUnicodeFlag;\n\tconst regenerateOptions = {\n\t\t'hasUnicodeFlag': config.useUnicodeFlag,\n\t\t'bmpOnly': !config.unicode\n\t};\n\tconst tree = parse(pattern, flags, regjsparserFeatures);\n\t// Note: `processTerm` mutates `tree`.\n\tprocessTerm(tree, regenerateOptions);\n\treturn generate(tree);\n};\n\nmodule.exports = rewritePattern;\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport rewritePattern from 'regexpu-core';\n\nexport default class Literal extends Node {\n\tinitialise () {\n\t\tif ( typeof this.value === 'string' ) {\n\t\t\tthis.program.indentExclusionElements.push( this );\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.numericLiteral ) {\n\t\t\tconst leading = this.raw.slice( 0, 2 );\n\t\t\tif ( leading === '0b' || leading === '0o' ) {\n\t\t\t\tcode.overwrite( this.start, this.end, String( this.value ), {\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\n\t\tif ( this.regex ) {\n\t\t\tconst { pattern, flags } = this.regex;\n\n\t\t\tif ( transforms.stickyRegExp && /y/.test( flags ) ) throw new CompileError( 'Regular expression sticky flag is not supported', this );\n\t\t\tif ( transforms.unicodeRegExp && /u/.test( flags ) ) {\n\t\t\t\tcode.overwrite( this.start, this.end, `/${rewritePattern( pattern, flags )}/${flags.replace( 'u', '' )}`, {\n\t\t\t\t\tcontentOnly: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class MemberExpression extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.reservedProperties && reserved[ this.property.name ] ) {\n\t\t\tcode.overwrite( this.object.end, this.property.start, `['` );\n\t\t\tcode.appendLeft( this.property.end, `']` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\n\nexport default class NewExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.spreadRest && this.arguments.length ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.arguments.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst arg = this.arguments[i];\n\t\t\t\tif ( arg.type === 'SpreadElement' && isArguments( arg.argument ) ) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.spreadRest && this.arguments.length ) {\n\t\t\tconst firstArgument = this.arguments[0];\n\t\t\tconst isNew = true;\n\t\t\tlet hasSpreadElements = spread( code, this.arguments, firstArgument.start, this.argumentsArrayAlias, isNew );\n\n\t\t\tif ( hasSpreadElements ) {\n\t\t\t\tcode.prependRight( this.start + 'new'.length, ' (Function.prototype.bind.apply(' );\n\t\t\t\tcode.overwrite( this.callee.end, firstArgument.start, ', [ null ].concat( ' );\n\t\t\t\tcode.appendLeft( this.end, ' ))' );\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ObjectExpression extends Node {\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\n\t\tlet firstPropertyStart = this.start + 1;\n\t\tlet regularPropertyCount = 0;\n\t\tlet spreadPropertyCount = 0;\n\t\tlet computedPropertyCount = 0;\n\t\tlet firstSpreadProperty = null;\n\t\tlet firstComputedProperty = null;\n\n\t\tfor ( let i = 0; i < this.properties.length; ++i ) {\n\t\t\tconst prop = this.properties[ i ];\n\t\t\tif ( prop.type === 'SpreadElement' ) {\n\t\t\t\tspreadPropertyCount += 1;\n\t\t\t\tif ( firstSpreadProperty === null ) firstSpreadProperty = i;\n\t\t\t} else if ( prop.computed ) {\n\t\t\t\tcomputedPropertyCount += 1;\n\t\t\t\tif ( firstComputedProperty === null ) firstComputedProperty = i;\n\t\t\t} else if ( prop.type === 'Property' ) {\n\t\t\t\tregularPropertyCount += 1;\n\t\t\t}\n\t\t}\n\n\t\tif ( spreadPropertyCount ) {\n\t\t\tif ( !this.program.options.objectAssign ) {\n\t\t\t\tthrow new CompileError( 'Object spread operator requires specified objectAssign option with \\'Object.assign\\' or polyfill helper.', this );\n\t\t\t}\n\t\t\t// enclose run of non-spread properties in curlies\n\t\t\tlet i = this.properties.length;\n\t\t\tif ( regularPropertyCount && !computedPropertyCount ) {\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tconst prop = this.properties[i];\n\n\t\t\t\t\tif ( prop.type === 'Property' && !prop.computed ) {\n\t\t\t\t\t\tconst lastProp = this.properties[ i - 1 ];\n\t\t\t\t\t\tconst nextProp = this.properties[ i + 1 ];\n\n\t\t\t\t\t\tif ( !lastProp || lastProp.type !== 'Property' || lastProp.computed ) {\n\t\t\t\t\t\t\tcode.prependRight( prop.start, '{' );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( !nextProp || nextProp.type !== 'Property' || nextProp.computed ) {\n\t\t\t\t\t\t\tcode.appendLeft( prop.end, '}' );\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\t// wrap the whole thing in Object.assign\n\t\t\tfirstPropertyStart = this.properties[0].start;\n\t\t\tif ( !computedPropertyCount ) {\n\t\t\t\tcode.overwrite( this.start, firstPropertyStart, `${this.program.options.objectAssign}({}, ` );\n\t\t\t\tcode.overwrite( this.properties[ this.properties.length - 1 ].end, this.end, ')' );\n\t\t\t} else if ( this.properties[0].type === \"SpreadElement\" ) {\n\t\t\t\tcode.overwrite( this.start, firstPropertyStart, `${this.program.options.objectAssign}({}, ` );\n\t\t\t\tcode.remove( this.end - 1, this.end );\n\t\t\t\tcode.appendRight( this.end, ')' );\n\t\t\t} else {\n\t\t\t\tcode.prependLeft( this.start, `${this.program.options.objectAssign}(` );\n\t\t\t\tcode.appendRight( this.end, ')' );\n\t\t\t}\n\t\t}\n\n\t\tif ( computedPropertyCount && transforms.computedProperty ) {\n\t\t\tconst i0 = this.getIndentation();\n\n\t\t\tlet isSimpleAssignment;\n\t\t\tlet name;\n\n\t\t\tif ( this.parent.type === 'VariableDeclarator' && this.parent.parent.declarations.length === 1 && this.parent.id.type === 'Identifier' ) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.id.alias || this.parent.id.name; // TODO is this right?\n\t\t\t} else if ( this.parent.type === 'AssignmentExpression' && this.parent.parent.type === 'ExpressionStatement' && this.parent.left.type === 'Identifier' ) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n\t\t\t} else if ( this.parent.type === 'AssignmentPattern' && this.parent.left.type === 'Identifier' ) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n\t\t\t}\n\n\t\t\tif ( spreadPropertyCount ) isSimpleAssignment = false;\n\n\t\t\t// handle block scoping\n\t\t\tconst declaration = this.findScope( false ).findDeclaration( name );\n\t\t\tif ( declaration ) name = declaration.name;\n\n\t\t\tconst start = firstPropertyStart;\n\t\t\tconst end = this.end;\n\n\t\t\tif ( isSimpleAssignment ) {\n\t\t\t\t// ???\n\t\t\t} else {\n\t\t\t\tif ( firstSpreadProperty === null || firstComputedProperty < firstSpreadProperty ) {\n\t\t\t\t\tname = this.findScope( true ).createIdentifier( 'obj' );\n\n\t\t\t\t\tcode.prependRight( this.start, `( ${name} = ` );\n\t\t\t\t} else name = null; // We don't actually need this variable\n\t\t\t}\n\n\t\t\tconst len = this.properties.length;\n\t\t\tlet lastComputedProp;\n\t\t\tlet sawNonComputedProperty = false;\n\t\t\tlet isFirst = true;\n\n\t\t\tfor ( let i = 0; i < len; i += 1 ) {\n\t\t\t\tconst prop = this.properties[i];\n\t\t\t\tlet moveStart = i > 0 ? this.properties[ i - 1 ].end : start;\n\n\t\t\t\tif ( prop.type === \"Property\" && ( prop.computed || ( lastComputedProp && !spreadPropertyCount ) ) ) {\n\t\t\t\t\tif ( i === 0 ) moveStart = this.start + 1; // Trim leading whitespace\n\t\t\t\t\tlastComputedProp = prop;\n\n\t\t\t\t\tif ( !name ) {\n\t\t\t\t\t\tname = this.findScope( true ).createIdentifier( 'obj' );\n\n\t\t\t\t\t\tconst propId = name + ( prop.computed ? \"\" : \".\" );\n\t\t\t\t\t\tcode.appendRight( prop.start, `( ${name} = {}, ${propId}` );\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst propId = ( isSimpleAssignment ? `;\\n${i0}${name}` : `, ${name}` ) + ( prop.computed ? \"\" : \".\" );\n\n\t\t\t\t\t\tif ( moveStart < prop.start ) {\n\t\t\t\t\t\t\tcode.overwrite( moveStart, prop.start, propId );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight( prop.start, propId );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet c = prop.key.end;\n\t\t\t\t\tif ( prop.computed ) {\n\t\t\t\t\t\twhile ( code.original[c] !== ']' ) c += 1;\n\t\t\t\t\t\tc += 1;\n\t\t\t\t\t}\n\t\t\t\t\tif ( prop.shorthand ) {\n\t\t\t\t\t\tcode.overwrite( prop.start, prop.key.end, code.slice( prop.start, prop.key.end ).replace( /:/, ' =' ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( prop.value.start > c ) code.remove( c, prop.value.start );\n\t\t\t\t\t\tcode.appendLeft( c, ' = ' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( prop.method && transforms.conciseMethodProperty ) {\n\t\t\t\t\t\tcode.prependRight( prop.value.start, 'function ' );\n\t\t\t\t\t}\n\t\t\t\t} else if ( prop.type === \"SpreadElement\" ) {\n\t\t\t\t\tif ( name && i > 0 ) {\n\t\t\t\t\t\tif ( !lastComputedProp ) {\n\t\t\t\t\t\t\tlastComputedProp = this.properties[ i - 1 ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcode.appendLeft( lastComputedProp.end, `, ${name} )` );\n\n\t\t\t\t\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\t\t\t\t\tcode.appendLeft( statement.end, `\\n${i0}var ${name};` );\n\n\t\t\t\t\t\tlastComputedProp = null;\n\t\t\t\t\t\tname = null;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( !isFirst && spreadPropertyCount ) {\n\t\t\t\t\t\t// We are in an Object.assign context, so we need to wrap regular properties\n\t\t\t\t\t\tcode.prependRight( prop.start, '{' );\n\t\t\t\t\t\tcode.appendLeft( prop.end, '}' );\n\t\t\t\t\t}\n\t\t\t\t\tsawNonComputedProperty = true;\n\t\t\t\t}\n\t\t\t\tif (isFirst && ( prop.type === \"SpreadElement\" || prop.computed ) ) {\n\t\t\t\t\tlet beginEnd = sawNonComputedProperty ? this.properties[this.properties.length - 1].end : this.end - 1;\n\t\t\t\t\t// Trim trailing comma because it can easily become a leading comma which is illegal\n\t\t\t\t\tif ( code.original[beginEnd] == ',' ) ++beginEnd;\n\t\t\t\t\tconst closing = code.slice( beginEnd, end );\n\t\t\t\t\tcode.prependLeft( moveStart, closing );\n\t\t\t\t\tcode.remove( beginEnd, end );\n\t\t\t\t\tisFirst = false;\n\t\t\t\t}\n\n\t\t\t\t// Clean up some extranous whitespace\n\t\t\t\tlet c = prop.end;\n\t\t\t\tif ( i < len - 1 && ! sawNonComputedProperty ) {\n\t\t\t\t\twhile ( code.original[c] !== ',' ) c += 1;\n\t\t\t\t} else if ( i == len - 1 ) c = this.end;\n\t\t\t\tcode.remove( prop.end, c );\n\t\t\t}\n\n\t\t\t// special case\n\t\t\tif ( computedPropertyCount === len ) {\n\t\t\t\tcode.remove( this.properties[ len - 1 ].end, this.end - 1 );\n\t\t\t}\n\n\t\t\tif ( !isSimpleAssignment && name ) {\n\t\t\t\tcode.appendLeft( lastComputedProp.end, `, ${name} )` );\n\n\t\t\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\t\t\tcode.appendLeft( statement.end, `\\n${i0}var ${name};` );\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class Property extends Node {\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\n\t\tif ( transforms.conciseMethodProperty && !this.computed && this.parent.type !== 'ObjectPattern' ) {\n\t\t\tif ( this.shorthand ) {\n\t\t\t\tcode.prependRight( this.start, `${this.key.name}: ` );\n\t\t\t} else if ( this.method ) {\n\t\t\t\tlet name = '';\n\t\t\t\tif ( this.program.options.namedFunctionExpressions !== false ) {\n\t\t\t\t\tif ( this.key.type === 'Literal' && typeof this.key.value === 'number' ) {\n\t\t\t\t\t\tname = \"\";\n\t\t\t\t\t} else if ( this.key.type === 'Identifier' ) {\n\t\t\t\t\t\tif ( reserved[ this.key.name ] ||\n\t\t\t\t\t\t\t ! /^[a-z_$][a-z0-9_$]*$/i.test( this.key.name ) ||\n\t\t\t\t\t\t this.value.body.scope.references[this.key.name] ) {\n\t\t\t\t\t\t\tname = this.findScope( true ).createIdentifier( this.key.name );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = this.key.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = this.findScope( true ).createIdentifier( this.key.value );\n\t\t\t\t\t}\n\t\t\t\t\tname = ' ' + name;\n\t\t\t\t}\n\n\t\t\t\tif ( this.value.generator ) code.remove( this.start, this.key.start );\n\t\t\t\tcode.appendLeft( this.key.end, `: function${this.value.generator ? '*' : ''}${name}` );\n\t\t\t}\n\t\t}\n\n\t\tif ( transforms.reservedProperties && reserved[ this.key.name ] ) {\n\t\t\tcode.prependRight( this.key.start, `'` );\n\t\t\tcode.appendLeft( this.key.end, `'` );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ReturnStatement extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.loop = this.findNearest( loopStatement );\n\t\tthis.nearestFunction = this.findNearest( /Function/ );\n\n\t\tif ( this.loop && ( !this.nearestFunction || this.loop.depth > this.nearestFunction.depth ) ) {\n\t\t\tthis.loop.canReturn = true;\n\t\t\tthis.shouldWrap = true;\n\t\t}\n\n\t\tif ( this.argument ) this.argument.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst shouldWrap = this.shouldWrap && this.loop && this.loop.shouldRewriteAsFunction;\n\n\t\tif ( this.argument ) {\n\t\t\tif ( shouldWrap ) code.prependRight( this.argument.start, `{ v: ` );\n\t\t\tthis.argument.transpile( code, transforms );\n\t\t\tif ( shouldWrap ) code.appendLeft( this.argument.end, ` }` );\n\t\t} else if ( shouldWrap ) {\n\t\t\tcode.appendLeft( this.start + 6, ' {}' );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class SpreadElement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif (this.parent.type == \"ObjectExpression\") {\n\t\t\tcode.remove( this.start, this.argument.start );\n\t\t\tcode.remove( this.argument.end, this.end );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class Super extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tthis.method = this.findNearest( 'MethodDefinition' );\n\t\t\tif ( !this.method ) throw new CompileError( this, 'use of super outside class method' );\n\n\t\t\tconst parentClass = this.findNearest( 'ClassBody' ).parent;\n\t\t\tthis.superClassName = parentClass.superClass && (parentClass.superClass.name || 'superclass');\n\n\t\t\tif ( !this.superClassName ) throw new CompileError( 'super used in base class', this );\n\n\t\t\tthis.isCalled = this.parent.type === 'CallExpression' && this === this.parent.callee;\n\n\t\t\tif ( this.method.kind !== 'constructor' && this.isCalled ) {\n\t\t\t\tthrow new CompileError( 'super() not allowed outside class constructor', this );\n\t\t\t}\n\n\t\t\tthis.isMember = this.parent.type === 'MemberExpression';\n\n\t\t\tif ( !this.isCalled && !this.isMember ) {\n\t\t\t\tthrow new CompileError( 'Unexpected use of `super` (expected `super(...)` or `super.*`)', this );\n\t\t\t}\n\t\t}\n\n\t\tif ( transforms.arrow ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\tconst arrowFunction = this.findNearest( 'ArrowFunctionExpression' );\n\t\t\tconst loop = this.findNearest( loopStatement );\n\n\t\t\tif ( arrowFunction && arrowFunction.depth > lexicalBoundary.depth ) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\n\t\t\tif ( loop && loop.body.contains( this ) && loop.depth > lexicalBoundary.depth ) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tconst expression = ( this.isCalled || this.method.static ) ?\n\t\t\t\tthis.superClassName :\n\t\t\t\t`${this.superClassName}.prototype`;\n\n\t\t\tcode.overwrite( this.start, this.end, expression, { storeName: true, contentOnly: true });\n\n\t\t\tconst callExpression = this.isCalled ? this.parent : this.parent.parent;\n\n\t\t\tif ( callExpression && callExpression.type === 'CallExpression' ) {\n\t\t\t\tif ( !this.noCall ) { // special case – `super( ...args )`\n\t\t\t\t\tcode.appendLeft( callExpression.callee.end, '.call' );\n\t\t\t\t}\n\n\t\t\t\tconst thisAlias = this.thisAlias || 'this';\n\n\t\t\t\tif ( callExpression.arguments.length ) {\n\t\t\t\t\tcode.appendLeft( callExpression.arguments[0].start, `${thisAlias}, ` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.appendLeft( callExpression.end - 1, `${thisAlias}` );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class TaggedTemplateExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.templateString && !transforms.dangerousTaggedTemplateString ) {\n\t\t\tthrow new CompileError( 'Tagged template strings are not supported. Use `transforms: { templateString: false }` to skip transformation and disable this error, or `transforms: { dangerousTaggedTemplateString: true }` if you know what you\\'re doing', this );\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.templateString && transforms.dangerousTaggedTemplateString ) {\n\t\t\tconst ordered = this.quasi.expressions.concat( this.quasi.quasis ).sort( ( a, b ) => a.start - b.start );\n\n\t\t\t// insert strings at start\n\t\t\tconst templateStrings = this.quasi.quasis.map( quasi => JSON.stringify( quasi.value.cooked ) );\n\t\t\tcode.overwrite( this.tag.end, ordered[0].start, `([${templateStrings.join(', ')}]` );\n\n\t\t\tlet lastIndex = ordered[0].start;\n\t\t\tordered.forEach( node => {\n\t\t\t\tif ( node.type === 'TemplateElement' ) {\n\t\t\t\t\tcode.remove( lastIndex, node.end );\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite( lastIndex, node.start, ', ' );\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tcode.overwrite( lastIndex, this.end, ')' );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateElement extends Node {\n\tinitialise () {\n\t\tthis.program.indentExclusionElements.push( this );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateLiteral extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.templateString && this.parent.type !== 'TaggedTemplateExpression' ) {\n\t\t\tlet ordered = this.expressions.concat( this.quasis )\n\t\t\t\t.sort( ( a, b ) => a.start - b.start || a.end - b.end )\n\t\t\t\t.filter( ( node, i ) => {\n\t\t\t\t\t// include all expressions\n\t\t\t\t\tif ( node.type !== 'TemplateElement' ) return true;\n\n\t\t\t\t\t// include all non-empty strings\n\t\t\t\t\tif ( node.value.raw ) return true;\n\n\t\t\t\t\t// exclude all empty strings not at the head\n\t\t\t\t\treturn !i;\n\t\t\t\t});\n\n\t\t\t// special case – we may be able to skip the first element,\n\t\t\t// if it's the empty string, but only if the second and\n\t\t\t// third elements aren't both expressions (since they maybe\n\t\t\t// be numeric, and `1 + 2 + '3' === '33'`)\n\t\t\tif ( ordered.length >= 3 ) {\n\t\t\t\tconst [ first, , third ] = ordered;\n\t\t\t\tif ( first.type === 'TemplateElement' && first.value.raw === '' && third.type === 'TemplateElement' ) {\n\t\t\t\t\tordered.shift();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst parenthesise = ( this.quasis.length !== 1 || this.expressions.length !== 0 ) &&\n\t\t\t this.parent.type !== 'AssignmentExpression' &&\n\t\t\t this.parent.type !== 'AssignmentPattern' &&\n\t\t\t this.parent.type !== 'VariableDeclarator' &&\n\t\t\t ( this.parent.type !== 'BinaryExpression' || this.parent.operator !== '+' );\n\n\t\t\tif ( parenthesise ) code.appendRight( this.start, '(' );\n\n\t\t\tlet lastIndex = this.start;\n\n\t\t\tordered.forEach( ( node, i ) => {\n\t\t\t\tlet prefix = i === 0 ?\n\t\t\t\t\tparenthesise ? '(' : '' :\n\t\t\t\t\t' + ';\n\n\t\t\t\tif ( node.type === 'TemplateElement' ) {\n\t\t\t\t\tcode.overwrite( lastIndex, node.end, prefix + JSON.stringify( node.value.cooked ) );\n\t\t\t\t} else {\n\t\t\t\t\tconst parenthesise = node.type !== 'Identifier'; // TODO other cases where it's safe\n\n\t\t\t\t\tif ( parenthesise ) prefix += '(';\n\n\t\t\t\t\tcode.remove( lastIndex, node.start );\n\n\t\t\t\t\tif ( prefix ) code.prependRight( node.start, prefix );\n\t\t\t\t\tif ( parenthesise ) code.appendLeft( node.end, ')' );\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tif ( parenthesise ) code.appendLeft( lastIndex, ')' );\n\t\t\tcode.remove( lastIndex, this.end );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ThisExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.arrow ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\tconst arrowFunction = this.findNearest( 'ArrowFunctionExpression' );\n\t\t\tconst loop = this.findNearest( loopStatement );\n\n\t\t\tif ( ( arrowFunction && arrowFunction.depth > lexicalBoundary.depth )\n\t\t\t|| ( loop && loop.body.contains( this ) && loop.depth > lexicalBoundary.depth )\n\t\t\t|| ( loop && loop.right && loop.right.contains( this ) ) ) {\n\t\t\t\tthis.alias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile ( code ) {\n\t\tif ( this.alias ) {\n\t\t\tcode.overwrite( this.start, this.end, this.alias, {\n\t\t\t\tstoreName: true,\n\t\t\t\tcontentOnly: true\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class UpdateExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.argument.type === 'Identifier' ) {\n\t\t\tconst declaration = this.findScope( false ).findDeclaration( this.argument.name );\n\t\t\tif ( declaration && declaration.kind === 'const' ) {\n\t\t\t\tthrow new CompileError( `${this.argument.name} is read-only`, this );\n\t\t\t}\n\n\t\t\t// special case – https://gitlab.com/Rich-Harris/buble/issues/150\n\t\t\tconst statement = declaration && declaration.node.ancestor( 3 );\n\t\t\tif ( statement && statement.type === 'ForStatement' && statement.body.contains( this ) ) {\n\t\t\t\tstatement.reassigned[ this.argument.name ] = true;\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport destructure from '../../utils/destructure.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class VariableDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.scope = this.findScope( this.kind === 'var' );\n\t\tthis.declarations.forEach( declarator => declarator.initialise( transforms ) );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst i0 = this.getIndentation();\n\t\tlet kind = this.kind;\n\n\t\tif ( transforms.letConst && kind !== 'var' ) {\n\t\t\tkind = 'var';\n\t\t\tcode.overwrite( this.start, this.start + this.kind.length, kind, { storeName: true });\n\t\t}\n\n\t\tif ( transforms.destructuring && this.parent.type !== 'ForOfStatement' ) {\n\t\t\tlet c = this.start;\n\t\t\tlet lastDeclaratorIsPattern;\n\n\t\t\tthis.declarations.forEach( ( declarator, i ) => {\n\t\t\t\tdeclarator.transpile( code, transforms );\n\n\t\t\t\tif ( declarator.id.type === 'Identifier' ) {\n\t\t\t\t\tif ( i > 0 && this.declarations[ i - 1 ].id.type !== 'Identifier' ) {\n\t\t\t\t\t\tcode.overwrite( c, declarator.id.start, `var ` );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst inline = loopStatement.test( this.parent.type );\n\n\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\tcode.remove( c, declarator.id.start );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite( c, declarator.id.start, `;\\n${i0}` );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst simple = declarator.init.type === 'Identifier' && !declarator.init.rewritten;\n\n\t\t\t\t\tconst name = simple ? declarator.init.name : declarator.findScope( true ).createIdentifier( 'ref' );\n\n\t\t\t\t\tlet c = declarator.start;\n\n\t\t\t\t\tlet statementGenerators = [];\n\n\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\tcode.remove( declarator.id.end, declarator.end );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t\t\tcode.prependRight( declarator.id.end, `var ${name}` );\n\t\t\t\t\t\t\tcode.appendLeft( declarator.init.end, `${suffix}` );\n\t\t\t\t\t\t\tcode.move( declarator.id.end, declarator.end, start );\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tdestructure( code, declarator.findScope( false ), declarator.id, name, inline, statementGenerators );\n\n\t\t\t\t\tlet prefix = inline ? 'var ' : '';\n\t\t\t\t\tlet suffix = inline ? `, ` : `;\\n${i0}`;\n\t\t\t\t\tstatementGenerators.forEach( ( fn, j ) => {\n\t\t\t\t\t\tif ( i === this.declarations.length - 1 && j === statementGenerators.length - 1 ) {\n\t\t\t\t\t\t\tsuffix = inline ? '' : ';';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfn( declarator.start, j === 0 ? prefix : '', suffix );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tc = declarator.end;\n\t\t\t\tlastDeclaratorIsPattern = declarator.id.type !== 'Identifier';\n\t\t\t});\n\n\t\t\tif ( lastDeclaratorIsPattern && this.end > c ) {\n\t\t\t\tcode.overwrite( c, this.end, '', { contentOnly: true });\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tthis.declarations.forEach( declarator => {\n\t\t\t\tdeclarator.transpile( code, transforms );\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class VariableDeclarator extends Node {\n\tinitialise ( transforms ) {\n\t\tlet kind = this.parent.kind;\n\t\tif ( kind === 'let' && this.parent.parent.type === 'ForStatement' ) {\n\t\t\tkind = 'for.let'; // special case...\n\t\t}\n\n\t\tthis.parent.scope.addDeclaration( this.id, kind );\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( !this.init && transforms.letConst && this.parent.kind !== 'var' ) {\n\t\t\tlet inLoop = this.findNearest( /Function|^For(In|Of)?Statement|^(?:Do)?WhileStatement/ );\n\t\t\tif ( inLoop && ! /Function/.test( inLoop.type ) && ! this.isLeftDeclaratorOfLoop() ) {\n\t\t\t\tcode.appendLeft( this.id.end, ' = (void 0)' );\n\t\t\t}\n\t\t}\n\n\t\tif ( this.id ) this.id.transpile( code, transforms );\n\t\tif ( this.init ) this.init.transpile( code, transforms );\n\t}\n\n\tisLeftDeclaratorOfLoop () {\n\t\treturn this.parent\n\t\t\t&& this.parent.type === 'VariableDeclaration'\n\t\t\t&& this.parent.parent\n\t\t\t&& (this.parent.parent.type === 'ForInStatement'\n\t\t\t\t|| this.parent.parent.type === 'ForOfStatement')\n\t\t\t&& this.parent.parent.left\n\t\t\t&& this.parent.parent.left.declarations[0] === this;\n\t}\n}\n","import ArrayExpression from './ArrayExpression.js';\nimport ArrowFunctionExpression from './ArrowFunctionExpression.js';\nimport AssignmentExpression from './AssignmentExpression.js';\nimport BinaryExpression from './BinaryExpression.js';\nimport BreakStatement from './BreakStatement.js';\nimport CallExpression from './CallExpression.js';\nimport ClassBody from './ClassBody.js';\nimport ClassDeclaration from './ClassDeclaration.js';\nimport ClassExpression from './ClassExpression.js';\nimport ContinueStatement from './ContinueStatement.js';\nimport ExportDefaultDeclaration from './ExportDefaultDeclaration.js';\nimport ExportNamedDeclaration from './ExportNamedDeclaration.js';\nimport ForStatement from './ForStatement.js';\nimport ForInStatement from './ForInStatement.js';\nimport ForOfStatement from './ForOfStatement.js';\nimport FunctionDeclaration from './FunctionDeclaration.js';\nimport FunctionExpression from './FunctionExpression.js';\nimport Identifier from './Identifier.js';\nimport IfStatement from './IfStatement.js';\nimport ImportDeclaration from './ImportDeclaration.js';\nimport ImportDefaultSpecifier from './ImportDefaultSpecifier.js';\nimport ImportSpecifier from './ImportSpecifier.js';\nimport JSXAttribute from './JSXAttribute.js';\nimport JSXClosingElement from './JSXClosingElement.js';\nimport JSXElement from './JSXElement.js';\nimport JSXExpressionContainer from './JSXExpressionContainer.js';\nimport JSXOpeningElement from './JSXOpeningElement.js';\nimport JSXSpreadAttribute from './JSXSpreadAttribute.js';\nimport Literal from './Literal.js';\nimport LoopStatement from './shared/LoopStatement.js';\nimport MemberExpression from './MemberExpression.js';\nimport NewExpression from './NewExpression.js';\nimport ObjectExpression from './ObjectExpression.js';\nimport Property from './Property.js';\nimport ReturnStatement from './ReturnStatement.js';\nimport SpreadElement from './SpreadElement.js';\nimport Super from './Super.js';\nimport TaggedTemplateExpression from './TaggedTemplateExpression.js';\nimport TemplateElement from './TemplateElement.js';\nimport TemplateLiteral from './TemplateLiteral.js';\nimport ThisExpression from './ThisExpression.js';\nimport UpdateExpression from './UpdateExpression.js';\nimport VariableDeclaration from './VariableDeclaration.js';\nimport VariableDeclarator from './VariableDeclarator.js';\n\nexport default {\n\tArrayExpression,\n\tArrowFunctionExpression,\n\tAssignmentExpression,\n\tBinaryExpression,\n\tBreakStatement,\n\tCallExpression,\n\tClassBody,\n\tClassDeclaration,\n\tClassExpression,\n\tContinueStatement,\n\tDoWhileStatement: LoopStatement,\n\tExportNamedDeclaration,\n\tExportDefaultDeclaration,\n\tForStatement,\n\tForInStatement,\n\tForOfStatement,\n\tFunctionDeclaration,\n\tFunctionExpression,\n\tIdentifier,\n\tIfStatement,\n\tImportDeclaration,\n\tImportDefaultSpecifier,\n\tImportSpecifier,\n\tJSXAttribute,\n\tJSXClosingElement,\n\tJSXElement,\n\tJSXExpressionContainer,\n\tJSXOpeningElement,\n\tJSXSpreadAttribute,\n\tLiteral,\n\tMemberExpression,\n\tNewExpression,\n\tObjectExpression,\n\tProperty,\n\tReturnStatement,\n\tSpreadElement,\n\tSuper,\n\tTaggedTemplateExpression,\n\tTemplateElement,\n\tTemplateLiteral,\n\tThisExpression,\n\tUpdateExpression,\n\tVariableDeclaration,\n\tVariableDeclarator,\n\tWhileStatement: LoopStatement\n};\n","import types from './types/index.js';\nimport BlockStatement from './BlockStatement.js';\nimport Node from './Node.js';\nimport keys from './keys.js';\n\nconst statementsWithBlocks = {\n\tIfStatement: 'consequent',\n\tForStatement: 'body',\n\tForInStatement: 'body',\n\tForOfStatement: 'body',\n\tWhileStatement: 'body',\n\tDoWhileStatement: 'body',\n\tArrowFunctionExpression: 'body'\n};\n\nexport default function wrap ( raw, parent ) {\n\tif ( !raw ) return;\n\n\tif ( 'length' in raw ) {\n\t\tlet i = raw.length;\n\t\twhile ( i-- ) wrap( raw[i], parent );\n\t\treturn;\n\t}\n\n\t// with e.g. shorthand properties, key and value are\n\t// the same node. We don't want to wrap an object twice\n\tif ( raw.__wrapped ) return;\n\traw.__wrapped = true;\n\n\tif ( !keys[ raw.type ] ) {\n\t\tkeys[ raw.type ] = Object.keys( raw ).filter( key => typeof raw[ key ] === 'object' );\n\t}\n\n\t// special case – body-less if/for/while statements. TODO others?\n\tconst bodyType = statementsWithBlocks[ raw.type ];\n\tif ( bodyType && raw[ bodyType ].type !== 'BlockStatement' ) {\n\t\tconst expression = raw[ bodyType ];\n\n\t\t// create a synthetic block statement, otherwise all hell\n\t\t// breaks loose when it comes to block scoping\n\t\traw[ bodyType ] = {\n\t\t\tstart: expression.start,\n\t\t\tend: expression.end,\n\t\t\ttype: 'BlockStatement',\n\t\t\tbody: [ expression ],\n\t\t\tsynthetic: true\n\t\t};\n\t}\n\n\tnew Node( raw, parent );\n\n\tconst type = ( raw.type === 'BlockStatement' ? BlockStatement : types[ raw.type ] ) || Node;\n\traw.__proto__ = type.prototype;\n}\n","import extractNames from './extractNames.js';\nimport reserved from '../utils/reserved.js';\n\nexport default function Scope ( options ) {\n\toptions = options || {};\n\n\tthis.parent = options.parent;\n\tthis.isBlockScope = !!options.block;\n\n\tlet scope = this;\n\twhile ( scope.isBlockScope ) scope = scope.parent;\n\tthis.functionScope = scope;\n\n\tthis.identifiers = [];\n\tthis.declarations = Object.create( null );\n\tthis.references = Object.create( null );\n\tthis.blockScopedDeclarations = this.isBlockScope ? null : Object.create( null );\n\tthis.aliases = this.isBlockScope ? null : Object.create( null );\n}\n\nScope.prototype = {\n\taddDeclaration ( node, kind ) {\n\t\tfor ( const identifier of extractNames( node ) ) {\n\t\t\tconst name = identifier.name;\n\n\t\t\tconst declaration = { name, node: identifier, kind, instances: [] };\n\t\t\tthis.declarations[ name ] = declaration;\n\n\t\t\tif ( this.isBlockScope ) {\n\t\t\t\tif ( !this.functionScope.blockScopedDeclarations[ name ] ) this.functionScope.blockScopedDeclarations[ name ] = [];\n\t\t\t\tthis.functionScope.blockScopedDeclarations[ name ].push( declaration );\n\t\t\t}\n\t\t}\n\t},\n\n\taddReference ( identifier ) {\n\t\tif ( this.consolidated ) {\n\t\t\tthis.consolidateReference( identifier );\n\t\t} else {\n\t\t\tthis.identifiers.push( identifier );\n\t\t}\n\t},\n\n\tconsolidate () {\n\t\tfor ( let i = 0; i < this.identifiers.length; i += 1 ) { // we might push to the array during consolidation, so don't cache length\n\t\t\tconst identifier = this.identifiers[i];\n\t\t\tthis.consolidateReference( identifier );\n\t\t}\n\n\t\tthis.consolidated = true; // TODO understand why this is necessary... seems bad\n\t},\n\n\tconsolidateReference ( identifier ) {\n\t\tconst declaration = this.declarations[ identifier.name ];\n\t\tif ( declaration ) {\n\t\t\tdeclaration.instances.push( identifier );\n\t\t} else {\n\t\t\tthis.references[ identifier.name ] = true;\n\t\t\tif ( this.parent ) this.parent.addReference( identifier );\n\t\t}\n\t},\n\n\tcontains ( name ) {\n\t\treturn this.declarations[ name ] ||\n\t\t ( this.parent ? this.parent.contains( name ) : false );\n\t},\n\n\tcreateIdentifier ( base ) {\n\t\tif ( typeof base === 'number' ) base = base.toString();\n\n\t\tbase = base\n\t\t\t.replace( /\\s/g, '' )\n\t\t\t.replace( /\\[([^\\]]+)\\]/g, '_$1' )\n\t\t\t.replace( /[^a-zA-Z0-9_$]/g, '_' )\n\t\t\t.replace( /_{2,}/, '_' );\n\n\t\tlet name = base;\n\t\tlet counter = 1;\n\n\t\twhile ( this.declarations[ name ] || this.references[ name ] || this.aliases[ name ] || name in reserved ) {\n\t\t\tname = `${base}$${counter++}`;\n\t\t}\n\n\t\tthis.aliases[ name ] = true;\n\t\treturn name;\n\t},\n\n\tfindDeclaration ( name ) {\n\t\treturn this.declarations[ name ] ||\n\t\t ( this.parent && this.parent.findDeclaration( name ) );\n\t}\n};\n","import './wrap.js'; // TODO necessary for ordering. sort it out\nimport Node from './Node.js';\nimport Scope from './Scope.js';\nimport destructure from '../utils/destructure.js';\n\nfunction isUseStrict ( node ) {\n\tif ( !node ) return false;\n\tif ( node.type !== 'ExpressionStatement' ) return false;\n\tif ( node.expression.type !== 'Literal' ) return false;\n\treturn node.expression.value === 'use strict';\n}\n\nexport default class BlockStatement extends Node {\n\tcreateScope () {\n\t\tthis.parentIsFunction = /Function/.test( this.parent.type );\n\t\tthis.isFunctionBlock = this.parentIsFunction || this.parent.type === 'Root';\n\t\tthis.scope = new Scope({\n\t\t\tblock: !this.isFunctionBlock,\n\t\t\tparent: this.parent.findScope( false )\n\t\t});\n\n\t\tif ( this.parentIsFunction ) {\n\t\t\tthis.parent.params.forEach( node => {\n\t\t\t\tthis.scope.addDeclaration( node, 'param' );\n\t\t\t});\n\t\t}\n\t}\n\n\tinitialise ( transforms ) {\n\t\tthis.thisAlias = null;\n\t\tthis.argumentsAlias = null;\n\t\tthis.defaultParameters = [];\n\n\t\t// normally the scope gets created here, during initialisation,\n\t\t// but in some cases (e.g. `for` statements), we need to create\n\t\t// the scope early, as it pertains to both the init block and\n\t\t// the body of the statement\n\t\tif ( !this.scope ) this.createScope();\n\n\t\tthis.body.forEach( node => node.initialise( transforms ) );\n\n\t\tthis.scope.consolidate();\n\t}\n\n\tfindLexicalBoundary () {\n\t\tif ( this.type === 'Program' ) return this;\n\t\tif ( /^Function/.test( this.parent.type ) ) return this;\n\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindScope ( functionScope ) {\n\t\tif ( functionScope && !this.isFunctionBlock ) return this.parent.findScope( functionScope );\n\t\treturn this.scope;\n\t}\n\n\tgetArgumentsAlias () {\n\t\tif ( !this.argumentsAlias ) {\n\t\t\tthis.argumentsAlias = this.scope.createIdentifier( 'arguments' );\n\t\t}\n\n\t\treturn this.argumentsAlias;\n\t}\n\n\tgetArgumentsArrayAlias () {\n\t\tif ( !this.argumentsArrayAlias ) {\n\t\t\tthis.argumentsArrayAlias = this.scope.createIdentifier( 'argsArray' );\n\t\t}\n\n\t\treturn this.argumentsArrayAlias;\n\t}\n\n\tgetThisAlias () {\n\t\tif ( !this.thisAlias ) {\n\t\t\tthis.thisAlias = this.scope.createIdentifier( 'this' );\n\t\t}\n\n\t\treturn this.thisAlias;\n\t}\n\n\tgetIndentation () {\n\t\tif ( this.indentation === undefined ) {\n\t\t\tconst source = this.program.magicString.original;\n\n\t\t\tconst useOuter = this.synthetic || !this.body.length;\n\t\t\tlet c = useOuter ? this.start : this.body[0].start;\n\n\t\t\twhile ( c && source[c] !== '\\n' ) c -= 1;\n\n\t\t\tthis.indentation = '';\n\n\t\t\twhile ( true ) { // eslint-disable-line no-constant-condition\n\t\t\t\tc += 1;\n\t\t\t\tconst char = source[c];\n\n\t\t\t\tif ( char !== ' ' && char !== '\\t' ) break;\n\n\t\t\t\tthis.indentation += char;\n\t\t\t}\n\n\t\t\tconst indentString = this.program.magicString.getIndentString();\n\n\t\t\t// account for dedented class constructors\n\t\t\tlet parent = this.parent;\n\t\t\twhile ( parent ) {\n\t\t\t\tif ( parent.kind === 'constructor' && !parent.parent.parent.superClass ) {\n\t\t\t\t\tthis.indentation = this.indentation.replace( indentString, '' );\n\t\t\t\t}\n\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\tif ( useOuter ) this.indentation += indentString;\n\t\t}\n\n\t\treturn this.indentation;\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst indentation = this.getIndentation();\n\n\t\tlet introStatementGenerators = [];\n\n\t\tif ( this.argumentsAlias ) {\n\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.argumentsAlias} = arguments${suffix}`;\n\t\t\t\tcode.appendLeft( start, assignment );\n\t\t\t});\n\t\t}\n\n\t\tif ( this.thisAlias ) {\n\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.thisAlias} = this${suffix}`;\n\t\t\t\tcode.appendLeft( start, assignment );\n\t\t\t});\n\t\t}\n\n\t\tif ( this.argumentsArrayAlias ) {\n\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tconst i = this.scope.createIdentifier( 'i' );\n\t\t\t\tconst assignment = `${prefix}var ${i} = arguments.length, ${this.argumentsArrayAlias} = Array(${i});\\n${indentation}while ( ${i}-- ) ${this.argumentsArrayAlias}[${i}] = arguments[${i}]${suffix}`;\n\t\t\t\tcode.appendLeft( start, assignment );\n\t\t\t});\n\t\t}\n\n\t\tif ( /Function/.test( this.parent.type ) ) {\n\t\t\tthis.transpileParameters( code, transforms, indentation, introStatementGenerators );\n\t\t}\n\n\t\tif ( transforms.letConst && this.isFunctionBlock ) {\n\t\t\tthis.transpileBlockScopedIdentifiers( code );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\n\t\tif ( this.synthetic ) {\n\t\t\tif ( this.parent.type === 'ArrowFunctionExpression' ) {\n\t\t\t\tconst expr = this.body[0];\n\n\t\t\t\tif ( introStatementGenerators.length ) {\n\t\t\t\t\tcode.appendLeft( this.start, `{` ).prependRight( this.end, `${this.parent.getIndentation()}}` );\n\n\t\t\t\t\tcode.prependRight( expr.start, `\\n${indentation}return ` );\n\t\t\t\t\tcode.appendLeft( expr.end, `;\\n` );\n\t\t\t\t} else if ( transforms.arrow ) {\n\t\t\t\t\tcode.prependRight( expr.start, `{ return ` );\n\t\t\t\t\tcode.appendLeft( expr.end, `; }` );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( introStatementGenerators.length ) {\n\t\t\t\tcode.prependRight( this.start, `{` ).appendLeft( this.end, `}` );\n\t\t\t}\n\t\t}\n\n\t\tlet start;\n\t\tif ( isUseStrict( this.body[0] ) ) {\n\t\t\tstart = this.body[0].end;\n\t\t} else if ( this.synthetic || this.parent.type === 'Root' ) {\n\t\t\tstart = this.start;\n\t\t} else {\n\t\t\tstart = this.start + 1;\n\t\t}\n\n\t\tlet prefix = `\\n${indentation}`;\n\t\tlet suffix = ';';\n\t\tintroStatementGenerators.forEach( ( fn, i ) => {\n\t\t\tif ( i === introStatementGenerators.length - 1 ) suffix = `;\\n`;\n\t\t\tfn( start, prefix, suffix );\n\t\t});\n\t}\n\n\ttranspileParameters ( code, transforms, indentation, introStatementGenerators ) {\n\t\tconst params = this.parent.params;\n\n\t\tparams.forEach( param => {\n\t\t\tif ( param.type === 'AssignmentPattern' && param.left.type === 'Identifier' ) {\n\t\t\t\tif ( transforms.defaultParameter ) {\n\t\t\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t\tconst lhs = `${prefix}if ( ${param.left.name} === void 0 ) ${param.left.name}`;\n\n\t\t\t\t\t\tcode\n\t\t\t\t\t\t\t.prependRight( param.left.end, lhs )\n\t\t\t\t\t\t\t.move( param.left.end, param.right.end, start )\n\t\t\t\t\t\t\t.appendLeft( param.right.end, suffix );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( param.type === 'RestElement' ) {\n\t\t\t\tif ( transforms.spreadRest ) {\n\t\t\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t\tconst penultimateParam = params[ params.length - 2 ];\n\n\t\t\t\t\t\tif ( penultimateParam ) {\n\t\t\t\t\t\t\tcode.remove( penultimateParam ? penultimateParam.end : param.start, param.end );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet start = param.start, end = param.end; // TODO https://gitlab.com/Rich-Harris/buble/issues/8\n\n\t\t\t\t\t\t\twhile ( /\\s/.test( code.original[ start - 1 ] ) ) start -= 1;\n\t\t\t\t\t\t\twhile ( /\\s/.test( code.original[ end ] ) ) end += 1;\n\n\t\t\t\t\t\t\tcode.remove( start, end );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst name = param.argument.name;\n\t\t\t\t\t\tconst len = this.scope.createIdentifier( 'len' );\n\t\t\t\t\t\tconst count = params.length - 1;\n\n\t\t\t\t\t\tif ( count ) {\n\t\t\t\t\t\t\tcode.prependRight( start, `${prefix}var ${name} = [], ${len} = arguments.length - ${count};\\n${indentation}while ( ${len}-- > 0 ) ${name}[ ${len} ] = arguments[ ${len} + ${count} ]${suffix}` );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight( start, `${prefix}var ${name} = [], ${len} = arguments.length;\\n${indentation}while ( ${len}-- ) ${name}[ ${len} ] = arguments[ ${len} ]${suffix}` );\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\telse if ( param.type !== 'Identifier' ) {\n\t\t\t\tif ( transforms.parameterDestructuring ) {\n\t\t\t\t\tconst ref = this.scope.createIdentifier( 'ref' );\n\t\t\t\t\tdestructure( code, this.scope, param, ref, false, introStatementGenerators );\n\t\t\t\t\tcode.prependRight( param.start, ref );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\ttranspileBlockScopedIdentifiers ( code ) {\n\t\tObject.keys( this.scope.blockScopedDeclarations ).forEach( name => {\n\t\t\tconst declarations = this.scope.blockScopedDeclarations[ name ];\n\n\t\t\tfor ( let declaration of declarations ) {\n\t\t\t\tlet cont = false; // TODO implement proper continue...\n\n\t\t\t\tif ( declaration.kind === 'for.let' ) {\n\t\t\t\t\t// special case\n\t\t\t\t\tconst forStatement = declaration.node.findNearest( 'ForStatement' );\n\n\t\t\t\t\tif ( forStatement.shouldRewriteAsFunction ) {\n\t\t\t\t\t\tconst outerAlias = this.scope.createIdentifier( name );\n\t\t\t\t\t\tconst innerAlias = forStatement.reassigned[ name ] ?\n\t\t\t\t\t\t\tthis.scope.createIdentifier( name ) :\n\t\t\t\t\t\t\tname;\n\n\t\t\t\t\t\tdeclaration.name = outerAlias;\n\t\t\t\t\t\tcode.overwrite( declaration.node.start, declaration.node.end, outerAlias, { storeName: true });\n\n\t\t\t\t\t\tforStatement.aliases[ name ] = {\n\t\t\t\t\t\t\touter: outerAlias,\n\t\t\t\t\t\t\tinner: innerAlias\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfor ( const identifier of declaration.instances ) {\n\t\t\t\t\t\t\tconst alias = forStatement.body.contains( identifier ) ?\n\t\t\t\t\t\t\t\tinnerAlias :\n\t\t\t\t\t\t\t\touterAlias;\n\n\t\t\t\t\t\t\tif ( name !== alias ) {\n\t\t\t\t\t\t\t\tcode.overwrite( identifier.start, identifier.end, alias, { storeName: true });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcont = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( !cont ) {\n\t\t\t\t\tconst alias = this.scope.createIdentifier( name );\n\n\t\t\t\t\tif ( name !== alias ) {\n\t\t\t\t\t\tdeclaration.name = alias;\n\t\t\t\t\t\tcode.overwrite( declaration.node.start, declaration.node.end, alias, { storeName: true });\n\n\t\t\t\t\t\tfor ( const identifier of declaration.instances ) {\n\t\t\t\t\t\t\tidentifier.rewritten = true;\n\t\t\t\t\t\t\tcode.overwrite( identifier.start, identifier.end, alias, { storeName: true });\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}\n}\n","import MagicString from 'magic-string';\nimport BlockStatement from './BlockStatement.js';\nimport wrap from './wrap.js';\n\nexport default function Program ( source, ast, transforms, options ) {\n\tthis.type = 'Root';\n\n\t// options\n\tthis.jsx = options.jsx || 'React.createElement';\n\tthis.options = options;\n\n\tthis.source = source;\n\tthis.magicString = new MagicString( source );\n\n\tthis.ast = ast;\n\tthis.depth = 0;\n\n\twrap( this.body = ast, this );\n\tthis.body.__proto__ = BlockStatement.prototype;\n\n\tthis.indentExclusionElements = [];\n\tthis.body.initialise( transforms );\n\n\tthis.indentExclusions = Object.create( null );\n\tfor ( const node of this.indentExclusionElements ) {\n\t\tfor ( let i = node.start; i < node.end; i += 1 ) {\n\t\t\tthis.indentExclusions[ i ] = true;\n\t\t}\n\t}\n\n\tthis.body.transpile( this.magicString, transforms );\n}\n\nProgram.prototype = {\n\texport ( options = {} ) {\n\t\treturn {\n\t\t\tcode: this.magicString.toString(),\n\t\t\tmap: this.magicString.generateMap({\n\t\t\t\tfile: options.file,\n\t\t\t\tsource: options.source,\n\t\t\t\tincludeContent: options.includeContent !== false\n\t\t\t})\n\t\t};\n\t},\n\n\tfindNearest () {\n\t\treturn null;\n\t},\n\n\tfindScope () {\n\t\treturn null;\n\t}\n};\n","export const matrix = {\n\tchrome: {\n\t\t 48: 0b1001111011111100111110101111101,\n\t\t 49: 0b1001111111111100111111111111111,\n\t\t 50: 0b1011111111111100111111111111111,\n\t\t 51: 0b1011111111111100111111111111111,\n\t\t 52: 0b1111111111111100111111111111111\n\t},\n\tfirefox: {\n\t\t 43: 0b1000111111101100000110111011101,\n\t\t 44: 0b1000111111101100000110111011101,\n\t\t 45: 0b1000111111101100000110111011101,\n\t\t 46: 0b1010111111111100000110111011101,\n\t\t 47: 0b1010111111111100111111111011111,\n\t\t 48: 0b1010111111111100111111111011111\n\t},\n\tsafari: {\n\t\t 8: 0b1000000000000000000000000000000,\n\t\t 9: 0b1001111001101100000011101011110\n\t},\n\tie: {\n\t\t 8: 0b0000000000000000000000000000000,\n\t\t 9: 0b1000000000000000000000000000000,\n\t\t 10: 0b1000000000000000000000000000000,\n\t\t 11: 0b1000000000000000111000001100000\n\t},\n\tedge: {\n\t\t 12: 0b1011110110111100011010001011101,\n\t\t 13: 0b1011111110111100011111001011111\n\t},\n\tnode: {\n\t\t'0.10': 0b1000000000101000000000001000000,\n\t\t'0.12': 0b1000001000101000000010001000100,\n\t\t 4: 0b1001111000111100111111001111111,\n\t\t 5: 0b1001111000111100111111001111111,\n\t\t 6: 0b1011111111111100111111111111111\n\t}\n};\n\nexport const features = [\n\t'arrow',\n\t'classes',\n\t'collections',\n\t'computedProperty',\n\t'conciseMethodProperty',\n\t'constLoop',\n\t'constRedef',\n\t'defaultParameter',\n\t'destructuring',\n\t'extendNatives',\n\t'forOf',\n\t'generator',\n\t'letConst',\n\t'letLoop',\n\t'letLoopScope',\n\t'moduleExport',\n\t'moduleImport',\n\t'numericLiteral',\n\t'objectProto',\n\t'objectSuper',\n\t'oldOctalLiteral',\n\t'parameterDestructuring',\n\t'spreadRest',\n\t'stickyRegExp',\n\t'symbol',\n\t'templateString',\n\t'unicodeEscape',\n\t'unicodeIdentifier',\n\t'unicodeRegExp',\n\n\t// ES2016\n\t'exponentiation',\n\n\t// additional transforms, not from\n\t// https://featuretests.io\n\t'reservedProperties'\n];\n","import * as acorn from 'acorn';\nimport acornJsx from 'acorn-jsx/inject';\nimport acornObjectSpread from 'acorn5-object-spread/inject';\nimport Program from './program/Program.js';\nimport { features, matrix } from './support.js';\nimport getSnippet from './utils/getSnippet.js';\n\nconst { parse } = [\n\tacornObjectSpread,\n\tacornJsx\n].reduce( ( final, plugin ) => plugin( final ), acorn );\n\nconst dangerousTransforms = [\n\t'dangerousTaggedTemplateString',\n\t'dangerousForOf'\n];\n\nexport function target ( target ) {\n\tconst targets = Object.keys( target );\n\tlet bitmask = targets.length ?\n\t\t0b1111111111111111111111111111111 :\n\t\t0b1000000000000000000000000000000;\n\n\tObject.keys( target ).forEach( environment => {\n\t\tconst versions = matrix[ environment ];\n\t\tif ( !versions ) throw new Error( `Unknown environment '${environment}'. Please raise an issue at https://gitlab.com/Rich-Harris/buble/issues` );\n\n\t\tconst targetVersion = target[ environment ];\n\t\tif ( !( targetVersion in versions ) ) throw new Error( `Support data exists for the following versions of ${environment}: ${Object.keys( versions ).join( ', ')}. Please raise an issue at https://gitlab.com/Rich-Harris/buble/issues` );\n\t\tconst support = versions[ targetVersion ];\n\n\t\tbitmask &= support;\n\t});\n\n\tlet transforms = Object.create( null );\n\tfeatures.forEach( ( name, i ) => {\n\t\ttransforms[ name ] = !( bitmask & 1 << i );\n\t});\n\n\tdangerousTransforms.forEach( name => {\n\t\ttransforms[ name ] = false;\n\t});\n\n\treturn transforms;\n}\n\nexport function transform ( source, options = {} ) {\n\tlet ast;\n\tlet jsx = null;\n\n\ttry {\n\t\tast = parse( source, {\n\t\t\tecmaVersion: 8,\n\t\t\tpreserveParens: true,\n\t\t\tsourceType: 'module',\n\t\t\tonComment: (block, text) => {\n\t\t\t\tif ( !jsx ) {\n\t\t\t\t\tlet match = /@jsx\\s+([^\\s]+)/.exec( text );\n\t\t\t\t\tif ( match ) jsx = match[1];\n\t\t\t\t}\n\t\t\t},\n\t\t\tplugins: {\n\t\t\t\tjsx: true,\n\t\t\t\tobjectSpread: true\n\t\t\t}\n\t\t});\n\t\toptions.jsx = jsx || options.jsx;\n\t} catch ( err ) {\n\t\terr.snippet = getSnippet( source, err.loc );\n\t\terr.toString = () => `${err.name}: ${err.message}\\n${err.snippet}`;\n\t\tthrow err;\n\t}\n\n\tlet transforms = target( options.target || {} );\n\tObject.keys( options.transforms || {} ).forEach( name => {\n\t\tif ( name === 'modules' ) {\n\t\t\tif ( !( 'moduleImport' in options.transforms ) ) transforms.moduleImport = options.transforms.modules;\n\t\t\tif ( !( 'moduleExport' in options.transforms ) ) transforms.moduleExport = options.transforms.modules;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !( name in transforms ) ) throw new Error( `Unknown transform '${name}'` );\n\t\ttransforms[ name ] = options.transforms[ name ];\n\t});\n\n\treturn new Program( source, ast, transforms, options ).export( options );\n}\n\nexport { version as VERSION } from '../package.json';\n"],"names":["ref","parse","XHTMLEntities","Node","this","const","toJSON","let","element","super","CompileError","target","source","temp","c","fn","global","define","canonicalProperties","propertyAliases","propertyToValueAliases","require$$0","require$$1","ESCAPE_SETS","require","property","unicodeMatchPropertyValue","unicodeMatchProperty","value","rewritePattern","i","prop","propId","statement","parenthesise","types","start","alias","identifier","0b1001111011111100111110101111101","0b1001111111111100111111111111111","0b1011111111111100111111111111111","0b1111111111111100111111111111111","0b1000111111101100000110111011101","0b1010111111111100000110111011101","0b1010111111111100111111111011111","0b1000000000000000000000000000000","0b1001111001101100000011101011110","0b0000000000000000000000000000000","0b1000000000000000111000001100000","0b1011110110111100011010001011101","0b1011111110111100011111001011111","0b1000000000101000000000001000000","0b1000001000101000000010001000100","0b1001111000111100111111001111111","acornObjectSpread","acornJsx","0b1111111111111111111111111111111"],"mappings":";;AAAA;;AAEA,IAAI,aAAa,GAAG;EAClB,CAAC,EAAE,qNAAqN;EACxN,CAAC,EAAE,8CAA8C;EACjD,CAAC,EAAE,MAAM;EACT,MAAM,EAAE,wEAAwE;EAChF,UAAU,EAAE,gBAAgB;CAC7B,CAAC;;;;AAIF,IAAI,oBAAoB,GAAG,6KAA6K,CAAC;;AAEzM,IAAI,QAAQ,GAAG;EACb,CAAC,EAAE,oBAAoB;EACvB,CAAC,EAAE,oBAAoB,GAAG,0CAA0C;CACrE,CAAC;;;;;;;;;;AAUF,IAAI,4BAA4B,GAAG,qrIAAqrI,CAAC;AACztI,IAAI,uBAAuB,GAAG,+gFAA+gF,CAAC;;AAE9iF,IAAI,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,GAAG,CAAC,CAAC;AACnF,IAAI,kBAAkB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,uBAAuB,GAAG,GAAG,CAAC,CAAC;;AAExG,4BAA4B,GAAG,uBAAuB,GAAG,IAAI,CAAC;;;;;;;;;AAS9D,IAAI,0BAA0B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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,EAAE,CAAC,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,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,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,CAAC,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,KAAK,CAAC,GAAG,CAAC,CAAC;;;AAG3hC,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,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IA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E,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,MAAM;EACN,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,MAAM;EACN,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE;EACR,MAAM;EACN,MAAM;EACN,CAAC;CACF,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,IAAI,CAAC;CACd,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE;EACR,KAAK;EACL,KAAK;EACL,CAAC;CACF,CAAC,MAAM,EAAE,IAAI,CAAC;CACd,CAAC,MAAM,EAAE;EACR,IAAI;EACJ,IAAI;EACJ,CAAC;CACF,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,KAAK,CAAC;CACf,CAAC,MAAM,EAAE,KAAK,CAAC;CACf,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,OA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"}
\No newline at end of file