{"version":3,"file":"buble.es.js","sources":["../node_modules/acorn-jsx/xhtml.js","../node_modules/acorn-jsx/inject.js","../node_modules/acorn-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/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/extractNames.js","../src/program/types/shared/LoopStatement.js","../src/program/types/ForStatement.js","../src/program/types/ForInStatement.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/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/regenerate/regenerate.js","../node_modules/regexpu-core/data/character-class-escape-sets.js","../node_modules/regexpu-core/data/iu-mappings.js","../node_modules/regenerate-unicode-properties/index.js","../node_modules/unicode-loose-match/data/mappings.js","../node_modules/unicode-loose-match/index.js","../node_modules/regjsparser/parser.js","../node_modules/regjsgen/regjsgen.js","../node_modules/regexpu-core/rewrite-pattern.js","../src/program/types/Literal.js","../src/program/types/MemberExpression.js","../src/program/types/ObjectExpression.js","../src/program/types/Property.js","../src/program/types/ReturnStatement.js","../src/program/types/SpreadProperty.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/utils/destructure.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","../package.json","../src/index.js"],"sourcesContent":["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('...', 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 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, startPos, startLoc\n if (this.options.ecmaVersion >= 6) {\n // ...the spread logic borrowed from babylon :)\n if (this.type === tt.ellipsis) {\n prop = this.parseSpread()\n prop.type = isPattern ? \"RestProperty\" : \"SpreadProperty\"\n node.properties.push(prop)\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 this.parsePropertyValue(prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors)\n this.checkPropClash(prop, propHash)\n node.properties.push(this.finishNode(prop, \"Property\"))\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n }\n\n acorn.plugins.objectSpread = function objectSpreadPlugin(instance) {\n pp.parseObj = parseObj;\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\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 ) {\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\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.insertRight( element.start, '[' );\n\t\t\t\tcode.insertLeft( 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\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\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 ) {\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\t// wrap naked parameter\n\t\t\tif ( this.params.length === 1 && this.start === this.params[0].start ) {\n\t\t\t\tcode.insertRight( this.params[0].start, '(' );\n\t\t\t\tcode.insertLeft( this.params[0].end, ')' );\n\t\t\t}\n\n\t\t\t// add function\n\t\t\tcode.insertRight( this.start, 'function ' );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\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 ( node, message ) {\n\t\tsuper();\n\n\t\tconst source = node.program.magicString.original;\n\t\tconst loc = locate( source, node.start );\n\n\t\tthis.name = 'CompileError';\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, `${this.left.name} is read-only` );\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\tif ( /Pattern/.test( this.left.type ) ) {\n\t\t\tthrow new CompileError( this.left, 'Destructuring assignments are not currently supported. Coming soon!' );\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\tconst scope = this.findScope( false );\n\t\t\tconst getAlias = name => {\n\t\t\t\tconst declaration = scope.findDeclaration( name );\n\t\t\t\treturn declaration ? declaration.name : name;\n\t\t\t};\n\n\t\t\t// first, the easy part – `**=` -> `=`\n\t\t\tlet charIndex = this.left.end;\n\t\t\twhile ( code.original[ charIndex ] !== '*' ) charIndex += 1;\n\t\t\tcode.remove( charIndex, charIndex + 2 );\n\n\t\t\t// how we do the next part depends on a number of factors – whether\n\t\t\t// this is a top-level statement, and whether we're updating a\n\t\t\t// simple or complex reference\n\t\t\tlet base;\n\n\t\t\tlet left = this.left;\n\t\t\twhile ( left.type === 'ParenthesizedExpression' ) left = left.expression;\n\n\t\t\tif ( left.type === 'Identifier' ) {\n\t\t\t\tbase = getAlias( left.name );\n\t\t\t} else if ( left.type === 'MemberExpression' ) {\n\t\t\t\tlet object;\n\t\t\t\tlet needsObjectVar = false;\n\t\t\t\tlet property;\n\t\t\t\tlet needsPropertyVar = false;\n\n\t\t\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\t\t\tconst i0 = statement.getIndentation();\n\n\t\t\t\tif ( left.property.type === 'Identifier' ) {\n\t\t\t\t\tproperty = left.computed ? getAlias( left.property.name ) : left.property.name;\n\t\t\t\t} else {\n\t\t\t\t\tproperty = scope.createIdentifier( 'property' );\n\t\t\t\t\tneedsPropertyVar = true;\n\t\t\t\t}\n\n\t\t\t\tif ( left.object.type === 'Identifier' ) {\n\t\t\t\t\tobject = getAlias( left.object.name );\n\t\t\t\t} else {\n\t\t\t\t\tobject = scope.createIdentifier( 'object' );\n\t\t\t\t\tneedsObjectVar = true;\n\t\t\t\t}\n\n\t\t\t\tif ( left.start === statement.start ) {\n\t\t\t\t\tif ( needsObjectVar && needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( statement.start, `var ${object} = ` );\n\t\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `;\\n${i0}var ${property} = ` );\n\t\t\t\t\t\tcode.overwrite( left.property.end, left.end, `;\\n${i0}${object}[${property}]` );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsObjectVar ) {\n\t\t\t\t\t\tcode.insertRight( statement.start, `var ${object} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.object.end, `;\\n${i0}` );\n\t\t\t\t\t\tcode.insertLeft( left.object.end, object );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( left.property.start, `var ${property} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.property.end, `;\\n${i0}` );\n\t\t\t\t\t\tcode.move( left.property.start, left.property.end, this.start );\n\n\t\t\t\t\t\tcode.insertLeft( left.object.end, `[${property}]` );\n\t\t\t\t\t\tcode.remove( left.object.end, left.property.start );\n\t\t\t\t\t\tcode.remove( left.property.end, left.end );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tlet declarators = [];\n\t\t\t\t\tif ( needsObjectVar ) declarators.push( object );\n\t\t\t\t\tif ( needsPropertyVar ) declarators.push( property );\n\t\t\t\t\tcode.insertRight( statement.start, `var ${declarators.join( ', ' )};\\n${i0}` );\n\n\t\t\t\t\tif ( needsObjectVar && needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( left.start, `( ${object} = ` );\n\t\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `, ${property} = ` );\n\t\t\t\t\t\tcode.overwrite( left.property.end, left.end, `, ${object}[${property}]` );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsObjectVar ) {\n\t\t\t\t\t\tcode.insertRight( left.start, `( ${object} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.object.end, `, ${object}` );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( left.property.start, `( ${property} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.property.end, `, ` );\n\t\t\t\t\t\tcode.move( left.property.start, left.property.end, left.start );\n\n\t\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `[${property}]` );\n\t\t\t\t\t\tcode.remove( left.property.end, left.end );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.insertLeft( this.end, ` )` );\n\t\t\t\t}\n\n\t\t\t\tbase = object + ( left.computed || needsPropertyVar ? `[${property}]` : `.${property}` );\n\t\t\t}\n\n\t\t\tcode.insertRight( this.right.start, `Math.pow( ${base}, ` );\n\t\t\tcode.insertLeft( this.right.end, ` )` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\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.insertRight( this.start, `Math.pow( ` );\n\t\t\tcode.overwrite( this.left.end, this.right.start, `, ` );\n\t\t\tcode.insertLeft( this.end, ` )` );\n\t\t}\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 BreakStatement extends Node {\n\tinitialise ( transforms ) {\n\t\tconst loop = this.findNearest( /(?:For(?:In)?|While)Statement/ );\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, transforms ) {\n\t\tif ( this.loop && this.loop.shouldRewriteAsFunction ) {\n\t\t\tif ( this.label ) throw new CompileError( this, 'Labels are not currently supported in a loop with locally-scoped variables' );\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\t\t\t\tif ( 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\tconst statement = this.callee.object;\n\t\t\t\t\t\tconst i0 = statement.getIndentation();\n\t\t\t\t\t\tcontext = this.findScope( true ).createIdentifier( 'ref' );\n\t\t\t\t\t\tcode.insertRight( statement.start, `var ${context} = ` );\n\t\t\t\t\t\tcode.insertLeft( statement.end, `;\\n${i0}${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.insertLeft( this.callee.end, '.apply' );\n\n\t\t\t\t// we need to handle `super()` different, because `SuperClass.call.apply`\n\t\t\t\t// isn't very helpful\n\t\t\t\tconst isSuper = this.callee.type === 'Super';\n\n\t\t\t\tif ( isSuper ) {\n\t\t\t\t\tthis.callee.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.insertRight( firstArgument.start, `[ ` );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode.insertLeft( 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.insertRight( 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.insertRight( firstArgument.start, `${context}, ` );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.insertRight( firstArgument.start, `${context}, [ ` );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.insertLeft( 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.insertLeft( constructor.end, ';' );\n\t\t\t}\n\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 ${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\tcode.overwrite( method.key.start, method.key.end, `function ${name}` );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( method.static ) code.remove( method.start, method.start + 7 );\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 ( scope.contains( methodName ) || reserved[ methodName ] ) methodName = scope.createIdentifier( methodName );\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\twhile ( code.original[c] !== ']' ) c += 1;\n\t\t\t\t\tc += 1;\n\t\t\t\t}\n\n\t\t\t\tcode.insertRight( method.start, lhs );\n\n\t\t\t\tconst rhs = ( isAccessor ? `.${method.kind}` : '' ) + ` = function` + ( method.value.generator ? '* ' : ' ' ) + ( method.computed || isAccessor ? '' : `${methodName} ` );\n\t\t\t\tcode.remove( c, method.value.start );\n\t\t\t\tcode.insertRight( method.value.start, rhs );\n\t\t\t\tcode.insertLeft( method.end, ';' );\n\n\t\t\t\tif ( method.value.generator ) code.remove( method.start, method.key.start );\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}: {}` ).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}: {}` ).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.insertLeft( constructor.end, introBlock );\n\t\t\t} else {\n\t\t\t\tcode.insertRight( this.start, introBlock );\n\t\t\t}\n\n\t\t\tcode.insertLeft( 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 pattern = new RegExp( indentStr + '\\\\S', 'g' );\n\n\tif ( code.original.slice( start - indentStr.length, start ) === indentStr ) {\n\t\tcode.remove( start - indentStr.length, start );\n\t}\n\n\tconst slice = code.original.slice( start, end );\n\tlet match;\n\twhile ( match = pattern.exec( slice ) ) {\n\t\tif ( !node.program.indentExclusions[ match.index ] ) code.remove( start + match.index, start + match.index + indentStr.length );\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.insertLeft( 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.insertLeft( 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.insertLeft( 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.insertRight( this.end, `));${syntheticDefaultExport}` );\n\t\t\t} else if ( syntheticDefaultExport ) {\n\t\t\t\tcode.insertRight( 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.insertLeft( 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.insertLeft( this.end, outro );\n\t\t\t\tcode.move( this.superClass.start, this.superClass.end, this.end );\n\t\t\t\tcode.insertRight( this.end, '))' );\n\t\t\t} else {\n\t\t\t\tcode.insertLeft( 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';\n\nexport default class ContinueStatement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tconst loop = this.findNearest( /(?:For(?:In|Of)?|While)Statement/ );\n\t\tif ( loop.shouldRewriteAsFunction ) {\n\t\t\tif ( this.label ) throw new CompileError( this, 'Labels are not currently supported in a loop with locally-scoped variables' );\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( this, 'export is not supported' );\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( this, 'export is not supported' );\n\t\tsuper.initialise( 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.value.type ]( names, prop.value );\n\t\t}\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 Node from '../../Node.js';\nimport extractNames from '../../extractNames.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\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.insertRight( this.body.start, before );\n\t\t\tcode.insertLeft( 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.insertRight( 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.insertRight( this.body.end, callExpression );\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 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.insertLeft( 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.insertLeft( 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 LoopStatement from './shared/LoopStatement.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ForOfStatement extends LoopStatement {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.forOf && !transforms.dangerousForOf ) throw new CompileError( this, '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' );\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( !transforms.dangerousForOf ) {\n\t\t\tsuper.transpile( code, transforms );\n\t\t\treturn;\n\t\t}\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.insertLeft( 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.insertRight( this.left.start, `{\\n${i1}` );\n\t\t\tcode.insertLeft( 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\t\tcode.insertLeft( this.left.end, ` = ${list}[${key}];\\n\\n${i1}` );\n\n\t\tcode.insertRight( this.right.start, `var ${key} = 0, ${list} = ` );\n\t\tcode.insertLeft( this.right.end, `; ${key} < ${list}.length; ${key} += 1` );\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 FunctionDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.generator && transforms.generator ) {\n\t\t\tthrow new CompileError( this, 'Generators are not supported' );\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( this, 'Generators are not supported' );\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\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';\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( /(?:For(?:In|Of)?|While)Statement/ );\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, transforms ) {\n\t\tif ( this.alias ) {\n\t\t\tcode.overwrite( this.start, this.end, this.alias, true );\n\t\t}\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( this, 'import is not supported' );\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 IS_DATA_ATTRIBUTE = /-/;\n\nexport default class JSXAttribute extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( this.value ) {\n\t\t\tcode.overwrite( this.name.end, this.value.start, ': ' );\n\t\t} else {\n\t\t\t// tag without value\n\t\t\tcode.overwrite( this.name.start, this.name.end, `${this.name.name}: true`)\n\t\t}\n\n\t\tif ( IS_DATA_ATTRIBUTE.test( this.name.name ) ) {\n\t\t\tcode.overwrite( this.name.start, this.name.end, `'${this.name.name}'` );\n\t\t}\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, transforms ) {\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\tconst tail = code.original[ c ] === '\\n' && child.type !== 'Literal' ? '' : ' ';\n\t\t\t\tcode.insertLeft( c, `,${tail}` );\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';\n\nexport default class JSXOpeningElement extends Node {\n\ttranspile ( code, transforms ) {\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.insertRight( 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\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.insertRight( 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.insertLeft( 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\tbefore = html ? `', ${this.program.objectAssign}({},` : `, ${this.program.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.insertRight( this.name.end, before );\n\n\t\t\tif ( after ) {\n\t\t\t\tcode.insertLeft( this.attributes[ len - 1 ].end, after );\n\t\t\t}\n\t\t} else {\n\t\t\tcode.insertLeft( this.name.end, html ? `', null` : `, null` );\n\t\t\tc = this.name.end;\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\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","/*! https://mths.be/regenerate v1.3.1 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\tcodePoint == 0x2D || codePoint == 0x2E || codePoint == 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 prevStartHigh = 0;\n\t\tvar prevEndHigh = 0;\n\t\tvar tmpLow = [];\n\t\tvar endHigh;\n\t\tvar endLow;\n\t\tvar surrogateMappings = [];\n\t\tvar length = data.length;\n\t\tvar dataHigh = [];\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\tprevStartHigh = startHigh;\n\t\t\tprevEndHigh = endHigh;\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 hasAstral = !dataIsEmpty(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.1';\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","// 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(0x4B, 0x53, 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","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[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[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[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[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[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]);\n","module.exports = [\n\t'Bidi_Class',\n\t'Bidi_Paired_Bracket_Type',\n\t'Binary_Property',\n\t'Block',\n\t'General_Category',\n\t'Script',\n\t'Script_Extensions'\n];\n","module.exports = {\n\t'aliasToProperty': new Map([\n\t\t['cjkaccountingnumeric', 'kAccountingNumeric'],\n\t\t['kaccountingnumeric', 'kAccountingNumeric'],\n\t\t['cjkothernumeric', 'kOtherNumeric'],\n\t\t['kothernumeric', 'kOtherNumeric'],\n\t\t['cjkprimarynumeric', 'kPrimaryNumeric'],\n\t\t['kprimarynumeric', 'kPrimaryNumeric'],\n\t\t['nv', 'Numeric_Value'],\n\t\t['numericvalue', 'Numeric_Value'],\n\t\t['cf', 'Case_Folding'],\n\t\t['casefolding', 'Case_Folding'],\n\t\t['cjkcompatibilityvariant', 'kCompatibilityVariant'],\n\t\t['kcompatibilityvariant', 'kCompatibilityVariant'],\n\t\t['dm', 'Decomposition_Mapping'],\n\t\t['decompositionmapping', 'Decomposition_Mapping'],\n\t\t['fcnfkc', 'FC_NFKC_Closure'],\n\t\t['fcnfkcclosure', 'FC_NFKC_Closure'],\n\t\t['lc', 'Lowercase_Mapping'],\n\t\t['lowercasemapping', 'Lowercase_Mapping'],\n\t\t['nfkccf', 'NFKC_Casefold'],\n\t\t['nfkccasefold', 'NFKC_Casefold'],\n\t\t['scf', 'Simple_Case_Folding'],\n\t\t['simplecasefolding', 'Simple_Case_Folding'],\n\t\t['sfc', 'Simple_Case_Folding'],\n\t\t['slc', 'Simple_Lowercase_Mapping'],\n\t\t['simplelowercasemapping', 'Simple_Lowercase_Mapping'],\n\t\t['stc', 'Simple_Titlecase_Mapping'],\n\t\t['simpletitlecasemapping', 'Simple_Titlecase_Mapping'],\n\t\t['suc', 'Simple_Uppercase_Mapping'],\n\t\t['simpleuppercasemapping', 'Simple_Uppercase_Mapping'],\n\t\t['tc', 'Titlecase_Mapping'],\n\t\t['titlecasemapping', 'Titlecase_Mapping'],\n\t\t['uc', 'Uppercase_Mapping'],\n\t\t['uppercasemapping', 'Uppercase_Mapping'],\n\t\t['bmg', 'Bidi_Mirroring_Glyph'],\n\t\t['bidimirroringglyph', 'Bidi_Mirroring_Glyph'],\n\t\t['bpb', 'Bidi_Paired_Bracket'],\n\t\t['bidipairedbracket', 'Bidi_Paired_Bracket'],\n\t\t['cjkiicore', 'kIICore'],\n\t\t['kiicore', 'kIICore'],\n\t\t['cjkirggsource', 'kIRG_GSource'],\n\t\t['kirggsource', 'kIRG_GSource'],\n\t\t['cjkirghsource', 'kIRG_HSource'],\n\t\t['kirghsource', 'kIRG_HSource'],\n\t\t['cjkirgjsource', 'kIRG_JSource'],\n\t\t['kirgjsource', 'kIRG_JSource'],\n\t\t['cjkirgkpsource', 'kIRG_KPSource'],\n\t\t['kirgkpsource', 'kIRG_KPSource'],\n\t\t['cjkirgksource', 'kIRG_KSource'],\n\t\t['kirgksource', 'kIRG_KSource'],\n\t\t['cjkirgmsource', 'kIRG_MSource'],\n\t\t['kirgmsource', 'kIRG_MSource'],\n\t\t['cjkirgtsource', 'kIRG_TSource'],\n\t\t['kirgtsource', 'kIRG_TSource'],\n\t\t['cjkirgusource', 'kIRG_USource'],\n\t\t['kirgusource', 'kIRG_USource'],\n\t\t['cjkirgvsource', 'kIRG_VSource'],\n\t\t['kirgvsource', 'kIRG_VSource'],\n\t\t['cjkrsunicode', 'kRSUnicode'],\n\t\t['krsunicode', 'kRSUnicode'],\n\t\t['unicoderadicalstroke', 'kRSUnicode'],\n\t\t['urs', 'kRSUnicode'],\n\t\t['isc', 'ISO_Comment'],\n\t\t['isocomment', 'ISO_Comment'],\n\t\t['jsn', 'Jamo_Short_Name'],\n\t\t['jamoshortname', 'Jamo_Short_Name'],\n\t\t['na', 'Name'],\n\t\t['name', 'Name'],\n\t\t['na1', 'Unicode_1_Name'],\n\t\t['unicode1name', 'Unicode_1_Name'],\n\t\t['namealias', 'Name_Alias'],\n\t\t['scx', 'Script_Extensions'],\n\t\t['scriptextensions', 'Script_Extensions'],\n\t\t['age', 'Age'],\n\t\t['blk', 'Block'],\n\t\t['block', 'Block'],\n\t\t['sc', 'Script'],\n\t\t['script', 'Script'],\n\t\t['bc', 'Bidi_Class'],\n\t\t['bidiclass', 'Bidi_Class'],\n\t\t['bpt', 'Bidi_Paired_Bracket_Type'],\n\t\t['bidipairedbrackettype', 'Bidi_Paired_Bracket_Type'],\n\t\t['ccc', 'Canonical_Combining_Class'],\n\t\t['canonicalcombiningclass', 'Canonical_Combining_Class'],\n\t\t['dt', 'Decomposition_Type'],\n\t\t['decompositiontype', 'Decomposition_Type'],\n\t\t['ea', 'East_Asian_Width'],\n\t\t['eastasianwidth', 'East_Asian_Width'],\n\t\t['gc', 'General_Category'],\n\t\t['generalcategory', 'General_Category'],\n\t\t['gcb', 'Grapheme_Cluster_Break'],\n\t\t['graphemeclusterbreak', 'Grapheme_Cluster_Break'],\n\t\t['hst', 'Hangul_Syllable_Type'],\n\t\t['hangulsyllabletype', 'Hangul_Syllable_Type'],\n\t\t['inpc', 'Indic_Positional_Category'],\n\t\t['indicpositionalcategory', 'Indic_Positional_Category'],\n\t\t['insc', 'Indic_Syllabic_Category'],\n\t\t['indicsyllabiccategory', 'Indic_Syllabic_Category'],\n\t\t['jg', 'Joining_Group'],\n\t\t['joininggroup', 'Joining_Group'],\n\t\t['jt', 'Joining_Type'],\n\t\t['joiningtype', 'Joining_Type'],\n\t\t['lb', 'Line_Break'],\n\t\t['linebreak', 'Line_Break'],\n\t\t['nfcqc', 'NFC_Quick_Check'],\n\t\t['nfcquickcheck', 'NFC_Quick_Check'],\n\t\t['nfdqc', 'NFD_Quick_Check'],\n\t\t['nfdquickcheck', 'NFD_Quick_Check'],\n\t\t['nfkcqc', 'NFKC_Quick_Check'],\n\t\t['nfkcquickcheck', 'NFKC_Quick_Check'],\n\t\t['nfkdqc', 'NFKD_Quick_Check'],\n\t\t['nfkdquickcheck', 'NFKD_Quick_Check'],\n\t\t['nt', 'Numeric_Type'],\n\t\t['numerictype', 'Numeric_Type'],\n\t\t['sb', 'Sentence_Break'],\n\t\t['sentencebreak', 'Sentence_Break'],\n\t\t['wb', 'Word_Break'],\n\t\t['wordbreak', 'Word_Break'],\n\t\t['ahex', 'ASCII_Hex_Digit'],\n\t\t['asciihexdigit', 'ASCII_Hex_Digit'],\n\t\t['alpha', 'Alphabetic'],\n\t\t['alphabetic', 'Alphabetic'],\n\t\t['bidic', 'Bidi_Control'],\n\t\t['bidicontrol', 'Bidi_Control'],\n\t\t['bidim', 'Bidi_Mirrored'],\n\t\t['bidimirrored', 'Bidi_Mirrored'],\n\t\t['cased', 'Cased'],\n\t\t['ce', 'Composition_Exclusion'],\n\t\t['compositionexclusion', 'Composition_Exclusion'],\n\t\t['ci', 'Case_Ignorable'],\n\t\t['caseignorable', 'Case_Ignorable'],\n\t\t['compex', 'Full_Composition_Exclusion'],\n\t\t['fullcompositionexclusion', 'Full_Composition_Exclusion'],\n\t\t['cwcf', 'Changes_When_Casefolded'],\n\t\t['changeswhencasefolded', 'Changes_When_Casefolded'],\n\t\t['cwcm', 'Changes_When_Casemapped'],\n\t\t['changeswhencasemapped', 'Changes_When_Casemapped'],\n\t\t['cwkcf', 'Changes_When_NFKC_Casefolded'],\n\t\t['changeswhennfkccasefolded', 'Changes_When_NFKC_Casefolded'],\n\t\t['cwl', 'Changes_When_Lowercased'],\n\t\t['changeswhenlowercased', 'Changes_When_Lowercased'],\n\t\t['cwt', 'Changes_When_Titlecased'],\n\t\t['changeswhentitlecased', 'Changes_When_Titlecased'],\n\t\t['cwu', 'Changes_When_Uppercased'],\n\t\t['changeswhenuppercased', 'Changes_When_Uppercased'],\n\t\t['dash', 'Dash'],\n\t\t['dep', 'Deprecated'],\n\t\t['deprecated', 'Deprecated'],\n\t\t['di', 'Default_Ignorable_Code_Point'],\n\t\t['defaultignorablecodepoint', 'Default_Ignorable_Code_Point'],\n\t\t['dia', 'Diacritic'],\n\t\t['diacritic', 'Diacritic'],\n\t\t['ext', 'Extender'],\n\t\t['extender', 'Extender'],\n\t\t['grbase', 'Grapheme_Base'],\n\t\t['graphemebase', 'Grapheme_Base'],\n\t\t['grext', 'Grapheme_Extend'],\n\t\t['graphemeextend', 'Grapheme_Extend'],\n\t\t['grlink', 'Grapheme_Link'],\n\t\t['graphemelink', 'Grapheme_Link'],\n\t\t['hex', 'Hex_Digit'],\n\t\t['hexdigit', 'Hex_Digit'],\n\t\t['hyphen', 'Hyphen'],\n\t\t['idc', 'ID_Continue'],\n\t\t['idcontinue', 'ID_Continue'],\n\t\t['ideo', 'Ideographic'],\n\t\t['ideographic', 'Ideographic'],\n\t\t['ids', 'ID_Start'],\n\t\t['idstart', 'ID_Start'],\n\t\t['idsb', 'IDS_Binary_Operator'],\n\t\t['idsbinaryoperator', 'IDS_Binary_Operator'],\n\t\t['idst', 'IDS_Trinary_Operator'],\n\t\t['idstrinaryoperator', 'IDS_Trinary_Operator'],\n\t\t['joinc', 'Join_Control'],\n\t\t['joincontrol', 'Join_Control'],\n\t\t['loe', 'Logical_Order_Exception'],\n\t\t['logicalorderexception', 'Logical_Order_Exception'],\n\t\t['lower', 'Lowercase'],\n\t\t['lowercase', 'Lowercase'],\n\t\t['math', 'Math'],\n\t\t['nchar', 'Noncharacter_Code_Point'],\n\t\t['noncharactercodepoint', 'Noncharacter_Code_Point'],\n\t\t['oalpha', 'Other_Alphabetic'],\n\t\t['otheralphabetic', 'Other_Alphabetic'],\n\t\t['odi', 'Other_Default_Ignorable_Code_Point'],\n\t\t['otherdefaultignorablecodepoint', 'Other_Default_Ignorable_Code_Point'],\n\t\t['ogrext', 'Other_Grapheme_Extend'],\n\t\t['othergraphemeextend', 'Other_Grapheme_Extend'],\n\t\t['oidc', 'Other_ID_Continue'],\n\t\t['otheridcontinue', 'Other_ID_Continue'],\n\t\t['oids', 'Other_ID_Start'],\n\t\t['otheridstart', 'Other_ID_Start'],\n\t\t['olower', 'Other_Lowercase'],\n\t\t['otherlowercase', 'Other_Lowercase'],\n\t\t['omath', 'Other_Math'],\n\t\t['othermath', 'Other_Math'],\n\t\t['oupper', 'Other_Uppercase'],\n\t\t['otheruppercase', 'Other_Uppercase'],\n\t\t['patsyn', 'Pattern_Syntax'],\n\t\t['patternsyntax', 'Pattern_Syntax'],\n\t\t['patws', 'Pattern_White_Space'],\n\t\t['patternwhitespace', 'Pattern_White_Space'],\n\t\t['pcm', 'Prepended_Concatenation_Mark'],\n\t\t['prependedconcatenationmark', 'Prepended_Concatenation_Mark'],\n\t\t['qmark', 'Quotation_Mark'],\n\t\t['quotationmark', 'Quotation_Mark'],\n\t\t['radical', 'Radical'],\n\t\t['sd', 'Soft_Dotted'],\n\t\t['softdotted', 'Soft_Dotted'],\n\t\t['sterm', 'Sentence_Terminal'],\n\t\t['sentenceterminal', 'Sentence_Terminal'],\n\t\t['term', 'Terminal_Punctuation'],\n\t\t['terminalpunctuation', 'Terminal_Punctuation'],\n\t\t['uideo', 'Unified_Ideograph'],\n\t\t['unifiedideograph', 'Unified_Ideograph'],\n\t\t['upper', 'Uppercase'],\n\t\t['uppercase', 'Uppercase'],\n\t\t['vs', 'Variation_Selector'],\n\t\t['variationselector', 'Variation_Selector'],\n\t\t['wspace', 'White_Space'],\n\t\t['whitespace', 'White_Space'],\n\t\t['space', 'White_Space'],\n\t\t['xidc', 'XID_Continue'],\n\t\t['xidcontinue', 'XID_Continue'],\n\t\t['xids', 'XID_Start'],\n\t\t['xidstart', 'XID_Start'],\n\t\t['xonfc', 'Expands_On_NFC'],\n\t\t['expandsonnfc', 'Expands_On_NFC'],\n\t\t['xonfd', 'Expands_On_NFD'],\n\t\t['expandsonnfd', 'Expands_On_NFD'],\n\t\t['xonfkc', 'Expands_On_NFKC'],\n\t\t['expandsonnfkc', 'Expands_On_NFKC'],\n\t\t['xonfkd', 'Expands_On_NFKD'],\n\t\t['expandsonnfkd', 'Expands_On_NFKD'],\n\t\t['ascii', 'ASCII'],\n\t\t['any', 'Any'],\n\t\t['assigned', 'Assigned']\n\t]),\n\t'propertyToValueAliases': new Map([\n\t\t['Jamo_Short_Name', new Map([\n\t\t\t['a', 'A'],\n\t\t\t['ae', 'AE'],\n\t\t\t['b', 'B'],\n\t\t\t['bb', 'BB'],\n\t\t\t['bs', 'BS'],\n\t\t\t['c', 'C'],\n\t\t\t['d', 'D'],\n\t\t\t['dd', 'DD'],\n\t\t\t['e', 'E'],\n\t\t\t['eo', 'EO'],\n\t\t\t['eu', 'EU'],\n\t\t\t['g', 'G'],\n\t\t\t['gg', 'GG'],\n\t\t\t['gs', 'GS'],\n\t\t\t['h', 'H'],\n\t\t\t['i', 'I'],\n\t\t\t['j', 'J'],\n\t\t\t['jj', 'JJ'],\n\t\t\t['k', 'K'],\n\t\t\t['l', 'L'],\n\t\t\t['lb', 'LB'],\n\t\t\t['lg', 'LG'],\n\t\t\t['lh', 'LH'],\n\t\t\t['lm', 'LM'],\n\t\t\t['lp', 'LP'],\n\t\t\t['ls', 'LS'],\n\t\t\t['lt', 'LT'],\n\t\t\t['m', 'M'],\n\t\t\t['n', 'N'],\n\t\t\t['ng', 'NG'],\n\t\t\t['nh', 'NH'],\n\t\t\t['nj', 'NJ'],\n\t\t\t['o', 'O'],\n\t\t\t['oe', 'OE'],\n\t\t\t['p', 'P'],\n\t\t\t['r', 'R'],\n\t\t\t['s', 'S'],\n\t\t\t['ss', 'SS'],\n\t\t\t['t', 'T'],\n\t\t\t['u', 'U'],\n\t\t\t['wa', 'WA'],\n\t\t\t['wae', 'WAE'],\n\t\t\t['we', 'WE'],\n\t\t\t['weo', 'WEO'],\n\t\t\t['wi', 'WI'],\n\t\t\t['ya', 'YA'],\n\t\t\t['yae', 'YAE'],\n\t\t\t['ye', 'YE'],\n\t\t\t['yeo', 'YEO'],\n\t\t\t['yi', 'YI'],\n\t\t\t['yo', 'YO'],\n\t\t\t['yu', 'YU']\n\t\t])],\n\t\t['Age', new Map([\n\t\t\t['1.1', 'V1_1'],\n\t\t\t['v11', 'V1_1'],\n\t\t\t['2.0', 'V2_0'],\n\t\t\t['v20', 'V2_0'],\n\t\t\t['2.1', 'V2_1'],\n\t\t\t['v21', 'V2_1'],\n\t\t\t['3.0', 'V3_0'],\n\t\t\t['v30', 'V3_0'],\n\t\t\t['3.1', 'V3_1'],\n\t\t\t['v31', 'V3_1'],\n\t\t\t['3.2', 'V3_2'],\n\t\t\t['v32', 'V3_2'],\n\t\t\t['4.0', 'V4_0'],\n\t\t\t['v40', 'V4_0'],\n\t\t\t['4.1', 'V4_1'],\n\t\t\t['v41', 'V4_1'],\n\t\t\t['5.0', 'V5_0'],\n\t\t\t['v50', 'V5_0'],\n\t\t\t['5.1', 'V5_1'],\n\t\t\t['v51', 'V5_1'],\n\t\t\t['5.2', 'V5_2'],\n\t\t\t['v52', 'V5_2'],\n\t\t\t['6.0', 'V6_0'],\n\t\t\t['v60', 'V6_0'],\n\t\t\t['6.1', 'V6_1'],\n\t\t\t['v61', 'V6_1'],\n\t\t\t['6.2', 'V6_2'],\n\t\t\t['v62', 'V6_2'],\n\t\t\t['6.3', 'V6_3'],\n\t\t\t['v63', 'V6_3'],\n\t\t\t['7.0', 'V7_0'],\n\t\t\t['v70', 'V7_0'],\n\t\t\t['8.0', 'V8_0'],\n\t\t\t['v80', 'V8_0'],\n\t\t\t['9.0', 'V9_0'],\n\t\t\t['v90', 'V9_0'],\n\t\t\t['na', 'Unassigned'],\n\t\t\t['unassigned', 'Unassigned']\n\t\t])],\n\t\t['Block', new Map([\n\t\t\t['adlam', 'Adlam'],\n\t\t\t['aegeannumbers', 'Aegean_Numbers'],\n\t\t\t['ahom', 'Ahom'],\n\t\t\t['alchemical', 'Alchemical_Symbols'],\n\t\t\t['alchemicalsymbols', 'Alchemical_Symbols'],\n\t\t\t['alphabeticpf', 'Alphabetic_Presentation_Forms'],\n\t\t\t['alphabeticpresentationforms', 'Alphabetic_Presentation_Forms'],\n\t\t\t['anatolianhieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t\t['ancientgreekmusic', 'Ancient_Greek_Musical_Notation'],\n\t\t\t['ancientgreekmusicalnotation', 'Ancient_Greek_Musical_Notation'],\n\t\t\t['ancientgreeknumbers', 'Ancient_Greek_Numbers'],\n\t\t\t['ancientsymbols', 'Ancient_Symbols'],\n\t\t\t['arabic', 'Arabic'],\n\t\t\t['arabicexta', 'Arabic_Extended_A'],\n\t\t\t['arabicextendeda', 'Arabic_Extended_A'],\n\t\t\t['arabicmath', 'Arabic_Mathematical_Alphabetic_Symbols'],\n\t\t\t['arabicmathematicalalphabeticsymbols', 'Arabic_Mathematical_Alphabetic_Symbols'],\n\t\t\t['arabicpfa', 'Arabic_Presentation_Forms_A'],\n\t\t\t['arabicpresentationformsa', 'Arabic_Presentation_Forms_A'],\n\t\t\t['arabicpfb', 'Arabic_Presentation_Forms_B'],\n\t\t\t['arabicpresentationformsb', 'Arabic_Presentation_Forms_B'],\n\t\t\t['arabicsup', 'Arabic_Supplement'],\n\t\t\t['arabicsupplement', 'Arabic_Supplement'],\n\t\t\t['armenian', 'Armenian'],\n\t\t\t['arrows', 'Arrows'],\n\t\t\t['ascii', 'Basic_Latin'],\n\t\t\t['basiclatin', 'Basic_Latin'],\n\t\t\t['avestan', 'Avestan'],\n\t\t\t['balinese', 'Balinese'],\n\t\t\t['bamum', 'Bamum'],\n\t\t\t['bamumsup', 'Bamum_Supplement'],\n\t\t\t['bamumsupplement', 'Bamum_Supplement'],\n\t\t\t['bassavah', 'Bassa_Vah'],\n\t\t\t['batak', 'Batak'],\n\t\t\t['bengali', 'Bengali'],\n\t\t\t['bhaiksuki', 'Bhaiksuki'],\n\t\t\t['blockelements', 'Block_Elements'],\n\t\t\t['bopomofo', 'Bopomofo'],\n\t\t\t['bopomofoext', 'Bopomofo_Extended'],\n\t\t\t['bopomofoextended', 'Bopomofo_Extended'],\n\t\t\t['boxdrawing', 'Box_Drawing'],\n\t\t\t['brahmi', 'Brahmi'],\n\t\t\t['braille', 'Braille_Patterns'],\n\t\t\t['braillepatterns', 'Braille_Patterns'],\n\t\t\t['buginese', 'Buginese'],\n\t\t\t['buhid', 'Buhid'],\n\t\t\t['byzantinemusic', 'Byzantine_Musical_Symbols'],\n\t\t\t['byzantinemusicalsymbols', 'Byzantine_Musical_Symbols'],\n\t\t\t['carian', 'Carian'],\n\t\t\t['caucasianalbanian', 'Caucasian_Albanian'],\n\t\t\t['chakma', 'Chakma'],\n\t\t\t['cham', 'Cham'],\n\t\t\t['cherokee', 'Cherokee'],\n\t\t\t['cherokeesup', 'Cherokee_Supplement'],\n\t\t\t['cherokeesupplement', 'Cherokee_Supplement'],\n\t\t\t['cjk', 'CJK_Unified_Ideographs'],\n\t\t\t['cjkunifiedideographs', 'CJK_Unified_Ideographs'],\n\t\t\t['cjkcompat', 'CJK_Compatibility'],\n\t\t\t['cjkcompatibility', 'CJK_Compatibility'],\n\t\t\t['cjkcompatforms', 'CJK_Compatibility_Forms'],\n\t\t\t['cjkcompatibilityforms', 'CJK_Compatibility_Forms'],\n\t\t\t['cjkcompatideographs', 'CJK_Compatibility_Ideographs'],\n\t\t\t['cjkcompatibilityideographs', 'CJK_Compatibility_Ideographs'],\n\t\t\t['cjkcompatideographssup', 'CJK_Compatibility_Ideographs_Supplement'],\n\t\t\t['cjkcompatibilityideographssupplement', 'CJK_Compatibility_Ideographs_Supplement'],\n\t\t\t['cjkexta', 'CJK_Unified_Ideographs_Extension_A'],\n\t\t\t['cjkunifiedideographsextensiona', 'CJK_Unified_Ideographs_Extension_A'],\n\t\t\t['cjkextb', 'CJK_Unified_Ideographs_Extension_B'],\n\t\t\t['cjkunifiedideographsextensionb', 'CJK_Unified_Ideographs_Extension_B'],\n\t\t\t['cjkextc', 'CJK_Unified_Ideographs_Extension_C'],\n\t\t\t['cjkunifiedideographsextensionc', 'CJK_Unified_Ideographs_Extension_C'],\n\t\t\t['cjkextd', 'CJK_Unified_Ideographs_Extension_D'],\n\t\t\t['cjkunifiedideographsextensiond', 'CJK_Unified_Ideographs_Extension_D'],\n\t\t\t['cjkexte', 'CJK_Unified_Ideographs_Extension_E'],\n\t\t\t['cjkunifiedideographsextensione', 'CJK_Unified_Ideographs_Extension_E'],\n\t\t\t['cjkradicalssup', 'CJK_Radicals_Supplement'],\n\t\t\t['cjkradicalssupplement', 'CJK_Radicals_Supplement'],\n\t\t\t['cjkstrokes', 'CJK_Strokes'],\n\t\t\t['cjksymbols', 'CJK_Symbols_And_Punctuation'],\n\t\t\t['cjksymbolsandpunctuation', 'CJK_Symbols_And_Punctuation'],\n\t\t\t['compatjamo', 'Hangul_Compatibility_Jamo'],\n\t\t\t['hangulcompatibilityjamo', 'Hangul_Compatibility_Jamo'],\n\t\t\t['controlpictures', 'Control_Pictures'],\n\t\t\t['coptic', 'Coptic'],\n\t\t\t['copticepactnumbers', 'Coptic_Epact_Numbers'],\n\t\t\t['countingrod', 'Counting_Rod_Numerals'],\n\t\t\t['countingrodnumerals', 'Counting_Rod_Numerals'],\n\t\t\t['cuneiform', 'Cuneiform'],\n\t\t\t['cuneiformnumbers', 'Cuneiform_Numbers_And_Punctuation'],\n\t\t\t['cuneiformnumbersandpunctuation', 'Cuneiform_Numbers_And_Punctuation'],\n\t\t\t['currencysymbols', 'Currency_Symbols'],\n\t\t\t['cypriotsyllabary', 'Cypriot_Syllabary'],\n\t\t\t['cyrillic', 'Cyrillic'],\n\t\t\t['cyrillicexta', 'Cyrillic_Extended_A'],\n\t\t\t['cyrillicextendeda', 'Cyrillic_Extended_A'],\n\t\t\t['cyrillicextb', 'Cyrillic_Extended_B'],\n\t\t\t['cyrillicextendedb', 'Cyrillic_Extended_B'],\n\t\t\t['cyrillicextc', 'Cyrillic_Extended_C'],\n\t\t\t['cyrillicextendedc', 'Cyrillic_Extended_C'],\n\t\t\t['cyrillicsup', 'Cyrillic_Supplement'],\n\t\t\t['cyrillicsupplement', 'Cyrillic_Supplement'],\n\t\t\t['cyrillicsupplementary', 'Cyrillic_Supplement'],\n\t\t\t['deseret', 'Deseret'],\n\t\t\t['devanagari', 'Devanagari'],\n\t\t\t['devanagariext', 'Devanagari_Extended'],\n\t\t\t['devanagariextended', 'Devanagari_Extended'],\n\t\t\t['diacriticals', 'Combining_Diacritical_Marks'],\n\t\t\t['combiningdiacriticalmarks', 'Combining_Diacritical_Marks'],\n\t\t\t['diacriticalsext', 'Combining_Diacritical_Marks_Extended'],\n\t\t\t['combiningdiacriticalmarksextended', 'Combining_Diacritical_Marks_Extended'],\n\t\t\t['diacriticalsforsymbols', 'Combining_Diacritical_Marks_For_Symbols'],\n\t\t\t['combiningdiacriticalmarksforsymbols', 'Combining_Diacritical_Marks_For_Symbols'],\n\t\t\t['combiningmarksforsymbols', 'Combining_Diacritical_Marks_For_Symbols'],\n\t\t\t['diacriticalssup', 'Combining_Diacritical_Marks_Supplement'],\n\t\t\t['combiningdiacriticalmarkssupplement', 'Combining_Diacritical_Marks_Supplement'],\n\t\t\t['dingbats', 'Dingbats'],\n\t\t\t['domino', 'Domino_Tiles'],\n\t\t\t['dominotiles', 'Domino_Tiles'],\n\t\t\t['duployan', 'Duployan'],\n\t\t\t['earlydynasticcuneiform', 'Early_Dynastic_Cuneiform'],\n\t\t\t['egyptianhieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t\t['elbasan', 'Elbasan'],\n\t\t\t['emoticons', 'Emoticons'],\n\t\t\t['enclosedalphanum', 'Enclosed_Alphanumerics'],\n\t\t\t['enclosedalphanumerics', 'Enclosed_Alphanumerics'],\n\t\t\t['enclosedalphanumsup', 'Enclosed_Alphanumeric_Supplement'],\n\t\t\t['enclosedalphanumericsupplement', 'Enclosed_Alphanumeric_Supplement'],\n\t\t\t['enclosedcjk', 'Enclosed_CJK_Letters_And_Months'],\n\t\t\t['enclosedcjklettersandmonths', 'Enclosed_CJK_Letters_And_Months'],\n\t\t\t['enclosedideographicsup', 'Enclosed_Ideographic_Supplement'],\n\t\t\t['enclosedideographicsupplement', 'Enclosed_Ideographic_Supplement'],\n\t\t\t['ethiopic', 'Ethiopic'],\n\t\t\t['ethiopicext', 'Ethiopic_Extended'],\n\t\t\t['ethiopicextended', 'Ethiopic_Extended'],\n\t\t\t['ethiopicexta', 'Ethiopic_Extended_A'],\n\t\t\t['ethiopicextendeda', 'Ethiopic_Extended_A'],\n\t\t\t['ethiopicsup', 'Ethiopic_Supplement'],\n\t\t\t['ethiopicsupplement', 'Ethiopic_Supplement'],\n\t\t\t['geometricshapes', 'Geometric_Shapes'],\n\t\t\t['geometricshapesext', 'Geometric_Shapes_Extended'],\n\t\t\t['geometricshapesextended', 'Geometric_Shapes_Extended'],\n\t\t\t['georgian', 'Georgian'],\n\t\t\t['georgiansup', 'Georgian_Supplement'],\n\t\t\t['georgiansupplement', 'Georgian_Supplement'],\n\t\t\t['glagolitic', 'Glagolitic'],\n\t\t\t['glagoliticsup', 'Glagolitic_Supplement'],\n\t\t\t['glagoliticsupplement', 'Glagolitic_Supplement'],\n\t\t\t['gothic', 'Gothic'],\n\t\t\t['grantha', 'Grantha'],\n\t\t\t['greek', 'Greek_And_Coptic'],\n\t\t\t['greekandcoptic', 'Greek_And_Coptic'],\n\t\t\t['greekext', 'Greek_Extended'],\n\t\t\t['greekextended', 'Greek_Extended'],\n\t\t\t['gujarati', 'Gujarati'],\n\t\t\t['gurmukhi', 'Gurmukhi'],\n\t\t\t['halfandfullforms', 'Halfwidth_And_Fullwidth_Forms'],\n\t\t\t['halfwidthandfullwidthforms', 'Halfwidth_And_Fullwidth_Forms'],\n\t\t\t['halfmarks', 'Combining_Half_Marks'],\n\t\t\t['combininghalfmarks', 'Combining_Half_Marks'],\n\t\t\t['hangul', 'Hangul_Syllables'],\n\t\t\t['hangulsyllables', 'Hangul_Syllables'],\n\t\t\t['hanunoo', 'Hanunoo'],\n\t\t\t['hatran', 'Hatran'],\n\t\t\t['hebrew', 'Hebrew'],\n\t\t\t['highpusurrogates', 'High_Private_Use_Surrogates'],\n\t\t\t['highprivateusesurrogates', 'High_Private_Use_Surrogates'],\n\t\t\t['highsurrogates', 'High_Surrogates'],\n\t\t\t['hiragana', 'Hiragana'],\n\t\t\t['idc', 'Ideographic_Description_Characters'],\n\t\t\t['ideographicdescriptioncharacters', 'Ideographic_Description_Characters'],\n\t\t\t['ideographicsymbols', 'Ideographic_Symbols_And_Punctuation'],\n\t\t\t['ideographicsymbolsandpunctuation', 'Ideographic_Symbols_And_Punctuation'],\n\t\t\t['imperialaramaic', 'Imperial_Aramaic'],\n\t\t\t['indicnumberforms', 'Common_Indic_Number_Forms'],\n\t\t\t['commonindicnumberforms', 'Common_Indic_Number_Forms'],\n\t\t\t['inscriptionalpahlavi', 'Inscriptional_Pahlavi'],\n\t\t\t['inscriptionalparthian', 'Inscriptional_Parthian'],\n\t\t\t['ipaext', 'IPA_Extensions'],\n\t\t\t['ipaextensions', 'IPA_Extensions'],\n\t\t\t['jamo', 'Hangul_Jamo'],\n\t\t\t['hanguljamo', 'Hangul_Jamo'],\n\t\t\t['jamoexta', 'Hangul_Jamo_Extended_A'],\n\t\t\t['hanguljamoextendeda', 'Hangul_Jamo_Extended_A'],\n\t\t\t['jamoextb', 'Hangul_Jamo_Extended_B'],\n\t\t\t['hanguljamoextendedb', 'Hangul_Jamo_Extended_B'],\n\t\t\t['javanese', 'Javanese'],\n\t\t\t['kaithi', 'Kaithi'],\n\t\t\t['kanasup', 'Kana_Supplement'],\n\t\t\t['kanasupplement', 'Kana_Supplement'],\n\t\t\t['kanbun', 'Kanbun'],\n\t\t\t['kangxi', 'Kangxi_Radicals'],\n\t\t\t['kangxiradicals', 'Kangxi_Radicals'],\n\t\t\t['kannada', 'Kannada'],\n\t\t\t['katakana', 'Katakana'],\n\t\t\t['katakanaext', 'Katakana_Phonetic_Extensions'],\n\t\t\t['katakanaphoneticextensions', 'Katakana_Phonetic_Extensions'],\n\t\t\t['kayahli', 'Kayah_Li'],\n\t\t\t['kharoshthi', 'Kharoshthi'],\n\t\t\t['khmer', 'Khmer'],\n\t\t\t['khmersymbols', 'Khmer_Symbols'],\n\t\t\t['khojki', 'Khojki'],\n\t\t\t['khudawadi', 'Khudawadi'],\n\t\t\t['lao', 'Lao'],\n\t\t\t['latin1sup', 'Latin_1_Supplement'],\n\t\t\t['latin1supplement', 'Latin_1_Supplement'],\n\t\t\t['latin1', 'Latin_1_Supplement'],\n\t\t\t['latinexta', 'Latin_Extended_A'],\n\t\t\t['latinextendeda', 'Latin_Extended_A'],\n\t\t\t['latinextadditional', 'Latin_Extended_Additional'],\n\t\t\t['latinextendedadditional', 'Latin_Extended_Additional'],\n\t\t\t['latinextb', 'Latin_Extended_B'],\n\t\t\t['latinextendedb', 'Latin_Extended_B'],\n\t\t\t['latinextc', 'Latin_Extended_C'],\n\t\t\t['latinextendedc', 'Latin_Extended_C'],\n\t\t\t['latinextd', 'Latin_Extended_D'],\n\t\t\t['latinextendedd', 'Latin_Extended_D'],\n\t\t\t['latinexte', 'Latin_Extended_E'],\n\t\t\t['latinextendede', 'Latin_Extended_E'],\n\t\t\t['lepcha', 'Lepcha'],\n\t\t\t['letterlikesymbols', 'Letterlike_Symbols'],\n\t\t\t['limbu', 'Limbu'],\n\t\t\t['lineara', 'Linear_A'],\n\t\t\t['linearbideograms', 'Linear_B_Ideograms'],\n\t\t\t['linearbsyllabary', 'Linear_B_Syllabary'],\n\t\t\t['lisu', 'Lisu'],\n\t\t\t['lowsurrogates', 'Low_Surrogates'],\n\t\t\t['lycian', 'Lycian'],\n\t\t\t['lydian', 'Lydian'],\n\t\t\t['mahajani', 'Mahajani'],\n\t\t\t['mahjong', 'Mahjong_Tiles'],\n\t\t\t['mahjongtiles', 'Mahjong_Tiles'],\n\t\t\t['malayalam', 'Malayalam'],\n\t\t\t['mandaic', 'Mandaic'],\n\t\t\t['manichaean', 'Manichaean'],\n\t\t\t['marchen', 'Marchen'],\n\t\t\t['mathalphanum', 'Mathematical_Alphanumeric_Symbols'],\n\t\t\t['mathematicalalphanumericsymbols', 'Mathematical_Alphanumeric_Symbols'],\n\t\t\t['mathoperators', 'Mathematical_Operators'],\n\t\t\t['mathematicaloperators', 'Mathematical_Operators'],\n\t\t\t['meeteimayek', 'Meetei_Mayek'],\n\t\t\t['meeteimayekext', 'Meetei_Mayek_Extensions'],\n\t\t\t['meeteimayekextensions', 'Meetei_Mayek_Extensions'],\n\t\t\t['mendekikakui', 'Mende_Kikakui'],\n\t\t\t['meroiticcursive', 'Meroitic_Cursive'],\n\t\t\t['meroitichieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t\t['miao', 'Miao'],\n\t\t\t['miscarrows', 'Miscellaneous_Symbols_And_Arrows'],\n\t\t\t['miscellaneoussymbolsandarrows', 'Miscellaneous_Symbols_And_Arrows'],\n\t\t\t['miscmathsymbolsa', 'Miscellaneous_Mathematical_Symbols_A'],\n\t\t\t['miscellaneousmathematicalsymbolsa', 'Miscellaneous_Mathematical_Symbols_A'],\n\t\t\t['miscmathsymbolsb', 'Miscellaneous_Mathematical_Symbols_B'],\n\t\t\t['miscellaneousmathematicalsymbolsb', 'Miscellaneous_Mathematical_Symbols_B'],\n\t\t\t['miscpictographs', 'Miscellaneous_Symbols_And_Pictographs'],\n\t\t\t['miscellaneoussymbolsandpictographs', 'Miscellaneous_Symbols_And_Pictographs'],\n\t\t\t['miscsymbols', 'Miscellaneous_Symbols'],\n\t\t\t['miscellaneoussymbols', 'Miscellaneous_Symbols'],\n\t\t\t['misctechnical', 'Miscellaneous_Technical'],\n\t\t\t['miscellaneoustechnical', 'Miscellaneous_Technical'],\n\t\t\t['modi', 'Modi'],\n\t\t\t['modifierletters', 'Spacing_Modifier_Letters'],\n\t\t\t['spacingmodifierletters', 'Spacing_Modifier_Letters'],\n\t\t\t['modifiertoneletters', 'Modifier_Tone_Letters'],\n\t\t\t['mongolian', 'Mongolian'],\n\t\t\t['mongoliansup', 'Mongolian_Supplement'],\n\t\t\t['mongoliansupplement', 'Mongolian_Supplement'],\n\t\t\t['mro', 'Mro'],\n\t\t\t['multani', 'Multani'],\n\t\t\t['music', 'Musical_Symbols'],\n\t\t\t['musicalsymbols', 'Musical_Symbols'],\n\t\t\t['myanmar', 'Myanmar'],\n\t\t\t['myanmarexta', 'Myanmar_Extended_A'],\n\t\t\t['myanmarextendeda', 'Myanmar_Extended_A'],\n\t\t\t['myanmarextb', 'Myanmar_Extended_B'],\n\t\t\t['myanmarextendedb', 'Myanmar_Extended_B'],\n\t\t\t['nabataean', 'Nabataean'],\n\t\t\t['nb', 'No_Block'],\n\t\t\t['noblock', 'No_Block'],\n\t\t\t['newtailue', 'New_Tai_Lue'],\n\t\t\t['newa', 'Newa'],\n\t\t\t['nko', 'NKo'],\n\t\t\t['numberforms', 'Number_Forms'],\n\t\t\t['ocr', 'Optical_Character_Recognition'],\n\t\t\t['opticalcharacterrecognition', 'Optical_Character_Recognition'],\n\t\t\t['ogham', 'Ogham'],\n\t\t\t['olchiki', 'Ol_Chiki'],\n\t\t\t['oldhungarian', 'Old_Hungarian'],\n\t\t\t['olditalic', 'Old_Italic'],\n\t\t\t['oldnortharabian', 'Old_North_Arabian'],\n\t\t\t['oldpermic', 'Old_Permic'],\n\t\t\t['oldpersian', 'Old_Persian'],\n\t\t\t['oldsoutharabian', 'Old_South_Arabian'],\n\t\t\t['oldturkic', 'Old_Turkic'],\n\t\t\t['oriya', 'Oriya'],\n\t\t\t['ornamentaldingbats', 'Ornamental_Dingbats'],\n\t\t\t['osage', 'Osage'],\n\t\t\t['osmanya', 'Osmanya'],\n\t\t\t['pahawhhmong', 'Pahawh_Hmong'],\n\t\t\t['palmyrene', 'Palmyrene'],\n\t\t\t['paucinhau', 'Pau_Cin_Hau'],\n\t\t\t['phagspa', 'Phags_Pa'],\n\t\t\t['phaistos', 'Phaistos_Disc'],\n\t\t\t['phaistosdisc', 'Phaistos_Disc'],\n\t\t\t['phoenician', 'Phoenician'],\n\t\t\t['phoneticext', 'Phonetic_Extensions'],\n\t\t\t['phoneticextensions', 'Phonetic_Extensions'],\n\t\t\t['phoneticextsup', 'Phonetic_Extensions_Supplement'],\n\t\t\t['phoneticextensionssupplement', 'Phonetic_Extensions_Supplement'],\n\t\t\t['playingcards', 'Playing_Cards'],\n\t\t\t['psalterpahlavi', 'Psalter_Pahlavi'],\n\t\t\t['pua', 'Private_Use_Area'],\n\t\t\t['privateusearea', 'Private_Use_Area'],\n\t\t\t['privateuse', 'Private_Use_Area'],\n\t\t\t['punctuation', 'General_Punctuation'],\n\t\t\t['generalpunctuation', 'General_Punctuation'],\n\t\t\t['rejang', 'Rejang'],\n\t\t\t['rumi', 'Rumi_Numeral_Symbols'],\n\t\t\t['ruminumeralsymbols', 'Rumi_Numeral_Symbols'],\n\t\t\t['runic', 'Runic'],\n\t\t\t['samaritan', 'Samaritan'],\n\t\t\t['saurashtra', 'Saurashtra'],\n\t\t\t['sharada', 'Sharada'],\n\t\t\t['shavian', 'Shavian'],\n\t\t\t['shorthandformatcontrols', 'Shorthand_Format_Controls'],\n\t\t\t['siddham', 'Siddham'],\n\t\t\t['sinhala', 'Sinhala'],\n\t\t\t['sinhalaarchaicnumbers', 'Sinhala_Archaic_Numbers'],\n\t\t\t['smallforms', 'Small_Form_Variants'],\n\t\t\t['smallformvariants', 'Small_Form_Variants'],\n\t\t\t['sorasompeng', 'Sora_Sompeng'],\n\t\t\t['specials', 'Specials'],\n\t\t\t['sundanese', 'Sundanese'],\n\t\t\t['sundanesesup', 'Sundanese_Supplement'],\n\t\t\t['sundanesesupplement', 'Sundanese_Supplement'],\n\t\t\t['suparrowsa', 'Supplemental_Arrows_A'],\n\t\t\t['supplementalarrowsa', 'Supplemental_Arrows_A'],\n\t\t\t['suparrowsb', 'Supplemental_Arrows_B'],\n\t\t\t['supplementalarrowsb', 'Supplemental_Arrows_B'],\n\t\t\t['suparrowsc', 'Supplemental_Arrows_C'],\n\t\t\t['supplementalarrowsc', 'Supplemental_Arrows_C'],\n\t\t\t['supmathoperators', 'Supplemental_Mathematical_Operators'],\n\t\t\t['supplementalmathematicaloperators', 'Supplemental_Mathematical_Operators'],\n\t\t\t['suppuaa', 'Supplementary_Private_Use_Area_A'],\n\t\t\t['supplementaryprivateuseareaa', 'Supplementary_Private_Use_Area_A'],\n\t\t\t['suppuab', 'Supplementary_Private_Use_Area_B'],\n\t\t\t['supplementaryprivateuseareab', 'Supplementary_Private_Use_Area_B'],\n\t\t\t['suppunctuation', 'Supplemental_Punctuation'],\n\t\t\t['supplementalpunctuation', 'Supplemental_Punctuation'],\n\t\t\t['supsymbolsandpictographs', 'Supplemental_Symbols_And_Pictographs'],\n\t\t\t['supplementalsymbolsandpictographs', 'Supplemental_Symbols_And_Pictographs'],\n\t\t\t['superandsub', 'Superscripts_And_Subscripts'],\n\t\t\t['superscriptsandsubscripts', 'Superscripts_And_Subscripts'],\n\t\t\t['suttonsignwriting', 'Sutton_SignWriting'],\n\t\t\t['sylotinagri', 'Syloti_Nagri'],\n\t\t\t['syriac', 'Syriac'],\n\t\t\t['tagalog', 'Tagalog'],\n\t\t\t['tagbanwa', 'Tagbanwa'],\n\t\t\t['tags', 'Tags'],\n\t\t\t['taile', 'Tai_Le'],\n\t\t\t['taitham', 'Tai_Tham'],\n\t\t\t['taiviet', 'Tai_Viet'],\n\t\t\t['taixuanjing', 'Tai_Xuan_Jing_Symbols'],\n\t\t\t['taixuanjingsymbols', 'Tai_Xuan_Jing_Symbols'],\n\t\t\t['takri', 'Takri'],\n\t\t\t['tamil', 'Tamil'],\n\t\t\t['tangut', 'Tangut'],\n\t\t\t['tangutcomponents', 'Tangut_Components'],\n\t\t\t['telugu', 'Telugu'],\n\t\t\t['thaana', 'Thaana'],\n\t\t\t['thai', 'Thai'],\n\t\t\t['tibetan', 'Tibetan'],\n\t\t\t['tifinagh', 'Tifinagh'],\n\t\t\t['tirhuta', 'Tirhuta'],\n\t\t\t['transportandmap', 'Transport_And_Map_Symbols'],\n\t\t\t['transportandmapsymbols', 'Transport_And_Map_Symbols'],\n\t\t\t['ucas', 'Unified_Canadian_Aboriginal_Syllabics'],\n\t\t\t['unifiedcanadianaboriginalsyllabics', 'Unified_Canadian_Aboriginal_Syllabics'],\n\t\t\t['canadiansyllabics', 'Unified_Canadian_Aboriginal_Syllabics'],\n\t\t\t['ucasext', 'Unified_Canadian_Aboriginal_Syllabics_Extended'],\n\t\t\t['unifiedcanadianaboriginalsyllabicsextended', 'Unified_Canadian_Aboriginal_Syllabics_Extended'],\n\t\t\t['ugaritic', 'Ugaritic'],\n\t\t\t['vai', 'Vai'],\n\t\t\t['vedicext', 'Vedic_Extensions'],\n\t\t\t['vedicextensions', 'Vedic_Extensions'],\n\t\t\t['verticalforms', 'Vertical_Forms'],\n\t\t\t['vs', 'Variation_Selectors'],\n\t\t\t['variationselectors', 'Variation_Selectors'],\n\t\t\t['vssup', 'Variation_Selectors_Supplement'],\n\t\t\t['variationselectorssupplement', 'Variation_Selectors_Supplement'],\n\t\t\t['warangciti', 'Warang_Citi'],\n\t\t\t['yiradicals', 'Yi_Radicals'],\n\t\t\t['yisyllables', 'Yi_Syllables'],\n\t\t\t['yijing', 'Yijing_Hexagram_Symbols'],\n\t\t\t['yijinghexagramsymbols', 'Yijing_Hexagram_Symbols']\n\t\t])],\n\t\t['Script', new Map([\n\t\t\t['adlm', 'Adlam'],\n\t\t\t['adlam', 'Adlam'],\n\t\t\t['aghb', 'Caucasian_Albanian'],\n\t\t\t['caucasianalbanian', 'Caucasian_Albanian'],\n\t\t\t['ahom', 'Ahom'],\n\t\t\t['arab', 'Arabic'],\n\t\t\t['arabic', 'Arabic'],\n\t\t\t['armi', 'Imperial_Aramaic'],\n\t\t\t['imperialaramaic', 'Imperial_Aramaic'],\n\t\t\t['armn', 'Armenian'],\n\t\t\t['armenian', 'Armenian'],\n\t\t\t['avst', 'Avestan'],\n\t\t\t['avestan', 'Avestan'],\n\t\t\t['bali', 'Balinese'],\n\t\t\t['balinese', 'Balinese'],\n\t\t\t['bamu', 'Bamum'],\n\t\t\t['bamum', 'Bamum'],\n\t\t\t['bass', 'Bassa_Vah'],\n\t\t\t['bassavah', 'Bassa_Vah'],\n\t\t\t['batk', 'Batak'],\n\t\t\t['batak', 'Batak'],\n\t\t\t['beng', 'Bengali'],\n\t\t\t['bengali', 'Bengali'],\n\t\t\t['bhks', 'Bhaiksuki'],\n\t\t\t['bhaiksuki', 'Bhaiksuki'],\n\t\t\t['bopo', 'Bopomofo'],\n\t\t\t['bopomofo', 'Bopomofo'],\n\t\t\t['brah', 'Brahmi'],\n\t\t\t['brahmi', 'Brahmi'],\n\t\t\t['brai', 'Braille'],\n\t\t\t['braille', 'Braille'],\n\t\t\t['bugi', 'Buginese'],\n\t\t\t['buginese', 'Buginese'],\n\t\t\t['buhd', 'Buhid'],\n\t\t\t['buhid', 'Buhid'],\n\t\t\t['cakm', 'Chakma'],\n\t\t\t['chakma', 'Chakma'],\n\t\t\t['cans', 'Canadian_Aboriginal'],\n\t\t\t['canadianaboriginal', 'Canadian_Aboriginal'],\n\t\t\t['cari', 'Carian'],\n\t\t\t['carian', 'Carian'],\n\t\t\t['cham', 'Cham'],\n\t\t\t['cher', 'Cherokee'],\n\t\t\t['cherokee', 'Cherokee'],\n\t\t\t['copt', 'Coptic'],\n\t\t\t['coptic', 'Coptic'],\n\t\t\t['qaac', 'Coptic'],\n\t\t\t['cprt', 'Cypriot'],\n\t\t\t['cypriot', 'Cypriot'],\n\t\t\t['cyrl', 'Cyrillic'],\n\t\t\t['cyrillic', 'Cyrillic'],\n\t\t\t['deva', 'Devanagari'],\n\t\t\t['devanagari', 'Devanagari'],\n\t\t\t['dsrt', 'Deseret'],\n\t\t\t['deseret', 'Deseret'],\n\t\t\t['dupl', 'Duployan'],\n\t\t\t['duployan', 'Duployan'],\n\t\t\t['egyp', 'Egyptian_Hieroglyphs'],\n\t\t\t['egyptianhieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t\t['elba', 'Elbasan'],\n\t\t\t['elbasan', 'Elbasan'],\n\t\t\t['ethi', 'Ethiopic'],\n\t\t\t['ethiopic', 'Ethiopic'],\n\t\t\t['geor', 'Georgian'],\n\t\t\t['georgian', 'Georgian'],\n\t\t\t['glag', 'Glagolitic'],\n\t\t\t['glagolitic', 'Glagolitic'],\n\t\t\t['goth', 'Gothic'],\n\t\t\t['gothic', 'Gothic'],\n\t\t\t['gran', 'Grantha'],\n\t\t\t['grantha', 'Grantha'],\n\t\t\t['grek', 'Greek'],\n\t\t\t['greek', 'Greek'],\n\t\t\t['gujr', 'Gujarati'],\n\t\t\t['gujarati', 'Gujarati'],\n\t\t\t['guru', 'Gurmukhi'],\n\t\t\t['gurmukhi', 'Gurmukhi'],\n\t\t\t['hang', 'Hangul'],\n\t\t\t['hangul', 'Hangul'],\n\t\t\t['hani', 'Han'],\n\t\t\t['han', 'Han'],\n\t\t\t['hano', 'Hanunoo'],\n\t\t\t['hanunoo', 'Hanunoo'],\n\t\t\t['hatr', 'Hatran'],\n\t\t\t['hatran', 'Hatran'],\n\t\t\t['hebr', 'Hebrew'],\n\t\t\t['hebrew', 'Hebrew'],\n\t\t\t['hira', 'Hiragana'],\n\t\t\t['hiragana', 'Hiragana'],\n\t\t\t['hluw', 'Anatolian_Hieroglyphs'],\n\t\t\t['anatolianhieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t\t['hmng', 'Pahawh_Hmong'],\n\t\t\t['pahawhhmong', 'Pahawh_Hmong'],\n\t\t\t['hrkt', 'Katakana_Or_Hiragana'],\n\t\t\t['katakanaorhiragana', 'Katakana_Or_Hiragana'],\n\t\t\t['hung', 'Old_Hungarian'],\n\t\t\t['oldhungarian', 'Old_Hungarian'],\n\t\t\t['ital', 'Old_Italic'],\n\t\t\t['olditalic', 'Old_Italic'],\n\t\t\t['java', 'Javanese'],\n\t\t\t['javanese', 'Javanese'],\n\t\t\t['kali', 'Kayah_Li'],\n\t\t\t['kayahli', 'Kayah_Li'],\n\t\t\t['kana', 'Katakana'],\n\t\t\t['katakana', 'Katakana'],\n\t\t\t['khar', 'Kharoshthi'],\n\t\t\t['kharoshthi', 'Kharoshthi'],\n\t\t\t['khmr', 'Khmer'],\n\t\t\t['khmer', 'Khmer'],\n\t\t\t['khoj', 'Khojki'],\n\t\t\t['khojki', 'Khojki'],\n\t\t\t['knda', 'Kannada'],\n\t\t\t['kannada', 'Kannada'],\n\t\t\t['kthi', 'Kaithi'],\n\t\t\t['kaithi', 'Kaithi'],\n\t\t\t['lana', 'Tai_Tham'],\n\t\t\t['taitham', 'Tai_Tham'],\n\t\t\t['laoo', 'Lao'],\n\t\t\t['lao', 'Lao'],\n\t\t\t['latn', 'Latin'],\n\t\t\t['latin', 'Latin'],\n\t\t\t['lepc', 'Lepcha'],\n\t\t\t['lepcha', 'Lepcha'],\n\t\t\t['limb', 'Limbu'],\n\t\t\t['limbu', 'Limbu'],\n\t\t\t['lina', 'Linear_A'],\n\t\t\t['lineara', 'Linear_A'],\n\t\t\t['linb', 'Linear_B'],\n\t\t\t['linearb', 'Linear_B'],\n\t\t\t['lisu', 'Lisu'],\n\t\t\t['lyci', 'Lycian'],\n\t\t\t['lycian', 'Lycian'],\n\t\t\t['lydi', 'Lydian'],\n\t\t\t['lydian', 'Lydian'],\n\t\t\t['mahj', 'Mahajani'],\n\t\t\t['mahajani', 'Mahajani'],\n\t\t\t['mand', 'Mandaic'],\n\t\t\t['mandaic', 'Mandaic'],\n\t\t\t['mani', 'Manichaean'],\n\t\t\t['manichaean', 'Manichaean'],\n\t\t\t['marc', 'Marchen'],\n\t\t\t['marchen', 'Marchen'],\n\t\t\t['mend', 'Mende_Kikakui'],\n\t\t\t['mendekikakui', 'Mende_Kikakui'],\n\t\t\t['merc', 'Meroitic_Cursive'],\n\t\t\t['meroiticcursive', 'Meroitic_Cursive'],\n\t\t\t['mero', 'Meroitic_Hieroglyphs'],\n\t\t\t['meroitichieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t\t['mlym', 'Malayalam'],\n\t\t\t['malayalam', 'Malayalam'],\n\t\t\t['modi', 'Modi'],\n\t\t\t['mong', 'Mongolian'],\n\t\t\t['mongolian', 'Mongolian'],\n\t\t\t['mroo', 'Mro'],\n\t\t\t['mro', 'Mro'],\n\t\t\t['mtei', 'Meetei_Mayek'],\n\t\t\t['meeteimayek', 'Meetei_Mayek'],\n\t\t\t['mult', 'Multani'],\n\t\t\t['multani', 'Multani'],\n\t\t\t['mymr', 'Myanmar'],\n\t\t\t['myanmar', 'Myanmar'],\n\t\t\t['narb', 'Old_North_Arabian'],\n\t\t\t['oldnortharabian', 'Old_North_Arabian'],\n\t\t\t['nbat', 'Nabataean'],\n\t\t\t['nabataean', 'Nabataean'],\n\t\t\t['newa', 'Newa'],\n\t\t\t['nkoo', 'Nko'],\n\t\t\t['nko', 'Nko'],\n\t\t\t['ogam', 'Ogham'],\n\t\t\t['ogham', 'Ogham'],\n\t\t\t['olck', 'Ol_Chiki'],\n\t\t\t['olchiki', 'Ol_Chiki'],\n\t\t\t['orkh', 'Old_Turkic'],\n\t\t\t['oldturkic', 'Old_Turkic'],\n\t\t\t['orya', 'Oriya'],\n\t\t\t['oriya', 'Oriya'],\n\t\t\t['osge', 'Osage'],\n\t\t\t['osage', 'Osage'],\n\t\t\t['osma', 'Osmanya'],\n\t\t\t['osmanya', 'Osmanya'],\n\t\t\t['palm', 'Palmyrene'],\n\t\t\t['palmyrene', 'Palmyrene'],\n\t\t\t['pauc', 'Pau_Cin_Hau'],\n\t\t\t['paucinhau', 'Pau_Cin_Hau'],\n\t\t\t['perm', 'Old_Permic'],\n\t\t\t['oldpermic', 'Old_Permic'],\n\t\t\t['phag', 'Phags_Pa'],\n\t\t\t['phagspa', 'Phags_Pa'],\n\t\t\t['phli', 'Inscriptional_Pahlavi'],\n\t\t\t['inscriptionalpahlavi', 'Inscriptional_Pahlavi'],\n\t\t\t['phlp', 'Psalter_Pahlavi'],\n\t\t\t['psalterpahlavi', 'Psalter_Pahlavi'],\n\t\t\t['phnx', 'Phoenician'],\n\t\t\t['phoenician', 'Phoenician'],\n\t\t\t['plrd', 'Miao'],\n\t\t\t['miao', 'Miao'],\n\t\t\t['prti', 'Inscriptional_Parthian'],\n\t\t\t['inscriptionalparthian', 'Inscriptional_Parthian'],\n\t\t\t['rjng', 'Rejang'],\n\t\t\t['rejang', 'Rejang'],\n\t\t\t['runr', 'Runic'],\n\t\t\t['runic', 'Runic'],\n\t\t\t['samr', 'Samaritan'],\n\t\t\t['samaritan', 'Samaritan'],\n\t\t\t['sarb', 'Old_South_Arabian'],\n\t\t\t['oldsoutharabian', 'Old_South_Arabian'],\n\t\t\t['saur', 'Saurashtra'],\n\t\t\t['saurashtra', 'Saurashtra'],\n\t\t\t['sgnw', 'SignWriting'],\n\t\t\t['signwriting', 'SignWriting'],\n\t\t\t['shaw', 'Shavian'],\n\t\t\t['shavian', 'Shavian'],\n\t\t\t['shrd', 'Sharada'],\n\t\t\t['sharada', 'Sharada'],\n\t\t\t['sidd', 'Siddham'],\n\t\t\t['siddham', 'Siddham'],\n\t\t\t['sind', 'Khudawadi'],\n\t\t\t['khudawadi', 'Khudawadi'],\n\t\t\t['sinh', 'Sinhala'],\n\t\t\t['sinhala', 'Sinhala'],\n\t\t\t['sora', 'Sora_Sompeng'],\n\t\t\t['sorasompeng', 'Sora_Sompeng'],\n\t\t\t['sund', 'Sundanese'],\n\t\t\t['sundanese', 'Sundanese'],\n\t\t\t['sylo', 'Syloti_Nagri'],\n\t\t\t['sylotinagri', 'Syloti_Nagri'],\n\t\t\t['syrc', 'Syriac'],\n\t\t\t['syriac', 'Syriac'],\n\t\t\t['tagb', 'Tagbanwa'],\n\t\t\t['tagbanwa', 'Tagbanwa'],\n\t\t\t['takr', 'Takri'],\n\t\t\t['takri', 'Takri'],\n\t\t\t['tale', 'Tai_Le'],\n\t\t\t['taile', 'Tai_Le'],\n\t\t\t['talu', 'New_Tai_Lue'],\n\t\t\t['newtailue', 'New_Tai_Lue'],\n\t\t\t['taml', 'Tamil'],\n\t\t\t['tamil', 'Tamil'],\n\t\t\t['tang', 'Tangut'],\n\t\t\t['tangut', 'Tangut'],\n\t\t\t['tavt', 'Tai_Viet'],\n\t\t\t['taiviet', 'Tai_Viet'],\n\t\t\t['telu', 'Telugu'],\n\t\t\t['telugu', 'Telugu'],\n\t\t\t['tfng', 'Tifinagh'],\n\t\t\t['tifinagh', 'Tifinagh'],\n\t\t\t['tglg', 'Tagalog'],\n\t\t\t['tagalog', 'Tagalog'],\n\t\t\t['thaa', 'Thaana'],\n\t\t\t['thaana', 'Thaana'],\n\t\t\t['thai', 'Thai'],\n\t\t\t['tibt', 'Tibetan'],\n\t\t\t['tibetan', 'Tibetan'],\n\t\t\t['tirh', 'Tirhuta'],\n\t\t\t['tirhuta', 'Tirhuta'],\n\t\t\t['ugar', 'Ugaritic'],\n\t\t\t['ugaritic', 'Ugaritic'],\n\t\t\t['vaii', 'Vai'],\n\t\t\t['vai', 'Vai'],\n\t\t\t['wara', 'Warang_Citi'],\n\t\t\t['warangciti', 'Warang_Citi'],\n\t\t\t['xpeo', 'Old_Persian'],\n\t\t\t['oldpersian', 'Old_Persian'],\n\t\t\t['xsux', 'Cuneiform'],\n\t\t\t['cuneiform', 'Cuneiform'],\n\t\t\t['yiii', 'Yi'],\n\t\t\t['yi', 'Yi'],\n\t\t\t['zinh', 'Inherited'],\n\t\t\t['inherited', 'Inherited'],\n\t\t\t['qaai', 'Inherited'],\n\t\t\t['zyyy', 'Common'],\n\t\t\t['common', 'Common'],\n\t\t\t['zzzz', 'Unknown'],\n\t\t\t['unknown', 'Unknown']\n\t\t])],\n\t\t['Bidi_Class', new Map([\n\t\t\t['al', 'Arabic_Letter'],\n\t\t\t['arabicletter', 'Arabic_Letter'],\n\t\t\t['an', 'Arabic_Number'],\n\t\t\t['arabicnumber', 'Arabic_Number'],\n\t\t\t['b', 'Paragraph_Separator'],\n\t\t\t['paragraphseparator', 'Paragraph_Separator'],\n\t\t\t['bn', 'Boundary_Neutral'],\n\t\t\t['boundaryneutral', 'Boundary_Neutral'],\n\t\t\t['cs', 'Common_Separator'],\n\t\t\t['commonseparator', 'Common_Separator'],\n\t\t\t['en', 'European_Number'],\n\t\t\t['europeannumber', 'European_Number'],\n\t\t\t['es', 'European_Separator'],\n\t\t\t['europeanseparator', 'European_Separator'],\n\t\t\t['et', 'European_Terminator'],\n\t\t\t['europeanterminator', 'European_Terminator'],\n\t\t\t['fsi', 'First_Strong_Isolate'],\n\t\t\t['firststrongisolate', 'First_Strong_Isolate'],\n\t\t\t['l', 'Left_To_Right'],\n\t\t\t['lefttoright', 'Left_To_Right'],\n\t\t\t['lre', 'Left_To_Right_Embedding'],\n\t\t\t['lefttorightembedding', 'Left_To_Right_Embedding'],\n\t\t\t['lri', 'Left_To_Right_Isolate'],\n\t\t\t['lefttorightisolate', 'Left_To_Right_Isolate'],\n\t\t\t['lro', 'Left_To_Right_Override'],\n\t\t\t['lefttorightoverride', 'Left_To_Right_Override'],\n\t\t\t['nsm', 'Nonspacing_Mark'],\n\t\t\t['nonspacingmark', 'Nonspacing_Mark'],\n\t\t\t['on', 'Other_Neutral'],\n\t\t\t['otherneutral', 'Other_Neutral'],\n\t\t\t['pdf', 'Pop_Directional_Format'],\n\t\t\t['popdirectionalformat', 'Pop_Directional_Format'],\n\t\t\t['pdi', 'Pop_Directional_Isolate'],\n\t\t\t['popdirectionalisolate', 'Pop_Directional_Isolate'],\n\t\t\t['r', 'Right_To_Left'],\n\t\t\t['righttoleft', 'Right_To_Left'],\n\t\t\t['rle', 'Right_To_Left_Embedding'],\n\t\t\t['righttoleftembedding', 'Right_To_Left_Embedding'],\n\t\t\t['rli', 'Right_To_Left_Isolate'],\n\t\t\t['righttoleftisolate', 'Right_To_Left_Isolate'],\n\t\t\t['rlo', 'Right_To_Left_Override'],\n\t\t\t['righttoleftoverride', 'Right_To_Left_Override'],\n\t\t\t['s', 'Segment_Separator'],\n\t\t\t['segmentseparator', 'Segment_Separator'],\n\t\t\t['ws', 'White_Space'],\n\t\t\t['whitespace', 'White_Space']\n\t\t])],\n\t\t['Bidi_Paired_Bracket_Type', new Map([\n\t\t\t['c', 'Close'],\n\t\t\t['close', 'Close'],\n\t\t\t['n', 'None'],\n\t\t\t['none', 'None'],\n\t\t\t['o', 'Open'],\n\t\t\t['open', 'Open']\n\t\t])],\n\t\t['Canonical_Combining_Class', new Map([\n\t\t\t['nr', 'Not_Reordered'],\n\t\t\t['notreordered', 'Not_Reordered'],\n\t\t\t['ov', 'Overlay'],\n\t\t\t['overlay', 'Overlay'],\n\t\t\t['nk', 'Nukta'],\n\t\t\t['nukta', 'Nukta'],\n\t\t\t['kv', 'Kana_Voicing'],\n\t\t\t['kanavoicing', 'Kana_Voicing'],\n\t\t\t['vr', 'Virama'],\n\t\t\t['virama', 'Virama'],\n\t\t\t['ccc10', 'CCC10'],\n\t\t\t['ccc11', 'CCC11'],\n\t\t\t['ccc12', 'CCC12'],\n\t\t\t['ccc13', 'CCC13'],\n\t\t\t['ccc14', 'CCC14'],\n\t\t\t['ccc15', 'CCC15'],\n\t\t\t['ccc16', 'CCC16'],\n\t\t\t['ccc17', 'CCC17'],\n\t\t\t['ccc18', 'CCC18'],\n\t\t\t['ccc19', 'CCC19'],\n\t\t\t['ccc20', 'CCC20'],\n\t\t\t['ccc21', 'CCC21'],\n\t\t\t['ccc22', 'CCC22'],\n\t\t\t['ccc23', 'CCC23'],\n\t\t\t['ccc24', 'CCC24'],\n\t\t\t['ccc25', 'CCC25'],\n\t\t\t['ccc26', 'CCC26'],\n\t\t\t['ccc27', 'CCC27'],\n\t\t\t['ccc28', 'CCC28'],\n\t\t\t['ccc29', 'CCC29'],\n\t\t\t['ccc30', 'CCC30'],\n\t\t\t['ccc31', 'CCC31'],\n\t\t\t['ccc32', 'CCC32'],\n\t\t\t['ccc33', 'CCC33'],\n\t\t\t['ccc34', 'CCC34'],\n\t\t\t['ccc35', 'CCC35'],\n\t\t\t['ccc36', 'CCC36'],\n\t\t\t['ccc84', 'CCC84'],\n\t\t\t['ccc91', 'CCC91'],\n\t\t\t['ccc103', 'CCC103'],\n\t\t\t['ccc107', 'CCC107'],\n\t\t\t['ccc118', 'CCC118'],\n\t\t\t['ccc122', 'CCC122'],\n\t\t\t['ccc129', 'CCC129'],\n\t\t\t['ccc130', 'CCC130'],\n\t\t\t['ccc132', 'CCC132'],\n\t\t\t['ccc133', 'CCC133'],\n\t\t\t['atbl', 'Attached_Below_Left'],\n\t\t\t['attachedbelowleft', 'Attached_Below_Left'],\n\t\t\t['atb', 'Attached_Below'],\n\t\t\t['attachedbelow', 'Attached_Below'],\n\t\t\t['ata', 'Attached_Above'],\n\t\t\t['attachedabove', 'Attached_Above'],\n\t\t\t['atar', 'Attached_Above_Right'],\n\t\t\t['attachedaboveright', 'Attached_Above_Right'],\n\t\t\t['bl', 'Below_Left'],\n\t\t\t['belowleft', 'Below_Left'],\n\t\t\t['b', 'Below'],\n\t\t\t['below', 'Below'],\n\t\t\t['br', 'Below_Right'],\n\t\t\t['belowright', 'Below_Right'],\n\t\t\t['l', 'Left'],\n\t\t\t['left', 'Left'],\n\t\t\t['r', 'Right'],\n\t\t\t['right', 'Right'],\n\t\t\t['al', 'Above_Left'],\n\t\t\t['aboveleft', 'Above_Left'],\n\t\t\t['a', 'Above'],\n\t\t\t['above', 'Above'],\n\t\t\t['ar', 'Above_Right'],\n\t\t\t['aboveright', 'Above_Right'],\n\t\t\t['db', 'Double_Below'],\n\t\t\t['doublebelow', 'Double_Below'],\n\t\t\t['da', 'Double_Above'],\n\t\t\t['doubleabove', 'Double_Above'],\n\t\t\t['is', 'Iota_Subscript'],\n\t\t\t['iotasubscript', 'Iota_Subscript']\n\t\t])],\n\t\t['Decomposition_Type', new Map([\n\t\t\t['can', 'Canonical'],\n\t\t\t['canonical', 'Canonical'],\n\t\t\t['com', 'Compat'],\n\t\t\t['compat', 'Compat'],\n\t\t\t['enc', 'Circle'],\n\t\t\t['circle', 'Circle'],\n\t\t\t['fin', 'Final'],\n\t\t\t['final', 'Final'],\n\t\t\t['font', 'Font'],\n\t\t\t['fra', 'Fraction'],\n\t\t\t['fraction', 'Fraction'],\n\t\t\t['init', 'Initial'],\n\t\t\t['initial', 'Initial'],\n\t\t\t['iso', 'Isolated'],\n\t\t\t['isolated', 'Isolated'],\n\t\t\t['med', 'Medial'],\n\t\t\t['medial', 'Medial'],\n\t\t\t['nar', 'Narrow'],\n\t\t\t['narrow', 'Narrow'],\n\t\t\t['nb', 'Nobreak'],\n\t\t\t['nobreak', 'Nobreak'],\n\t\t\t['none', 'None'],\n\t\t\t['sml', 'Small'],\n\t\t\t['small', 'Small'],\n\t\t\t['sqr', 'Square'],\n\t\t\t['square', 'Square'],\n\t\t\t['sub', 'Sub'],\n\t\t\t['sup', 'Super'],\n\t\t\t['super', 'Super'],\n\t\t\t['vert', 'Vertical'],\n\t\t\t['vertical', 'Vertical'],\n\t\t\t['wide', 'Wide']\n\t\t])],\n\t\t['East_Asian_Width', new Map([\n\t\t\t['a', 'Ambiguous'],\n\t\t\t['ambiguous', 'Ambiguous'],\n\t\t\t['f', 'Fullwidth'],\n\t\t\t['fullwidth', 'Fullwidth'],\n\t\t\t['h', 'Halfwidth'],\n\t\t\t['halfwidth', 'Halfwidth'],\n\t\t\t['n', 'Neutral'],\n\t\t\t['neutral', 'Neutral'],\n\t\t\t['na', 'Narrow'],\n\t\t\t['narrow', 'Narrow'],\n\t\t\t['w', 'Wide'],\n\t\t\t['wide', 'Wide']\n\t\t])],\n\t\t['General_Category', new Map([\n\t\t\t['c', 'Other'],\n\t\t\t['other', 'Other'],\n\t\t\t['cc', 'Control'],\n\t\t\t['control', 'Control'],\n\t\t\t['cntrl', 'Control'],\n\t\t\t['cf', 'Format'],\n\t\t\t['format', 'Format'],\n\t\t\t['cn', 'Unassigned'],\n\t\t\t['unassigned', 'Unassigned'],\n\t\t\t['co', 'Private_Use'],\n\t\t\t['privateuse', 'Private_Use'],\n\t\t\t['cs', 'Surrogate'],\n\t\t\t['surrogate', 'Surrogate'],\n\t\t\t['l', 'Letter'],\n\t\t\t['letter', 'Letter'],\n\t\t\t['lc', 'Cased_Letter'],\n\t\t\t['casedletter', 'Cased_Letter'],\n\t\t\t['ll', 'Lowercase_Letter'],\n\t\t\t['lowercaseletter', 'Lowercase_Letter'],\n\t\t\t['lm', 'Modifier_Letter'],\n\t\t\t['modifierletter', 'Modifier_Letter'],\n\t\t\t['lo', 'Other_Letter'],\n\t\t\t['otherletter', 'Other_Letter'],\n\t\t\t['lt', 'Titlecase_Letter'],\n\t\t\t['titlecaseletter', 'Titlecase_Letter'],\n\t\t\t['lu', 'Uppercase_Letter'],\n\t\t\t['uppercaseletter', 'Uppercase_Letter'],\n\t\t\t['m', 'Mark'],\n\t\t\t['mark', 'Mark'],\n\t\t\t['combiningmark', 'Mark'],\n\t\t\t['mc', 'Spacing_Mark'],\n\t\t\t['spacingmark', 'Spacing_Mark'],\n\t\t\t['me', 'Enclosing_Mark'],\n\t\t\t['enclosingmark', 'Enclosing_Mark'],\n\t\t\t['mn', 'Nonspacing_Mark'],\n\t\t\t['nonspacingmark', 'Nonspacing_Mark'],\n\t\t\t['n', 'Number'],\n\t\t\t['number', 'Number'],\n\t\t\t['nd', 'Decimal_Number'],\n\t\t\t['decimalnumber', 'Decimal_Number'],\n\t\t\t['digit', 'Decimal_Number'],\n\t\t\t['nl', 'Letter_Number'],\n\t\t\t['letternumber', 'Letter_Number'],\n\t\t\t['no', 'Other_Number'],\n\t\t\t['othernumber', 'Other_Number'],\n\t\t\t['p', 'Punctuation'],\n\t\t\t['punctuation', 'Punctuation'],\n\t\t\t['punct', 'Punctuation'],\n\t\t\t['pc', 'Connector_Punctuation'],\n\t\t\t['connectorpunctuation', 'Connector_Punctuation'],\n\t\t\t['pd', 'Dash_Punctuation'],\n\t\t\t['dashpunctuation', 'Dash_Punctuation'],\n\t\t\t['pe', 'Close_Punctuation'],\n\t\t\t['closepunctuation', 'Close_Punctuation'],\n\t\t\t['pf', 'Final_Punctuation'],\n\t\t\t['finalpunctuation', 'Final_Punctuation'],\n\t\t\t['pi', 'Initial_Punctuation'],\n\t\t\t['initialpunctuation', 'Initial_Punctuation'],\n\t\t\t['po', 'Other_Punctuation'],\n\t\t\t['otherpunctuation', 'Other_Punctuation'],\n\t\t\t['ps', 'Open_Punctuation'],\n\t\t\t['openpunctuation', 'Open_Punctuation'],\n\t\t\t['s', 'Symbol'],\n\t\t\t['symbol', 'Symbol'],\n\t\t\t['sc', 'Currency_Symbol'],\n\t\t\t['currencysymbol', 'Currency_Symbol'],\n\t\t\t['sk', 'Modifier_Symbol'],\n\t\t\t['modifiersymbol', 'Modifier_Symbol'],\n\t\t\t['sm', 'Math_Symbol'],\n\t\t\t['mathsymbol', 'Math_Symbol'],\n\t\t\t['so', 'Other_Symbol'],\n\t\t\t['othersymbol', 'Other_Symbol'],\n\t\t\t['z', 'Separator'],\n\t\t\t['separator', 'Separator'],\n\t\t\t['zl', 'Line_Separator'],\n\t\t\t['lineseparator', 'Line_Separator'],\n\t\t\t['zp', 'Paragraph_Separator'],\n\t\t\t['paragraphseparator', 'Paragraph_Separator'],\n\t\t\t['zs', 'Space_Separator'],\n\t\t\t['spaceseparator', 'Space_Separator']\n\t\t])],\n\t\t['Grapheme_Cluster_Break', new Map([\n\t\t\t['cn', 'Control'],\n\t\t\t['control', 'Control'],\n\t\t\t['cr', 'CR'],\n\t\t\t['eb', 'E_Base'],\n\t\t\t['ebase', 'E_Base'],\n\t\t\t['ebg', 'E_Base_GAZ'],\n\t\t\t['ebasegaz', 'E_Base_GAZ'],\n\t\t\t['em', 'E_Modifier'],\n\t\t\t['emodifier', 'E_Modifier'],\n\t\t\t['ex', 'Extend'],\n\t\t\t['extend', 'Extend'],\n\t\t\t['gaz', 'Glue_After_Zwj'],\n\t\t\t['glueafterzwj', 'Glue_After_Zwj'],\n\t\t\t['l', 'L'],\n\t\t\t['lf', 'LF'],\n\t\t\t['lv', 'LV'],\n\t\t\t['lvt', 'LVT'],\n\t\t\t['pp', 'Prepend'],\n\t\t\t['prepend', 'Prepend'],\n\t\t\t['ri', 'Regional_Indicator'],\n\t\t\t['regionalindicator', 'Regional_Indicator'],\n\t\t\t['sm', 'SpacingMark'],\n\t\t\t['spacingmark', 'SpacingMark'],\n\t\t\t['t', 'T'],\n\t\t\t['v', 'V'],\n\t\t\t['xx', 'Other'],\n\t\t\t['other', 'Other'],\n\t\t\t['zwj', 'ZWJ']\n\t\t])],\n\t\t['Hangul_Syllable_Type', new Map([\n\t\t\t['l', 'Leading_Jamo'],\n\t\t\t['leadingjamo', 'Leading_Jamo'],\n\t\t\t['lv', 'LV_Syllable'],\n\t\t\t['lvsyllable', 'LV_Syllable'],\n\t\t\t['lvt', 'LVT_Syllable'],\n\t\t\t['lvtsyllable', 'LVT_Syllable'],\n\t\t\t['na', 'Not_Applicable'],\n\t\t\t['notapplicable', 'Not_Applicable'],\n\t\t\t['t', 'Trailing_Jamo'],\n\t\t\t['trailingjamo', 'Trailing_Jamo'],\n\t\t\t['v', 'Vowel_Jamo'],\n\t\t\t['voweljamo', 'Vowel_Jamo']\n\t\t])],\n\t\t['Indic_Positional_Category', new Map([\n\t\t\t['bottom', 'Bottom'],\n\t\t\t['bottomandright', 'Bottom_And_Right'],\n\t\t\t['left', 'Left'],\n\t\t\t['leftandright', 'Left_And_Right'],\n\t\t\t['na', 'NA'],\n\t\t\t['overstruck', 'Overstruck'],\n\t\t\t['right', 'Right'],\n\t\t\t['top', 'Top'],\n\t\t\t['topandbottom', 'Top_And_Bottom'],\n\t\t\t['topandbottomandright', 'Top_And_Bottom_And_Right'],\n\t\t\t['topandleft', 'Top_And_Left'],\n\t\t\t['topandleftandright', 'Top_And_Left_And_Right'],\n\t\t\t['topandright', 'Top_And_Right'],\n\t\t\t['visualorderleft', 'Visual_Order_Left']\n\t\t])],\n\t\t['Indic_Syllabic_Category', new Map([\n\t\t\t['avagraha', 'Avagraha'],\n\t\t\t['bindu', 'Bindu'],\n\t\t\t['brahmijoiningnumber', 'Brahmi_Joining_Number'],\n\t\t\t['cantillationmark', 'Cantillation_Mark'],\n\t\t\t['consonant', 'Consonant'],\n\t\t\t['consonantdead', 'Consonant_Dead'],\n\t\t\t['consonantfinal', 'Consonant_Final'],\n\t\t\t['consonantheadletter', 'Consonant_Head_Letter'],\n\t\t\t['consonantkiller', 'Consonant_Killer'],\n\t\t\t['consonantmedial', 'Consonant_Medial'],\n\t\t\t['consonantplaceholder', 'Consonant_Placeholder'],\n\t\t\t['consonantprecedingrepha', 'Consonant_Preceding_Repha'],\n\t\t\t['consonantprefixed', 'Consonant_Prefixed'],\n\t\t\t['consonantsubjoined', 'Consonant_Subjoined'],\n\t\t\t['consonantsucceedingrepha', 'Consonant_Succeeding_Repha'],\n\t\t\t['consonantwithstacker', 'Consonant_With_Stacker'],\n\t\t\t['geminationmark', 'Gemination_Mark'],\n\t\t\t['invisiblestacker', 'Invisible_Stacker'],\n\t\t\t['joiner', 'Joiner'],\n\t\t\t['modifyingletter', 'Modifying_Letter'],\n\t\t\t['nonjoiner', 'Non_Joiner'],\n\t\t\t['nukta', 'Nukta'],\n\t\t\t['number', 'Number'],\n\t\t\t['numberjoiner', 'Number_Joiner'],\n\t\t\t['other', 'Other'],\n\t\t\t['purekiller', 'Pure_Killer'],\n\t\t\t['registershifter', 'Register_Shifter'],\n\t\t\t['syllablemodifier', 'Syllable_Modifier'],\n\t\t\t['toneletter', 'Tone_Letter'],\n\t\t\t['tonemark', 'Tone_Mark'],\n\t\t\t['virama', 'Virama'],\n\t\t\t['visarga', 'Visarga'],\n\t\t\t['vowel', 'Vowel'],\n\t\t\t['voweldependent', 'Vowel_Dependent'],\n\t\t\t['vowelindependent', 'Vowel_Independent']\n\t\t])],\n\t\t['Joining_Group', new Map([\n\t\t\t['africanfeh', 'African_Feh'],\n\t\t\t['africannoon', 'African_Noon'],\n\t\t\t['africanqaf', 'African_Qaf'],\n\t\t\t['ain', 'Ain'],\n\t\t\t['alaph', 'Alaph'],\n\t\t\t['alef', 'Alef'],\n\t\t\t['beh', 'Beh'],\n\t\t\t['beth', 'Beth'],\n\t\t\t['burushaskiyehbarree', 'Burushaski_Yeh_Barree'],\n\t\t\t['dal', 'Dal'],\n\t\t\t['dalathrish', 'Dalath_Rish'],\n\t\t\t['e', 'E'],\n\t\t\t['farsiyeh', 'Farsi_Yeh'],\n\t\t\t['fe', 'Fe'],\n\t\t\t['feh', 'Feh'],\n\t\t\t['finalsemkath', 'Final_Semkath'],\n\t\t\t['gaf', 'Gaf'],\n\t\t\t['gamal', 'Gamal'],\n\t\t\t['hah', 'Hah'],\n\t\t\t['he', 'He'],\n\t\t\t['heh', 'Heh'],\n\t\t\t['hehgoal', 'Heh_Goal'],\n\t\t\t['heth', 'Heth'],\n\t\t\t['kaf', 'Kaf'],\n\t\t\t['kaph', 'Kaph'],\n\t\t\t['khaph', 'Khaph'],\n\t\t\t['knottedheh', 'Knotted_Heh'],\n\t\t\t['lam', 'Lam'],\n\t\t\t['lamadh', 'Lamadh'],\n\t\t\t['manichaeanaleph', 'Manichaean_Aleph'],\n\t\t\t['manichaeanayin', 'Manichaean_Ayin'],\n\t\t\t['manichaeanbeth', 'Manichaean_Beth'],\n\t\t\t['manichaeandaleth', 'Manichaean_Daleth'],\n\t\t\t['manichaeandhamedh', 'Manichaean_Dhamedh'],\n\t\t\t['manichaeanfive', 'Manichaean_Five'],\n\t\t\t['manichaeangimel', 'Manichaean_Gimel'],\n\t\t\t['manichaeanheth', 'Manichaean_Heth'],\n\t\t\t['manichaeanhundred', 'Manichaean_Hundred'],\n\t\t\t['manichaeankaph', 'Manichaean_Kaph'],\n\t\t\t['manichaeanlamedh', 'Manichaean_Lamedh'],\n\t\t\t['manichaeanmem', 'Manichaean_Mem'],\n\t\t\t['manichaeannun', 'Manichaean_Nun'],\n\t\t\t['manichaeanone', 'Manichaean_One'],\n\t\t\t['manichaeanpe', 'Manichaean_Pe'],\n\t\t\t['manichaeanqoph', 'Manichaean_Qoph'],\n\t\t\t['manichaeanresh', 'Manichaean_Resh'],\n\t\t\t['manichaeansadhe', 'Manichaean_Sadhe'],\n\t\t\t['manichaeansamekh', 'Manichaean_Samekh'],\n\t\t\t['manichaeantaw', 'Manichaean_Taw'],\n\t\t\t['manichaeanten', 'Manichaean_Ten'],\n\t\t\t['manichaeanteth', 'Manichaean_Teth'],\n\t\t\t['manichaeanthamedh', 'Manichaean_Thamedh'],\n\t\t\t['manichaeantwenty', 'Manichaean_Twenty'],\n\t\t\t['manichaeanwaw', 'Manichaean_Waw'],\n\t\t\t['manichaeanyodh', 'Manichaean_Yodh'],\n\t\t\t['manichaeanzayin', 'Manichaean_Zayin'],\n\t\t\t['meem', 'Meem'],\n\t\t\t['mim', 'Mim'],\n\t\t\t['nojoininggroup', 'No_Joining_Group'],\n\t\t\t['noon', 'Noon'],\n\t\t\t['nun', 'Nun'],\n\t\t\t['nya', 'Nya'],\n\t\t\t['pe', 'Pe'],\n\t\t\t['qaf', 'Qaf'],\n\t\t\t['qaph', 'Qaph'],\n\t\t\t['reh', 'Reh'],\n\t\t\t['reversedpe', 'Reversed_Pe'],\n\t\t\t['rohingyayeh', 'Rohingya_Yeh'],\n\t\t\t['sad', 'Sad'],\n\t\t\t['sadhe', 'Sadhe'],\n\t\t\t['seen', 'Seen'],\n\t\t\t['semkath', 'Semkath'],\n\t\t\t['shin', 'Shin'],\n\t\t\t['straightwaw', 'Straight_Waw'],\n\t\t\t['swashkaf', 'Swash_Kaf'],\n\t\t\t['syriacwaw', 'Syriac_Waw'],\n\t\t\t['tah', 'Tah'],\n\t\t\t['taw', 'Taw'],\n\t\t\t['tehmarbuta', 'Teh_Marbuta'],\n\t\t\t['tehmarbutagoal', 'Hamza_On_Heh_Goal'],\n\t\t\t['hamzaonhehgoal', 'Hamza_On_Heh_Goal'],\n\t\t\t['teth', 'Teth'],\n\t\t\t['waw', 'Waw'],\n\t\t\t['yeh', 'Yeh'],\n\t\t\t['yehbarree', 'Yeh_Barree'],\n\t\t\t['yehwithtail', 'Yeh_With_Tail'],\n\t\t\t['yudh', 'Yudh'],\n\t\t\t['yudhhe', 'Yudh_He'],\n\t\t\t['zain', 'Zain'],\n\t\t\t['zhain', 'Zhain']\n\t\t])],\n\t\t['Joining_Type', new Map([\n\t\t\t['c', 'Join_Causing'],\n\t\t\t['joincausing', 'Join_Causing'],\n\t\t\t['d', 'Dual_Joining'],\n\t\t\t['dualjoining', 'Dual_Joining'],\n\t\t\t['l', 'Left_Joining'],\n\t\t\t['leftjoining', 'Left_Joining'],\n\t\t\t['r', 'Right_Joining'],\n\t\t\t['rightjoining', 'Right_Joining'],\n\t\t\t['t', 'Transparent'],\n\t\t\t['transparent', 'Transparent'],\n\t\t\t['u', 'Non_Joining'],\n\t\t\t['nonjoining', 'Non_Joining']\n\t\t])],\n\t\t['Line_Break', new Map([\n\t\t\t['ai', 'Ambiguous'],\n\t\t\t['ambiguous', 'Ambiguous'],\n\t\t\t['al', 'Alphabetic'],\n\t\t\t['alphabetic', 'Alphabetic'],\n\t\t\t['b2', 'Break_Both'],\n\t\t\t['breakboth', 'Break_Both'],\n\t\t\t['ba', 'Break_After'],\n\t\t\t['breakafter', 'Break_After'],\n\t\t\t['bb', 'Break_Before'],\n\t\t\t['breakbefore', 'Break_Before'],\n\t\t\t['bk', 'Mandatory_Break'],\n\t\t\t['mandatorybreak', 'Mandatory_Break'],\n\t\t\t['cb', 'Contingent_Break'],\n\t\t\t['contingentbreak', 'Contingent_Break'],\n\t\t\t['cj', 'Conditional_Japanese_Starter'],\n\t\t\t['conditionaljapanesestarter', 'Conditional_Japanese_Starter'],\n\t\t\t['cl', 'Close_Punctuation'],\n\t\t\t['closepunctuation', 'Close_Punctuation'],\n\t\t\t['cm', 'Combining_Mark'],\n\t\t\t['combiningmark', 'Combining_Mark'],\n\t\t\t['cp', 'Close_Parenthesis'],\n\t\t\t['closeparenthesis', 'Close_Parenthesis'],\n\t\t\t['cr', 'Carriage_Return'],\n\t\t\t['carriagereturn', 'Carriage_Return'],\n\t\t\t['eb', 'E_Base'],\n\t\t\t['ebase', 'E_Base'],\n\t\t\t['em', 'E_Modifier'],\n\t\t\t['emodifier', 'E_Modifier'],\n\t\t\t['ex', 'Exclamation'],\n\t\t\t['exclamation', 'Exclamation'],\n\t\t\t['gl', 'Glue'],\n\t\t\t['glue', 'Glue'],\n\t\t\t['h2', 'H2'],\n\t\t\t['h3', 'H3'],\n\t\t\t['hl', 'Hebrew_Letter'],\n\t\t\t['hebrewletter', 'Hebrew_Letter'],\n\t\t\t['hy', 'Hyphen'],\n\t\t\t['hyphen', 'Hyphen'],\n\t\t\t['id', 'Ideographic'],\n\t\t\t['ideographic', 'Ideographic'],\n\t\t\t['in', 'Inseparable'],\n\t\t\t['inseparable', 'Inseparable'],\n\t\t\t['inseperable', 'Inseparable'],\n\t\t\t['is', 'Infix_Numeric'],\n\t\t\t['infixnumeric', 'Infix_Numeric'],\n\t\t\t['jl', 'JL'],\n\t\t\t['jt', 'JT'],\n\t\t\t['jv', 'JV'],\n\t\t\t['lf', 'Line_Feed'],\n\t\t\t['linefeed', 'Line_Feed'],\n\t\t\t['nl', 'Next_Line'],\n\t\t\t['nextline', 'Next_Line'],\n\t\t\t['ns', 'Nonstarter'],\n\t\t\t['nonstarter', 'Nonstarter'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric'],\n\t\t\t['op', 'Open_Punctuation'],\n\t\t\t['openpunctuation', 'Open_Punctuation'],\n\t\t\t['po', 'Postfix_Numeric'],\n\t\t\t['postfixnumeric', 'Postfix_Numeric'],\n\t\t\t['pr', 'Prefix_Numeric'],\n\t\t\t['prefixnumeric', 'Prefix_Numeric'],\n\t\t\t['qu', 'Quotation'],\n\t\t\t['quotation', 'Quotation'],\n\t\t\t['ri', 'Regional_Indicator'],\n\t\t\t['regionalindicator', 'Regional_Indicator'],\n\t\t\t['sa', 'Complex_Context'],\n\t\t\t['complexcontext', 'Complex_Context'],\n\t\t\t['sg', 'Surrogate'],\n\t\t\t['surrogate', 'Surrogate'],\n\t\t\t['sp', 'Space'],\n\t\t\t['space', 'Space'],\n\t\t\t['sy', 'Break_Symbols'],\n\t\t\t['breaksymbols', 'Break_Symbols'],\n\t\t\t['wj', 'Word_Joiner'],\n\t\t\t['wordjoiner', 'Word_Joiner'],\n\t\t\t['xx', 'Unknown'],\n\t\t\t['unknown', 'Unknown'],\n\t\t\t['zw', 'ZWSpace'],\n\t\t\t['zwspace', 'ZWSpace'],\n\t\t\t['zwj', 'ZWJ']\n\t\t])],\n\t\t['NFC_Quick_Check', new Map([\n\t\t\t['m', 'Maybe'],\n\t\t\t['maybe', 'Maybe'],\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['NFD_Quick_Check', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['NFKC_Quick_Check', new Map([\n\t\t\t['m', 'Maybe'],\n\t\t\t['maybe', 'Maybe'],\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['NFKD_Quick_Check', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['Numeric_Type', new Map([\n\t\t\t['de', 'Decimal'],\n\t\t\t['decimal', 'Decimal'],\n\t\t\t['di', 'Digit'],\n\t\t\t['digit', 'Digit'],\n\t\t\t['none', 'None'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric']\n\t\t])],\n\t\t['Sentence_Break', new Map([\n\t\t\t['at', 'ATerm'],\n\t\t\t['aterm', 'ATerm'],\n\t\t\t['cl', 'Close'],\n\t\t\t['close', 'Close'],\n\t\t\t['cr', 'CR'],\n\t\t\t['ex', 'Extend'],\n\t\t\t['extend', 'Extend'],\n\t\t\t['fo', 'Format'],\n\t\t\t['format', 'Format'],\n\t\t\t['le', 'OLetter'],\n\t\t\t['oletter', 'OLetter'],\n\t\t\t['lf', 'LF'],\n\t\t\t['lo', 'Lower'],\n\t\t\t['lower', 'Lower'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric'],\n\t\t\t['sc', 'SContinue'],\n\t\t\t['scontinue', 'SContinue'],\n\t\t\t['se', 'Sep'],\n\t\t\t['sep', 'Sep'],\n\t\t\t['sp', 'Sp'],\n\t\t\t['st', 'STerm'],\n\t\t\t['sterm', 'STerm'],\n\t\t\t['up', 'Upper'],\n\t\t\t['upper', 'Upper'],\n\t\t\t['xx', 'Other'],\n\t\t\t['other', 'Other']\n\t\t])],\n\t\t['Word_Break', new Map([\n\t\t\t['cr', 'CR'],\n\t\t\t['dq', 'Double_Quote'],\n\t\t\t['doublequote', 'Double_Quote'],\n\t\t\t['eb', 'E_Base'],\n\t\t\t['ebase', 'E_Base'],\n\t\t\t['ebg', 'E_Base_GAZ'],\n\t\t\t['ebasegaz', 'E_Base_GAZ'],\n\t\t\t['em', 'E_Modifier'],\n\t\t\t['emodifier', 'E_Modifier'],\n\t\t\t['ex', 'ExtendNumLet'],\n\t\t\t['extendnumlet', 'ExtendNumLet'],\n\t\t\t['extend', 'Extend'],\n\t\t\t['fo', 'Format'],\n\t\t\t['format', 'Format'],\n\t\t\t['gaz', 'Glue_After_Zwj'],\n\t\t\t['glueafterzwj', 'Glue_After_Zwj'],\n\t\t\t['hl', 'Hebrew_Letter'],\n\t\t\t['hebrewletter', 'Hebrew_Letter'],\n\t\t\t['ka', 'Katakana'],\n\t\t\t['katakana', 'Katakana'],\n\t\t\t['le', 'ALetter'],\n\t\t\t['aletter', 'ALetter'],\n\t\t\t['lf', 'LF'],\n\t\t\t['mb', 'MidNumLet'],\n\t\t\t['midnumlet', 'MidNumLet'],\n\t\t\t['ml', 'MidLetter'],\n\t\t\t['midletter', 'MidLetter'],\n\t\t\t['mn', 'MidNum'],\n\t\t\t['midnum', 'MidNum'],\n\t\t\t['nl', 'Newline'],\n\t\t\t['newline', 'Newline'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric'],\n\t\t\t['ri', 'Regional_Indicator'],\n\t\t\t['regionalindicator', 'Regional_Indicator'],\n\t\t\t['sq', 'Single_Quote'],\n\t\t\t['singlequote', 'Single_Quote'],\n\t\t\t['xx', 'Other'],\n\t\t\t['other', 'Other'],\n\t\t\t['zwj', 'ZWJ']\n\t\t])],\n\t\t['ASCII_Hex_Digit', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Alphabetic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Bidi_Control', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Bidi_Mirrored', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Cased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Composition_Exclusion', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Case_Ignorable', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Full_Composition_Exclusion', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Casefolded', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Casemapped', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_NFKC_Casefolded', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Lowercased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Titlecased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Uppercased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Dash', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Deprecated', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Default_Ignorable_Code_Point', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Diacritic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Extender', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Grapheme_Base', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Grapheme_Extend', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Grapheme_Link', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Hex_Digit', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Hyphen', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['ID_Continue', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Ideographic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['ID_Start', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['IDS_Binary_Operator', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['IDS_Trinary_Operator', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Join_Control', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Logical_Order_Exception', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Lowercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Math', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Noncharacter_Code_Point', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Alphabetic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Default_Ignorable_Code_Point', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Grapheme_Extend', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_ID_Continue', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_ID_Start', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Lowercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Math', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Uppercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Pattern_Syntax', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Pattern_White_Space', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Prepended_Concatenation_Mark', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Quotation_Mark', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Radical', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Soft_Dotted', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Sentence_Terminal', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Terminal_Punctuation', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Unified_Ideograph', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Uppercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Variation_Selector', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['White_Space', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['XID_Continue', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['XID_Start', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFC', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFD', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFKC', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFKD', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])]\n\t])\n};\n","'use strict';\n\nconst mappings = require('./data/mappings.js');\nconst aliasToProperty = mappings.aliasToProperty;\nconst propertyToValueAliases = mappings.propertyToValueAliases;\n\nconst normalize = function(string) {\n\tconst normalized = string\n\t\t// Remove case distinctions.\n\t\t.toLowerCase()\n\t\t// Remove whitespace.\n\t\t.replace(/\\s/g, '')\n\t\t// Remove `-` and `_`.\n\t\t.replace(/[-_]/g, '');\n\treturn normalized;\n};\n\nconst matchLoosely = function(property, value) {\n\tconst normalizedProperty = normalize(property);\n\tconst canonicalProperty = aliasToProperty.get(normalizedProperty);\n\tif (!canonicalProperty) {\n\t\tthrow new Error(`Unknown property: ${ property }`);\n\t}\n\tconst aliasToValue = propertyToValueAliases.get(\n\t\tcanonicalProperty == 'Script_Extensions' ? 'Script' : canonicalProperty\n\t);\n\tconst result = {\n\t\t'property': canonicalProperty\n\t};\n\tif (value) {\n\t\tconst normalizedValue = normalize(value);\n\t\tconst canonicalValue = aliasToValue.get(normalizedValue);\n\t\tif (canonicalValue) {\n\t\t\tresult.value = canonicalValue;\n\t\t}\n\t}\n\treturn result;\n};\n\nmodule.exports = matchLoosely;\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// \n// \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 (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 // \n // \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 // \n return createEscaped('identifier', 0x200C, ZWJ);\n } else if (match(ZWNJ)) {\n // \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","/*!\r\n * regjsgen 0.3.0\r\n * Copyright 2014-2016 Benjamin Tan \r\n * Available under MIT 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","'use strict';\n\nconst generate = require('regjsgen').generate;\nconst parse = require('regjsparser').parse;\nconst regenerate = require('regenerate');\nconst looseMatch = require('unicode-loose-match');\nconst knownUnicodeProperties = new Set(\n\trequire('regenerate-unicode-properties')\n);\nconst iuMappings = require('./data/iu-mappings.js');\nconst ESCAPE_SETS = require('./data/character-class-escape-sets.js');\n\nconst getCharacterClassEscapeSet = function(character) {\n\tif (config.unicode) {\n\t\tif (config.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 getUnicodePropertyValueSet = function(property, value) {\n\tconst path = knownUnicodeProperties.has(property) ?\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 getUnicodePropertyEscapeSet = function(value, isNegative) {\n\tconst parts = value.split('=');\n\tlet canonical;\n\tif (parts.length == 1) {\n\t\tconst firstPart = parts[0];\n\t\t// It could be a `General_Category` value or a binary property.\n\t\tcanonical = looseMatch('General_Category', firstPart);\n\t\tif (!canonical.value) {\n\t\t\t// It’s not a `General_Category` value, so check if it’s a binary\n\t\t\t// property. Note: `looseMatch` throws on invalid properties.\n\t\t\tcanonical = looseMatch(firstPart);\n\t\t}\n\t} else {\n\t\t// The pattern consists of two parts, i.e. `Property=Value`.\n\t\tcanonical = looseMatch(parts[0], parts[1]);\n\t}\n\tconst set = getUnicodePropertyValueSet(\n\t\tcanonical.property,\n\t\tcanonical.value\n\t).clone();\n\tif (isNegative) {\n\t\treturn UNICODE_SET.clone().remove(set);\n\t}\n\treturn set;\n};\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 \n\t\t0x000D, // Carriage Return \n\t\t0x2028, // Line Separator \n\t\t0x2029 // Paragraph Separator \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\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 = function(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 = function(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 = function(codePoint) {\n\treturn iuMappings.get(codePoint) || false;\n};\n\nconst processCharacterClass = function(characterClassItem, regenerateOptions) {\n\tlet set = regenerate();\n\tconst body = characterClassItem.body.forEach(function(item) {\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(item.value));\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 = function(item, regenerateOptions) {\n\tswitch (item.type) {\n\t\tcase 'dot':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\t(config.unicode ? DOT_SET_UNICODE : DOT_SET)\n\t\t\t\t\t.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(item.value).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(processTerm);\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'useUnicodeFlag': false\n};\nconst rewritePattern = function(pattern, flags, options) {\n\tconst regjsparserFeatures = {\n\t\t'unicodePropertyEscape': options && options.unicodePropertyEscape\n\t};\n\tconfig.useUnicodeFlag = options && options.useUnicodeFlag;\n\tconst regenerateOptions = {\n\t\t'hasUnicodeFlag': config.useUnicodeFlag\n\t};\n\tconst tree = parse(pattern, flags, regjsparserFeatures);\n\tconfig.ignoreCase = flags && flags.includes('i');\n\tconfig.unicode = flags && flags.includes('u');\n\tObject.assign(tree, processTerm(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\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 ), true );\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( this, 'Regular expression sticky flag is not supported' );\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}\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.insertLeft( this.property.end, `']` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport deindent from '../../utils/deindent.js';\n\nexport default class ObjectExpression extends Node {\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\n\t\tlet spreadPropertyCount = 0;\n\t\tlet computedPropertyCount = 0;\n\n\t\tfor ( let prop of this.properties ) {\n\t\t\tif ( prop.type === 'SpreadProperty' ) spreadPropertyCount += 1;\n\t\t\tif ( prop.computed ) computedPropertyCount += 1;\n\t\t}\n\n\t\tif ( spreadPropertyCount ) {\n\t\t\t// enclose run of non-spread properties in curlies\n\t\t\tlet i = this.properties.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst prop = this.properties[i];\n\n\t\t\t\tif ( prop.type === 'Property' ) {\n\t\t\t\t\tconst lastProp = this.properties[ i - 1 ];\n\t\t\t\t\tconst nextProp = this.properties[ i + 1 ];\n\n\t\t\t\t\tif ( !lastProp || lastProp.type !== 'Property' ) {\n\t\t\t\t\t\tcode.insertRight( prop.start, '{' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !nextProp || nextProp.type !== 'Property' ) {\n\t\t\t\t\t\tcode.insertLeft( prop.end, '}' );\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\tcode.overwrite( this.start, this.properties[0].start, `${this.program.objectAssign}({}, `);\n\t\t\tcode.overwrite( this.properties[ this.properties.length - 1 ].end, this.end, ')' );\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\tlet start;\n\t\t\tlet end;\n\n\t\t\tif ( this.parent.type === 'VariableDeclarator' && this.parent.parent.declarations.length === 1 ) {\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}\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\tstart = this.start + 1;\n\t\t\tend = this.end;\n\n\t\t\tif ( isSimpleAssignment ) {\n\t\t\t\t// ???\n\t\t\t} else {\n\t\t\t\tname = this.findScope( true ).createIdentifier( 'obj' );\n\n\t\t\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\t\t\tcode.insertRight( statement.start, `var ${name};\\n${i0}` );\n\n\t\t\t\tcode.insertRight( this.start, `( ${name} = ` );\n\t\t\t}\n\n\t\t\tconst len = this.properties.length;\n\t\t\tlet lastComputedProp;\n\n\t\t\tfor ( let i = 0; i < len; i += 1 ) {\n\t\t\t\tconst prop = this.properties[i];\n\n\t\t\t\tif ( prop.computed ) {\n\t\t\t\t\tlastComputedProp = prop;\n\t\t\t\t\tlet moveStart = i > 0 ? this.properties[ i - 1 ].end : start;\n\n\t\t\t\t\tcode.overwrite( moveStart, prop.start, isSimpleAssignment ? `;\\n${i0}${name}` : `, ${name}` );\n\t\t\t\t\tlet c = prop.key.end;\n\t\t\t\t\twhile ( code.original[c] !== ']' ) c += 1;\n\t\t\t\t\tc += 1;\n\n\t\t\t\t\tif ( prop.value.start > c ) code.remove( c, prop.value.start );\n\t\t\t\t\tcode.insertLeft( c, ' = ' );\n\t\t\t\t\tcode.move( moveStart, prop.end, end );\n\n\t\t\t\t\tif ( i === 0 && len > 1 ) {\n\t\t\t\t\t\t// remove trailing comma\n\t\t\t\t\t\tc = prop.end;\n\t\t\t\t\t\twhile ( code.original[c] !== ',' ) c += 1;\n\n\t\t\t\t\t\tcode.remove( prop.end, c + 1 );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( prop.method && transforms.conciseMethodProperty ) {\n\t\t\t\t\t\tcode.insertRight( prop.value.start, 'function ' );\n\t\t\t\t\t}\n\n\t\t\t\t\tdeindent( prop.value, code );\n\t\t\t\t}\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 ) {\n\t\t\t\tcode.insertLeft( lastComputedProp.end, `, ${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\tif ( transforms.conciseMethodProperty && !this.computed && this.parent.type !== 'ObjectPattern' ) {\n\t\t\tif ( this.shorthand ) {\n\t\t\t\tcode.insertRight( this.start, `${this.key.name}: ` );\n\t\t\t} else if ( this.method ) {\n\t\t\t\tconst name = this.findScope( true ).createIdentifier( this.key.type === 'Identifier' ? this.key.name : this.key.value );\n\t\t\t\tif ( this.value.generator ) code.remove( this.start, this.key.start );\n\t\t\t\tcode.insertLeft( 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.insertRight( this.key.start, `'` );\n\t\t\tcode.insertLeft( this.key.end, `'` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ReturnStatement extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.loop = this.findNearest( /(?:For(?:In)?|While)Statement/ );\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\tif ( this.argument ) {\n\t\t\tconst shouldWrap = this.shouldWrap && this.loop && this.loop.shouldRewriteAsFunction;\n\n\t\t\tif ( shouldWrap ) code.insertRight( this.argument.start, `{ v: ` );\n\n\t\t\tif ( this.argument ) this.argument.transpile( code, transforms );\n\n\t\t\tif ( shouldWrap ) code.insertLeft( this.argument.end, ` }` );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class SpreadProperty 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","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.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( this, 'super used in base class' );\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( this, 'super() not allowed outside class constructor' );\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( this, 'Unexpected use of `super` (expected `super(...)` or `super.*`)' );\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( /(?:For(?:In|Of)?|While)Statement/ );\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, 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.insertLeft( 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.insertLeft( callExpression.arguments[0].start, `${thisAlias}, ` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.insertLeft( 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( this, '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' );\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 ( transforms ) {\n\t\tthis.program.templateElements.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 !== 'VariableDeclarator' &&\n\t\t\t ( this.parent.type !== 'BinaryExpression' || this.parent.operator !== '+' );\n\n\t\t\tif ( parenthesise ) code.insertRight( this.start, '(' );\n\n\t\t\tlet lastIndex = this.start;\n\n\t\t\tordered.forEach( ( node, i ) => {\n\t\t\t\tif ( node.type === 'TemplateElement' ) {\n\t\t\t\t\tlet replacement = '';\n\t\t\t\t\tif ( i ) replacement += ' + ';\n\t\t\t\t\treplacement += JSON.stringify( node.value.cooked );\n\n\t\t\t\t\tcode.overwrite( lastIndex, node.end, replacement );\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\tlet replacement = '';\n\t\t\t\t\tif ( i ) replacement += ' + ';\n\t\t\t\t\tif ( parenthesise ) replacement += '(';\n\n\t\t\t\t\tcode.overwrite( lastIndex, node.start, replacement );\n\n\t\t\t\t\tif ( parenthesise ) code.insertLeft( node.end, ')' );\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tlet close = '';\n\t\t\tif ( parenthesise ) close += ')';\n\n\t\t\tcode.overwrite( lastIndex, this.end, close );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.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( /(?:For(?:In|Of)?|While)Statement/ );\n\n\t\t\tif ( arrowFunction && arrowFunction.depth > lexicalBoundary.depth ) {\n\t\t\t\tthis.alias = 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.alias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.alias ) {\n\t\t\tcode.overwrite( this.start, this.end, this.alias, true );\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, `${this.argument.name} is read-only` );\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import { findIndex } from './array.js';\n\nconst handlers = {\n\tArrayPattern: destructureArrayPattern,\n\tObjectPattern: destructureObjectPattern,\n\tAssignmentPattern: destructureAssignmentPattern,\n\tIdentifier: destructureIdentifier\n};\n\nexport default function destructure ( code, scope, node, ref, statementGenerators ) {\n\t_destructure( code, scope, node, ref, ref, statementGenerators );\n}\n\nfunction _destructure ( code, scope, node, ref, expr, statementGenerators ) {\n\tconst handler = handlers[ node.type ];\n\tif ( !handler ) throw new Error( `not implemented: ${node.type}` );\n\n\thandler( code, scope, node, ref, expr, statementGenerators );\n}\n\nfunction destructureIdentifier ( code, scope, node, ref, expr, statementGenerators ) {\n\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\tcode.insertRight( node.start, `${prefix}var ` );\n\t\tcode.insertLeft( node.end, ` = ${expr};${suffix}` );\n\t\tcode.move( node.start, node.end, start );\n\t});\n}\n\nfunction handleProperty ( code, scope, c, node, value, statementGenerators ) {\n\tswitch ( node.type ) {\n\t\tcase 'Identifier':\n\t\t\tcode.remove( c, node.start );\n\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tcode.insertRight( node.start, `${prefix}var ` );\n\t\t\t\tcode.insertLeft( node.end, ` = ${value};${suffix}` );\n\t\t\t\tcode.move( node.start, node.end, start );\n\t\t\t});\n\t\t\tbreak;\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\tcode.insertRight( node.right.start, `${prefix}var ${name} = ${value}; if ( ${name} === void 0 ) ${name} = ` );\n\t\t\t\tcode.move( node.right.start, node.right.end, start );\n\t\t\t\tcode.insertLeft( node.right.end, `;${suffix}` );\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, statementGenerators );\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase 'ObjectPattern':\n\t\t\tcode.remove( c, c = node.start );\n\n\t\t\tif ( node.properties.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\t// this feels a tiny bit hacky, but we can't do a\n\t\t\t\t\t// straightforward insertLeft and keep correct order...\n\t\t\t\t\tcode.insertRight( 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.insertLeft( 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.properties.forEach( prop => {\n\t\t\t\t\thandleProperty( code, scope, c, prop.value, `${ref}.${prop.key.name}`, statementGenerators );\n\t\t\t\t\tc = prop.end;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst prop = node.properties[0];\n\t\t\t\thandleProperty( code, scope, c, prop.value, `${value}.${prop.key.name}`, statementGenerators );\n\t\t\t\tc = prop.end;\n\t\t\t}\n\n\t\t\tcode.remove( c, node.end );\n\t\t\tbreak;\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.insertRight( 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.insertLeft( 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\thandleProperty( code, scope, c, element, `${ref}[${i}]`, statementGenerators );\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\thandleProperty( code, scope, c, element, `${value}[${index}]`, statementGenerators );\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\n\t\tdefault:\n\t\t\tthrow new Error( `Unexpected node type in destructuring (${node.type})` );\n\t}\n}\n\nfunction destructureArrayPattern ( code, scope, node, ref, expr, statementGenerators ) {\n\tlet c = node.start;\n\n\tnode.elements.forEach( ( element, i ) => {\n\t\tif ( !element ) return;\n\n\t\thandleProperty( code, scope, c, element, `${ref}[${i}]`, statementGenerators );\n\t\tc = element.end;\n\t});\n\n\tcode.remove( c, node.end );\n}\n\nfunction destructureObjectPattern ( code, scope, node, ref, expr, statementGenerators ) {\n\tlet c = node.start;\n\n\tnode.properties.forEach( prop => {\n\t\thandleProperty( code, scope, c, prop.value, `${ref}.${prop.key.name}`, statementGenerators );\n\t\tc = prop.end;\n\t});\n\n\tcode.remove( c, node.end );\n}\n\nfunction destructureAssignmentPattern ( code, scope, node, ref, expr, statementGenerators ) {\n\tconst isIdentifier = node.left.type === 'Identifier';\n\tconst name = isIdentifier ? node.left.name : ref;\n\n\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\tcode.insertRight( node.left.end, `${prefix}if ( ${name} === void 0 ) ${name}` );\n\t\tcode.move( node.left.end, node.right.end, start );\n\t\tcode.insertLeft( node.right.end, `;${suffix}` );\n\t});\n\n\tif ( !isIdentifier ) {\n\t\t_destructure( code, scope, node.left, ref, expr, statementGenerators );\n\t}\n}\n","import Node from '../Node.js';\nimport destructure from '../../utils/destructure.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, true );\n\t\t}\n\n\t\tif ( transforms.destructuring ) {\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\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\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.insertRight( declarator.id.end, `var ${name}` );\n\t\t\t\t\t\t\tcode.insertLeft( 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, statementGenerators );\n\n\t\t\t\t\tlet suffix = `\\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 = '';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfn( declarator.start, '', suffix );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( declarator.init ) {\n\t\t\t\t\tdeclarator.init.transpile( code, transforms );\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 ) {\n\t\t\t\tcode.remove( c, this.end );\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tthis.declarations.forEach( declarator => {\n\t\t\t\tif ( declarator.init ) declarator.init.transpile( code, transforms );\n\t\t\t});\n\t\t}\n\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.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","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 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 ObjectExpression from './ObjectExpression.js';\nimport Property from './Property.js';\nimport ReturnStatement from './ReturnStatement.js';\nimport SpreadProperty from './SpreadProperty.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\tImportDeclaration,\n\tImportDefaultSpecifier,\n\tImportSpecifier,\n\tJSXAttribute,\n\tJSXClosingElement,\n\tJSXElement,\n\tJSXExpressionContainer,\n\tJSXOpeningElement,\n JSXSpreadAttribute,\n\tLiteral,\n\tMemberExpression,\n\tObjectExpression,\n\tProperty,\n\tReturnStatement,\n\tSpreadProperty,\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\tNode( 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';\nimport CompileError from '../utils/CompileError.js';\n\nconst letConst = /^(?:let|const)$/;\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\t\t\tconst existingDeclaration = this.declarations[ name ];\n\t\t\tif ( existingDeclaration && ( letConst.test( kind ) || letConst.test( existingDeclaration.kind ) ) ) {\n\t\t\t\t// TODO warn about double var declarations?\n\t\t\t\tthrow new CompileError( identifier, `${name} is already declared` );\n\t\t\t}\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\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 from './wrap.js';\nimport Node from './Node.js';\nimport Scope from './Scope.js';\nimport CompileError from '../utils/CompileError.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 ) {\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.insertLeft( 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.insertLeft( 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.insertLeft( 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.insertLeft( this.start, `{` ).insertRight( this.end, `${this.parent.getIndentation()}}` );\n\n\t\t\t\t\tcode.insertRight( expr.start, `\\n${indentation}return ` );\n\t\t\t\t\tcode.insertLeft( expr.end, `;\\n` );\n\t\t\t\t} else if ( transforms.arrow ) {\n\t\t\t\t\tcode.insertRight( expr.start, `{ return ` );\n\t\t\t\t\tcode.insertLeft( expr.end, `; }` );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( introStatementGenerators.length ) {\n\t\t\t\tcode.insertLeft( this.start, `{` ).insertRight( 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.insertRight( 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.insertLeft( 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.insertLeft( 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.insertLeft( 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, introStatementGenerators );\n\t\t\t\t\tcode.insertLeft( 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, 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, 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, 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, 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.objectAssign = options.objectAssign || 'Object.assign';\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.templateElements = [];\n\tthis.body.initialise( transforms );\n\n\tthis.indentExclusions = {};\n\tfor ( const node of this.templateElements ) {\n\t\tfor ( let i = node.start; i < node.end; i += 1 ) {\n\t\t\tthis.indentExclusions[ node.start + 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},\n\tfirefox: {\n\t\t 43: 0b1000111111101100000110111011101,\n\t\t 44: 0b1000111111101100000110111011101,\n\t\t 45: 0b1000111111101100000110111011101\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","{\n \"name\": \"buble\",\n \"version\": \"0.12.5\",\n \"description\": \"The blazing fast, batteries-included ES2015 compiler\",\n \"main\": \"dist/buble.umd.js\",\n \"jsnext:main\": \"dist/buble.es.js\",\n \"files\": [\n \"bin\",\n \"src\",\n \"dist\",\n \"register.js\",\n \"README.md\"\n ],\n \"scripts\": {\n \"build\": \"npm run build:umd && npm run build:es && npm run build:browser\",\n \"build:umd\": \"rollup -c -f umd -o dist/buble.umd.js\",\n \"build:browser\": \"rollup -c --environment DEPS -f umd -o dist/buble.deps.js\",\n \"build:es\": \"rollup -c -f es6 -o dist/buble.es.js\",\n \"test\": \"mocha test/test.js --compilers js:buble/register\",\n \"pretest\": \"npm run build:umd && npm run build:browser\",\n \"test:node\": \"mocha test/test.js --compilers js:buble/register\",\n \"pretest:node\": \"npm run build:umd\",\n \"prepublish\": \"npm test && npm run build:es\"\n },\n \"bin\": {\n \"buble\": \"./bin/buble\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://gitlab.com/Rich-Harris/buble.git\"\n },\n \"keywords\": [\n \"javascript\",\n \"transpilation\",\n \"compilation\",\n \"esnext\",\n \"es2015\",\n \"es2017\",\n \"es6\",\n \"es7\"\n ],\n \"author\": \"Rich Harris\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://gitlab.com/Rich-Harris/buble/issues\"\n },\n \"homepage\": \"https://gitlab.com/Rich-Harris/buble#README\",\n \"devDependencies\": {\n \"buble\": \"0.8.2\",\n \"console-group\": \"^0.2.1\",\n \"eslint\": \"^2.10.1\",\n \"glob\": \"^7.0.3\",\n \"mocha\": \"^2.4.5\",\n \"regexpu-core\": \"^2.0.0\",\n \"rimraf\": \"^2.5.2\",\n \"rollup\": \"^0.26.3\",\n \"rollup-plugin-buble\": \"^0.8.0\",\n \"rollup-plugin-commonjs\": \"^2.2.1\",\n \"rollup-plugin-json\": \"^2.0.0\",\n \"rollup-plugin-node-resolve\": \"^1.5.0\",\n \"source-map\": \"^0.5.6\",\n \"source-map-support\": \"^0.4.0\"\n },\n \"dependencies\": {\n \"acorn\": \"^3.1.0\",\n \"acorn-jsx\": \"^3.0.1\",\n \"acorn-object-spread\": \"^1.0.0\",\n \"chalk\": \"^1.1.3\",\n \"magic-string\": \"^0.14.0\",\n \"minimist\": \"^1.2.0\",\n \"os-homedir\": \"^1.0.1\"\n }\n}\n","import acorn from 'acorn';\nimport acornJsx from 'acorn-jsx/inject';\nimport acornObjectSpread from 'acorn-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\n\ttry {\n\t\tast = parse( source, {\n\t\t\tecmaVersion: 7,\n\t\t\tpreserveParens: true,\n\t\t\tsourceType: 'module',\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} 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":["let","this","const","toJSON","element","super","fn","require$$0","require$$4","rewritePattern","prop","i","replacement","ref","c","start","alias","identifier","0b1001111011111100111110101111101","0b1001111111111100111111111111111","0b1011111111111100111111111111111","0b1000111111101100000110111011101","0b1000000000000000000000000000000","0b1001111001101100000011101011110","0b0000000000000000000000000000000","0b1000000000000000111000001100000","0b1011110110111100011010001011101","0b1011111110111100011111001011111","0b1000000000101000000000001000000","0b1000001000101000000010001000100","0b1001111000111100111111001111111","0b1111111111111111111111111111111"],"mappings":"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;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,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,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,CAAC;;;;;;AC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"}