{"version":3,"file":"bundle.min.js","sources":["../lib/utils/index.js","../lib/parse.js","../lib/ast.js","../lib/transform.js","../lib/utils/first_in_statement.js","../lib/output.js","../lib/equivalent-to.js","../lib/scope.js","../tools/node.js","../lib/size.js","../lib/compress/index.js","../tools/domprops.js","../lib/propmangle.js","../lib/minify.js","../lib/sourcemap.js","../lib/mozilla-ast.js"],"sourcesContent":["/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nfunction characters(str) {\n return str.split(\"\");\n}\n\nfunction member(name, array) {\n return array.includes(name);\n}\n\nclass DefaultsError extends Error {\n constructor(msg, defs) {\n super();\n\n this.name = \"DefaultsError\";\n this.message = msg;\n this.defs = defs;\n }\n}\n\nfunction defaults(args, defs, croak) {\n if (args === true)\n args = {};\n const ret = args || {};\n if (croak) for (const i in ret) if (HOP(ret, i) && !HOP(defs, i))\n throw new DefaultsError(\"`\" + i + \"` is not a supported option\", defs);\n for (const i in defs) if (HOP(defs, i)) {\n if (!args || !HOP(args, i)) {\n ret[i] = defs[i];\n } else if (i === \"ecma\") {\n let ecma = args[i] | 0;\n if (ecma > 5 && ecma < 2015) ecma += 2009;\n ret[i] = ecma;\n } else {\n ret[i] = (args && HOP(args, i)) ? args[i] : defs[i];\n }\n }\n return ret;\n}\n\nfunction noop() {}\nfunction return_false() { return false; }\nfunction return_true() { return true; }\nfunction return_this() { return this; }\nfunction return_null() { return null; }\n\nvar MAP = (function() {\n function MAP(a, f, backwards) {\n var ret = [], top = [], i;\n function doit() {\n var val = f(a[i], i);\n var is_last = val instanceof Last;\n if (is_last) val = val.v;\n if (val instanceof AtTop) {\n val = val.v;\n if (val instanceof Splice) {\n top.push.apply(top, backwards ? val.v.slice().reverse() : val.v);\n } else {\n top.push(val);\n }\n } else if (val !== skip) {\n if (val instanceof Splice) {\n ret.push.apply(ret, backwards ? val.v.slice().reverse() : val.v);\n } else {\n ret.push(val);\n }\n }\n return is_last;\n }\n if (Array.isArray(a)) {\n if (backwards) {\n for (i = a.length; --i >= 0;) if (doit()) break;\n ret.reverse();\n top.reverse();\n } else {\n for (i = 0; i < a.length; ++i) if (doit()) break;\n }\n } else {\n for (i in a) if (HOP(a, i)) if (doit()) break;\n }\n return top.concat(ret);\n }\n MAP.at_top = function(val) { return new AtTop(val); };\n MAP.splice = function(val) { return new Splice(val); };\n MAP.last = function(val) { return new Last(val); };\n var skip = MAP.skip = {};\n function AtTop(val) { this.v = val; }\n function Splice(val) { this.v = val; }\n function Last(val) { this.v = val; }\n return MAP;\n})();\n\nfunction make_node(ctor, orig, props) {\n if (!props) props = {};\n if (orig) {\n if (!props.start) props.start = orig.start;\n if (!props.end) props.end = orig.end;\n }\n return new ctor(props);\n}\n\nfunction push_uniq(array, el) {\n if (!array.includes(el))\n array.push(el);\n}\n\nfunction string_template(text, props) {\n return text.replace(/{(.+?)}/g, function(str, p) {\n return props && props[p];\n });\n}\n\nfunction remove(array, el) {\n for (var i = array.length; --i >= 0;) {\n if (array[i] === el) array.splice(i, 1);\n }\n}\n\nfunction mergeSort(array, cmp) {\n if (array.length < 2) return array.slice();\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n cmp(a[ai], b[bi]) <= 0\n ? r[i++] = a[ai++]\n : r[i++] = b[bi++];\n }\n if (ai < a.length) r.push.apply(r, a.slice(ai));\n if (bi < b.length) r.push.apply(r, b.slice(bi));\n return r;\n }\n function _ms(a) {\n if (a.length <= 1)\n return a;\n var m = Math.floor(a.length / 2), left = a.slice(0, m), right = a.slice(m);\n left = _ms(left);\n right = _ms(right);\n return merge(left, right);\n }\n return _ms(array);\n}\n\nfunction makePredicate(words) {\n if (!Array.isArray(words)) words = words.split(\" \");\n\n return new Set(words);\n}\n\nfunction map_add(map, key, value) {\n if (map.has(key)) {\n map.get(key).push(value);\n } else {\n map.set(key, [ value ]);\n }\n}\n\nfunction map_from_object(obj) {\n var map = new Map();\n for (var key in obj) {\n if (HOP(obj, key) && key.charAt(0) === \"$\") {\n map.set(key.substr(1), obj[key]);\n }\n }\n return map;\n}\n\nfunction map_to_object(map) {\n var obj = Object.create(null);\n map.forEach(function (value, key) {\n obj[\"$\" + key] = value;\n });\n return obj;\n}\n\nfunction HOP(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nfunction keep_name(keep_setting, name) {\n return keep_setting === true\n || (keep_setting instanceof RegExp && keep_setting.test(name));\n}\n\nvar lineTerminatorEscape = {\n \"\\n\": \"n\",\n \"\\r\": \"r\",\n \"\\u2028\": \"u2028\",\n \"\\u2029\": \"u2029\",\n};\nfunction regexp_source_fix(source) {\n // V8 does not escape line terminators in regexp patterns in node 12\n return source.replace(/[\\n\\r\\u2028\\u2029]/g, function (match, offset) {\n var escaped = source[offset - 1] == \"\\\\\"\n && (source[offset - 2] != \"\\\\\"\n || /(?:^|[^\\\\])(?:\\\\{2})*$/.test(source.slice(0, offset - 1)));\n return (escaped ? \"\" : \"\\\\\") + lineTerminatorEscape[match];\n });\n}\n\n// Subset of regexps that is not going to cause regexp based DDOS\n// https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS\nconst re_safe_regexp = /^[\\\\/|\\0\\s\\w^$.[\\]()]*$/;\n\n/** Check if the regexp is safe for Terser to create without risking a RegExp DOS */\nexport const regexp_is_safe = (source) => re_safe_regexp.test(source);\n\nconst all_flags = \"dgimsuy\";\nfunction sort_regexp_flags(flags) {\n const existing_flags = new Set(flags.split(\"\"));\n let out = \"\";\n for (const flag of all_flags) {\n if (existing_flags.has(flag)) {\n out += flag;\n existing_flags.delete(flag);\n }\n }\n if (existing_flags.size) {\n // Flags Terser doesn't know about\n existing_flags.forEach(flag => { out += flag; });\n }\n return out;\n}\n\nfunction has_annotation(node, annotation) {\n return node._annotations & annotation;\n}\n\nfunction set_annotation(node, annotation) {\n node._annotations |= annotation;\n}\n\nexport {\n characters,\n defaults,\n HOP,\n keep_name,\n make_node,\n makePredicate,\n map_add,\n map_from_object,\n map_to_object,\n MAP,\n member,\n mergeSort,\n noop,\n push_uniq,\n regexp_source_fix,\n remove,\n return_false,\n return_null,\n return_this,\n return_true,\n sort_regexp_flags,\n string_template,\n has_annotation,\n set_annotation\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n Parser based on parse-js (http://marijn.haverbeke.nl/parse-js/).\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n characters,\n defaults,\n makePredicate,\n set_annotation,\n} from \"./utils/index.js\";\nimport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_BlockStatement,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_ClassExpression,\n AST_ClassProperty,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_DefClass,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_EmptyStatement,\n AST_Expansion,\n AST_Export,\n AST_False,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_IterationStatement,\n AST_Label,\n AST_LabeledStatement,\n AST_LabelRef,\n AST_Lambda,\n AST_Let,\n AST_NameMapping,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Null,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Sequence,\n AST_SimpleStatement,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SymbolCatch,\n AST_SymbolClass,\n AST_SymbolClassProperty,\n AST_SymbolConst,\n AST_SymbolDeclaration,\n AST_SymbolDefClass,\n AST_SymbolDefun,\n AST_SymbolExport,\n AST_SymbolExportForeign,\n AST_SymbolFunarg,\n AST_SymbolImport,\n AST_SymbolImportForeign,\n AST_SymbolLambda,\n AST_SymbolLet,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_SymbolVar,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Token,\n AST_Toplevel,\n AST_True,\n AST_Try,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n _INLINE,\n _NOINLINE,\n _PURE\n} from \"./ast.js\";\n\nvar KEYWORDS = \"break case catch class const continue debugger default delete do else export extends finally for function if in instanceof let new return switch throw try typeof var void while with\";\nvar KEYWORDS_ATOM = \"false null true\";\nvar RESERVED_WORDS = \"enum implements import interface package private protected public static super this \" + KEYWORDS_ATOM + \" \" + KEYWORDS;\nvar KEYWORDS_BEFORE_EXPRESSION = \"return new delete throw else case yield await\";\n\nKEYWORDS = makePredicate(KEYWORDS);\nRESERVED_WORDS = makePredicate(RESERVED_WORDS);\nKEYWORDS_BEFORE_EXPRESSION = makePredicate(KEYWORDS_BEFORE_EXPRESSION);\nKEYWORDS_ATOM = makePredicate(KEYWORDS_ATOM);\n\nvar OPERATOR_CHARS = makePredicate(characters(\"+-*&%=<>!?|~^\"));\n\nvar RE_NUM_LITERAL = /[0-9a-f]/i;\nvar RE_HEX_NUMBER = /^0x[0-9a-f]+$/i;\nvar RE_OCT_NUMBER = /^0[0-7]+$/;\nvar RE_ES6_OCT_NUMBER = /^0o[0-7]+$/i;\nvar RE_BIN_NUMBER = /^0b[01]+$/i;\nvar RE_DEC_NUMBER = /^\\d*\\.?\\d*(?:e[+-]?\\d*(?:\\d\\.?|\\.?\\d)\\d*)?$/i;\nvar RE_BIG_INT = /^(0[xob])?[0-9a-f]+n$/i;\n\nvar OPERATORS = makePredicate([\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"new\",\n \"void\",\n \"delete\",\n \"++\",\n \"--\",\n \"+\",\n \"-\",\n \"!\",\n \"~\",\n \"&\",\n \"|\",\n \"^\",\n \"*\",\n \"**\",\n \"/\",\n \"%\",\n \">>\",\n \"<<\",\n \">>>\",\n \"<\",\n \">\",\n \"<=\",\n \">=\",\n \"==\",\n \"===\",\n \"!=\",\n \"!==\",\n \"?\",\n \"=\",\n \"+=\",\n \"-=\",\n \"/=\",\n \"*=\",\n \"**=\",\n \"%=\",\n \">>=\",\n \"<<=\",\n \">>>=\",\n \"|=\",\n \"^=\",\n \"&=\",\n \"&&\",\n \"??\",\n \"||\",\n]);\n\nvar WHITESPACE_CHARS = makePredicate(characters(\" \\u00a0\\n\\r\\t\\f\\u000b\\u200b\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\uFEFF\"));\n\nvar NEWLINE_CHARS = makePredicate(characters(\"\\n\\r\\u2028\\u2029\"));\n\nvar PUNC_AFTER_EXPRESSION = makePredicate(characters(\";]),:\"));\n\nvar PUNC_BEFORE_EXPRESSION = makePredicate(characters(\"[{(,;:\"));\n\nvar PUNC_CHARS = makePredicate(characters(\"[]{}(),;:\"));\n\n/* -----[ Tokenizer ]----- */\n\n// surrogate safe regexps adapted from https://github.com/mathiasbynens/unicode-8.0.0/tree/89b412d8a71ecca9ed593d9e9fa073ab64acfebe/Binary_Property\nvar UNICODE = {\n ID_Start: /[$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n ID_Continue: /(?:[$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\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-\\u08B4\\u08E3-\\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\\u0AF9\\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-\\u0C5A\\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\\u0D5F-\\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\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\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-\\u19DA\\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\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\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\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\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-\\uAB65\\uAB70-\\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-\\uFE2F\\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]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF])+/,\n};\n\nfunction get_full_char(str, pos) {\n if (is_surrogate_pair_head(str.charCodeAt(pos))) {\n if (is_surrogate_pair_tail(str.charCodeAt(pos + 1))) {\n return str.charAt(pos) + str.charAt(pos + 1);\n }\n } else if (is_surrogate_pair_tail(str.charCodeAt(pos))) {\n if (is_surrogate_pair_head(str.charCodeAt(pos - 1))) {\n return str.charAt(pos - 1) + str.charAt(pos);\n }\n }\n return str.charAt(pos);\n}\n\nfunction get_full_char_code(str, pos) {\n // https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n if (is_surrogate_pair_head(str.charCodeAt(pos))) {\n return 0x10000 + (str.charCodeAt(pos) - 0xd800 << 10) + str.charCodeAt(pos + 1) - 0xdc00;\n }\n return str.charCodeAt(pos);\n}\n\nfunction get_full_char_length(str) {\n var surrogates = 0;\n\n for (var i = 0; i < str.length; i++) {\n if (is_surrogate_pair_head(str.charCodeAt(i)) && is_surrogate_pair_tail(str.charCodeAt(i + 1))) {\n surrogates++;\n i++;\n }\n }\n\n return str.length - surrogates;\n}\n\nfunction from_char_code(code) {\n // Based on https://github.com/mathiasbynens/String.fromCodePoint/blob/master/fromcodepoint.js\n if (code > 0xFFFF) {\n code -= 0x10000;\n return (String.fromCharCode((code >> 10) + 0xD800) +\n String.fromCharCode((code % 0x400) + 0xDC00));\n }\n return String.fromCharCode(code);\n}\n\nfunction is_surrogate_pair_head(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction is_surrogate_pair_tail(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n\nfunction is_digit(code) {\n return code >= 48 && code <= 57;\n}\n\nfunction is_identifier_start(ch) {\n return UNICODE.ID_Start.test(ch);\n}\n\nfunction is_identifier_char(ch) {\n return UNICODE.ID_Continue.test(ch);\n}\n\nfunction is_basic_identifier_string(str) {\n return /^[a-z_$][a-z0-9_$]*$/i.test(str);\n}\n\nfunction is_identifier_string(str, allow_surrogates) {\n if (/^[a-z_$][a-z0-9_$]*$/i.test(str)) {\n return true;\n }\n if (!allow_surrogates && /[\\ud800-\\udfff]/.test(str)) {\n return false;\n }\n var match = UNICODE.ID_Start.exec(str);\n if (!match || match.index !== 0) {\n return false;\n }\n\n str = str.slice(match[0].length);\n if (!str) {\n return true;\n }\n\n match = UNICODE.ID_Continue.exec(str);\n return !!match && match[0].length === str.length;\n}\n\nfunction parse_js_number(num, allow_e = true) {\n if (!allow_e && num.includes(\"e\")) {\n return NaN;\n }\n if (RE_HEX_NUMBER.test(num)) {\n return parseInt(num.substr(2), 16);\n } else if (RE_OCT_NUMBER.test(num)) {\n return parseInt(num.substr(1), 8);\n } else if (RE_ES6_OCT_NUMBER.test(num)) {\n return parseInt(num.substr(2), 8);\n } else if (RE_BIN_NUMBER.test(num)) {\n return parseInt(num.substr(2), 2);\n } else if (RE_DEC_NUMBER.test(num)) {\n return parseFloat(num);\n } else {\n var val = parseFloat(num);\n if (val == num) return val;\n }\n}\n\nclass JS_Parse_Error extends Error {\n constructor(message, filename, line, col, pos) {\n super();\n\n this.name = \"SyntaxError\";\n this.message = message;\n this.filename = filename;\n this.line = line;\n this.col = col;\n this.pos = pos;\n }\n}\n\nfunction js_error(message, filename, line, col, pos) {\n throw new JS_Parse_Error(message, filename, line, col, pos);\n}\n\nfunction is_token(token, type, val) {\n return token.type == type && (val == null || token.value == val);\n}\n\nvar EX_EOF = {};\n\nfunction tokenizer($TEXT, filename, html5_comments, shebang) {\n var S = {\n text : $TEXT,\n filename : filename,\n pos : 0,\n tokpos : 0,\n line : 1,\n tokline : 0,\n col : 0,\n tokcol : 0,\n newline_before : false,\n regex_allowed : false,\n brace_counter : 0,\n template_braces : [],\n comments_before : [],\n directives : {},\n directive_stack : []\n };\n\n function peek() { return get_full_char(S.text, S.pos); }\n\n function next(signal_eof, in_string) {\n var ch = get_full_char(S.text, S.pos++);\n if (signal_eof && !ch)\n throw EX_EOF;\n if (NEWLINE_CHARS.has(ch)) {\n S.newline_before = S.newline_before || !in_string;\n ++S.line;\n S.col = 0;\n if (ch == \"\\r\" && peek() == \"\\n\") {\n // treat a \\r\\n sequence as a single \\n\n ++S.pos;\n ch = \"\\n\";\n }\n } else {\n if (ch.length > 1) {\n ++S.pos;\n ++S.col;\n }\n ++S.col;\n }\n return ch;\n }\n\n function forward(i) {\n while (i--) next();\n }\n\n function looking_at(str) {\n return S.text.substr(S.pos, str.length) == str;\n }\n\n function find_eol() {\n var text = S.text;\n for (var i = S.pos, n = S.text.length; i < n; ++i) {\n var ch = text[i];\n if (NEWLINE_CHARS.has(ch))\n return i;\n }\n return -1;\n }\n\n function find(what, signal_eof) {\n var pos = S.text.indexOf(what, S.pos);\n if (signal_eof && pos == -1) throw EX_EOF;\n return pos;\n }\n\n function start_token() {\n S.tokline = S.line;\n S.tokcol = S.col;\n S.tokpos = S.pos;\n }\n\n var prev_was_dot = false;\n var previous_token = null;\n function token(type, value, is_comment) {\n S.regex_allowed = ((type == \"operator\" && !UNARY_POSTFIX.has(value)) ||\n (type == \"keyword\" && KEYWORDS_BEFORE_EXPRESSION.has(value)) ||\n (type == \"punc\" && PUNC_BEFORE_EXPRESSION.has(value))) ||\n (type == \"arrow\");\n if (type == \"punc\" && value == \".\") {\n prev_was_dot = true;\n } else if (!is_comment) {\n prev_was_dot = false;\n }\n var ret = {\n type : type,\n value : value,\n line : S.tokline,\n col : S.tokcol,\n pos : S.tokpos,\n endline : S.line,\n endcol : S.col,\n endpos : S.pos,\n nlb : S.newline_before,\n file : filename\n };\n if (/^(?:num|string|regexp)$/i.test(type)) {\n ret.raw = $TEXT.substring(ret.pos, ret.endpos);\n }\n if (!is_comment) {\n ret.comments_before = S.comments_before;\n ret.comments_after = S.comments_before = [];\n }\n S.newline_before = false;\n ret = new AST_Token(ret);\n if (!is_comment) previous_token = ret;\n return ret;\n }\n\n function skip_whitespace() {\n while (WHITESPACE_CHARS.has(peek()))\n next();\n }\n\n function read_while(pred) {\n var ret = \"\", ch, i = 0;\n while ((ch = peek()) && pred(ch, i++))\n ret += next();\n return ret;\n }\n\n function parse_error(err) {\n js_error(err, filename, S.tokline, S.tokcol, S.tokpos);\n }\n\n function read_num(prefix) {\n var has_e = false, after_e = false, has_x = false, has_dot = prefix == \".\", is_big_int = false, numeric_separator = false;\n var num = read_while(function(ch, i) {\n if (is_big_int) return false;\n\n var code = ch.charCodeAt(0);\n switch (code) {\n case 95: // _\n return (numeric_separator = true);\n case 98: case 66: // bB\n return (has_x = true); // Can occur in hex sequence, don't return false yet\n case 111: case 79: // oO\n case 120: case 88: // xX\n return has_x ? false : (has_x = true);\n case 101: case 69: // eE\n return has_x ? true : has_e ? false : (has_e = after_e = true);\n case 45: // -\n return after_e || (i == 0 && !prefix);\n case 43: // +\n return after_e;\n case (after_e = false, 46): // .\n return (!has_dot && !has_x && !has_e) ? (has_dot = true) : false;\n }\n\n if (ch === \"n\") {\n is_big_int = true;\n\n return true;\n }\n\n return RE_NUM_LITERAL.test(ch);\n });\n if (prefix) num = prefix + num;\n if (RE_OCT_NUMBER.test(num) && next_token.has_directive(\"use strict\")) {\n parse_error(\"Legacy octal literals are not allowed in strict mode\");\n }\n if (numeric_separator) {\n if (num.endsWith(\"_\")) {\n parse_error(\"Numeric separators are not allowed at the end of numeric literals\");\n } else if (num.includes(\"__\")) {\n parse_error(\"Only one underscore is allowed as numeric separator\");\n }\n num = num.replace(/_/g, \"\");\n }\n if (num.endsWith(\"n\")) {\n const without_n = num.slice(0, -1);\n const allow_e = RE_HEX_NUMBER.test(without_n);\n const valid = parse_js_number(without_n, allow_e);\n if (!has_dot && RE_BIG_INT.test(num) && !isNaN(valid))\n return token(\"big_int\", without_n);\n parse_error(\"Invalid or unexpected token\");\n }\n var valid = parse_js_number(num);\n if (!isNaN(valid)) {\n return token(\"num\", valid);\n } else {\n parse_error(\"Invalid syntax: \" + num);\n }\n }\n\n function is_octal(ch) {\n return ch >= \"0\" && ch <= \"7\";\n }\n\n function read_escaped_char(in_string, strict_hex, template_string) {\n var ch = next(true, in_string);\n switch (ch.charCodeAt(0)) {\n case 110 : return \"\\n\";\n case 114 : return \"\\r\";\n case 116 : return \"\\t\";\n case 98 : return \"\\b\";\n case 118 : return \"\\u000b\"; // \\v\n case 102 : return \"\\f\";\n case 120 : return String.fromCharCode(hex_bytes(2, strict_hex)); // \\x\n case 117 : // \\u\n if (peek() == \"{\") {\n next(true);\n if (peek() === \"}\")\n parse_error(\"Expecting hex-character between {}\");\n while (peek() == \"0\") next(true); // No significance\n var result, length = find(\"}\", true) - S.pos;\n // Avoid 32 bit integer overflow (1 << 32 === 1)\n // We know first character isn't 0 and thus out of range anyway\n if (length > 6 || (result = hex_bytes(length, strict_hex)) > 0x10FFFF) {\n parse_error(\"Unicode reference out of bounds\");\n }\n next(true);\n return from_char_code(result);\n }\n return String.fromCharCode(hex_bytes(4, strict_hex));\n case 10 : return \"\"; // newline\n case 13 : // \\r\n if (peek() == \"\\n\") { // DOS newline\n next(true, in_string);\n return \"\";\n }\n }\n if (is_octal(ch)) {\n if (template_string && strict_hex) {\n const represents_null_character = ch === \"0\" && !is_octal(peek());\n if (!represents_null_character) {\n parse_error(\"Octal escape sequences are not allowed in template strings\");\n }\n }\n return read_octal_escape_sequence(ch, strict_hex);\n }\n return ch;\n }\n\n function read_octal_escape_sequence(ch, strict_octal) {\n // Read\n var p = peek();\n if (p >= \"0\" && p <= \"7\") {\n ch += next(true);\n if (ch[0] <= \"3\" && (p = peek()) >= \"0\" && p <= \"7\")\n ch += next(true);\n }\n\n // Parse\n if (ch === \"0\") return \"\\0\";\n if (ch.length > 0 && next_token.has_directive(\"use strict\") && strict_octal)\n parse_error(\"Legacy octal escape sequences are not allowed in strict mode\");\n return String.fromCharCode(parseInt(ch, 8));\n }\n\n function hex_bytes(n, strict_hex) {\n var num = 0;\n for (; n > 0; --n) {\n if (!strict_hex && isNaN(parseInt(peek(), 16))) {\n return parseInt(num, 16) || \"\";\n }\n var digit = next(true);\n if (isNaN(parseInt(digit, 16)))\n parse_error(\"Invalid hex-character pattern in string\");\n num += digit;\n }\n return parseInt(num, 16);\n }\n\n var read_string = with_eof_error(\"Unterminated string constant\", function() {\n var quote = next(), ret = \"\";\n for (;;) {\n var ch = next(true, true);\n if (ch == \"\\\\\") ch = read_escaped_char(true, true);\n else if (ch == \"\\r\" || ch == \"\\n\") parse_error(\"Unterminated string constant\");\n else if (ch == quote) break;\n ret += ch;\n }\n var tok = token(\"string\", ret);\n tok.quote = quote;\n return tok;\n });\n\n var read_template_characters = with_eof_error(\"Unterminated template\", function(begin) {\n if (begin) {\n S.template_braces.push(S.brace_counter);\n }\n var content = \"\", raw = \"\", ch, tok;\n next(true, true);\n while ((ch = next(true, true)) != \"`\") {\n if (ch == \"\\r\") {\n if (peek() == \"\\n\") ++S.pos;\n ch = \"\\n\";\n } else if (ch == \"$\" && peek() == \"{\") {\n next(true, true);\n S.brace_counter++;\n tok = token(begin ? \"template_head\" : \"template_substitution\", content);\n tok.raw = raw;\n return tok;\n }\n\n raw += ch;\n if (ch == \"\\\\\") {\n var tmp = S.pos;\n var prev_is_tag = previous_token && (previous_token.type === \"name\" || previous_token.type === \"punc\" && (previous_token.value === \")\" || previous_token.value === \"]\"));\n ch = read_escaped_char(true, !prev_is_tag, true);\n raw += S.text.substr(tmp, S.pos - tmp);\n }\n\n content += ch;\n }\n S.template_braces.pop();\n tok = token(begin ? \"template_head\" : \"template_substitution\", content);\n tok.raw = raw;\n tok.end = true;\n return tok;\n });\n\n function skip_line_comment(type) {\n var regex_allowed = S.regex_allowed;\n var i = find_eol(), ret;\n if (i == -1) {\n ret = S.text.substr(S.pos);\n S.pos = S.text.length;\n } else {\n ret = S.text.substring(S.pos, i);\n S.pos = i;\n }\n S.col = S.tokcol + (S.pos - S.tokpos);\n S.comments_before.push(token(type, ret, true));\n S.regex_allowed = regex_allowed;\n return next_token;\n }\n\n var skip_multiline_comment = with_eof_error(\"Unterminated multiline comment\", function() {\n var regex_allowed = S.regex_allowed;\n var i = find(\"*/\", true);\n var text = S.text.substring(S.pos, i).replace(/\\r\\n|\\r|\\u2028|\\u2029/g, \"\\n\");\n // update stream position\n forward(get_full_char_length(text) /* text length doesn't count \\r\\n as 2 char while S.pos - i does */ + 2);\n S.comments_before.push(token(\"comment2\", text, true));\n S.newline_before = S.newline_before || text.includes(\"\\n\");\n S.regex_allowed = regex_allowed;\n return next_token;\n });\n\n var read_name = with_eof_error(\"Unterminated identifier name\", function() {\n var name, ch, escaped = false;\n var read_escaped_identifier_char = function() {\n escaped = true;\n next();\n if (peek() !== \"u\") {\n parse_error(\"Expecting UnicodeEscapeSequence -- uXXXX or u{XXXX}\");\n }\n return read_escaped_char(false, true);\n };\n\n // Read first character (ID_Start)\n if ((name = peek()) === \"\\\\\") {\n name = read_escaped_identifier_char();\n if (!is_identifier_start(name)) {\n parse_error(\"First identifier char is an invalid identifier char\");\n }\n } else if (is_identifier_start(name)) {\n next();\n } else {\n return \"\";\n }\n\n // Read ID_Continue\n while ((ch = peek()) != null) {\n if ((ch = peek()) === \"\\\\\") {\n ch = read_escaped_identifier_char();\n if (!is_identifier_char(ch)) {\n parse_error(\"Invalid escaped identifier char\");\n }\n } else {\n if (!is_identifier_char(ch)) {\n break;\n }\n next();\n }\n name += ch;\n }\n if (RESERVED_WORDS.has(name) && escaped) {\n parse_error(\"Escaped characters are not allowed in keywords\");\n }\n return name;\n });\n\n var read_regexp = with_eof_error(\"Unterminated regular expression\", function(source) {\n var prev_backslash = false, ch, in_class = false;\n while ((ch = next(true))) if (NEWLINE_CHARS.has(ch)) {\n parse_error(\"Unexpected line terminator\");\n } else if (prev_backslash) {\n source += \"\\\\\" + ch;\n prev_backslash = false;\n } else if (ch == \"[\") {\n in_class = true;\n source += ch;\n } else if (ch == \"]\" && in_class) {\n in_class = false;\n source += ch;\n } else if (ch == \"/\" && !in_class) {\n break;\n } else if (ch == \"\\\\\") {\n prev_backslash = true;\n } else {\n source += ch;\n }\n const flags = read_name();\n return token(\"regexp\", { source, flags });\n });\n\n function read_operator(prefix) {\n function grow(op) {\n if (!peek()) return op;\n var bigger = op + peek();\n if (OPERATORS.has(bigger)) {\n next();\n return grow(bigger);\n } else {\n return op;\n }\n }\n return token(\"operator\", grow(prefix || next()));\n }\n\n function handle_slash() {\n next();\n switch (peek()) {\n case \"/\":\n next();\n return skip_line_comment(\"comment1\");\n case \"*\":\n next();\n return skip_multiline_comment();\n }\n return S.regex_allowed ? read_regexp(\"\") : read_operator(\"/\");\n }\n\n function handle_eq_sign() {\n next();\n if (peek() === \">\") {\n next();\n return token(\"arrow\", \"=>\");\n } else {\n return read_operator(\"=\");\n }\n }\n\n function handle_dot() {\n next();\n if (is_digit(peek().charCodeAt(0))) {\n return read_num(\".\");\n }\n if (peek() === \".\") {\n next(); // Consume second dot\n next(); // Consume third dot\n return token(\"expand\", \"...\");\n }\n\n return token(\"punc\", \".\");\n }\n\n function read_word() {\n var word = read_name();\n if (prev_was_dot) return token(\"name\", word);\n return KEYWORDS_ATOM.has(word) ? token(\"atom\", word)\n : !KEYWORDS.has(word) ? token(\"name\", word)\n : OPERATORS.has(word) ? token(\"operator\", word)\n : token(\"keyword\", word);\n }\n\n function with_eof_error(eof_error, cont) {\n return function(x) {\n try {\n return cont(x);\n } catch(ex) {\n if (ex === EX_EOF) parse_error(eof_error);\n else throw ex;\n }\n };\n }\n\n function next_token(force_regexp) {\n if (force_regexp != null)\n return read_regexp(force_regexp);\n if (shebang && S.pos == 0 && looking_at(\"#!\")) {\n start_token();\n forward(2);\n skip_line_comment(\"comment5\");\n }\n for (;;) {\n skip_whitespace();\n start_token();\n if (html5_comments) {\n if (looking_at(\"\") && S.newline_before) {\n forward(3);\n skip_line_comment(\"comment4\");\n continue;\n }\n }\n var ch = peek();\n if (!ch) return token(\"eof\");\n var code = ch.charCodeAt(0);\n switch (code) {\n case 34: case 39: return read_string();\n case 46: return handle_dot();\n case 47: {\n var tok = handle_slash();\n if (tok === next_token) continue;\n return tok;\n }\n case 61: return handle_eq_sign();\n case 96: return read_template_characters(true);\n case 123:\n S.brace_counter++;\n break;\n case 125:\n S.brace_counter--;\n if (S.template_braces.length > 0\n && S.template_braces[S.template_braces.length - 1] === S.brace_counter)\n return read_template_characters(false);\n break;\n }\n if (is_digit(code)) return read_num();\n if (PUNC_CHARS.has(ch)) return token(\"punc\", next());\n if (OPERATOR_CHARS.has(ch)) return read_operator();\n if (code == 92 || is_identifier_start(ch)) return read_word();\n break;\n }\n parse_error(\"Unexpected character '\" + ch + \"'\");\n }\n\n next_token.next = next;\n next_token.peek = peek;\n\n next_token.context = function(nc) {\n if (nc) S = nc;\n return S;\n };\n\n next_token.add_directive = function(directive) {\n S.directive_stack[S.directive_stack.length - 1].push(directive);\n\n if (S.directives[directive] === undefined) {\n S.directives[directive] = 1;\n } else {\n S.directives[directive]++;\n }\n };\n\n next_token.push_directives_stack = function() {\n S.directive_stack.push([]);\n };\n\n next_token.pop_directives_stack = function() {\n var directives = S.directive_stack[S.directive_stack.length - 1];\n\n for (var i = 0; i < directives.length; i++) {\n S.directives[directives[i]]--;\n }\n\n S.directive_stack.pop();\n };\n\n next_token.has_directive = function(directive) {\n return S.directives[directive] > 0;\n };\n\n return next_token;\n\n}\n\n/* -----[ Parser (constants) ]----- */\n\nvar UNARY_PREFIX = makePredicate([\n \"typeof\",\n \"void\",\n \"delete\",\n \"--\",\n \"++\",\n \"!\",\n \"~\",\n \"-\",\n \"+\"\n]);\n\nvar UNARY_POSTFIX = makePredicate([ \"--\", \"++\" ]);\n\nvar ASSIGNMENT = makePredicate([ \"=\", \"+=\", \"-=\", \"/=\", \"*=\", \"**=\", \"%=\", \">>=\", \"<<=\", \">>>=\", \"|=\", \"^=\", \"&=\" ]);\n\nvar PRECEDENCE = (function(a, ret) {\n for (var i = 0; i < a.length; ++i) {\n var b = a[i];\n for (var j = 0; j < b.length; ++j) {\n ret[b[j]] = i + 1;\n }\n }\n return ret;\n})(\n [\n [\"||\"],\n [\"??\"],\n [\"&&\"],\n [\"|\"],\n [\"^\"],\n [\"&\"],\n [\"==\", \"===\", \"!=\", \"!==\"],\n [\"<\", \">\", \"<=\", \">=\", \"in\", \"instanceof\"],\n [\">>\", \"<<\", \">>>\"],\n [\"+\", \"-\"],\n [\"*\", \"/\", \"%\"],\n [\"**\"]\n ],\n {}\n);\n\nvar ATOMIC_START_TOKEN = makePredicate([ \"atom\", \"num\", \"big_int\", \"string\", \"regexp\", \"name\" ]);\n\n/* -----[ Parser ]----- */\n\nfunction parse($TEXT, options) {\n // maps start tokens to count of comments found outside of their parens\n // Example: /* I count */ ( /* I don't */ foo() )\n // Useful because comments_before property of call with parens outside\n // contains both comments inside and outside these parens. Used to find the\n // right #__PURE__ comments for an expression\n const outer_comments_before_counts = new Map();\n\n options = defaults(options, {\n bare_returns : false,\n ecma : 2017,\n expression : false,\n filename : null,\n html5_comments : true,\n module : false,\n shebang : true,\n strict : false,\n toplevel : null,\n }, true);\n\n var S = {\n input : (typeof $TEXT == \"string\"\n ? tokenizer($TEXT, options.filename,\n options.html5_comments, options.shebang)\n : $TEXT),\n token : null,\n prev : null,\n peeked : null,\n in_function : 0,\n in_async : -1,\n in_generator : -1,\n in_directives : true,\n in_loop : 0,\n labels : []\n };\n\n S.token = next();\n\n function is(type, value) {\n return is_token(S.token, type, value);\n }\n\n function peek() { return S.peeked || (S.peeked = S.input()); }\n\n function next() {\n S.prev = S.token;\n\n if (!S.peeked) peek();\n S.token = S.peeked;\n S.peeked = null;\n S.in_directives = S.in_directives && (\n S.token.type == \"string\" || is(\"punc\", \";\")\n );\n return S.token;\n }\n\n function prev() {\n return S.prev;\n }\n\n function croak(msg, line, col, pos) {\n var ctx = S.input.context();\n js_error(msg,\n ctx.filename,\n line != null ? line : ctx.tokline,\n col != null ? col : ctx.tokcol,\n pos != null ? pos : ctx.tokpos);\n }\n\n function token_error(token, msg) {\n croak(msg, token.line, token.col);\n }\n\n function unexpected(token) {\n if (token == null)\n token = S.token;\n token_error(token, \"Unexpected token: \" + token.type + \" (\" + token.value + \")\");\n }\n\n function expect_token(type, val) {\n if (is(type, val)) {\n return next();\n }\n token_error(S.token, \"Unexpected token \" + S.token.type + \" «\" + S.token.value + \"»\" + \", expected \" + type + \" «\" + val + \"»\");\n }\n\n function expect(punc) { return expect_token(\"punc\", punc); }\n\n function has_newline_before(token) {\n return token.nlb || !token.comments_before.every((comment) => !comment.nlb);\n }\n\n function can_insert_semicolon() {\n return !options.strict\n && (is(\"eof\") || is(\"punc\", \"}\") || has_newline_before(S.token));\n }\n\n function is_in_generator() {\n return S.in_generator === S.in_function;\n }\n\n function is_in_async() {\n return S.in_async === S.in_function;\n }\n\n function semicolon(optional) {\n if (is(\"punc\", \";\")) next();\n else if (!optional && !can_insert_semicolon()) unexpected();\n }\n\n function parenthesised() {\n expect(\"(\");\n var exp = expression(true);\n expect(\")\");\n return exp;\n }\n\n function embed_tokens(parser) {\n return function(...args) {\n const start = S.token;\n const expr = parser(...args);\n expr.start = start;\n expr.end = prev();\n return expr;\n };\n }\n\n function handle_regexp() {\n if (is(\"operator\", \"/\") || is(\"operator\", \"/=\")) {\n S.peeked = null;\n S.token = S.input(S.token.value.substr(1)); // force regexp\n }\n }\n\n var statement = embed_tokens(function(is_export_default, is_for_body, is_if_body) {\n handle_regexp();\n switch (S.token.type) {\n case \"string\":\n if (S.in_directives) {\n var token = peek();\n if (!S.token.raw.includes(\"\\\\\")\n && (is_token(token, \"punc\", \";\")\n || is_token(token, \"punc\", \"}\")\n || has_newline_before(token)\n || is_token(token, \"eof\"))) {\n S.input.add_directive(S.token.value);\n } else {\n S.in_directives = false;\n }\n }\n var dir = S.in_directives, stat = simple_statement();\n return dir && stat.body instanceof AST_String ? new AST_Directive(stat.body) : stat;\n case \"template_head\":\n case \"num\":\n case \"big_int\":\n case \"regexp\":\n case \"operator\":\n case \"atom\":\n return simple_statement();\n\n case \"name\":\n if (S.token.value == \"async\" && is_token(peek(), \"keyword\", \"function\")) {\n next();\n next();\n if (is_for_body) {\n croak(\"functions are not allowed as the body of a loop\");\n }\n return function_(AST_Defun, false, true, is_export_default);\n }\n if (S.token.value == \"import\" && !is_token(peek(), \"punc\", \"(\")) {\n next();\n var node = import_();\n semicolon();\n return node;\n }\n return is_token(peek(), \"punc\", \":\")\n ? labeled_statement()\n : simple_statement();\n\n case \"punc\":\n switch (S.token.value) {\n case \"{\":\n return new AST_BlockStatement({\n start : S.token,\n body : block_(),\n end : prev()\n });\n case \"[\":\n case \"(\":\n return simple_statement();\n case \";\":\n S.in_directives = false;\n next();\n return new AST_EmptyStatement();\n default:\n unexpected();\n }\n\n case \"keyword\":\n switch (S.token.value) {\n case \"break\":\n next();\n return break_cont(AST_Break);\n\n case \"continue\":\n next();\n return break_cont(AST_Continue);\n\n case \"debugger\":\n next();\n semicolon();\n return new AST_Debugger();\n\n case \"do\":\n next();\n var body = in_loop(statement);\n expect_token(\"keyword\", \"while\");\n var condition = parenthesised();\n semicolon(true);\n return new AST_Do({\n body : body,\n condition : condition\n });\n\n case \"while\":\n next();\n return new AST_While({\n condition : parenthesised(),\n body : in_loop(function() { return statement(false, true); })\n });\n\n case \"for\":\n next();\n return for_();\n\n case \"class\":\n next();\n if (is_for_body) {\n croak(\"classes are not allowed as the body of a loop\");\n }\n if (is_if_body) {\n croak(\"classes are not allowed as the body of an if\");\n }\n return class_(AST_DefClass);\n\n case \"function\":\n next();\n if (is_for_body) {\n croak(\"functions are not allowed as the body of a loop\");\n }\n return function_(AST_Defun, false, false, is_export_default);\n\n case \"if\":\n next();\n return if_();\n\n case \"return\":\n if (S.in_function == 0 && !options.bare_returns)\n croak(\"'return' outside of function\");\n next();\n var value = null;\n if (is(\"punc\", \";\")) {\n next();\n } else if (!can_insert_semicolon()) {\n value = expression(true);\n semicolon();\n }\n return new AST_Return({\n value: value\n });\n\n case \"switch\":\n next();\n return new AST_Switch({\n expression : parenthesised(),\n body : in_loop(switch_body_)\n });\n\n case \"throw\":\n next();\n if (has_newline_before(S.token))\n croak(\"Illegal newline after 'throw'\");\n var value = expression(true);\n semicolon();\n return new AST_Throw({\n value: value\n });\n\n case \"try\":\n next();\n return try_();\n\n case \"var\":\n next();\n var node = var_();\n semicolon();\n return node;\n\n case \"let\":\n next();\n var node = let_();\n semicolon();\n return node;\n\n case \"const\":\n next();\n var node = const_();\n semicolon();\n return node;\n\n case \"with\":\n if (S.input.has_directive(\"use strict\")) {\n croak(\"Strict mode may not include a with statement\");\n }\n next();\n return new AST_With({\n expression : parenthesised(),\n body : statement()\n });\n\n case \"export\":\n if (!is_token(peek(), \"punc\", \"(\")) {\n next();\n var node = export_();\n if (is(\"punc\", \";\")) semicolon();\n return node;\n }\n }\n }\n unexpected();\n });\n\n function labeled_statement() {\n var label = as_symbol(AST_Label);\n if (label.name === \"await\" && is_in_async()) {\n token_error(S.prev, \"await cannot be used as label inside async function\");\n }\n if (S.labels.some((l) => l.name === label.name)) {\n // ECMA-262, 12.12: An ECMAScript program is considered\n // syntactically incorrect if it contains a\n // LabelledStatement that is enclosed by a\n // LabelledStatement with the same Identifier as label.\n croak(\"Label \" + label.name + \" defined twice\");\n }\n expect(\":\");\n S.labels.push(label);\n var stat = statement();\n S.labels.pop();\n if (!(stat instanceof AST_IterationStatement)) {\n // check for `continue` that refers to this label.\n // those should be reported as syntax errors.\n // https://github.com/mishoo/UglifyJS2/issues/287\n label.references.forEach(function(ref) {\n if (ref instanceof AST_Continue) {\n ref = ref.label.start;\n croak(\"Continue label `\" + label.name + \"` refers to non-IterationStatement.\",\n ref.line, ref.col, ref.pos);\n }\n });\n }\n return new AST_LabeledStatement({ body: stat, label: label });\n }\n\n function simple_statement(tmp) {\n return new AST_SimpleStatement({ body: (tmp = expression(true), semicolon(), tmp) });\n }\n\n function break_cont(type) {\n var label = null, ldef;\n if (!can_insert_semicolon()) {\n label = as_symbol(AST_LabelRef, true);\n }\n if (label != null) {\n ldef = S.labels.find((l) => l.name === label.name);\n if (!ldef)\n croak(\"Undefined label \" + label.name);\n label.thedef = ldef;\n } else if (S.in_loop == 0)\n croak(type.TYPE + \" not inside a loop or switch\");\n semicolon();\n var stat = new type({ label: label });\n if (ldef) ldef.references.push(stat);\n return stat;\n }\n\n function for_() {\n var for_await_error = \"`for await` invalid in this context\";\n var await_tok = S.token;\n if (await_tok.type == \"name\" && await_tok.value == \"await\") {\n if (!is_in_async()) {\n token_error(await_tok, for_await_error);\n }\n next();\n } else {\n await_tok = false;\n }\n expect(\"(\");\n var init = null;\n if (!is(\"punc\", \";\")) {\n init =\n is(\"keyword\", \"var\") ? (next(), var_(true)) :\n is(\"keyword\", \"let\") ? (next(), let_(true)) :\n is(\"keyword\", \"const\") ? (next(), const_(true)) :\n expression(true, true);\n var is_in = is(\"operator\", \"in\");\n var is_of = is(\"name\", \"of\");\n if (await_tok && !is_of) {\n token_error(await_tok, for_await_error);\n }\n if (is_in || is_of) {\n if (init instanceof AST_Definitions) {\n if (init.definitions.length > 1)\n token_error(init.start, \"Only one variable declaration allowed in for..in loop\");\n } else if (!(is_assignable(init) || (init = to_destructuring(init)) instanceof AST_Destructuring)) {\n token_error(init.start, \"Invalid left-hand side in for..in loop\");\n }\n next();\n if (is_in) {\n return for_in(init);\n } else {\n return for_of(init, !!await_tok);\n }\n }\n } else if (await_tok) {\n token_error(await_tok, for_await_error);\n }\n return regular_for(init);\n }\n\n function regular_for(init) {\n expect(\";\");\n var test = is(\"punc\", \";\") ? null : expression(true);\n expect(\";\");\n var step = is(\"punc\", \")\") ? null : expression(true);\n expect(\")\");\n return new AST_For({\n init : init,\n condition : test,\n step : step,\n body : in_loop(function() { return statement(false, true); })\n });\n }\n\n function for_of(init, is_await) {\n var lhs = init instanceof AST_Definitions ? init.definitions[0].name : null;\n var obj = expression(true);\n expect(\")\");\n return new AST_ForOf({\n await : is_await,\n init : init,\n name : lhs,\n object : obj,\n body : in_loop(function() { return statement(false, true); })\n });\n }\n\n function for_in(init) {\n var obj = expression(true);\n expect(\")\");\n return new AST_ForIn({\n init : init,\n object : obj,\n body : in_loop(function() { return statement(false, true); })\n });\n }\n\n var arrow_function = function(start, argnames, is_async) {\n if (has_newline_before(S.token)) {\n croak(\"Unexpected newline before arrow (=>)\");\n }\n\n expect_token(\"arrow\", \"=>\");\n\n var body = _function_body(is(\"punc\", \"{\"), false, is_async);\n\n var end =\n body instanceof Array && body.length ? body[body.length - 1].end :\n body instanceof Array ? start :\n body.end;\n\n return new AST_Arrow({\n start : start,\n end : end,\n async : is_async,\n argnames : argnames,\n body : body\n });\n };\n\n var function_ = function(ctor, is_generator_property, is_async, is_export_default) {\n var in_statement = ctor === AST_Defun;\n var is_generator = is(\"operator\", \"*\");\n if (is_generator) {\n next();\n }\n\n var name = is(\"name\") ? as_symbol(in_statement ? AST_SymbolDefun : AST_SymbolLambda) : null;\n if (in_statement && !name) {\n if (is_export_default) {\n ctor = AST_Function;\n } else {\n unexpected();\n }\n }\n\n if (name && ctor !== AST_Accessor && !(name instanceof AST_SymbolDeclaration))\n unexpected(prev());\n\n var args = [];\n var body = _function_body(true, is_generator || is_generator_property, is_async, name, args);\n return new ctor({\n start : args.start,\n end : body.end,\n is_generator: is_generator,\n async : is_async,\n name : name,\n argnames: args,\n body : body\n });\n };\n\n function track_used_binding_identifiers(is_parameter, strict) {\n var parameters = new Set();\n var duplicate = false;\n var default_assignment = false;\n var spread = false;\n var strict_mode = !!strict;\n var tracker = {\n add_parameter: function(token) {\n if (parameters.has(token.value)) {\n if (duplicate === false) {\n duplicate = token;\n }\n tracker.check_strict();\n } else {\n parameters.add(token.value);\n if (is_parameter) {\n switch (token.value) {\n case \"arguments\":\n case \"eval\":\n case \"yield\":\n if (strict_mode) {\n token_error(token, \"Unexpected \" + token.value + \" identifier as parameter inside strict mode\");\n }\n break;\n default:\n if (RESERVED_WORDS.has(token.value)) {\n unexpected();\n }\n }\n }\n }\n },\n mark_default_assignment: function(token) {\n if (default_assignment === false) {\n default_assignment = token;\n }\n },\n mark_spread: function(token) {\n if (spread === false) {\n spread = token;\n }\n },\n mark_strict_mode: function() {\n strict_mode = true;\n },\n is_strict: function() {\n return default_assignment !== false || spread !== false || strict_mode;\n },\n check_strict: function() {\n if (tracker.is_strict() && duplicate !== false) {\n token_error(duplicate, \"Parameter \" + duplicate.value + \" was used already\");\n }\n }\n };\n\n return tracker;\n }\n\n function parameters(params) {\n var used_parameters = track_used_binding_identifiers(true, S.input.has_directive(\"use strict\"));\n\n expect(\"(\");\n\n while (!is(\"punc\", \")\")) {\n var param = parameter(used_parameters);\n params.push(param);\n\n if (!is(\"punc\", \")\")) {\n expect(\",\");\n if (is(\"punc\", \")\") && options.ecma < 2017) unexpected();\n }\n\n if (param instanceof AST_Expansion) {\n break;\n }\n }\n\n next();\n }\n\n function parameter(used_parameters, symbol_type) {\n var param;\n var expand = false;\n if (used_parameters === undefined) {\n used_parameters = track_used_binding_identifiers(true, S.input.has_directive(\"use strict\"));\n }\n if (is(\"expand\", \"...\")) {\n expand = S.token;\n used_parameters.mark_spread(S.token);\n next();\n }\n param = binding_element(used_parameters, symbol_type);\n\n if (is(\"operator\", \"=\") && expand === false) {\n used_parameters.mark_default_assignment(S.token);\n next();\n param = new AST_DefaultAssign({\n start: param.start,\n left: param,\n operator: \"=\",\n right: expression(false),\n end: S.token\n });\n }\n\n if (expand !== false) {\n if (!is(\"punc\", \")\")) {\n unexpected();\n }\n param = new AST_Expansion({\n start: expand,\n expression: param,\n end: expand\n });\n }\n used_parameters.check_strict();\n\n return param;\n }\n\n function binding_element(used_parameters, symbol_type) {\n var elements = [];\n var first = true;\n var is_expand = false;\n var expand_token;\n var first_token = S.token;\n if (used_parameters === undefined) {\n used_parameters = track_used_binding_identifiers(false, S.input.has_directive(\"use strict\"));\n }\n symbol_type = symbol_type === undefined ? AST_SymbolFunarg : symbol_type;\n if (is(\"punc\", \"[\")) {\n next();\n while (!is(\"punc\", \"]\")) {\n if (first) {\n first = false;\n } else {\n expect(\",\");\n }\n\n if (is(\"expand\", \"...\")) {\n is_expand = true;\n expand_token = S.token;\n used_parameters.mark_spread(S.token);\n next();\n }\n if (is(\"punc\")) {\n switch (S.token.value) {\n case \",\":\n elements.push(new AST_Hole({\n start: S.token,\n end: S.token\n }));\n continue;\n case \"]\": // Trailing comma after last element\n break;\n case \"[\":\n case \"{\":\n elements.push(binding_element(used_parameters, symbol_type));\n break;\n default:\n unexpected();\n }\n } else if (is(\"name\")) {\n used_parameters.add_parameter(S.token);\n elements.push(as_symbol(symbol_type));\n } else {\n croak(\"Invalid function parameter\");\n }\n if (is(\"operator\", \"=\") && is_expand === false) {\n used_parameters.mark_default_assignment(S.token);\n next();\n elements[elements.length - 1] = new AST_DefaultAssign({\n start: elements[elements.length - 1].start,\n left: elements[elements.length - 1],\n operator: \"=\",\n right: expression(false),\n end: S.token\n });\n }\n if (is_expand) {\n if (!is(\"punc\", \"]\")) {\n croak(\"Rest element must be last element\");\n }\n elements[elements.length - 1] = new AST_Expansion({\n start: expand_token,\n expression: elements[elements.length - 1],\n end: expand_token\n });\n }\n }\n expect(\"]\");\n used_parameters.check_strict();\n return new AST_Destructuring({\n start: first_token,\n names: elements,\n is_array: true,\n end: prev()\n });\n } else if (is(\"punc\", \"{\")) {\n next();\n while (!is(\"punc\", \"}\")) {\n if (first) {\n first = false;\n } else {\n expect(\",\");\n }\n if (is(\"expand\", \"...\")) {\n is_expand = true;\n expand_token = S.token;\n used_parameters.mark_spread(S.token);\n next();\n }\n if (is(\"name\") && (is_token(peek(), \"punc\") || is_token(peek(), \"operator\")) && [\",\", \"}\", \"=\"].includes(peek().value)) {\n used_parameters.add_parameter(S.token);\n var start = prev();\n var value = as_symbol(symbol_type);\n if (is_expand) {\n elements.push(new AST_Expansion({\n start: expand_token,\n expression: value,\n end: value.end,\n }));\n } else {\n elements.push(new AST_ObjectKeyVal({\n start: start,\n key: value.name,\n value: value,\n end: value.end,\n }));\n }\n } else if (is(\"punc\", \"}\")) {\n continue; // Allow trailing hole\n } else {\n var property_token = S.token;\n var property = as_property_name();\n if (property === null) {\n unexpected(prev());\n } else if (prev().type === \"name\" && !is(\"punc\", \":\")) {\n elements.push(new AST_ObjectKeyVal({\n start: prev(),\n key: property,\n value: new symbol_type({\n start: prev(),\n name: property,\n end: prev()\n }),\n end: prev()\n }));\n } else {\n expect(\":\");\n elements.push(new AST_ObjectKeyVal({\n start: property_token,\n quote: property_token.quote,\n key: property,\n value: binding_element(used_parameters, symbol_type),\n end: prev()\n }));\n }\n }\n if (is_expand) {\n if (!is(\"punc\", \"}\")) {\n croak(\"Rest element must be last element\");\n }\n } else if (is(\"operator\", \"=\")) {\n used_parameters.mark_default_assignment(S.token);\n next();\n elements[elements.length - 1].value = new AST_DefaultAssign({\n start: elements[elements.length - 1].value.start,\n left: elements[elements.length - 1].value,\n operator: \"=\",\n right: expression(false),\n end: S.token\n });\n }\n }\n expect(\"}\");\n used_parameters.check_strict();\n return new AST_Destructuring({\n start: first_token,\n names: elements,\n is_array: false,\n end: prev()\n });\n } else if (is(\"name\")) {\n used_parameters.add_parameter(S.token);\n return as_symbol(symbol_type);\n } else {\n croak(\"Invalid function parameter\");\n }\n }\n\n function params_or_seq_(allow_arrows, maybe_sequence) {\n var spread_token;\n var invalid_sequence;\n var trailing_comma;\n var a = [];\n expect(\"(\");\n while (!is(\"punc\", \")\")) {\n if (spread_token) unexpected(spread_token);\n if (is(\"expand\", \"...\")) {\n spread_token = S.token;\n if (maybe_sequence) invalid_sequence = S.token;\n next();\n a.push(new AST_Expansion({\n start: prev(),\n expression: expression(),\n end: S.token,\n }));\n } else {\n a.push(expression());\n }\n if (!is(\"punc\", \")\")) {\n expect(\",\");\n if (is(\"punc\", \")\")) {\n if (options.ecma < 2017) unexpected();\n trailing_comma = prev();\n if (maybe_sequence) invalid_sequence = trailing_comma;\n }\n }\n }\n expect(\")\");\n if (allow_arrows && is(\"arrow\", \"=>\")) {\n if (spread_token && trailing_comma) unexpected(trailing_comma);\n } else if (invalid_sequence) {\n unexpected(invalid_sequence);\n }\n return a;\n }\n\n function _function_body(block, generator, is_async, name, args) {\n var loop = S.in_loop;\n var labels = S.labels;\n var current_generator = S.in_generator;\n var current_async = S.in_async;\n ++S.in_function;\n if (generator)\n S.in_generator = S.in_function;\n if (is_async)\n S.in_async = S.in_function;\n if (args) parameters(args);\n if (block)\n S.in_directives = true;\n S.in_loop = 0;\n S.labels = [];\n if (block) {\n S.input.push_directives_stack();\n var a = block_();\n if (name) _verify_symbol(name);\n if (args) args.forEach(_verify_symbol);\n S.input.pop_directives_stack();\n } else {\n var a = [new AST_Return({\n start: S.token,\n value: expression(false),\n end: S.token\n })];\n }\n --S.in_function;\n S.in_loop = loop;\n S.labels = labels;\n S.in_generator = current_generator;\n S.in_async = current_async;\n return a;\n }\n\n function _await_expression() {\n // Previous token must be \"await\" and not be interpreted as an identifier\n if (!is_in_async()) {\n croak(\"Unexpected await expression outside async function\",\n S.prev.line, S.prev.col, S.prev.pos);\n }\n // the await expression is parsed as a unary expression in Babel\n return new AST_Await({\n start: prev(),\n end: S.token,\n expression : maybe_unary(true),\n });\n }\n\n function _yield_expression() {\n // Previous token must be keyword yield and not be interpret as an identifier\n if (!is_in_generator()) {\n croak(\"Unexpected yield expression outside generator function\",\n S.prev.line, S.prev.col, S.prev.pos);\n }\n var start = S.token;\n var star = false;\n var has_expression = true;\n\n // Attempt to get expression or star (and then the mandatory expression)\n // behind yield on the same line.\n //\n // If nothing follows on the same line of the yieldExpression,\n // it should default to the value `undefined` for yield to return.\n // In that case, the `undefined` stored as `null` in ast.\n //\n // Note 1: It isn't allowed for yield* to close without an expression\n // Note 2: If there is a nlb between yield and star, it is interpret as\n // yield *\n if (can_insert_semicolon() ||\n (is(\"punc\") && PUNC_AFTER_EXPRESSION.has(S.token.value))) {\n has_expression = false;\n\n } else if (is(\"operator\", \"*\")) {\n star = true;\n next();\n }\n\n return new AST_Yield({\n start : start,\n is_star : star,\n expression : has_expression ? expression() : null,\n end : prev()\n });\n }\n\n function if_() {\n var cond = parenthesised(), body = statement(false, false, true), belse = null;\n if (is(\"keyword\", \"else\")) {\n next();\n belse = statement(false, false, true);\n }\n return new AST_If({\n condition : cond,\n body : body,\n alternative : belse\n });\n }\n\n function block_() {\n expect(\"{\");\n var a = [];\n while (!is(\"punc\", \"}\")) {\n if (is(\"eof\")) unexpected();\n a.push(statement());\n }\n next();\n return a;\n }\n\n function switch_body_() {\n expect(\"{\");\n var a = [], cur = null, branch = null, tmp;\n while (!is(\"punc\", \"}\")) {\n if (is(\"eof\")) unexpected();\n if (is(\"keyword\", \"case\")) {\n if (branch) branch.end = prev();\n cur = [];\n branch = new AST_Case({\n start : (tmp = S.token, next(), tmp),\n expression : expression(true),\n body : cur\n });\n a.push(branch);\n expect(\":\");\n } else if (is(\"keyword\", \"default\")) {\n if (branch) branch.end = prev();\n cur = [];\n branch = new AST_Default({\n start : (tmp = S.token, next(), expect(\":\"), tmp),\n body : cur\n });\n a.push(branch);\n } else {\n if (!cur) unexpected();\n cur.push(statement());\n }\n }\n if (branch) branch.end = prev();\n next();\n return a;\n }\n\n function try_() {\n var body = block_(), bcatch = null, bfinally = null;\n if (is(\"keyword\", \"catch\")) {\n var start = S.token;\n next();\n if (is(\"punc\", \"{\")) {\n var name = null;\n } else {\n expect(\"(\");\n var name = parameter(undefined, AST_SymbolCatch);\n expect(\")\");\n }\n bcatch = new AST_Catch({\n start : start,\n argname : name,\n body : block_(),\n end : prev()\n });\n }\n if (is(\"keyword\", \"finally\")) {\n var start = S.token;\n next();\n bfinally = new AST_Finally({\n start : start,\n body : block_(),\n end : prev()\n });\n }\n if (!bcatch && !bfinally)\n croak(\"Missing catch/finally blocks\");\n return new AST_Try({\n body : body,\n bcatch : bcatch,\n bfinally : bfinally\n });\n }\n\n function vardefs(no_in, kind) {\n var a = [];\n var def;\n for (;;) {\n var sym_type =\n kind === \"var\" ? AST_SymbolVar :\n kind === \"const\" ? AST_SymbolConst :\n kind === \"let\" ? AST_SymbolLet : null;\n if (is(\"punc\", \"{\") || is(\"punc\", \"[\")) {\n def = new AST_VarDef({\n start: S.token,\n name: binding_element(undefined ,sym_type),\n value: is(\"operator\", \"=\") ? (expect_token(\"operator\", \"=\"), expression(false, no_in)) : null,\n end: prev()\n });\n } else {\n def = new AST_VarDef({\n start : S.token,\n name : as_symbol(sym_type),\n value : is(\"operator\", \"=\")\n ? (next(), expression(false, no_in))\n : !no_in && kind === \"const\"\n ? croak(\"Missing initializer in const declaration\") : null,\n end : prev()\n });\n if (def.name.name == \"import\") croak(\"Unexpected token: import\");\n }\n a.push(def);\n if (!is(\"punc\", \",\"))\n break;\n next();\n }\n return a;\n }\n\n var var_ = function(no_in) {\n return new AST_Var({\n start : prev(),\n definitions : vardefs(no_in, \"var\"),\n end : prev()\n });\n };\n\n var let_ = function(no_in) {\n return new AST_Let({\n start : prev(),\n definitions : vardefs(no_in, \"let\"),\n end : prev()\n });\n };\n\n var const_ = function(no_in) {\n return new AST_Const({\n start : prev(),\n definitions : vardefs(no_in, \"const\"),\n end : prev()\n });\n };\n\n var new_ = function(allow_calls) {\n var start = S.token;\n expect_token(\"operator\", \"new\");\n if (is(\"punc\", \".\")) {\n next();\n expect_token(\"name\", \"target\");\n return subscripts(new AST_NewTarget({\n start : start,\n end : prev()\n }), allow_calls);\n }\n var newexp = expr_atom(false), args;\n if (is(\"punc\", \"(\")) {\n next();\n args = expr_list(\")\", options.ecma >= 2017);\n } else {\n args = [];\n }\n var call = new AST_New({\n start : start,\n expression : newexp,\n args : args,\n end : prev()\n });\n annotate(call);\n return subscripts(call, allow_calls);\n };\n\n function as_atom_node() {\n var tok = S.token, ret;\n switch (tok.type) {\n case \"name\":\n ret = _make_symbol(AST_SymbolRef);\n break;\n case \"num\":\n ret = new AST_Number({ start: tok, end: tok, value: tok.value });\n break;\n case \"big_int\":\n ret = new AST_BigInt({ start: tok, end: tok, value: tok.value });\n break;\n case \"string\":\n ret = new AST_String({\n start : tok,\n end : tok,\n value : tok.value,\n quote : tok.quote\n });\n break;\n case \"regexp\":\n ret = new AST_RegExp({ start: tok, end: tok, value: tok.value });\n break;\n case \"atom\":\n switch (tok.value) {\n case \"false\":\n ret = new AST_False({ start: tok, end: tok });\n break;\n case \"true\":\n ret = new AST_True({ start: tok, end: tok });\n break;\n case \"null\":\n ret = new AST_Null({ start: tok, end: tok });\n break;\n }\n break;\n }\n next();\n return ret;\n }\n\n function to_fun_args(ex, _, __, default_seen_above) {\n var insert_default = function(ex, default_value) {\n if (default_value) {\n return new AST_DefaultAssign({\n start: ex.start,\n left: ex,\n operator: \"=\",\n right: default_value,\n end: default_value.end\n });\n }\n return ex;\n };\n if (ex instanceof AST_Object) {\n return insert_default(new AST_Destructuring({\n start: ex.start,\n end: ex.end,\n is_array: false,\n names: ex.properties.map(to_fun_args)\n }), default_seen_above);\n } else if (ex instanceof AST_ObjectKeyVal) {\n ex.value = to_fun_args(ex.value, 0, [ex.key]);\n return insert_default(ex, default_seen_above);\n } else if (ex instanceof AST_Hole) {\n return ex;\n } else if (ex instanceof AST_Destructuring) {\n ex.names = ex.names.map(to_fun_args);\n return insert_default(ex, default_seen_above);\n } else if (ex instanceof AST_SymbolRef) {\n return insert_default(new AST_SymbolFunarg({\n name: ex.name,\n start: ex.start,\n end: ex.end\n }), default_seen_above);\n } else if (ex instanceof AST_Expansion) {\n ex.expression = to_fun_args(ex.expression);\n return insert_default(ex, default_seen_above);\n } else if (ex instanceof AST_Array) {\n return insert_default(new AST_Destructuring({\n start: ex.start,\n end: ex.end,\n is_array: true,\n names: ex.elements.map(to_fun_args)\n }), default_seen_above);\n } else if (ex instanceof AST_Assign) {\n return insert_default(to_fun_args(ex.left, undefined, undefined, ex.right), default_seen_above);\n } else if (ex instanceof AST_DefaultAssign) {\n ex.left = to_fun_args(ex.left, 0, [ex.left]);\n return ex;\n } else {\n croak(\"Invalid function parameter\", ex.start.line, ex.start.col);\n }\n }\n\n var expr_atom = function(allow_calls, allow_arrows) {\n if (is(\"operator\", \"new\")) {\n return new_(allow_calls);\n }\n var start = S.token;\n var peeked;\n var async = is(\"name\", \"async\")\n && (peeked = peek()).value != \"[\"\n && peeked.type != \"arrow\"\n && as_atom_node();\n if (is(\"punc\")) {\n switch (S.token.value) {\n case \"(\":\n if (async && !allow_calls) break;\n var exprs = params_or_seq_(allow_arrows, !async);\n if (allow_arrows && is(\"arrow\", \"=>\")) {\n return arrow_function(start, exprs.map(to_fun_args), !!async);\n }\n var ex = async ? new AST_Call({\n expression: async,\n args: exprs\n }) : exprs.length == 1 ? exprs[0] : new AST_Sequence({\n expressions: exprs\n });\n if (ex.start) {\n const outer_comments_before = start.comments_before.length;\n outer_comments_before_counts.set(start, outer_comments_before);\n ex.start.comments_before.unshift(...start.comments_before);\n start.comments_before = ex.start.comments_before;\n if (outer_comments_before == 0 && start.comments_before.length > 0) {\n var comment = start.comments_before[0];\n if (!comment.nlb) {\n comment.nlb = start.nlb;\n start.nlb = false;\n }\n }\n start.comments_after = ex.start.comments_after;\n }\n ex.start = start;\n var end = prev();\n if (ex.end) {\n end.comments_before = ex.end.comments_before;\n ex.end.comments_after.push(...end.comments_after);\n end.comments_after = ex.end.comments_after;\n }\n ex.end = end;\n if (ex instanceof AST_Call) annotate(ex);\n return subscripts(ex, allow_calls);\n case \"[\":\n return subscripts(array_(), allow_calls);\n case \"{\":\n return subscripts(object_or_destructuring_(), allow_calls);\n }\n if (!async) unexpected();\n }\n if (allow_arrows && is(\"name\") && is_token(peek(), \"arrow\")) {\n var param = new AST_SymbolFunarg({\n name: S.token.value,\n start: start,\n end: start,\n });\n next();\n return arrow_function(start, [param], !!async);\n }\n if (is(\"keyword\", \"function\")) {\n next();\n var func = function_(AST_Function, false, !!async);\n func.start = start;\n func.end = prev();\n return subscripts(func, allow_calls);\n }\n if (async) return subscripts(async, allow_calls);\n if (is(\"keyword\", \"class\")) {\n next();\n var cls = class_(AST_ClassExpression);\n cls.start = start;\n cls.end = prev();\n return subscripts(cls, allow_calls);\n }\n if (is(\"template_head\")) {\n return subscripts(template_string(false), allow_calls);\n }\n if (ATOMIC_START_TOKEN.has(S.token.type)) {\n return subscripts(as_atom_node(), allow_calls);\n }\n unexpected();\n };\n\n function template_string() {\n var segments = [], start = S.token;\n\n segments.push(new AST_TemplateSegment({\n start: S.token,\n raw: S.token.raw,\n value: S.token.value,\n end: S.token\n }));\n while (!S.token.end) {\n next();\n handle_regexp();\n segments.push(expression(true));\n\n if (!is_token(\"template_substitution\")) {\n unexpected();\n }\n\n segments.push(new AST_TemplateSegment({\n start: S.token,\n raw: S.token.raw,\n value: S.token.value,\n end: S.token\n }));\n }\n next();\n\n return new AST_TemplateString({\n start: start,\n segments: segments,\n end: S.token\n });\n }\n\n function expr_list(closing, allow_trailing_comma, allow_empty) {\n var first = true, a = [];\n while (!is(\"punc\", closing)) {\n if (first) first = false; else expect(\",\");\n if (allow_trailing_comma && is(\"punc\", closing)) break;\n if (is(\"punc\", \",\") && allow_empty) {\n a.push(new AST_Hole({ start: S.token, end: S.token }));\n } else if (is(\"expand\", \"...\")) {\n next();\n a.push(new AST_Expansion({start: prev(), expression: expression(),end: S.token}));\n } else {\n a.push(expression(false));\n }\n }\n next();\n return a;\n }\n\n var array_ = embed_tokens(function() {\n expect(\"[\");\n return new AST_Array({\n elements: expr_list(\"]\", !options.strict, true)\n });\n });\n\n var create_accessor = embed_tokens((is_generator, is_async) => {\n return function_(AST_Accessor, is_generator, is_async);\n });\n\n var object_or_destructuring_ = embed_tokens(function object_or_destructuring_() {\n var start = S.token, first = true, a = [];\n expect(\"{\");\n while (!is(\"punc\", \"}\")) {\n if (first) first = false; else expect(\",\");\n if (!options.strict && is(\"punc\", \"}\"))\n // allow trailing comma\n break;\n\n start = S.token;\n if (start.type == \"expand\") {\n next();\n a.push(new AST_Expansion({\n start: start,\n expression: expression(false),\n end: prev(),\n }));\n continue;\n }\n\n var name = as_property_name();\n var value;\n\n // Check property and fetch value\n if (!is(\"punc\", \":\")) {\n var concise = concise_method_or_getset(name, start);\n if (concise) {\n a.push(concise);\n continue;\n }\n\n value = new AST_SymbolRef({\n start: prev(),\n name: name,\n end: prev()\n });\n } else if (name === null) {\n unexpected(prev());\n } else {\n next(); // `:` - see first condition\n value = expression(false);\n }\n\n // Check for default value and alter value accordingly if necessary\n if (is(\"operator\", \"=\")) {\n next();\n value = new AST_Assign({\n start: start,\n left: value,\n operator: \"=\",\n right: expression(false),\n end: prev()\n });\n }\n\n // Create property\n a.push(new AST_ObjectKeyVal({\n start: start,\n quote: start.quote,\n key: name instanceof AST_Node ? name : \"\" + name,\n value: value,\n end: prev()\n }));\n }\n next();\n return new AST_Object({ properties: a });\n });\n\n function class_(KindOfClass) {\n var start, method, class_name, extends_, a = [];\n\n S.input.push_directives_stack(); // Push directive stack, but not scope stack\n S.input.add_directive(\"use strict\");\n\n if (S.token.type == \"name\" && S.token.value != \"extends\") {\n class_name = as_symbol(KindOfClass === AST_DefClass ? AST_SymbolDefClass : AST_SymbolClass);\n }\n\n if (KindOfClass === AST_DefClass && !class_name) {\n unexpected();\n }\n\n if (S.token.value == \"extends\") {\n next();\n extends_ = expression(true);\n }\n\n expect(\"{\");\n\n while (is(\"punc\", \";\")) { next(); } // Leading semicolons are okay in class bodies.\n while (!is(\"punc\", \"}\")) {\n start = S.token;\n method = concise_method_or_getset(as_property_name(), start, true);\n if (!method) { unexpected(); }\n a.push(method);\n while (is(\"punc\", \";\")) { next(); }\n }\n\n S.input.pop_directives_stack();\n\n next();\n\n return new KindOfClass({\n start: start,\n name: class_name,\n extends: extends_,\n properties: a,\n end: prev(),\n });\n }\n\n function concise_method_or_getset(name, start, is_class) {\n var get_method_name_ast = function(name, start) {\n if (typeof name === \"string\" || typeof name === \"number\") {\n return new AST_SymbolMethod({\n start,\n name: \"\" + name,\n end: prev()\n });\n } else if (name === null) {\n unexpected();\n }\n return name;\n };\n const get_class_property_key_ast = (name) => {\n if (typeof name === \"string\" || typeof name === \"number\") {\n return new AST_SymbolClassProperty({\n start: property_token,\n end: property_token,\n name: \"\" + name\n });\n } else if (name === null) {\n unexpected();\n }\n return name;\n };\n var is_async = false;\n var is_static = false;\n var is_generator = false;\n var property_token = start;\n if (is_class && name === \"static\" && !is(\"punc\", \"(\")) {\n is_static = true;\n property_token = S.token;\n name = as_property_name();\n }\n if (name === \"async\" && !is(\"punc\", \"(\") && !is(\"punc\", \",\") && !is(\"punc\", \"}\") && !is(\"operator\", \"=\")) {\n is_async = true;\n property_token = S.token;\n name = as_property_name();\n }\n if (name === null) {\n is_generator = true;\n property_token = S.token;\n name = as_property_name();\n if (name === null) {\n unexpected();\n }\n }\n if (is(\"punc\", \"(\")) {\n name = get_method_name_ast(name, start);\n var node = new AST_ConciseMethod({\n start : start,\n static : is_static,\n is_generator: is_generator,\n async : is_async,\n key : name,\n quote : name instanceof AST_SymbolMethod ?\n property_token.quote : undefined,\n value : create_accessor(is_generator, is_async),\n end : prev()\n });\n return node;\n }\n const setter_token = S.token;\n if (name == \"get\") {\n if (!is(\"punc\") || is(\"punc\", \"[\")) {\n name = get_method_name_ast(as_property_name(), start);\n return new AST_ObjectGetter({\n start : start,\n static: is_static,\n key : name,\n quote : name instanceof AST_SymbolMethod ?\n setter_token.quote : undefined,\n value : create_accessor(),\n end : prev()\n });\n }\n } else if (name == \"set\") {\n if (!is(\"punc\") || is(\"punc\", \"[\")) {\n name = get_method_name_ast(as_property_name(), start);\n return new AST_ObjectSetter({\n start : start,\n static: is_static,\n key : name,\n quote : name instanceof AST_SymbolMethod ?\n setter_token.quote : undefined,\n value : create_accessor(),\n end : prev()\n });\n }\n }\n if (is_class) {\n const key = get_class_property_key_ast(name, property_token);\n const quote = key instanceof AST_SymbolClassProperty\n ? property_token.quote\n : undefined;\n if (is(\"operator\", \"=\")) {\n next();\n return new AST_ClassProperty({\n start,\n static: is_static,\n quote,\n key,\n value: expression(false),\n end: prev()\n });\n } else if (is(\"name\") || is(\"punc\", \";\") || is(\"punc\", \"}\")) {\n return new AST_ClassProperty({\n start,\n static: is_static,\n quote,\n key,\n end: prev()\n });\n }\n }\n }\n\n function import_() {\n var start = prev();\n var imported_name;\n var imported_names;\n if (is(\"name\")) {\n imported_name = as_symbol(AST_SymbolImport);\n }\n\n if (is(\"punc\", \",\")) {\n next();\n }\n\n imported_names = map_names(true);\n\n if (imported_names || imported_name) {\n expect_token(\"name\", \"from\");\n }\n var mod_str = S.token;\n if (mod_str.type !== \"string\") {\n unexpected();\n }\n next();\n return new AST_Import({\n start: start,\n imported_name: imported_name,\n imported_names: imported_names,\n module_name: new AST_String({\n start: mod_str,\n value: mod_str.value,\n quote: mod_str.quote,\n end: mod_str,\n }),\n end: S.token,\n });\n }\n\n function map_name(is_import) {\n function make_symbol(type) {\n return new type({\n name: as_property_name(),\n start: prev(),\n end: prev()\n });\n }\n\n var foreign_type = is_import ? AST_SymbolImportForeign : AST_SymbolExportForeign;\n var type = is_import ? AST_SymbolImport : AST_SymbolExport;\n var start = S.token;\n var foreign_name;\n var name;\n\n if (is_import) {\n foreign_name = make_symbol(foreign_type);\n } else {\n name = make_symbol(type);\n }\n if (is(\"name\", \"as\")) {\n next(); // The \"as\" word\n if (is_import) {\n name = make_symbol(type);\n } else {\n foreign_name = make_symbol(foreign_type);\n }\n } else if (is_import) {\n name = new type(foreign_name);\n } else {\n foreign_name = new foreign_type(name);\n }\n\n return new AST_NameMapping({\n start: start,\n foreign_name: foreign_name,\n name: name,\n end: prev(),\n });\n }\n\n function map_nameAsterisk(is_import, name) {\n var foreign_type = is_import ? AST_SymbolImportForeign : AST_SymbolExportForeign;\n var type = is_import ? AST_SymbolImport : AST_SymbolExport;\n var start = S.token;\n var foreign_name;\n var end = prev();\n\n name = name || new type({\n name: \"*\",\n start: start,\n end: end,\n });\n\n foreign_name = new foreign_type({\n name: \"*\",\n start: start,\n end: end,\n });\n\n return new AST_NameMapping({\n start: start,\n foreign_name: foreign_name,\n name: name,\n end: end,\n });\n }\n\n function map_names(is_import) {\n var names;\n if (is(\"punc\", \"{\")) {\n next();\n names = [];\n while (!is(\"punc\", \"}\")) {\n names.push(map_name(is_import));\n if (is(\"punc\", \",\")) {\n next();\n }\n }\n next();\n } else if (is(\"operator\", \"*\")) {\n var name;\n next();\n if (is_import && is(\"name\", \"as\")) {\n next(); // The \"as\" word\n name = as_symbol(is_import ? AST_SymbolImport : AST_SymbolExportForeign);\n }\n names = [map_nameAsterisk(is_import, name)];\n }\n return names;\n }\n\n function export_() {\n var start = S.token;\n var is_default;\n var exported_names;\n\n if (is(\"keyword\", \"default\")) {\n is_default = true;\n next();\n } else if (exported_names = map_names(false)) {\n if (is(\"name\", \"from\")) {\n next();\n\n var mod_str = S.token;\n if (mod_str.type !== \"string\") {\n unexpected();\n }\n next();\n\n return new AST_Export({\n start: start,\n is_default: is_default,\n exported_names: exported_names,\n module_name: new AST_String({\n start: mod_str,\n value: mod_str.value,\n quote: mod_str.quote,\n end: mod_str,\n }),\n end: prev(),\n });\n } else {\n return new AST_Export({\n start: start,\n is_default: is_default,\n exported_names: exported_names,\n end: prev(),\n });\n }\n }\n\n var node;\n var exported_value;\n var exported_definition;\n if (is(\"punc\", \"{\")\n || is_default\n && (is(\"keyword\", \"class\") || is(\"keyword\", \"function\"))\n && is_token(peek(), \"punc\")) {\n exported_value = expression(false);\n semicolon();\n } else if ((node = statement(is_default)) instanceof AST_Definitions && is_default) {\n unexpected(node.start);\n } else if (node instanceof AST_Definitions || node instanceof AST_Lambda || node instanceof AST_DefClass) {\n exported_definition = node;\n } else if (node instanceof AST_SimpleStatement) {\n exported_value = node.body;\n } else {\n unexpected(node.start);\n }\n\n return new AST_Export({\n start: start,\n is_default: is_default,\n exported_value: exported_value,\n exported_definition: exported_definition,\n end: prev(),\n });\n }\n\n function as_property_name() {\n var tmp = S.token;\n switch (tmp.type) {\n case \"punc\":\n if (tmp.value === \"[\") {\n next();\n var ex = expression(false);\n expect(\"]\");\n return ex;\n } else unexpected(tmp);\n case \"operator\":\n if (tmp.value === \"*\") {\n next();\n return null;\n }\n if (![\"delete\", \"in\", \"instanceof\", \"new\", \"typeof\", \"void\"].includes(tmp.value)) {\n unexpected(tmp);\n }\n /* falls through */\n case \"name\":\n case \"string\":\n case \"num\":\n case \"big_int\":\n case \"keyword\":\n case \"atom\":\n next();\n return tmp.value;\n default:\n unexpected(tmp);\n }\n }\n\n function as_name() {\n var tmp = S.token;\n if (tmp.type != \"name\") unexpected();\n next();\n return tmp.value;\n }\n\n function _make_symbol(type) {\n var name = S.token.value;\n return new (name == \"this\" ? AST_This :\n name == \"super\" ? AST_Super :\n type)({\n name : String(name),\n start : S.token,\n end : S.token\n });\n }\n\n function _verify_symbol(sym) {\n var name = sym.name;\n if (is_in_generator() && name == \"yield\") {\n token_error(sym.start, \"Yield cannot be used as identifier inside generators\");\n }\n if (S.input.has_directive(\"use strict\")) {\n if (name == \"yield\") {\n token_error(sym.start, \"Unexpected yield identifier inside strict mode\");\n }\n if (sym instanceof AST_SymbolDeclaration && (name == \"arguments\" || name == \"eval\")) {\n token_error(sym.start, \"Unexpected \" + name + \" in strict mode\");\n }\n }\n }\n\n function as_symbol(type, noerror) {\n if (!is(\"name\")) {\n if (!noerror) croak(\"Name expected\");\n return null;\n }\n var sym = _make_symbol(type);\n _verify_symbol(sym);\n next();\n return sym;\n }\n\n // Annotate AST_Call, AST_Lambda or AST_New with the special comments\n function annotate(node) {\n var start = node.start;\n var comments = start.comments_before;\n const comments_outside_parens = outer_comments_before_counts.get(start);\n var i = comments_outside_parens != null ? comments_outside_parens : comments.length;\n while (--i >= 0) {\n var comment = comments[i];\n if (/[@#]__/.test(comment.value)) {\n if (/[@#]__PURE__/.test(comment.value)) {\n set_annotation(node, _PURE);\n break;\n }\n if (/[@#]__INLINE__/.test(comment.value)) {\n set_annotation(node, _INLINE);\n break;\n }\n if (/[@#]__NOINLINE__/.test(comment.value)) {\n set_annotation(node, _NOINLINE);\n break;\n }\n }\n }\n }\n\n var subscripts = function(expr, allow_calls) {\n var start = expr.start;\n if (is(\"punc\", \".\")) {\n next();\n return subscripts(new AST_Dot({\n start : start,\n expression : expr,\n property : as_name(),\n end : prev()\n }), allow_calls);\n }\n if (is(\"punc\", \"[\")) {\n next();\n var prop = expression(true);\n expect(\"]\");\n return subscripts(new AST_Sub({\n start : start,\n expression : expr,\n property : prop,\n end : prev()\n }), allow_calls);\n }\n if (allow_calls && is(\"punc\", \"(\")) {\n next();\n var call = new AST_Call({\n start : start,\n expression : expr,\n args : call_args(),\n end : prev()\n });\n annotate(call);\n return subscripts(call, true);\n }\n if (is(\"template_head\")) {\n return subscripts(new AST_PrefixedTemplateString({\n start: start,\n prefix: expr,\n template_string: template_string(true),\n end: prev()\n }), allow_calls);\n }\n return expr;\n };\n\n function call_args() {\n var args = [];\n while (!is(\"punc\", \")\")) {\n if (is(\"expand\", \"...\")) {\n next();\n args.push(new AST_Expansion({\n start: prev(),\n expression: expression(false),\n end: prev()\n }));\n } else {\n args.push(expression(false));\n }\n if (!is(\"punc\", \")\")) {\n expect(\",\");\n if (is(\"punc\", \")\") && options.ecma < 2017) unexpected();\n }\n }\n next();\n return args;\n }\n\n var maybe_unary = function(allow_calls, allow_arrows) {\n var start = S.token;\n if (start.type == \"name\" && start.value == \"await\") {\n if (is_in_async()) {\n next();\n return _await_expression();\n } else if (S.input.has_directive(\"use strict\")) {\n token_error(S.token, \"Unexpected await identifier inside strict mode\");\n }\n }\n if (is(\"operator\") && UNARY_PREFIX.has(start.value)) {\n next();\n handle_regexp();\n var ex = make_unary(AST_UnaryPrefix, start, maybe_unary(allow_calls));\n ex.start = start;\n ex.end = prev();\n return ex;\n }\n var val = expr_atom(allow_calls, allow_arrows);\n while (is(\"operator\") && UNARY_POSTFIX.has(S.token.value) && !has_newline_before(S.token)) {\n if (val instanceof AST_Arrow) unexpected();\n val = make_unary(AST_UnaryPostfix, S.token, val);\n val.start = start;\n val.end = S.token;\n next();\n }\n return val;\n };\n\n function make_unary(ctor, token, expr) {\n var op = token.value;\n switch (op) {\n case \"++\":\n case \"--\":\n if (!is_assignable(expr))\n croak(\"Invalid use of \" + op + \" operator\", token.line, token.col, token.pos);\n break;\n case \"delete\":\n if (expr instanceof AST_SymbolRef && S.input.has_directive(\"use strict\"))\n croak(\"Calling delete on expression not allowed in strict mode\", expr.start.line, expr.start.col, expr.start.pos);\n break;\n }\n return new ctor({ operator: op, expression: expr });\n }\n\n var expr_op = function(left, min_prec, no_in) {\n var op = is(\"operator\") ? S.token.value : null;\n if (op == \"in\" && no_in) op = null;\n if (op == \"**\" && left instanceof AST_UnaryPrefix\n /* unary token in front not allowed - parenthesis required */\n && !is_token(left.start, \"punc\", \"(\")\n && left.operator !== \"--\" && left.operator !== \"++\")\n unexpected(left.start);\n var prec = op != null ? PRECEDENCE[op] : null;\n if (prec != null && (prec > min_prec || (op === \"**\" && min_prec === prec))) {\n next();\n var right = expr_op(maybe_unary(true), prec, no_in);\n return expr_op(new AST_Binary({\n start : left.start,\n left : left,\n operator : op,\n right : right,\n end : right.end\n }), min_prec, no_in);\n }\n return left;\n };\n\n function expr_ops(no_in) {\n return expr_op(maybe_unary(true, true), 0, no_in);\n }\n\n var maybe_conditional = function(no_in) {\n var start = S.token;\n var expr = expr_ops(no_in);\n if (is(\"operator\", \"?\")) {\n next();\n var yes = expression(false);\n expect(\":\");\n return new AST_Conditional({\n start : start,\n condition : expr,\n consequent : yes,\n alternative : expression(false, no_in),\n end : prev()\n });\n }\n return expr;\n };\n\n function is_assignable(expr) {\n return expr instanceof AST_PropAccess || expr instanceof AST_SymbolRef;\n }\n\n function to_destructuring(node) {\n if (node instanceof AST_Object) {\n node = new AST_Destructuring({\n start: node.start,\n names: node.properties.map(to_destructuring),\n is_array: false,\n end: node.end\n });\n } else if (node instanceof AST_Array) {\n var names = [];\n\n for (var i = 0; i < node.elements.length; i++) {\n // Only allow expansion as last element\n if (node.elements[i] instanceof AST_Expansion) {\n if (i + 1 !== node.elements.length) {\n token_error(node.elements[i].start, \"Spread must the be last element in destructuring array\");\n }\n node.elements[i].expression = to_destructuring(node.elements[i].expression);\n }\n\n names.push(to_destructuring(node.elements[i]));\n }\n\n node = new AST_Destructuring({\n start: node.start,\n names: names,\n is_array: true,\n end: node.end\n });\n } else if (node instanceof AST_ObjectProperty) {\n node.value = to_destructuring(node.value);\n } else if (node instanceof AST_Assign) {\n node = new AST_DefaultAssign({\n start: node.start,\n left: node.left,\n operator: \"=\",\n right: node.right,\n end: node.end\n });\n }\n return node;\n }\n\n // In ES6, AssignmentExpression can also be an ArrowFunction\n var maybe_assign = function(no_in) {\n handle_regexp();\n var start = S.token;\n\n if (start.type == \"name\" && start.value == \"yield\") {\n if (is_in_generator()) {\n next();\n return _yield_expression();\n } else if (S.input.has_directive(\"use strict\")) {\n token_error(S.token, \"Unexpected yield identifier inside strict mode\");\n }\n }\n\n var left = maybe_conditional(no_in);\n var val = S.token.value;\n\n if (is(\"operator\") && ASSIGNMENT.has(val)) {\n if (is_assignable(left) || (left = to_destructuring(left)) instanceof AST_Destructuring) {\n next();\n return new AST_Assign({\n start : start,\n left : left,\n operator : val,\n right : maybe_assign(no_in),\n end : prev()\n });\n }\n croak(\"Invalid assignment\");\n }\n return left;\n };\n\n var expression = function(commas, no_in) {\n var start = S.token;\n var exprs = [];\n while (true) {\n exprs.push(maybe_assign(no_in));\n if (!commas || !is(\"punc\", \",\")) break;\n next();\n commas = true;\n }\n return exprs.length == 1 ? exprs[0] : new AST_Sequence({\n start : start,\n expressions : exprs,\n end : peek()\n });\n };\n\n function in_loop(cont) {\n ++S.in_loop;\n var ret = cont();\n --S.in_loop;\n return ret;\n }\n\n if (options.expression) {\n return expression(true);\n }\n\n return (function() {\n var start = S.token;\n var body = [];\n S.input.push_directives_stack();\n if (options.module) S.input.add_directive(\"use strict\");\n while (!is(\"eof\"))\n body.push(statement());\n S.input.pop_directives_stack();\n var end = prev();\n var toplevel = options.toplevel;\n if (toplevel) {\n toplevel.body = toplevel.body.concat(body);\n toplevel.end = end;\n } else {\n toplevel = new AST_Toplevel({ start: start, body: body, end: end });\n }\n return toplevel;\n })();\n\n}\n\nexport {\n get_full_char_code,\n get_full_char,\n is_identifier_char,\n is_basic_identifier_string,\n is_identifier_string,\n is_surrogate_pair_head,\n is_surrogate_pair_tail,\n js_error,\n JS_Parse_Error,\n parse,\n PRECEDENCE,\n RESERVED_WORDS,\n tokenizer,\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n HOP,\n MAP,\n noop,\n string_template,\n} from \"./utils/index.js\";\nimport { parse } from \"./parse.js\";\n\nfunction DEFNODE(type, props, methods, base = AST_Node) {\n if (!props) props = [];\n else props = props.split(/\\s+/);\n var self_props = props;\n if (base && base.PROPS)\n props = props.concat(base.PROPS);\n var code = \"return function AST_\" + type + \"(props){ if (props) { \";\n for (var i = props.length; --i >= 0;) {\n code += \"this.\" + props[i] + \" = props.\" + props[i] + \";\";\n }\n const proto = base && Object.create(base.prototype);\n if (proto && proto.initialize || (methods && methods.initialize))\n code += \"this.initialize();\";\n code += \"}\";\n code += \"this.flags = 0;\";\n code += \"}\";\n var ctor = new Function(code)();\n if (proto) {\n ctor.prototype = proto;\n ctor.BASE = base;\n }\n if (base) base.SUBCLASSES.push(ctor);\n ctor.prototype.CTOR = ctor;\n ctor.prototype.constructor = ctor;\n ctor.PROPS = props || null;\n ctor.SELF_PROPS = self_props;\n ctor.SUBCLASSES = [];\n if (type) {\n ctor.prototype.TYPE = ctor.TYPE = type;\n }\n if (methods) for (i in methods) if (HOP(methods, i)) {\n if (i[0] === \"$\") {\n ctor[i.substr(1)] = methods[i];\n } else {\n ctor.prototype[i] = methods[i];\n }\n }\n ctor.DEFMETHOD = function(name, method) {\n this.prototype[name] = method;\n };\n return ctor;\n}\n\nvar AST_Token = DEFNODE(\"Token\", \"type value line col pos endline endcol endpos nlb comments_before comments_after file raw quote end\", {\n}, null);\n\nvar AST_Node = DEFNODE(\"Node\", \"start end\", {\n _clone: function(deep) {\n if (deep) {\n var self = this.clone();\n return self.transform(new TreeTransformer(function(node) {\n if (node !== self) {\n return node.clone(true);\n }\n }));\n }\n return new this.CTOR(this);\n },\n clone: function(deep) {\n return this._clone(deep);\n },\n $documentation: \"Base class of all AST nodes\",\n $propdoc: {\n start: \"[AST_Token] The first token of this node\",\n end: \"[AST_Token] The last token of this node\"\n },\n _walk: function(visitor) {\n return visitor._visit(this);\n },\n walk: function(visitor) {\n return this._walk(visitor); // not sure the indirection will be any help\n },\n _children_backwards: () => {}\n}, null);\n\nAST_Node.warn_function = null;\nAST_Node.warn = function(txt, props) {\n if (AST_Node.warn_function)\n AST_Node.warn_function(string_template(txt, props));\n};\n\n/* -----[ statements ]----- */\n\nvar AST_Statement = DEFNODE(\"Statement\", null, {\n $documentation: \"Base class of all statements\",\n});\n\nvar AST_Debugger = DEFNODE(\"Debugger\", null, {\n $documentation: \"Represents a debugger statement\",\n}, AST_Statement);\n\nvar AST_Directive = DEFNODE(\"Directive\", \"value quote\", {\n $documentation: \"Represents a directive, like \\\"use strict\\\";\",\n $propdoc: {\n value: \"[string] The value of this directive as a plain string (it's not an AST_String!)\",\n quote: \"[string] the original quote character\"\n },\n}, AST_Statement);\n\nvar AST_SimpleStatement = DEFNODE(\"SimpleStatement\", \"body\", {\n $documentation: \"A statement consisting of an expression, i.e. a = 1 + 2\",\n $propdoc: {\n body: \"[AST_Node] an expression node (should not be instanceof AST_Statement)\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.body._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.body);\n }\n}, AST_Statement);\n\nfunction walk_body(node, visitor) {\n const body = node.body;\n for (var i = 0, len = body.length; i < len; i++) {\n body[i]._walk(visitor);\n }\n}\n\nfunction clone_block_scope(deep) {\n var clone = this._clone(deep);\n if (this.block_scope) {\n // TODO this is sometimes undefined during compression.\n // But it should always have a value!\n clone.block_scope = this.block_scope.clone();\n }\n return clone;\n}\n\nvar AST_Block = DEFNODE(\"Block\", \"body block_scope\", {\n $documentation: \"A body of statements (usually braced)\",\n $propdoc: {\n body: \"[AST_Statement*] an array of statements\",\n block_scope: \"[AST_Scope] the block scope\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n walk_body(this, visitor);\n });\n },\n _children_backwards(push) {\n let i = this.body.length;\n while (i--) push(this.body[i]);\n },\n clone: clone_block_scope\n}, AST_Statement);\n\nvar AST_BlockStatement = DEFNODE(\"BlockStatement\", null, {\n $documentation: \"A block statement\",\n}, AST_Block);\n\nvar AST_EmptyStatement = DEFNODE(\"EmptyStatement\", null, {\n $documentation: \"The empty statement (empty block or simply a semicolon)\"\n}, AST_Statement);\n\nvar AST_StatementWithBody = DEFNODE(\"StatementWithBody\", \"body\", {\n $documentation: \"Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`\",\n $propdoc: {\n body: \"[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement\"\n }\n}, AST_Statement);\n\nvar AST_LabeledStatement = DEFNODE(\"LabeledStatement\", \"label\", {\n $documentation: \"Statement with a label\",\n $propdoc: {\n label: \"[AST_Label] a label definition\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.label._walk(visitor);\n this.body._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.body);\n push(this.label);\n },\n clone: function(deep) {\n var node = this._clone(deep);\n if (deep) {\n var label = node.label;\n var def = this.label;\n node.walk(new TreeWalker(function(node) {\n if (node instanceof AST_LoopControl\n && node.label && node.label.thedef === def) {\n node.label.thedef = label;\n label.references.push(node);\n }\n }));\n }\n return node;\n }\n}, AST_StatementWithBody);\n\nvar AST_IterationStatement = DEFNODE(\"IterationStatement\", \"block_scope\", {\n $documentation: \"Internal class. All loops inherit from it.\",\n $propdoc: {\n block_scope: \"[AST_Scope] the block scope for this iteration statement.\"\n },\n clone: clone_block_scope\n}, AST_StatementWithBody);\n\nvar AST_DWLoop = DEFNODE(\"DWLoop\", \"condition\", {\n $documentation: \"Base class for do/while statements\",\n $propdoc: {\n condition: \"[AST_Node] the loop condition. Should not be instanceof AST_Statement\"\n }\n}, AST_IterationStatement);\n\nvar AST_Do = DEFNODE(\"Do\", null, {\n $documentation: \"A `do` statement\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.body._walk(visitor);\n this.condition._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.condition);\n push(this.body);\n }\n}, AST_DWLoop);\n\nvar AST_While = DEFNODE(\"While\", null, {\n $documentation: \"A `while` statement\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.condition._walk(visitor);\n this.body._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.body);\n push(this.condition);\n },\n}, AST_DWLoop);\n\nvar AST_For = DEFNODE(\"For\", \"init condition step\", {\n $documentation: \"A `for` statement\",\n $propdoc: {\n init: \"[AST_Node?] the `for` initialization code, or null if empty\",\n condition: \"[AST_Node?] the `for` termination clause, or null if empty\",\n step: \"[AST_Node?] the `for` update clause, or null if empty\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.init) this.init._walk(visitor);\n if (this.condition) this.condition._walk(visitor);\n if (this.step) this.step._walk(visitor);\n this.body._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.body);\n if (this.step) push(this.step);\n if (this.condition) push(this.condition);\n if (this.init) push(this.init);\n },\n}, AST_IterationStatement);\n\nvar AST_ForIn = DEFNODE(\"ForIn\", \"init object\", {\n $documentation: \"A `for ... in` statement\",\n $propdoc: {\n init: \"[AST_Node] the `for/in` initialization code\",\n object: \"[AST_Node] the object that we're looping through\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.init._walk(visitor);\n this.object._walk(visitor);\n this.body._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.body);\n if (this.object) push(this.object);\n if (this.init) push(this.init);\n },\n}, AST_IterationStatement);\n\nvar AST_ForOf = DEFNODE(\"ForOf\", \"await\", {\n $documentation: \"A `for ... of` statement\",\n}, AST_ForIn);\n\nvar AST_With = DEFNODE(\"With\", \"expression\", {\n $documentation: \"A `with` statement\",\n $propdoc: {\n expression: \"[AST_Node] the `with` expression\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n this.body._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.body);\n push(this.expression);\n },\n}, AST_StatementWithBody);\n\n/* -----[ scope and functions ]----- */\n\nvar AST_Scope = DEFNODE(\"Scope\", \"variables functions uses_with uses_eval parent_scope enclosed cname _var_name_cache\", {\n $documentation: \"Base class for all statements introducing a lexical scope\",\n $propdoc: {\n variables: \"[Map/S] a map of name -> SymbolDef for all variables/functions defined in this scope\",\n functions: \"[Map/S] like `variables`, but only lists function declarations\",\n uses_with: \"[boolean/S] tells whether this scope uses the `with` statement\",\n uses_eval: \"[boolean/S] tells whether this scope contains a direct call to the global `eval`\",\n parent_scope: \"[AST_Scope?/S] link to the parent scope\",\n enclosed: \"[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes\",\n cname: \"[integer/S] current index for mangling variables (used internally by the mangler)\",\n },\n get_defun_scope: function() {\n var self = this;\n while (self.is_block_scope()) {\n self = self.parent_scope;\n }\n return self;\n },\n clone: function(deep) {\n var node = this._clone(deep);\n if (this.variables) node.variables = new Map(this.variables);\n if (this.functions) node.functions = new Map(this.functions);\n if (this.enclosed) node.enclosed = this.enclosed.slice();\n if (this._block_scope) node._block_scope = this._block_scope;\n return node;\n },\n pinned: function() {\n return this.uses_eval || this.uses_with;\n }\n}, AST_Block);\n\nvar AST_Toplevel = DEFNODE(\"Toplevel\", \"globals\", {\n $documentation: \"The toplevel scope\",\n $propdoc: {\n globals: \"[Map/S] a map of name -> SymbolDef for all undeclared names\",\n },\n wrap_commonjs: function(name) {\n var body = this.body;\n var wrapped_tl = \"(function(exports){'$ORIG';})(typeof \" + name + \"=='undefined'?(\" + name + \"={}):\" + name + \");\";\n wrapped_tl = parse(wrapped_tl);\n wrapped_tl = wrapped_tl.transform(new TreeTransformer(function(node) {\n if (node instanceof AST_Directive && node.value == \"$ORIG\") {\n return MAP.splice(body);\n }\n }));\n return wrapped_tl;\n },\n wrap_enclose: function(args_values) {\n if (typeof args_values != \"string\") args_values = \"\";\n var index = args_values.indexOf(\":\");\n if (index < 0) index = args_values.length;\n var body = this.body;\n return parse([\n \"(function(\",\n args_values.slice(0, index),\n '){\"$ORIG\"})(',\n args_values.slice(index + 1),\n \")\"\n ].join(\"\")).transform(new TreeTransformer(function(node) {\n if (node instanceof AST_Directive && node.value == \"$ORIG\") {\n return MAP.splice(body);\n }\n }));\n }\n}, AST_Scope);\n\nvar AST_Expansion = DEFNODE(\"Expansion\", \"expression\", {\n $documentation: \"An expandible argument, such as ...rest, a splat, such as [1,2,...all], or an expansion in a variable declaration, such as var [first, ...rest] = list\",\n $propdoc: {\n expression: \"[AST_Node] the thing to be expanded\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression.walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.expression);\n },\n});\n\nvar AST_Lambda = DEFNODE(\"Lambda\", \"name argnames uses_arguments is_generator async\", {\n $documentation: \"Base class for functions\",\n $propdoc: {\n name: \"[AST_SymbolDeclaration?] the name of this function\",\n argnames: \"[AST_SymbolFunarg|AST_Destructuring|AST_Expansion|AST_DefaultAssign*] array of function arguments, destructurings, or expanding arguments\",\n uses_arguments: \"[boolean/S] tells whether this function accesses the arguments array\",\n is_generator: \"[boolean] is this a generator method\",\n async: \"[boolean] is this method async\",\n },\n args_as_names: function () {\n var out = [];\n for (var i = 0; i < this.argnames.length; i++) {\n if (this.argnames[i] instanceof AST_Destructuring) {\n out.push(...this.argnames[i].all_symbols());\n } else {\n out.push(this.argnames[i]);\n }\n }\n return out;\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.name) this.name._walk(visitor);\n var argnames = this.argnames;\n for (var i = 0, len = argnames.length; i < len; i++) {\n argnames[i]._walk(visitor);\n }\n walk_body(this, visitor);\n });\n },\n _children_backwards(push) {\n let i = this.body.length;\n while (i--) push(this.body[i]);\n\n i = this.argnames.length;\n while (i--) push(this.argnames[i]);\n\n if (this.name) push(this.name);\n },\n}, AST_Scope);\n\nvar AST_Accessor = DEFNODE(\"Accessor\", null, {\n $documentation: \"A setter/getter function. The `name` property is always null.\"\n}, AST_Lambda);\n\nvar AST_Function = DEFNODE(\"Function\", null, {\n $documentation: \"A function expression\"\n}, AST_Lambda);\n\nvar AST_Arrow = DEFNODE(\"Arrow\", null, {\n $documentation: \"An ES6 Arrow function ((a) => b)\"\n}, AST_Lambda);\n\nvar AST_Defun = DEFNODE(\"Defun\", null, {\n $documentation: \"A function definition\"\n}, AST_Lambda);\n\n/* -----[ DESTRUCTURING ]----- */\nvar AST_Destructuring = DEFNODE(\"Destructuring\", \"names is_array\", {\n $documentation: \"A destructuring of several names. Used in destructuring assignment and with destructuring function argument names\",\n $propdoc: {\n \"names\": \"[AST_Node*] Array of properties or elements\",\n \"is_array\": \"[Boolean] Whether the destructuring represents an object or array\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.names.forEach(function(name) {\n name._walk(visitor);\n });\n });\n },\n _children_backwards(push) {\n let i = this.names.length;\n while (i--) push(this.names[i]);\n },\n all_symbols: function() {\n var out = [];\n this.walk(new TreeWalker(function (node) {\n if (node instanceof AST_Symbol) {\n out.push(node);\n }\n }));\n return out;\n }\n});\n\nvar AST_PrefixedTemplateString = DEFNODE(\"PrefixedTemplateString\", \"template_string prefix\", {\n $documentation: \"A templatestring with a prefix, such as String.raw`foobarbaz`\",\n $propdoc: {\n template_string: \"[AST_TemplateString] The template string\",\n prefix: \"[AST_SymbolRef|AST_PropAccess] The prefix, which can be a symbol such as `foo` or a dotted expression such as `String.raw`.\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function () {\n this.prefix._walk(visitor);\n this.template_string._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.template_string);\n push(this.prefix);\n },\n});\n\nvar AST_TemplateString = DEFNODE(\"TemplateString\", \"segments\", {\n $documentation: \"A template string literal\",\n $propdoc: {\n segments: \"[AST_Node*] One or more segments, starting with AST_TemplateSegment. AST_Node may follow AST_TemplateSegment, but each AST_Node must be followed by AST_TemplateSegment.\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.segments.forEach(function(seg) {\n seg._walk(visitor);\n });\n });\n },\n _children_backwards(push) {\n let i = this.segments.length;\n while (i--) push(this.segments[i]);\n }\n});\n\nvar AST_TemplateSegment = DEFNODE(\"TemplateSegment\", \"value raw\", {\n $documentation: \"A segment of a template string literal\",\n $propdoc: {\n value: \"Content of the segment\",\n raw: \"Raw content of the segment\"\n }\n});\n\n/* -----[ JUMPS ]----- */\n\nvar AST_Jump = DEFNODE(\"Jump\", null, {\n $documentation: \"Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)\"\n}, AST_Statement);\n\nvar AST_Exit = DEFNODE(\"Exit\", \"value\", {\n $documentation: \"Base class for “exits” (`return` and `throw`)\",\n $propdoc: {\n value: \"[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, this.value && function() {\n this.value._walk(visitor);\n });\n },\n _children_backwards(push) {\n if (this.value) push(this.value);\n },\n}, AST_Jump);\n\nvar AST_Return = DEFNODE(\"Return\", null, {\n $documentation: \"A `return` statement\"\n}, AST_Exit);\n\nvar AST_Throw = DEFNODE(\"Throw\", null, {\n $documentation: \"A `throw` statement\"\n}, AST_Exit);\n\nvar AST_LoopControl = DEFNODE(\"LoopControl\", \"label\", {\n $documentation: \"Base class for loop control statements (`break` and `continue`)\",\n $propdoc: {\n label: \"[AST_LabelRef?] the label, or null if none\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, this.label && function() {\n this.label._walk(visitor);\n });\n },\n _children_backwards(push) {\n if (this.label) push(this.label);\n },\n}, AST_Jump);\n\nvar AST_Break = DEFNODE(\"Break\", null, {\n $documentation: \"A `break` statement\"\n}, AST_LoopControl);\n\nvar AST_Continue = DEFNODE(\"Continue\", null, {\n $documentation: \"A `continue` statement\"\n}, AST_LoopControl);\n\nvar AST_Await = DEFNODE(\"Await\", \"expression\", {\n $documentation: \"An `await` statement\",\n $propdoc: {\n expression: \"[AST_Node] the mandatory expression being awaited\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.expression);\n },\n});\n\nvar AST_Yield = DEFNODE(\"Yield\", \"expression is_star\", {\n $documentation: \"A `yield` statement\",\n $propdoc: {\n expression: \"[AST_Node?] the value returned or thrown by this statement; could be null (representing undefined) but only when is_star is set to false\",\n is_star: \"[Boolean] Whether this is a yield or yield* statement\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, this.expression && function() {\n this.expression._walk(visitor);\n });\n },\n _children_backwards(push) {\n if (this.expression) push(this.expression);\n }\n});\n\n/* -----[ IF ]----- */\n\nvar AST_If = DEFNODE(\"If\", \"condition alternative\", {\n $documentation: \"A `if` statement\",\n $propdoc: {\n condition: \"[AST_Node] the `if` condition\",\n alternative: \"[AST_Statement?] the `else` part, or null if not present\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.condition._walk(visitor);\n this.body._walk(visitor);\n if (this.alternative) this.alternative._walk(visitor);\n });\n },\n _children_backwards(push) {\n if (this.alternative) {\n push(this.alternative);\n }\n push(this.body);\n push(this.condition);\n }\n}, AST_StatementWithBody);\n\n/* -----[ SWITCH ]----- */\n\nvar AST_Switch = DEFNODE(\"Switch\", \"expression\", {\n $documentation: \"A `switch` statement\",\n $propdoc: {\n expression: \"[AST_Node] the `switch` “discriminant”\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n walk_body(this, visitor);\n });\n },\n _children_backwards(push) {\n let i = this.body.length;\n while (i--) push(this.body[i]);\n push(this.expression);\n }\n}, AST_Block);\n\nvar AST_SwitchBranch = DEFNODE(\"SwitchBranch\", null, {\n $documentation: \"Base class for `switch` branches\",\n}, AST_Block);\n\nvar AST_Default = DEFNODE(\"Default\", null, {\n $documentation: \"A `default` switch branch\",\n}, AST_SwitchBranch);\n\nvar AST_Case = DEFNODE(\"Case\", \"expression\", {\n $documentation: \"A `case` switch branch\",\n $propdoc: {\n expression: \"[AST_Node] the `case` expression\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n walk_body(this, visitor);\n });\n },\n _children_backwards(push) {\n let i = this.body.length;\n while (i--) push(this.body[i]);\n push(this.expression);\n },\n}, AST_SwitchBranch);\n\n/* -----[ EXCEPTIONS ]----- */\n\nvar AST_Try = DEFNODE(\"Try\", \"bcatch bfinally\", {\n $documentation: \"A `try` statement\",\n $propdoc: {\n bcatch: \"[AST_Catch?] the catch block, or null if not present\",\n bfinally: \"[AST_Finally?] the finally block, or null if not present\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n walk_body(this, visitor);\n if (this.bcatch) this.bcatch._walk(visitor);\n if (this.bfinally) this.bfinally._walk(visitor);\n });\n },\n _children_backwards(push) {\n if (this.bfinally) push(this.bfinally);\n if (this.bcatch) push(this.bcatch);\n let i = this.body.length;\n while (i--) push(this.body[i]);\n },\n}, AST_Block);\n\nvar AST_Catch = DEFNODE(\"Catch\", \"argname\", {\n $documentation: \"A `catch` node; only makes sense as part of a `try` statement\",\n $propdoc: {\n argname: \"[AST_SymbolCatch|AST_Destructuring|AST_Expansion|AST_DefaultAssign] symbol for the exception\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.argname) this.argname._walk(visitor);\n walk_body(this, visitor);\n });\n },\n _children_backwards(push) {\n let i = this.body.length;\n while (i--) push(this.body[i]);\n if (this.argname) push(this.argname);\n },\n}, AST_Block);\n\nvar AST_Finally = DEFNODE(\"Finally\", null, {\n $documentation: \"A `finally` node; only makes sense as part of a `try` statement\"\n}, AST_Block);\n\n/* -----[ VAR/CONST ]----- */\n\nvar AST_Definitions = DEFNODE(\"Definitions\", \"definitions\", {\n $documentation: \"Base class for `var` or `const` nodes (variable declarations/initializations)\",\n $propdoc: {\n definitions: \"[AST_VarDef*] array of variable definitions\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n var definitions = this.definitions;\n for (var i = 0, len = definitions.length; i < len; i++) {\n definitions[i]._walk(visitor);\n }\n });\n },\n _children_backwards(push) {\n let i = this.definitions.length;\n while (i--) push(this.definitions[i]);\n },\n}, AST_Statement);\n\nvar AST_Var = DEFNODE(\"Var\", null, {\n $documentation: \"A `var` statement\"\n}, AST_Definitions);\n\nvar AST_Let = DEFNODE(\"Let\", null, {\n $documentation: \"A `let` statement\"\n}, AST_Definitions);\n\nvar AST_Const = DEFNODE(\"Const\", null, {\n $documentation: \"A `const` statement\"\n}, AST_Definitions);\n\nvar AST_VarDef = DEFNODE(\"VarDef\", \"name value\", {\n $documentation: \"A variable declaration; only appears in a AST_Definitions node\",\n $propdoc: {\n name: \"[AST_Destructuring|AST_SymbolConst|AST_SymbolLet|AST_SymbolVar] name of the variable\",\n value: \"[AST_Node?] initializer, or null of there's no initializer\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.name._walk(visitor);\n if (this.value) this.value._walk(visitor);\n });\n },\n _children_backwards(push) {\n if (this.value) push(this.value);\n push(this.name);\n },\n});\n\nvar AST_NameMapping = DEFNODE(\"NameMapping\", \"foreign_name name\", {\n $documentation: \"The part of the export/import statement that declare names from a module.\",\n $propdoc: {\n foreign_name: \"[AST_SymbolExportForeign|AST_SymbolImportForeign] The name being exported/imported (as specified in the module)\",\n name: \"[AST_SymbolExport|AST_SymbolImport] The name as it is visible to this module.\"\n },\n _walk: function (visitor) {\n return visitor._visit(this, function() {\n this.foreign_name._walk(visitor);\n this.name._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.name);\n push(this.foreign_name);\n },\n});\n\nvar AST_Import = DEFNODE(\"Import\", \"imported_name imported_names module_name\", {\n $documentation: \"An `import` statement\",\n $propdoc: {\n imported_name: \"[AST_SymbolImport] The name of the variable holding the module's default export.\",\n imported_names: \"[AST_NameMapping*] The names of non-default imported variables\",\n module_name: \"[AST_String] String literal describing where this module came from\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.imported_name) {\n this.imported_name._walk(visitor);\n }\n if (this.imported_names) {\n this.imported_names.forEach(function(name_import) {\n name_import._walk(visitor);\n });\n }\n this.module_name._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.module_name);\n if (this.imported_names) {\n let i = this.imported_names.length;\n while (i--) push(this.imported_names[i]);\n }\n if (this.imported_name) push(this.imported_name);\n },\n});\n\nvar AST_Export = DEFNODE(\"Export\", \"exported_definition exported_value is_default exported_names module_name\", {\n $documentation: \"An `export` statement\",\n $propdoc: {\n exported_definition: \"[AST_Defun|AST_Definitions|AST_DefClass?] An exported definition\",\n exported_value: \"[AST_Node?] An exported value\",\n exported_names: \"[AST_NameMapping*?] List of exported names\",\n module_name: \"[AST_String?] Name of the file to load exports from\",\n is_default: \"[Boolean] Whether this is the default exported value of this module\"\n },\n _walk: function (visitor) {\n return visitor._visit(this, function () {\n if (this.exported_definition) {\n this.exported_definition._walk(visitor);\n }\n if (this.exported_value) {\n this.exported_value._walk(visitor);\n }\n if (this.exported_names) {\n this.exported_names.forEach(function(name_export) {\n name_export._walk(visitor);\n });\n }\n if (this.module_name) {\n this.module_name._walk(visitor);\n }\n });\n },\n _children_backwards(push) {\n if (this.module_name) push(this.module_name);\n if (this.exported_names) {\n let i = this.exported_names.length;\n while (i--) push(this.exported_names[i]);\n }\n if (this.exported_value) push(this.exported_value);\n if (this.exported_definition) push(this.exported_definition);\n }\n}, AST_Statement);\n\n/* -----[ OTHER ]----- */\n\nvar AST_Call = DEFNODE(\"Call\", \"expression args _annotations\", {\n $documentation: \"A function call expression\",\n $propdoc: {\n expression: \"[AST_Node] expression to invoke as function\",\n args: \"[AST_Node*] array of arguments\",\n _annotations: \"[number] bitfield containing information about the call\"\n },\n initialize() {\n if (this._annotations == null) this._annotations = 0;\n },\n _walk(visitor) {\n return visitor._visit(this, function() {\n var args = this.args;\n for (var i = 0, len = args.length; i < len; i++) {\n args[i]._walk(visitor);\n }\n this.expression._walk(visitor); // TODO why do we need to crawl this last?\n });\n },\n _children_backwards(push) {\n let i = this.args.length;\n while (i--) push(this.args[i]);\n push(this.expression);\n },\n});\n\nvar AST_New = DEFNODE(\"New\", null, {\n $documentation: \"An object instantiation. Derives from a function call since it has exactly the same properties\"\n}, AST_Call);\n\nvar AST_Sequence = DEFNODE(\"Sequence\", \"expressions\", {\n $documentation: \"A sequence expression (comma-separated expressions)\",\n $propdoc: {\n expressions: \"[AST_Node*] array of expressions (at least two)\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expressions.forEach(function(node) {\n node._walk(visitor);\n });\n });\n },\n _children_backwards(push) {\n let i = this.expressions.length;\n while (i--) push(this.expressions[i]);\n },\n});\n\nvar AST_PropAccess = DEFNODE(\"PropAccess\", \"expression property\", {\n $documentation: \"Base class for property access expressions, i.e. `a.foo` or `a[\\\"foo\\\"]`\",\n $propdoc: {\n expression: \"[AST_Node] the “container” expression\",\n property: \"[AST_Node|string] the property to access. For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node\"\n }\n});\n\nvar AST_Dot = DEFNODE(\"Dot\", \"quote\", {\n $documentation: \"A dotted property access expression\",\n $propdoc: {\n quote: \"[string] the original quote character when transformed from AST_Sub\",\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.expression);\n },\n}, AST_PropAccess);\n\nvar AST_Sub = DEFNODE(\"Sub\", null, {\n $documentation: \"Index-style property access, i.e. `a[\\\"foo\\\"]`\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n this.property._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.property);\n push(this.expression);\n },\n}, AST_PropAccess);\n\nvar AST_Unary = DEFNODE(\"Unary\", \"operator expression\", {\n $documentation: \"Base class for unary expressions\",\n $propdoc: {\n operator: \"[string] the operator\",\n expression: \"[AST_Node] expression that this unary operator applies to\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.expression);\n },\n});\n\nvar AST_UnaryPrefix = DEFNODE(\"UnaryPrefix\", null, {\n $documentation: \"Unary prefix expression, i.e. `typeof i` or `++i`\"\n}, AST_Unary);\n\nvar AST_UnaryPostfix = DEFNODE(\"UnaryPostfix\", null, {\n $documentation: \"Unary postfix expression, i.e. `i++`\"\n}, AST_Unary);\n\nvar AST_Binary = DEFNODE(\"Binary\", \"operator left right\", {\n $documentation: \"Binary expression, i.e. `a + b`\",\n $propdoc: {\n left: \"[AST_Node] left-hand side expression\",\n operator: \"[string] the operator\",\n right: \"[AST_Node] right-hand side expression\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.left._walk(visitor);\n this.right._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.right);\n push(this.left);\n },\n});\n\nvar AST_Conditional = DEFNODE(\"Conditional\", \"condition consequent alternative\", {\n $documentation: \"Conditional expression using the ternary operator, i.e. `a ? b : c`\",\n $propdoc: {\n condition: \"[AST_Node]\",\n consequent: \"[AST_Node]\",\n alternative: \"[AST_Node]\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.condition._walk(visitor);\n this.consequent._walk(visitor);\n this.alternative._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.alternative);\n push(this.consequent);\n push(this.condition);\n },\n});\n\nvar AST_Assign = DEFNODE(\"Assign\", null, {\n $documentation: \"An assignment expression — `a = b + 5`\",\n}, AST_Binary);\n\nvar AST_DefaultAssign = DEFNODE(\"DefaultAssign\", null, {\n $documentation: \"A default assignment expression like in `(a = 3) => a`\"\n}, AST_Binary);\n\n/* -----[ LITERALS ]----- */\n\nvar AST_Array = DEFNODE(\"Array\", \"elements\", {\n $documentation: \"An array literal\",\n $propdoc: {\n elements: \"[AST_Node*] array of elements\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n var elements = this.elements;\n for (var i = 0, len = elements.length; i < len; i++) {\n elements[i]._walk(visitor);\n }\n });\n },\n _children_backwards(push) {\n let i = this.elements.length;\n while (i--) push(this.elements[i]);\n },\n});\n\nvar AST_Object = DEFNODE(\"Object\", \"properties\", {\n $documentation: \"An object literal\",\n $propdoc: {\n properties: \"[AST_ObjectProperty*] array of properties\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n var properties = this.properties;\n for (var i = 0, len = properties.length; i < len; i++) {\n properties[i]._walk(visitor);\n }\n });\n },\n _children_backwards(push) {\n let i = this.properties.length;\n while (i--) push(this.properties[i]);\n },\n});\n\nvar AST_ObjectProperty = DEFNODE(\"ObjectProperty\", \"key value\", {\n $documentation: \"Base class for literal object properties\",\n $propdoc: {\n key: \"[string|AST_Node] property name. For ObjectKeyVal this is a string. For getters, setters and computed property this is an AST_Node.\",\n value: \"[AST_Node] property value. For getters and setters this is an AST_Accessor.\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.key instanceof AST_Node)\n this.key._walk(visitor);\n this.value._walk(visitor);\n });\n },\n _children_backwards(push) {\n push(this.value);\n if (this.key instanceof AST_Node) push(this.key);\n }\n});\n\nvar AST_ObjectKeyVal = DEFNODE(\"ObjectKeyVal\", \"quote\", {\n $documentation: \"A key: value object property\",\n $propdoc: {\n quote: \"[string] the original quote character\"\n },\n computed_key() {\n return this.key instanceof AST_Node;\n }\n}, AST_ObjectProperty);\n\nvar AST_ObjectSetter = DEFNODE(\"ObjectSetter\", \"quote static\", {\n $propdoc: {\n quote: \"[string|undefined] the original quote character, if any\",\n static: \"[boolean] whether this is a static setter (classes only)\"\n },\n $documentation: \"An object setter property\",\n computed_key() {\n return !(this.key instanceof AST_SymbolMethod);\n }\n}, AST_ObjectProperty);\n\nvar AST_ObjectGetter = DEFNODE(\"ObjectGetter\", \"quote static\", {\n $propdoc: {\n quote: \"[string|undefined] the original quote character, if any\",\n static: \"[boolean] whether this is a static getter (classes only)\"\n },\n $documentation: \"An object getter property\",\n computed_key() {\n return !(this.key instanceof AST_SymbolMethod);\n }\n}, AST_ObjectProperty);\n\nvar AST_ConciseMethod = DEFNODE(\"ConciseMethod\", \"quote static is_generator async\", {\n $propdoc: {\n quote: \"[string|undefined] the original quote character, if any\",\n static: \"[boolean] is this method static (classes only)\",\n is_generator: \"[boolean] is this a generator method\",\n async: \"[boolean] is this method async\",\n },\n $documentation: \"An ES6 concise method inside an object or class\",\n computed_key() {\n return !(this.key instanceof AST_SymbolMethod);\n }\n}, AST_ObjectProperty);\n\nvar AST_Class = DEFNODE(\"Class\", \"name extends properties\", {\n $propdoc: {\n name: \"[AST_SymbolClass|AST_SymbolDefClass?] optional class name.\",\n extends: \"[AST_Node]? optional parent class\",\n properties: \"[AST_ObjectProperty*] array of properties\"\n },\n $documentation: \"An ES6 class\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.name) {\n this.name._walk(visitor);\n }\n if (this.extends) {\n this.extends._walk(visitor);\n }\n this.properties.forEach((prop) => prop._walk(visitor));\n });\n },\n _children_backwards(push) {\n let i = this.properties.length;\n while (i--) push(this.properties[i]);\n if (this.extends) push(this.extends);\n if (this.name) push(this.name);\n },\n}, AST_Scope /* TODO a class might have a scope but it's not a scope */);\n\nvar AST_ClassProperty = DEFNODE(\"ClassProperty\", \"static quote\", {\n $documentation: \"A class property\",\n $propdoc: {\n static: \"[boolean] whether this is a static key\",\n quote: \"[string] which quote is being used\"\n },\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n if (this.key instanceof AST_Node)\n this.key._walk(visitor);\n if (this.value instanceof AST_Node)\n this.value._walk(visitor);\n });\n },\n _children_backwards(push) {\n if (this.value instanceof AST_Node) push(this.value);\n if (this.key instanceof AST_Node) push(this.key);\n },\n computed_key() {\n return !(this.key instanceof AST_SymbolClassProperty);\n }\n}, AST_ObjectProperty);\n\nvar AST_DefClass = DEFNODE(\"DefClass\", null, {\n $documentation: \"A class definition\",\n}, AST_Class);\n\nvar AST_ClassExpression = DEFNODE(\"ClassExpression\", null, {\n $documentation: \"A class expression.\"\n}, AST_Class);\n\nvar AST_Symbol = DEFNODE(\"Symbol\", \"scope name thedef\", {\n $propdoc: {\n name: \"[string] name of this symbol\",\n scope: \"[AST_Scope/S] the current scope (not necessarily the definition scope)\",\n thedef: \"[SymbolDef/S] the definition of this symbol\"\n },\n $documentation: \"Base class for all symbols\"\n});\n\nvar AST_NewTarget = DEFNODE(\"NewTarget\", null, {\n $documentation: \"A reference to new.target\"\n});\n\nvar AST_SymbolDeclaration = DEFNODE(\"SymbolDeclaration\", \"init\", {\n $documentation: \"A declaration symbol (symbol in var/const, function name or argument, symbol in catch)\",\n}, AST_Symbol);\n\nvar AST_SymbolVar = DEFNODE(\"SymbolVar\", null, {\n $documentation: \"Symbol defining a variable\",\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolBlockDeclaration = DEFNODE(\"SymbolBlockDeclaration\", null, {\n $documentation: \"Base class for block-scoped declaration symbols\"\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolConst = DEFNODE(\"SymbolConst\", null, {\n $documentation: \"A constant declaration\"\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolLet = DEFNODE(\"SymbolLet\", null, {\n $documentation: \"A block-scoped `let` declaration\"\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolFunarg = DEFNODE(\"SymbolFunarg\", null, {\n $documentation: \"Symbol naming a function argument\",\n}, AST_SymbolVar);\n\nvar AST_SymbolDefun = DEFNODE(\"SymbolDefun\", null, {\n $documentation: \"Symbol defining a function\",\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolMethod = DEFNODE(\"SymbolMethod\", null, {\n $documentation: \"Symbol in an object defining a method\",\n}, AST_Symbol);\n\nvar AST_SymbolClassProperty = DEFNODE(\"SymbolClassProperty\", null, {\n $documentation: \"Symbol for a class property\",\n}, AST_Symbol);\n\nvar AST_SymbolLambda = DEFNODE(\"SymbolLambda\", null, {\n $documentation: \"Symbol naming a function expression\",\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolDefClass = DEFNODE(\"SymbolDefClass\", null, {\n $documentation: \"Symbol naming a class's name in a class declaration. Lexically scoped to its containing scope, and accessible within the class.\"\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolClass = DEFNODE(\"SymbolClass\", null, {\n $documentation: \"Symbol naming a class's name. Lexically scoped to the class.\"\n}, AST_SymbolDeclaration);\n\nvar AST_SymbolCatch = DEFNODE(\"SymbolCatch\", null, {\n $documentation: \"Symbol naming the exception in catch\",\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolImport = DEFNODE(\"SymbolImport\", null, {\n $documentation: \"Symbol referring to an imported name\",\n}, AST_SymbolBlockDeclaration);\n\nvar AST_SymbolImportForeign = DEFNODE(\"SymbolImportForeign\", null, {\n $documentation: \"A symbol imported from a module, but it is defined in the other module, and its real name is irrelevant for this module's purposes\",\n}, AST_Symbol);\n\nvar AST_Label = DEFNODE(\"Label\", \"references\", {\n $documentation: \"Symbol naming a label (declaration)\",\n $propdoc: {\n references: \"[AST_LoopControl*] a list of nodes referring to this label\"\n },\n initialize: function() {\n this.references = [];\n this.thedef = this;\n }\n}, AST_Symbol);\n\nvar AST_SymbolRef = DEFNODE(\"SymbolRef\", null, {\n $documentation: \"Reference to some symbol (not definition/declaration)\",\n}, AST_Symbol);\n\nvar AST_SymbolExport = DEFNODE(\"SymbolExport\", null, {\n $documentation: \"Symbol referring to a name to export\",\n}, AST_SymbolRef);\n\nvar AST_SymbolExportForeign = DEFNODE(\"SymbolExportForeign\", null, {\n $documentation: \"A symbol exported from this module, but it is used in the other module, and its real name is irrelevant for this module's purposes\",\n}, AST_Symbol);\n\nvar AST_LabelRef = DEFNODE(\"LabelRef\", null, {\n $documentation: \"Reference to a label symbol\",\n}, AST_Symbol);\n\nvar AST_This = DEFNODE(\"This\", null, {\n $documentation: \"The `this` symbol\",\n}, AST_Symbol);\n\nvar AST_Super = DEFNODE(\"Super\", null, {\n $documentation: \"The `super` symbol\",\n}, AST_This);\n\nvar AST_Constant = DEFNODE(\"Constant\", null, {\n $documentation: \"Base class for all constants\",\n getValue: function() {\n return this.value;\n }\n});\n\nvar AST_String = DEFNODE(\"String\", \"value quote\", {\n $documentation: \"A string literal\",\n $propdoc: {\n value: \"[string] the contents of this string\",\n quote: \"[string] the original quote character\"\n }\n}, AST_Constant);\n\nvar AST_Number = DEFNODE(\"Number\", \"value literal\", {\n $documentation: \"A number literal\",\n $propdoc: {\n value: \"[number] the numeric value\",\n literal: \"[string] numeric value as string (optional)\"\n }\n}, AST_Constant);\n\nvar AST_BigInt = DEFNODE(\"BigInt\", \"value\", {\n $documentation: \"A big int literal\",\n $propdoc: {\n value: \"[string] big int value\"\n }\n}, AST_Constant);\n\nvar AST_RegExp = DEFNODE(\"RegExp\", \"value\", {\n $documentation: \"A regexp literal\",\n $propdoc: {\n value: \"[RegExp] the actual regexp\",\n }\n}, AST_Constant);\n\nvar AST_Atom = DEFNODE(\"Atom\", null, {\n $documentation: \"Base class for atoms\",\n}, AST_Constant);\n\nvar AST_Null = DEFNODE(\"Null\", null, {\n $documentation: \"The `null` atom\",\n value: null\n}, AST_Atom);\n\nvar AST_NaN = DEFNODE(\"NaN\", null, {\n $documentation: \"The impossible value\",\n value: 0/0\n}, AST_Atom);\n\nvar AST_Undefined = DEFNODE(\"Undefined\", null, {\n $documentation: \"The `undefined` value\",\n value: (function() {}())\n}, AST_Atom);\n\nvar AST_Hole = DEFNODE(\"Hole\", null, {\n $documentation: \"A hole in an array\",\n value: (function() {}())\n}, AST_Atom);\n\nvar AST_Infinity = DEFNODE(\"Infinity\", null, {\n $documentation: \"The `Infinity` value\",\n value: 1/0\n}, AST_Atom);\n\nvar AST_Boolean = DEFNODE(\"Boolean\", null, {\n $documentation: \"Base class for booleans\",\n}, AST_Atom);\n\nvar AST_False = DEFNODE(\"False\", null, {\n $documentation: \"The `false` atom\",\n value: false\n}, AST_Boolean);\n\nvar AST_True = DEFNODE(\"True\", null, {\n $documentation: \"The `true` atom\",\n value: true\n}, AST_Boolean);\n\n/* -----[ Walk function ]---- */\n\n/**\n * Walk nodes in depth-first search fashion.\n * Callback can return `walk_abort` symbol to stop iteration.\n * It can also return `true` to stop iteration just for child nodes.\n * Iteration can be stopped and continued by passing the `to_visit` argument,\n * which is given to the callback in the second argument.\n **/\nfunction walk(node, cb, to_visit = [node]) {\n const push = to_visit.push.bind(to_visit);\n while (to_visit.length) {\n const node = to_visit.pop();\n const ret = cb(node, to_visit);\n\n if (ret) {\n if (ret === walk_abort) return true;\n continue;\n }\n\n node._children_backwards(push);\n }\n return false;\n}\n\nfunction walk_parent(node, cb, initial_stack) {\n const to_visit = [node];\n const push = to_visit.push.bind(to_visit);\n const stack = initial_stack ? initial_stack.slice() : [];\n const parent_pop_indices = [];\n\n let current;\n\n const info = {\n parent: (n = 0) => {\n if (n === -1) {\n return current;\n }\n\n // [ p1 p0 ] [ 1 0 ]\n if (initial_stack && n >= stack.length) {\n n -= stack.length;\n return initial_stack[\n initial_stack.length - (n + 1)\n ];\n }\n\n return stack[stack.length - (1 + n)];\n },\n };\n\n while (to_visit.length) {\n current = to_visit.pop();\n\n while (\n parent_pop_indices.length &&\n to_visit.length == parent_pop_indices[parent_pop_indices.length - 1]\n ) {\n stack.pop();\n parent_pop_indices.pop();\n }\n\n const ret = cb(current, info);\n\n if (ret) {\n if (ret === walk_abort) return true;\n continue;\n }\n\n const visit_length = to_visit.length;\n\n current._children_backwards(push);\n\n // Push only if we're going to traverse the children\n if (to_visit.length > visit_length) {\n stack.push(current);\n parent_pop_indices.push(visit_length - 1);\n }\n }\n\n return false;\n}\n\nconst walk_abort = Symbol(\"abort walk\");\n\n/* -----[ TreeWalker ]----- */\n\nclass TreeWalker {\n constructor(callback) {\n this.visit = callback;\n this.stack = [];\n this.directives = Object.create(null);\n }\n\n _visit(node, descend) {\n this.push(node);\n var ret = this.visit(node, descend ? function() {\n descend.call(node);\n } : noop);\n if (!ret && descend) {\n descend.call(node);\n }\n this.pop();\n return ret;\n }\n\n parent(n) {\n return this.stack[this.stack.length - 2 - (n || 0)];\n }\n\n push(node) {\n if (node instanceof AST_Lambda) {\n this.directives = Object.create(this.directives);\n } else if (node instanceof AST_Directive && !this.directives[node.value]) {\n this.directives[node.value] = node;\n } else if (node instanceof AST_Class) {\n this.directives = Object.create(this.directives);\n if (!this.directives[\"use strict\"]) {\n this.directives[\"use strict\"] = node;\n }\n }\n this.stack.push(node);\n }\n\n pop() {\n var node = this.stack.pop();\n if (node instanceof AST_Lambda || node instanceof AST_Class) {\n this.directives = Object.getPrototypeOf(this.directives);\n }\n }\n\n self() {\n return this.stack[this.stack.length - 1];\n }\n\n find_parent(type) {\n var stack = this.stack;\n for (var i = stack.length; --i >= 0;) {\n var x = stack[i];\n if (x instanceof type) return x;\n }\n }\n\n has_directive(type) {\n var dir = this.directives[type];\n if (dir) return dir;\n var node = this.stack[this.stack.length - 1];\n if (node instanceof AST_Scope && node.body) {\n for (var i = 0; i < node.body.length; ++i) {\n var st = node.body[i];\n if (!(st instanceof AST_Directive)) break;\n if (st.value == type) return st;\n }\n }\n }\n\n loopcontrol_target(node) {\n var stack = this.stack;\n if (node.label) for (var i = stack.length; --i >= 0;) {\n var x = stack[i];\n if (x instanceof AST_LabeledStatement && x.label.name == node.label.name)\n return x.body;\n } else for (var i = stack.length; --i >= 0;) {\n var x = stack[i];\n if (x instanceof AST_IterationStatement\n || node instanceof AST_Break && x instanceof AST_Switch)\n return x;\n }\n }\n}\n\n// Tree transformer helpers.\nclass TreeTransformer extends TreeWalker {\n constructor(before, after) {\n super();\n this.before = before;\n this.after = after;\n }\n}\n\nconst _PURE = 0b00000001;\nconst _INLINE = 0b00000010;\nconst _NOINLINE = 0b00000100;\n\nexport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Atom,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_Block,\n AST_BlockStatement,\n AST_Boolean,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_ClassExpression,\n AST_ClassProperty,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Constant,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_DefClass,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_DWLoop,\n AST_EmptyStatement,\n AST_Exit,\n AST_Expansion,\n AST_Export,\n AST_False,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_Infinity,\n AST_IterationStatement,\n AST_Jump,\n AST_Label,\n AST_LabeledStatement,\n AST_LabelRef,\n AST_Lambda,\n AST_Let,\n AST_LoopControl,\n AST_NameMapping,\n AST_NaN,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Null,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Scope,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Statement,\n AST_StatementWithBody,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SwitchBranch,\n AST_Symbol,\n AST_SymbolBlockDeclaration,\n AST_SymbolCatch,\n AST_SymbolClass,\n AST_SymbolClassProperty,\n AST_SymbolConst,\n AST_SymbolDeclaration,\n AST_SymbolDefClass,\n AST_SymbolDefun,\n AST_SymbolExport,\n AST_SymbolExportForeign,\n AST_SymbolFunarg,\n AST_SymbolImport,\n AST_SymbolImportForeign,\n AST_SymbolLambda,\n AST_SymbolLet,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_SymbolVar,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Token,\n AST_Toplevel,\n AST_True,\n AST_Try,\n AST_Unary,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Undefined,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n TreeTransformer,\n TreeWalker,\n walk,\n walk_abort,\n walk_body,\n walk_parent,\n _INLINE,\n _NOINLINE,\n _PURE,\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n AST_Array,\n AST_Await,\n AST_Binary,\n AST_Block,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_Conditional,\n AST_Definitions,\n AST_Destructuring,\n AST_Do,\n AST_Dot,\n AST_Exit,\n AST_Expansion,\n AST_Export,\n AST_For,\n AST_ForIn,\n AST_If,\n AST_Import,\n AST_LabeledStatement,\n AST_Lambda,\n AST_LoopControl,\n AST_NameMapping,\n AST_Node,\n AST_Number,\n AST_Object,\n AST_ObjectProperty,\n AST_PrefixedTemplateString,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Sub,\n AST_Switch,\n AST_TemplateString,\n AST_Try,\n AST_Unary,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n} from \"./ast.js\";\nimport {\n MAP,\n noop,\n} from \"./utils/index.js\";\n\nfunction def_transform(node, descend) {\n node.DEFMETHOD(\"transform\", function(tw, in_list) {\n let transformed = undefined;\n tw.push(this);\n if (tw.before) transformed = tw.before(this, descend, in_list);\n if (transformed === undefined) {\n transformed = this;\n descend(transformed, tw);\n if (tw.after) {\n const after_ret = tw.after(transformed, in_list);\n if (after_ret !== undefined) transformed = after_ret;\n }\n }\n tw.pop();\n return transformed;\n });\n}\n\nfunction do_list(list, tw) {\n return MAP(list, function(node) {\n return node.transform(tw, true);\n });\n}\n\ndef_transform(AST_Node, noop);\n\ndef_transform(AST_LabeledStatement, function(self, tw) {\n self.label = self.label.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_SimpleStatement, function(self, tw) {\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_Block, function(self, tw) {\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Do, function(self, tw) {\n self.body = self.body.transform(tw);\n self.condition = self.condition.transform(tw);\n});\n\ndef_transform(AST_While, function(self, tw) {\n self.condition = self.condition.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_For, function(self, tw) {\n if (self.init) self.init = self.init.transform(tw);\n if (self.condition) self.condition = self.condition.transform(tw);\n if (self.step) self.step = self.step.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_ForIn, function(self, tw) {\n self.init = self.init.transform(tw);\n self.object = self.object.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_With, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = self.body.transform(tw);\n});\n\ndef_transform(AST_Exit, function(self, tw) {\n if (self.value) self.value = self.value.transform(tw);\n});\n\ndef_transform(AST_LoopControl, function(self, tw) {\n if (self.label) self.label = self.label.transform(tw);\n});\n\ndef_transform(AST_If, function(self, tw) {\n self.condition = self.condition.transform(tw);\n self.body = self.body.transform(tw);\n if (self.alternative) self.alternative = self.alternative.transform(tw);\n});\n\ndef_transform(AST_Switch, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Case, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Try, function(self, tw) {\n self.body = do_list(self.body, tw);\n if (self.bcatch) self.bcatch = self.bcatch.transform(tw);\n if (self.bfinally) self.bfinally = self.bfinally.transform(tw);\n});\n\ndef_transform(AST_Catch, function(self, tw) {\n if (self.argname) self.argname = self.argname.transform(tw);\n self.body = do_list(self.body, tw);\n});\n\ndef_transform(AST_Definitions, function(self, tw) {\n self.definitions = do_list(self.definitions, tw);\n});\n\ndef_transform(AST_VarDef, function(self, tw) {\n self.name = self.name.transform(tw);\n if (self.value) self.value = self.value.transform(tw);\n});\n\ndef_transform(AST_Destructuring, function(self, tw) {\n self.names = do_list(self.names, tw);\n});\n\ndef_transform(AST_Lambda, function(self, tw) {\n if (self.name) self.name = self.name.transform(tw);\n self.argnames = do_list(self.argnames, tw);\n if (self.body instanceof AST_Node) {\n self.body = self.body.transform(tw);\n } else {\n self.body = do_list(self.body, tw);\n }\n});\n\ndef_transform(AST_Call, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.args = do_list(self.args, tw);\n});\n\ndef_transform(AST_Sequence, function(self, tw) {\n const result = do_list(self.expressions, tw);\n self.expressions = result.length\n ? result\n : [new AST_Number({ value: 0 })];\n});\n\ndef_transform(AST_Dot, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Sub, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.property = self.property.transform(tw);\n});\n\ndef_transform(AST_Yield, function(self, tw) {\n if (self.expression) self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Await, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Unary, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_Binary, function(self, tw) {\n self.left = self.left.transform(tw);\n self.right = self.right.transform(tw);\n});\n\ndef_transform(AST_Conditional, function(self, tw) {\n self.condition = self.condition.transform(tw);\n self.consequent = self.consequent.transform(tw);\n self.alternative = self.alternative.transform(tw);\n});\n\ndef_transform(AST_Array, function(self, tw) {\n self.elements = do_list(self.elements, tw);\n});\n\ndef_transform(AST_Object, function(self, tw) {\n self.properties = do_list(self.properties, tw);\n});\n\ndef_transform(AST_ObjectProperty, function(self, tw) {\n if (self.key instanceof AST_Node) {\n self.key = self.key.transform(tw);\n }\n if (self.value) self.value = self.value.transform(tw);\n});\n\ndef_transform(AST_Class, function(self, tw) {\n if (self.name) self.name = self.name.transform(tw);\n if (self.extends) self.extends = self.extends.transform(tw);\n self.properties = do_list(self.properties, tw);\n});\n\ndef_transform(AST_Expansion, function(self, tw) {\n self.expression = self.expression.transform(tw);\n});\n\ndef_transform(AST_NameMapping, function(self, tw) {\n self.foreign_name = self.foreign_name.transform(tw);\n self.name = self.name.transform(tw);\n});\n\ndef_transform(AST_Import, function(self, tw) {\n if (self.imported_name) self.imported_name = self.imported_name.transform(tw);\n if (self.imported_names) do_list(self.imported_names, tw);\n self.module_name = self.module_name.transform(tw);\n});\n\ndef_transform(AST_Export, function(self, tw) {\n if (self.exported_definition) self.exported_definition = self.exported_definition.transform(tw);\n if (self.exported_value) self.exported_value = self.exported_value.transform(tw);\n if (self.exported_names) do_list(self.exported_names, tw);\n if (self.module_name) self.module_name = self.module_name.transform(tw);\n});\n\ndef_transform(AST_TemplateString, function(self, tw) {\n self.segments = do_list(self.segments, tw);\n});\n\ndef_transform(AST_PrefixedTemplateString, function(self, tw) {\n self.prefix = self.prefix.transform(tw);\n self.template_string = self.template_string.transform(tw);\n});\n\n","import {\n AST_Binary,\n AST_Conditional,\n AST_Dot,\n AST_Object,\n AST_Sequence,\n AST_Statement,\n AST_Sub,\n AST_UnaryPostfix,\n AST_PrefixedTemplateString\n} from \"../ast.js\";\n\n// return true if the node at the top of the stack (that means the\n// innermost node in the current output) is lexically the first in\n// a statement.\nfunction first_in_statement(stack) {\n let node = stack.parent(-1);\n for (let i = 0, p; p = stack.parent(i); i++) {\n if (p instanceof AST_Statement && p.body === node)\n return true;\n if ((p instanceof AST_Sequence && p.expressions[0] === node) ||\n (p.TYPE === \"Call\" && p.expression === node) ||\n (p instanceof AST_PrefixedTemplateString && p.prefix === node) ||\n (p instanceof AST_Dot && p.expression === node) ||\n (p instanceof AST_Sub && p.expression === node) ||\n (p instanceof AST_Conditional && p.condition === node) ||\n (p instanceof AST_Binary && p.left === node) ||\n (p instanceof AST_UnaryPostfix && p.expression === node)\n ) {\n node = p;\n } else {\n return false;\n }\n }\n}\n\n// Returns whether the leftmost item in the expression is an object\nfunction left_is_object(node) {\n if (node instanceof AST_Object) return true;\n if (node instanceof AST_Sequence) return left_is_object(node.expressions[0]);\n if (node.TYPE === \"Call\") return left_is_object(node.expression);\n if (node instanceof AST_PrefixedTemplateString) return left_is_object(node.prefix);\n if (node instanceof AST_Dot || node instanceof AST_Sub) return left_is_object(node.expression);\n if (node instanceof AST_Conditional) return left_is_object(node.condition);\n if (node instanceof AST_Binary) return left_is_object(node.left);\n if (node instanceof AST_UnaryPostfix) return left_is_object(node.expression);\n return false;\n}\n\nexport { first_in_statement, left_is_object };\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport {\n defaults,\n makePredicate,\n noop,\n regexp_source_fix,\n sort_regexp_flags,\n return_false,\n return_true,\n} from \"./utils/index.js\";\nimport { first_in_statement, left_is_object } from \"./utils/first_in_statement.js\";\nimport {\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_BlockStatement,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_ClassExpression,\n AST_ClassProperty,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Constant,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_EmptyStatement,\n AST_Exit,\n AST_Expansion,\n AST_Export,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_Jump,\n AST_LabeledStatement,\n AST_Lambda,\n AST_Let,\n AST_LoopControl,\n AST_NameMapping,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Scope,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Statement,\n AST_StatementWithBody,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SwitchBranch,\n AST_Symbol,\n AST_SymbolClassProperty,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Toplevel,\n AST_Try,\n AST_Unary,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n TreeWalker,\n walk,\n walk_abort\n} from \"./ast.js\";\nimport {\n get_full_char_code,\n get_full_char,\n is_identifier_char,\n is_basic_identifier_string,\n is_identifier_string,\n PRECEDENCE,\n RESERVED_WORDS,\n} from \"./parse.js\";\n\nconst EXPECT_DIRECTIVE = /^$|[;{][\\s\\n]*$/;\nconst CODE_LINE_BREAK = 10;\nconst CODE_SPACE = 32;\n\nconst r_annotation = /[@#]__(PURE|INLINE|NOINLINE)__/g;\n\nfunction is_some_comments(comment) {\n // multiline comment\n return (\n (comment.type === \"comment2\" || comment.type === \"comment1\")\n && /@preserve|@lic|@cc_on|^\\**!/i.test(comment.value)\n );\n}\n\nfunction OutputStream(options) {\n\n var readonly = !options;\n options = defaults(options, {\n ascii_only : false,\n beautify : false,\n braces : false,\n comments : \"some\",\n ecma : 5,\n ie8 : false,\n indent_level : 4,\n indent_start : 0,\n inline_script : true,\n keep_numbers : false,\n keep_quoted_props : false,\n max_line_len : false,\n preamble : null,\n preserve_annotations : false,\n quote_keys : false,\n quote_style : 0,\n safari10 : false,\n semicolons : true,\n shebang : true,\n shorthand : undefined,\n source_map : null,\n webkit : false,\n width : 80,\n wrap_iife : false,\n wrap_func_args : true,\n }, true);\n\n if (options.shorthand === undefined)\n options.shorthand = options.ecma > 5;\n\n // Convert comment option to RegExp if neccessary and set up comments filter\n var comment_filter = return_false; // Default case, throw all comments away\n if (options.comments) {\n let comments = options.comments;\n if (typeof options.comments === \"string\" && /^\\/.*\\/[a-zA-Z]*$/.test(options.comments)) {\n var regex_pos = options.comments.lastIndexOf(\"/\");\n comments = new RegExp(\n options.comments.substr(1, regex_pos - 1),\n options.comments.substr(regex_pos + 1)\n );\n }\n if (comments instanceof RegExp) {\n comment_filter = function(comment) {\n return comment.type != \"comment5\" && comments.test(comment.value);\n };\n } else if (typeof comments === \"function\") {\n comment_filter = function(comment) {\n return comment.type != \"comment5\" && comments(this, comment);\n };\n } else if (comments === \"some\") {\n comment_filter = is_some_comments;\n } else { // NOTE includes \"all\" option\n comment_filter = return_true;\n }\n }\n\n var indentation = 0;\n var current_col = 0;\n var current_line = 1;\n var current_pos = 0;\n var OUTPUT = \"\";\n let printed_comments = new Set();\n\n var to_utf8 = options.ascii_only ? function(str, identifier) {\n if (options.ecma >= 2015) {\n str = str.replace(/[\\ud800-\\udbff][\\udc00-\\udfff]/g, function(ch) {\n var code = get_full_char_code(ch, 0).toString(16);\n return \"\\\\u{\" + code + \"}\";\n });\n }\n return str.replace(/[\\u0000-\\u001f\\u007f-\\uffff]/g, function(ch) {\n var code = ch.charCodeAt(0).toString(16);\n if (code.length <= 2 && !identifier) {\n while (code.length < 2) code = \"0\" + code;\n return \"\\\\x\" + code;\n } else {\n while (code.length < 4) code = \"0\" + code;\n return \"\\\\u\" + code;\n }\n });\n } : function(str) {\n return str.replace(/[\\ud800-\\udbff][\\udc00-\\udfff]|([\\ud800-\\udbff]|[\\udc00-\\udfff])/g, function(match, lone) {\n if (lone) {\n return \"\\\\u\" + lone.charCodeAt(0).toString(16);\n }\n return match;\n });\n };\n\n function make_string(str, quote) {\n var dq = 0, sq = 0;\n str = str.replace(/[\\\\\\b\\f\\n\\r\\v\\t\\x22\\x27\\u2028\\u2029\\0\\ufeff]/g,\n function(s, i) {\n switch (s) {\n case '\"': ++dq; return '\"';\n case \"'\": ++sq; return \"'\";\n case \"\\\\\": return \"\\\\\\\\\";\n case \"\\n\": return \"\\\\n\";\n case \"\\r\": return \"\\\\r\";\n case \"\\t\": return \"\\\\t\";\n case \"\\b\": return \"\\\\b\";\n case \"\\f\": return \"\\\\f\";\n case \"\\x0B\": return options.ie8 ? \"\\\\x0B\" : \"\\\\v\";\n case \"\\u2028\": return \"\\\\u2028\";\n case \"\\u2029\": return \"\\\\u2029\";\n case \"\\ufeff\": return \"\\\\ufeff\";\n case \"\\0\":\n return /[0-9]/.test(get_full_char(str, i+1)) ? \"\\\\x00\" : \"\\\\0\";\n }\n return s;\n });\n function quote_single() {\n return \"'\" + str.replace(/\\x27/g, \"\\\\'\") + \"'\";\n }\n function quote_double() {\n return '\"' + str.replace(/\\x22/g, '\\\\\"') + '\"';\n }\n function quote_template() {\n return \"`\" + str.replace(/`/g, \"\\\\`\") + \"`\";\n }\n str = to_utf8(str);\n if (quote === \"`\") return quote_template();\n switch (options.quote_style) {\n case 1:\n return quote_single();\n case 2:\n return quote_double();\n case 3:\n return quote == \"'\" ? quote_single() : quote_double();\n default:\n return dq > sq ? quote_single() : quote_double();\n }\n }\n\n function encode_string(str, quote) {\n var ret = make_string(str, quote);\n if (options.inline_script) {\n ret = ret.replace(/<\\x2f(script)([>\\/\\t\\n\\f\\r ])/gi, \"<\\\\/$1$2\");\n ret = ret.replace(/\\x3c!--/g, \"\\\\x3c!--\");\n ret = ret.replace(/--\\x3e/g, \"--\\\\x3e\");\n }\n return ret;\n }\n\n function make_name(name) {\n name = name.toString();\n name = to_utf8(name, true);\n return name;\n }\n\n function make_indent(back) {\n return \" \".repeat(options.indent_start + indentation - back * options.indent_level);\n }\n\n /* -----[ beautification/minification ]----- */\n\n var has_parens = false;\n var might_need_space = false;\n var might_need_semicolon = false;\n var might_add_newline = 0;\n var need_newline_indented = false;\n var need_space = false;\n var newline_insert = -1;\n var last = \"\";\n var mapping_token, mapping_name, mappings = options.source_map && [];\n\n var do_add_mapping = mappings ? function() {\n mappings.forEach(function(mapping) {\n try {\n options.source_map.add(\n mapping.token.file,\n mapping.line, mapping.col,\n mapping.token.line, mapping.token.col,\n !mapping.name && mapping.token.type == \"name\" ? mapping.token.value : mapping.name\n );\n } catch(ex) {\n mapping.token.file != null && AST_Node.warn(\"Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]\", {\n file: mapping.token.file,\n line: mapping.token.line,\n col: mapping.token.col,\n cline: mapping.line,\n ccol: mapping.col,\n name: mapping.name || \"\"\n });\n }\n });\n mappings = [];\n } : noop;\n\n var ensure_line_len = options.max_line_len ? function() {\n if (current_col > options.max_line_len) {\n if (might_add_newline) {\n var left = OUTPUT.slice(0, might_add_newline);\n var right = OUTPUT.slice(might_add_newline);\n if (mappings) {\n var delta = right.length - current_col;\n mappings.forEach(function(mapping) {\n mapping.line++;\n mapping.col += delta;\n });\n }\n OUTPUT = left + \"\\n\" + right;\n current_line++;\n current_pos++;\n current_col = right.length;\n }\n if (current_col > options.max_line_len) {\n AST_Node.warn(\"Output exceeds {max_line_len} characters\", options);\n }\n }\n if (might_add_newline) {\n might_add_newline = 0;\n do_add_mapping();\n }\n } : noop;\n\n var requireSemicolonChars = makePredicate(\"( [ + * / - , . `\");\n\n function print(str) {\n str = String(str);\n var ch = get_full_char(str, 0);\n if (need_newline_indented && ch) {\n need_newline_indented = false;\n if (ch !== \"\\n\") {\n print(\"\\n\");\n indent();\n }\n }\n if (need_space && ch) {\n need_space = false;\n if (!/[\\s;})]/.test(ch)) {\n space();\n }\n }\n newline_insert = -1;\n var prev = last.charAt(last.length - 1);\n if (might_need_semicolon) {\n might_need_semicolon = false;\n\n if (prev === \":\" && ch === \"}\" || (!ch || !\";}\".includes(ch)) && prev !== \";\") {\n if (options.semicolons || requireSemicolonChars.has(ch)) {\n OUTPUT += \";\";\n current_col++;\n current_pos++;\n } else {\n ensure_line_len();\n if (current_col > 0) {\n OUTPUT += \"\\n\";\n current_pos++;\n current_line++;\n current_col = 0;\n }\n\n if (/^\\s+$/.test(str)) {\n // reset the semicolon flag, since we didn't print one\n // now and might still have to later\n might_need_semicolon = true;\n }\n }\n\n if (!options.beautify)\n might_need_space = false;\n }\n }\n\n if (might_need_space) {\n if ((is_identifier_char(prev)\n && (is_identifier_char(ch) || ch == \"\\\\\"))\n || (ch == \"/\" && ch == prev)\n || ((ch == \"+\" || ch == \"-\") && ch == last)\n ) {\n OUTPUT += \" \";\n current_col++;\n current_pos++;\n }\n might_need_space = false;\n }\n\n if (mapping_token) {\n mappings.push({\n token: mapping_token,\n name: mapping_name,\n line: current_line,\n col: current_col\n });\n mapping_token = false;\n if (!might_add_newline) do_add_mapping();\n }\n\n OUTPUT += str;\n has_parens = str[str.length - 1] == \"(\";\n current_pos += str.length;\n var a = str.split(/\\r?\\n/), n = a.length - 1;\n current_line += n;\n current_col += a[0].length;\n if (n > 0) {\n ensure_line_len();\n current_col = a[n].length;\n }\n last = str;\n }\n\n var star = function() {\n print(\"*\");\n };\n\n var space = options.beautify ? function() {\n print(\" \");\n } : function() {\n might_need_space = true;\n };\n\n var indent = options.beautify ? function(half) {\n if (options.beautify) {\n print(make_indent(half ? 0.5 : 0));\n }\n } : noop;\n\n var with_indent = options.beautify ? function(col, cont) {\n if (col === true) col = next_indent();\n var save_indentation = indentation;\n indentation = col;\n var ret = cont();\n indentation = save_indentation;\n return ret;\n } : function(col, cont) { return cont(); };\n\n var newline = options.beautify ? function() {\n if (newline_insert < 0) return print(\"\\n\");\n if (OUTPUT[newline_insert] != \"\\n\") {\n OUTPUT = OUTPUT.slice(0, newline_insert) + \"\\n\" + OUTPUT.slice(newline_insert);\n current_pos++;\n current_line++;\n }\n newline_insert++;\n } : options.max_line_len ? function() {\n ensure_line_len();\n might_add_newline = OUTPUT.length;\n } : noop;\n\n var semicolon = options.beautify ? function() {\n print(\";\");\n } : function() {\n might_need_semicolon = true;\n };\n\n function force_semicolon() {\n might_need_semicolon = false;\n print(\";\");\n }\n\n function next_indent() {\n return indentation + options.indent_level;\n }\n\n function with_block(cont) {\n var ret;\n print(\"{\");\n newline();\n with_indent(next_indent(), function() {\n ret = cont();\n });\n indent();\n print(\"}\");\n return ret;\n }\n\n function with_parens(cont) {\n print(\"(\");\n //XXX: still nice to have that for argument lists\n //var ret = with_indent(current_col, cont);\n var ret = cont();\n print(\")\");\n return ret;\n }\n\n function with_square(cont) {\n print(\"[\");\n //var ret = with_indent(current_col, cont);\n var ret = cont();\n print(\"]\");\n return ret;\n }\n\n function comma() {\n print(\",\");\n space();\n }\n\n function colon() {\n print(\":\");\n space();\n }\n\n var add_mapping = mappings ? function(token, name) {\n mapping_token = token;\n mapping_name = name;\n } : noop;\n\n function get() {\n if (might_add_newline) {\n ensure_line_len();\n }\n return OUTPUT;\n }\n\n function has_nlb() {\n let n = OUTPUT.length - 1;\n while (n >= 0) {\n const code = OUTPUT.charCodeAt(n);\n if (code === CODE_LINE_BREAK) {\n return true;\n }\n\n if (code !== CODE_SPACE) {\n return false;\n }\n n--;\n }\n return true;\n }\n\n function filter_comment(comment) {\n if (!options.preserve_annotations) {\n comment = comment.replace(r_annotation, \" \");\n }\n if (/^\\s*$/.test(comment)) {\n return \"\";\n }\n return comment.replace(/(<\\s*\\/\\s*)(script)/i, \"<\\\\/$2\");\n }\n\n function prepend_comments(node) {\n var self = this;\n var start = node.start;\n if (!start) return;\n var printed_comments = self.printed_comments;\n\n // There cannot be a newline between return and its value.\n const return_with_value = node instanceof AST_Exit && node.value;\n\n if (\n start.comments_before\n && printed_comments.has(start.comments_before)\n ) {\n if (return_with_value) {\n start.comments_before = [];\n } else {\n return;\n }\n }\n\n var comments = start.comments_before;\n if (!comments) {\n comments = start.comments_before = [];\n }\n printed_comments.add(comments);\n\n if (return_with_value) {\n var tw = new TreeWalker(function(node) {\n var parent = tw.parent();\n if (parent instanceof AST_Exit\n || parent instanceof AST_Binary && parent.left === node\n || parent.TYPE == \"Call\" && parent.expression === node\n || parent instanceof AST_Conditional && parent.condition === node\n || parent instanceof AST_Dot && parent.expression === node\n || parent instanceof AST_Sequence && parent.expressions[0] === node\n || parent instanceof AST_Sub && parent.expression === node\n || parent instanceof AST_UnaryPostfix) {\n if (!node.start) return;\n var text = node.start.comments_before;\n if (text && !printed_comments.has(text)) {\n printed_comments.add(text);\n comments = comments.concat(text);\n }\n } else {\n return true;\n }\n });\n tw.push(node);\n node.value.walk(tw);\n }\n\n if (current_pos == 0) {\n if (comments.length > 0 && options.shebang && comments[0].type === \"comment5\"\n && !printed_comments.has(comments[0])) {\n print(\"#!\" + comments.shift().value + \"\\n\");\n indent();\n }\n var preamble = options.preamble;\n if (preamble) {\n print(preamble.replace(/\\r\\n?|[\\n\\u2028\\u2029]|\\s*$/g, \"\\n\"));\n }\n }\n\n comments = comments.filter(comment_filter, node).filter(c => !printed_comments.has(c));\n if (comments.length == 0) return;\n var last_nlb = has_nlb();\n comments.forEach(function(c, i) {\n printed_comments.add(c);\n if (!last_nlb) {\n if (c.nlb) {\n print(\"\\n\");\n indent();\n last_nlb = true;\n } else if (i > 0) {\n space();\n }\n }\n\n if (/comment[134]/.test(c.type)) {\n var value = filter_comment(c.value);\n if (value) {\n print(\"//\" + value + \"\\n\");\n indent();\n }\n last_nlb = true;\n } else if (c.type == \"comment2\") {\n var value = filter_comment(c.value);\n if (value) {\n print(\"/*\" + value + \"*/\");\n }\n last_nlb = false;\n }\n });\n if (!last_nlb) {\n if (start.nlb) {\n print(\"\\n\");\n indent();\n } else {\n space();\n }\n }\n }\n\n function append_comments(node, tail) {\n var self = this;\n var token = node.end;\n if (!token) return;\n var printed_comments = self.printed_comments;\n var comments = token[tail ? \"comments_before\" : \"comments_after\"];\n if (!comments || printed_comments.has(comments)) return;\n if (!(node instanceof AST_Statement || comments.every((c) =>\n !/comment[134]/.test(c.type)\n ))) return;\n printed_comments.add(comments);\n var insert = OUTPUT.length;\n comments.filter(comment_filter, node).forEach(function(c, i) {\n if (printed_comments.has(c)) return;\n printed_comments.add(c);\n need_space = false;\n if (need_newline_indented) {\n print(\"\\n\");\n indent();\n need_newline_indented = false;\n } else if (c.nlb && (i > 0 || !has_nlb())) {\n print(\"\\n\");\n indent();\n } else if (i > 0 || !tail) {\n space();\n }\n if (/comment[134]/.test(c.type)) {\n const value = filter_comment(c.value);\n if (value) {\n print(\"//\" + value);\n }\n need_newline_indented = true;\n } else if (c.type == \"comment2\") {\n const value = filter_comment(c.value);\n if (value) {\n print(\"/*\" + value + \"*/\");\n }\n need_space = true;\n }\n });\n if (OUTPUT.length > insert) newline_insert = insert;\n }\n\n var stack = [];\n return {\n get : get,\n toString : get,\n indent : indent,\n in_directive : false,\n use_asm : null,\n active_scope : null,\n indentation : function() { return indentation; },\n current_width : function() { return current_col - indentation; },\n should_break : function() { return options.width && this.current_width() >= options.width; },\n has_parens : function() { return has_parens; },\n newline : newline,\n print : print,\n star : star,\n space : space,\n comma : comma,\n colon : colon,\n last : function() { return last; },\n semicolon : semicolon,\n force_semicolon : force_semicolon,\n to_utf8 : to_utf8,\n print_name : function(name) { print(make_name(name)); },\n print_string : function(str, quote, escape_directive) {\n var encoded = encode_string(str, quote);\n if (escape_directive === true && !encoded.includes(\"\\\\\")) {\n // Insert semicolons to break directive prologue\n if (!EXPECT_DIRECTIVE.test(OUTPUT)) {\n force_semicolon();\n }\n force_semicolon();\n }\n print(encoded);\n },\n print_template_string_chars: function(str) {\n var encoded = encode_string(str, \"`\").replace(/\\${/g, \"\\\\${\");\n return print(encoded.substr(1, encoded.length - 2));\n },\n encode_string : encode_string,\n next_indent : next_indent,\n with_indent : with_indent,\n with_block : with_block,\n with_parens : with_parens,\n with_square : with_square,\n add_mapping : add_mapping,\n option : function(opt) { return options[opt]; },\n printed_comments: printed_comments,\n prepend_comments: readonly ? noop : prepend_comments,\n append_comments : readonly || comment_filter === return_false ? noop : append_comments,\n line : function() { return current_line; },\n col : function() { return current_col; },\n pos : function() { return current_pos; },\n push_node : function(node) { stack.push(node); },\n pop_node : function() { return stack.pop(); },\n parent : function(n) {\n return stack[stack.length - 2 - (n || 0)];\n }\n };\n\n}\n\n/* -----[ code generators ]----- */\n\n(function() {\n\n /* -----[ utils ]----- */\n\n function DEFPRINT(nodetype, generator) {\n nodetype.DEFMETHOD(\"_codegen\", generator);\n }\n\n AST_Node.DEFMETHOD(\"print\", function(output, force_parens) {\n var self = this, generator = self._codegen;\n if (self instanceof AST_Scope) {\n output.active_scope = self;\n } else if (!output.use_asm && self instanceof AST_Directive && self.value == \"use asm\") {\n output.use_asm = output.active_scope;\n }\n function doit() {\n output.prepend_comments(self);\n self.add_source_map(output);\n generator(self, output);\n output.append_comments(self);\n }\n output.push_node(self);\n if (force_parens || self.needs_parens(output)) {\n output.with_parens(doit);\n } else {\n doit();\n }\n output.pop_node();\n if (self === output.use_asm) {\n output.use_asm = null;\n }\n });\n AST_Node.DEFMETHOD(\"_print\", AST_Node.prototype.print);\n\n AST_Node.DEFMETHOD(\"print_to_string\", function(options) {\n var output = OutputStream(options);\n this.print(output);\n return output.get();\n });\n\n /* -----[ PARENTHESES ]----- */\n\n function PARENS(nodetype, func) {\n if (Array.isArray(nodetype)) {\n nodetype.forEach(function(nodetype) {\n PARENS(nodetype, func);\n });\n } else {\n nodetype.DEFMETHOD(\"needs_parens\", func);\n }\n }\n\n PARENS(AST_Node, return_false);\n\n // a function expression needs parens around it when it's provably\n // the first token to appear in a statement.\n PARENS(AST_Function, function(output) {\n if (!output.has_parens() && first_in_statement(output)) {\n return true;\n }\n\n if (output.option(\"webkit\")) {\n var p = output.parent();\n if (p instanceof AST_PropAccess && p.expression === this) {\n return true;\n }\n }\n\n if (output.option(\"wrap_iife\")) {\n var p = output.parent();\n if (p instanceof AST_Call && p.expression === this) {\n return true;\n }\n }\n\n if (output.option(\"wrap_func_args\")) {\n var p = output.parent();\n if (p instanceof AST_Call && p.args.includes(this)) {\n return true;\n }\n }\n\n return false;\n });\n\n PARENS(AST_Arrow, function(output) {\n var p = output.parent();\n return p instanceof AST_PropAccess && p.expression === this;\n });\n\n // same goes for an object literal, because otherwise it would be\n // interpreted as a block of code.\n PARENS(AST_Object, function(output) {\n return !output.has_parens() && first_in_statement(output);\n });\n\n PARENS(AST_ClassExpression, first_in_statement);\n\n PARENS(AST_Unary, function(output) {\n var p = output.parent();\n return p instanceof AST_PropAccess && p.expression === this\n || p instanceof AST_Call && p.expression === this\n || p instanceof AST_Binary\n && p.operator === \"**\"\n && this instanceof AST_UnaryPrefix\n && p.left === this\n && this.operator !== \"++\"\n && this.operator !== \"--\";\n });\n\n PARENS(AST_Await, function(output) {\n var p = output.parent();\n return p instanceof AST_PropAccess && p.expression === this\n || p instanceof AST_Call && p.expression === this\n || output.option(\"safari10\") && p instanceof AST_UnaryPrefix;\n });\n\n PARENS(AST_Sequence, function(output) {\n var p = output.parent();\n return p instanceof AST_Call // (foo, bar)() or foo(1, (2, 3), 4)\n || p instanceof AST_Unary // !(foo, bar, baz)\n || p instanceof AST_Binary // 1 + (2, 3) + 4 ==> 8\n || p instanceof AST_VarDef // var a = (1, 2), b = a + a; ==> b == 4\n || p instanceof AST_PropAccess // (1, {foo:2}).foo or (1, {foo:2})[\"foo\"] ==> 2\n || p instanceof AST_Array // [ 1, (2, 3), 4 ] ==> [ 1, 3, 4 ]\n || p instanceof AST_ObjectProperty // { foo: (1, 2) }.foo ==> 2\n || p instanceof AST_Conditional /* (false, true) ? (a = 10, b = 20) : (c = 30)\n * ==> 20 (side effect, set a := 10 and b := 20) */\n || p instanceof AST_Arrow // x => (x, x)\n || p instanceof AST_DefaultAssign // x => (x = (0, function(){}))\n || p instanceof AST_Expansion // [...(a, b)]\n || p instanceof AST_ForOf && this === p.object // for (e of (foo, bar)) {}\n || p instanceof AST_Yield // yield (foo, bar)\n || p instanceof AST_Export // export default (foo, bar)\n ;\n });\n\n PARENS(AST_Binary, function(output) {\n var p = output.parent();\n // (foo && bar)()\n if (p instanceof AST_Call && p.expression === this)\n return true;\n // typeof (foo && bar)\n if (p instanceof AST_Unary)\n return true;\n // (foo && bar)[\"prop\"], (foo && bar).prop\n if (p instanceof AST_PropAccess && p.expression === this)\n return true;\n // this deals with precedence: 3 * (2 + 1)\n if (p instanceof AST_Binary) {\n const po = p.operator;\n const so = this.operator;\n\n if (so === \"??\" && (po === \"||\" || po === \"&&\")) {\n return true;\n }\n\n const pp = PRECEDENCE[po];\n const sp = PRECEDENCE[so];\n if (pp > sp\n || (pp == sp\n && (this === p.right || po == \"**\"))) {\n return true;\n }\n }\n });\n\n PARENS(AST_Yield, function(output) {\n var p = output.parent();\n // (yield 1) + (yield 2)\n // a = yield 3\n if (p instanceof AST_Binary && p.operator !== \"=\")\n return true;\n // (yield 1)()\n // new (yield 1)()\n if (p instanceof AST_Call && p.expression === this)\n return true;\n // (yield 1) ? yield 2 : yield 3\n if (p instanceof AST_Conditional && p.condition === this)\n return true;\n // -(yield 4)\n if (p instanceof AST_Unary)\n return true;\n // (yield x).foo\n // (yield x)['foo']\n if (p instanceof AST_PropAccess && p.expression === this)\n return true;\n });\n\n PARENS(AST_PropAccess, function(output) {\n var p = output.parent();\n if (p instanceof AST_New && p.expression === this) {\n // i.e. new (foo.bar().baz)\n //\n // if there's one call into this subtree, then we need\n // parens around it too, otherwise the call will be\n // interpreted as passing the arguments to the upper New\n // expression.\n return walk(this, node => {\n if (node instanceof AST_Scope) return true;\n if (node instanceof AST_Call) {\n return walk_abort; // makes walk() return true.\n }\n });\n }\n });\n\n PARENS(AST_Call, function(output) {\n var p = output.parent(), p1;\n if (p instanceof AST_New && p.expression === this\n || p instanceof AST_Export && p.is_default && this.expression instanceof AST_Function)\n return true;\n\n // workaround for Safari bug.\n // https://bugs.webkit.org/show_bug.cgi?id=123506\n return this.expression instanceof AST_Function\n && p instanceof AST_PropAccess\n && p.expression === this\n && (p1 = output.parent(1)) instanceof AST_Assign\n && p1.left === p;\n });\n\n PARENS(AST_New, function(output) {\n var p = output.parent();\n if (this.args.length === 0\n && (p instanceof AST_PropAccess // (new Date).getTime(), (new Date)[\"getTime\"]()\n || p instanceof AST_Call && p.expression === this)) // (new foo)(bar)\n return true;\n });\n\n PARENS(AST_Number, function(output) {\n var p = output.parent();\n if (p instanceof AST_PropAccess && p.expression === this) {\n var value = this.getValue();\n if (value < 0 || /^0/.test(make_num(value))) {\n return true;\n }\n }\n });\n\n PARENS(AST_BigInt, function(output) {\n var p = output.parent();\n if (p instanceof AST_PropAccess && p.expression === this) {\n var value = this.getValue();\n if (value.startsWith(\"-\")) {\n return true;\n }\n }\n });\n\n PARENS([ AST_Assign, AST_Conditional ], function(output) {\n var p = output.parent();\n // !(a = false) → true\n if (p instanceof AST_Unary)\n return true;\n // 1 + (a = 2) + 3 → 6, side effect setting a = 2\n if (p instanceof AST_Binary && !(p instanceof AST_Assign))\n return true;\n // (a = func)() —or— new (a = Object)()\n if (p instanceof AST_Call && p.expression === this)\n return true;\n // (a = foo) ? bar : baz\n if (p instanceof AST_Conditional && p.condition === this)\n return true;\n // (a = foo)[\"prop\"] —or— (a = foo).prop\n if (p instanceof AST_PropAccess && p.expression === this)\n return true;\n // ({a, b} = {a: 1, b: 2}), a destructuring assignment\n if (this instanceof AST_Assign && this.left instanceof AST_Destructuring && this.left.is_array === false)\n return true;\n });\n\n /* -----[ PRINTERS ]----- */\n\n DEFPRINT(AST_Directive, function(self, output) {\n output.print_string(self.value, self.quote);\n output.semicolon();\n });\n\n DEFPRINT(AST_Expansion, function (self, output) {\n output.print(\"...\");\n self.expression.print(output);\n });\n\n DEFPRINT(AST_Destructuring, function (self, output) {\n output.print(self.is_array ? \"[\" : \"{\");\n var len = self.names.length;\n self.names.forEach(function (name, i) {\n if (i > 0) output.comma();\n name.print(output);\n // If the final element is a hole, we need to make sure it\n // doesn't look like a trailing comma, by inserting an actual\n // trailing comma.\n if (i == len - 1 && name instanceof AST_Hole) output.comma();\n });\n output.print(self.is_array ? \"]\" : \"}\");\n });\n\n DEFPRINT(AST_Debugger, function(self, output) {\n output.print(\"debugger\");\n output.semicolon();\n });\n\n /* -----[ statements ]----- */\n\n function display_body(body, is_toplevel, output, allow_directives) {\n var last = body.length - 1;\n output.in_directive = allow_directives;\n body.forEach(function(stmt, i) {\n if (output.in_directive === true && !(stmt instanceof AST_Directive ||\n stmt instanceof AST_EmptyStatement ||\n (stmt instanceof AST_SimpleStatement && stmt.body instanceof AST_String)\n )) {\n output.in_directive = false;\n }\n if (!(stmt instanceof AST_EmptyStatement)) {\n output.indent();\n stmt.print(output);\n if (!(i == last && is_toplevel)) {\n output.newline();\n if (is_toplevel) output.newline();\n }\n }\n if (output.in_directive === true &&\n stmt instanceof AST_SimpleStatement &&\n stmt.body instanceof AST_String\n ) {\n output.in_directive = false;\n }\n });\n output.in_directive = false;\n }\n\n AST_StatementWithBody.DEFMETHOD(\"_do_print_body\", function(output) {\n force_statement(this.body, output);\n });\n\n DEFPRINT(AST_Statement, function(self, output) {\n self.body.print(output);\n output.semicolon();\n });\n DEFPRINT(AST_Toplevel, function(self, output) {\n display_body(self.body, true, output, true);\n output.print(\"\");\n });\n DEFPRINT(AST_LabeledStatement, function(self, output) {\n self.label.print(output);\n output.colon();\n self.body.print(output);\n });\n DEFPRINT(AST_SimpleStatement, function(self, output) {\n self.body.print(output);\n output.semicolon();\n });\n function print_braced_empty(self, output) {\n output.print(\"{\");\n output.with_indent(output.next_indent(), function() {\n output.append_comments(self, true);\n });\n output.print(\"}\");\n }\n function print_braced(self, output, allow_directives) {\n if (self.body.length > 0) {\n output.with_block(function() {\n display_body(self.body, false, output, allow_directives);\n });\n } else print_braced_empty(self, output);\n }\n DEFPRINT(AST_BlockStatement, function(self, output) {\n print_braced(self, output);\n });\n DEFPRINT(AST_EmptyStatement, function(self, output) {\n output.semicolon();\n });\n DEFPRINT(AST_Do, function(self, output) {\n output.print(\"do\");\n output.space();\n make_block(self.body, output);\n output.space();\n output.print(\"while\");\n output.space();\n output.with_parens(function() {\n self.condition.print(output);\n });\n output.semicolon();\n });\n DEFPRINT(AST_While, function(self, output) {\n output.print(\"while\");\n output.space();\n output.with_parens(function() {\n self.condition.print(output);\n });\n output.space();\n self._do_print_body(output);\n });\n DEFPRINT(AST_For, function(self, output) {\n output.print(\"for\");\n output.space();\n output.with_parens(function() {\n if (self.init) {\n if (self.init instanceof AST_Definitions) {\n self.init.print(output);\n } else {\n parenthesize_for_noin(self.init, output, true);\n }\n output.print(\";\");\n output.space();\n } else {\n output.print(\";\");\n }\n if (self.condition) {\n self.condition.print(output);\n output.print(\";\");\n output.space();\n } else {\n output.print(\";\");\n }\n if (self.step) {\n self.step.print(output);\n }\n });\n output.space();\n self._do_print_body(output);\n });\n DEFPRINT(AST_ForIn, function(self, output) {\n output.print(\"for\");\n if (self.await) {\n output.space();\n output.print(\"await\");\n }\n output.space();\n output.with_parens(function() {\n self.init.print(output);\n output.space();\n output.print(self instanceof AST_ForOf ? \"of\" : \"in\");\n output.space();\n self.object.print(output);\n });\n output.space();\n self._do_print_body(output);\n });\n DEFPRINT(AST_With, function(self, output) {\n output.print(\"with\");\n output.space();\n output.with_parens(function() {\n self.expression.print(output);\n });\n output.space();\n self._do_print_body(output);\n });\n\n /* -----[ functions ]----- */\n AST_Lambda.DEFMETHOD(\"_do_print\", function(output, nokeyword) {\n var self = this;\n if (!nokeyword) {\n if (self.async) {\n output.print(\"async\");\n output.space();\n }\n output.print(\"function\");\n if (self.is_generator) {\n output.star();\n }\n if (self.name) {\n output.space();\n }\n }\n if (self.name instanceof AST_Symbol) {\n self.name.print(output);\n } else if (nokeyword && self.name instanceof AST_Node) {\n output.with_square(function() {\n self.name.print(output); // Computed method name\n });\n }\n output.with_parens(function() {\n self.argnames.forEach(function(arg, i) {\n if (i) output.comma();\n arg.print(output);\n });\n });\n output.space();\n print_braced(self, output, true);\n });\n DEFPRINT(AST_Lambda, function(self, output) {\n self._do_print(output);\n });\n\n DEFPRINT(AST_PrefixedTemplateString, function(self, output) {\n var tag = self.prefix;\n var parenthesize_tag = tag instanceof AST_Lambda\n || tag instanceof AST_Binary\n || tag instanceof AST_Conditional\n || tag instanceof AST_Sequence\n || tag instanceof AST_Unary\n || tag instanceof AST_Dot && tag.expression instanceof AST_Object;\n if (parenthesize_tag) output.print(\"(\");\n self.prefix.print(output);\n if (parenthesize_tag) output.print(\")\");\n self.template_string.print(output);\n });\n DEFPRINT(AST_TemplateString, function(self, output) {\n var is_tagged = output.parent() instanceof AST_PrefixedTemplateString;\n\n output.print(\"`\");\n for (var i = 0; i < self.segments.length; i++) {\n if (!(self.segments[i] instanceof AST_TemplateSegment)) {\n output.print(\"${\");\n self.segments[i].print(output);\n output.print(\"}\");\n } else if (is_tagged) {\n output.print(self.segments[i].raw);\n } else {\n output.print_template_string_chars(self.segments[i].value);\n }\n }\n output.print(\"`\");\n });\n\n AST_Arrow.DEFMETHOD(\"_do_print\", function(output) {\n var self = this;\n var parent = output.parent();\n var needs_parens = (parent instanceof AST_Binary && !(parent instanceof AST_Assign)) ||\n parent instanceof AST_Unary ||\n (parent instanceof AST_Call && self === parent.expression);\n if (needs_parens) { output.print(\"(\"); }\n if (self.async) {\n output.print(\"async\");\n output.space();\n }\n if (self.argnames.length === 1 && self.argnames[0] instanceof AST_Symbol) {\n self.argnames[0].print(output);\n } else {\n output.with_parens(function() {\n self.argnames.forEach(function(arg, i) {\n if (i) output.comma();\n arg.print(output);\n });\n });\n }\n output.space();\n output.print(\"=>\");\n output.space();\n const first_statement = self.body[0];\n if (\n self.body.length === 1\n && first_statement instanceof AST_Return\n ) {\n const returned = first_statement.value;\n if (!returned) {\n output.print(\"{}\");\n } else if (left_is_object(returned)) {\n output.print(\"(\");\n returned.print(output);\n output.print(\")\");\n } else {\n returned.print(output);\n }\n } else {\n print_braced(self, output);\n }\n if (needs_parens) { output.print(\")\"); }\n });\n\n /* -----[ exits ]----- */\n AST_Exit.DEFMETHOD(\"_do_print\", function(output, kind) {\n output.print(kind);\n if (this.value) {\n output.space();\n const comments = this.value.start.comments_before;\n if (comments && comments.length && !output.printed_comments.has(comments)) {\n output.print(\"(\");\n this.value.print(output);\n output.print(\")\");\n } else {\n this.value.print(output);\n }\n }\n output.semicolon();\n });\n DEFPRINT(AST_Return, function(self, output) {\n self._do_print(output, \"return\");\n });\n DEFPRINT(AST_Throw, function(self, output) {\n self._do_print(output, \"throw\");\n });\n\n /* -----[ yield ]----- */\n\n DEFPRINT(AST_Yield, function(self, output) {\n var star = self.is_star ? \"*\" : \"\";\n output.print(\"yield\" + star);\n if (self.expression) {\n output.space();\n self.expression.print(output);\n }\n });\n\n DEFPRINT(AST_Await, function(self, output) {\n output.print(\"await\");\n output.space();\n var e = self.expression;\n var parens = !(\n e instanceof AST_Call\n || e instanceof AST_SymbolRef\n || e instanceof AST_PropAccess\n || e instanceof AST_Unary\n || e instanceof AST_Constant\n );\n if (parens) output.print(\"(\");\n self.expression.print(output);\n if (parens) output.print(\")\");\n });\n\n /* -----[ loop control ]----- */\n AST_LoopControl.DEFMETHOD(\"_do_print\", function(output, kind) {\n output.print(kind);\n if (this.label) {\n output.space();\n this.label.print(output);\n }\n output.semicolon();\n });\n DEFPRINT(AST_Break, function(self, output) {\n self._do_print(output, \"break\");\n });\n DEFPRINT(AST_Continue, function(self, output) {\n self._do_print(output, \"continue\");\n });\n\n /* -----[ if ]----- */\n function make_then(self, output) {\n var b = self.body;\n if (output.option(\"braces\")\n || output.option(\"ie8\") && b instanceof AST_Do)\n return make_block(b, output);\n // The squeezer replaces \"block\"-s that contain only a single\n // statement with the statement itself; technically, the AST\n // is correct, but this can create problems when we output an\n // IF having an ELSE clause where the THEN clause ends in an\n // IF *without* an ELSE block (then the outer ELSE would refer\n // to the inner IF). This function checks for this case and\n // adds the block braces if needed.\n if (!b) return output.force_semicolon();\n while (true) {\n if (b instanceof AST_If) {\n if (!b.alternative) {\n make_block(self.body, output);\n return;\n }\n b = b.alternative;\n } else if (b instanceof AST_StatementWithBody) {\n b = b.body;\n } else break;\n }\n force_statement(self.body, output);\n }\n DEFPRINT(AST_If, function(self, output) {\n output.print(\"if\");\n output.space();\n output.with_parens(function() {\n self.condition.print(output);\n });\n output.space();\n if (self.alternative) {\n make_then(self, output);\n output.space();\n output.print(\"else\");\n output.space();\n if (self.alternative instanceof AST_If)\n self.alternative.print(output);\n else\n force_statement(self.alternative, output);\n } else {\n self._do_print_body(output);\n }\n });\n\n /* -----[ switch ]----- */\n DEFPRINT(AST_Switch, function(self, output) {\n output.print(\"switch\");\n output.space();\n output.with_parens(function() {\n self.expression.print(output);\n });\n output.space();\n var last = self.body.length - 1;\n if (last < 0) print_braced_empty(self, output);\n else output.with_block(function() {\n self.body.forEach(function(branch, i) {\n output.indent(true);\n branch.print(output);\n if (i < last && branch.body.length > 0)\n output.newline();\n });\n });\n });\n AST_SwitchBranch.DEFMETHOD(\"_do_print_body\", function(output) {\n output.newline();\n this.body.forEach(function(stmt) {\n output.indent();\n stmt.print(output);\n output.newline();\n });\n });\n DEFPRINT(AST_Default, function(self, output) {\n output.print(\"default:\");\n self._do_print_body(output);\n });\n DEFPRINT(AST_Case, function(self, output) {\n output.print(\"case\");\n output.space();\n self.expression.print(output);\n output.print(\":\");\n self._do_print_body(output);\n });\n\n /* -----[ exceptions ]----- */\n DEFPRINT(AST_Try, function(self, output) {\n output.print(\"try\");\n output.space();\n print_braced(self, output);\n if (self.bcatch) {\n output.space();\n self.bcatch.print(output);\n }\n if (self.bfinally) {\n output.space();\n self.bfinally.print(output);\n }\n });\n DEFPRINT(AST_Catch, function(self, output) {\n output.print(\"catch\");\n if (self.argname) {\n output.space();\n output.with_parens(function() {\n self.argname.print(output);\n });\n }\n output.space();\n print_braced(self, output);\n });\n DEFPRINT(AST_Finally, function(self, output) {\n output.print(\"finally\");\n output.space();\n print_braced(self, output);\n });\n\n /* -----[ var/const ]----- */\n AST_Definitions.DEFMETHOD(\"_do_print\", function(output, kind) {\n output.print(kind);\n output.space();\n this.definitions.forEach(function(def, i) {\n if (i) output.comma();\n def.print(output);\n });\n var p = output.parent();\n var in_for = p instanceof AST_For || p instanceof AST_ForIn;\n var output_semicolon = !in_for || p && p.init !== this;\n if (output_semicolon)\n output.semicolon();\n });\n DEFPRINT(AST_Let, function(self, output) {\n self._do_print(output, \"let\");\n });\n DEFPRINT(AST_Var, function(self, output) {\n self._do_print(output, \"var\");\n });\n DEFPRINT(AST_Const, function(self, output) {\n self._do_print(output, \"const\");\n });\n DEFPRINT(AST_Import, function(self, output) {\n output.print(\"import\");\n output.space();\n if (self.imported_name) {\n self.imported_name.print(output);\n }\n if (self.imported_name && self.imported_names) {\n output.print(\",\");\n output.space();\n }\n if (self.imported_names) {\n if (self.imported_names.length === 1 && self.imported_names[0].foreign_name.name === \"*\") {\n self.imported_names[0].print(output);\n } else {\n output.print(\"{\");\n self.imported_names.forEach(function (name_import, i) {\n output.space();\n name_import.print(output);\n if (i < self.imported_names.length - 1) {\n output.print(\",\");\n }\n });\n output.space();\n output.print(\"}\");\n }\n }\n if (self.imported_name || self.imported_names) {\n output.space();\n output.print(\"from\");\n output.space();\n }\n self.module_name.print(output);\n output.semicolon();\n });\n\n DEFPRINT(AST_NameMapping, function(self, output) {\n var is_import = output.parent() instanceof AST_Import;\n var definition = self.name.definition();\n var names_are_different =\n (definition && definition.mangled_name || self.name.name) !==\n self.foreign_name.name;\n if (names_are_different) {\n if (is_import) {\n output.print(self.foreign_name.name);\n } else {\n self.name.print(output);\n }\n output.space();\n output.print(\"as\");\n output.space();\n if (is_import) {\n self.name.print(output);\n } else {\n output.print(self.foreign_name.name);\n }\n } else {\n self.name.print(output);\n }\n });\n\n DEFPRINT(AST_Export, function(self, output) {\n output.print(\"export\");\n output.space();\n if (self.is_default) {\n output.print(\"default\");\n output.space();\n }\n if (self.exported_names) {\n if (self.exported_names.length === 1 && self.exported_names[0].name.name === \"*\") {\n self.exported_names[0].print(output);\n } else {\n output.print(\"{\");\n self.exported_names.forEach(function(name_export, i) {\n output.space();\n name_export.print(output);\n if (i < self.exported_names.length - 1) {\n output.print(\",\");\n }\n });\n output.space();\n output.print(\"}\");\n }\n } else if (self.exported_value) {\n self.exported_value.print(output);\n } else if (self.exported_definition) {\n self.exported_definition.print(output);\n if (self.exported_definition instanceof AST_Definitions) return;\n }\n if (self.module_name) {\n output.space();\n output.print(\"from\");\n output.space();\n self.module_name.print(output);\n }\n if (self.exported_value\n && !(self.exported_value instanceof AST_Defun ||\n self.exported_value instanceof AST_Function ||\n self.exported_value instanceof AST_Class)\n || self.module_name\n || self.exported_names\n ) {\n output.semicolon();\n }\n });\n\n function parenthesize_for_noin(node, output, noin) {\n var parens = false;\n // need to take some precautions here:\n // https://github.com/mishoo/UglifyJS2/issues/60\n if (noin) {\n parens = walk(node, node => {\n if (node instanceof AST_Scope) return true;\n if (node instanceof AST_Binary && node.operator == \"in\") {\n return walk_abort; // makes walk() return true\n }\n });\n }\n node.print(output, parens);\n }\n\n DEFPRINT(AST_VarDef, function(self, output) {\n self.name.print(output);\n if (self.value) {\n output.space();\n output.print(\"=\");\n output.space();\n var p = output.parent(1);\n var noin = p instanceof AST_For || p instanceof AST_ForIn;\n parenthesize_for_noin(self.value, output, noin);\n }\n });\n\n /* -----[ other expressions ]----- */\n DEFPRINT(AST_Call, function(self, output) {\n self.expression.print(output);\n if (self instanceof AST_New && self.args.length === 0)\n return;\n if (self.expression instanceof AST_Call || self.expression instanceof AST_Lambda) {\n output.add_mapping(self.start);\n }\n output.with_parens(function() {\n self.args.forEach(function(expr, i) {\n if (i) output.comma();\n expr.print(output);\n });\n });\n });\n DEFPRINT(AST_New, function(self, output) {\n output.print(\"new\");\n output.space();\n AST_Call.prototype._codegen(self, output);\n });\n\n AST_Sequence.DEFMETHOD(\"_do_print\", function(output) {\n this.expressions.forEach(function(node, index) {\n if (index > 0) {\n output.comma();\n if (output.should_break()) {\n output.newline();\n output.indent();\n }\n }\n node.print(output);\n });\n });\n DEFPRINT(AST_Sequence, function(self, output) {\n self._do_print(output);\n // var p = output.parent();\n // if (p instanceof AST_Statement) {\n // output.with_indent(output.next_indent(), function(){\n // self._do_print(output);\n // });\n // } else {\n // self._do_print(output);\n // }\n });\n DEFPRINT(AST_Dot, function(self, output) {\n var expr = self.expression;\n expr.print(output);\n var prop = self.property;\n var print_computed = RESERVED_WORDS.has(prop)\n ? output.option(\"ie8\")\n : !is_identifier_string(prop, output.option(\"ecma\") >= 2015);\n if (print_computed) {\n output.print(\"[\");\n output.add_mapping(self.end);\n output.print_string(prop);\n output.print(\"]\");\n } else {\n if (expr instanceof AST_Number && expr.getValue() >= 0) {\n if (!/[xa-f.)]/i.test(output.last())) {\n output.print(\".\");\n }\n }\n output.print(\".\");\n // the name after dot would be mapped about here.\n output.add_mapping(self.end);\n output.print_name(prop);\n }\n });\n DEFPRINT(AST_Sub, function(self, output) {\n self.expression.print(output);\n output.print(\"[\");\n self.property.print(output);\n output.print(\"]\");\n });\n DEFPRINT(AST_UnaryPrefix, function(self, output) {\n var op = self.operator;\n output.print(op);\n if (/^[a-z]/i.test(op)\n || (/[+-]$/.test(op)\n && self.expression instanceof AST_UnaryPrefix\n && /^[+-]/.test(self.expression.operator))) {\n output.space();\n }\n self.expression.print(output);\n });\n DEFPRINT(AST_UnaryPostfix, function(self, output) {\n self.expression.print(output);\n output.print(self.operator);\n });\n DEFPRINT(AST_Binary, function(self, output) {\n var op = self.operator;\n self.left.print(output);\n if (op[0] == \">\" /* \">>\" \">>>\" \">\" \">=\" */\n && self.left instanceof AST_UnaryPostfix\n && self.left.operator == \"--\") {\n // space is mandatory to avoid outputting -->\n output.print(\" \");\n } else {\n // the space is optional depending on \"beautify\"\n output.space();\n }\n output.print(op);\n if ((op == \"<\" || op == \"<<\")\n && self.right instanceof AST_UnaryPrefix\n && self.right.operator == \"!\"\n && self.right.expression instanceof AST_UnaryPrefix\n && self.right.expression.operator == \"--\") {\n // space is mandatory to avoid outputting x ? y : false\n if (self.left.operator == \"||\") {\n var lr = self.left.right.evaluate(compressor);\n if (!lr) return make_node(AST_Conditional, self, {\n condition: self.left.left,\n consequent: self.right,\n alternative: self.left.right\n }).optimize(compressor);\n }\n break;\n case \"||\":\n var ll = has_flag(self.left, TRUTHY)\n ? true\n : has_flag(self.left, FALSY)\n ? false\n : self.left.evaluate(compressor);\n if (!ll) {\n compressor.warn(\"Condition left of || always false [{file}:{line},{col}]\", self.start);\n return make_sequence(self, [ self.left, self.right ]).optimize(compressor);\n } else if (!(ll instanceof AST_Node)) {\n compressor.warn(\"Condition left of || always true [{file}:{line},{col}]\", self.start);\n return maintain_this_binding(compressor.parent(), compressor.self(), self.left).optimize(compressor);\n }\n var rr = self.right.evaluate(compressor);\n if (!rr) {\n var parent = compressor.parent();\n if (parent.operator == \"||\" && parent.left === compressor.self() || compressor.in_boolean_context()) {\n compressor.warn(\"Dropping side-effect-free || [{file}:{line},{col}]\", self.start);\n return self.left.optimize(compressor);\n }\n } else if (!(rr instanceof AST_Node)) {\n if (compressor.in_boolean_context()) {\n compressor.warn(\"Boolean || always true [{file}:{line},{col}]\", self.start);\n return make_sequence(self, [\n self.left,\n make_node(AST_True, self)\n ]).optimize(compressor);\n } else {\n set_flag(self, TRUTHY);\n }\n }\n if (self.left.operator == \"&&\") {\n var lr = self.left.right.evaluate(compressor);\n if (lr && !(lr instanceof AST_Node)) return make_node(AST_Conditional, self, {\n condition: self.left.left,\n consequent: self.left.right,\n alternative: self.right\n }).optimize(compressor);\n }\n break;\n case \"??\":\n if (is_nullish(self.left)) {\n return self.right;\n }\n\n var ll = self.left.evaluate(compressor);\n if (!(ll instanceof AST_Node)) {\n // if we know the value for sure we can simply compute right away.\n return ll == null ? self.right : self.left;\n }\n\n if (compressor.in_boolean_context()) {\n const rr = self.right.evaluate(compressor);\n if (!(rr instanceof AST_Node) && !rr) {\n return self.left;\n }\n }\n }\n var associative = true;\n switch (self.operator) {\n case \"+\":\n // \"foo\" + (\"bar\" + x) => \"foobar\" + x\n if (self.left instanceof AST_Constant\n && self.right instanceof AST_Binary\n && self.right.operator == \"+\"\n && self.right.is_string(compressor)) {\n var binary = make_node(AST_Binary, self, {\n operator: \"+\",\n left: self.left,\n right: self.right.left,\n });\n var l = binary.optimize(compressor);\n if (binary !== l) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: l,\n right: self.right.right\n });\n }\n }\n // (x + \"foo\") + \"bar\" => x + \"foobar\"\n if (self.right instanceof AST_Constant\n && self.left instanceof AST_Binary\n && self.left.operator == \"+\"\n && self.left.is_string(compressor)) {\n var binary = make_node(AST_Binary, self, {\n operator: \"+\",\n left: self.left.right,\n right: self.right,\n });\n var r = binary.optimize(compressor);\n if (binary !== r) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: self.left.left,\n right: r\n });\n }\n }\n // (x + \"foo\") + (\"bar\" + y) => (x + \"foobar\") + y\n if (self.left instanceof AST_Binary\n && self.left.operator == \"+\"\n && self.left.is_string(compressor)\n && self.right instanceof AST_Binary\n && self.right.operator == \"+\"\n && self.right.is_string(compressor)) {\n var binary = make_node(AST_Binary, self, {\n operator: \"+\",\n left: self.left.right,\n right: self.right.left,\n });\n var m = binary.optimize(compressor);\n if (binary !== m) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: make_node(AST_Binary, self.left, {\n operator: \"+\",\n left: self.left.left,\n right: m\n }),\n right: self.right.right\n });\n }\n }\n // a + -b => a - b\n if (self.right instanceof AST_UnaryPrefix\n && self.right.operator == \"-\"\n && self.left.is_number(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"-\",\n left: self.left,\n right: self.right.expression\n });\n break;\n }\n // -a + b => b - a\n if (self.left instanceof AST_UnaryPrefix\n && self.left.operator == \"-\"\n && reversible()\n && self.right.is_number(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"-\",\n left: self.right,\n right: self.left.expression\n });\n break;\n }\n // `foo${bar}baz` + 1 => `foo${bar}baz1`\n if (self.left instanceof AST_TemplateString) {\n var l = self.left;\n var r = self.right.evaluate(compressor);\n if (r != self.right) {\n l.segments[l.segments.length - 1].value += r.toString();\n return l;\n }\n }\n // 1 + `foo${bar}baz` => `1foo${bar}baz`\n if (self.right instanceof AST_TemplateString) {\n var r = self.right;\n var l = self.left.evaluate(compressor);\n if (l != self.left) {\n r.segments[0].value = l.toString() + r.segments[0].value ;\n return r;\n }\n }\n // `1${bar}2` + `foo${bar}baz` => `1${bar}2foo${bar}baz`\n if (self.left instanceof AST_TemplateString\n && self.right instanceof AST_TemplateString) {\n var l = self.left;\n var segments = l.segments;\n var r = self.right;\n segments[segments.length - 1].value += r.segments[0].value;\n for (var i = 1; i < r.segments.length; i++) {\n segments.push(r.segments[i]);\n }\n return l;\n }\n case \"*\":\n associative = compressor.option(\"unsafe_math\");\n case \"&\":\n case \"|\":\n case \"^\":\n // a + +b => +b + a\n if (self.left.is_number(compressor)\n && self.right.is_number(compressor)\n && reversible()\n && !(self.left instanceof AST_Binary\n && self.left.operator != self.operator\n && PRECEDENCE[self.left.operator] >= PRECEDENCE[self.operator])) {\n var reversed = make_node(AST_Binary, self, {\n operator: self.operator,\n left: self.right,\n right: self.left\n });\n if (self.right instanceof AST_Constant\n && !(self.left instanceof AST_Constant)) {\n self = best_of(compressor, reversed, self);\n } else {\n self = best_of(compressor, self, reversed);\n }\n }\n if (associative && self.is_number(compressor)) {\n // a + (b + c) => (a + b) + c\n if (self.right instanceof AST_Binary\n && self.right.operator == self.operator) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: self.left,\n right: self.right.left,\n start: self.left.start,\n end: self.right.left.end\n }),\n right: self.right.right\n });\n }\n // (n + 2) + 3 => 5 + n\n // (2 * n) * 3 => 6 + n\n if (self.right instanceof AST_Constant\n && self.left instanceof AST_Binary\n && self.left.operator == self.operator) {\n if (self.left.left instanceof AST_Constant) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: self.left.left,\n right: self.right,\n start: self.left.left.start,\n end: self.right.end\n }),\n right: self.left.right\n });\n } else if (self.left.right instanceof AST_Constant) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: self.left.right,\n right: self.right,\n start: self.left.right.start,\n end: self.right.end\n }),\n right: self.left.left\n });\n }\n }\n // (a | 1) | (2 | d) => (3 | a) | b\n if (self.left instanceof AST_Binary\n && self.left.operator == self.operator\n && self.left.right instanceof AST_Constant\n && self.right instanceof AST_Binary\n && self.right.operator == self.operator\n && self.right.left instanceof AST_Constant) {\n self = make_node(AST_Binary, self, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left, {\n operator: self.operator,\n left: make_node(AST_Binary, self.left.left, {\n operator: self.operator,\n left: self.left.right,\n right: self.right.left,\n start: self.left.right.start,\n end: self.right.left.end\n }),\n right: self.left.left\n }),\n right: self.right.right\n });\n }\n }\n }\n }\n // x && (y && z) ==> x && y && z\n // x || (y || z) ==> x || y || z\n // x + (\"y\" + z) ==> x + \"y\" + z\n // \"x\" + (y + \"z\")==> \"x\" + y + \"z\"\n if (self.right instanceof AST_Binary\n && self.right.operator == self.operator\n && (lazy_op.has(self.operator)\n || (self.operator == \"+\"\n && (self.right.left.is_string(compressor)\n || (self.left.is_string(compressor)\n && self.right.right.is_string(compressor)))))\n ) {\n self.left = make_node(AST_Binary, self.left, {\n operator : self.operator,\n left : self.left,\n right : self.right.left\n });\n self.right = self.right.right;\n return self.transform(compressor);\n }\n var ev = self.evaluate(compressor);\n if (ev !== self) {\n ev = make_node_from_constant(ev, self).optimize(compressor);\n return best_of(compressor, ev, self);\n }\n return self;\n});\n\ndef_optimize(AST_SymbolExport, function(self) {\n return self;\n});\n\nfunction recursive_ref(compressor, def) {\n var node;\n for (var i = 0; node = compressor.parent(i); i++) {\n if (\n node instanceof AST_Lambda\n || node instanceof AST_Class\n ) {\n var name = node.name;\n if (name && name.definition() === def) break;\n }\n }\n return node;\n}\n\nfunction within_array_or_object_literal(compressor) {\n var node, level = 0;\n while (node = compressor.parent(level++)) {\n if (node instanceof AST_Statement) return false;\n if (node instanceof AST_Array\n || node instanceof AST_ObjectKeyVal\n || node instanceof AST_Object) {\n return true;\n }\n }\n return false;\n}\n\ndef_optimize(AST_SymbolRef, function(self, compressor) {\n if (!compressor.option(\"ie8\")\n && is_undeclared_ref(self)\n && (!self.scope.uses_with || !compressor.find_parent(AST_With))) {\n switch (self.name) {\n case \"undefined\":\n return make_node(AST_Undefined, self).optimize(compressor);\n case \"NaN\":\n return make_node(AST_NaN, self).optimize(compressor);\n case \"Infinity\":\n return make_node(AST_Infinity, self).optimize(compressor);\n }\n }\n var parent = compressor.parent();\n if (compressor.option(\"reduce_vars\") && is_lhs(self, parent) !== self) {\n const def = self.definition();\n if (compressor.top_retain && def.global && compressor.top_retain(def)) {\n def.fixed = false;\n def.should_replace = false;\n def.single_use = false;\n return self;\n }\n var fixed = self.fixed_value();\n var single_use = def.single_use\n && !(parent instanceof AST_Call\n && (parent.is_expr_pure(compressor))\n || has_annotation(parent, _NOINLINE));\n if (single_use && (fixed instanceof AST_Lambda || fixed instanceof AST_Class)) {\n if (retain_top_func(fixed, compressor)) {\n single_use = false;\n } else if (def.scope !== self.scope\n && (def.escaped == 1\n || has_flag(fixed, INLINED)\n || within_array_or_object_literal(compressor))) {\n single_use = false;\n } else if (recursive_ref(compressor, def)) {\n single_use = false;\n } else if (def.scope !== self.scope || def.orig[0] instanceof AST_SymbolFunarg) {\n single_use = fixed.is_constant_expression(self.scope);\n if (single_use == \"f\") {\n var scope = self.scope;\n do {\n if (scope instanceof AST_Defun || is_func_expr(scope)) {\n set_flag(scope, INLINED);\n }\n } while (scope = scope.parent_scope);\n }\n }\n }\n if (single_use && fixed instanceof AST_Lambda) {\n const block_scope = find_scope(compressor);\n single_use =\n def.scope === self.scope\n && !scope_encloses_variables_in_this_scope(block_scope, fixed)\n || parent instanceof AST_Call\n && parent.expression === self\n && !scope_encloses_variables_in_this_scope(block_scope, fixed);\n }\n if (single_use && fixed instanceof AST_Class) {\n const extends_inert = !fixed.extends\n || !fixed.extends.may_throw(compressor)\n && !fixed.extends.has_side_effects(compressor);\n single_use = extends_inert\n && !fixed.properties.some(prop =>\n prop.may_throw(compressor) || prop.has_side_effects(compressor)\n );\n }\n const can_pull_in = single_use && fixed;\n if (can_pull_in) {\n if (fixed instanceof AST_DefClass) {\n set_flag(fixed, SQUEEZED);\n fixed = make_node(AST_ClassExpression, fixed, fixed);\n }\n if (fixed instanceof AST_Defun) {\n set_flag(fixed, SQUEEZED);\n fixed = make_node(AST_Function, fixed, fixed);\n }\n if (def.recursive_refs > 0 && fixed.name instanceof AST_SymbolDefun) {\n const defun_def = fixed.name.definition();\n let lambda_def = fixed.variables.get(fixed.name.name);\n let name = lambda_def && lambda_def.orig[0];\n if (!(name instanceof AST_SymbolLambda)) {\n name = make_node(AST_SymbolLambda, fixed.name, fixed.name);\n name.scope = fixed;\n fixed.name = name;\n lambda_def = fixed.def_function(name);\n }\n walk(fixed, node => {\n if (node instanceof AST_SymbolRef && node.definition() === defun_def) {\n node.thedef = lambda_def;\n lambda_def.references.push(node);\n }\n });\n }\n if (fixed instanceof AST_Lambda || fixed instanceof AST_Class) {\n find_scope(compressor).add_child_scope(fixed);\n }\n return fixed.optimize(compressor);\n }\n if (fixed && def.should_replace === undefined) {\n let init;\n if (fixed instanceof AST_This) {\n if (!(def.orig[0] instanceof AST_SymbolFunarg)\n && def.references.every((ref) =>\n def.scope === ref.scope\n )) {\n init = fixed;\n }\n } else {\n var ev = fixed.evaluate(compressor);\n if (ev !== fixed && (compressor.option(\"unsafe_regexp\") || !(ev instanceof RegExp))) {\n init = make_node_from_constant(ev, fixed);\n }\n }\n if (init) {\n var value_length = init.optimize(compressor).size();\n var fn;\n if (has_symbol_ref(fixed)) {\n fn = function() {\n var result = init.optimize(compressor);\n return result === init ? result.clone(true) : result;\n };\n } else {\n value_length = Math.min(value_length, fixed.size());\n fn = function() {\n var result = best_of_expression(init.optimize(compressor), fixed);\n return result === init || result === fixed ? result.clone(true) : result;\n };\n }\n var name_length = def.name.length;\n var overhead = 0;\n if (compressor.option(\"unused\") && !compressor.exposed(def)) {\n overhead = (name_length + 2 + value_length) / (def.references.length - def.assignments);\n }\n def.should_replace = value_length <= name_length + overhead ? fn : false;\n } else {\n def.should_replace = false;\n }\n }\n if (def.should_replace) {\n return def.should_replace();\n }\n }\n return self;\n\n function has_symbol_ref(value) {\n return walk(value, node => {\n if (node instanceof AST_SymbolRef) return walk_abort;\n });\n }\n});\n\nfunction scope_encloses_variables_in_this_scope(scope, pulled_scope) {\n for (const enclosed of pulled_scope.enclosed) {\n if (pulled_scope.variables.has(enclosed.name)) {\n continue;\n }\n const looked_up = scope.find_variable(enclosed.name);\n if (looked_up) {\n if (looked_up === enclosed) continue;\n return true;\n }\n }\n return false;\n}\n\nfunction is_atomic(lhs, self) {\n return lhs instanceof AST_SymbolRef || lhs.TYPE === self.TYPE;\n}\n\ndef_optimize(AST_Undefined, function(self, compressor) {\n if (compressor.option(\"unsafe_undefined\")) {\n var undef = find_variable(compressor, \"undefined\");\n if (undef) {\n var ref = make_node(AST_SymbolRef, self, {\n name : \"undefined\",\n scope : undef.scope,\n thedef : undef\n });\n set_flag(ref, UNDEFINED);\n return ref;\n }\n }\n var lhs = is_lhs(compressor.self(), compressor.parent());\n if (lhs && is_atomic(lhs, self)) return self;\n return make_node(AST_UnaryPrefix, self, {\n operator: \"void\",\n expression: make_node(AST_Number, self, {\n value: 0\n })\n });\n});\n\ndef_optimize(AST_Infinity, function(self, compressor) {\n var lhs = is_lhs(compressor.self(), compressor.parent());\n if (lhs && is_atomic(lhs, self)) return self;\n if (\n compressor.option(\"keep_infinity\")\n && !(lhs && !is_atomic(lhs, self))\n && !find_variable(compressor, \"Infinity\")\n ) {\n return self;\n }\n return make_node(AST_Binary, self, {\n operator: \"/\",\n left: make_node(AST_Number, self, {\n value: 1\n }),\n right: make_node(AST_Number, self, {\n value: 0\n })\n });\n});\n\ndef_optimize(AST_NaN, function(self, compressor) {\n var lhs = is_lhs(compressor.self(), compressor.parent());\n if (lhs && !is_atomic(lhs, self)\n || find_variable(compressor, \"NaN\")) {\n return make_node(AST_Binary, self, {\n operator: \"/\",\n left: make_node(AST_Number, self, {\n value: 0\n }),\n right: make_node(AST_Number, self, {\n value: 0\n })\n });\n }\n return self;\n});\n\nfunction is_reachable(self, defs) {\n const find_ref = node => {\n if (node instanceof AST_SymbolRef && member(node.definition(), defs)) {\n return walk_abort;\n }\n };\n\n return walk_parent(self, (node, info) => {\n if (node instanceof AST_Scope && node !== self) {\n var parent = info.parent();\n if (parent instanceof AST_Call && parent.expression === node) return;\n if (walk(node, find_ref)) {\n return walk_abort;\n }\n return true;\n }\n });\n}\n\nconst ASSIGN_OPS = makePredicate(\"+ - / * % >> << >>> | ^ &\");\nconst ASSIGN_OPS_COMMUTATIVE = makePredicate(\"* | ^ &\");\ndef_optimize(AST_Assign, function(self, compressor) {\n var def;\n if (compressor.option(\"dead_code\")\n && self.left instanceof AST_SymbolRef\n && (def = self.left.definition()).scope === compressor.find_parent(AST_Lambda)) {\n var level = 0, node, parent = self;\n do {\n node = parent;\n parent = compressor.parent(level++);\n if (parent instanceof AST_Exit) {\n if (in_try(level, parent)) break;\n if (is_reachable(def.scope, [ def ])) break;\n if (self.operator == \"=\") return self.right;\n def.fixed = false;\n return make_node(AST_Binary, self, {\n operator: self.operator.slice(0, -1),\n left: self.left,\n right: self.right\n }).optimize(compressor);\n }\n } while (parent instanceof AST_Binary && parent.right === node\n || parent instanceof AST_Sequence && parent.tail_node() === node);\n }\n self = self.lift_sequences(compressor);\n if (self.operator == \"=\" && self.left instanceof AST_SymbolRef && self.right instanceof AST_Binary) {\n // x = expr1 OP expr2\n if (self.right.left instanceof AST_SymbolRef\n && self.right.left.name == self.left.name\n && ASSIGN_OPS.has(self.right.operator)) {\n // x = x - 2 ---> x -= 2\n self.operator = self.right.operator + \"=\";\n self.right = self.right.right;\n } else if (self.right.right instanceof AST_SymbolRef\n && self.right.right.name == self.left.name\n && ASSIGN_OPS_COMMUTATIVE.has(self.right.operator)\n && !self.right.left.has_side_effects(compressor)) {\n // x = 2 & x ---> x &= 2\n self.operator = self.right.operator + \"=\";\n self.right = self.right.left;\n }\n }\n return self;\n\n function in_try(level, node) {\n var right = self.right;\n self.right = make_node(AST_Null, right);\n var may_throw = node.may_throw(compressor);\n self.right = right;\n var scope = self.left.definition().scope;\n var parent;\n while ((parent = compressor.parent(level++)) !== scope) {\n if (parent instanceof AST_Try) {\n if (parent.bfinally) return true;\n if (may_throw && parent.bcatch) return true;\n }\n }\n }\n});\n\ndef_optimize(AST_DefaultAssign, function(self, compressor) {\n if (!compressor.option(\"evaluate\")) {\n return self;\n }\n var evaluateRight = self.right.evaluate(compressor);\n\n // `[x = undefined] = foo` ---> `[x] = foo`\n if (evaluateRight === undefined) {\n self = self.left;\n } else if (evaluateRight !== self.right) {\n evaluateRight = make_node_from_constant(evaluateRight, self.right);\n self.right = best_of_expression(evaluateRight, self.right);\n }\n\n return self;\n});\n\nfunction is_nullish(node) {\n let fixed;\n return (\n node instanceof AST_Null\n || is_undefined(node)\n || (\n node instanceof AST_SymbolRef\n && (fixed = node.definition().fixed) instanceof AST_Node\n && is_nullish(fixed)\n )\n );\n}\n\nfunction is_nullish_check(check, check_subject, compressor) {\n if (check_subject.may_throw(compressor)) return false;\n\n let nullish_side;\n\n // foo == null\n if (\n check instanceof AST_Binary\n && check.operator === \"==\"\n // which side is nullish?\n && (\n (nullish_side = is_nullish(check.left) && check.left)\n || (nullish_side = is_nullish(check.right) && check.right)\n )\n // is the other side the same as the check_subject\n && (\n nullish_side === check.left\n ? check.right\n : check.left\n ).equivalent_to(check_subject)\n ) {\n return true;\n }\n\n // foo === null || foo === undefined\n if (check instanceof AST_Binary && check.operator === \"||\") {\n let null_cmp;\n let undefined_cmp;\n\n const find_comparison = cmp => {\n if (!(\n cmp instanceof AST_Binary\n && (cmp.operator === \"===\" || cmp.operator === \"==\")\n )) {\n return false;\n }\n\n let found = 0;\n let defined_side;\n\n if (cmp.left instanceof AST_Null) {\n found++;\n null_cmp = cmp;\n defined_side = cmp.right;\n }\n if (cmp.right instanceof AST_Null) {\n found++;\n null_cmp = cmp;\n defined_side = cmp.left;\n }\n if (is_undefined(cmp.left)) {\n found++;\n undefined_cmp = cmp;\n defined_side = cmp.right;\n }\n if (is_undefined(cmp.right)) {\n found++;\n undefined_cmp = cmp;\n defined_side = cmp.left;\n }\n\n if (found !== 1) {\n return false;\n }\n\n if (!defined_side.equivalent_to(check_subject)) {\n return false;\n }\n\n return true;\n };\n\n if (!find_comparison(check.left)) return false;\n if (!find_comparison(check.right)) return false;\n\n if (null_cmp && undefined_cmp && null_cmp !== undefined_cmp) {\n return true;\n }\n }\n\n return false;\n}\n\ndef_optimize(AST_Conditional, function(self, compressor) {\n if (!compressor.option(\"conditionals\")) return self;\n // This looks like lift_sequences(), should probably be under \"sequences\"\n if (self.condition instanceof AST_Sequence) {\n var expressions = self.condition.expressions.slice();\n self.condition = expressions.pop();\n expressions.push(self);\n return make_sequence(self, expressions);\n }\n var cond = self.condition.evaluate(compressor);\n if (cond !== self.condition) {\n if (cond) {\n compressor.warn(\"Condition always true [{file}:{line},{col}]\", self.start);\n return maintain_this_binding(compressor.parent(), compressor.self(), self.consequent);\n } else {\n compressor.warn(\"Condition always false [{file}:{line},{col}]\", self.start);\n return maintain_this_binding(compressor.parent(), compressor.self(), self.alternative);\n }\n }\n var negated = cond.negate(compressor, first_in_statement(compressor));\n if (best_of(compressor, cond, negated) === negated) {\n self = make_node(AST_Conditional, self, {\n condition: negated,\n consequent: self.alternative,\n alternative: self.consequent\n });\n }\n var condition = self.condition;\n var consequent = self.consequent;\n var alternative = self.alternative;\n // x?x:y --> x||y\n if (condition instanceof AST_SymbolRef\n && consequent instanceof AST_SymbolRef\n && condition.definition() === consequent.definition()) {\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: condition,\n right: alternative\n });\n }\n // if (foo) exp = something; else exp = something_else;\n // |\n // v\n // exp = foo ? something : something_else;\n if (consequent instanceof AST_Assign\n && alternative instanceof AST_Assign\n && consequent.operator == alternative.operator\n && consequent.left.equivalent_to(alternative.left)\n && (!self.condition.has_side_effects(compressor)\n || consequent.operator == \"=\"\n && !consequent.left.has_side_effects(compressor))) {\n return make_node(AST_Assign, self, {\n operator: consequent.operator,\n left: consequent.left,\n right: make_node(AST_Conditional, self, {\n condition: self.condition,\n consequent: consequent.right,\n alternative: alternative.right\n })\n });\n }\n // x ? y(a) : y(b) --> y(x ? a : b)\n var arg_index;\n if (consequent instanceof AST_Call\n && alternative.TYPE === consequent.TYPE\n && consequent.args.length > 0\n && consequent.args.length == alternative.args.length\n && consequent.expression.equivalent_to(alternative.expression)\n && !self.condition.has_side_effects(compressor)\n && !consequent.expression.has_side_effects(compressor)\n && typeof (arg_index = single_arg_diff()) == \"number\") {\n var node = consequent.clone();\n node.args[arg_index] = make_node(AST_Conditional, self, {\n condition: self.condition,\n consequent: consequent.args[arg_index],\n alternative: alternative.args[arg_index]\n });\n return node;\n }\n // a ? b : c ? b : d --> (a || c) ? b : d\n if (alternative instanceof AST_Conditional\n && consequent.equivalent_to(alternative.consequent)) {\n return make_node(AST_Conditional, self, {\n condition: make_node(AST_Binary, self, {\n operator: \"||\",\n left: condition,\n right: alternative.condition\n }),\n consequent: consequent,\n alternative: alternative.alternative\n }).optimize(compressor);\n }\n\n // a == null ? b : a -> a ?? b\n if (\n compressor.option(\"ecma\") >= 2020 &&\n is_nullish_check(condition, alternative, compressor)\n ) {\n return make_node(AST_Binary, self, {\n operator: \"??\",\n left: alternative,\n right: consequent\n }).optimize(compressor);\n }\n\n // a ? b : (c, b) --> (a || c), b\n if (alternative instanceof AST_Sequence\n && consequent.equivalent_to(alternative.expressions[alternative.expressions.length - 1])) {\n return make_sequence(self, [\n make_node(AST_Binary, self, {\n operator: \"||\",\n left: condition,\n right: make_sequence(self, alternative.expressions.slice(0, -1))\n }),\n consequent\n ]).optimize(compressor);\n }\n // a ? b : (c && b) --> (a || c) && b\n if (alternative instanceof AST_Binary\n && alternative.operator == \"&&\"\n && consequent.equivalent_to(alternative.right)) {\n return make_node(AST_Binary, self, {\n operator: \"&&\",\n left: make_node(AST_Binary, self, {\n operator: \"||\",\n left: condition,\n right: alternative.left\n }),\n right: consequent\n }).optimize(compressor);\n }\n // x?y?z:a:a --> x&&y?z:a\n if (consequent instanceof AST_Conditional\n && consequent.alternative.equivalent_to(alternative)) {\n return make_node(AST_Conditional, self, {\n condition: make_node(AST_Binary, self, {\n left: self.condition,\n operator: \"&&\",\n right: consequent.condition\n }),\n consequent: consequent.consequent,\n alternative: alternative\n });\n }\n // x ? y : y --> x, y\n if (consequent.equivalent_to(alternative)) {\n return make_sequence(self, [\n self.condition,\n consequent\n ]).optimize(compressor);\n }\n // x ? y || z : z --> x && y || z\n if (consequent instanceof AST_Binary\n && consequent.operator == \"||\"\n && consequent.right.equivalent_to(alternative)) {\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: make_node(AST_Binary, self, {\n operator: \"&&\",\n left: self.condition,\n right: consequent.left\n }),\n right: alternative\n }).optimize(compressor);\n }\n var in_bool = compressor.in_boolean_context();\n if (is_true(self.consequent)) {\n if (is_false(self.alternative)) {\n // c ? true : false ---> !!c\n return booleanize(self.condition);\n }\n // c ? true : x ---> !!c || x\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: booleanize(self.condition),\n right: self.alternative\n });\n }\n if (is_false(self.consequent)) {\n if (is_true(self.alternative)) {\n // c ? false : true ---> !c\n return booleanize(self.condition.negate(compressor));\n }\n // c ? false : x ---> !c && x\n return make_node(AST_Binary, self, {\n operator: \"&&\",\n left: booleanize(self.condition.negate(compressor)),\n right: self.alternative\n });\n }\n if (is_true(self.alternative)) {\n // c ? x : true ---> !c || x\n return make_node(AST_Binary, self, {\n operator: \"||\",\n left: booleanize(self.condition.negate(compressor)),\n right: self.consequent\n });\n }\n if (is_false(self.alternative)) {\n // c ? x : false ---> !!c && x\n return make_node(AST_Binary, self, {\n operator: \"&&\",\n left: booleanize(self.condition),\n right: self.consequent\n });\n }\n\n return self;\n\n function booleanize(node) {\n if (node.is_boolean()) return node;\n // !!expression\n return make_node(AST_UnaryPrefix, node, {\n operator: \"!\",\n expression: node.negate(compressor)\n });\n }\n\n // AST_True or !0\n function is_true(node) {\n return node instanceof AST_True\n || in_bool\n && node instanceof AST_Constant\n && node.getValue()\n || (node instanceof AST_UnaryPrefix\n && node.operator == \"!\"\n && node.expression instanceof AST_Constant\n && !node.expression.getValue());\n }\n // AST_False or !1\n function is_false(node) {\n return node instanceof AST_False\n || in_bool\n && node instanceof AST_Constant\n && !node.getValue()\n || (node instanceof AST_UnaryPrefix\n && node.operator == \"!\"\n && node.expression instanceof AST_Constant\n && node.expression.getValue());\n }\n\n function single_arg_diff() {\n var a = consequent.args;\n var b = alternative.args;\n for (var i = 0, len = a.length; i < len; i++) {\n if (a[i] instanceof AST_Expansion) return;\n if (!a[i].equivalent_to(b[i])) {\n if (b[i] instanceof AST_Expansion) return;\n for (var j = i + 1; j < len; j++) {\n if (a[j] instanceof AST_Expansion) return;\n if (!a[j].equivalent_to(b[j])) return;\n }\n return i;\n }\n }\n }\n});\n\ndef_optimize(AST_Boolean, function(self, compressor) {\n if (compressor.in_boolean_context()) return make_node(AST_Number, self, {\n value: +self.value\n });\n var p = compressor.parent();\n if (compressor.option(\"booleans_as_integers\")) {\n if (p instanceof AST_Binary && (p.operator == \"===\" || p.operator == \"!==\")) {\n p.operator = p.operator.replace(/=$/, \"\");\n }\n return make_node(AST_Number, self, {\n value: +self.value\n });\n }\n if (compressor.option(\"booleans\")) {\n if (p instanceof AST_Binary && (p.operator == \"==\"\n || p.operator == \"!=\")) {\n compressor.warn(\"Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]\", {\n operator : p.operator,\n value : self.value,\n file : p.start.file,\n line : p.start.line,\n col : p.start.col,\n });\n return make_node(AST_Number, self, {\n value: +self.value\n });\n }\n return make_node(AST_UnaryPrefix, self, {\n operator: \"!\",\n expression: make_node(AST_Number, self, {\n value: 1 - self.value\n })\n });\n }\n return self;\n});\n\nfunction safe_to_flatten(value, compressor) {\n if (value instanceof AST_SymbolRef) {\n value = value.fixed_value();\n }\n if (!value) return false;\n if (!(value instanceof AST_Lambda || value instanceof AST_Class)) return true;\n if (!(value instanceof AST_Lambda && value.contains_this())) return true;\n return compressor.parent() instanceof AST_New;\n}\n\ndef_optimize(AST_Sub, function(self, compressor) {\n var expr = self.expression;\n var prop = self.property;\n if (compressor.option(\"properties\")) {\n var key = prop.evaluate(compressor);\n if (key !== prop) {\n if (typeof key == \"string\") {\n if (key == \"undefined\") {\n key = undefined;\n } else {\n var value = parseFloat(key);\n if (value.toString() == key) {\n key = value;\n }\n }\n }\n prop = self.property = best_of_expression(prop, make_node_from_constant(key, prop).transform(compressor));\n var property = \"\" + key;\n if (is_basic_identifier_string(property)\n && property.length <= prop.size() + 1) {\n return make_node(AST_Dot, self, {\n expression: expr,\n property: property,\n quote: prop.quote,\n }).optimize(compressor);\n }\n }\n }\n var fn;\n OPT_ARGUMENTS: if (compressor.option(\"arguments\")\n && expr instanceof AST_SymbolRef\n && expr.name == \"arguments\"\n && expr.definition().orig.length == 1\n && (fn = expr.scope) instanceof AST_Lambda\n && fn.uses_arguments\n && !(fn instanceof AST_Arrow)\n && prop instanceof AST_Number) {\n var index = prop.getValue();\n var params = new Set();\n var argnames = fn.argnames;\n for (var n = 0; n < argnames.length; n++) {\n if (!(argnames[n] instanceof AST_SymbolFunarg)) {\n break OPT_ARGUMENTS; // destructuring parameter - bail\n }\n var param = argnames[n].name;\n if (params.has(param)) {\n break OPT_ARGUMENTS; // duplicate parameter - bail\n }\n params.add(param);\n }\n var argname = fn.argnames[index];\n if (argname && compressor.has_directive(\"use strict\")) {\n var def = argname.definition();\n if (!compressor.option(\"reduce_vars\") || def.assignments || def.orig.length > 1) {\n argname = null;\n }\n } else if (!argname && !compressor.option(\"keep_fargs\") && index < fn.argnames.length + 5) {\n while (index >= fn.argnames.length) {\n argname = make_node(AST_SymbolFunarg, fn, {\n name: fn.make_var_name(\"argument_\" + fn.argnames.length),\n scope: fn\n });\n fn.argnames.push(argname);\n fn.enclosed.push(fn.def_variable(argname));\n }\n }\n if (argname) {\n var sym = make_node(AST_SymbolRef, self, argname);\n sym.reference({});\n clear_flag(argname, UNUSED);\n return sym;\n }\n }\n if (is_lhs(self, compressor.parent())) return self;\n if (key !== prop) {\n var sub = self.flatten_object(property, compressor);\n if (sub) {\n expr = self.expression = sub.expression;\n prop = self.property = sub.property;\n }\n }\n if (compressor.option(\"properties\") && compressor.option(\"side_effects\")\n && prop instanceof AST_Number && expr instanceof AST_Array) {\n var index = prop.getValue();\n var elements = expr.elements;\n var retValue = elements[index];\n FLATTEN: if (safe_to_flatten(retValue, compressor)) {\n var flatten = true;\n var values = [];\n for (var i = elements.length; --i > index;) {\n var value = elements[i].drop_side_effect_free(compressor);\n if (value) {\n values.unshift(value);\n if (flatten && value.has_side_effects(compressor)) flatten = false;\n }\n }\n if (retValue instanceof AST_Expansion) break FLATTEN;\n retValue = retValue instanceof AST_Hole ? make_node(AST_Undefined, retValue) : retValue;\n if (!flatten) values.unshift(retValue);\n while (--i >= 0) {\n var value = elements[i];\n if (value instanceof AST_Expansion) break FLATTEN;\n value = value.drop_side_effect_free(compressor);\n if (value) values.unshift(value);\n else index--;\n }\n if (flatten) {\n values.push(retValue);\n return make_sequence(self, values).optimize(compressor);\n } else return make_node(AST_Sub, self, {\n expression: make_node(AST_Array, expr, {\n elements: values\n }),\n property: make_node(AST_Number, prop, {\n value: index\n })\n });\n }\n }\n var ev = self.evaluate(compressor);\n if (ev !== self) {\n ev = make_node_from_constant(ev, self).optimize(compressor);\n return best_of(compressor, ev, self);\n }\n return self;\n});\n\nAST_Lambda.DEFMETHOD(\"contains_this\", function() {\n return walk(this, node => {\n if (node instanceof AST_This) return walk_abort;\n if (\n node !== this\n && node instanceof AST_Scope\n && !(node instanceof AST_Arrow)\n ) {\n return true;\n }\n });\n});\n\nAST_PropAccess.DEFMETHOD(\"flatten_object\", function(key, compressor) {\n if (!compressor.option(\"properties\")) return;\n var arrows = compressor.option(\"unsafe_arrows\") && compressor.option(\"ecma\") >= 2015;\n var expr = this.expression;\n if (expr instanceof AST_Object) {\n var props = expr.properties;\n for (var i = props.length; --i >= 0;) {\n var prop = props[i];\n if (\"\" + (prop instanceof AST_ConciseMethod ? prop.key.name : prop.key) == key) {\n if (!props.every((prop) => {\n return prop instanceof AST_ObjectKeyVal\n || arrows && prop instanceof AST_ConciseMethod && !prop.is_generator;\n })) break;\n if (!safe_to_flatten(prop.value, compressor)) break;\n return make_node(AST_Sub, this, {\n expression: make_node(AST_Array, expr, {\n elements: props.map(function(prop) {\n var v = prop.value;\n if (v instanceof AST_Accessor) v = make_node(AST_Function, v, v);\n var k = prop.key;\n if (k instanceof AST_Node && !(k instanceof AST_SymbolMethod)) {\n return make_sequence(prop, [ k, v ]);\n }\n return v;\n })\n }),\n property: make_node(AST_Number, this, {\n value: i\n })\n });\n }\n }\n }\n});\n\ndef_optimize(AST_Dot, function(self, compressor) {\n if (self.property == \"arguments\" || self.property == \"caller\") {\n compressor.warn(\"Function.prototype.{prop} not supported [{file}:{line},{col}]\", {\n prop: self.property,\n file: self.start.file,\n line: self.start.line,\n col: self.start.col\n });\n }\n const parent = compressor.parent();\n if (is_lhs(self, parent)) return self;\n if (compressor.option(\"unsafe_proto\")\n && self.expression instanceof AST_Dot\n && self.expression.property == \"prototype\") {\n var exp = self.expression.expression;\n if (is_undeclared_ref(exp)) switch (exp.name) {\n case \"Array\":\n self.expression = make_node(AST_Array, self.expression, {\n elements: []\n });\n break;\n case \"Function\":\n self.expression = make_node(AST_Function, self.expression, {\n argnames: [],\n body: []\n });\n break;\n case \"Number\":\n self.expression = make_node(AST_Number, self.expression, {\n value: 0\n });\n break;\n case \"Object\":\n self.expression = make_node(AST_Object, self.expression, {\n properties: []\n });\n break;\n case \"RegExp\":\n self.expression = make_node(AST_RegExp, self.expression, {\n value: { source: \"t\", flags: \"\" }\n });\n break;\n case \"String\":\n self.expression = make_node(AST_String, self.expression, {\n value: \"\"\n });\n break;\n }\n }\n if (!(parent instanceof AST_Call) || !has_annotation(parent, _NOINLINE)) {\n const sub = self.flatten_object(self.property, compressor);\n if (sub) return sub.optimize(compressor);\n }\n let ev = self.evaluate(compressor);\n if (ev !== self) {\n ev = make_node_from_constant(ev, self).optimize(compressor);\n return best_of(compressor, ev, self);\n }\n return self;\n});\n\nfunction literals_in_boolean_context(self, compressor) {\n if (compressor.in_boolean_context()) {\n return best_of(compressor, self, make_sequence(self, [\n self,\n make_node(AST_True, self)\n ]).optimize(compressor));\n }\n return self;\n}\n\nfunction inline_array_like_spread(self, compressor, elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n if (el instanceof AST_Expansion) {\n var expr = el.expression;\n if ( expr instanceof AST_Array) {\n elements.splice(i, 1, ...expr.elements);\n // Step back one, as the element at i is now new.\n i--;\n }\n // In array-like spread, spreading a non-iterable value is TypeError.\n // We therefore can’t optimize anything else, unlike with object spread.\n }\n }\n return self;\n}\n\ndef_optimize(AST_Array, function(self, compressor) {\n var optimized = literals_in_boolean_context(self, compressor);\n if (optimized !== self) {\n return optimized;\n }\n return inline_array_like_spread(self, compressor, self.elements);\n});\n\ndef_optimize(AST_Object, function(self, compressor) {\n var optimized = literals_in_boolean_context(self, compressor);\n if (optimized !== self) {\n return optimized;\n }\n var props = self.properties;\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n if (prop instanceof AST_Expansion) {\n var expr = prop.expression;\n if (expr instanceof AST_Object) {\n props.splice.apply(props, [i, 1].concat(prop.expression.properties));\n // Step back one, as the property at i is now new.\n i--;\n } else if (expr instanceof AST_Constant\n && !(expr instanceof AST_String)) {\n // Unlike array-like spread, in object spread, spreading a\n // non-iterable value silently does nothing; it is thus safe\n // to remove. AST_String is the only iterable AST_Constant.\n props.splice(i, 1);\n }\n }\n }\n return self;\n});\n\ndef_optimize(AST_RegExp, literals_in_boolean_context);\n\ndef_optimize(AST_Return, function(self, compressor) {\n if (self.value && is_undefined(self.value, compressor)) {\n self.value = null;\n }\n return self;\n});\n\ndef_optimize(AST_Arrow, opt_AST_Lambda);\n\ndef_optimize(AST_Function, function(self, compressor) {\n self = opt_AST_Lambda(self, compressor);\n if (compressor.option(\"unsafe_arrows\")\n && compressor.option(\"ecma\") >= 2015\n && !self.name\n && !self.is_generator\n && !self.uses_arguments\n && !self.pinned()) {\n const has_special_symbol = walk(self, node => {\n if (node instanceof AST_This) return walk_abort;\n });\n if (!has_special_symbol) return make_node(AST_Arrow, self, self).optimize(compressor);\n }\n return self;\n});\n\ndef_optimize(AST_Class, function(self) {\n // HACK to avoid compress failure.\n // AST_Class is not really an AST_Scope/AST_Block as it lacks a body.\n return self;\n});\n\ndef_optimize(AST_Yield, function(self, compressor) {\n if (self.expression && !self.is_star && is_undefined(self.expression, compressor)) {\n self.expression = null;\n }\n return self;\n});\n\ndef_optimize(AST_TemplateString, function(self, compressor) {\n if (!compressor.option(\"evaluate\")\n || compressor.parent() instanceof AST_PrefixedTemplateString)\n return self;\n\n var segments = [];\n for (var i = 0; i < self.segments.length; i++) {\n var segment = self.segments[i];\n if (segment instanceof AST_Node) {\n var result = segment.evaluate(compressor);\n // Evaluate to constant value\n // Constant value shorter than ${segment}\n if (result !== segment && (result + \"\").length <= segment.size() + \"${}\".length) {\n // There should always be a previous and next segment if segment is a node\n segments[segments.length - 1].value = segments[segments.length - 1].value + result + self.segments[++i].value;\n continue;\n }\n // `before ${`innerBefore ${any} innerAfter`} after` => `before innerBefore ${any} innerAfter after`\n // TODO:\n // `before ${'test' + foo} after` => `before innerBefore ${any} innerAfter after`\n // `before ${foo + 'test} after` => `before innerBefore ${any} innerAfter after`\n if (segment instanceof AST_TemplateString) {\n var inners = segment.segments;\n segments[segments.length - 1].value += inners[0].value;\n for (var j = 1; j < inners.length; j++) {\n segment = inners[j];\n segments.push(segment);\n }\n continue;\n }\n }\n segments.push(segment);\n }\n self.segments = segments;\n\n // `foo` => \"foo\"\n if (segments.length == 1) {\n return make_node(AST_String, self, segments[0]);\n }\n if (segments.length === 3 && segments[1] instanceof AST_Node) {\n // `foo${bar}` => \"foo\" + bar\n if (segments[2].value === \"\") {\n return make_node(AST_Binary, self, {\n operator: \"+\",\n left: make_node(AST_String, self, {\n value: segments[0].value,\n }),\n right: segments[1],\n });\n }\n // `{bar}baz` => bar + \"baz\"\n if (segments[0].value === \"\") {\n return make_node(AST_Binary, self, {\n operator: \"+\",\n left: segments[1],\n right: make_node(AST_String, self, {\n value: segments[2].value,\n }),\n });\n }\n }\n return self;\n});\n\ndef_optimize(AST_PrefixedTemplateString, function(self) {\n return self;\n});\n\n// [\"p\"]:1 ---> p:1\n// [42]:1 ---> 42:1\nfunction lift_key(self, compressor) {\n if (!compressor.option(\"computed_props\")) return self;\n // save a comparison in the typical case\n if (!(self.key instanceof AST_Constant)) return self;\n // whitelist acceptable props as not all AST_Constants are true constants\n if (self.key instanceof AST_String || self.key instanceof AST_Number) {\n if (self.key.value === \"__proto__\") return self;\n if (self.key.value == \"constructor\"\n && compressor.parent() instanceof AST_Class) return self;\n if (self instanceof AST_ObjectKeyVal) {\n self.key = self.key.value;\n } else if (self instanceof AST_ClassProperty) {\n self.key = make_node(AST_SymbolClassProperty, self.key, {\n name: self.key.value\n });\n } else {\n self.key = make_node(AST_SymbolMethod, self.key, {\n name: self.key.value\n });\n }\n }\n return self;\n}\n\ndef_optimize(AST_ObjectProperty, lift_key);\n\ndef_optimize(AST_ConciseMethod, function(self, compressor) {\n lift_key(self, compressor);\n // p(){return x;} ---> p:()=>x\n if (compressor.option(\"arrows\")\n && compressor.parent() instanceof AST_Object\n && !self.is_generator\n && !self.value.uses_arguments\n && !self.value.pinned()\n && self.value.body.length == 1\n && self.value.body[0] instanceof AST_Return\n && self.value.body[0].value\n && !self.value.contains_this()) {\n var arrow = make_node(AST_Arrow, self.value, self.value);\n arrow.async = self.async;\n arrow.is_generator = self.is_generator;\n return make_node(AST_ObjectKeyVal, self, {\n key: self.key instanceof AST_SymbolMethod ? self.key.name : self.key,\n value: arrow,\n quote: self.quote,\n });\n }\n return self;\n});\n\ndef_optimize(AST_ObjectKeyVal, function(self, compressor) {\n lift_key(self, compressor);\n // p:function(){} ---> p(){}\n // p:function*(){} ---> *p(){}\n // p:async function(){} ---> async p(){}\n // p:()=>{} ---> p(){}\n // p:async()=>{} ---> async p(){}\n var unsafe_methods = compressor.option(\"unsafe_methods\");\n if (unsafe_methods\n && compressor.option(\"ecma\") >= 2015\n && (!(unsafe_methods instanceof RegExp) || unsafe_methods.test(self.key + \"\"))) {\n var key = self.key;\n var value = self.value;\n var is_arrow_with_block = value instanceof AST_Arrow\n && Array.isArray(value.body)\n && !value.contains_this();\n if ((is_arrow_with_block || value instanceof AST_Function) && !value.name) {\n return make_node(AST_ConciseMethod, self, {\n async: value.async,\n is_generator: value.is_generator,\n key: key instanceof AST_Node ? key : make_node(AST_SymbolMethod, self, {\n name: key,\n }),\n value: make_node(AST_Accessor, value, value),\n quote: self.quote,\n });\n }\n }\n return self;\n});\n\ndef_optimize(AST_Destructuring, function(self, compressor) {\n if (compressor.option(\"pure_getters\") == true\n && compressor.option(\"unused\")\n && !self.is_array\n && Array.isArray(self.names)\n && !is_destructuring_export_decl(compressor)) {\n var keep = [];\n for (var i = 0; i < self.names.length; i++) {\n var elem = self.names[i];\n if (!(elem instanceof AST_ObjectKeyVal\n && typeof elem.key == \"string\"\n && elem.value instanceof AST_SymbolDeclaration\n && !should_retain(compressor, elem.value.definition()))) {\n keep.push(elem);\n }\n }\n if (keep.length != self.names.length) {\n self.names = keep;\n }\n }\n return self;\n\n function is_destructuring_export_decl(compressor) {\n var ancestors = [/^VarDef$/, /^(Const|Let|Var)$/, /^Export$/];\n for (var a = 0, p = 0, len = ancestors.length; a < len; p++) {\n var parent = compressor.parent(p);\n if (!parent) return false;\n if (a === 0 && parent.TYPE == \"Destructuring\") continue;\n if (!ancestors[a].test(parent.TYPE)) {\n return false;\n }\n a++;\n }\n return true;\n }\n\n function should_retain(compressor, def) {\n if (def.references.length) return true;\n if (!def.global) return false;\n if (compressor.toplevel.vars) {\n if (compressor.top_retain) {\n return compressor.top_retain(def);\n }\n return false;\n }\n return true;\n }\n});\n\nexport {\n Compressor,\n};\n","export var domprops = [\n \"$&\",\n \"$'\",\n \"$*\",\n \"$+\",\n \"$1\",\n \"$2\",\n \"$3\",\n \"$4\",\n \"$5\",\n \"$6\",\n \"$7\",\n \"$8\",\n \"$9\",\n \"$_\",\n \"$`\",\n \"$input\",\n \"@@iterator\",\n \"ABORT_ERR\",\n \"ACTIVE\",\n \"ACTIVE_ATTRIBUTES\",\n \"ACTIVE_TEXTURE\",\n \"ACTIVE_UNIFORMS\",\n \"ADDITION\",\n \"ALIASED_LINE_WIDTH_RANGE\",\n \"ALIASED_POINT_SIZE_RANGE\",\n \"ALLOW_KEYBOARD_INPUT\",\n \"ALLPASS\",\n \"ALPHA\",\n \"ALPHA_BITS\",\n \"ALT_MASK\",\n \"ALWAYS\",\n \"ANY_TYPE\",\n \"ANY_UNORDERED_NODE_TYPE\",\n \"ARRAY_BUFFER\",\n \"ARRAY_BUFFER_BINDING\",\n \"ATTACHED_SHADERS\",\n \"ATTRIBUTE_NODE\",\n \"AT_TARGET\",\n \"AddSearchProvider\",\n \"AnalyserNode\",\n \"AnimationEvent\",\n \"AnonXMLHttpRequest\",\n \"ApplicationCache\",\n \"ApplicationCacheErrorEvent\",\n \"Array\",\n \"ArrayBuffer\",\n \"Attr\",\n \"Audio\",\n \"AudioBuffer\",\n \"AudioBufferSourceNode\",\n \"AudioContext\",\n \"AudioDestinationNode\",\n \"AudioListener\",\n \"AudioNode\",\n \"AudioParam\",\n \"AudioProcessingEvent\",\n \"AudioStreamTrack\",\n \"AutocompleteErrorEvent\",\n \"BACK\",\n \"BAD_BOUNDARYPOINTS_ERR\",\n \"BANDPASS\",\n \"BLEND\",\n \"BLEND_COLOR\",\n \"BLEND_DST_ALPHA\",\n \"BLEND_DST_RGB\",\n \"BLEND_EQUATION\",\n \"BLEND_EQUATION_ALPHA\",\n \"BLEND_EQUATION_RGB\",\n \"BLEND_SRC_ALPHA\",\n \"BLEND_SRC_RGB\",\n \"BLUE_BITS\",\n \"BLUR\",\n \"BOOL\",\n \"BOOLEAN_TYPE\",\n \"BOOL_VEC2\",\n \"BOOL_VEC3\",\n \"BOOL_VEC4\",\n \"BOTH\",\n \"BROWSER_DEFAULT_WEBGL\",\n \"BUBBLING_PHASE\",\n \"BUFFER_SIZE\",\n \"BUFFER_USAGE\",\n \"BYTE\",\n \"BYTES_PER_ELEMENT\",\n \"BarProp\",\n \"BaseHref\",\n \"BatteryManager\",\n \"BeforeLoadEvent\",\n \"BeforeUnloadEvent\",\n \"BiquadFilterNode\",\n \"Blob\",\n \"BlobEvent\",\n \"Boolean\",\n \"CAPTURING_PHASE\",\n \"CCW\",\n \"CDATASection\",\n \"CDATA_SECTION_NODE\",\n \"CHANGE\",\n \"CHARSET_RULE\",\n \"CHECKING\",\n \"CLAMP_TO_EDGE\",\n \"CLICK\",\n \"CLOSED\",\n \"CLOSING\",\n \"COLOR_ATTACHMENT0\",\n \"COLOR_BUFFER_BIT\",\n \"COLOR_CLEAR_VALUE\",\n \"COLOR_WRITEMASK\",\n \"COMMENT_NODE\",\n \"COMPILE_STATUS\",\n \"COMPRESSED_RGBA_S3TC_DXT1_EXT\",\n \"COMPRESSED_RGBA_S3TC_DXT3_EXT\",\n \"COMPRESSED_RGBA_S3TC_DXT5_EXT\",\n \"COMPRESSED_RGB_S3TC_DXT1_EXT\",\n \"COMPRESSED_TEXTURE_FORMATS\",\n \"CONNECTING\",\n \"CONSTANT_ALPHA\",\n \"CONSTANT_COLOR\",\n \"CONSTRAINT_ERR\",\n \"CONTEXT_LOST_WEBGL\",\n \"CONTROL_MASK\",\n \"COUNTER_STYLE_RULE\",\n \"CSS\",\n \"CSS2Properties\",\n \"CSSCharsetRule\",\n \"CSSConditionRule\",\n \"CSSCounterStyleRule\",\n \"CSSFontFaceRule\",\n \"CSSFontFeatureValuesRule\",\n \"CSSGroupingRule\",\n \"CSSImportRule\",\n \"CSSKeyframeRule\",\n \"CSSKeyframesRule\",\n \"CSSMediaRule\",\n \"CSSMozDocumentRule\",\n \"CSSNameSpaceRule\",\n \"CSSPageRule\",\n \"CSSPrimitiveValue\",\n \"CSSRule\",\n \"CSSRuleList\",\n \"CSSStyleDeclaration\",\n \"CSSStyleRule\",\n \"CSSStyleSheet\",\n \"CSSSupportsRule\",\n \"CSSUnknownRule\",\n \"CSSValue\",\n \"CSSValueList\",\n \"CSSVariablesDeclaration\",\n \"CSSVariablesRule\",\n \"CSSViewportRule\",\n \"CSS_ATTR\",\n \"CSS_CM\",\n \"CSS_COUNTER\",\n \"CSS_CUSTOM\",\n \"CSS_DEG\",\n \"CSS_DIMENSION\",\n \"CSS_EMS\",\n \"CSS_EXS\",\n \"CSS_FILTER_BLUR\",\n \"CSS_FILTER_BRIGHTNESS\",\n \"CSS_FILTER_CONTRAST\",\n \"CSS_FILTER_CUSTOM\",\n \"CSS_FILTER_DROP_SHADOW\",\n \"CSS_FILTER_GRAYSCALE\",\n \"CSS_FILTER_HUE_ROTATE\",\n \"CSS_FILTER_INVERT\",\n \"CSS_FILTER_OPACITY\",\n \"CSS_FILTER_REFERENCE\",\n \"CSS_FILTER_SATURATE\",\n \"CSS_FILTER_SEPIA\",\n \"CSS_GRAD\",\n \"CSS_HZ\",\n \"CSS_IDENT\",\n \"CSS_IN\",\n \"CSS_INHERIT\",\n \"CSS_KHZ\",\n \"CSS_MATRIX\",\n \"CSS_MATRIX3D\",\n \"CSS_MM\",\n \"CSS_MS\",\n \"CSS_NUMBER\",\n \"CSS_PC\",\n \"CSS_PERCENTAGE\",\n \"CSS_PERSPECTIVE\",\n \"CSS_PRIMITIVE_VALUE\",\n \"CSS_PT\",\n \"CSS_PX\",\n \"CSS_RAD\",\n \"CSS_RECT\",\n \"CSS_RGBCOLOR\",\n \"CSS_ROTATE\",\n \"CSS_ROTATE3D\",\n \"CSS_ROTATEX\",\n \"CSS_ROTATEY\",\n \"CSS_ROTATEZ\",\n \"CSS_S\",\n \"CSS_SCALE\",\n \"CSS_SCALE3D\",\n \"CSS_SCALEX\",\n \"CSS_SCALEY\",\n \"CSS_SCALEZ\",\n \"CSS_SKEW\",\n \"CSS_SKEWX\",\n \"CSS_SKEWY\",\n \"CSS_STRING\",\n \"CSS_TRANSLATE\",\n \"CSS_TRANSLATE3D\",\n \"CSS_TRANSLATEX\",\n \"CSS_TRANSLATEY\",\n \"CSS_TRANSLATEZ\",\n \"CSS_UNKNOWN\",\n \"CSS_URI\",\n \"CSS_VALUE_LIST\",\n \"CSS_VH\",\n \"CSS_VMAX\",\n \"CSS_VMIN\",\n \"CSS_VW\",\n \"CULL_FACE\",\n \"CULL_FACE_MODE\",\n \"CURRENT_PROGRAM\",\n \"CURRENT_VERTEX_ATTRIB\",\n \"CUSTOM\",\n \"CW\",\n \"CanvasGradient\",\n \"CanvasPattern\",\n \"CanvasRenderingContext2D\",\n \"CaretPosition\",\n \"ChannelMergerNode\",\n \"ChannelSplitterNode\",\n \"CharacterData\",\n \"ClientRect\",\n \"ClientRectList\",\n \"Clipboard\",\n \"ClipboardEvent\",\n \"CloseEvent\",\n \"Collator\",\n \"CommandEvent\",\n \"Comment\",\n \"CompositionEvent\",\n \"Console\",\n \"Controllers\",\n \"ConvolverNode\",\n \"Counter\",\n \"Crypto\",\n \"CryptoKey\",\n \"CustomEvent\",\n \"DATABASE_ERR\",\n \"DATA_CLONE_ERR\",\n \"DATA_ERR\",\n \"DBLCLICK\",\n \"DECR\",\n \"DECR_WRAP\",\n \"DELETE_STATUS\",\n \"DEPTH_ATTACHMENT\",\n \"DEPTH_BITS\",\n \"DEPTH_BUFFER_BIT\",\n \"DEPTH_CLEAR_VALUE\",\n \"DEPTH_COMPONENT\",\n \"DEPTH_COMPONENT16\",\n \"DEPTH_FUNC\",\n \"DEPTH_RANGE\",\n \"DEPTH_STENCIL\",\n \"DEPTH_STENCIL_ATTACHMENT\",\n \"DEPTH_TEST\",\n \"DEPTH_WRITEMASK\",\n \"DIRECTION_DOWN\",\n \"DIRECTION_LEFT\",\n \"DIRECTION_RIGHT\",\n \"DIRECTION_UP\",\n \"DISABLED\",\n \"DISPATCH_REQUEST_ERR\",\n \"DITHER\",\n \"DOCUMENT_FRAGMENT_NODE\",\n \"DOCUMENT_NODE\",\n \"DOCUMENT_POSITION_CONTAINED_BY\",\n \"DOCUMENT_POSITION_CONTAINS\",\n \"DOCUMENT_POSITION_DISCONNECTED\",\n \"DOCUMENT_POSITION_FOLLOWING\",\n \"DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\",\n \"DOCUMENT_POSITION_PRECEDING\",\n \"DOCUMENT_TYPE_NODE\",\n \"DOMCursor\",\n \"DOMError\",\n \"DOMException\",\n \"DOMImplementation\",\n \"DOMImplementationLS\",\n \"DOMMatrix\",\n \"DOMMatrixReadOnly\",\n \"DOMParser\",\n \"DOMPoint\",\n \"DOMPointReadOnly\",\n \"DOMQuad\",\n \"DOMRect\",\n \"DOMRectList\",\n \"DOMRectReadOnly\",\n \"DOMRequest\",\n \"DOMSTRING_SIZE_ERR\",\n \"DOMSettableTokenList\",\n \"DOMStringList\",\n \"DOMStringMap\",\n \"DOMTokenList\",\n \"DOMTransactionEvent\",\n \"DOM_DELTA_LINE\",\n \"DOM_DELTA_PAGE\",\n \"DOM_DELTA_PIXEL\",\n \"DOM_INPUT_METHOD_DROP\",\n \"DOM_INPUT_METHOD_HANDWRITING\",\n \"DOM_INPUT_METHOD_IME\",\n \"DOM_INPUT_METHOD_KEYBOARD\",\n \"DOM_INPUT_METHOD_MULTIMODAL\",\n \"DOM_INPUT_METHOD_OPTION\",\n \"DOM_INPUT_METHOD_PASTE\",\n \"DOM_INPUT_METHOD_SCRIPT\",\n \"DOM_INPUT_METHOD_UNKNOWN\",\n \"DOM_INPUT_METHOD_VOICE\",\n \"DOM_KEY_LOCATION_JOYSTICK\",\n \"DOM_KEY_LOCATION_LEFT\",\n \"DOM_KEY_LOCATION_MOBILE\",\n \"DOM_KEY_LOCATION_NUMPAD\",\n \"DOM_KEY_LOCATION_RIGHT\",\n \"DOM_KEY_LOCATION_STANDARD\",\n \"DOM_VK_0\",\n \"DOM_VK_1\",\n \"DOM_VK_2\",\n \"DOM_VK_3\",\n \"DOM_VK_4\",\n \"DOM_VK_5\",\n \"DOM_VK_6\",\n \"DOM_VK_7\",\n \"DOM_VK_8\",\n \"DOM_VK_9\",\n \"DOM_VK_A\",\n \"DOM_VK_ACCEPT\",\n \"DOM_VK_ADD\",\n \"DOM_VK_ALT\",\n \"DOM_VK_ALTGR\",\n \"DOM_VK_AMPERSAND\",\n \"DOM_VK_ASTERISK\",\n \"DOM_VK_AT\",\n \"DOM_VK_ATTN\",\n \"DOM_VK_B\",\n \"DOM_VK_BACKSPACE\",\n \"DOM_VK_BACK_QUOTE\",\n \"DOM_VK_BACK_SLASH\",\n \"DOM_VK_BACK_SPACE\",\n \"DOM_VK_C\",\n \"DOM_VK_CANCEL\",\n \"DOM_VK_CAPS_LOCK\",\n \"DOM_VK_CIRCUMFLEX\",\n \"DOM_VK_CLEAR\",\n \"DOM_VK_CLOSE_BRACKET\",\n \"DOM_VK_CLOSE_CURLY_BRACKET\",\n \"DOM_VK_CLOSE_PAREN\",\n \"DOM_VK_COLON\",\n \"DOM_VK_COMMA\",\n \"DOM_VK_CONTEXT_MENU\",\n \"DOM_VK_CONTROL\",\n \"DOM_VK_CONVERT\",\n \"DOM_VK_CRSEL\",\n \"DOM_VK_CTRL\",\n \"DOM_VK_D\",\n \"DOM_VK_DECIMAL\",\n \"DOM_VK_DELETE\",\n \"DOM_VK_DIVIDE\",\n \"DOM_VK_DOLLAR\",\n \"DOM_VK_DOUBLE_QUOTE\",\n \"DOM_VK_DOWN\",\n \"DOM_VK_E\",\n \"DOM_VK_EISU\",\n \"DOM_VK_END\",\n \"DOM_VK_ENTER\",\n \"DOM_VK_EQUALS\",\n \"DOM_VK_EREOF\",\n \"DOM_VK_ESCAPE\",\n \"DOM_VK_EXCLAMATION\",\n \"DOM_VK_EXECUTE\",\n \"DOM_VK_EXSEL\",\n \"DOM_VK_F\",\n \"DOM_VK_F1\",\n \"DOM_VK_F10\",\n \"DOM_VK_F11\",\n \"DOM_VK_F12\",\n \"DOM_VK_F13\",\n \"DOM_VK_F14\",\n \"DOM_VK_F15\",\n \"DOM_VK_F16\",\n \"DOM_VK_F17\",\n \"DOM_VK_F18\",\n \"DOM_VK_F19\",\n \"DOM_VK_F2\",\n \"DOM_VK_F20\",\n \"DOM_VK_F21\",\n \"DOM_VK_F22\",\n \"DOM_VK_F23\",\n \"DOM_VK_F24\",\n \"DOM_VK_F25\",\n \"DOM_VK_F26\",\n \"DOM_VK_F27\",\n \"DOM_VK_F28\",\n \"DOM_VK_F29\",\n \"DOM_VK_F3\",\n \"DOM_VK_F30\",\n \"DOM_VK_F31\",\n \"DOM_VK_F32\",\n \"DOM_VK_F33\",\n \"DOM_VK_F34\",\n \"DOM_VK_F35\",\n \"DOM_VK_F36\",\n \"DOM_VK_F4\",\n \"DOM_VK_F5\",\n \"DOM_VK_F6\",\n \"DOM_VK_F7\",\n \"DOM_VK_F8\",\n \"DOM_VK_F9\",\n \"DOM_VK_FINAL\",\n \"DOM_VK_FRONT\",\n \"DOM_VK_G\",\n \"DOM_VK_GREATER_THAN\",\n \"DOM_VK_H\",\n \"DOM_VK_HANGUL\",\n \"DOM_VK_HANJA\",\n \"DOM_VK_HASH\",\n \"DOM_VK_HELP\",\n \"DOM_VK_HK_TOGGLE\",\n \"DOM_VK_HOME\",\n \"DOM_VK_HYPHEN_MINUS\",\n \"DOM_VK_I\",\n \"DOM_VK_INSERT\",\n \"DOM_VK_J\",\n \"DOM_VK_JUNJA\",\n \"DOM_VK_K\",\n \"DOM_VK_KANA\",\n \"DOM_VK_KANJI\",\n \"DOM_VK_L\",\n \"DOM_VK_LEFT\",\n \"DOM_VK_LEFT_TAB\",\n \"DOM_VK_LESS_THAN\",\n \"DOM_VK_M\",\n \"DOM_VK_META\",\n \"DOM_VK_MODECHANGE\",\n \"DOM_VK_MULTIPLY\",\n \"DOM_VK_N\",\n \"DOM_VK_NONCONVERT\",\n \"DOM_VK_NUMPAD0\",\n \"DOM_VK_NUMPAD1\",\n \"DOM_VK_NUMPAD2\",\n \"DOM_VK_NUMPAD3\",\n \"DOM_VK_NUMPAD4\",\n \"DOM_VK_NUMPAD5\",\n \"DOM_VK_NUMPAD6\",\n \"DOM_VK_NUMPAD7\",\n \"DOM_VK_NUMPAD8\",\n \"DOM_VK_NUMPAD9\",\n \"DOM_VK_NUM_LOCK\",\n \"DOM_VK_O\",\n \"DOM_VK_OEM_1\",\n \"DOM_VK_OEM_102\",\n \"DOM_VK_OEM_2\",\n \"DOM_VK_OEM_3\",\n \"DOM_VK_OEM_4\",\n \"DOM_VK_OEM_5\",\n \"DOM_VK_OEM_6\",\n \"DOM_VK_OEM_7\",\n \"DOM_VK_OEM_8\",\n \"DOM_VK_OEM_COMMA\",\n \"DOM_VK_OEM_MINUS\",\n \"DOM_VK_OEM_PERIOD\",\n \"DOM_VK_OEM_PLUS\",\n \"DOM_VK_OPEN_BRACKET\",\n \"DOM_VK_OPEN_CURLY_BRACKET\",\n \"DOM_VK_OPEN_PAREN\",\n \"DOM_VK_P\",\n \"DOM_VK_PA1\",\n \"DOM_VK_PAGEDOWN\",\n \"DOM_VK_PAGEUP\",\n \"DOM_VK_PAGE_DOWN\",\n \"DOM_VK_PAGE_UP\",\n \"DOM_VK_PAUSE\",\n \"DOM_VK_PERCENT\",\n \"DOM_VK_PERIOD\",\n \"DOM_VK_PIPE\",\n \"DOM_VK_PLAY\",\n \"DOM_VK_PLUS\",\n \"DOM_VK_PRINT\",\n \"DOM_VK_PRINTSCREEN\",\n \"DOM_VK_PROCESSKEY\",\n \"DOM_VK_PROPERITES\",\n \"DOM_VK_Q\",\n \"DOM_VK_QUESTION_MARK\",\n \"DOM_VK_QUOTE\",\n \"DOM_VK_R\",\n \"DOM_VK_REDO\",\n \"DOM_VK_RETURN\",\n \"DOM_VK_RIGHT\",\n \"DOM_VK_S\",\n \"DOM_VK_SCROLL_LOCK\",\n \"DOM_VK_SELECT\",\n \"DOM_VK_SEMICOLON\",\n \"DOM_VK_SEPARATOR\",\n \"DOM_VK_SHIFT\",\n \"DOM_VK_SLASH\",\n \"DOM_VK_SLEEP\",\n \"DOM_VK_SPACE\",\n \"DOM_VK_SUBTRACT\",\n \"DOM_VK_T\",\n \"DOM_VK_TAB\",\n \"DOM_VK_TILDE\",\n \"DOM_VK_U\",\n \"DOM_VK_UNDERSCORE\",\n \"DOM_VK_UNDO\",\n \"DOM_VK_UNICODE\",\n \"DOM_VK_UP\",\n \"DOM_VK_V\",\n \"DOM_VK_VOLUME_DOWN\",\n \"DOM_VK_VOLUME_MUTE\",\n \"DOM_VK_VOLUME_UP\",\n \"DOM_VK_W\",\n \"DOM_VK_WIN\",\n \"DOM_VK_WINDOW\",\n \"DOM_VK_WIN_ICO_00\",\n \"DOM_VK_WIN_ICO_CLEAR\",\n \"DOM_VK_WIN_ICO_HELP\",\n \"DOM_VK_WIN_OEM_ATTN\",\n \"DOM_VK_WIN_OEM_AUTO\",\n \"DOM_VK_WIN_OEM_BACKTAB\",\n \"DOM_VK_WIN_OEM_CLEAR\",\n \"DOM_VK_WIN_OEM_COPY\",\n \"DOM_VK_WIN_OEM_CUSEL\",\n \"DOM_VK_WIN_OEM_ENLW\",\n \"DOM_VK_WIN_OEM_FINISH\",\n \"DOM_VK_WIN_OEM_FJ_JISHO\",\n \"DOM_VK_WIN_OEM_FJ_LOYA\",\n \"DOM_VK_WIN_OEM_FJ_MASSHOU\",\n \"DOM_VK_WIN_OEM_FJ_ROYA\",\n \"DOM_VK_WIN_OEM_FJ_TOUROKU\",\n \"DOM_VK_WIN_OEM_JUMP\",\n \"DOM_VK_WIN_OEM_PA1\",\n \"DOM_VK_WIN_OEM_PA2\",\n \"DOM_VK_WIN_OEM_PA3\",\n \"DOM_VK_WIN_OEM_RESET\",\n \"DOM_VK_WIN_OEM_WSCTRL\",\n \"DOM_VK_X\",\n \"DOM_VK_XF86XK_ADD_FAVORITE\",\n \"DOM_VK_XF86XK_APPLICATION_LEFT\",\n \"DOM_VK_XF86XK_APPLICATION_RIGHT\",\n \"DOM_VK_XF86XK_AUDIO_CYCLE_TRACK\",\n \"DOM_VK_XF86XK_AUDIO_FORWARD\",\n \"DOM_VK_XF86XK_AUDIO_LOWER_VOLUME\",\n \"DOM_VK_XF86XK_AUDIO_MEDIA\",\n \"DOM_VK_XF86XK_AUDIO_MUTE\",\n \"DOM_VK_XF86XK_AUDIO_NEXT\",\n \"DOM_VK_XF86XK_AUDIO_PAUSE\",\n \"DOM_VK_XF86XK_AUDIO_PLAY\",\n \"DOM_VK_XF86XK_AUDIO_PREV\",\n \"DOM_VK_XF86XK_AUDIO_RAISE_VOLUME\",\n \"DOM_VK_XF86XK_AUDIO_RANDOM_PLAY\",\n \"DOM_VK_XF86XK_AUDIO_RECORD\",\n \"DOM_VK_XF86XK_AUDIO_REPEAT\",\n \"DOM_VK_XF86XK_AUDIO_REWIND\",\n \"DOM_VK_XF86XK_AUDIO_STOP\",\n \"DOM_VK_XF86XK_AWAY\",\n \"DOM_VK_XF86XK_BACK\",\n \"DOM_VK_XF86XK_BACK_FORWARD\",\n \"DOM_VK_XF86XK_BATTERY\",\n \"DOM_VK_XF86XK_BLUE\",\n \"DOM_VK_XF86XK_BLUETOOTH\",\n \"DOM_VK_XF86XK_BOOK\",\n \"DOM_VK_XF86XK_BRIGHTNESS_ADJUST\",\n \"DOM_VK_XF86XK_CALCULATOR\",\n \"DOM_VK_XF86XK_CALENDAR\",\n \"DOM_VK_XF86XK_CD\",\n \"DOM_VK_XF86XK_CLOSE\",\n \"DOM_VK_XF86XK_COMMUNITY\",\n \"DOM_VK_XF86XK_CONTRAST_ADJUST\",\n \"DOM_VK_XF86XK_COPY\",\n \"DOM_VK_XF86XK_CUT\",\n \"DOM_VK_XF86XK_CYCLE_ANGLE\",\n \"DOM_VK_XF86XK_DISPLAY\",\n \"DOM_VK_XF86XK_DOCUMENTS\",\n \"DOM_VK_XF86XK_DOS\",\n \"DOM_VK_XF86XK_EJECT\",\n \"DOM_VK_XF86XK_EXCEL\",\n \"DOM_VK_XF86XK_EXPLORER\",\n \"DOM_VK_XF86XK_FAVORITES\",\n \"DOM_VK_XF86XK_FINANCE\",\n \"DOM_VK_XF86XK_FORWARD\",\n \"DOM_VK_XF86XK_FRAME_BACK\",\n \"DOM_VK_XF86XK_FRAME_FORWARD\",\n \"DOM_VK_XF86XK_GAME\",\n \"DOM_VK_XF86XK_GO\",\n \"DOM_VK_XF86XK_GREEN\",\n \"DOM_VK_XF86XK_HIBERNATE\",\n \"DOM_VK_XF86XK_HISTORY\",\n \"DOM_VK_XF86XK_HOME_PAGE\",\n \"DOM_VK_XF86XK_HOT_LINKS\",\n \"DOM_VK_XF86XK_I_TOUCH\",\n \"DOM_VK_XF86XK_KBD_BRIGHTNESS_DOWN\",\n \"DOM_VK_XF86XK_KBD_BRIGHTNESS_UP\",\n \"DOM_VK_XF86XK_KBD_LIGHT_ON_OFF\",\n \"DOM_VK_XF86XK_LAUNCH0\",\n \"DOM_VK_XF86XK_LAUNCH1\",\n \"DOM_VK_XF86XK_LAUNCH2\",\n \"DOM_VK_XF86XK_LAUNCH3\",\n \"DOM_VK_XF86XK_LAUNCH4\",\n \"DOM_VK_XF86XK_LAUNCH5\",\n \"DOM_VK_XF86XK_LAUNCH6\",\n \"DOM_VK_XF86XK_LAUNCH7\",\n \"DOM_VK_XF86XK_LAUNCH8\",\n \"DOM_VK_XF86XK_LAUNCH9\",\n \"DOM_VK_XF86XK_LAUNCH_A\",\n \"DOM_VK_XF86XK_LAUNCH_B\",\n \"DOM_VK_XF86XK_LAUNCH_C\",\n \"DOM_VK_XF86XK_LAUNCH_D\",\n \"DOM_VK_XF86XK_LAUNCH_E\",\n \"DOM_VK_XF86XK_LAUNCH_F\",\n \"DOM_VK_XF86XK_LIGHT_BULB\",\n \"DOM_VK_XF86XK_LOG_OFF\",\n \"DOM_VK_XF86XK_MAIL\",\n \"DOM_VK_XF86XK_MAIL_FORWARD\",\n \"DOM_VK_XF86XK_MARKET\",\n \"DOM_VK_XF86XK_MEETING\",\n \"DOM_VK_XF86XK_MEMO\",\n \"DOM_VK_XF86XK_MENU_KB\",\n \"DOM_VK_XF86XK_MENU_PB\",\n \"DOM_VK_XF86XK_MESSENGER\",\n \"DOM_VK_XF86XK_MON_BRIGHTNESS_DOWN\",\n \"DOM_VK_XF86XK_MON_BRIGHTNESS_UP\",\n \"DOM_VK_XF86XK_MUSIC\",\n \"DOM_VK_XF86XK_MY_COMPUTER\",\n \"DOM_VK_XF86XK_MY_SITES\",\n \"DOM_VK_XF86XK_NEW\",\n \"DOM_VK_XF86XK_NEWS\",\n \"DOM_VK_XF86XK_OFFICE_HOME\",\n \"DOM_VK_XF86XK_OPEN\",\n \"DOM_VK_XF86XK_OPEN_URL\",\n \"DOM_VK_XF86XK_OPTION\",\n \"DOM_VK_XF86XK_PASTE\",\n \"DOM_VK_XF86XK_PHONE\",\n \"DOM_VK_XF86XK_PICTURES\",\n \"DOM_VK_XF86XK_POWER_DOWN\",\n \"DOM_VK_XF86XK_POWER_OFF\",\n \"DOM_VK_XF86XK_RED\",\n \"DOM_VK_XF86XK_REFRESH\",\n \"DOM_VK_XF86XK_RELOAD\",\n \"DOM_VK_XF86XK_REPLY\",\n \"DOM_VK_XF86XK_ROCKER_DOWN\",\n \"DOM_VK_XF86XK_ROCKER_ENTER\",\n \"DOM_VK_XF86XK_ROCKER_UP\",\n \"DOM_VK_XF86XK_ROTATE_WINDOWS\",\n \"DOM_VK_XF86XK_ROTATION_KB\",\n \"DOM_VK_XF86XK_ROTATION_PB\",\n \"DOM_VK_XF86XK_SAVE\",\n \"DOM_VK_XF86XK_SCREEN_SAVER\",\n \"DOM_VK_XF86XK_SCROLL_CLICK\",\n \"DOM_VK_XF86XK_SCROLL_DOWN\",\n \"DOM_VK_XF86XK_SCROLL_UP\",\n \"DOM_VK_XF86XK_SEARCH\",\n \"DOM_VK_XF86XK_SEND\",\n \"DOM_VK_XF86XK_SHOP\",\n \"DOM_VK_XF86XK_SPELL\",\n \"DOM_VK_XF86XK_SPLIT_SCREEN\",\n \"DOM_VK_XF86XK_STANDBY\",\n \"DOM_VK_XF86XK_START\",\n \"DOM_VK_XF86XK_STOP\",\n \"DOM_VK_XF86XK_SUBTITLE\",\n \"DOM_VK_XF86XK_SUPPORT\",\n \"DOM_VK_XF86XK_SUSPEND\",\n \"DOM_VK_XF86XK_TASK_PANE\",\n \"DOM_VK_XF86XK_TERMINAL\",\n \"DOM_VK_XF86XK_TIME\",\n \"DOM_VK_XF86XK_TOOLS\",\n \"DOM_VK_XF86XK_TOP_MENU\",\n \"DOM_VK_XF86XK_TO_DO_LIST\",\n \"DOM_VK_XF86XK_TRAVEL\",\n \"DOM_VK_XF86XK_USER1KB\",\n \"DOM_VK_XF86XK_USER2KB\",\n \"DOM_VK_XF86XK_USER_PB\",\n \"DOM_VK_XF86XK_UWB\",\n \"DOM_VK_XF86XK_VENDOR_HOME\",\n \"DOM_VK_XF86XK_VIDEO\",\n \"DOM_VK_XF86XK_VIEW\",\n \"DOM_VK_XF86XK_WAKE_UP\",\n \"DOM_VK_XF86XK_WEB_CAM\",\n \"DOM_VK_XF86XK_WHEEL_BUTTON\",\n \"DOM_VK_XF86XK_WLAN\",\n \"DOM_VK_XF86XK_WORD\",\n \"DOM_VK_XF86XK_WWW\",\n \"DOM_VK_XF86XK_XFER\",\n \"DOM_VK_XF86XK_YELLOW\",\n \"DOM_VK_XF86XK_ZOOM_IN\",\n \"DOM_VK_XF86XK_ZOOM_OUT\",\n \"DOM_VK_Y\",\n \"DOM_VK_Z\",\n \"DOM_VK_ZOOM\",\n \"DONE\",\n \"DONT_CARE\",\n \"DOWNLOADING\",\n \"DRAGDROP\",\n \"DST_ALPHA\",\n \"DST_COLOR\",\n \"DYNAMIC_DRAW\",\n \"DataChannel\",\n \"DataTransfer\",\n \"DataTransferItem\",\n \"DataTransferItemList\",\n \"DataView\",\n \"Date\",\n \"DateTimeFormat\",\n \"DelayNode\",\n \"DesktopNotification\",\n \"DesktopNotificationCenter\",\n \"DeviceLightEvent\",\n \"DeviceMotionEvent\",\n \"DeviceOrientationEvent\",\n \"DeviceProximityEvent\",\n \"DeviceStorage\",\n \"DeviceStorageChangeEvent\",\n \"Document\",\n \"DocumentFragment\",\n \"DocumentType\",\n \"DragEvent\",\n \"DynamicsCompressorNode\",\n \"E\",\n \"ELEMENT_ARRAY_BUFFER\",\n \"ELEMENT_ARRAY_BUFFER_BINDING\",\n \"ELEMENT_NODE\",\n \"EMPTY\",\n \"ENCODING_ERR\",\n \"ENDED\",\n \"END_TO_END\",\n \"END_TO_START\",\n \"ENTITY_NODE\",\n \"ENTITY_REFERENCE_NODE\",\n \"EPSILON\",\n \"EQUAL\",\n \"EQUALPOWER\",\n \"ERROR\",\n \"EXPONENTIAL_DISTANCE\",\n \"Element\",\n \"ElementQuery\",\n \"Entity\",\n \"EntityReference\",\n \"Error\",\n \"ErrorEvent\",\n \"EvalError\",\n \"Event\",\n \"EventException\",\n \"EventSource\",\n \"EventTarget\",\n \"External\",\n \"FASTEST\",\n \"FIDOSDK\",\n \"FILTER_ACCEPT\",\n \"FILTER_INTERRUPT\",\n \"FILTER_REJECT\",\n \"FILTER_SKIP\",\n \"FINISHED_STATE\",\n \"FIRST_ORDERED_NODE_TYPE\",\n \"FLOAT\",\n \"FLOAT_MAT2\",\n \"FLOAT_MAT3\",\n \"FLOAT_MAT4\",\n \"FLOAT_VEC2\",\n \"FLOAT_VEC3\",\n \"FLOAT_VEC4\",\n \"FOCUS\",\n \"FONT_FACE_RULE\",\n \"FONT_FEATURE_VALUES_RULE\",\n \"FRAGMENT_SHADER\",\n \"FRAGMENT_SHADER_DERIVATIVE_HINT_OES\",\n \"FRAMEBUFFER\",\n \"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\",\n \"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\",\n \"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\",\n \"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\",\n \"FRAMEBUFFER_BINDING\",\n \"FRAMEBUFFER_COMPLETE\",\n \"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\",\n \"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\",\n \"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\",\n \"FRAMEBUFFER_UNSUPPORTED\",\n \"FRONT\",\n \"FRONT_AND_BACK\",\n \"FRONT_FACE\",\n \"FUNC_ADD\",\n \"FUNC_REVERSE_SUBTRACT\",\n \"FUNC_SUBTRACT\",\n \"Feed\",\n \"FeedEntry\",\n \"File\",\n \"FileError\",\n \"FileList\",\n \"FileReader\",\n \"FindInPage\",\n \"Float32Array\",\n \"Float64Array\",\n \"FocusEvent\",\n \"FontFace\",\n \"FormData\",\n \"Function\",\n \"GENERATE_MIPMAP_HINT\",\n \"GEQUAL\",\n \"GREATER\",\n \"GREEN_BITS\",\n \"GainNode\",\n \"Gamepad\",\n \"GamepadButton\",\n \"GamepadEvent\",\n \"GestureEvent\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_ENOUGH_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_METADATA\",\n \"HAVE_NOTHING\",\n \"HEADERS_RECEIVED\",\n \"HIDDEN\",\n \"HIERARCHY_REQUEST_ERR\",\n \"HIGHPASS\",\n \"HIGHSHELF\",\n \"HIGH_FLOAT\",\n \"HIGH_INT\",\n \"HORIZONTAL\",\n \"HORIZONTAL_AXIS\",\n \"HRTF\",\n \"HTMLAllCollection\",\n \"HTMLAnchorElement\",\n \"HTMLAppletElement\",\n \"HTMLAreaElement\",\n \"HTMLAudioElement\",\n \"HTMLBRElement\",\n \"HTMLBaseElement\",\n \"HTMLBaseFontElement\",\n \"HTMLBlockquoteElement\",\n \"HTMLBodyElement\",\n \"HTMLButtonElement\",\n \"HTMLCanvasElement\",\n \"HTMLCollection\",\n \"HTMLCommandElement\",\n \"HTMLContentElement\",\n \"HTMLDListElement\",\n \"HTMLDataElement\",\n \"HTMLDataListElement\",\n \"HTMLDetailsElement\",\n \"HTMLDialogElement\",\n \"HTMLDirectoryElement\",\n \"HTMLDivElement\",\n \"HTMLDocument\",\n \"HTMLElement\",\n \"HTMLEmbedElement\",\n \"HTMLFieldSetElement\",\n \"HTMLFontElement\",\n \"HTMLFormControlsCollection\",\n \"HTMLFormElement\",\n \"HTMLFrameElement\",\n \"HTMLFrameSetElement\",\n \"HTMLHRElement\",\n \"HTMLHeadElement\",\n \"HTMLHeadingElement\",\n \"HTMLHtmlElement\",\n \"HTMLIFrameElement\",\n \"HTMLImageElement\",\n \"HTMLInputElement\",\n \"HTMLIsIndexElement\",\n \"HTMLKeygenElement\",\n \"HTMLLIElement\",\n \"HTMLLabelElement\",\n \"HTMLLegendElement\",\n \"HTMLLinkElement\",\n \"HTMLMapElement\",\n \"HTMLMarqueeElement\",\n \"HTMLMediaElement\",\n \"HTMLMenuElement\",\n \"HTMLMenuItemElement\",\n \"HTMLMetaElement\",\n \"HTMLMeterElement\",\n \"HTMLModElement\",\n \"HTMLOListElement\",\n \"HTMLObjectElement\",\n \"HTMLOptGroupElement\",\n \"HTMLOptionElement\",\n \"HTMLOptionsCollection\",\n \"HTMLOutputElement\",\n \"HTMLParagraphElement\",\n \"HTMLParamElement\",\n \"HTMLPictureElement\",\n \"HTMLPreElement\",\n \"HTMLProgressElement\",\n \"HTMLPropertiesCollection\",\n \"HTMLQuoteElement\",\n \"HTMLScriptElement\",\n \"HTMLSelectElement\",\n \"HTMLShadowElement\",\n \"HTMLSourceElement\",\n \"HTMLSpanElement\",\n \"HTMLStyleElement\",\n \"HTMLTableCaptionElement\",\n \"HTMLTableCellElement\",\n \"HTMLTableColElement\",\n \"HTMLTableElement\",\n \"HTMLTableRowElement\",\n \"HTMLTableSectionElement\",\n \"HTMLTemplateElement\",\n \"HTMLTextAreaElement\",\n \"HTMLTimeElement\",\n \"HTMLTitleElement\",\n \"HTMLTrackElement\",\n \"HTMLUListElement\",\n \"HTMLUnknownElement\",\n \"HTMLVideoElement\",\n \"HashChangeEvent\",\n \"Headers\",\n \"History\",\n \"ICE_CHECKING\",\n \"ICE_CLOSED\",\n \"ICE_COMPLETED\",\n \"ICE_CONNECTED\",\n \"ICE_FAILED\",\n \"ICE_GATHERING\",\n \"ICE_WAITING\",\n \"IDBCursor\",\n \"IDBCursorWithValue\",\n \"IDBDatabase\",\n \"IDBDatabaseException\",\n \"IDBFactory\",\n \"IDBFileHandle\",\n \"IDBFileRequest\",\n \"IDBIndex\",\n \"IDBKeyRange\",\n \"IDBMutableFile\",\n \"IDBObjectStore\",\n \"IDBOpenDBRequest\",\n \"IDBRequest\",\n \"IDBTransaction\",\n \"IDBVersionChangeEvent\",\n \"IDLE\",\n \"IMPLEMENTATION_COLOR_READ_FORMAT\",\n \"IMPLEMENTATION_COLOR_READ_TYPE\",\n \"IMPORT_RULE\",\n \"INCR\",\n \"INCR_WRAP\",\n \"INDEX_SIZE_ERR\",\n \"INT\",\n \"INT_VEC2\",\n \"INT_VEC3\",\n \"INT_VEC4\",\n \"INUSE_ATTRIBUTE_ERR\",\n \"INVALID_ACCESS_ERR\",\n \"INVALID_CHARACTER_ERR\",\n \"INVALID_ENUM\",\n \"INVALID_EXPRESSION_ERR\",\n \"INVALID_FRAMEBUFFER_OPERATION\",\n \"INVALID_MODIFICATION_ERR\",\n \"INVALID_NODE_TYPE_ERR\",\n \"INVALID_OPERATION\",\n \"INVALID_STATE_ERR\",\n \"INVALID_VALUE\",\n \"INVERSE_DISTANCE\",\n \"INVERT\",\n \"IceCandidate\",\n \"Image\",\n \"ImageBitmap\",\n \"ImageData\",\n \"Infinity\",\n \"InputEvent\",\n \"InputMethodContext\",\n \"InstallTrigger\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Intent\",\n \"InternalError\",\n \"Intl\",\n \"IsSearchProviderInstalled\",\n \"Iterator\",\n \"JSON\",\n \"KEEP\",\n \"KEYDOWN\",\n \"KEYFRAMES_RULE\",\n \"KEYFRAME_RULE\",\n \"KEYPRESS\",\n \"KEYUP\",\n \"KeyEvent\",\n \"KeyboardEvent\",\n \"LENGTHADJUST_SPACING\",\n \"LENGTHADJUST_SPACINGANDGLYPHS\",\n \"LENGTHADJUST_UNKNOWN\",\n \"LEQUAL\",\n \"LESS\",\n \"LINEAR\",\n \"LINEAR_DISTANCE\",\n \"LINEAR_MIPMAP_LINEAR\",\n \"LINEAR_MIPMAP_NEAREST\",\n \"LINES\",\n \"LINE_LOOP\",\n \"LINE_STRIP\",\n \"LINE_WIDTH\",\n \"LINK_STATUS\",\n \"LIVE\",\n \"LN10\",\n \"LN2\",\n \"LOADED\",\n \"LOADING\",\n \"LOG10E\",\n \"LOG2E\",\n \"LOWPASS\",\n \"LOWSHELF\",\n \"LOW_FLOAT\",\n \"LOW_INT\",\n \"LSException\",\n \"LSParserFilter\",\n \"LUMINANCE\",\n \"LUMINANCE_ALPHA\",\n \"LocalMediaStream\",\n \"Location\",\n \"MAX_COMBINED_TEXTURE_IMAGE_UNITS\",\n \"MAX_CUBE_MAP_TEXTURE_SIZE\",\n \"MAX_FRAGMENT_UNIFORM_VECTORS\",\n \"MAX_RENDERBUFFER_SIZE\",\n \"MAX_SAFE_INTEGER\",\n \"MAX_TEXTURE_IMAGE_UNITS\",\n \"MAX_TEXTURE_MAX_ANISOTROPY_EXT\",\n \"MAX_TEXTURE_SIZE\",\n \"MAX_VALUE\",\n \"MAX_VARYING_VECTORS\",\n \"MAX_VERTEX_ATTRIBS\",\n \"MAX_VERTEX_TEXTURE_IMAGE_UNITS\",\n \"MAX_VERTEX_UNIFORM_VECTORS\",\n \"MAX_VIEWPORT_DIMS\",\n \"MEDIA_ERR_ABORTED\",\n \"MEDIA_ERR_DECODE\",\n \"MEDIA_ERR_ENCRYPTED\",\n \"MEDIA_ERR_NETWORK\",\n \"MEDIA_ERR_SRC_NOT_SUPPORTED\",\n \"MEDIA_KEYERR_CLIENT\",\n \"MEDIA_KEYERR_DOMAIN\",\n \"MEDIA_KEYERR_HARDWARECHANGE\",\n \"MEDIA_KEYERR_OUTPUT\",\n \"MEDIA_KEYERR_SERVICE\",\n \"MEDIA_KEYERR_UNKNOWN\",\n \"MEDIA_RULE\",\n \"MEDIUM_FLOAT\",\n \"MEDIUM_INT\",\n \"META_MASK\",\n \"MIN_SAFE_INTEGER\",\n \"MIN_VALUE\",\n \"MIRRORED_REPEAT\",\n \"MODE_ASYNCHRONOUS\",\n \"MODE_SYNCHRONOUS\",\n \"MODIFICATION\",\n \"MOUSEDOWN\",\n \"MOUSEDRAG\",\n \"MOUSEMOVE\",\n \"MOUSEOUT\",\n \"MOUSEOVER\",\n \"MOUSEUP\",\n \"MOZ_KEYFRAMES_RULE\",\n \"MOZ_KEYFRAME_RULE\",\n \"MOZ_SOURCE_CURSOR\",\n \"MOZ_SOURCE_ERASER\",\n \"MOZ_SOURCE_KEYBOARD\",\n \"MOZ_SOURCE_MOUSE\",\n \"MOZ_SOURCE_PEN\",\n \"MOZ_SOURCE_TOUCH\",\n \"MOZ_SOURCE_UNKNOWN\",\n \"MSGESTURE_FLAG_BEGIN\",\n \"MSGESTURE_FLAG_CANCEL\",\n \"MSGESTURE_FLAG_END\",\n \"MSGESTURE_FLAG_INERTIA\",\n \"MSGESTURE_FLAG_NONE\",\n \"MSPOINTER_TYPE_MOUSE\",\n \"MSPOINTER_TYPE_PEN\",\n \"MSPOINTER_TYPE_TOUCH\",\n \"MS_ASYNC_CALLBACK_STATUS_ASSIGN_DELEGATE\",\n \"MS_ASYNC_CALLBACK_STATUS_CANCEL\",\n \"MS_ASYNC_CALLBACK_STATUS_CHOOSEANY\",\n \"MS_ASYNC_CALLBACK_STATUS_ERROR\",\n \"MS_ASYNC_CALLBACK_STATUS_JOIN\",\n \"MS_ASYNC_OP_STATUS_CANCELED\",\n \"MS_ASYNC_OP_STATUS_ERROR\",\n \"MS_ASYNC_OP_STATUS_SUCCESS\",\n \"MS_MANIPULATION_STATE_ACTIVE\",\n \"MS_MANIPULATION_STATE_CANCELLED\",\n \"MS_MANIPULATION_STATE_COMMITTED\",\n \"MS_MANIPULATION_STATE_DRAGGING\",\n \"MS_MANIPULATION_STATE_INERTIA\",\n \"MS_MANIPULATION_STATE_PRESELECT\",\n \"MS_MANIPULATION_STATE_SELECTING\",\n \"MS_MANIPULATION_STATE_STOPPED\",\n \"MS_MEDIA_ERR_ENCRYPTED\",\n \"MS_MEDIA_KEYERR_CLIENT\",\n \"MS_MEDIA_KEYERR_DOMAIN\",\n \"MS_MEDIA_KEYERR_HARDWARECHANGE\",\n \"MS_MEDIA_KEYERR_OUTPUT\",\n \"MS_MEDIA_KEYERR_SERVICE\",\n \"MS_MEDIA_KEYERR_UNKNOWN\",\n \"Map\",\n \"Math\",\n \"MediaController\",\n \"MediaDevices\",\n \"MediaElementAudioSourceNode\",\n \"MediaEncryptedEvent\",\n \"MediaError\",\n \"MediaKeyError\",\n \"MediaKeyEvent\",\n \"MediaKeyMessageEvent\",\n \"MediaKeyNeededEvent\",\n \"MediaKeySession\",\n \"MediaKeyStatusMap\",\n \"MediaKeySystemAccess\",\n \"MediaKeys\",\n \"MediaList\",\n \"MediaQueryList\",\n \"MediaQueryListEvent\",\n \"MediaRecorder\",\n \"MediaSource\",\n \"MediaStream\",\n \"MediaStreamAudioDestinationNode\",\n \"MediaStreamAudioSourceNode\",\n \"MediaStreamEvent\",\n \"MediaStreamTrack\",\n \"MediaStreamTrackEvent\",\n \"MessageChannel\",\n \"MessageEvent\",\n \"MessagePort\",\n \"Methods\",\n \"MimeType\",\n \"MimeTypeArray\",\n \"MouseEvent\",\n \"MouseScrollEvent\",\n \"MozAnimation\",\n \"MozAnimationDelay\",\n \"MozAnimationDirection\",\n \"MozAnimationDuration\",\n \"MozAnimationFillMode\",\n \"MozAnimationIterationCount\",\n \"MozAnimationName\",\n \"MozAnimationPlayState\",\n \"MozAnimationTimingFunction\",\n \"MozAppearance\",\n \"MozBackfaceVisibility\",\n \"MozBinding\",\n \"MozBorderBottomColors\",\n \"MozBorderEnd\",\n \"MozBorderEndColor\",\n \"MozBorderEndStyle\",\n \"MozBorderEndWidth\",\n \"MozBorderImage\",\n \"MozBorderLeftColors\",\n \"MozBorderRightColors\",\n \"MozBorderStart\",\n \"MozBorderStartColor\",\n \"MozBorderStartStyle\",\n \"MozBorderStartWidth\",\n \"MozBorderTopColors\",\n \"MozBoxAlign\",\n \"MozBoxDirection\",\n \"MozBoxFlex\",\n \"MozBoxOrdinalGroup\",\n \"MozBoxOrient\",\n \"MozBoxPack\",\n \"MozBoxSizing\",\n \"MozCSSKeyframeRule\",\n \"MozCSSKeyframesRule\",\n \"MozColumnCount\",\n \"MozColumnFill\",\n \"MozColumnGap\",\n \"MozColumnRule\",\n \"MozColumnRuleColor\",\n \"MozColumnRuleStyle\",\n \"MozColumnRuleWidth\",\n \"MozColumnWidth\",\n \"MozColumns\",\n \"MozContactChangeEvent\",\n \"MozFloatEdge\",\n \"MozFontFeatureSettings\",\n \"MozFontLanguageOverride\",\n \"MozForceBrokenImageIcon\",\n \"MozHyphens\",\n \"MozImageRegion\",\n \"MozMarginEnd\",\n \"MozMarginStart\",\n \"MozMmsEvent\",\n \"MozMmsMessage\",\n \"MozMobileMessageThread\",\n \"MozOSXFontSmoothing\",\n \"MozOrient\",\n \"MozOutlineRadius\",\n \"MozOutlineRadiusBottomleft\",\n \"MozOutlineRadiusBottomright\",\n \"MozOutlineRadiusTopleft\",\n \"MozOutlineRadiusTopright\",\n \"MozPaddingEnd\",\n \"MozPaddingStart\",\n \"MozPerspective\",\n \"MozPerspectiveOrigin\",\n \"MozPowerManager\",\n \"MozSettingsEvent\",\n \"MozSmsEvent\",\n \"MozSmsMessage\",\n \"MozStackSizing\",\n \"MozTabSize\",\n \"MozTextAlignLast\",\n \"MozTextDecorationColor\",\n \"MozTextDecorationLine\",\n \"MozTextDecorationStyle\",\n \"MozTextSizeAdjust\",\n \"MozTransform\",\n \"MozTransformOrigin\",\n \"MozTransformStyle\",\n \"MozTransition\",\n \"MozTransitionDelay\",\n \"MozTransitionDuration\",\n \"MozTransitionProperty\",\n \"MozTransitionTimingFunction\",\n \"MozUserFocus\",\n \"MozUserInput\",\n \"MozUserModify\",\n \"MozUserSelect\",\n \"MozWindowDragging\",\n \"MozWindowShadow\",\n \"MutationEvent\",\n \"MutationObserver\",\n \"MutationRecord\",\n \"NAMESPACE_ERR\",\n \"NAMESPACE_RULE\",\n \"NEAREST\",\n \"NEAREST_MIPMAP_LINEAR\",\n \"NEAREST_MIPMAP_NEAREST\",\n \"NEGATIVE_INFINITY\",\n \"NETWORK_EMPTY\",\n \"NETWORK_ERR\",\n \"NETWORK_IDLE\",\n \"NETWORK_LOADED\",\n \"NETWORK_LOADING\",\n \"NETWORK_NO_SOURCE\",\n \"NEVER\",\n \"NEW\",\n \"NEXT\",\n \"NEXT_NO_DUPLICATE\",\n \"NICEST\",\n \"NODE_AFTER\",\n \"NODE_BEFORE\",\n \"NODE_BEFORE_AND_AFTER\",\n \"NODE_INSIDE\",\n \"NONE\",\n \"NON_TRANSIENT_ERR\",\n \"NOTATION_NODE\",\n \"NOTCH\",\n \"NOTEQUAL\",\n \"NOT_ALLOWED_ERR\",\n \"NOT_FOUND_ERR\",\n \"NOT_READABLE_ERR\",\n \"NOT_SUPPORTED_ERR\",\n \"NO_DATA_ALLOWED_ERR\",\n \"NO_ERR\",\n \"NO_ERROR\",\n \"NO_MODIFICATION_ALLOWED_ERR\",\n \"NUMBER_TYPE\",\n \"NUM_COMPRESSED_TEXTURE_FORMATS\",\n \"NaN\",\n \"NamedNodeMap\",\n \"Navigator\",\n \"NearbyLinks\",\n \"NetworkInformation\",\n \"Node\",\n \"NodeFilter\",\n \"NodeIterator\",\n \"NodeList\",\n \"Notation\",\n \"Notification\",\n \"NotifyPaintEvent\",\n \"Number\",\n \"NumberFormat\",\n \"OBSOLETE\",\n \"ONE\",\n \"ONE_MINUS_CONSTANT_ALPHA\",\n \"ONE_MINUS_CONSTANT_COLOR\",\n \"ONE_MINUS_DST_ALPHA\",\n \"ONE_MINUS_DST_COLOR\",\n \"ONE_MINUS_SRC_ALPHA\",\n \"ONE_MINUS_SRC_COLOR\",\n \"OPEN\",\n \"OPENED\",\n \"OPENING\",\n \"ORDERED_NODE_ITERATOR_TYPE\",\n \"ORDERED_NODE_SNAPSHOT_TYPE\",\n \"OUT_OF_MEMORY\",\n \"Object\",\n \"OfflineAudioCompletionEvent\",\n \"OfflineAudioContext\",\n \"OfflineResourceList\",\n \"Option\",\n \"OscillatorNode\",\n \"OverflowEvent\",\n \"PACK_ALIGNMENT\",\n \"PAGE_RULE\",\n \"PARSE_ERR\",\n \"PATHSEG_ARC_ABS\",\n \"PATHSEG_ARC_REL\",\n \"PATHSEG_CLOSEPATH\",\n \"PATHSEG_CURVETO_CUBIC_ABS\",\n \"PATHSEG_CURVETO_CUBIC_REL\",\n \"PATHSEG_CURVETO_CUBIC_SMOOTH_ABS\",\n \"PATHSEG_CURVETO_CUBIC_SMOOTH_REL\",\n \"PATHSEG_CURVETO_QUADRATIC_ABS\",\n \"PATHSEG_CURVETO_QUADRATIC_REL\",\n \"PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS\",\n \"PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL\",\n \"PATHSEG_LINETO_ABS\",\n \"PATHSEG_LINETO_HORIZONTAL_ABS\",\n \"PATHSEG_LINETO_HORIZONTAL_REL\",\n \"PATHSEG_LINETO_REL\",\n \"PATHSEG_LINETO_VERTICAL_ABS\",\n \"PATHSEG_LINETO_VERTICAL_REL\",\n \"PATHSEG_MOVETO_ABS\",\n \"PATHSEG_MOVETO_REL\",\n \"PATHSEG_UNKNOWN\",\n \"PATH_EXISTS_ERR\",\n \"PEAKING\",\n \"PERMISSION_DENIED\",\n \"PERSISTENT\",\n \"PI\",\n \"PLAYING_STATE\",\n \"POINTS\",\n \"POLYGON_OFFSET_FACTOR\",\n \"POLYGON_OFFSET_FILL\",\n \"POLYGON_OFFSET_UNITS\",\n \"POSITION_UNAVAILABLE\",\n \"POSITIVE_INFINITY\",\n \"PREV\",\n \"PREV_NO_DUPLICATE\",\n \"PROCESSING_INSTRUCTION_NODE\",\n \"PageChangeEvent\",\n \"PageTransitionEvent\",\n \"PaintRequest\",\n \"PaintRequestList\",\n \"PannerNode\",\n \"Path2D\",\n \"Performance\",\n \"PerformanceEntry\",\n \"PerformanceMark\",\n \"PerformanceMeasure\",\n \"PerformanceNavigation\",\n \"PerformanceResourceTiming\",\n \"PerformanceTiming\",\n \"PeriodicWave\",\n \"Plugin\",\n \"PluginArray\",\n \"PopStateEvent\",\n \"PopupBlockedEvent\",\n \"ProcessingInstruction\",\n \"ProgressEvent\",\n \"Promise\",\n \"PropertyNodeList\",\n \"Proxy\",\n \"PushManager\",\n \"PushSubscription\",\n \"Q\",\n \"QUOTA_ERR\",\n \"QUOTA_EXCEEDED_ERR\",\n \"QueryInterface\",\n \"READ_ONLY\",\n \"READ_ONLY_ERR\",\n \"READ_WRITE\",\n \"RED_BITS\",\n \"REMOVAL\",\n \"RENDERBUFFER\",\n \"RENDERBUFFER_ALPHA_SIZE\",\n \"RENDERBUFFER_BINDING\",\n \"RENDERBUFFER_BLUE_SIZE\",\n \"RENDERBUFFER_DEPTH_SIZE\",\n \"RENDERBUFFER_GREEN_SIZE\",\n \"RENDERBUFFER_HEIGHT\",\n \"RENDERBUFFER_INTERNAL_FORMAT\",\n \"RENDERBUFFER_RED_SIZE\",\n \"RENDERBUFFER_STENCIL_SIZE\",\n \"RENDERBUFFER_WIDTH\",\n \"RENDERER\",\n \"RENDERING_INTENT_ABSOLUTE_COLORIMETRIC\",\n \"RENDERING_INTENT_AUTO\",\n \"RENDERING_INTENT_PERCEPTUAL\",\n \"RENDERING_INTENT_RELATIVE_COLORIMETRIC\",\n \"RENDERING_INTENT_SATURATION\",\n \"RENDERING_INTENT_UNKNOWN\",\n \"REPEAT\",\n \"REPLACE\",\n \"RGB\",\n \"RGB565\",\n \"RGB5_A1\",\n \"RGBA\",\n \"RGBA4\",\n \"RGBColor\",\n \"ROTATION_CLOCKWISE\",\n \"ROTATION_COUNTERCLOCKWISE\",\n \"RTCDataChannelEvent\",\n \"RTCIceCandidate\",\n \"RTCPeerConnectionIceEvent\",\n \"RTCRtpReceiver\",\n \"RTCRtpSender\",\n \"RTCSessionDescription\",\n \"RTCStatsReport\",\n \"RadioNodeList\",\n \"Range\",\n \"RangeError\",\n \"RangeException\",\n \"RecordErrorEvent\",\n \"Rect\",\n \"ReferenceError\",\n \"RegExp\",\n \"Request\",\n \"Response\",\n \"SAMPLER_2D\",\n \"SAMPLER_CUBE\",\n \"SAMPLES\",\n \"SAMPLE_ALPHA_TO_COVERAGE\",\n \"SAMPLE_BUFFERS\",\n \"SAMPLE_COVERAGE\",\n \"SAMPLE_COVERAGE_INVERT\",\n \"SAMPLE_COVERAGE_VALUE\",\n \"SAWTOOTH\",\n \"SCHEDULED_STATE\",\n \"SCISSOR_BOX\",\n \"SCISSOR_TEST\",\n \"SCROLL_PAGE_DOWN\",\n \"SCROLL_PAGE_UP\",\n \"SDP_ANSWER\",\n \"SDP_OFFER\",\n \"SDP_PRANSWER\",\n \"SECURITY_ERR\",\n \"SELECT\",\n \"SERIALIZE_ERR\",\n \"SEVERITY_ERROR\",\n \"SEVERITY_FATAL_ERROR\",\n \"SEVERITY_WARNING\",\n \"SHADER_COMPILER\",\n \"SHADER_TYPE\",\n \"SHADING_LANGUAGE_VERSION\",\n \"SHIFT_MASK\",\n \"SHORT\",\n \"SHOWING\",\n \"SHOW_ALL\",\n \"SHOW_ATTRIBUTE\",\n \"SHOW_CDATA_SECTION\",\n \"SHOW_COMMENT\",\n \"SHOW_DOCUMENT\",\n \"SHOW_DOCUMENT_FRAGMENT\",\n \"SHOW_DOCUMENT_TYPE\",\n \"SHOW_ELEMENT\",\n \"SHOW_ENTITY\",\n \"SHOW_ENTITY_REFERENCE\",\n \"SHOW_NOTATION\",\n \"SHOW_PROCESSING_INSTRUCTION\",\n \"SHOW_TEXT\",\n \"SINE\",\n \"SOUNDFIELD\",\n \"SQLException\",\n \"SQRT1_2\",\n \"SQRT2\",\n \"SQUARE\",\n \"SRC_ALPHA\",\n \"SRC_ALPHA_SATURATE\",\n \"SRC_COLOR\",\n \"START_TO_END\",\n \"START_TO_START\",\n \"STATIC_DRAW\",\n \"STENCIL_ATTACHMENT\",\n \"STENCIL_BACK_FAIL\",\n \"STENCIL_BACK_FUNC\",\n \"STENCIL_BACK_PASS_DEPTH_FAIL\",\n \"STENCIL_BACK_PASS_DEPTH_PASS\",\n \"STENCIL_BACK_REF\",\n \"STENCIL_BACK_VALUE_MASK\",\n \"STENCIL_BACK_WRITEMASK\",\n \"STENCIL_BITS\",\n \"STENCIL_BUFFER_BIT\",\n \"STENCIL_CLEAR_VALUE\",\n \"STENCIL_FAIL\",\n \"STENCIL_FUNC\",\n \"STENCIL_INDEX\",\n \"STENCIL_INDEX8\",\n \"STENCIL_PASS_DEPTH_FAIL\",\n \"STENCIL_PASS_DEPTH_PASS\",\n \"STENCIL_REF\",\n \"STENCIL_TEST\",\n \"STENCIL_VALUE_MASK\",\n \"STENCIL_WRITEMASK\",\n \"STREAM_DRAW\",\n \"STRING_TYPE\",\n \"STYLE_RULE\",\n \"SUBPIXEL_BITS\",\n \"SUPPORTS_RULE\",\n \"SVGAElement\",\n \"SVGAltGlyphDefElement\",\n \"SVGAltGlyphElement\",\n \"SVGAltGlyphItemElement\",\n \"SVGAngle\",\n \"SVGAnimateColorElement\",\n \"SVGAnimateElement\",\n \"SVGAnimateMotionElement\",\n \"SVGAnimateTransformElement\",\n \"SVGAnimatedAngle\",\n \"SVGAnimatedBoolean\",\n \"SVGAnimatedEnumeration\",\n \"SVGAnimatedInteger\",\n \"SVGAnimatedLength\",\n \"SVGAnimatedLengthList\",\n \"SVGAnimatedNumber\",\n \"SVGAnimatedNumberList\",\n \"SVGAnimatedPreserveAspectRatio\",\n \"SVGAnimatedRect\",\n \"SVGAnimatedString\",\n \"SVGAnimatedTransformList\",\n \"SVGAnimationElement\",\n \"SVGCircleElement\",\n \"SVGClipPathElement\",\n \"SVGColor\",\n \"SVGComponentTransferFunctionElement\",\n \"SVGCursorElement\",\n \"SVGDefsElement\",\n \"SVGDescElement\",\n \"SVGDiscardElement\",\n \"SVGDocument\",\n \"SVGElement\",\n \"SVGElementInstance\",\n \"SVGElementInstanceList\",\n \"SVGEllipseElement\",\n \"SVGException\",\n \"SVGFEBlendElement\",\n \"SVGFEColorMatrixElement\",\n \"SVGFEComponentTransferElement\",\n \"SVGFECompositeElement\",\n \"SVGFEConvolveMatrixElement\",\n \"SVGFEDiffuseLightingElement\",\n \"SVGFEDisplacementMapElement\",\n \"SVGFEDistantLightElement\",\n \"SVGFEDropShadowElement\",\n \"SVGFEFloodElement\",\n \"SVGFEFuncAElement\",\n \"SVGFEFuncBElement\",\n \"SVGFEFuncGElement\",\n \"SVGFEFuncRElement\",\n \"SVGFEGaussianBlurElement\",\n \"SVGFEImageElement\",\n \"SVGFEMergeElement\",\n \"SVGFEMergeNodeElement\",\n \"SVGFEMorphologyElement\",\n \"SVGFEOffsetElement\",\n \"SVGFEPointLightElement\",\n \"SVGFESpecularLightingElement\",\n \"SVGFESpotLightElement\",\n \"SVGFETileElement\",\n \"SVGFETurbulenceElement\",\n \"SVGFilterElement\",\n \"SVGFontElement\",\n \"SVGFontFaceElement\",\n \"SVGFontFaceFormatElement\",\n \"SVGFontFaceNameElement\",\n \"SVGFontFaceSrcElement\",\n \"SVGFontFaceUriElement\",\n \"SVGForeignObjectElement\",\n \"SVGGElement\",\n \"SVGGeometryElement\",\n \"SVGGlyphElement\",\n \"SVGGlyphRefElement\",\n \"SVGGradientElement\",\n \"SVGGraphicsElement\",\n \"SVGHKernElement\",\n \"SVGImageElement\",\n \"SVGLength\",\n \"SVGLengthList\",\n \"SVGLineElement\",\n \"SVGLinearGradientElement\",\n \"SVGMPathElement\",\n \"SVGMarkerElement\",\n \"SVGMaskElement\",\n \"SVGMatrix\",\n \"SVGMetadataElement\",\n \"SVGMissingGlyphElement\",\n \"SVGNumber\",\n \"SVGNumberList\",\n \"SVGPaint\",\n \"SVGPathElement\",\n \"SVGPathSeg\",\n \"SVGPathSegArcAbs\",\n \"SVGPathSegArcRel\",\n \"SVGPathSegClosePath\",\n \"SVGPathSegCurvetoCubicAbs\",\n \"SVGPathSegCurvetoCubicRel\",\n \"SVGPathSegCurvetoCubicSmoothAbs\",\n \"SVGPathSegCurvetoCubicSmoothRel\",\n \"SVGPathSegCurvetoQuadraticAbs\",\n \"SVGPathSegCurvetoQuadraticRel\",\n \"SVGPathSegCurvetoQuadraticSmoothAbs\",\n \"SVGPathSegCurvetoQuadraticSmoothRel\",\n \"SVGPathSegLinetoAbs\",\n \"SVGPathSegLinetoHorizontalAbs\",\n \"SVGPathSegLinetoHorizontalRel\",\n \"SVGPathSegLinetoRel\",\n \"SVGPathSegLinetoVerticalAbs\",\n \"SVGPathSegLinetoVerticalRel\",\n \"SVGPathSegList\",\n \"SVGPathSegMovetoAbs\",\n \"SVGPathSegMovetoRel\",\n \"SVGPatternElement\",\n \"SVGPoint\",\n \"SVGPointList\",\n \"SVGPolygonElement\",\n \"SVGPolylineElement\",\n \"SVGPreserveAspectRatio\",\n \"SVGRadialGradientElement\",\n \"SVGRect\",\n \"SVGRectElement\",\n \"SVGRenderingIntent\",\n \"SVGSVGElement\",\n \"SVGScriptElement\",\n \"SVGSetElement\",\n \"SVGStopElement\",\n \"SVGStringList\",\n \"SVGStyleElement\",\n \"SVGSwitchElement\",\n \"SVGSymbolElement\",\n \"SVGTRefElement\",\n \"SVGTSpanElement\",\n \"SVGTextContentElement\",\n \"SVGTextElement\",\n \"SVGTextPathElement\",\n \"SVGTextPositioningElement\",\n \"SVGTitleElement\",\n \"SVGTransform\",\n \"SVGTransformList\",\n \"SVGUnitTypes\",\n \"SVGUseElement\",\n \"SVGVKernElement\",\n \"SVGViewElement\",\n \"SVGViewSpec\",\n \"SVGZoomAndPan\",\n \"SVGZoomEvent\",\n \"SVG_ANGLETYPE_DEG\",\n \"SVG_ANGLETYPE_GRAD\",\n \"SVG_ANGLETYPE_RAD\",\n \"SVG_ANGLETYPE_UNKNOWN\",\n \"SVG_ANGLETYPE_UNSPECIFIED\",\n \"SVG_CHANNEL_A\",\n \"SVG_CHANNEL_B\",\n \"SVG_CHANNEL_G\",\n \"SVG_CHANNEL_R\",\n \"SVG_CHANNEL_UNKNOWN\",\n \"SVG_COLORTYPE_CURRENTCOLOR\",\n \"SVG_COLORTYPE_RGBCOLOR\",\n \"SVG_COLORTYPE_RGBCOLOR_ICCCOLOR\",\n \"SVG_COLORTYPE_UNKNOWN\",\n \"SVG_EDGEMODE_DUPLICATE\",\n \"SVG_EDGEMODE_NONE\",\n \"SVG_EDGEMODE_UNKNOWN\",\n \"SVG_EDGEMODE_WRAP\",\n \"SVG_FEBLEND_MODE_COLOR\",\n \"SVG_FEBLEND_MODE_COLOR_BURN\",\n \"SVG_FEBLEND_MODE_COLOR_DODGE\",\n \"SVG_FEBLEND_MODE_DARKEN\",\n \"SVG_FEBLEND_MODE_DIFFERENCE\",\n \"SVG_FEBLEND_MODE_EXCLUSION\",\n \"SVG_FEBLEND_MODE_HARD_LIGHT\",\n \"SVG_FEBLEND_MODE_HUE\",\n \"SVG_FEBLEND_MODE_LIGHTEN\",\n \"SVG_FEBLEND_MODE_LUMINOSITY\",\n \"SVG_FEBLEND_MODE_MULTIPLY\",\n \"SVG_FEBLEND_MODE_NORMAL\",\n \"SVG_FEBLEND_MODE_OVERLAY\",\n \"SVG_FEBLEND_MODE_SATURATION\",\n \"SVG_FEBLEND_MODE_SCREEN\",\n \"SVG_FEBLEND_MODE_SOFT_LIGHT\",\n \"SVG_FEBLEND_MODE_UNKNOWN\",\n \"SVG_FECOLORMATRIX_TYPE_HUEROTATE\",\n \"SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA\",\n \"SVG_FECOLORMATRIX_TYPE_MATRIX\",\n \"SVG_FECOLORMATRIX_TYPE_SATURATE\",\n \"SVG_FECOLORMATRIX_TYPE_UNKNOWN\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_GAMMA\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_LINEAR\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_TABLE\",\n \"SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN\",\n \"SVG_FECOMPOSITE_OPERATOR_ARITHMETIC\",\n \"SVG_FECOMPOSITE_OPERATOR_ATOP\",\n \"SVG_FECOMPOSITE_OPERATOR_IN\",\n \"SVG_FECOMPOSITE_OPERATOR_OUT\",\n \"SVG_FECOMPOSITE_OPERATOR_OVER\",\n \"SVG_FECOMPOSITE_OPERATOR_UNKNOWN\",\n \"SVG_FECOMPOSITE_OPERATOR_XOR\",\n \"SVG_INVALID_VALUE_ERR\",\n \"SVG_LENGTHTYPE_CM\",\n \"SVG_LENGTHTYPE_EMS\",\n \"SVG_LENGTHTYPE_EXS\",\n \"SVG_LENGTHTYPE_IN\",\n \"SVG_LENGTHTYPE_MM\",\n \"SVG_LENGTHTYPE_NUMBER\",\n \"SVG_LENGTHTYPE_PC\",\n \"SVG_LENGTHTYPE_PERCENTAGE\",\n \"SVG_LENGTHTYPE_PT\",\n \"SVG_LENGTHTYPE_PX\",\n \"SVG_LENGTHTYPE_UNKNOWN\",\n \"SVG_MARKERUNITS_STROKEWIDTH\",\n \"SVG_MARKERUNITS_UNKNOWN\",\n \"SVG_MARKERUNITS_USERSPACEONUSE\",\n \"SVG_MARKER_ORIENT_ANGLE\",\n \"SVG_MARKER_ORIENT_AUTO\",\n \"SVG_MARKER_ORIENT_UNKNOWN\",\n \"SVG_MASKTYPE_ALPHA\",\n \"SVG_MASKTYPE_LUMINANCE\",\n \"SVG_MATRIX_NOT_INVERTABLE\",\n \"SVG_MEETORSLICE_MEET\",\n \"SVG_MEETORSLICE_SLICE\",\n \"SVG_MEETORSLICE_UNKNOWN\",\n \"SVG_MORPHOLOGY_OPERATOR_DILATE\",\n \"SVG_MORPHOLOGY_OPERATOR_ERODE\",\n \"SVG_MORPHOLOGY_OPERATOR_UNKNOWN\",\n \"SVG_PAINTTYPE_CURRENTCOLOR\",\n \"SVG_PAINTTYPE_NONE\",\n \"SVG_PAINTTYPE_RGBCOLOR\",\n \"SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR\",\n \"SVG_PAINTTYPE_UNKNOWN\",\n \"SVG_PAINTTYPE_URI\",\n \"SVG_PAINTTYPE_URI_CURRENTCOLOR\",\n \"SVG_PAINTTYPE_URI_NONE\",\n \"SVG_PAINTTYPE_URI_RGBCOLOR\",\n \"SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR\",\n \"SVG_PRESERVEASPECTRATIO_NONE\",\n \"SVG_PRESERVEASPECTRATIO_UNKNOWN\",\n \"SVG_PRESERVEASPECTRATIO_XMAXYMAX\",\n \"SVG_PRESERVEASPECTRATIO_XMAXYMID\",\n \"SVG_PRESERVEASPECTRATIO_XMAXYMIN\",\n \"SVG_PRESERVEASPECTRATIO_XMIDYMAX\",\n \"SVG_PRESERVEASPECTRATIO_XMIDYMID\",\n \"SVG_PRESERVEASPECTRATIO_XMIDYMIN\",\n \"SVG_PRESERVEASPECTRATIO_XMINYMAX\",\n \"SVG_PRESERVEASPECTRATIO_XMINYMID\",\n \"SVG_PRESERVEASPECTRATIO_XMINYMIN\",\n \"SVG_SPREADMETHOD_PAD\",\n \"SVG_SPREADMETHOD_REFLECT\",\n \"SVG_SPREADMETHOD_REPEAT\",\n \"SVG_SPREADMETHOD_UNKNOWN\",\n \"SVG_STITCHTYPE_NOSTITCH\",\n \"SVG_STITCHTYPE_STITCH\",\n \"SVG_STITCHTYPE_UNKNOWN\",\n \"SVG_TRANSFORM_MATRIX\",\n \"SVG_TRANSFORM_ROTATE\",\n \"SVG_TRANSFORM_SCALE\",\n \"SVG_TRANSFORM_SKEWX\",\n \"SVG_TRANSFORM_SKEWY\",\n \"SVG_TRANSFORM_TRANSLATE\",\n \"SVG_TRANSFORM_UNKNOWN\",\n \"SVG_TURBULENCE_TYPE_FRACTALNOISE\",\n \"SVG_TURBULENCE_TYPE_TURBULENCE\",\n \"SVG_TURBULENCE_TYPE_UNKNOWN\",\n \"SVG_UNIT_TYPE_OBJECTBOUNDINGBOX\",\n \"SVG_UNIT_TYPE_UNKNOWN\",\n \"SVG_UNIT_TYPE_USERSPACEONUSE\",\n \"SVG_WRONG_TYPE_ERR\",\n \"SVG_ZOOMANDPAN_DISABLE\",\n \"SVG_ZOOMANDPAN_MAGNIFY\",\n \"SVG_ZOOMANDPAN_UNKNOWN\",\n \"SYNTAX_ERR\",\n \"SavedPages\",\n \"Screen\",\n \"ScreenOrientation\",\n \"Script\",\n \"ScriptProcessorNode\",\n \"ScrollAreaEvent\",\n \"SecurityPolicyViolationEvent\",\n \"Selection\",\n \"ServiceWorker\",\n \"ServiceWorkerContainer\",\n \"ServiceWorkerRegistration\",\n \"SessionDescription\",\n \"Set\",\n \"ShadowRoot\",\n \"SharedWorker\",\n \"SimpleGestureEvent\",\n \"SpeechSynthesisEvent\",\n \"SpeechSynthesisUtterance\",\n \"StopIteration\",\n \"Storage\",\n \"StorageEvent\",\n \"String\",\n \"StyleSheet\",\n \"StyleSheetList\",\n \"SubtleCrypto\",\n \"Symbol\",\n \"SyntaxError\",\n \"TEMPORARY\",\n \"TEXTPATH_METHODTYPE_ALIGN\",\n \"TEXTPATH_METHODTYPE_STRETCH\",\n \"TEXTPATH_METHODTYPE_UNKNOWN\",\n \"TEXTPATH_SPACINGTYPE_AUTO\",\n \"TEXTPATH_SPACINGTYPE_EXACT\",\n \"TEXTPATH_SPACINGTYPE_UNKNOWN\",\n \"TEXTURE\",\n \"TEXTURE0\",\n \"TEXTURE1\",\n \"TEXTURE10\",\n \"TEXTURE11\",\n \"TEXTURE12\",\n \"TEXTURE13\",\n \"TEXTURE14\",\n \"TEXTURE15\",\n \"TEXTURE16\",\n \"TEXTURE17\",\n \"TEXTURE18\",\n \"TEXTURE19\",\n \"TEXTURE2\",\n \"TEXTURE20\",\n \"TEXTURE21\",\n \"TEXTURE22\",\n \"TEXTURE23\",\n \"TEXTURE24\",\n \"TEXTURE25\",\n \"TEXTURE26\",\n \"TEXTURE27\",\n \"TEXTURE28\",\n \"TEXTURE29\",\n \"TEXTURE3\",\n \"TEXTURE30\",\n \"TEXTURE31\",\n \"TEXTURE4\",\n \"TEXTURE5\",\n \"TEXTURE6\",\n \"TEXTURE7\",\n \"TEXTURE8\",\n \"TEXTURE9\",\n \"TEXTURE_2D\",\n \"TEXTURE_BINDING_2D\",\n \"TEXTURE_BINDING_CUBE_MAP\",\n \"TEXTURE_CUBE_MAP\",\n \"TEXTURE_CUBE_MAP_NEGATIVE_X\",\n \"TEXTURE_CUBE_MAP_NEGATIVE_Y\",\n \"TEXTURE_CUBE_MAP_NEGATIVE_Z\",\n \"TEXTURE_CUBE_MAP_POSITIVE_X\",\n \"TEXTURE_CUBE_MAP_POSITIVE_Y\",\n \"TEXTURE_CUBE_MAP_POSITIVE_Z\",\n \"TEXTURE_MAG_FILTER\",\n \"TEXTURE_MAX_ANISOTROPY_EXT\",\n \"TEXTURE_MIN_FILTER\",\n \"TEXTURE_WRAP_S\",\n \"TEXTURE_WRAP_T\",\n \"TEXT_NODE\",\n \"TIMEOUT\",\n \"TIMEOUT_ERR\",\n \"TOO_LARGE_ERR\",\n \"TRANSACTION_INACTIVE_ERR\",\n \"TRIANGLE\",\n \"TRIANGLES\",\n \"TRIANGLE_FAN\",\n \"TRIANGLE_STRIP\",\n \"TYPE_BACK_FORWARD\",\n \"TYPE_ERR\",\n \"TYPE_MISMATCH_ERR\",\n \"TYPE_NAVIGATE\",\n \"TYPE_RELOAD\",\n \"TYPE_RESERVED\",\n \"Text\",\n \"TextDecoder\",\n \"TextEncoder\",\n \"TextEvent\",\n \"TextMetrics\",\n \"TextTrack\",\n \"TextTrackCue\",\n \"TextTrackCueList\",\n \"TextTrackList\",\n \"TimeEvent\",\n \"TimeRanges\",\n \"Touch\",\n \"TouchEvent\",\n \"TouchList\",\n \"TrackEvent\",\n \"TransitionEvent\",\n \"TreeWalker\",\n \"TypeError\",\n \"UIEvent\",\n \"UNCACHED\",\n \"UNKNOWN_ERR\",\n \"UNKNOWN_RULE\",\n \"UNMASKED_RENDERER_WEBGL\",\n \"UNMASKED_VENDOR_WEBGL\",\n \"UNORDERED_NODE_ITERATOR_TYPE\",\n \"UNORDERED_NODE_SNAPSHOT_TYPE\",\n \"UNPACK_ALIGNMENT\",\n \"UNPACK_COLORSPACE_CONVERSION_WEBGL\",\n \"UNPACK_FLIP_Y_WEBGL\",\n \"UNPACK_PREMULTIPLY_ALPHA_WEBGL\",\n \"UNSCHEDULED_STATE\",\n \"UNSENT\",\n \"UNSIGNED_BYTE\",\n \"UNSIGNED_INT\",\n \"UNSIGNED_SHORT\",\n \"UNSIGNED_SHORT_4_4_4_4\",\n \"UNSIGNED_SHORT_5_5_5_1\",\n \"UNSIGNED_SHORT_5_6_5\",\n \"UNSPECIFIED_EVENT_TYPE_ERR\",\n \"UPDATEREADY\",\n \"URIError\",\n \"URL\",\n \"URLSearchParams\",\n \"URLUnencoded\",\n \"URL_MISMATCH_ERR\",\n \"UTC\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"UserMessageHandler\",\n \"UserMessageHandlersNamespace\",\n \"UserProximityEvent\",\n \"VALIDATE_STATUS\",\n \"VALIDATION_ERR\",\n \"VARIABLES_RULE\",\n \"VENDOR\",\n \"VERSION\",\n \"VERSION_CHANGE\",\n \"VERSION_ERR\",\n \"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\",\n \"VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE\",\n \"VERTEX_ATTRIB_ARRAY_ENABLED\",\n \"VERTEX_ATTRIB_ARRAY_NORMALIZED\",\n \"VERTEX_ATTRIB_ARRAY_POINTER\",\n \"VERTEX_ATTRIB_ARRAY_SIZE\",\n \"VERTEX_ATTRIB_ARRAY_STRIDE\",\n \"VERTEX_ATTRIB_ARRAY_TYPE\",\n \"VERTEX_SHADER\",\n \"VERTICAL\",\n \"VERTICAL_AXIS\",\n \"VER_ERR\",\n \"VIEWPORT\",\n \"VIEWPORT_RULE\",\n \"VTTCue\",\n \"VTTRegion\",\n \"ValidityState\",\n \"VideoStreamTrack\",\n \"WEBKIT_FILTER_RULE\",\n \"WEBKIT_KEYFRAMES_RULE\",\n \"WEBKIT_KEYFRAME_RULE\",\n \"WEBKIT_REGION_RULE\",\n \"WRONG_DOCUMENT_ERR\",\n \"WaveShaperNode\",\n \"WeakMap\",\n \"WeakSet\",\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLContextEvent\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLRenderingContext\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArray\",\n \"WebKitAnimationEvent\",\n \"WebKitBlobBuilder\",\n \"WebKitCSSFilterRule\",\n \"WebKitCSSFilterValue\",\n \"WebKitCSSKeyframeRule\",\n \"WebKitCSSKeyframesRule\",\n \"WebKitCSSMatrix\",\n \"WebKitCSSRegionRule\",\n \"WebKitCSSTransformValue\",\n \"WebKitDataCue\",\n \"WebKitGamepad\",\n \"WebKitMediaKeyError\",\n \"WebKitMediaKeyMessageEvent\",\n \"WebKitMediaKeySession\",\n \"WebKitMediaKeys\",\n \"WebKitMediaSource\",\n \"WebKitMutationObserver\",\n \"WebKitNamespace\",\n \"WebKitPlaybackTargetAvailabilityEvent\",\n \"WebKitPoint\",\n \"WebKitShadowRoot\",\n \"WebKitSourceBuffer\",\n \"WebKitSourceBufferList\",\n \"WebKitTransitionEvent\",\n \"WebSocket\",\n \"WheelEvent\",\n \"Window\",\n \"Worker\",\n \"XMLDocument\",\n \"XMLHttpRequest\",\n \"XMLHttpRequestEventTarget\",\n \"XMLHttpRequestException\",\n \"XMLHttpRequestProgressEvent\",\n \"XMLHttpRequestUpload\",\n \"XMLSerializer\",\n \"XMLStylesheetProcessingInstruction\",\n \"XPathEvaluator\",\n \"XPathException\",\n \"XPathExpression\",\n \"XPathNSResolver\",\n \"XPathResult\",\n \"XSLTProcessor\",\n \"ZERO\",\n \"_XD0M_\",\n \"_YD0M_\",\n \"__defineGetter__\",\n \"__defineSetter__\",\n \"__lookupGetter__\",\n \"__lookupSetter__\",\n \"__opera\",\n \"__proto__\",\n \"_browserjsran\",\n \"a\",\n \"aLink\",\n \"abbr\",\n \"abort\",\n \"abs\",\n \"absolute\",\n \"acceleration\",\n \"accelerationIncludingGravity\",\n \"accelerator\",\n \"accept\",\n \"acceptCharset\",\n \"acceptNode\",\n \"accessKey\",\n \"accessKeyLabel\",\n \"accuracy\",\n \"acos\",\n \"acosh\",\n \"action\",\n \"actionURL\",\n \"active\",\n \"activeCues\",\n \"activeElement\",\n \"activeSourceBuffers\",\n \"activeSourceCount\",\n \"activeTexture\",\n \"add\",\n \"addBehavior\",\n \"addCandidate\",\n \"addColorStop\",\n \"addCue\",\n \"addElement\",\n \"addEventListener\",\n \"addFilter\",\n \"addFromString\",\n \"addFromUri\",\n \"addIceCandidate\",\n \"addImport\",\n \"addListener\",\n \"addNamed\",\n \"addPageRule\",\n \"addPath\",\n \"addPointer\",\n \"addRange\",\n \"addRegion\",\n \"addRule\",\n \"addSearchEngine\",\n \"addSourceBuffer\",\n \"addStream\",\n \"addTextTrack\",\n \"addTrack\",\n \"addWakeLockListener\",\n \"addedNodes\",\n \"additionalName\",\n \"additiveSymbols\",\n \"addons\",\n \"adoptNode\",\n \"adr\",\n \"advance\",\n \"alert\",\n \"algorithm\",\n \"align\",\n \"align-content\",\n \"align-items\",\n \"align-self\",\n \"alignContent\",\n \"alignItems\",\n \"alignSelf\",\n \"alignmentBaseline\",\n \"alinkColor\",\n \"all\",\n \"allSettled\",\n \"allowFullscreen\",\n \"allowedDirections\",\n \"alpha\",\n \"alt\",\n \"altGraphKey\",\n \"altHtml\",\n \"altKey\",\n \"altLeft\",\n \"altitude\",\n \"altitudeAccuracy\",\n \"amplitude\",\n \"ancestorOrigins\",\n \"anchor\",\n \"anchorNode\",\n \"anchorOffset\",\n \"anchors\",\n \"angle\",\n \"animVal\",\n \"animate\",\n \"animatedInstanceRoot\",\n \"animatedNormalizedPathSegList\",\n \"animatedPathSegList\",\n \"animatedPoints\",\n \"animation\",\n \"animation-delay\",\n \"animation-direction\",\n \"animation-duration\",\n \"animation-fill-mode\",\n \"animation-iteration-count\",\n \"animation-name\",\n \"animation-play-state\",\n \"animation-timing-function\",\n \"animationDelay\",\n \"animationDirection\",\n \"animationDuration\",\n \"animationFillMode\",\n \"animationIterationCount\",\n \"animationName\",\n \"animationPlayState\",\n \"animationStartTime\",\n \"animationTimingFunction\",\n \"animationsPaused\",\n \"anniversary\",\n \"any\",\n \"app\",\n \"appCodeName\",\n \"appMinorVersion\",\n \"appName\",\n \"appNotifications\",\n \"appVersion\",\n \"append\",\n \"appendBuffer\",\n \"appendChild\",\n \"appendData\",\n \"appendItem\",\n \"appendMedium\",\n \"appendNamed\",\n \"appendRule\",\n \"appendStream\",\n \"appendWindowEnd\",\n \"appendWindowStart\",\n \"applets\",\n \"applicationCache\",\n \"apply\",\n \"applyElement\",\n \"arc\",\n \"arcTo\",\n \"archive\",\n \"areas\",\n \"arguments\",\n \"arrayBuffer\",\n \"asin\",\n \"asinh\",\n \"assert\",\n \"assign\",\n \"async\",\n \"atEnd\",\n \"atan\",\n \"atan2\",\n \"atanh\",\n \"atob\",\n \"attachEvent\",\n \"attachShader\",\n \"attachShadow\",\n \"attachments\",\n \"attack\",\n \"attrChange\",\n \"attrName\",\n \"attributeFilter\",\n \"attributeName\",\n \"attributeNamespace\",\n \"attributeOldValue\",\n \"attributes\",\n \"audioTracks\",\n \"autoIncrement\",\n \"autobuffer\",\n \"autocapitalize\",\n \"autocomplete\",\n \"autocorrect\",\n \"autofocus\",\n \"autoplay\",\n \"availHeight\",\n \"availLeft\",\n \"availTop\",\n \"availWidth\",\n \"availability\",\n \"available\",\n \"aversion\",\n \"axes\",\n \"axis\",\n \"azimuth\",\n \"b\",\n \"back\",\n \"backface-visibility\",\n \"backfaceVisibility\",\n \"background\",\n \"background-attachment\",\n \"background-blend-mode\",\n \"background-clip\",\n \"background-color\",\n \"background-image\",\n \"background-origin\",\n \"background-position\",\n \"background-repeat\",\n \"background-size\",\n \"backgroundAttachment\",\n \"backgroundBlendMode\",\n \"backgroundClip\",\n \"backgroundColor\",\n \"backgroundImage\",\n \"backgroundOrigin\",\n \"backgroundPosition\",\n \"backgroundPositionX\",\n \"backgroundPositionY\",\n \"backgroundRepeat\",\n \"backgroundSize\",\n \"badInput\",\n \"balance\",\n \"baseFrequencyX\",\n \"baseFrequencyY\",\n \"baseNode\",\n \"baseOffset\",\n \"baseURI\",\n \"baseVal\",\n \"baselineShift\",\n \"battery\",\n \"bday\",\n \"beginElement\",\n \"beginElementAt\",\n \"beginPath\",\n \"behavior\",\n \"behaviorCookie\",\n \"behaviorPart\",\n \"behaviorUrns\",\n \"beta\",\n \"bezierCurveTo\",\n \"bgColor\",\n \"bgProperties\",\n \"bias\",\n \"big\",\n \"binaryType\",\n \"bind\",\n \"bindAttribLocation\",\n \"bindBuffer\",\n \"bindFramebuffer\",\n \"bindRenderbuffer\",\n \"bindTexture\",\n \"blendColor\",\n \"blendEquation\",\n \"blendEquationSeparate\",\n \"blendFunc\",\n \"blendFuncSeparate\",\n \"blink\",\n \"blob\",\n \"blockDirection\",\n \"blue\",\n \"blur\",\n \"body\",\n \"bodyUsed\",\n \"bold\",\n \"bookmarks\",\n \"booleanValue\",\n \"border\",\n \"border-bottom\",\n \"border-bottom-color\",\n \"border-bottom-left-radius\",\n \"border-bottom-right-radius\",\n \"border-bottom-style\",\n \"border-bottom-width\",\n \"border-collapse\",\n \"border-color\",\n \"border-image\",\n \"border-image-outset\",\n \"border-image-repeat\",\n \"border-image-slice\",\n \"border-image-source\",\n \"border-image-width\",\n \"border-left\",\n \"border-left-color\",\n \"border-left-style\",\n \"border-left-width\",\n \"border-radius\",\n \"border-right\",\n \"border-right-color\",\n \"border-right-style\",\n \"border-right-width\",\n \"border-spacing\",\n \"border-style\",\n \"border-top\",\n \"border-top-color\",\n \"border-top-left-radius\",\n \"border-top-right-radius\",\n \"border-top-style\",\n \"border-top-width\",\n \"border-width\",\n \"borderBottom\",\n \"borderBottomColor\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n \"borderBottomStyle\",\n \"borderBottomWidth\",\n \"borderCollapse\",\n \"borderColor\",\n \"borderColorDark\",\n \"borderColorLight\",\n \"borderImage\",\n \"borderImageOutset\",\n \"borderImageRepeat\",\n \"borderImageSlice\",\n \"borderImageSource\",\n \"borderImageWidth\",\n \"borderLeft\",\n \"borderLeftColor\",\n \"borderLeftStyle\",\n \"borderLeftWidth\",\n \"borderRadius\",\n \"borderRight\",\n \"borderRightColor\",\n \"borderRightStyle\",\n \"borderRightWidth\",\n \"borderSpacing\",\n \"borderStyle\",\n \"borderTop\",\n \"borderTopColor\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderTopStyle\",\n \"borderTopWidth\",\n \"borderWidth\",\n \"bottom\",\n \"bottomMargin\",\n \"bound\",\n \"boundElements\",\n \"boundingClientRect\",\n \"boundingHeight\",\n \"boundingLeft\",\n \"boundingTop\",\n \"boundingWidth\",\n \"bounds\",\n \"box-decoration-break\",\n \"box-shadow\",\n \"box-sizing\",\n \"boxDecorationBreak\",\n \"boxShadow\",\n \"boxSizing\",\n \"breakAfter\",\n \"breakBefore\",\n \"breakInside\",\n \"browserLanguage\",\n \"btoa\",\n \"bubbles\",\n \"buffer\",\n \"bufferData\",\n \"bufferDepth\",\n \"bufferSize\",\n \"bufferSubData\",\n \"buffered\",\n \"bufferedAmount\",\n \"buildID\",\n \"buildNumber\",\n \"button\",\n \"buttonID\",\n \"buttons\",\n \"byteLength\",\n \"byteOffset\",\n \"c\",\n \"call\",\n \"caller\",\n \"canBeFormatted\",\n \"canBeMounted\",\n \"canBeShared\",\n \"canHaveChildren\",\n \"canHaveHTML\",\n \"canPlayType\",\n \"cancel\",\n \"cancelAnimationFrame\",\n \"cancelBubble\",\n \"cancelScheduledValues\",\n \"cancelable\",\n \"candidate\",\n \"canvas\",\n \"caption\",\n \"caption-side\",\n \"captionSide\",\n \"capture\",\n \"captureEvents\",\n \"captureStackTrace\",\n \"caretPositionFromPoint\",\n \"caretRangeFromPoint\",\n \"cast\",\n \"catch\",\n \"category\",\n \"cbrt\",\n \"cd\",\n \"ceil\",\n \"cellIndex\",\n \"cellPadding\",\n \"cellSpacing\",\n \"cells\",\n \"ch\",\n \"chOff\",\n \"chain\",\n \"challenge\",\n \"changedTouches\",\n \"channel\",\n \"channelCount\",\n \"channelCountMode\",\n \"channelInterpretation\",\n \"char\",\n \"charAt\",\n \"charCode\",\n \"charCodeAt\",\n \"charIndex\",\n \"characterData\",\n \"characterDataOldValue\",\n \"characterSet\",\n \"charging\",\n \"chargingTime\",\n \"charset\",\n \"checkEnclosure\",\n \"checkFramebufferStatus\",\n \"checkIntersection\",\n \"checkValidity\",\n \"checked\",\n \"childElementCount\",\n \"childList\",\n \"childNodes\",\n \"children\",\n \"chrome\",\n \"ciphertext\",\n \"cite\",\n \"classList\",\n \"className\",\n \"classid\",\n \"clear\",\n \"clearAttributes\",\n \"clearColor\",\n \"clearData\",\n \"clearDepth\",\n \"clearImmediate\",\n \"clearInterval\",\n \"clearMarks\",\n \"clearMeasures\",\n \"clearParameters\",\n \"clearRect\",\n \"clearResourceTimings\",\n \"clearShadow\",\n \"clearStencil\",\n \"clearTimeout\",\n \"clearWatch\",\n \"click\",\n \"clickCount\",\n \"clientHeight\",\n \"clientInformation\",\n \"clientLeft\",\n \"clientRect\",\n \"clientRects\",\n \"clientTop\",\n \"clientWidth\",\n \"clientX\",\n \"clientY\",\n \"clip\",\n \"clip-path\",\n \"clip-rule\",\n \"clipBottom\",\n \"clipLeft\",\n \"clipPath\",\n \"clipPathUnits\",\n \"clipRight\",\n \"clipRule\",\n \"clipTop\",\n \"clipboardData\",\n \"clone\",\n \"cloneContents\",\n \"cloneNode\",\n \"cloneRange\",\n \"close\",\n \"closePath\",\n \"closed\",\n \"closest\",\n \"clz\",\n \"clz32\",\n \"cmp\",\n \"code\",\n \"codeBase\",\n \"codePointAt\",\n \"codeType\",\n \"colSpan\",\n \"collapse\",\n \"collapseToEnd\",\n \"collapseToStart\",\n \"collapsed\",\n \"collect\",\n \"colno\",\n \"color\",\n \"color-interpolation\",\n \"color-interpolation-filters\",\n \"colorDepth\",\n \"colorInterpolation\",\n \"colorInterpolationFilters\",\n \"colorMask\",\n \"colorType\",\n \"cols\",\n \"columnCount\",\n \"columnFill\",\n \"columnGap\",\n \"columnNumber\",\n \"columnRule\",\n \"columnRuleColor\",\n \"columnRuleStyle\",\n \"columnRuleWidth\",\n \"columnSpan\",\n \"columnWidth\",\n \"columns\",\n \"command\",\n \"commitPreferences\",\n \"commonAncestorContainer\",\n \"compact\",\n \"compareBoundaryPoints\",\n \"compareDocumentPosition\",\n \"compareEndPoints\",\n \"compareNode\",\n \"comparePoint\",\n \"compatMode\",\n \"compatible\",\n \"compile\",\n \"compileShader\",\n \"complete\",\n \"componentFromPoint\",\n \"compositionEndOffset\",\n \"compositionStartOffset\",\n \"compressedTexImage2D\",\n \"compressedTexSubImage2D\",\n \"concat\",\n \"conditionText\",\n \"coneInnerAngle\",\n \"coneOuterAngle\",\n \"coneOuterGain\",\n \"confirm\",\n \"confirmComposition\",\n \"confirmSiteSpecificTrackingException\",\n \"confirmWebWideTrackingException\",\n \"connect\",\n \"connectEnd\",\n \"connectStart\",\n \"connected\",\n \"connection\",\n \"connectionSpeed\",\n \"console\",\n \"consolidate\",\n \"constrictionActive\",\n \"constructor\",\n \"contactID\",\n \"contains\",\n \"containsNode\",\n \"content\",\n \"contentDocument\",\n \"contentEditable\",\n \"contentOverflow\",\n \"contentScriptType\",\n \"contentStyleType\",\n \"contentType\",\n \"contentWindow\",\n \"context\",\n \"contextMenu\",\n \"contextmenu\",\n \"continue\",\n \"continuous\",\n \"control\",\n \"controller\",\n \"controls\",\n \"convertToSpecifiedUnits\",\n \"cookie\",\n \"cookieEnabled\",\n \"coords\",\n \"copyFromChannel\",\n \"copyTexImage2D\",\n \"copyTexSubImage2D\",\n \"copyToChannel\",\n \"copyWithin\",\n \"correspondingElement\",\n \"correspondingUseElement\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"counter-increment\",\n \"counter-reset\",\n \"counterIncrement\",\n \"counterReset\",\n \"cpuClass\",\n \"cpuSleepAllowed\",\n \"create\",\n \"createAnalyser\",\n \"createAnswer\",\n \"createAttribute\",\n \"createAttributeNS\",\n \"createBiquadFilter\",\n \"createBuffer\",\n \"createBufferSource\",\n \"createCDATASection\",\n \"createCSSStyleSheet\",\n \"createCaption\",\n \"createChannelMerger\",\n \"createChannelSplitter\",\n \"createComment\",\n \"createContextualFragment\",\n \"createControlRange\",\n \"createConvolver\",\n \"createDTMFSender\",\n \"createDataChannel\",\n \"createDelay\",\n \"createDelayNode\",\n \"createDocument\",\n \"createDocumentFragment\",\n \"createDocumentType\",\n \"createDynamicsCompressor\",\n \"createElement\",\n \"createElementNS\",\n \"createEntityReference\",\n \"createEvent\",\n \"createEventObject\",\n \"createExpression\",\n \"createFramebuffer\",\n \"createFunction\",\n \"createGain\",\n \"createGainNode\",\n \"createHTMLDocument\",\n \"createImageBitmap\",\n \"createImageData\",\n \"createIndex\",\n \"createJavaScriptNode\",\n \"createLinearGradient\",\n \"createMediaElementSource\",\n \"createMediaKeys\",\n \"createMediaStreamDestination\",\n \"createMediaStreamSource\",\n \"createMutableFile\",\n \"createNSResolver\",\n \"createNodeIterator\",\n \"createNotification\",\n \"createObjectStore\",\n \"createObjectURL\",\n \"createOffer\",\n \"createOscillator\",\n \"createPanner\",\n \"createPattern\",\n \"createPeriodicWave\",\n \"createPopup\",\n \"createProcessingInstruction\",\n \"createProgram\",\n \"createRadialGradient\",\n \"createRange\",\n \"createRangeCollection\",\n \"createRenderbuffer\",\n \"createSVGAngle\",\n \"createSVGLength\",\n \"createSVGMatrix\",\n \"createSVGNumber\",\n \"createSVGPathSegArcAbs\",\n \"createSVGPathSegArcRel\",\n \"createSVGPathSegClosePath\",\n \"createSVGPathSegCurvetoCubicAbs\",\n \"createSVGPathSegCurvetoCubicRel\",\n \"createSVGPathSegCurvetoCubicSmoothAbs\",\n \"createSVGPathSegCurvetoCubicSmoothRel\",\n \"createSVGPathSegCurvetoQuadraticAbs\",\n \"createSVGPathSegCurvetoQuadraticRel\",\n \"createSVGPathSegCurvetoQuadraticSmoothAbs\",\n \"createSVGPathSegCurvetoQuadraticSmoothRel\",\n \"createSVGPathSegLinetoAbs\",\n \"createSVGPathSegLinetoHorizontalAbs\",\n \"createSVGPathSegLinetoHorizontalRel\",\n \"createSVGPathSegLinetoRel\",\n \"createSVGPathSegLinetoVerticalAbs\",\n \"createSVGPathSegLinetoVerticalRel\",\n \"createSVGPathSegMovetoAbs\",\n \"createSVGPathSegMovetoRel\",\n \"createSVGPoint\",\n \"createSVGRect\",\n \"createSVGTransform\",\n \"createSVGTransformFromMatrix\",\n \"createScriptProcessor\",\n \"createSession\",\n \"createShader\",\n \"createShadowRoot\",\n \"createStereoPanner\",\n \"createStyleSheet\",\n \"createTBody\",\n \"createTFoot\",\n \"createTHead\",\n \"createTextNode\",\n \"createTextRange\",\n \"createTexture\",\n \"createTouch\",\n \"createTouchList\",\n \"createTreeWalker\",\n \"createWaveShaper\",\n \"creationTime\",\n \"crossOrigin\",\n \"crypto\",\n \"csi\",\n \"cssFloat\",\n \"cssRules\",\n \"cssText\",\n \"cssValueType\",\n \"ctrlKey\",\n \"ctrlLeft\",\n \"cues\",\n \"cullFace\",\n \"currentNode\",\n \"currentPage\",\n \"currentScale\",\n \"currentScript\",\n \"currentSrc\",\n \"currentState\",\n \"currentStyle\",\n \"currentTarget\",\n \"currentTime\",\n \"currentTranslate\",\n \"currentView\",\n \"cursor\",\n \"curve\",\n \"customError\",\n \"cx\",\n \"cy\",\n \"d\",\n \"data\",\n \"dataFld\",\n \"dataFormatAs\",\n \"dataPageSize\",\n \"dataSrc\",\n \"dataTransfer\",\n \"database\",\n \"dataset\",\n \"dateTime\",\n \"db\",\n \"debug\",\n \"debuggerEnabled\",\n \"declare\",\n \"decode\",\n \"decodeAudioData\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"decodingInfo\",\n \"decrypt\",\n \"default\",\n \"defaultCharset\",\n \"defaultChecked\",\n \"defaultMuted\",\n \"defaultPlaybackRate\",\n \"defaultPrevented\",\n \"defaultSelected\",\n \"defaultStatus\",\n \"defaultURL\",\n \"defaultValue\",\n \"defaultView\",\n \"defaultstatus\",\n \"defer\",\n \"defineMagicFunction\",\n \"defineMagicVariable\",\n \"defineProperties\",\n \"defineProperty\",\n \"delayTime\",\n \"delete\",\n \"deleteBuffer\",\n \"deleteCaption\",\n \"deleteCell\",\n \"deleteContents\",\n \"deleteData\",\n \"deleteDatabase\",\n \"deleteFramebuffer\",\n \"deleteFromDocument\",\n \"deleteIndex\",\n \"deleteMedium\",\n \"deleteObjectStore\",\n \"deleteProgram\",\n \"deleteRenderbuffer\",\n \"deleteRow\",\n \"deleteRule\",\n \"deleteShader\",\n \"deleteTFoot\",\n \"deleteTHead\",\n \"deleteTexture\",\n \"deliverChangeRecords\",\n \"delivery\",\n \"deliveryInfo\",\n \"deliveryStatus\",\n \"deliveryTimestamp\",\n \"delta\",\n \"deltaMode\",\n \"deltaX\",\n \"deltaY\",\n \"deltaZ\",\n \"depthFunc\",\n \"depthMask\",\n \"depthRange\",\n \"deriveBits\",\n \"deriveKey\",\n \"description\",\n \"deselectAll\",\n \"designMode\",\n \"destination\",\n \"destinationURL\",\n \"detach\",\n \"detachEvent\",\n \"detachShader\",\n \"detail\",\n \"detune\",\n \"devicePixelRatio\",\n \"deviceXDPI\",\n \"deviceYDPI\",\n \"diffuseConstant\",\n \"digest\",\n \"dimensions\",\n \"dir\",\n \"dirName\",\n \"direction\",\n \"dirxml\",\n \"disable\",\n \"disableVertexAttribArray\",\n \"disabled\",\n \"dischargingTime\",\n \"disconnect\",\n \"dispatchEvent\",\n \"display\",\n \"distanceModel\",\n \"divisor\",\n \"djsapi\",\n \"djsproxy\",\n \"doImport\",\n \"doNotTrack\",\n \"doScroll\",\n \"doctype\",\n \"document\",\n \"documentElement\",\n \"documentMode\",\n \"documentURI\",\n \"dolphin\",\n \"dolphinGameCenter\",\n \"dolphininfo\",\n \"dolphinmeta\",\n \"domComplete\",\n \"domContentLoadedEventEnd\",\n \"domContentLoadedEventStart\",\n \"domInteractive\",\n \"domLoading\",\n \"domain\",\n \"domainLookupEnd\",\n \"domainLookupStart\",\n \"dominant-baseline\",\n \"dominantBaseline\",\n \"done\",\n \"dopplerFactor\",\n \"download\",\n \"dragDrop\",\n \"draggable\",\n \"drawArrays\",\n \"drawArraysInstancedANGLE\",\n \"drawCustomFocusRing\",\n \"drawElements\",\n \"drawElementsInstancedANGLE\",\n \"drawFocusIfNeeded\",\n \"drawImage\",\n \"drawImageFromRect\",\n \"drawSystemFocusRing\",\n \"drawingBufferHeight\",\n \"drawingBufferWidth\",\n \"dropEffect\",\n \"droppedVideoFrames\",\n \"dropzone\",\n \"dump\",\n \"duplicate\",\n \"duration\",\n \"dvname\",\n \"dvnum\",\n \"dx\",\n \"dy\",\n \"dynsrc\",\n \"e\",\n \"edgeMode\",\n \"effectAllowed\",\n \"elapsedTime\",\n \"elementFromPoint\",\n \"elements\",\n \"elevation\",\n \"ellipse\",\n \"email\",\n \"embeds\",\n \"empty\",\n \"empty-cells\",\n \"emptyCells\",\n \"enable\",\n \"enableBackground\",\n \"enableStyleSheetsForSet\",\n \"enableVertexAttribArray\",\n \"enabled\",\n \"enabledPlugin\",\n \"encode\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"encoding\",\n \"encrypt\",\n \"enctype\",\n \"end\",\n \"endContainer\",\n \"endElement\",\n \"endElementAt\",\n \"endOfStream\",\n \"endOffset\",\n \"endTime\",\n \"ended\",\n \"endsWith\",\n \"entities\",\n \"entries\",\n \"entryType\",\n \"enumerate\",\n \"enumerateEditable\",\n \"error\",\n \"errorCode\",\n \"escape\",\n \"eval\",\n \"evaluate\",\n \"event\",\n \"eventPhase\",\n \"every\",\n \"exception\",\n \"exec\",\n \"execCommand\",\n \"execCommandShowHelp\",\n \"execScript\",\n \"exitFullscreen\",\n \"exitPointerLock\",\n \"exp\",\n \"expand\",\n \"expandEntityReferences\",\n \"expando\",\n \"expansion\",\n \"expiryDate\",\n \"explicitOriginalTarget\",\n \"expm1\",\n \"exponent\",\n \"exponentialRampToValueAtTime\",\n \"exportKey\",\n \"extend\",\n \"extensions\",\n \"extentNode\",\n \"extentOffset\",\n \"external\",\n \"externalResourcesRequired\",\n \"extractContents\",\n \"extractable\",\n \"f\",\n \"face\",\n \"factoryReset\",\n \"fallback\",\n \"familyName\",\n \"farthestViewportElement\",\n \"fastSeek\",\n \"fatal\",\n \"fetch\",\n \"fetchStart\",\n \"fftSize\",\n \"fgColor\",\n \"fileCreatedDate\",\n \"fileHandle\",\n \"fileModifiedDate\",\n \"fileName\",\n \"fileSize\",\n \"fileUpdatedDate\",\n \"filename\",\n \"files\",\n \"fill\",\n \"fill-opacity\",\n \"fill-rule\",\n \"fillOpacity\",\n \"fillRect\",\n \"fillRule\",\n \"fillStyle\",\n \"fillText\",\n \"filter\",\n \"filterResX\",\n \"filterResY\",\n \"filterUnits\",\n \"filters\",\n \"finally\",\n \"find\",\n \"findIndex\",\n \"findRule\",\n \"findText\",\n \"finish\",\n \"fireEvent\",\n \"firstChild\",\n \"firstElementChild\",\n \"firstPage\",\n \"fixed\",\n \"flex\",\n \"flex-basis\",\n \"flex-direction\",\n \"flex-flow\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"flexBasis\",\n \"flexDirection\",\n \"flexFlow\",\n \"flexGrow\",\n \"flexShrink\",\n \"flexWrap\",\n \"flipX\",\n \"flipY\",\n \"float\",\n \"flood-color\",\n \"flood-opacity\",\n \"floodColor\",\n \"floodOpacity\",\n \"floor\",\n \"flush\",\n \"focus\",\n \"focusNode\",\n \"focusOffset\",\n \"font\",\n \"font-family\",\n \"font-feature-settings\",\n \"font-kerning\",\n \"font-language-override\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-stretch\",\n \"font-style\",\n \"font-synthesis\",\n \"font-variant\",\n \"font-variant-alternates\",\n \"font-variant-caps\",\n \"font-variant-east-asian\",\n \"font-variant-ligatures\",\n \"font-variant-numeric\",\n \"font-variant-position\",\n \"font-weight\",\n \"fontFamily\",\n \"fontFeatureSettings\",\n \"fontKerning\",\n \"fontLanguageOverride\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"fontSmoothingEnabled\",\n \"fontStretch\",\n \"fontStyle\",\n \"fontSynthesis\",\n \"fontVariant\",\n \"fontVariantAlternates\",\n \"fontVariantCaps\",\n \"fontVariantEastAsian\",\n \"fontVariantLigatures\",\n \"fontVariantNumeric\",\n \"fontVariantPosition\",\n \"fontWeight\",\n \"fontcolor\",\n \"fonts\",\n \"fontsize\",\n \"for\",\n \"forEach\",\n \"forceRedraw\",\n \"form\",\n \"formAction\",\n \"formEnctype\",\n \"formMethod\",\n \"formNoValidate\",\n \"formTarget\",\n \"format\",\n \"formatToParts\",\n \"forms\",\n \"forward\",\n \"fr\",\n \"frame\",\n \"frameBorder\",\n \"frameElement\",\n \"frameSpacing\",\n \"framebufferRenderbuffer\",\n \"framebufferTexture2D\",\n \"frames\",\n \"freeSpace\",\n \"freeze\",\n \"frequency\",\n \"frequencyBinCount\",\n \"from\",\n \"fromCharCode\",\n \"fromCodePoint\",\n \"fromElement\",\n \"frontFace\",\n \"fround\",\n \"fullScreen\",\n \"fullscreenElement\",\n \"fullscreenEnabled\",\n \"fx\",\n \"fy\",\n \"gain\",\n \"gamepad\",\n \"gamma\",\n \"genderIdentity\",\n \"generateKey\",\n \"generateMipmap\",\n \"generateRequest\",\n \"geolocation\",\n \"gestureObject\",\n \"get\",\n \"getActiveAttrib\",\n \"getActiveUniform\",\n \"getAdjacentText\",\n \"getAll\",\n \"getAllResponseHeaders\",\n \"getAsFile\",\n \"getAsString\",\n \"getAttachedShaders\",\n \"getAttribLocation\",\n \"getAttribute\",\n \"getAttributeNS\",\n \"getAttributeNode\",\n \"getAttributeNodeNS\",\n \"getAudioTracks\",\n \"getBBox\",\n \"getBattery\",\n \"getBlob\",\n \"getBookmark\",\n \"getBoundingClientRect\",\n \"getBufferParameter\",\n \"getByteFrequencyData\",\n \"getByteTimeDomainData\",\n \"getCSSCanvasContext\",\n \"getCTM\",\n \"getCandidateWindowClientRect\",\n \"getChannelData\",\n \"getCharNumAtPosition\",\n \"getClientRect\",\n \"getClientRects\",\n \"getCompositionAlternatives\",\n \"getComputedStyle\",\n \"getComputedTextLength\",\n \"getConfiguration\",\n \"getContext\",\n \"getContextAttributes\",\n \"getCounterValue\",\n \"getCueAsHTML\",\n \"getCueById\",\n \"getCurrentPosition\",\n \"getCurrentTime\",\n \"getData\",\n \"getDatabaseNames\",\n \"getDate\",\n \"getDay\",\n \"getDefaultComputedStyle\",\n \"getDestinationInsertionPoints\",\n \"getDistributedNodes\",\n \"getEditable\",\n \"getElementById\",\n \"getElementsByClassName\",\n \"getElementsByName\",\n \"getElementsByTagName\",\n \"getElementsByTagNameNS\",\n \"getEnclosureList\",\n \"getEndPositionOfChar\",\n \"getEntries\",\n \"getEntriesByName\",\n \"getEntriesByType\",\n \"getError\",\n \"getExtension\",\n \"getExtentOfChar\",\n \"getFeature\",\n \"getFile\",\n \"getFloat32\",\n \"getFloat64\",\n \"getFloatFrequencyData\",\n \"getFloatTimeDomainData\",\n \"getFloatValue\",\n \"getFramebufferAttachmentParameter\",\n \"getFrequencyResponse\",\n \"getFullYear\",\n \"getGamepads\",\n \"getHours\",\n \"getImageData\",\n \"getInt16\",\n \"getInt32\",\n \"getInt8\",\n \"getIntersectionList\",\n \"getItem\",\n \"getItems\",\n \"getKey\",\n \"getLineDash\",\n \"getLocalStreams\",\n \"getMarks\",\n \"getMatchedCSSRules\",\n \"getMeasures\",\n \"getMetadata\",\n \"getMilliseconds\",\n \"getMinutes\",\n \"getModifierState\",\n \"getMonth\",\n \"getNamedItem\",\n \"getNamedItemNS\",\n \"getNotifier\",\n \"getNumberOfChars\",\n \"getOverrideHistoryNavigationMode\",\n \"getOverrideStyle\",\n \"getOwnPropertyDescriptor\",\n \"getOwnPropertyNames\",\n \"getOwnPropertySymbols\",\n \"getParameter\",\n \"getPathSegAtLength\",\n \"getPointAtLength\",\n \"getPreference\",\n \"getPreferenceDefault\",\n \"getPresentationAttribute\",\n \"getPreventDefault\",\n \"getProgramInfoLog\",\n \"getProgramParameter\",\n \"getPropertyCSSValue\",\n \"getPropertyPriority\",\n \"getPropertyShorthand\",\n \"getPropertyValue\",\n \"getPrototypeOf\",\n \"getRGBColorValue\",\n \"getRandomValues\",\n \"getRangeAt\",\n \"getReceivers\",\n \"getRectValue\",\n \"getRegistration\",\n \"getRemoteStreams\",\n \"getRenderbufferParameter\",\n \"getResponseHeader\",\n \"getRoot\",\n \"getRotationOfChar\",\n \"getSVGDocument\",\n \"getScreenCTM\",\n \"getSeconds\",\n \"getSelection\",\n \"getSenders\",\n \"getShaderInfoLog\",\n \"getShaderParameter\",\n \"getShaderPrecisionFormat\",\n \"getShaderSource\",\n \"getSimpleDuration\",\n \"getSiteIcons\",\n \"getSources\",\n \"getSpeculativeParserUrls\",\n \"getStartPositionOfChar\",\n \"getStartTime\",\n \"getStats\",\n \"getStorageUpdates\",\n \"getStreamById\",\n \"getStringValue\",\n \"getSubStringLength\",\n \"getSubscription\",\n \"getSupportedExtensions\",\n \"getTexParameter\",\n \"getTime\",\n \"getTimezoneOffset\",\n \"getTotalLength\",\n \"getTrackById\",\n \"getTracks\",\n \"getTransformToElement\",\n \"getUTCDate\",\n \"getUTCDay\",\n \"getUTCFullYear\",\n \"getUTCHours\",\n \"getUTCMilliseconds\",\n \"getUTCMinutes\",\n \"getUTCMonth\",\n \"getUTCSeconds\",\n \"getUint16\",\n \"getUint32\",\n \"getUint8\",\n \"getUniform\",\n \"getUniformLocation\",\n \"getUserMedia\",\n \"getValues\",\n \"getVarDate\",\n \"getVariableValue\",\n \"getVertexAttrib\",\n \"getVertexAttribOffset\",\n \"getVideoPlaybackQuality\",\n \"getVideoTracks\",\n \"getWakeLockState\",\n \"getYear\",\n \"givenName\",\n \"global\",\n \"globalAlpha\",\n \"globalCompositeOperation\",\n \"glyphOrientationHorizontal\",\n \"glyphOrientationVertical\",\n \"glyphRef\",\n \"go\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"grammars\",\n \"green\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"hardwareConcurrency\",\n \"has\",\n \"hasAttribute\",\n \"hasAttributeNS\",\n \"hasAttributes\",\n \"hasChildNodes\",\n \"hasComposition\",\n \"hasExtension\",\n \"hasFeature\",\n \"hasFocus\",\n \"hasLayout\",\n \"hasOwnProperty\",\n \"hash\",\n \"head\",\n \"headers\",\n \"heading\",\n \"height\",\n \"hidden\",\n \"hide\",\n \"hideFocus\",\n \"high\",\n \"hint\",\n \"history\",\n \"honorificPrefix\",\n \"honorificSuffix\",\n \"horizontalOverflow\",\n \"host\",\n \"hostname\",\n \"href\",\n \"hreflang\",\n \"hspace\",\n \"html5TagCheckInerface\",\n \"htmlFor\",\n \"htmlText\",\n \"httpEquiv\",\n \"hwTimestamp\",\n \"hypot\",\n \"iccId\",\n \"iceConnectionState\",\n \"iceGatheringState\",\n \"icon\",\n \"id\",\n \"identifier\",\n \"identity\",\n \"ignoreBOM\",\n \"ignoreCase\",\n \"image-orientation\",\n \"image-rendering\",\n \"imageOrientation\",\n \"imageRendering\",\n \"images\",\n \"ime-mode\",\n \"imeMode\",\n \"implementation\",\n \"importKey\",\n \"importNode\",\n \"importStylesheet\",\n \"imports\",\n \"impp\",\n \"imul\",\n \"in1\",\n \"in2\",\n \"inBandMetadataTrackDispatchType\",\n \"inRange\",\n \"includes\",\n \"incremental\",\n \"indeterminate\",\n \"index\",\n \"indexNames\",\n \"indexOf\",\n \"indexedDB\",\n \"inertiaDestinationX\",\n \"inertiaDestinationY\",\n \"info\",\n \"init\",\n \"initAnimationEvent\",\n \"initBeforeLoadEvent\",\n \"initClipboardEvent\",\n \"initCloseEvent\",\n \"initCommandEvent\",\n \"initCompositionEvent\",\n \"initCustomEvent\",\n \"initData\",\n \"initDeviceMotionEvent\",\n \"initDeviceOrientationEvent\",\n \"initDragEvent\",\n \"initErrorEvent\",\n \"initEvent\",\n \"initFocusEvent\",\n \"initGestureEvent\",\n \"initHashChangeEvent\",\n \"initKeyEvent\",\n \"initKeyboardEvent\",\n \"initMSManipulationEvent\",\n \"initMessageEvent\",\n \"initMouseEvent\",\n \"initMouseScrollEvent\",\n \"initMouseWheelEvent\",\n \"initMutationEvent\",\n \"initNSMouseEvent\",\n \"initOverflowEvent\",\n \"initPageEvent\",\n \"initPageTransitionEvent\",\n \"initPointerEvent\",\n \"initPopStateEvent\",\n \"initProgressEvent\",\n \"initScrollAreaEvent\",\n \"initSimpleGestureEvent\",\n \"initStorageEvent\",\n \"initTextEvent\",\n \"initTimeEvent\",\n \"initTouchEvent\",\n \"initTransitionEvent\",\n \"initUIEvent\",\n \"initWebKitAnimationEvent\",\n \"initWebKitTransitionEvent\",\n \"initWebKitWheelEvent\",\n \"initWheelEvent\",\n \"initialTime\",\n \"initialize\",\n \"initiatorType\",\n \"inner\",\n \"innerHTML\",\n \"innerHeight\",\n \"innerText\",\n \"innerWidth\",\n \"input\",\n \"inputBuffer\",\n \"inputEncoding\",\n \"inputMethod\",\n \"insertAdjacentElement\",\n \"insertAdjacentHTML\",\n \"insertAdjacentText\",\n \"insertBefore\",\n \"insertCell\",\n \"insertData\",\n \"insertItemBefore\",\n \"insertNode\",\n \"insertRow\",\n \"insertRule\",\n \"instanceRoot\",\n \"intercept\",\n \"interimResults\",\n \"internalSubset\",\n \"intersectsNode\",\n \"interval\",\n \"invalidIteratorState\",\n \"inverse\",\n \"invertSelf\",\n \"is\",\n \"is2D\",\n \"isAlternate\",\n \"isArray\",\n \"isBingCurrentSearchDefault\",\n \"isBuffer\",\n \"isCandidateWindowVisible\",\n \"isChar\",\n \"isCollapsed\",\n \"isComposing\",\n \"isContentEditable\",\n \"isContentHandlerRegistered\",\n \"isContextLost\",\n \"isDefaultNamespace\",\n \"isDisabled\",\n \"isEnabled\",\n \"isEqual\",\n \"isEqualNode\",\n \"isExtensible\",\n \"isFinite\",\n \"isFramebuffer\",\n \"isFrozen\",\n \"isGenerator\",\n \"isId\",\n \"isInjected\",\n \"isInteger\",\n \"isMap\",\n \"isMultiLine\",\n \"isNaN\",\n \"isOpen\",\n \"isPointInFill\",\n \"isPointInPath\",\n \"isPointInRange\",\n \"isPointInStroke\",\n \"isPrefAlternate\",\n \"isPrimary\",\n \"isProgram\",\n \"isPropertyImplicit\",\n \"isProtocolHandlerRegistered\",\n \"isPrototypeOf\",\n \"isRenderbuffer\",\n \"isSafeInteger\",\n \"isSameNode\",\n \"isSealed\",\n \"isShader\",\n \"isSupported\",\n \"isTextEdit\",\n \"isTexture\",\n \"isTrusted\",\n \"isTypeSupported\",\n \"isView\",\n \"isolation\",\n \"italics\",\n \"item\",\n \"itemId\",\n \"itemProp\",\n \"itemRef\",\n \"itemScope\",\n \"itemType\",\n \"itemValue\",\n \"iterateNext\",\n \"iterator\",\n \"javaEnabled\",\n \"jobTitle\",\n \"join\",\n \"json\",\n \"justify-content\",\n \"justifyContent\",\n \"k1\",\n \"k2\",\n \"k3\",\n \"k4\",\n \"kernelMatrix\",\n \"kernelUnitLengthX\",\n \"kernelUnitLengthY\",\n \"kerning\",\n \"key\",\n \"keyCode\",\n \"keyFor\",\n \"keyIdentifier\",\n \"keyLightEnabled\",\n \"keyLocation\",\n \"keyPath\",\n \"keySystem\",\n \"keyText\",\n \"keyUsage\",\n \"keys\",\n \"keytype\",\n \"kind\",\n \"knee\",\n \"label\",\n \"labels\",\n \"lang\",\n \"language\",\n \"languages\",\n \"largeArcFlag\",\n \"lastChild\",\n \"lastElementChild\",\n \"lastEventId\",\n \"lastIndex\",\n \"lastIndexOf\",\n \"lastMatch\",\n \"lastMessageSubject\",\n \"lastMessageType\",\n \"lastModified\",\n \"lastModifiedDate\",\n \"lastPage\",\n \"lastParen\",\n \"lastState\",\n \"lastStyleSheetSet\",\n \"latitude\",\n \"layerX\",\n \"layerY\",\n \"layoutFlow\",\n \"layoutGrid\",\n \"layoutGridChar\",\n \"layoutGridLine\",\n \"layoutGridMode\",\n \"layoutGridType\",\n \"lbound\",\n \"left\",\n \"leftContext\",\n \"leftMargin\",\n \"length\",\n \"lengthAdjust\",\n \"lengthComputable\",\n \"letter-spacing\",\n \"letterSpacing\",\n \"level\",\n \"lighting-color\",\n \"lightingColor\",\n \"limitingConeAngle\",\n \"line\",\n \"line-height\",\n \"lineAlign\",\n \"lineBreak\",\n \"lineCap\",\n \"lineDashOffset\",\n \"lineHeight\",\n \"lineJoin\",\n \"lineNumber\",\n \"lineTo\",\n \"lineWidth\",\n \"linearRampToValueAtTime\",\n \"lineno\",\n \"link\",\n \"linkColor\",\n \"linkProgram\",\n \"links\",\n \"list\",\n \"list-style\",\n \"list-style-image\",\n \"list-style-position\",\n \"list-style-type\",\n \"listStyle\",\n \"listStyleImage\",\n \"listStylePosition\",\n \"listStyleType\",\n \"listener\",\n \"load\",\n \"loadEventEnd\",\n \"loadEventStart\",\n \"loadTimes\",\n \"loaded\",\n \"localDescription\",\n \"localName\",\n \"localStorage\",\n \"locale\",\n \"localeCompare\",\n \"location\",\n \"locationbar\",\n \"lock\",\n \"lockedFile\",\n \"log\",\n \"log10\",\n \"log1p\",\n \"log2\",\n \"logicalXDPI\",\n \"logicalYDPI\",\n \"longDesc\",\n \"longitude\",\n \"lookupNamespaceURI\",\n \"lookupPrefix\",\n \"loop\",\n \"loopEnd\",\n \"loopStart\",\n \"looping\",\n \"low\",\n \"lower\",\n \"lowerBound\",\n \"lowerOpen\",\n \"lowsrc\",\n \"m11\",\n \"m12\",\n \"m13\",\n \"m14\",\n \"m21\",\n \"m22\",\n \"m23\",\n \"m24\",\n \"m31\",\n \"m32\",\n \"m33\",\n \"m34\",\n \"m41\",\n \"m42\",\n \"m43\",\n \"m44\",\n \"manifest\",\n \"map\",\n \"mapping\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"marginBottom\",\n \"marginHeight\",\n \"marginLeft\",\n \"marginRight\",\n \"marginTop\",\n \"marginWidth\",\n \"mark\",\n \"marker\",\n \"marker-end\",\n \"marker-mid\",\n \"marker-offset\",\n \"marker-start\",\n \"markerEnd\",\n \"markerHeight\",\n \"markerMid\",\n \"markerOffset\",\n \"markerStart\",\n \"markerUnits\",\n \"markerWidth\",\n \"marks\",\n \"mask\",\n \"mask-type\",\n \"maskContentUnits\",\n \"maskType\",\n \"maskUnits\",\n \"match\",\n \"matchMedia\",\n \"matchMedium\",\n \"matches\",\n \"matrix\",\n \"matrixTransform\",\n \"max\",\n \"max-height\",\n \"max-width\",\n \"maxAlternatives\",\n \"maxChannelCount\",\n \"maxConnectionsPerServer\",\n \"maxDecibels\",\n \"maxDistance\",\n \"maxHeight\",\n \"maxLength\",\n \"maxTouchPoints\",\n \"maxValue\",\n \"maxWidth\",\n \"measure\",\n \"measureText\",\n \"media\",\n \"mediaCapabilities\",\n \"mediaDevices\",\n \"mediaElement\",\n \"mediaGroup\",\n \"mediaKeys\",\n \"mediaText\",\n \"meetOrSlice\",\n \"memory\",\n \"menubar\",\n \"mergeAttributes\",\n \"message\",\n \"messageClass\",\n \"messageHandlers\",\n \"metaKey\",\n \"method\",\n \"mimeType\",\n \"mimeTypes\",\n \"min\",\n \"min-height\",\n \"min-width\",\n \"minDecibels\",\n \"minHeight\",\n \"minValue\",\n \"minWidth\",\n \"miterLimit\",\n \"mix-blend-mode\",\n \"mixBlendMode\",\n \"mode\",\n \"modify\",\n \"mount\",\n \"move\",\n \"moveBy\",\n \"moveEnd\",\n \"moveFirst\",\n \"moveFocusDown\",\n \"moveFocusLeft\",\n \"moveFocusRight\",\n \"moveFocusUp\",\n \"moveNext\",\n \"moveRow\",\n \"moveStart\",\n \"moveTo\",\n \"moveToBookmark\",\n \"moveToElementText\",\n \"moveToPoint\",\n \"mozAdd\",\n \"mozAnimationStartTime\",\n \"mozAnon\",\n \"mozApps\",\n \"mozAudioCaptured\",\n \"mozAudioChannelType\",\n \"mozAutoplayEnabled\",\n \"mozCancelAnimationFrame\",\n \"mozCancelFullScreen\",\n \"mozCancelRequestAnimationFrame\",\n \"mozCaptureStream\",\n \"mozCaptureStreamUntilEnded\",\n \"mozClearDataAt\",\n \"mozContact\",\n \"mozContacts\",\n \"mozCreateFileHandle\",\n \"mozCurrentTransform\",\n \"mozCurrentTransformInverse\",\n \"mozCursor\",\n \"mozDash\",\n \"mozDashOffset\",\n \"mozDecodedFrames\",\n \"mozExitPointerLock\",\n \"mozFillRule\",\n \"mozFragmentEnd\",\n \"mozFrameDelay\",\n \"mozFullScreen\",\n \"mozFullScreenElement\",\n \"mozFullScreenEnabled\",\n \"mozGetAll\",\n \"mozGetAllKeys\",\n \"mozGetAsFile\",\n \"mozGetDataAt\",\n \"mozGetMetadata\",\n \"mozGetUserMedia\",\n \"mozHasAudio\",\n \"mozHasItem\",\n \"mozHidden\",\n \"mozImageSmoothingEnabled\",\n \"mozIndexedDB\",\n \"mozInnerScreenX\",\n \"mozInnerScreenY\",\n \"mozInputSource\",\n \"mozIsTextField\",\n \"mozItem\",\n \"mozItemCount\",\n \"mozItems\",\n \"mozLength\",\n \"mozLockOrientation\",\n \"mozMatchesSelector\",\n \"mozMovementX\",\n \"mozMovementY\",\n \"mozOpaque\",\n \"mozOrientation\",\n \"mozPaintCount\",\n \"mozPaintedFrames\",\n \"mozParsedFrames\",\n \"mozPay\",\n \"mozPointerLockElement\",\n \"mozPresentedFrames\",\n \"mozPreservesPitch\",\n \"mozPressure\",\n \"mozPrintCallback\",\n \"mozRTCIceCandidate\",\n \"mozRTCPeerConnection\",\n \"mozRTCSessionDescription\",\n \"mozRemove\",\n \"mozRequestAnimationFrame\",\n \"mozRequestFullScreen\",\n \"mozRequestPointerLock\",\n \"mozSetDataAt\",\n \"mozSetImageElement\",\n \"mozSourceNode\",\n \"mozSrcObject\",\n \"mozSystem\",\n \"mozTCPSocket\",\n \"mozTextStyle\",\n \"mozTypesAt\",\n \"mozUnlockOrientation\",\n \"mozUserCancelled\",\n \"mozVisibilityState\",\n \"msAnimation\",\n \"msAnimationDelay\",\n \"msAnimationDirection\",\n \"msAnimationDuration\",\n \"msAnimationFillMode\",\n \"msAnimationIterationCount\",\n \"msAnimationName\",\n \"msAnimationPlayState\",\n \"msAnimationStartTime\",\n \"msAnimationTimingFunction\",\n \"msBackfaceVisibility\",\n \"msBlockProgression\",\n \"msCSSOMElementFloatMetrics\",\n \"msCaching\",\n \"msCachingEnabled\",\n \"msCancelRequestAnimationFrame\",\n \"msCapsLockWarningOff\",\n \"msClearImmediate\",\n \"msClose\",\n \"msContentZoomChaining\",\n \"msContentZoomFactor\",\n \"msContentZoomLimit\",\n \"msContentZoomLimitMax\",\n \"msContentZoomLimitMin\",\n \"msContentZoomSnap\",\n \"msContentZoomSnapPoints\",\n \"msContentZoomSnapType\",\n \"msContentZooming\",\n \"msConvertURL\",\n \"msCrypto\",\n \"msDoNotTrack\",\n \"msElementsFromPoint\",\n \"msElementsFromRect\",\n \"msExitFullscreen\",\n \"msExtendedCode\",\n \"msFillRule\",\n \"msFirstPaint\",\n \"msFlex\",\n \"msFlexAlign\",\n \"msFlexDirection\",\n \"msFlexFlow\",\n \"msFlexItemAlign\",\n \"msFlexLinePack\",\n \"msFlexNegative\",\n \"msFlexOrder\",\n \"msFlexPack\",\n \"msFlexPositive\",\n \"msFlexPreferredSize\",\n \"msFlexWrap\",\n \"msFlowFrom\",\n \"msFlowInto\",\n \"msFontFeatureSettings\",\n \"msFullscreenElement\",\n \"msFullscreenEnabled\",\n \"msGetInputContext\",\n \"msGetRegionContent\",\n \"msGetUntransformedBounds\",\n \"msGraphicsTrustStatus\",\n \"msGridColumn\",\n \"msGridColumnAlign\",\n \"msGridColumnSpan\",\n \"msGridColumns\",\n \"msGridRow\",\n \"msGridRowAlign\",\n \"msGridRowSpan\",\n \"msGridRows\",\n \"msHidden\",\n \"msHighContrastAdjust\",\n \"msHyphenateLimitChars\",\n \"msHyphenateLimitLines\",\n \"msHyphenateLimitZone\",\n \"msHyphens\",\n \"msImageSmoothingEnabled\",\n \"msImeAlign\",\n \"msIndexedDB\",\n \"msInterpolationMode\",\n \"msIsStaticHTML\",\n \"msKeySystem\",\n \"msKeys\",\n \"msLaunchUri\",\n \"msLockOrientation\",\n \"msManipulationViewsEnabled\",\n \"msMatchMedia\",\n \"msMatchesSelector\",\n \"msMaxTouchPoints\",\n \"msOrientation\",\n \"msOverflowStyle\",\n \"msPerspective\",\n \"msPerspectiveOrigin\",\n \"msPlayToDisabled\",\n \"msPlayToPreferredSourceUri\",\n \"msPlayToPrimary\",\n \"msPointerEnabled\",\n \"msRegionOverflow\",\n \"msReleasePointerCapture\",\n \"msRequestAnimationFrame\",\n \"msRequestFullscreen\",\n \"msSaveBlob\",\n \"msSaveOrOpenBlob\",\n \"msScrollChaining\",\n \"msScrollLimit\",\n \"msScrollLimitXMax\",\n \"msScrollLimitXMin\",\n \"msScrollLimitYMax\",\n \"msScrollLimitYMin\",\n \"msScrollRails\",\n \"msScrollSnapPointsX\",\n \"msScrollSnapPointsY\",\n \"msScrollSnapType\",\n \"msScrollSnapX\",\n \"msScrollSnapY\",\n \"msScrollTranslation\",\n \"msSetImmediate\",\n \"msSetMediaKeys\",\n \"msSetPointerCapture\",\n \"msTextCombineHorizontal\",\n \"msTextSizeAdjust\",\n \"msToBlob\",\n \"msTouchAction\",\n \"msTouchSelect\",\n \"msTraceAsyncCallbackCompleted\",\n \"msTraceAsyncCallbackStarting\",\n \"msTraceAsyncOperationCompleted\",\n \"msTraceAsyncOperationStarting\",\n \"msTransform\",\n \"msTransformOrigin\",\n \"msTransformStyle\",\n \"msTransition\",\n \"msTransitionDelay\",\n \"msTransitionDuration\",\n \"msTransitionProperty\",\n \"msTransitionTimingFunction\",\n \"msUnlockOrientation\",\n \"msUpdateAsyncCallbackRelation\",\n \"msUserSelect\",\n \"msVisibilityState\",\n \"msWrapFlow\",\n \"msWrapMargin\",\n \"msWrapThrough\",\n \"msWriteProfilerMark\",\n \"msZoom\",\n \"msZoomTo\",\n \"mt\",\n \"multiEntry\",\n \"multiSelectionObj\",\n \"multiline\",\n \"multiple\",\n \"multiply\",\n \"multiplySelf\",\n \"mutableFile\",\n \"muted\",\n \"n\",\n \"name\",\n \"nameProp\",\n \"namedItem\",\n \"namedRecordset\",\n \"names\",\n \"namespaceURI\",\n \"namespaces\",\n \"naturalHeight\",\n \"naturalWidth\",\n \"navigate\",\n \"navigation\",\n \"navigationMode\",\n \"navigationStart\",\n \"navigator\",\n \"near\",\n \"nearestViewportElement\",\n \"negative\",\n \"netscape\",\n \"networkState\",\n \"newScale\",\n \"newTranslate\",\n \"newURL\",\n \"newValue\",\n \"newValueSpecifiedUnits\",\n \"newVersion\",\n \"newhome\",\n \"next\",\n \"nextElementSibling\",\n \"nextNode\",\n \"nextPage\",\n \"nextSibling\",\n \"nickname\",\n \"noHref\",\n \"noResize\",\n \"noShade\",\n \"noValidate\",\n \"noWrap\",\n \"nodeName\",\n \"nodeType\",\n \"nodeValue\",\n \"normalize\",\n \"normalizedPathSegList\",\n \"notationName\",\n \"notations\",\n \"note\",\n \"noteGrainOn\",\n \"noteOff\",\n \"noteOn\",\n \"now\",\n \"numOctaves\",\n \"number\",\n \"numberOfChannels\",\n \"numberOfInputs\",\n \"numberOfItems\",\n \"numberOfOutputs\",\n \"numberValue\",\n \"oMatchesSelector\",\n \"object\",\n \"object-fit\",\n \"object-position\",\n \"objectFit\",\n \"objectPosition\",\n \"objectStore\",\n \"objectStoreNames\",\n \"observe\",\n \"of\",\n \"offscreenBuffering\",\n \"offset\",\n \"offsetHeight\",\n \"offsetLeft\",\n \"offsetNode\",\n \"offsetParent\",\n \"offsetTop\",\n \"offsetWidth\",\n \"offsetX\",\n \"offsetY\",\n \"ok\",\n \"oldURL\",\n \"oldValue\",\n \"oldVersion\",\n \"olderShadowRoot\",\n \"onLine\",\n \"onabort\",\n \"onactivate\",\n \"onactive\",\n \"onaddstream\",\n \"onaddtrack\",\n \"onafterprint\",\n \"onafterscriptexecute\",\n \"onafterupdate\",\n \"onaudioend\",\n \"onaudioprocess\",\n \"onaudiostart\",\n \"onautocomplete\",\n \"onautocompleteerror\",\n \"onbeforeactivate\",\n \"onbeforecopy\",\n \"onbeforecut\",\n \"onbeforedeactivate\",\n \"onbeforeeditfocus\",\n \"onbeforepaste\",\n \"onbeforeprint\",\n \"onbeforescriptexecute\",\n \"onbeforeunload\",\n \"onbeforeupdate\",\n \"onblocked\",\n \"onblur\",\n \"onbounce\",\n \"onboundary\",\n \"oncached\",\n \"oncancel\",\n \"oncandidatewindowhide\",\n \"oncandidatewindowshow\",\n \"oncandidatewindowupdate\",\n \"oncanplay\",\n \"oncanplaythrough\",\n \"once\",\n \"oncellchange\",\n \"onchange\",\n \"onchargingchange\",\n \"onchargingtimechange\",\n \"onchecking\",\n \"onclick\",\n \"onclose\",\n \"oncompassneedscalibration\",\n \"oncomplete\",\n \"oncontextmenu\",\n \"oncontrolselect\",\n \"oncopy\",\n \"oncuechange\",\n \"oncut\",\n \"ondataavailable\",\n \"ondatachannel\",\n \"ondatasetchanged\",\n \"ondatasetcomplete\",\n \"ondblclick\",\n \"ondeactivate\",\n \"ondevicelight\",\n \"ondevicemotion\",\n \"ondeviceorientation\",\n \"ondeviceproximity\",\n \"ondischargingtimechange\",\n \"ondisplay\",\n \"ondownloading\",\n \"ondrag\",\n \"ondragend\",\n \"ondragenter\",\n \"ondragleave\",\n \"ondragover\",\n \"ondragstart\",\n \"ondrop\",\n \"ondurationchange\",\n \"onemptied\",\n \"onencrypted\",\n \"onend\",\n \"onended\",\n \"onenter\",\n \"onerror\",\n \"onerrorupdate\",\n \"onexit\",\n \"onfilterchange\",\n \"onfinish\",\n \"onfocus\",\n \"onfocusin\",\n \"onfocusout\",\n \"onfullscreenchange\",\n \"onfullscreenerror\",\n \"ongesturechange\",\n \"ongestureend\",\n \"ongesturestart\",\n \"ongotpointercapture\",\n \"onhashchange\",\n \"onhelp\",\n \"onicecandidate\",\n \"oniceconnectionstatechange\",\n \"oninactive\",\n \"oninput\",\n \"oninvalid\",\n \"onkeydown\",\n \"onkeypress\",\n \"onkeyup\",\n \"onlanguagechange\",\n \"onlayoutcomplete\",\n \"onlevelchange\",\n \"onload\",\n \"onloadeddata\",\n \"onloadedmetadata\",\n \"onloadend\",\n \"onloadstart\",\n \"onlosecapture\",\n \"onlostpointercapture\",\n \"only\",\n \"onmark\",\n \"onmessage\",\n \"onmousedown\",\n \"onmouseenter\",\n \"onmouseleave\",\n \"onmousemove\",\n \"onmouseout\",\n \"onmouseover\",\n \"onmouseup\",\n \"onmousewheel\",\n \"onmove\",\n \"onmoveend\",\n \"onmovestart\",\n \"onmozfullscreenchange\",\n \"onmozfullscreenerror\",\n \"onmozorientationchange\",\n \"onmozpointerlockchange\",\n \"onmozpointerlockerror\",\n \"onmscontentzoom\",\n \"onmsfullscreenchange\",\n \"onmsfullscreenerror\",\n \"onmsgesturechange\",\n \"onmsgesturedoubletap\",\n \"onmsgestureend\",\n \"onmsgesturehold\",\n \"onmsgesturestart\",\n \"onmsgesturetap\",\n \"onmsgotpointercapture\",\n \"onmsinertiastart\",\n \"onmslostpointercapture\",\n \"onmsmanipulationstatechanged\",\n \"onmsneedkey\",\n \"onmsorientationchange\",\n \"onmspointercancel\",\n \"onmspointerdown\",\n \"onmspointerenter\",\n \"onmspointerhover\",\n \"onmspointerleave\",\n \"onmspointermove\",\n \"onmspointerout\",\n \"onmspointerover\",\n \"onmspointerup\",\n \"onmssitemodejumplistitemremoved\",\n \"onmsthumbnailclick\",\n \"onnegotiationneeded\",\n \"onnomatch\",\n \"onnoupdate\",\n \"onobsolete\",\n \"onoffline\",\n \"ononline\",\n \"onopen\",\n \"onorientationchange\",\n \"onpagechange\",\n \"onpagehide\",\n \"onpageshow\",\n \"onpaste\",\n \"onpause\",\n \"onplay\",\n \"onplaying\",\n \"onpluginstreamstart\",\n \"onpointercancel\",\n \"onpointerdown\",\n \"onpointerenter\",\n \"onpointerleave\",\n \"onpointerlockchange\",\n \"onpointerlockerror\",\n \"onpointermove\",\n \"onpointerout\",\n \"onpointerover\",\n \"onpointerup\",\n \"onpopstate\",\n \"onprogress\",\n \"onpropertychange\",\n \"onratechange\",\n \"onreadystatechange\",\n \"onremovestream\",\n \"onremovetrack\",\n \"onreset\",\n \"onresize\",\n \"onresizeend\",\n \"onresizestart\",\n \"onresourcetimingbufferfull\",\n \"onresult\",\n \"onresume\",\n \"onrowenter\",\n \"onrowexit\",\n \"onrowsdelete\",\n \"onrowsinserted\",\n \"onscroll\",\n \"onsearch\",\n \"onseeked\",\n \"onseeking\",\n \"onselect\",\n \"onselectionchange\",\n \"onselectstart\",\n \"onshow\",\n \"onsignalingstatechange\",\n \"onsoundend\",\n \"onsoundstart\",\n \"onspeechend\",\n \"onspeechstart\",\n \"onstalled\",\n \"onstart\",\n \"onstatechange\",\n \"onstop\",\n \"onstorage\",\n \"onstoragecommit\",\n \"onsubmit\",\n \"onsuccess\",\n \"onsuspend\",\n \"ontextinput\",\n \"ontimeout\",\n \"ontimeupdate\",\n \"ontoggle\",\n \"ontouchcancel\",\n \"ontouchend\",\n \"ontouchmove\",\n \"ontouchstart\",\n \"ontransitionend\",\n \"onunload\",\n \"onupdateready\",\n \"onupgradeneeded\",\n \"onuserproximity\",\n \"onversionchange\",\n \"onvoiceschanged\",\n \"onvolumechange\",\n \"onwaiting\",\n \"onwarning\",\n \"onwebkitanimationend\",\n \"onwebkitanimationiteration\",\n \"onwebkitanimationstart\",\n \"onwebkitcurrentplaybacktargetiswirelesschanged\",\n \"onwebkitfullscreenchange\",\n \"onwebkitfullscreenerror\",\n \"onwebkitkeyadded\",\n \"onwebkitkeyerror\",\n \"onwebkitkeymessage\",\n \"onwebkitneedkey\",\n \"onwebkitorientationchange\",\n \"onwebkitplaybacktargetavailabilitychanged\",\n \"onwebkitpointerlockchange\",\n \"onwebkitpointerlockerror\",\n \"onwebkitresourcetimingbufferfull\",\n \"onwebkittransitionend\",\n \"onwheel\",\n \"onzoom\",\n \"opacity\",\n \"open\",\n \"openCursor\",\n \"openDatabase\",\n \"openKeyCursor\",\n \"opener\",\n \"opera\",\n \"operationType\",\n \"operator\",\n \"opr\",\n \"optimum\",\n \"options\",\n \"order\",\n \"orderX\",\n \"orderY\",\n \"ordered\",\n \"org\",\n \"orient\",\n \"orientAngle\",\n \"orientType\",\n \"orientation\",\n \"origin\",\n \"originalTarget\",\n \"orphans\",\n \"oscpu\",\n \"outerHTML\",\n \"outerHeight\",\n \"outerText\",\n \"outerWidth\",\n \"outline\",\n \"outline-color\",\n \"outline-offset\",\n \"outline-style\",\n \"outline-width\",\n \"outlineColor\",\n \"outlineOffset\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outputBuffer\",\n \"overflow\",\n \"overflow-x\",\n \"overflow-y\",\n \"overflowX\",\n \"overflowY\",\n \"overrideMimeType\",\n \"oversample\",\n \"ownerDocument\",\n \"ownerElement\",\n \"ownerNode\",\n \"ownerRule\",\n \"ownerSVGElement\",\n \"owningElement\",\n \"p1\",\n \"p2\",\n \"p3\",\n \"p4\",\n \"pad\",\n \"padding\",\n \"padding-bottom\",\n \"padding-left\",\n \"padding-right\",\n \"padding-top\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingTop\",\n \"page\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"pageBreakAfter\",\n \"pageBreakBefore\",\n \"pageBreakInside\",\n \"pageCount\",\n \"pageX\",\n \"pageXOffset\",\n \"pageY\",\n \"pageYOffset\",\n \"pages\",\n \"paint-order\",\n \"paintOrder\",\n \"paintRequests\",\n \"paintType\",\n \"palette\",\n \"panningModel\",\n \"parent\",\n \"parentElement\",\n \"parentNode\",\n \"parentRule\",\n \"parentStyleSheet\",\n \"parentTextEdit\",\n \"parentWindow\",\n \"parse\",\n \"parseFloat\",\n \"parseFromString\",\n \"parseInt\",\n \"participants\",\n \"passive\",\n \"password\",\n \"pasteHTML\",\n \"path\",\n \"pathLength\",\n \"pathSegList\",\n \"pathSegType\",\n \"pathSegTypeAsLetter\",\n \"pathname\",\n \"pattern\",\n \"patternContentUnits\",\n \"patternMismatch\",\n \"patternTransform\",\n \"patternUnits\",\n \"pause\",\n \"pauseAnimations\",\n \"pauseOnExit\",\n \"paused\",\n \"pending\",\n \"performance\",\n \"permission\",\n \"persisted\",\n \"personalbar\",\n \"perspective\",\n \"perspective-origin\",\n \"perspectiveOrigin\",\n \"phoneticFamilyName\",\n \"phoneticGivenName\",\n \"photo\",\n \"ping\",\n \"pitch\",\n \"pixelBottom\",\n \"pixelDepth\",\n \"pixelHeight\",\n \"pixelLeft\",\n \"pixelRight\",\n \"pixelStorei\",\n \"pixelTop\",\n \"pixelUnitToMillimeterX\",\n \"pixelUnitToMillimeterY\",\n \"pixelWidth\",\n \"placeholder\",\n \"platform\",\n \"play\",\n \"playbackRate\",\n \"playbackState\",\n \"playbackTime\",\n \"played\",\n \"plugins\",\n \"pluginspage\",\n \"pname\",\n \"pointer-events\",\n \"pointerBeforeReferenceNode\",\n \"pointerEnabled\",\n \"pointerEvents\",\n \"pointerId\",\n \"pointerLockElement\",\n \"pointerType\",\n \"points\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"polygonOffset\",\n \"pop\",\n \"popupWindowFeatures\",\n \"popupWindowName\",\n \"popupWindowURI\",\n \"port\",\n \"port1\",\n \"port2\",\n \"ports\",\n \"posBottom\",\n \"posHeight\",\n \"posLeft\",\n \"posRight\",\n \"posTop\",\n \"posWidth\",\n \"position\",\n \"positionAlign\",\n \"postError\",\n \"postMessage\",\n \"poster\",\n \"pow\",\n \"powerOff\",\n \"preMultiplySelf\",\n \"precision\",\n \"preferredStyleSheetSet\",\n \"preferredStylesheetSet\",\n \"prefix\",\n \"preload\",\n \"prepend\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"preserveAspectRatioString\",\n \"pressed\",\n \"pressure\",\n \"prevValue\",\n \"preventDefault\",\n \"preventExtensions\",\n \"previousElementSibling\",\n \"previousNode\",\n \"previousPage\",\n \"previousScale\",\n \"previousSibling\",\n \"previousTranslate\",\n \"primaryKey\",\n \"primitiveType\",\n \"primitiveUnits\",\n \"principals\",\n \"print\",\n \"privateKey\",\n \"probablySupportsContext\",\n \"process\",\n \"processIceMessage\",\n \"product\",\n \"productSub\",\n \"profile\",\n \"profileEnd\",\n \"profiles\",\n \"prompt\",\n \"properties\",\n \"propertyIsEnumerable\",\n \"propertyName\",\n \"protocol\",\n \"protocolLong\",\n \"prototype\",\n \"pseudoClass\",\n \"pseudoElement\",\n \"publicId\",\n \"publicKey\",\n \"published\",\n \"push\",\n \"pushNotification\",\n \"pushState\",\n \"put\",\n \"putImageData\",\n \"quadraticCurveTo\",\n \"qualifier\",\n \"queryCommandEnabled\",\n \"queryCommandIndeterm\",\n \"queryCommandState\",\n \"queryCommandSupported\",\n \"queryCommandText\",\n \"queryCommandValue\",\n \"querySelector\",\n \"querySelectorAll\",\n \"quote\",\n \"quotes\",\n \"r\",\n \"r1\",\n \"r2\",\n \"race\",\n \"radiogroup\",\n \"radiusX\",\n \"radiusY\",\n \"random\",\n \"range\",\n \"rangeCount\",\n \"rangeMax\",\n \"rangeMin\",\n \"rangeOffset\",\n \"rangeOverflow\",\n \"rangeParent\",\n \"rangeUnderflow\",\n \"rate\",\n \"ratio\",\n \"raw\",\n \"read\",\n \"readAsArrayBuffer\",\n \"readAsBinaryString\",\n \"readAsBlob\",\n \"readAsDataURL\",\n \"readAsText\",\n \"readOnly\",\n \"readPixels\",\n \"readReportRequested\",\n \"readyState\",\n \"reason\",\n \"reboot\",\n \"receiver\",\n \"receivers\",\n \"recordNumber\",\n \"recordset\",\n \"rect\",\n \"red\",\n \"redirectCount\",\n \"redirectEnd\",\n \"redirectStart\",\n \"reduce\",\n \"reduceRight\",\n \"reduction\",\n \"refDistance\",\n \"refX\",\n \"refY\",\n \"referenceNode\",\n \"referrer\",\n \"refresh\",\n \"region\",\n \"regionAnchorX\",\n \"regionAnchorY\",\n \"regionId\",\n \"regions\",\n \"register\",\n \"registerContentHandler\",\n \"registerElement\",\n \"registerProtocolHandler\",\n \"reject\",\n \"rel\",\n \"relList\",\n \"relatedNode\",\n \"relatedTarget\",\n \"release\",\n \"releaseCapture\",\n \"releaseEvents\",\n \"releasePointerCapture\",\n \"releaseShaderCompiler\",\n \"reliable\",\n \"reload\",\n \"remainingSpace\",\n \"remoteDescription\",\n \"remove\",\n \"removeAllRanges\",\n \"removeAttribute\",\n \"removeAttributeNS\",\n \"removeAttributeNode\",\n \"removeBehavior\",\n \"removeChild\",\n \"removeCue\",\n \"removeEventListener\",\n \"removeFilter\",\n \"removeImport\",\n \"removeItem\",\n \"removeListener\",\n \"removeNamedItem\",\n \"removeNamedItemNS\",\n \"removeNode\",\n \"removeParameter\",\n \"removeProperty\",\n \"removeRange\",\n \"removeRegion\",\n \"removeRule\",\n \"removeSiteSpecificTrackingException\",\n \"removeSourceBuffer\",\n \"removeStream\",\n \"removeTrack\",\n \"removeVariable\",\n \"removeWakeLockListener\",\n \"removeWebWideTrackingException\",\n \"removedNodes\",\n \"renderbufferStorage\",\n \"renderedBuffer\",\n \"renderingMode\",\n \"repeat\",\n \"replace\",\n \"replaceAdjacentText\",\n \"replaceChild\",\n \"replaceData\",\n \"replaceId\",\n \"replaceItem\",\n \"replaceNode\",\n \"replaceState\",\n \"replaceTrack\",\n \"replaceWholeText\",\n \"reportValidity\",\n \"requestAnimationFrame\",\n \"requestAutocomplete\",\n \"requestData\",\n \"requestFullscreen\",\n \"requestMediaKeySystemAccess\",\n \"requestPermission\",\n \"requestPointerLock\",\n \"requestStart\",\n \"requestingWindow\",\n \"required\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"reset\",\n \"resetTransform\",\n \"resize\",\n \"resizeBy\",\n \"resizeTo\",\n \"resolve\",\n \"response\",\n \"responseBody\",\n \"responseEnd\",\n \"responseStart\",\n \"responseText\",\n \"responseType\",\n \"responseURL\",\n \"responseXML\",\n \"restore\",\n \"result\",\n \"resultType\",\n \"resume\",\n \"returnValue\",\n \"rev\",\n \"reverse\",\n \"reversed\",\n \"revocable\",\n \"revokeObjectURL\",\n \"rgbColor\",\n \"right\",\n \"rightContext\",\n \"rightMargin\",\n \"rolloffFactor\",\n \"root\",\n \"rootElement\",\n \"rotate\",\n \"rotateAxisAngle\",\n \"rotateAxisAngleSelf\",\n \"rotateFromVector\",\n \"rotateFromVectorSelf\",\n \"rotateSelf\",\n \"rotation\",\n \"rotationRate\",\n \"round\",\n \"rowIndex\",\n \"rowSpan\",\n \"rows\",\n \"rubyAlign\",\n \"rubyOverhang\",\n \"rubyPosition\",\n \"rules\",\n \"runtime\",\n \"runtimeStyle\",\n \"rx\",\n \"ry\",\n \"safari\",\n \"sampleCoverage\",\n \"sampleRate\",\n \"sandbox\",\n \"save\",\n \"scale\",\n \"scale3d\",\n \"scale3dSelf\",\n \"scaleNonUniform\",\n \"scaleNonUniformSelf\",\n \"scaleSelf\",\n \"scheme\",\n \"scissor\",\n \"scope\",\n \"scopeName\",\n \"scoped\",\n \"screen\",\n \"screenBrightness\",\n \"screenEnabled\",\n \"screenLeft\",\n \"screenPixelToMillimeterX\",\n \"screenPixelToMillimeterY\",\n \"screenTop\",\n \"screenX\",\n \"screenY\",\n \"scripts\",\n \"scroll\",\n \"scroll-behavior\",\n \"scrollAmount\",\n \"scrollBehavior\",\n \"scrollBy\",\n \"scrollByLines\",\n \"scrollByPages\",\n \"scrollDelay\",\n \"scrollHeight\",\n \"scrollIntoView\",\n \"scrollIntoViewIfNeeded\",\n \"scrollLeft\",\n \"scrollLeftMax\",\n \"scrollMaxX\",\n \"scrollMaxY\",\n \"scrollTo\",\n \"scrollTop\",\n \"scrollTopMax\",\n \"scrollWidth\",\n \"scrollX\",\n \"scrollY\",\n \"scrollbar3dLightColor\",\n \"scrollbarArrowColor\",\n \"scrollbarBaseColor\",\n \"scrollbarDarkShadowColor\",\n \"scrollbarFaceColor\",\n \"scrollbarHighlightColor\",\n \"scrollbarShadowColor\",\n \"scrollbarTrackColor\",\n \"scrollbars\",\n \"scrolling\",\n \"sdp\",\n \"sdpMLineIndex\",\n \"sdpMid\",\n \"seal\",\n \"search\",\n \"searchBox\",\n \"searchBoxJavaBridge_\",\n \"searchParams\",\n \"sectionRowIndex\",\n \"secureConnectionStart\",\n \"security\",\n \"seed\",\n \"seekable\",\n \"seeking\",\n \"select\",\n \"selectAllChildren\",\n \"selectNode\",\n \"selectNodeContents\",\n \"selectNodes\",\n \"selectSingleNode\",\n \"selectSubString\",\n \"selected\",\n \"selectedIndex\",\n \"selectedOptions\",\n \"selectedStyleSheetSet\",\n \"selectedStylesheetSet\",\n \"selection\",\n \"selectionDirection\",\n \"selectionEnd\",\n \"selectionStart\",\n \"selector\",\n \"selectorText\",\n \"self\",\n \"send\",\n \"sendAsBinary\",\n \"sendBeacon\",\n \"sender\",\n \"sentTimestamp\",\n \"separator\",\n \"serializeToString\",\n \"serviceWorker\",\n \"sessionId\",\n \"sessionStorage\",\n \"set\",\n \"setActive\",\n \"setAlpha\",\n \"setAttribute\",\n \"setAttributeNS\",\n \"setAttributeNode\",\n \"setAttributeNodeNS\",\n \"setBaseAndExtent\",\n \"setBingCurrentSearchDefault\",\n \"setCapture\",\n \"setColor\",\n \"setCompositeOperation\",\n \"setCurrentTime\",\n \"setCustomValidity\",\n \"setData\",\n \"setDate\",\n \"setDragImage\",\n \"setEnd\",\n \"setEndAfter\",\n \"setEndBefore\",\n \"setEndPoint\",\n \"setFillColor\",\n \"setFilterRes\",\n \"setFloat32\",\n \"setFloat64\",\n \"setFloatValue\",\n \"setFullYear\",\n \"setHours\",\n \"setImmediate\",\n \"setInt16\",\n \"setInt32\",\n \"setInt8\",\n \"setInterval\",\n \"setItem\",\n \"setLineCap\",\n \"setLineDash\",\n \"setLineJoin\",\n \"setLineWidth\",\n \"setLocalDescription\",\n \"setMatrix\",\n \"setMatrixValue\",\n \"setMediaKeys\",\n \"setMilliseconds\",\n \"setMinutes\",\n \"setMiterLimit\",\n \"setMonth\",\n \"setNamedItem\",\n \"setNamedItemNS\",\n \"setNonUserCodeExceptions\",\n \"setOrientToAngle\",\n \"setOrientToAuto\",\n \"setOrientation\",\n \"setOverrideHistoryNavigationMode\",\n \"setPaint\",\n \"setParameter\",\n \"setPeriodicWave\",\n \"setPointerCapture\",\n \"setPosition\",\n \"setPreference\",\n \"setProperty\",\n \"setPrototypeOf\",\n \"setRGBColor\",\n \"setRGBColorICCColor\",\n \"setRadius\",\n \"setRangeText\",\n \"setRemoteDescription\",\n \"setRequestHeader\",\n \"setResizable\",\n \"setResourceTimingBufferSize\",\n \"setRotate\",\n \"setScale\",\n \"setSeconds\",\n \"setSelectionRange\",\n \"setServerCertificate\",\n \"setShadow\",\n \"setSkewX\",\n \"setSkewY\",\n \"setStart\",\n \"setStartAfter\",\n \"setStartBefore\",\n \"setStdDeviation\",\n \"setStringValue\",\n \"setStrokeColor\",\n \"setSuggestResult\",\n \"setTargetAtTime\",\n \"setTargetValueAtTime\",\n \"setTime\",\n \"setTimeout\",\n \"setTransform\",\n \"setTranslate\",\n \"setUTCDate\",\n \"setUTCFullYear\",\n \"setUTCHours\",\n \"setUTCMilliseconds\",\n \"setUTCMinutes\",\n \"setUTCMonth\",\n \"setUTCSeconds\",\n \"setUint16\",\n \"setUint32\",\n \"setUint8\",\n \"setUri\",\n \"setValueAtTime\",\n \"setValueCurveAtTime\",\n \"setVariable\",\n \"setVelocity\",\n \"setVersion\",\n \"setYear\",\n \"settingName\",\n \"settingValue\",\n \"sex\",\n \"shaderSource\",\n \"shadowBlur\",\n \"shadowColor\",\n \"shadowOffsetX\",\n \"shadowOffsetY\",\n \"shadowRoot\",\n \"shape\",\n \"shape-rendering\",\n \"shapeRendering\",\n \"sheet\",\n \"shift\",\n \"shiftKey\",\n \"shiftLeft\",\n \"show\",\n \"showHelp\",\n \"showModal\",\n \"showModalDialog\",\n \"showModelessDialog\",\n \"showNotification\",\n \"sidebar\",\n \"sign\",\n \"signalingState\",\n \"sin\",\n \"singleNodeValue\",\n \"sinh\",\n \"size\",\n \"sizeToContent\",\n \"sizes\",\n \"skewX\",\n \"skewXSelf\",\n \"skewY\",\n \"skewYSelf\",\n \"slice\",\n \"slope\",\n \"small\",\n \"smil\",\n \"smooth\",\n \"smoothingTimeConstant\",\n \"snapToLines\",\n \"snapshotItem\",\n \"snapshotLength\",\n \"some\",\n \"sort\",\n \"source\",\n \"sourceBuffer\",\n \"sourceBuffers\",\n \"sourceIndex\",\n \"spacing\",\n \"span\",\n \"speakAs\",\n \"speaking\",\n \"specified\",\n \"specularConstant\",\n \"specularExponent\",\n \"speechSynthesis\",\n \"speed\",\n \"speedOfSound\",\n \"spellcheck\",\n \"splice\",\n \"split\",\n \"splitText\",\n \"spreadMethod\",\n \"sqrt\",\n \"src\",\n \"srcElement\",\n \"srcFilter\",\n \"srcUrn\",\n \"srcdoc\",\n \"srclang\",\n \"srcset\",\n \"stack\",\n \"stackTraceLimit\",\n \"stacktrace\",\n \"standalone\",\n \"standby\",\n \"start\",\n \"startContainer\",\n \"startIce\",\n \"startOffset\",\n \"startRendering\",\n \"startTime\",\n \"startsWith\",\n \"state\",\n \"status\",\n \"statusMessage\",\n \"statusText\",\n \"statusbar\",\n \"stdDeviationX\",\n \"stdDeviationY\",\n \"stencilFunc\",\n \"stencilFuncSeparate\",\n \"stencilMask\",\n \"stencilMaskSeparate\",\n \"stencilOp\",\n \"stencilOpSeparate\",\n \"step\",\n \"stepDown\",\n \"stepMismatch\",\n \"stepUp\",\n \"sticky\",\n \"stitchTiles\",\n \"stop\",\n \"stop-color\",\n \"stop-opacity\",\n \"stopColor\",\n \"stopImmediatePropagation\",\n \"stopOpacity\",\n \"stopPropagation\",\n \"storageArea\",\n \"storageName\",\n \"storageStatus\",\n \"storeSiteSpecificTrackingException\",\n \"storeWebWideTrackingException\",\n \"stpVersion\",\n \"stream\",\n \"strike\",\n \"stringValue\",\n \"stringify\",\n \"stroke\",\n \"stroke-dasharray\",\n \"stroke-dashoffset\",\n \"stroke-linecap\",\n \"stroke-linejoin\",\n \"stroke-miterlimit\",\n \"stroke-opacity\",\n \"stroke-width\",\n \"strokeDasharray\",\n \"strokeDashoffset\",\n \"strokeLinecap\",\n \"strokeLinejoin\",\n \"strokeMiterlimit\",\n \"strokeOpacity\",\n \"strokeRect\",\n \"strokeStyle\",\n \"strokeText\",\n \"strokeWidth\",\n \"style\",\n \"styleFloat\",\n \"styleMedia\",\n \"styleSheet\",\n \"styleSheetSets\",\n \"styleSheets\",\n \"sub\",\n \"subarray\",\n \"subject\",\n \"submit\",\n \"subscribe\",\n \"substr\",\n \"substring\",\n \"substringData\",\n \"subtle\",\n \"subtree\",\n \"suffix\",\n \"suffixes\",\n \"summary\",\n \"sup\",\n \"supports\",\n \"surfaceScale\",\n \"surroundContents\",\n \"suspend\",\n \"suspendRedraw\",\n \"swapCache\",\n \"swapNode\",\n \"sweepFlag\",\n \"symbols\",\n \"system\",\n \"systemCode\",\n \"systemId\",\n \"systemLanguage\",\n \"systemXDPI\",\n \"systemYDPI\",\n \"tBodies\",\n \"tFoot\",\n \"tHead\",\n \"tabIndex\",\n \"table\",\n \"table-layout\",\n \"tableLayout\",\n \"tableValues\",\n \"tag\",\n \"tagName\",\n \"tagUrn\",\n \"tags\",\n \"taintEnabled\",\n \"takeRecords\",\n \"tan\",\n \"tanh\",\n \"target\",\n \"targetElement\",\n \"targetTouches\",\n \"targetX\",\n \"targetY\",\n \"tel\",\n \"terminate\",\n \"test\",\n \"texImage2D\",\n \"texParameterf\",\n \"texParameteri\",\n \"texSubImage2D\",\n \"text\",\n \"text-align\",\n \"text-anchor\",\n \"text-decoration\",\n \"text-decoration-color\",\n \"text-decoration-line\",\n \"text-decoration-style\",\n \"text-indent\",\n \"text-overflow\",\n \"text-rendering\",\n \"text-shadow\",\n \"text-transform\",\n \"textAlign\",\n \"textAlignLast\",\n \"textAnchor\",\n \"textAutospace\",\n \"textBaseline\",\n \"textContent\",\n \"textDecoration\",\n \"textDecorationBlink\",\n \"textDecorationColor\",\n \"textDecorationLine\",\n \"textDecorationLineThrough\",\n \"textDecorationNone\",\n \"textDecorationOverline\",\n \"textDecorationStyle\",\n \"textDecorationUnderline\",\n \"textIndent\",\n \"textJustify\",\n \"textJustifyTrim\",\n \"textKashida\",\n \"textKashidaSpace\",\n \"textLength\",\n \"textOverflow\",\n \"textRendering\",\n \"textShadow\",\n \"textTracks\",\n \"textTransform\",\n \"textUnderlinePosition\",\n \"then\",\n \"threadId\",\n \"threshold\",\n \"tiltX\",\n \"tiltY\",\n \"time\",\n \"timeEnd\",\n \"timeStamp\",\n \"timeout\",\n \"timestamp\",\n \"timestampOffset\",\n \"timing\",\n \"title\",\n \"toArray\",\n \"toBlob\",\n \"toDataURL\",\n \"toDateString\",\n \"toElement\",\n \"toExponential\",\n \"toFixed\",\n \"toFloat32Array\",\n \"toFloat64Array\",\n \"toGMTString\",\n \"toISOString\",\n \"toJSON\",\n \"toLocaleDateString\",\n \"toLocaleFormat\",\n \"toLocaleLowerCase\",\n \"toLocaleString\",\n \"toLocaleTimeString\",\n \"toLocaleUpperCase\",\n \"toLowerCase\",\n \"toMethod\",\n \"toPrecision\",\n \"toSdp\",\n \"toSource\",\n \"toStaticHTML\",\n \"toString\",\n \"toStringTag\",\n \"toTimeString\",\n \"toUTCString\",\n \"toUpperCase\",\n \"toggle\",\n \"toggleLongPressEnabled\",\n \"tooLong\",\n \"toolbar\",\n \"top\",\n \"topMargin\",\n \"total\",\n \"totalFrameDelay\",\n \"totalVideoFrames\",\n \"touchAction\",\n \"touches\",\n \"trace\",\n \"track\",\n \"transaction\",\n \"transactions\",\n \"transform\",\n \"transform-origin\",\n \"transform-style\",\n \"transformOrigin\",\n \"transformPoint\",\n \"transformString\",\n \"transformStyle\",\n \"transformToDocument\",\n \"transformToFragment\",\n \"transition\",\n \"transition-delay\",\n \"transition-duration\",\n \"transition-property\",\n \"transition-timing-function\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionProperty\",\n \"transitionTimingFunction\",\n \"translate\",\n \"translateSelf\",\n \"translationX\",\n \"translationY\",\n \"trim\",\n \"trimLeft\",\n \"trimRight\",\n \"trueSpeed\",\n \"trunc\",\n \"truncate\",\n \"type\",\n \"typeDetail\",\n \"typeMismatch\",\n \"typeMustMatch\",\n \"types\",\n \"ubound\",\n \"undefined\",\n \"unescape\",\n \"uneval\",\n \"unicode-bidi\",\n \"unicodeBidi\",\n \"uniform1f\",\n \"uniform1fv\",\n \"uniform1i\",\n \"uniform1iv\",\n \"uniform2f\",\n \"uniform2fv\",\n \"uniform2i\",\n \"uniform2iv\",\n \"uniform3f\",\n \"uniform3fv\",\n \"uniform3i\",\n \"uniform3iv\",\n \"uniform4f\",\n \"uniform4fv\",\n \"uniform4i\",\n \"uniform4iv\",\n \"uniformMatrix2fv\",\n \"uniformMatrix3fv\",\n \"uniformMatrix4fv\",\n \"unique\",\n \"uniqueID\",\n \"uniqueNumber\",\n \"unitType\",\n \"units\",\n \"unloadEventEnd\",\n \"unloadEventStart\",\n \"unlock\",\n \"unmount\",\n \"unobserve\",\n \"unpause\",\n \"unpauseAnimations\",\n \"unreadCount\",\n \"unregister\",\n \"unregisterContentHandler\",\n \"unregisterProtocolHandler\",\n \"unscopables\",\n \"unselectable\",\n \"unshift\",\n \"unsubscribe\",\n \"unsuspendRedraw\",\n \"unsuspendRedrawAll\",\n \"unwatch\",\n \"unwrapKey\",\n \"update\",\n \"updateCommands\",\n \"updateIce\",\n \"updateInterval\",\n \"updateSettings\",\n \"updated\",\n \"updating\",\n \"upload\",\n \"upper\",\n \"upperBound\",\n \"upperOpen\",\n \"uri\",\n \"url\",\n \"urn\",\n \"urns\",\n \"usages\",\n \"useCurrentView\",\n \"useMap\",\n \"useProgram\",\n \"usedSpace\",\n \"userAgent\",\n \"userLanguage\",\n \"username\",\n \"v8BreakIterator\",\n \"vAlign\",\n \"vLink\",\n \"valid\",\n \"validateProgram\",\n \"validationMessage\",\n \"validity\",\n \"value\",\n \"valueAsDate\",\n \"valueAsNumber\",\n \"valueAsString\",\n \"valueInSpecifiedUnits\",\n \"valueMissing\",\n \"valueOf\",\n \"valueText\",\n \"valueType\",\n \"values\",\n \"vector-effect\",\n \"vectorEffect\",\n \"velocityAngular\",\n \"velocityExpansion\",\n \"velocityX\",\n \"velocityY\",\n \"vendor\",\n \"vendorSub\",\n \"verify\",\n \"version\",\n \"vertexAttrib1f\",\n \"vertexAttrib1fv\",\n \"vertexAttrib2f\",\n \"vertexAttrib2fv\",\n \"vertexAttrib3f\",\n \"vertexAttrib3fv\",\n \"vertexAttrib4f\",\n \"vertexAttrib4fv\",\n \"vertexAttribDivisorANGLE\",\n \"vertexAttribPointer\",\n \"vertical\",\n \"vertical-align\",\n \"verticalAlign\",\n \"verticalOverflow\",\n \"vibrate\",\n \"videoHeight\",\n \"videoTracks\",\n \"videoWidth\",\n \"view\",\n \"viewBox\",\n \"viewBoxString\",\n \"viewTarget\",\n \"viewTargetString\",\n \"viewport\",\n \"viewportAnchorX\",\n \"viewportAnchorY\",\n \"viewportElement\",\n \"visibility\",\n \"visibilityState\",\n \"visible\",\n \"vlinkColor\",\n \"voice\",\n \"volume\",\n \"vrml\",\n \"vspace\",\n \"w\",\n \"wand\",\n \"warn\",\n \"wasClean\",\n \"watch\",\n \"watchPosition\",\n \"webdriver\",\n \"webkitAddKey\",\n \"webkitAnimation\",\n \"webkitAnimationDelay\",\n \"webkitAnimationDirection\",\n \"webkitAnimationDuration\",\n \"webkitAnimationFillMode\",\n \"webkitAnimationIterationCount\",\n \"webkitAnimationName\",\n \"webkitAnimationPlayState\",\n \"webkitAnimationTimingFunction\",\n \"webkitAppearance\",\n \"webkitAudioContext\",\n \"webkitAudioDecodedByteCount\",\n \"webkitAudioPannerNode\",\n \"webkitBackfaceVisibility\",\n \"webkitBackground\",\n \"webkitBackgroundAttachment\",\n \"webkitBackgroundClip\",\n \"webkitBackgroundColor\",\n \"webkitBackgroundImage\",\n \"webkitBackgroundOrigin\",\n \"webkitBackgroundPosition\",\n \"webkitBackgroundPositionX\",\n \"webkitBackgroundPositionY\",\n \"webkitBackgroundRepeat\",\n \"webkitBackgroundSize\",\n \"webkitBackingStorePixelRatio\",\n \"webkitBorderImage\",\n \"webkitBorderImageOutset\",\n \"webkitBorderImageRepeat\",\n \"webkitBorderImageSlice\",\n \"webkitBorderImageSource\",\n \"webkitBorderImageWidth\",\n \"webkitBoxAlign\",\n \"webkitBoxDirection\",\n \"webkitBoxFlex\",\n \"webkitBoxOrdinalGroup\",\n \"webkitBoxOrient\",\n \"webkitBoxPack\",\n \"webkitBoxSizing\",\n \"webkitCancelAnimationFrame\",\n \"webkitCancelFullScreen\",\n \"webkitCancelKeyRequest\",\n \"webkitCancelRequestAnimationFrame\",\n \"webkitClearResourceTimings\",\n \"webkitClosedCaptionsVisible\",\n \"webkitConvertPointFromNodeToPage\",\n \"webkitConvertPointFromPageToNode\",\n \"webkitCreateShadowRoot\",\n \"webkitCurrentFullScreenElement\",\n \"webkitCurrentPlaybackTargetIsWireless\",\n \"webkitDirectionInvertedFromDevice\",\n \"webkitDisplayingFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitEnterFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitExitFullscreen\",\n \"webkitExitPointerLock\",\n \"webkitFullScreenKeyboardInputAllowed\",\n \"webkitFullscreenElement\",\n \"webkitFullscreenEnabled\",\n \"webkitGenerateKeyRequest\",\n \"webkitGetAsEntry\",\n \"webkitGetDatabaseNames\",\n \"webkitGetEntries\",\n \"webkitGetEntriesByName\",\n \"webkitGetEntriesByType\",\n \"webkitGetFlowByName\",\n \"webkitGetGamepads\",\n \"webkitGetImageDataHD\",\n \"webkitGetNamedFlows\",\n \"webkitGetRegionFlowRanges\",\n \"webkitGetUserMedia\",\n \"webkitHasClosedCaptions\",\n \"webkitHidden\",\n \"webkitIDBCursor\",\n \"webkitIDBDatabase\",\n \"webkitIDBDatabaseError\",\n \"webkitIDBDatabaseException\",\n \"webkitIDBFactory\",\n \"webkitIDBIndex\",\n \"webkitIDBKeyRange\",\n \"webkitIDBObjectStore\",\n \"webkitIDBRequest\",\n \"webkitIDBTransaction\",\n \"webkitImageSmoothingEnabled\",\n \"webkitIndexedDB\",\n \"webkitInitMessageEvent\",\n \"webkitIsFullScreen\",\n \"webkitKeys\",\n \"webkitLineDashOffset\",\n \"webkitLockOrientation\",\n \"webkitMatchesSelector\",\n \"webkitMediaStream\",\n \"webkitNotifications\",\n \"webkitOfflineAudioContext\",\n \"webkitOrientation\",\n \"webkitPeerConnection00\",\n \"webkitPersistentStorage\",\n \"webkitPointerLockElement\",\n \"webkitPostMessage\",\n \"webkitPreservesPitch\",\n \"webkitPutImageDataHD\",\n \"webkitRTCPeerConnection\",\n \"webkitRegionOverset\",\n \"webkitRequestAnimationFrame\",\n \"webkitRequestFileSystem\",\n \"webkitRequestFullScreen\",\n \"webkitRequestFullscreen\",\n \"webkitRequestPointerLock\",\n \"webkitResolveLocalFileSystemURL\",\n \"webkitSetMediaKeys\",\n \"webkitSetResourceTimingBufferSize\",\n \"webkitShadowRoot\",\n \"webkitShowPlaybackTargetPicker\",\n \"webkitSlice\",\n \"webkitSpeechGrammar\",\n \"webkitSpeechGrammarList\",\n \"webkitSpeechRecognition\",\n \"webkitSpeechRecognitionError\",\n \"webkitSpeechRecognitionEvent\",\n \"webkitStorageInfo\",\n \"webkitSupportsFullscreen\",\n \"webkitTemporaryStorage\",\n \"webkitTextSizeAdjust\",\n \"webkitTransform\",\n \"webkitTransformOrigin\",\n \"webkitTransition\",\n \"webkitTransitionDelay\",\n \"webkitTransitionDuration\",\n \"webkitTransitionProperty\",\n \"webkitTransitionTimingFunction\",\n \"webkitURL\",\n \"webkitUnlockOrientation\",\n \"webkitUserSelect\",\n \"webkitVideoDecodedByteCount\",\n \"webkitVisibilityState\",\n \"webkitWirelessVideoPlaybackDisabled\",\n \"webkitdropzone\",\n \"webstore\",\n \"weight\",\n \"whatToShow\",\n \"wheelDelta\",\n \"wheelDeltaX\",\n \"wheelDeltaY\",\n \"which\",\n \"white-space\",\n \"whiteSpace\",\n \"wholeText\",\n \"widows\",\n \"width\",\n \"will-change\",\n \"willChange\",\n \"willValidate\",\n \"window\",\n \"withCredentials\",\n \"word-break\",\n \"word-spacing\",\n \"word-wrap\",\n \"wordBreak\",\n \"wordSpacing\",\n \"wordWrap\",\n \"wrap\",\n \"wrapKey\",\n \"write\",\n \"writeln\",\n \"writingMode\",\n \"x\",\n \"x1\",\n \"x2\",\n \"xChannelSelector\",\n \"xmlEncoding\",\n \"xmlStandalone\",\n \"xmlVersion\",\n \"xmlbase\",\n \"xmllang\",\n \"xmlspace\",\n \"y\",\n \"y1\",\n \"y2\",\n \"yChannelSelector\",\n \"yandex\",\n \"z\",\n \"z-index\",\n \"zIndex\",\n \"zoom\",\n \"zoomAndPan\",\n \"zoomRectScreen\"\n];\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n/* global global, self */\n\nimport {\n defaults,\n push_uniq,\n} from \"./utils/index.js\";\nimport { base54 } from \"./scope\";\nimport {\n AST_Call,\n AST_Conditional,\n AST_Dot,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_Sequence,\n AST_String,\n AST_Sub,\n TreeTransformer,\n TreeWalker,\n} from \"./ast.js\";\nimport { domprops } from \"../tools/domprops.js\";\n\nfunction find_builtins(reserved) {\n domprops.forEach(add);\n\n // Compatibility fix for some standard defined globals not defined on every js environment\n var new_globals = [\"Symbol\", \"Map\", \"Promise\", \"Proxy\", \"Reflect\", \"Set\", \"WeakMap\", \"WeakSet\"];\n var objects = {};\n var global_ref = typeof global === \"object\" ? global : self;\n\n new_globals.forEach(function (new_global) {\n objects[new_global] = global_ref[new_global] || new Function();\n });\n\n [\n \"null\",\n \"true\",\n \"false\",\n \"NaN\",\n \"Infinity\",\n \"-Infinity\",\n \"undefined\",\n ].forEach(add);\n [ Object, Array, Function, Number,\n String, Boolean, Error, Math,\n Date, RegExp, objects.Symbol, ArrayBuffer,\n DataView, decodeURI, decodeURIComponent,\n encodeURI, encodeURIComponent, eval, EvalError,\n Float32Array, Float64Array, Int8Array, Int16Array,\n Int32Array, isFinite, isNaN, JSON, objects.Map, parseFloat,\n parseInt, objects.Promise, objects.Proxy, RangeError, ReferenceError,\n objects.Reflect, objects.Set, SyntaxError, TypeError, Uint8Array,\n Uint8ClampedArray, Uint16Array, Uint32Array, URIError,\n objects.WeakMap, objects.WeakSet\n ].forEach(function(ctor) {\n Object.getOwnPropertyNames(ctor).map(add);\n if (ctor.prototype) {\n Object.getOwnPropertyNames(ctor.prototype).map(add);\n }\n });\n function add(name) {\n reserved.add(name);\n }\n}\n\nfunction reserve_quoted_keys(ast, reserved) {\n function add(name) {\n push_uniq(reserved, name);\n }\n\n ast.walk(new TreeWalker(function(node) {\n if (node instanceof AST_ObjectKeyVal && node.quote) {\n add(node.key);\n } else if (node instanceof AST_ObjectProperty && node.quote) {\n add(node.key.name);\n } else if (node instanceof AST_Sub) {\n addStrings(node.property, add);\n }\n }));\n}\n\nfunction addStrings(node, add) {\n node.walk(new TreeWalker(function(node) {\n if (node instanceof AST_Sequence) {\n addStrings(node.tail_node(), add);\n } else if (node instanceof AST_String) {\n add(node.value);\n } else if (node instanceof AST_Conditional) {\n addStrings(node.consequent, add);\n addStrings(node.alternative, add);\n }\n return true;\n }));\n}\n\nfunction mangle_properties(ast, options) {\n options = defaults(options, {\n builtins: false,\n cache: null,\n debug: false,\n keep_quoted: false,\n only_cache: false,\n regex: null,\n reserved: null,\n undeclared: false,\n }, true);\n\n var reserved_option = options.reserved;\n if (!Array.isArray(reserved_option)) reserved_option = [reserved_option];\n var reserved = new Set(reserved_option);\n if (!options.builtins) find_builtins(reserved);\n\n var cname = -1;\n var cache;\n if (options.cache) {\n cache = options.cache.props;\n cache.forEach(function(mangled_name) {\n reserved.add(mangled_name);\n });\n } else {\n cache = new Map();\n }\n\n var regex = options.regex && new RegExp(options.regex);\n\n // note debug is either false (disabled), or a string of the debug suffix to use (enabled).\n // note debug may be enabled as an empty string, which is falsey. Also treat passing 'true'\n // the same as passing an empty string.\n var debug = options.debug !== false;\n var debug_name_suffix;\n if (debug) {\n debug_name_suffix = (options.debug === true ? \"\" : options.debug);\n }\n\n var names_to_mangle = new Set();\n var unmangleable = new Set();\n\n var keep_quoted_strict = options.keep_quoted === \"strict\";\n\n // step 1: find candidates to mangle\n ast.walk(new TreeWalker(function(node) {\n if (node instanceof AST_ObjectKeyVal) {\n if (typeof node.key == \"string\" &&\n (!keep_quoted_strict || !node.quote)) {\n add(node.key);\n }\n } else if (node instanceof AST_ObjectProperty) {\n // setter or getter, since KeyVal is handled above\n if (!keep_quoted_strict || !node.key.end.quote) {\n add(node.key.name);\n }\n } else if (node instanceof AST_Dot) {\n var declared = !!options.undeclared;\n if (!declared) {\n var root = node;\n while (root.expression) {\n root = root.expression;\n }\n declared = !(root.thedef && root.thedef.undeclared);\n }\n if (declared &&\n (!keep_quoted_strict || !node.quote)) {\n add(node.property);\n }\n } else if (node instanceof AST_Sub) {\n if (!keep_quoted_strict) {\n addStrings(node.property, add);\n }\n } else if (node instanceof AST_Call\n && node.expression.print_to_string() == \"Object.defineProperty\") {\n addStrings(node.args[1], add);\n }\n }));\n\n // step 2: transform the tree, renaming properties\n return ast.transform(new TreeTransformer(function(node) {\n if (node instanceof AST_ObjectKeyVal) {\n if (typeof node.key == \"string\" &&\n (!keep_quoted_strict || !node.quote)) {\n node.key = mangle(node.key);\n }\n } else if (node instanceof AST_ObjectProperty) {\n // setter, getter, method or class field\n if (!keep_quoted_strict || !node.key.end.quote) {\n node.key.name = mangle(node.key.name);\n }\n } else if (node instanceof AST_Dot) {\n if (!keep_quoted_strict || !node.quote) {\n node.property = mangle(node.property);\n }\n } else if (!options.keep_quoted && node instanceof AST_Sub) {\n node.property = mangleStrings(node.property);\n } else if (node instanceof AST_Call\n && node.expression.print_to_string() == \"Object.defineProperty\") {\n node.args[1] = mangleStrings(node.args[1]);\n }\n }));\n\n // only function declarations after this line\n\n function can_mangle(name) {\n if (unmangleable.has(name)) return false;\n if (reserved.has(name)) return false;\n if (options.only_cache) {\n return cache.has(name);\n }\n if (/^-?[0-9]+(\\.[0-9]+)?(e[+-][0-9]+)?$/.test(name)) return false;\n return true;\n }\n\n function should_mangle(name) {\n if (regex && !regex.test(name)) return false;\n if (reserved.has(name)) return false;\n return cache.has(name)\n || names_to_mangle.has(name);\n }\n\n function add(name) {\n if (can_mangle(name))\n names_to_mangle.add(name);\n\n if (!should_mangle(name)) {\n unmangleable.add(name);\n }\n }\n\n function mangle(name) {\n if (!should_mangle(name)) {\n return name;\n }\n\n var mangled = cache.get(name);\n if (!mangled) {\n if (debug) {\n // debug mode: use a prefix and suffix to preserve readability, e.g. o.foo -> o._$foo$NNN_.\n var debug_mangled = \"_$\" + name + \"$\" + debug_name_suffix + \"_\";\n\n if (can_mangle(debug_mangled)) {\n mangled = debug_mangled;\n }\n }\n\n // either debug mode is off, or it is on and we could not use the mangled name\n if (!mangled) {\n do {\n mangled = base54(++cname);\n } while (!can_mangle(mangled));\n }\n\n cache.set(name, mangled);\n }\n return mangled;\n }\n\n function mangleStrings(node) {\n return node.transform(new TreeTransformer(function(node) {\n if (node instanceof AST_Sequence) {\n var last = node.expressions.length - 1;\n node.expressions[last] = mangleStrings(node.expressions[last]);\n } else if (node instanceof AST_String) {\n node.value = mangle(node.value);\n } else if (node instanceof AST_Conditional) {\n node.consequent = mangleStrings(node.consequent);\n node.alternative = mangleStrings(node.alternative);\n }\n return node;\n }));\n }\n}\n\nexport {\n reserve_quoted_keys,\n mangle_properties,\n};\n","\"use strict\";\n/* eslint-env browser, es6, node */\n\nimport {\n defaults,\n map_from_object,\n map_to_object,\n HOP,\n} from \"./utils/index.js\";\nimport {\n AST_Node,\n AST_Toplevel,\n} from \"./ast.js\";\nimport { parse } from \"./parse.js\";\nimport { OutputStream } from \"./output.js\";\nimport { Compressor } from \"./compress/index.js\";\nimport { base54 } from \"./scope.js\";\nimport { SourceMap } from \"./sourcemap.js\";\nimport {\n mangle_properties,\n reserve_quoted_keys,\n} from \"./propmangle.js\";\n\nvar to_ascii = typeof atob == \"undefined\" ? function(b64) {\n return Buffer.from(b64, \"base64\").toString();\n} : atob;\nvar to_base64 = typeof btoa == \"undefined\" ? function(str) {\n return Buffer.from(str).toString(\"base64\");\n} : btoa;\n\nfunction read_source_map(code) {\n var match = /(?:^|[^.])\\/\\/# sourceMappingURL=data:application\\/json(;[\\w=-]*)?;base64,([+/0-9A-Za-z]*=*)\\s*$/.exec(code);\n if (!match) {\n AST_Node.warn(\"inline source map not found\");\n return null;\n }\n return to_ascii(match[2]);\n}\n\nfunction set_shorthand(name, options, keys) {\n if (options[name]) {\n keys.forEach(function(key) {\n if (options[key]) {\n if (typeof options[key] != \"object\") options[key] = {};\n if (!(name in options[key])) options[key][name] = options[name];\n }\n });\n }\n}\n\nfunction init_cache(cache) {\n if (!cache) return;\n if (!(\"props\" in cache)) {\n cache.props = new Map();\n } else if (!(cache.props instanceof Map)) {\n cache.props = map_from_object(cache.props);\n }\n}\n\nfunction cache_to_json(cache) {\n return {\n props: map_to_object(cache.props)\n };\n}\n\nfunction minify(files, options) {\n var warn_function = AST_Node.warn_function;\n try {\n options = defaults(options, {\n compress: {},\n ecma: undefined,\n enclose: false,\n ie8: false,\n keep_classnames: undefined,\n keep_fnames: false,\n mangle: {},\n module: false,\n nameCache: null,\n output: {},\n parse: {},\n rename: undefined,\n safari10: false,\n sourceMap: false,\n timings: false,\n toplevel: false,\n warnings: false,\n wrap: false,\n }, true);\n var timings = options.timings && {\n start: Date.now()\n };\n if (options.keep_classnames === undefined) {\n options.keep_classnames = options.keep_fnames;\n }\n if (options.rename === undefined) {\n options.rename = options.compress && options.mangle;\n }\n set_shorthand(\"ecma\", options, [ \"parse\", \"compress\", \"output\" ]);\n set_shorthand(\"ie8\", options, [ \"compress\", \"mangle\", \"output\" ]);\n set_shorthand(\"keep_classnames\", options, [ \"compress\", \"mangle\" ]);\n set_shorthand(\"keep_fnames\", options, [ \"compress\", \"mangle\" ]);\n set_shorthand(\"module\", options, [ \"parse\", \"compress\", \"mangle\" ]);\n set_shorthand(\"safari10\", options, [ \"mangle\", \"output\" ]);\n set_shorthand(\"toplevel\", options, [ \"compress\", \"mangle\" ]);\n set_shorthand(\"warnings\", options, [ \"compress\" ]);\n var quoted_props;\n if (options.mangle) {\n options.mangle = defaults(options.mangle, {\n cache: options.nameCache && (options.nameCache.vars || {}),\n eval: false,\n ie8: false,\n keep_classnames: false,\n keep_fnames: false,\n module: false,\n properties: false,\n reserved: [],\n safari10: false,\n toplevel: false,\n }, true);\n if (options.mangle.properties) {\n if (typeof options.mangle.properties != \"object\") {\n options.mangle.properties = {};\n }\n if (options.mangle.properties.keep_quoted) {\n quoted_props = options.mangle.properties.reserved;\n if (!Array.isArray(quoted_props)) quoted_props = [];\n options.mangle.properties.reserved = quoted_props;\n }\n if (options.nameCache && !(\"cache\" in options.mangle.properties)) {\n options.mangle.properties.cache = options.nameCache.props || {};\n }\n }\n init_cache(options.mangle.cache);\n init_cache(options.mangle.properties.cache);\n }\n if (options.sourceMap) {\n options.sourceMap = defaults(options.sourceMap, {\n asObject: false,\n content: null,\n filename: null,\n includeSources: false,\n root: null,\n url: null,\n }, true);\n }\n var warnings = [];\n if (options.warnings && !AST_Node.warn_function) {\n AST_Node.warn_function = function(warning) {\n warnings.push(warning);\n };\n }\n if (timings) timings.parse = Date.now();\n var toplevel;\n if (files instanceof AST_Toplevel) {\n toplevel = files;\n } else {\n if (typeof files == \"string\") {\n files = [ files ];\n }\n options.parse = options.parse || {};\n options.parse.toplevel = null;\n for (var name in files) if (HOP(files, name)) {\n options.parse.filename = name;\n options.parse.toplevel = parse(files[name], options.parse);\n if (options.sourceMap && options.sourceMap.content == \"inline\") {\n if (Object.keys(files).length > 1)\n throw new Error(\"inline source map only works with singular input\");\n options.sourceMap.content = read_source_map(files[name]);\n }\n }\n toplevel = options.parse.toplevel;\n }\n if (quoted_props && options.mangle.properties.keep_quoted !== \"strict\") {\n reserve_quoted_keys(toplevel, quoted_props);\n }\n if (options.wrap) {\n toplevel = toplevel.wrap_commonjs(options.wrap);\n }\n if (options.enclose) {\n toplevel = toplevel.wrap_enclose(options.enclose);\n }\n if (timings) timings.rename = Date.now();\n // disable rename on harmony due to expand_names bug in for-of loops\n // https://github.com/mishoo/UglifyJS2/issues/2794\n if (0 && options.rename) {\n toplevel.figure_out_scope(options.mangle);\n toplevel.expand_names(options.mangle);\n }\n if (timings) timings.compress = Date.now();\n if (options.compress) toplevel = new Compressor(options.compress).compress(toplevel);\n if (timings) timings.scope = Date.now();\n if (options.mangle) toplevel.figure_out_scope(options.mangle);\n if (timings) timings.mangle = Date.now();\n if (options.mangle) {\n base54.reset();\n toplevel.compute_char_frequency(options.mangle);\n toplevel.mangle_names(options.mangle);\n }\n if (timings) timings.properties = Date.now();\n if (options.mangle && options.mangle.properties) {\n toplevel = mangle_properties(toplevel, options.mangle.properties);\n }\n if (timings) timings.output = Date.now();\n var result = {};\n if (options.output.ast) {\n result.ast = toplevel;\n }\n if (!HOP(options.output, \"code\") || options.output.code) {\n if (options.sourceMap) {\n if (typeof options.sourceMap.content == \"string\") {\n options.sourceMap.content = JSON.parse(options.sourceMap.content);\n }\n options.output.source_map = SourceMap({\n file: options.sourceMap.filename,\n orig: options.sourceMap.content,\n root: options.sourceMap.root\n });\n if (options.sourceMap.includeSources) {\n if (files instanceof AST_Toplevel) {\n throw new Error(\"original source content unavailable\");\n } else for (var name in files) if (HOP(files, name)) {\n options.output.source_map.get().setSourceContent(name, files[name]);\n }\n }\n }\n delete options.output.ast;\n delete options.output.code;\n var stream = OutputStream(options.output);\n toplevel.print(stream);\n result.code = stream.get();\n if (options.sourceMap) {\n if(options.sourceMap.asObject) {\n result.map = options.output.source_map.get().toJSON();\n } else {\n result.map = options.output.source_map.toString();\n }\n if (options.sourceMap.url == \"inline\") {\n var sourceMap = typeof result.map === \"object\" ? JSON.stringify(result.map) : result.map;\n result.code += \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" + to_base64(sourceMap);\n } else if (options.sourceMap.url) {\n result.code += \"\\n//# sourceMappingURL=\" + options.sourceMap.url;\n }\n }\n }\n if (options.nameCache && options.mangle) {\n if (options.mangle.cache) options.nameCache.vars = cache_to_json(options.mangle.cache);\n if (options.mangle.properties && options.mangle.properties.cache) {\n options.nameCache.props = cache_to_json(options.mangle.properties.cache);\n }\n }\n if (timings) {\n timings.end = Date.now();\n result.timings = {\n parse: 1e-3 * (timings.rename - timings.parse),\n rename: 1e-3 * (timings.compress - timings.rename),\n compress: 1e-3 * (timings.scope - timings.compress),\n scope: 1e-3 * (timings.mangle - timings.scope),\n mangle: 1e-3 * (timings.properties - timings.mangle),\n properties: 1e-3 * (timings.output - timings.properties),\n output: 1e-3 * (timings.end - timings.output),\n total: 1e-3 * (timings.end - timings.start)\n };\n }\n if (warnings.length) {\n result.warnings = warnings;\n }\n return result;\n } catch (ex) {\n return { error: ex };\n } finally {\n AST_Node.warn_function = warn_function;\n }\n}\n\nexport {\n minify,\n to_ascii,\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\n\"use strict\";\n\nimport MOZ_SourceMap from \"source-map\";\nimport {\n defaults,\n} from \"./utils/index.js\";\n\n// a small wrapper around fitzgen's source-map library\nfunction SourceMap(options) {\n options = defaults(options, {\n file : null,\n root : null,\n orig : null,\n\n orig_line_diff : 0,\n dest_line_diff : 0,\n });\n var generator = new MOZ_SourceMap.SourceMapGenerator({\n file : options.file,\n sourceRoot : options.root\n });\n var orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig);\n\n if (orig_map) {\n orig_map.sources.forEach(function(source) {\n var sourceContent = orig_map.sourceContentFor(source, true);\n if (sourceContent) {\n generator.setSourceContent(source, sourceContent);\n }\n });\n }\n\n function add(source, gen_line, gen_col, orig_line, orig_col, name) {\n if (orig_map) {\n var info = orig_map.originalPositionFor({\n line: orig_line,\n column: orig_col\n });\n if (info.source === null) {\n return;\n }\n source = info.source;\n orig_line = info.line;\n orig_col = info.column;\n name = info.name || name;\n }\n generator.addMapping({\n generated : { line: gen_line + options.dest_line_diff, column: gen_col },\n original : { line: orig_line + options.orig_line_diff, column: orig_col },\n source : source,\n name : name\n });\n }\n return {\n add : add,\n get : function() { return generator; },\n toString : function() { return JSON.stringify(generator.toJSON()); }\n };\n}\n\nexport {\n SourceMap,\n};\n","/***********************************************************************\n\n A JavaScript tokenizer / parser / beautifier / compressor.\n https://github.com/mishoo/UglifyJS2\n\n -------------------------------- (C) ---------------------------------\n\n Author: Mihai Bazon\n \n http://mihai.bazon.net/blog\n\n Distributed under the BSD license:\n\n Copyright 2012 (c) Mihai Bazon \n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\n EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\n THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n SUCH DAMAGE.\n\n ***********************************************************************/\n\nimport * as ast from \"./ast.js\";\nimport { make_node } from \"./utils/index.js\";\nimport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Atom,\n AST_Await,\n AST_BigInt,\n AST_Binary,\n AST_Block,\n AST_BlockStatement,\n AST_Boolean,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_Class,\n AST_ClassExpression,\n AST_ClassProperty,\n AST_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Constant,\n AST_Continue,\n AST_Debugger,\n AST_Default,\n AST_DefaultAssign,\n AST_DefClass,\n AST_Definitions,\n AST_Defun,\n AST_Destructuring,\n AST_Directive,\n AST_Do,\n AST_Dot,\n AST_EmptyStatement,\n AST_Expansion,\n AST_Export,\n AST_False,\n AST_Finally,\n AST_For,\n AST_ForIn,\n AST_ForOf,\n AST_Function,\n AST_Hole,\n AST_If,\n AST_Import,\n AST_Label,\n AST_LabeledStatement,\n AST_LabelRef,\n AST_Lambda,\n AST_Let,\n AST_NameMapping,\n AST_New,\n AST_NewTarget,\n AST_Node,\n AST_Null,\n AST_Number,\n AST_Object,\n AST_ObjectGetter,\n AST_ObjectKeyVal,\n AST_ObjectProperty,\n AST_ObjectSetter,\n AST_PrefixedTemplateString,\n AST_PropAccess,\n AST_RegExp,\n AST_Return,\n AST_Sequence,\n AST_SimpleStatement,\n AST_Statement,\n AST_String,\n AST_Sub,\n AST_Super,\n AST_Switch,\n AST_SwitchBranch,\n AST_Symbol,\n AST_SymbolCatch,\n AST_SymbolClass,\n AST_SymbolClassProperty,\n AST_SymbolConst,\n AST_SymbolDefClass,\n AST_SymbolDefun,\n AST_SymbolExport,\n AST_SymbolExportForeign,\n AST_SymbolFunarg,\n AST_SymbolImport,\n AST_SymbolImportForeign,\n AST_SymbolLambda,\n AST_SymbolLet,\n AST_SymbolMethod,\n AST_SymbolRef,\n AST_SymbolVar,\n AST_TemplateSegment,\n AST_TemplateString,\n AST_This,\n AST_Throw,\n AST_Token,\n AST_Toplevel,\n AST_True,\n AST_Try,\n AST_Unary,\n AST_UnaryPostfix,\n AST_UnaryPrefix,\n AST_Var,\n AST_VarDef,\n AST_While,\n AST_With,\n AST_Yield,\n} from \"./ast.js\";\n\n(function() {\n\n var normalize_directives = function(body) {\n var in_directive = true;\n\n for (var i = 0; i < body.length; i++) {\n if (in_directive && body[i] instanceof AST_Statement && body[i].body instanceof AST_String) {\n body[i] = new AST_Directive({\n start: body[i].start,\n end: body[i].end,\n value: body[i].body.value\n });\n } else if (in_directive && !(body[i] instanceof AST_Statement && body[i].body instanceof AST_String)) {\n in_directive = false;\n }\n }\n\n return body;\n };\n\n var MOZ_TO_ME = {\n Program: function(M) {\n return new AST_Toplevel({\n start: my_start_token(M),\n end: my_end_token(M),\n body: normalize_directives(M.body.map(from_moz))\n });\n },\n ArrayPattern: function(M) {\n return new AST_Destructuring({\n start: my_start_token(M),\n end: my_end_token(M),\n names: M.elements.map(function(elm) {\n if (elm === null) {\n return new AST_Hole();\n }\n return from_moz(elm);\n }),\n is_array: true\n });\n },\n ObjectPattern: function(M) {\n return new AST_Destructuring({\n start: my_start_token(M),\n end: my_end_token(M),\n names: M.properties.map(from_moz),\n is_array: false\n });\n },\n AssignmentPattern: function(M) {\n return new AST_DefaultAssign({\n start: my_start_token(M),\n end: my_end_token(M),\n left: from_moz(M.left),\n operator: \"=\",\n right: from_moz(M.right)\n });\n },\n SpreadElement: function(M) {\n return new AST_Expansion({\n start: my_start_token(M),\n end: my_end_token(M),\n expression: from_moz(M.argument)\n });\n },\n RestElement: function(M) {\n return new AST_Expansion({\n start: my_start_token(M),\n end: my_end_token(M),\n expression: from_moz(M.argument)\n });\n },\n TemplateElement: function(M) {\n return new AST_TemplateSegment({\n start: my_start_token(M),\n end: my_end_token(M),\n value: M.value.cooked,\n raw: M.value.raw\n });\n },\n TemplateLiteral: function(M) {\n var segments = [];\n for (var i = 0; i < M.quasis.length; i++) {\n segments.push(from_moz(M.quasis[i]));\n if (M.expressions[i]) {\n segments.push(from_moz(M.expressions[i]));\n }\n }\n return new AST_TemplateString({\n start: my_start_token(M),\n end: my_end_token(M),\n segments: segments\n });\n },\n TaggedTemplateExpression: function(M) {\n return new AST_PrefixedTemplateString({\n start: my_start_token(M),\n end: my_end_token(M),\n template_string: from_moz(M.quasi),\n prefix: from_moz(M.tag)\n });\n },\n FunctionDeclaration: function(M) {\n return new AST_Defun({\n start: my_start_token(M),\n end: my_end_token(M),\n name: from_moz(M.id),\n argnames: M.params.map(from_moz),\n is_generator: M.generator,\n async: M.async,\n body: normalize_directives(from_moz(M.body).body)\n });\n },\n FunctionExpression: function(M) {\n return new AST_Function({\n start: my_start_token(M),\n end: my_end_token(M),\n name: from_moz(M.id),\n argnames: M.params.map(from_moz),\n is_generator: M.generator,\n async: M.async,\n body: normalize_directives(from_moz(M.body).body)\n });\n },\n ArrowFunctionExpression: function(M) {\n const body = M.body.type === \"BlockStatement\"\n ? from_moz(M.body).body\n : [make_node(AST_Return, {}, { value: from_moz(M.body) })];\n return new AST_Arrow({\n start: my_start_token(M),\n end: my_end_token(M),\n argnames: M.params.map(from_moz),\n body,\n async: M.async,\n });\n },\n ExpressionStatement: function(M) {\n return new AST_SimpleStatement({\n start: my_start_token(M),\n end: my_end_token(M),\n body: from_moz(M.expression)\n });\n },\n TryStatement: function(M) {\n var handlers = M.handlers || [M.handler];\n if (handlers.length > 1 || M.guardedHandlers && M.guardedHandlers.length) {\n throw new Error(\"Multiple catch clauses are not supported.\");\n }\n return new AST_Try({\n start : my_start_token(M),\n end : my_end_token(M),\n body : from_moz(M.block).body,\n bcatch : from_moz(handlers[0]),\n bfinally : M.finalizer ? new AST_Finally(from_moz(M.finalizer)) : null\n });\n },\n Property: function(M) {\n var key = M.key;\n var args = {\n start : my_start_token(key || M.value),\n end : my_end_token(M.value),\n key : key.type == \"Identifier\" ? key.name : key.value,\n value : from_moz(M.value)\n };\n if (M.computed) {\n args.key = from_moz(M.key);\n }\n if (M.method) {\n args.is_generator = M.value.generator;\n args.async = M.value.async;\n if (!M.computed) {\n args.key = new AST_SymbolMethod({ name: args.key });\n } else {\n args.key = from_moz(M.key);\n }\n return new AST_ConciseMethod(args);\n }\n if (M.kind == \"init\") {\n if (key.type != \"Identifier\" && key.type != \"Literal\") {\n args.key = from_moz(key);\n }\n return new AST_ObjectKeyVal(args);\n }\n if (typeof args.key === \"string\" || typeof args.key === \"number\") {\n args.key = new AST_SymbolMethod({\n name: args.key\n });\n }\n args.value = new AST_Accessor(args.value);\n if (M.kind == \"get\") return new AST_ObjectGetter(args);\n if (M.kind == \"set\") return new AST_ObjectSetter(args);\n if (M.kind == \"method\") {\n args.async = M.value.async;\n args.is_generator = M.value.generator;\n args.quote = M.computed ? \"\\\"\" : null;\n return new AST_ConciseMethod(args);\n }\n },\n MethodDefinition: function(M) {\n var args = {\n start : my_start_token(M),\n end : my_end_token(M),\n key : M.computed ? from_moz(M.key) : new AST_SymbolMethod({ name: M.key.name || M.key.value }),\n value : from_moz(M.value),\n static : M.static,\n };\n if (M.kind == \"get\") {\n return new AST_ObjectGetter(args);\n }\n if (M.kind == \"set\") {\n return new AST_ObjectSetter(args);\n }\n args.is_generator = M.value.generator;\n args.async = M.value.async;\n return new AST_ConciseMethod(args);\n },\n FieldDefinition: function(M) {\n let key;\n if (M.computed) {\n key = from_moz(M.key);\n } else {\n if (M.key.type !== \"Identifier\") throw new Error(\"Non-Identifier key in FieldDefinition\");\n key = from_moz(M.key);\n }\n return new AST_ClassProperty({\n start : my_start_token(M),\n end : my_end_token(M),\n key,\n value : from_moz(M.value),\n static : M.static,\n });\n },\n ArrayExpression: function(M) {\n return new AST_Array({\n start : my_start_token(M),\n end : my_end_token(M),\n elements : M.elements.map(function(elem) {\n return elem === null ? new AST_Hole() : from_moz(elem);\n })\n });\n },\n ObjectExpression: function(M) {\n return new AST_Object({\n start : my_start_token(M),\n end : my_end_token(M),\n properties : M.properties.map(function(prop) {\n if (prop.type === \"SpreadElement\") {\n return from_moz(prop);\n }\n prop.type = \"Property\";\n return from_moz(prop);\n })\n });\n },\n SequenceExpression: function(M) {\n return new AST_Sequence({\n start : my_start_token(M),\n end : my_end_token(M),\n expressions: M.expressions.map(from_moz)\n });\n },\n MemberExpression: function(M) {\n return new (M.computed ? AST_Sub : AST_Dot)({\n start : my_start_token(M),\n end : my_end_token(M),\n property : M.computed ? from_moz(M.property) : M.property.name,\n expression : from_moz(M.object)\n });\n },\n SwitchCase: function(M) {\n return new (M.test ? AST_Case : AST_Default)({\n start : my_start_token(M),\n end : my_end_token(M),\n expression : from_moz(M.test),\n body : M.consequent.map(from_moz)\n });\n },\n VariableDeclaration: function(M) {\n return new (M.kind === \"const\" ? AST_Const :\n M.kind === \"let\" ? AST_Let : AST_Var)({\n start : my_start_token(M),\n end : my_end_token(M),\n definitions : M.declarations.map(from_moz)\n });\n },\n\n ImportDeclaration: function(M) {\n var imported_name = null;\n var imported_names = null;\n M.specifiers.forEach(function (specifier) {\n if (specifier.type === \"ImportSpecifier\") {\n if (!imported_names) { imported_names = []; }\n imported_names.push(new AST_NameMapping({\n start: my_start_token(specifier),\n end: my_end_token(specifier),\n foreign_name: from_moz(specifier.imported),\n name: from_moz(specifier.local)\n }));\n } else if (specifier.type === \"ImportDefaultSpecifier\") {\n imported_name = from_moz(specifier.local);\n } else if (specifier.type === \"ImportNamespaceSpecifier\") {\n if (!imported_names) { imported_names = []; }\n imported_names.push(new AST_NameMapping({\n start: my_start_token(specifier),\n end: my_end_token(specifier),\n foreign_name: new AST_SymbolImportForeign({ name: \"*\" }),\n name: from_moz(specifier.local)\n }));\n }\n });\n return new AST_Import({\n start : my_start_token(M),\n end : my_end_token(M),\n imported_name: imported_name,\n imported_names : imported_names,\n module_name : from_moz(M.source)\n });\n },\n ExportAllDeclaration: function(M) {\n return new AST_Export({\n start: my_start_token(M),\n end: my_end_token(M),\n exported_names: [\n new AST_NameMapping({\n name: new AST_SymbolExportForeign({ name: \"*\" }),\n foreign_name: new AST_SymbolExportForeign({ name: \"*\" })\n })\n ],\n module_name: from_moz(M.source)\n });\n },\n ExportNamedDeclaration: function(M) {\n return new AST_Export({\n start: my_start_token(M),\n end: my_end_token(M),\n exported_definition: from_moz(M.declaration),\n exported_names: M.specifiers && M.specifiers.length ? M.specifiers.map(function (specifier) {\n return new AST_NameMapping({\n foreign_name: from_moz(specifier.exported),\n name: from_moz(specifier.local)\n });\n }) : null,\n module_name: from_moz(M.source)\n });\n },\n ExportDefaultDeclaration: function(M) {\n return new AST_Export({\n start: my_start_token(M),\n end: my_end_token(M),\n exported_value: from_moz(M.declaration),\n is_default: true\n });\n },\n Literal: function(M) {\n var val = M.value, args = {\n start : my_start_token(M),\n end : my_end_token(M)\n };\n var rx = M.regex;\n if (rx && rx.pattern) {\n // RegExpLiteral as per ESTree AST spec\n args.value = {\n source: rx.pattern,\n flags: rx.flags\n };\n return new AST_RegExp(args);\n } else if (rx) {\n // support legacy RegExp\n const rx_source = M.raw || val;\n const match = rx_source.match(/^\\/(.*)\\/(\\w*)$/);\n if (!match) throw new Error(\"Invalid regex source \" + rx_source);\n const [_, source, flags] = match;\n args.value = { source, flags };\n return new AST_RegExp(args);\n }\n if (val === null) return new AST_Null(args);\n switch (typeof val) {\n case \"string\":\n args.value = val;\n return new AST_String(args);\n case \"number\":\n args.value = val;\n return new AST_Number(args);\n case \"boolean\":\n return new (val ? AST_True : AST_False)(args);\n }\n },\n MetaProperty: function(M) {\n if (M.meta.name === \"new\" && M.property.name === \"target\") {\n return new AST_NewTarget({\n start: my_start_token(M),\n end: my_end_token(M)\n });\n }\n },\n Identifier: function(M) {\n var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2];\n return new ( p.type == \"LabeledStatement\" ? AST_Label\n : p.type == \"VariableDeclarator\" && p.id === M ? (p.kind == \"const\" ? AST_SymbolConst : p.kind == \"let\" ? AST_SymbolLet : AST_SymbolVar)\n : /Import.*Specifier/.test(p.type) ? (p.local === M ? AST_SymbolImport : AST_SymbolImportForeign)\n : p.type == \"ExportSpecifier\" ? (p.local === M ? AST_SymbolExport : AST_SymbolExportForeign)\n : p.type == \"FunctionExpression\" ? (p.id === M ? AST_SymbolLambda : AST_SymbolFunarg)\n : p.type == \"FunctionDeclaration\" ? (p.id === M ? AST_SymbolDefun : AST_SymbolFunarg)\n : p.type == \"ArrowFunctionExpression\" ? (p.params.includes(M)) ? AST_SymbolFunarg : AST_SymbolRef\n : p.type == \"ClassExpression\" ? (p.id === M ? AST_SymbolClass : AST_SymbolRef)\n : p.type == \"Property\" ? (p.key === M && p.computed || p.value === M ? AST_SymbolRef : AST_SymbolMethod)\n : p.type == \"FieldDefinition\" ? (p.key === M && p.computed || p.value === M ? AST_SymbolRef : AST_SymbolClassProperty)\n : p.type == \"ClassDeclaration\" ? (p.id === M ? AST_SymbolDefClass : AST_SymbolRef)\n : p.type == \"MethodDefinition\" ? (p.computed ? AST_SymbolRef : AST_SymbolMethod)\n : p.type == \"CatchClause\" ? AST_SymbolCatch\n : p.type == \"BreakStatement\" || p.type == \"ContinueStatement\" ? AST_LabelRef\n : AST_SymbolRef)({\n start : my_start_token(M),\n end : my_end_token(M),\n name : M.name\n });\n },\n BigIntLiteral(M) {\n return new AST_BigInt({\n start : my_start_token(M),\n end : my_end_token(M),\n value : M.value\n });\n }\n };\n\n MOZ_TO_ME.UpdateExpression =\n MOZ_TO_ME.UnaryExpression = function To_Moz_Unary(M) {\n var prefix = \"prefix\" in M ? M.prefix\n : M.type == \"UnaryExpression\" ? true : false;\n return new (prefix ? AST_UnaryPrefix : AST_UnaryPostfix)({\n start : my_start_token(M),\n end : my_end_token(M),\n operator : M.operator,\n expression : from_moz(M.argument)\n });\n };\n\n MOZ_TO_ME.ClassDeclaration =\n MOZ_TO_ME.ClassExpression = function From_Moz_Class(M) {\n return new (M.type === \"ClassDeclaration\" ? AST_DefClass : AST_ClassExpression)({\n start : my_start_token(M),\n end : my_end_token(M),\n name : from_moz(M.id),\n extends : from_moz(M.superClass),\n properties: M.body.body.map(from_moz)\n });\n };\n\n map(\"EmptyStatement\", AST_EmptyStatement);\n map(\"BlockStatement\", AST_BlockStatement, \"body@body\");\n map(\"IfStatement\", AST_If, \"test>condition, consequent>body, alternate>alternative\");\n map(\"LabeledStatement\", AST_LabeledStatement, \"label>label, body>body\");\n map(\"BreakStatement\", AST_Break, \"label>label\");\n map(\"ContinueStatement\", AST_Continue, \"label>label\");\n map(\"WithStatement\", AST_With, \"object>expression, body>body\");\n map(\"SwitchStatement\", AST_Switch, \"discriminant>expression, cases@body\");\n map(\"ReturnStatement\", AST_Return, \"argument>value\");\n map(\"ThrowStatement\", AST_Throw, \"argument>value\");\n map(\"WhileStatement\", AST_While, \"test>condition, body>body\");\n map(\"DoWhileStatement\", AST_Do, \"test>condition, body>body\");\n map(\"ForStatement\", AST_For, \"init>init, test>condition, update>step, body>body\");\n map(\"ForInStatement\", AST_ForIn, \"left>init, right>object, body>body\");\n map(\"ForOfStatement\", AST_ForOf, \"left>init, right>object, body>body, await=await\");\n map(\"AwaitExpression\", AST_Await, \"argument>expression\");\n map(\"YieldExpression\", AST_Yield, \"argument>expression, delegate=is_star\");\n map(\"DebuggerStatement\", AST_Debugger);\n map(\"VariableDeclarator\", AST_VarDef, \"id>name, init>value\");\n map(\"CatchClause\", AST_Catch, \"param>argname, body%body\");\n\n map(\"ThisExpression\", AST_This);\n map(\"Super\", AST_Super);\n map(\"BinaryExpression\", AST_Binary, \"operator=operator, left>left, right>right\");\n map(\"LogicalExpression\", AST_Binary, \"operator=operator, left>left, right>right\");\n map(\"AssignmentExpression\", AST_Assign, \"operator=operator, left>left, right>right\");\n map(\"ConditionalExpression\", AST_Conditional, \"test>condition, consequent>consequent, alternate>alternative\");\n map(\"NewExpression\", AST_New, \"callee>expression, arguments@args\");\n map(\"CallExpression\", AST_Call, \"callee>expression, arguments@args\");\n\n def_to_moz(AST_Toplevel, function To_Moz_Program(M) {\n return to_moz_scope(\"Program\", M);\n });\n\n def_to_moz(AST_Expansion, function To_Moz_Spread(M) {\n return {\n type: to_moz_in_destructuring() ? \"RestElement\" : \"SpreadElement\",\n argument: to_moz(M.expression)\n };\n });\n\n def_to_moz(AST_PrefixedTemplateString, function To_Moz_TaggedTemplateExpression(M) {\n return {\n type: \"TaggedTemplateExpression\",\n tag: to_moz(M.prefix),\n quasi: to_moz(M.template_string)\n };\n });\n\n def_to_moz(AST_TemplateString, function To_Moz_TemplateLiteral(M) {\n var quasis = [];\n var expressions = [];\n for (var i = 0; i < M.segments.length; i++) {\n if (i % 2 !== 0) {\n expressions.push(to_moz(M.segments[i]));\n } else {\n quasis.push({\n type: \"TemplateElement\",\n value: {\n raw: M.segments[i].raw,\n cooked: M.segments[i].value\n },\n tail: i === M.segments.length - 1\n });\n }\n }\n return {\n type: \"TemplateLiteral\",\n quasis: quasis,\n expressions: expressions\n };\n });\n\n def_to_moz(AST_Defun, function To_Moz_FunctionDeclaration(M) {\n return {\n type: \"FunctionDeclaration\",\n id: to_moz(M.name),\n params: M.argnames.map(to_moz),\n generator: M.is_generator,\n async: M.async,\n body: to_moz_scope(\"BlockStatement\", M)\n };\n });\n\n def_to_moz(AST_Function, function To_Moz_FunctionExpression(M, parent) {\n var is_generator = parent.is_generator !== undefined ?\n parent.is_generator : M.is_generator;\n return {\n type: \"FunctionExpression\",\n id: to_moz(M.name),\n params: M.argnames.map(to_moz),\n generator: is_generator,\n async: M.async,\n body: to_moz_scope(\"BlockStatement\", M)\n };\n });\n\n def_to_moz(AST_Arrow, function To_Moz_ArrowFunctionExpression(M) {\n var body = {\n type: \"BlockStatement\",\n body: M.body.map(to_moz)\n };\n return {\n type: \"ArrowFunctionExpression\",\n params: M.argnames.map(to_moz),\n async: M.async,\n body: body\n };\n });\n\n def_to_moz(AST_Destructuring, function To_Moz_ObjectPattern(M) {\n if (M.is_array) {\n return {\n type: \"ArrayPattern\",\n elements: M.names.map(to_moz)\n };\n }\n return {\n type: \"ObjectPattern\",\n properties: M.names.map(to_moz)\n };\n });\n\n def_to_moz(AST_Directive, function To_Moz_Directive(M) {\n return {\n type: \"ExpressionStatement\",\n expression: {\n type: \"Literal\",\n value: M.value,\n raw: M.print_to_string()\n },\n directive: M.value\n };\n });\n\n def_to_moz(AST_SimpleStatement, function To_Moz_ExpressionStatement(M) {\n return {\n type: \"ExpressionStatement\",\n expression: to_moz(M.body)\n };\n });\n\n def_to_moz(AST_SwitchBranch, function To_Moz_SwitchCase(M) {\n return {\n type: \"SwitchCase\",\n test: to_moz(M.expression),\n consequent: M.body.map(to_moz)\n };\n });\n\n def_to_moz(AST_Try, function To_Moz_TryStatement(M) {\n return {\n type: \"TryStatement\",\n block: to_moz_block(M),\n handler: to_moz(M.bcatch),\n guardedHandlers: [],\n finalizer: to_moz(M.bfinally)\n };\n });\n\n def_to_moz(AST_Catch, function To_Moz_CatchClause(M) {\n return {\n type: \"CatchClause\",\n param: to_moz(M.argname),\n guard: null,\n body: to_moz_block(M)\n };\n });\n\n def_to_moz(AST_Definitions, function To_Moz_VariableDeclaration(M) {\n return {\n type: \"VariableDeclaration\",\n kind:\n M instanceof AST_Const ? \"const\" :\n M instanceof AST_Let ? \"let\" : \"var\",\n declarations: M.definitions.map(to_moz)\n };\n });\n\n def_to_moz(AST_Export, function To_Moz_ExportDeclaration(M) {\n if (M.exported_names) {\n if (M.exported_names[0].name.name === \"*\") {\n return {\n type: \"ExportAllDeclaration\",\n source: to_moz(M.module_name)\n };\n }\n return {\n type: \"ExportNamedDeclaration\",\n specifiers: M.exported_names.map(function (name_mapping) {\n return {\n type: \"ExportSpecifier\",\n exported: to_moz(name_mapping.foreign_name),\n local: to_moz(name_mapping.name)\n };\n }),\n declaration: to_moz(M.exported_definition),\n source: to_moz(M.module_name)\n };\n }\n return {\n type: M.is_default ? \"ExportDefaultDeclaration\" : \"ExportNamedDeclaration\",\n declaration: to_moz(M.exported_value || M.exported_definition)\n };\n });\n\n def_to_moz(AST_Import, function To_Moz_ImportDeclaration(M) {\n var specifiers = [];\n if (M.imported_name) {\n specifiers.push({\n type: \"ImportDefaultSpecifier\",\n local: to_moz(M.imported_name)\n });\n }\n if (M.imported_names && M.imported_names[0].foreign_name.name === \"*\") {\n specifiers.push({\n type: \"ImportNamespaceSpecifier\",\n local: to_moz(M.imported_names[0].name)\n });\n } else if (M.imported_names) {\n M.imported_names.forEach(function(name_mapping) {\n specifiers.push({\n type: \"ImportSpecifier\",\n local: to_moz(name_mapping.name),\n imported: to_moz(name_mapping.foreign_name)\n });\n });\n }\n return {\n type: \"ImportDeclaration\",\n specifiers: specifiers,\n source: to_moz(M.module_name)\n };\n });\n\n def_to_moz(AST_Sequence, function To_Moz_SequenceExpression(M) {\n return {\n type: \"SequenceExpression\",\n expressions: M.expressions.map(to_moz)\n };\n });\n\n def_to_moz(AST_PropAccess, function To_Moz_MemberExpression(M) {\n var isComputed = M instanceof AST_Sub;\n return {\n type: \"MemberExpression\",\n object: to_moz(M.expression),\n computed: isComputed,\n property: isComputed ? to_moz(M.property) : {type: \"Identifier\", name: M.property}\n };\n });\n\n def_to_moz(AST_Unary, function To_Moz_Unary(M) {\n return {\n type: M.operator == \"++\" || M.operator == \"--\" ? \"UpdateExpression\" : \"UnaryExpression\",\n operator: M.operator,\n prefix: M instanceof AST_UnaryPrefix,\n argument: to_moz(M.expression)\n };\n });\n\n def_to_moz(AST_Binary, function To_Moz_BinaryExpression(M) {\n if (M.operator == \"=\" && to_moz_in_destructuring()) {\n return {\n type: \"AssignmentPattern\",\n left: to_moz(M.left),\n right: to_moz(M.right)\n };\n }\n\n const type = M.operator == \"&&\" || M.operator == \"||\" || M.operator === \"??\"\n ? \"LogicalExpression\"\n : \"BinaryExpression\";\n\n return {\n type,\n left: to_moz(M.left),\n operator: M.operator,\n right: to_moz(M.right)\n };\n });\n\n def_to_moz(AST_Array, function To_Moz_ArrayExpression(M) {\n return {\n type: \"ArrayExpression\",\n elements: M.elements.map(to_moz)\n };\n });\n\n def_to_moz(AST_Object, function To_Moz_ObjectExpression(M) {\n return {\n type: \"ObjectExpression\",\n properties: M.properties.map(to_moz)\n };\n });\n\n def_to_moz(AST_ObjectProperty, function To_Moz_Property(M, parent) {\n var key = M.key instanceof AST_Node ? to_moz(M.key) : {\n type: \"Identifier\",\n value: M.key\n };\n if (typeof M.key === \"number\") {\n key = {\n type: \"Literal\",\n value: Number(M.key)\n };\n }\n if (typeof M.key === \"string\") {\n key = {\n type: \"Identifier\",\n name: M.key\n };\n }\n var kind;\n var string_or_num = typeof M.key === \"string\" || typeof M.key === \"number\";\n var computed = string_or_num ? false : !(M.key instanceof AST_Symbol) || M.key instanceof AST_SymbolRef;\n if (M instanceof AST_ObjectKeyVal) {\n kind = \"init\";\n computed = !string_or_num;\n } else\n if (M instanceof AST_ObjectGetter) {\n kind = \"get\";\n } else\n if (M instanceof AST_ObjectSetter) {\n kind = \"set\";\n }\n if (M instanceof AST_ClassProperty) {\n return {\n type: \"FieldDefinition\",\n computed,\n key,\n value: to_moz(M.value),\n static: M.static\n };\n }\n if (parent instanceof AST_Class) {\n return {\n type: \"MethodDefinition\",\n computed: computed,\n kind: kind,\n static: M.static,\n key: to_moz(M.key),\n value: to_moz(M.value)\n };\n }\n return {\n type: \"Property\",\n computed: computed,\n kind: kind,\n key: key,\n value: to_moz(M.value)\n };\n });\n\n def_to_moz(AST_ConciseMethod, function To_Moz_MethodDefinition(M, parent) {\n if (parent instanceof AST_Object) {\n return {\n type: \"Property\",\n computed: !(M.key instanceof AST_Symbol) || M.key instanceof AST_SymbolRef,\n kind: \"init\",\n method: true,\n shorthand: false,\n key: to_moz(M.key),\n value: to_moz(M.value)\n };\n }\n return {\n type: \"MethodDefinition\",\n computed: !(M.key instanceof AST_Symbol) || M.key instanceof AST_SymbolRef,\n kind: M.key === \"constructor\" ? \"constructor\" : \"method\",\n static: M.static,\n key: to_moz(M.key),\n value: to_moz(M.value)\n };\n });\n\n def_to_moz(AST_Class, function To_Moz_Class(M) {\n var type = M instanceof AST_ClassExpression ? \"ClassExpression\" : \"ClassDeclaration\";\n return {\n type: type,\n superClass: to_moz(M.extends),\n id: M.name ? to_moz(M.name) : null,\n body: {\n type: \"ClassBody\",\n body: M.properties.map(to_moz)\n }\n };\n });\n\n def_to_moz(AST_NewTarget, function To_Moz_MetaProperty() {\n return {\n type: \"MetaProperty\",\n meta: {\n type: \"Identifier\",\n name: \"new\"\n },\n property: {\n type: \"Identifier\",\n name: \"target\"\n }\n };\n });\n\n def_to_moz(AST_Symbol, function To_Moz_Identifier(M, parent) {\n if (M instanceof AST_SymbolMethod && parent.quote) {\n return {\n type: \"Literal\",\n value: M.name\n };\n }\n var def = M.definition();\n return {\n type: \"Identifier\",\n name: def ? def.mangled_name || def.name : M.name\n };\n });\n\n def_to_moz(AST_RegExp, function To_Moz_RegExpLiteral(M) {\n const pattern = M.value.source;\n const flags = M.value.flags;\n return {\n type: \"Literal\",\n value: null,\n raw: M.print_to_string(),\n regex: { pattern, flags }\n };\n });\n\n def_to_moz(AST_Constant, function To_Moz_Literal(M) {\n var value = M.value;\n if (typeof value === \"number\" && (value < 0 || (value === 0 && 1 / value < 0))) {\n return {\n type: \"UnaryExpression\",\n operator: \"-\",\n prefix: true,\n argument: {\n type: \"Literal\",\n value: -value,\n raw: M.start.raw\n }\n };\n }\n return {\n type: \"Literal\",\n value: value,\n raw: M.start.raw\n };\n });\n\n def_to_moz(AST_Atom, function To_Moz_Atom(M) {\n return {\n type: \"Identifier\",\n name: String(M.value)\n };\n });\n\n def_to_moz(AST_BigInt, M => ({\n type: \"BigIntLiteral\",\n value: M.value\n }));\n\n AST_Boolean.DEFMETHOD(\"to_mozilla_ast\", AST_Constant.prototype.to_mozilla_ast);\n AST_Null.DEFMETHOD(\"to_mozilla_ast\", AST_Constant.prototype.to_mozilla_ast);\n AST_Hole.DEFMETHOD(\"to_mozilla_ast\", function To_Moz_ArrayHole() { return null; });\n\n AST_Block.DEFMETHOD(\"to_mozilla_ast\", AST_BlockStatement.prototype.to_mozilla_ast);\n AST_Lambda.DEFMETHOD(\"to_mozilla_ast\", AST_Function.prototype.to_mozilla_ast);\n\n /* -----[ tools ]----- */\n\n function raw_token(moznode) {\n if (moznode.type == \"Literal\") {\n return moznode.raw != null ? moznode.raw : moznode.value + \"\";\n }\n }\n\n function my_start_token(moznode) {\n var loc = moznode.loc, start = loc && loc.start;\n var range = moznode.range;\n return new AST_Token({\n file : loc && loc.source,\n line : start && start.line,\n col : start && start.column,\n pos : range ? range[0] : moznode.start,\n endline : start && start.line,\n endcol : start && start.column,\n endpos : range ? range[0] : moznode.start,\n raw : raw_token(moznode),\n });\n }\n\n function my_end_token(moznode) {\n var loc = moznode.loc, end = loc && loc.end;\n var range = moznode.range;\n return new AST_Token({\n file : loc && loc.source,\n line : end && end.line,\n col : end && end.column,\n pos : range ? range[1] : moznode.end,\n endline : end && end.line,\n endcol : end && end.column,\n endpos : range ? range[1] : moznode.end,\n raw : raw_token(moznode),\n });\n }\n\n function map(moztype, mytype, propmap) {\n var moz_to_me = \"function From_Moz_\" + moztype + \"(M){\\n\";\n moz_to_me += \"return new U2.\" + mytype.name + \"({\\n\" +\n \"start: my_start_token(M),\\n\" +\n \"end: my_end_token(M)\";\n\n var me_to_moz = \"function To_Moz_\" + moztype + \"(M){\\n\";\n me_to_moz += \"return {\\n\" +\n \"type: \" + JSON.stringify(moztype);\n\n if (propmap) propmap.split(/\\s*,\\s*/).forEach(function(prop) {\n var m = /([a-z0-9$_]+)([=@>%])([a-z0-9$_]+)/i.exec(prop);\n if (!m) throw new Error(\"Can't understand property map: \" + prop);\n var moz = m[1], how = m[2], my = m[3];\n moz_to_me += \",\\n\" + my + \": \";\n me_to_moz += \",\\n\" + moz + \": \";\n switch (how) {\n case \"@\":\n moz_to_me += \"M.\" + moz + \".map(from_moz)\";\n me_to_moz += \"M.\" + my + \".map(to_moz)\";\n break;\n case \">\":\n moz_to_me += \"from_moz(M.\" + moz + \")\";\n me_to_moz += \"to_moz(M.\" + my + \")\";\n break;\n case \"=\":\n moz_to_me += \"M.\" + moz;\n me_to_moz += \"M.\" + my;\n break;\n case \"%\":\n moz_to_me += \"from_moz(M.\" + moz + \").body\";\n me_to_moz += \"to_moz_block(M)\";\n break;\n default:\n throw new Error(\"Can't understand operator in propmap: \" + prop);\n }\n });\n\n moz_to_me += \"\\n})\\n}\";\n me_to_moz += \"\\n}\\n}\";\n\n moz_to_me = new Function(\"U2\", \"my_start_token\", \"my_end_token\", \"from_moz\", \"return(\" + moz_to_me + \")\")(\n ast, my_start_token, my_end_token, from_moz\n );\n me_to_moz = new Function(\"to_moz\", \"to_moz_block\", \"to_moz_scope\", \"return(\" + me_to_moz + \")\")(\n to_moz, to_moz_block, to_moz_scope\n );\n MOZ_TO_ME[moztype] = moz_to_me;\n def_to_moz(mytype, me_to_moz);\n }\n\n var FROM_MOZ_STACK = null;\n\n function from_moz(node) {\n FROM_MOZ_STACK.push(node);\n var ret = node != null ? MOZ_TO_ME[node.type](node) : null;\n FROM_MOZ_STACK.pop();\n return ret;\n }\n\n AST_Node.from_mozilla_ast = function(node) {\n var save_stack = FROM_MOZ_STACK;\n FROM_MOZ_STACK = [];\n var ast = from_moz(node);\n FROM_MOZ_STACK = save_stack;\n return ast;\n };\n\n function set_moz_loc(mynode, moznode) {\n var start = mynode.start;\n var end = mynode.end;\n if (!(start && end)) {\n return moznode;\n }\n if (start.pos != null && end.endpos != null) {\n moznode.range = [start.pos, end.endpos];\n }\n if (start.line) {\n moznode.loc = {\n start: {line: start.line, column: start.col},\n end: end.endline ? {line: end.endline, column: end.endcol} : null\n };\n if (start.file) {\n moznode.loc.source = start.file;\n }\n }\n return moznode;\n }\n\n function def_to_moz(mytype, handler) {\n mytype.DEFMETHOD(\"to_mozilla_ast\", function(parent) {\n return set_moz_loc(this, handler(this, parent));\n });\n }\n\n var TO_MOZ_STACK = null;\n\n function to_moz(node) {\n if (TO_MOZ_STACK === null) { TO_MOZ_STACK = []; }\n TO_MOZ_STACK.push(node);\n var ast = node != null ? node.to_mozilla_ast(TO_MOZ_STACK[TO_MOZ_STACK.length - 2]) : null;\n TO_MOZ_STACK.pop();\n if (TO_MOZ_STACK.length === 0) { TO_MOZ_STACK = null; }\n return ast;\n }\n\n function to_moz_in_destructuring() {\n var i = TO_MOZ_STACK.length;\n while (i--) {\n if (TO_MOZ_STACK[i] instanceof AST_Destructuring) {\n return true;\n }\n }\n return false;\n }\n\n function to_moz_block(node) {\n return {\n type: \"BlockStatement\",\n body: node.body.map(to_moz)\n };\n }\n\n function to_moz_scope(type, node) {\n var body = node.body.map(to_moz);\n if (node.body[0] instanceof AST_SimpleStatement && node.body[0].body instanceof AST_String) {\n body.unshift(to_moz(new AST_EmptyStatement(node.body[0])));\n }\n return {\n type: type,\n body: body\n };\n }\n})();\n"],"names":["characters","str","split","member","name","array","includes","DefaultsError","Error","[object Object]","msg","defs","super","this","message","defaults","args","croak","ret","i","HOP","ecma","noop","return_false","return_true","return_this","return_null","MAP","a","f","backwards","top","doit","val","is_last","Last","v","AtTop","Splice","push","apply","slice","reverse","skip","Array","isArray","length","concat","at_top","splice","last","make_node","ctor","orig","props","start","end","push_uniq","el","string_template","text","replace","p","remove","mergeSort","cmp","_ms","m","Math","floor","left","right","b","r","ai","bi","merge","makePredicate","words","Set","map_add","map","key","value","has","get","set","obj","prop","Object","prototype","hasOwnProperty","call","keep_name","keep_setting","RegExp","test","lineTerminatorEscape","\n","\r","
","
","regexp_source_fix","source","match","offset","re_safe_regexp","regexp_is_safe","has_annotation","node","annotation","_annotations","set_annotation","KEYWORDS","KEYWORDS_ATOM","RESERVED_WORDS","KEYWORDS_BEFORE_EXPRESSION","OPERATOR_CHARS","RE_NUM_LITERAL","RE_HEX_NUMBER","RE_OCT_NUMBER","RE_ES6_OCT_NUMBER","RE_BIN_NUMBER","RE_DEC_NUMBER","RE_BIG_INT","OPERATORS","WHITESPACE_CHARS","NEWLINE_CHARS","PUNC_AFTER_EXPRESSION","PUNC_BEFORE_EXPRESSION","PUNC_CHARS","UNICODE","ID_Start","ID_Continue","get_full_char","pos","is_surrogate_pair_head","charCodeAt","is_surrogate_pair_tail","charAt","code","is_digit","is_identifier_start","ch","is_identifier_char","is_basic_identifier_string","is_identifier_string","allow_surrogates","exec","index","parse_js_number","num","allow_e","NaN","parseInt","substr","parseFloat","JS_Parse_Error","filename","line","col","js_error","is_token","token","type","EX_EOF","tokenizer","$TEXT","html5_comments","shebang","S","tokpos","tokline","tokcol","newline_before","regex_allowed","brace_counter","template_braces","comments_before","directives","directive_stack","peek","next","signal_eof","in_string","forward","looking_at","find","what","indexOf","start_token","prev_was_dot","previous_token","is_comment","UNARY_POSTFIX","endline","endcol","endpos","nlb","file","raw","substring","comments_after","AST_Token","skip_whitespace","parse_error","err","read_num","prefix","has_e","after_e","has_x","has_dot","is_big_int","numeric_separator","pred","read_while","next_token","has_directive","endsWith","without_n","valid","isNaN","is_octal","read_escaped_char","strict_hex","template_string","String","fromCharCode","hex_bytes","result","strict_octal","read_octal_escape_sequence","n","digit","read_string","with_eof_error","quote","tok","read_template_characters","begin","content","tmp","pop","skip_line_comment","find_eol","skip_multiline_comment","surrogates","get_full_char_length","read_name","escaped","read_escaped_identifier_char","read_regexp","prev_backslash","in_class","flags","read_operator","grow","op","bigger","handle_slash","eof_error","cont","x","ex","force_regexp","word","context","nc","add_directive","directive","undefined","push_directives_stack","pop_directives_stack","UNARY_PREFIX","ASSIGNMENT","PRECEDENCE","j","ATOMIC_START_TOKEN","parse","options","outer_comments_before_counts","Map","bare_returns","expression","module","strict","toplevel","input","prev","peeked","in_function","in_async","in_generator","in_directives","in_loop","labels","is","ctx","token_error","unexpected","expect_token","expect","punc","has_newline_before","every","comment","can_insert_semicolon","is_in_generator","is_in_async","semicolon","optional","parenthesised","exp","embed_tokens","parser","expr","handle_regexp","statement","is_export_default","is_for_body","is_if_body","dir","stat","simple_statement","body","AST_String","AST_Directive","function_","AST_Defun","imported_name","imported_names","as_symbol","AST_SymbolImport","map_names","mod_str","AST_Import","module_name","import_","label","AST_Label","some","l","AST_IterationStatement","references","forEach","ref","AST_Continue","AST_LabeledStatement","labeled_statement","AST_BlockStatement","block_","AST_EmptyStatement","break_cont","AST_Break","AST_Debugger","condition","AST_Do","AST_While","for_await_error","await_tok","init","var_","let_","const_","is_in","is_of","AST_Definitions","definitions","is_assignable","to_destructuring","AST_Destructuring","AST_ForIn","object","for_in","is_await","lhs","AST_ForOf","await","for_of","step","AST_For","regular_for","for_","class_","AST_DefClass","cond","belse","AST_If","alternative","if_","AST_Return","AST_Switch","switch_body_","AST_Throw","bcatch","bfinally","parameter","AST_SymbolCatch","AST_Catch","argname","AST_Finally","AST_Try","try_","AST_With","is_default","exported_names","exported_value","exported_definition","AST_Export","AST_Lambda","AST_SimpleStatement","export_","ldef","AST_LabelRef","thedef","TYPE","arrow_function","argnames","is_async","_function_body","AST_Arrow","async","is_generator_property","in_statement","is_generator","AST_SymbolDefun","AST_SymbolLambda","AST_Function","AST_Accessor","AST_SymbolDeclaration","track_used_binding_identifiers","is_parameter","parameters","duplicate","default_assignment","spread","strict_mode","tracker","add_parameter","check_strict","add","mark_default_assignment","mark_spread","mark_strict_mode","is_strict","used_parameters","symbol_type","param","expand","binding_element","AST_DefaultAssign","operator","AST_Expansion","expand_token","elements","first","is_expand","first_token","AST_SymbolFunarg","AST_Hole","names","is_array","AST_ObjectKeyVal","property_token","property","as_property_name","block","generator","loop","current_generator","current_async","params","_verify_symbol","cur","branch","AST_Case","AST_Default","vardefs","no_in","kind","def","sym_type","AST_SymbolVar","AST_SymbolConst","AST_SymbolLet","AST_VarDef","AST_Var","AST_Let","AST_Const","as_atom_node","_make_symbol","AST_SymbolRef","AST_Number","AST_BigInt","AST_RegExp","AST_False","AST_True","AST_Null","to_fun_args","_","__","default_seen_above","insert_default","default_value","AST_Object","properties","AST_Array","AST_Assign","expr_atom","allow_calls","allow_arrows","subscripts","AST_NewTarget","newexp","expr_list","AST_New","annotate","new_","exprs","maybe_sequence","spread_token","invalid_sequence","trailing_comma","params_or_seq_","AST_Call","AST_Sequence","expressions","outer_comments_before","unshift","array_","object_or_destructuring_","func","cls","AST_ClassExpression","segments","AST_TemplateSegment","AST_TemplateString","closing","allow_trailing_comma","allow_empty","create_accessor","concise","concise_method_or_getset","AST_Node","KindOfClass","method","class_name","extends_","AST_SymbolDefClass","AST_SymbolClass","extends","is_class","get_method_name_ast","AST_SymbolMethod","is_static","AST_ConciseMethod","static","setter_token","AST_ObjectGetter","AST_ObjectSetter","AST_SymbolClassProperty","get_class_property_key_ast","AST_ClassProperty","map_name","is_import","make_symbol","foreign_name","foreign_type","AST_SymbolImportForeign","AST_SymbolExportForeign","AST_SymbolExport","AST_NameMapping","map_nameAsterisk","AST_This","AST_Super","sym","noerror","comments","comments_outside_parens","_PURE","_INLINE","_NOINLINE","AST_Dot","AST_Sub","call_args","AST_PrefixedTemplateString","maybe_unary","AST_Await","make_unary","AST_UnaryPrefix","AST_UnaryPostfix","expr_op","min_prec","prec","AST_Binary","maybe_conditional","expr_ops","yes","AST_Conditional","consequent","AST_PropAccess","AST_ObjectProperty","maybe_assign","star","has_expression","AST_Yield","is_star","_yield_expression","commas","AST_Toplevel","DEFNODE","methods","base","self_props","PROPS","proto","create","initialize","Function","BASE","SUBCLASSES","CTOR","constructor","SELF_PROPS","DEFMETHOD","_clone","deep","self","clone","transform","TreeTransformer","$documentation","$propdoc","_walk","visitor","_visit","walk","_children_backwards","warn_function","warn","txt","AST_Statement","walk_body","len","clone_block_scope","block_scope","AST_Block","AST_StatementWithBody","TreeWalker","AST_LoopControl","AST_DWLoop","AST_Scope","variables","functions","uses_with","uses_eval","parent_scope","enclosed","cname","get_defun_scope","is_block_scope","_block_scope","pinned","globals","wrap_commonjs","wrapped_tl","wrap_enclose","args_values","join","uses_arguments","args_as_names","out","all_symbols","AST_Symbol","seg","AST_Jump","AST_Exit","AST_SwitchBranch","name_import","name_export","AST_Unary","AST_Class","scope","AST_SymbolBlockDeclaration","AST_Constant","getValue","literal","AST_Atom","AST_NaN","AST_Undefined","AST_Infinity","AST_Boolean","cb","to_visit","bind","walk_abort","walk_parent","initial_stack","stack","parent_pop_indices","current","info","parent","visit_length","Symbol","callback","visit","descend","getPrototypeOf","st","before","after","def_transform","tw","in_list","transformed","after_ret","do_list","list","first_in_statement","EXPECT_DIRECTIVE","r_annotation","is_some_comments","OutputStream","readonly","ascii_only","beautify","braces","ie8","indent_level","indent_start","inline_script","keep_numbers","keep_quoted_props","max_line_len","preamble","preserve_annotations","quote_keys","quote_style","safari10","semicolons","shorthand","source_map","webkit","width","wrap_iife","wrap_func_args","comment_filter","regex_pos","lastIndexOf","indentation","current_col","current_line","current_pos","OUTPUT","printed_comments","to_utf8","identifier","get_full_char_code","toString","lone","encode_string","dq","sq","quote_single","quote_double","s","make_string","mapping_token","mapping_name","has_parens","might_need_space","might_need_semicolon","might_add_newline","need_newline_indented","need_space","newline_insert","mappings","do_add_mapping","mapping","cline","ccol","ensure_line_len","delta","requireSemicolonChars","print","indent","space","half","back","repeat","with_indent","next_indent","save_indentation","newline","force_semicolon","has_nlb","filter_comment","in_directive","use_asm","active_scope","current_width","should_break","comma","colon","print_name","make_name","print_string","escape_directive","encoded","print_template_string_chars","with_block","with_parens","with_square","add_mapping","option","opt","prepend_comments","return_with_value","shift","filter","c","last_nlb","append_comments","tail","insert","push_node","pop_node","DEFPRINT","nodetype","PARENS","display_body","is_toplevel","output","allow_directives","stmt","print_braced_empty","print_braced","parenthesize_for_noin","noin","parens","print_property_name","make_num","force_parens","_codegen","add_source_map","needs_parens","po","so","pp","sp","p1","startsWith","force_statement","make_block","_do_print_body","nokeyword","arg","_do_print","tag","parenthesize_tag","is_tagged","first_statement","returned","left_is_object","e","make_then","definition","mangled_name","get_name","allowShortHand","_print_getter_setter","r_slash_script","slash_script_replace","$1","digits","candidates","toLowerCase","best","best_of","DEFMAP","existing_flags","flag","delete","size","sort_regexp_flags","shallow_cmp","node1","node2","mkshallow","comparisons","keys","pass_through","label.name","other","function_defs","unmangleable_names","SymbolDef","eliminated","assignments","replaced","global","export","undeclared","id","next_id","chained","direct_access","recursive_refs","should_replace","single_use","fixed","seal","keep_fnames","eval","keep_classnames","cache","unmangleable","redefinition","redefined_catch_def","next_mangled","ext","base54","reserved","defun","in_destructuring","for_scopes","save_scope","init_scope_vars","the_block_scope","save_destructuring","save_defun","save_labels","def_function","mark_export","def_variable","mark_enclosed","find_variable","reference","level","exported","def_global","refs","g","_var_name_cache","varNames","var_names","_added_var_names","add_var_name","new_scope_enclosed_set","scope_ancestry","ancestry","to_enclose","scope_topdown","values","arguments","symbol","mangled_names","tricky_def","tricky_name","_default_mangler_options","lname","to_mangle","collect","save_nesting","mangle","avoid","to_avoid","add_def","reset","sort","find_colliding_names","rename","next_name","stream","_print","consider","skip_string","tail_node","print_to_string","leading","chars","frequency","compare","default_options","infer_options","0","component","minify","error","mangle_options","compressor","_size","list_overhead","lambda_modifiers","args_and_arrow","def_size","key_size","static_size","log10","has_flag","set_flag","clear_flag","Compressor","false_by_default","arrows","booleans","booleans_as_integers","collapse_vars","computed_props","conditionals","dead_code","drop_console","drop_debugger","evaluate","global_defs","hoist_funs","hoist_props","hoist_vars","if_return","inline","join_vars","keep_fargs","keep_infinity","loops","negate_iife","passes","pure_getters","pure_funcs","reduce_funcs","reduce_vars","sequences","side_effects","switches","top_retain","typeofs","unsafe","unsafe_arrows","unsafe_comps","unsafe_Function","unsafe_math","unsafe_symbols","unsafe_methods","unsafe_proto","unsafe_regexp","unsafe_undefined","unused","warnings","funcs","vars","sequences_limit","warnings_produced","evaluated_regexps","resolve_defines","process_expression","min_count","stopping","pass","figure_out_scope","reset_opt_flags","count","was_scope","hoist_properties","hoist_declarations","optimize","drop_unused","def_optimize","optimizer","read_property","get_value","make_node_from_constant","fixed_value","is_modified","immutable","is_lhs","is_expr_pure","contains_this","is_func_expr","is_lhs_read_only","is_immutable","is_ref_of","find_scope","make_sequence","reduce","merge_sequence","isFinite","maintain_this_binding","as_statement_array","thing","is_empty","can_be_evicted_from_block","loop_body","is_iife_call","is_undeclared_ref","tree1","tree2","walk_1_state","walk_2_state","walk_1_push","walk_2_push","node_1","node_2","equivalent_to","tt","drop_side_effect_free","def_reduce_vars","reset_def","exposed","reset_variables","defs_to_safe_ids","safe_ids","mark","loop_ids","reset_block_variables","safe","safe_to_read","safe_to_assign","def_safe_ids","mark_escaped","d","depth","is_constant","is_constant_expression","lazy_op","suppress","eq","iife","arg_name","saved_loop","has_break_or_continue","recursive_ref","ref_once","preparation","SQUEEZED","global_names","def_is_string","identifier_atom","is_identifier_atom","tighten_body","statements","in_try","find_parent","find_loop_scope_try","CHANGED","max_iter","eliminate_spurious_blocks","eliminate_dead_code","handle_if_return","sequencesize","sequencesize_2","join_consecutive_vars","collapse","stat_index","scanner","abort","hit","hit_stack","hit_index","handle_custom_scan_order","stop_after","find_stop","write_only","lvalues","replace_all","is_declared","pure_prop_access_globals","stop_if_hit","lhs_local","can_replace","value_def","candidate","funarg","may_modify","may_throw_on_access","may_throw","has_side_effects","side_effects_external","multi_replacer","extract_args","extract_candidates","get_lhs","get_lvalues","is_lhs_local","value_has_side_effects","replace_all_symbols","remove_candidate","has_overlapping_symbol","fn","fn_strict","found","scan_this","cur_scope","redefined_within_scope","referenced","var_def","mangleable_var","get_rvalue","min","unary_side_effects","seen_dirs","multiple_if_returns","has_multiple_if_returns","in_lambda","next_index","ab","can_merge_flow","aborts","negate","as_statement_array_with_return","extract_functions","prev_index","lct","loopcontrol_target","is_return_void","declarations_only","has_quit","extract_declarations_from_unreachable_code","seq","push_seq","to_simple_statement","decls","cons_seq","alt","join_object_assignments","defn","trimmed","diff","extract_object_assignments","target","remove_initializers","is_undefined","def_may_throw_on_access","_dot_throw","def_is_boolean","unary_bool","binary_bool","is_boolean","def_is_number","unary","binary","is_number","is_string","best_of_expression","ast1","ast2","best_of_statement","convert_to_predicate","def_find_defs","_find_defs","child","suffix","defines","to_node","object_fns","native_fns","Boolean","Number","static_fns","def_eval","_eval","unaryPrefix","evaluated","element","non_converting_unary","non_converting_binary","pow","global_objs","static_values","aa","first_arg","static_value","static_fn","native_fn","def_negate","basic_negation","negated","global_pure_fns","def_has_side_effects","any","is_call_pure","computed_key","def_may_throw","def_is_constant_expression","all_refs_local","scope_def","def_aborts","block_aborts","opt_AST_Lambda","r_keep_assign","retain_top_func","drop_funcs","drop_vars","assign_as_unused","in_use_ids","fixed_ids","var_defs_by_id","initializations","node_def","in_export","scan_ref_scoped","in_use","trim","unreferenced","template","drop_block","head","is_destructure","var_defs","assign","redef","dirs","hoisted","vars_found","var_decl","to_assignments","is_lambda","defs_by_id","hoister","make_sym","new_var","make_var_name","def_drop_side_effect_free","nodes","changed","with_effects","trimmed_extends","trimmed_prop","if_break_in_loop","is_break","drop_it","rest","self_condition_length","negated_length","negated_is_best","default_branch","exact_match","decl","eliminate_branch","default_index","has_break","varDef","inline_array_like_spread","simple_args","is_func","rx","EXIT","separator","consts","ast","fun","comp","compute_char_frequency","mangle_names","is_regular_func","can_inline","returned_value","nearest_scope","return_value","can_flatten_body","block_scoped","variable","safe_to_inject","can_inject_vars","can_inject_args","arg_vals_outer_refs","value_walker","scope_outer_refs","can_inject_args_values","is_reachable","can_inject_symbols","scope_encloses_variables_in_this_scope","add_child_scope","append_var","flatten_args","lines","flatten_vars","flatten_fn","ev","trim_right_for_undefined","lift_sequences","in_boolean_context","commutativeOperators","pulled_scope","looked_up","is_atomic","find_ref","reversible","is_strict_comparison","combined","ll","rr","lr","is_nullish","associative","reversed","within_array_or_object_literal","defun_def","lambda_def","value_length","name_length","overhead","undef","ASSIGN_OPS","ASSIGN_OPS_COMMUTATIVE","safe_to_flatten","literals_in_boolean_context","lift_key","evaluateRight","arg_index","single_arg_diff","check","check_subject","nullish_side","null_cmp","undefined_cmp","find_comparison","defined_side","is_nullish_check","in_bool","is_true","is_false","booleanize","OPT_ARGUMENTS","sub","flatten_object","retValue","FLATTEN","flatten","k","optimized","segment","inners","arrow","ancestors","is_destructuring_export_decl","keep","elem","should_retain","domprops","reserve_quoted_keys","addStrings","mangle_properties","reserved_option","builtins","debug","keep_quoted","only_cache","regex","objects","global_ref","new_global","Date","ArrayBuffer","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","JSON","Promise","Proxy","RangeError","ReferenceError","Reflect","SyntaxError","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakSet","getOwnPropertyNames","find_builtins","debug_name_suffix","names_to_mangle","keep_quoted_strict","declared","root","mangleStrings","can_mangle","should_mangle","mangled","debug_mangled","to_ascii","atob","b64","Buffer","from","to_base64","btoa","set_shorthand","init_cache","map_from_object","cache_to_json","files","quoted_props","timings","compress","enclose","nameCache","sourceMap","wrap","now","asObject","includeSources","url","warning","orig_line_diff","dest_line_diff","MOZ_SourceMap","SourceMapGenerator","sourceRoot","orig_map","SourceMapConsumer","sources","sourceContent","sourceContentFor","setSourceContent","gen_line","gen_col","orig_line","orig_col","originalPositionFor","column","addMapping","generated","original","stringify","toJSON","SourceMap","total","normalize_directives","MOZ_TO_ME","Program","M","my_start_token","my_end_token","from_moz","ArrayPattern","elm","ObjectPattern","AssignmentPattern","SpreadElement","argument","RestElement","TemplateElement","cooked","TemplateLiteral","quasis","TaggedTemplateExpression","quasi","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ExpressionStatement","TryStatement","handlers","handler","guardedHandlers","finalizer","Property","computed","MethodDefinition","FieldDefinition","ArrayExpression","ObjectExpression","SequenceExpression","MemberExpression","SwitchCase","VariableDeclaration","declarations","ImportDeclaration","specifiers","specifier","imported","local","ExportAllDeclaration","ExportNamedDeclaration","declaration","ExportDefaultDeclaration","Literal","pattern","rx_source","MetaProperty","meta","Identifier","FROM_MOZ_STACK","BigIntLiteral","raw_token","moznode","loc","range","moztype","mytype","propmap","moz_to_me","me_to_moz","moz","how","my","to_moz","to_moz_block","to_moz_scope","def_to_moz","UpdateExpression","UnaryExpression","ClassDeclaration","ClassExpression","superClass","to_moz_in_destructuring","guard","name_mapping","isComputed","string_or_num","to_mozilla_ast","mynode","from_mozilla_ast","save_stack","TO_MOZ_STACK"],"mappings":"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CACzD,IAAIioB,EAASiS,EAAWjS,OAAOjoB,GAC/B,IAAKioB,EAAQ,OAAO,EACpB,GAAU,IAANnqB,GAA0B,iBAAfmqB,EAAO/R,KAAtB,CACA,IAAK0/B,EAAU93C,GAAGoE,KAAK+lB,EAAO/R,MAC1B,OAAO,EAEXpY,KAEJ,OAAO,EA5BH+3C,CAA6B3b,GAAa,CAE9C,IADA,IAAI4b,EAAO,GACFz4C,EAAI,EAAGA,EAAIimB,EAAKvK,MAAM/Z,OAAQ3B,IAAK,CACxC,IAAI04C,EAAOzyB,EAAKvK,MAAM1b,GAChB04C,aAAgB98B,IACI,iBAAZ88B,EAAK30C,KACZ20C,EAAK10C,iBAAiB2V,KACrBg/B,EAAc9b,EAAY6b,EAAK10C,MAAMixB,eACzCwjB,EAAKr3C,KAAKs3C,GAGdD,EAAK92C,QAAUskB,EAAKvK,MAAM/Z,SAC1BskB,EAAKvK,MAAQ+8B,GAGrB,OAAOxyB,EAgBP,SAAS0yB,EAAc9b,EAAY/f,GAC/B,QAAIA,EAAIzI,WAAW1S,UACdmb,EAAIqa,UACL0F,EAAWjsB,SAAS2vB,QACf1D,EAAW2C,YACJ3C,EAAW2C,WAAW1iB,QCv6OvC,IAAI87B,GAAW,CAClB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,aACA,YACA,SACA,oBACA,iBACA,kBACA,WACA,2BACA,2BACA,uBACA,UACA,QACA,aACA,WACA,SACA,WACA,0BACA,eACA,uBACA,mBACA,iBACA,YACA,oBACA,eACA,iBACA,qBACA,mBACA,6BACA,QACA,cACA,OACA,QACA,cACA,wBACA,eACA,uBACA,gBACA,YACA,aACA,uBACA,mBACA,yBACA,OACA,yBACA,WACA,QACA,cACA,kBACA,gBACA,iBACA,uBACA,qBACA,kBACA,gBACA,YACA,OACA,OACA,eACA,YACA,YACA,YACA,OACA,wBACA,iBACA,cACA,eACA,OACA,oBACA,UACA,WACA,iBACA,kBACA,oBACA,mBACA,OACA,YACA,UACA,kBACA,MACA,eACA,qBACA,SACA,eACA,WACA,gBACA,QACA,SACA,UACA,oBACA,mBACA,oBACA,kBACA,eACA,iBACA,gCACA,gCACA,gCACA,+BACA,6BACA,aACA,iBACA,iBACA,iBACA,qBACA,eACA,qBACA,MACA,iBACA,iBACA,mBACA,sBACA,kBACA,2BACA,kBACA,gBACA,kBACA,mBACA,eACA,qBACA,mBACA,cACA,oBACA,UACA,cACA,sBACA,eACA,gBACA,kBACA,iBACA,WACA,eACA,0BACA,mBACA,kBACA,WACA,SACA,cACA,aACA,UACA,gBACA,UACA,UACA,kBACA,wBACA,sBACA,oBACA,yBACA,uBACA,wBACA,oBACA,qBACA,uBACA,sBACA,mBACA,WACA,SACA,YACA,SACA,cACA,UACA,aACA,eACA,SACA,SACA,aACA,SACA,iBACA,kBACA,sBACA,SACA,SACA,UACA,WACA,eACA,aACA,eACA,cACA,cACA,cACA,QACA,YACA,cACA,aACA,aACA,aACA,WACA,YACA,YACA,aACA,gBACA,kBACA,iBACA,iBACA,iBACA,cACA,UACA,iBACA,SACA,WACA,WACA,SACA,YACA,iBACA,kBACA,wBACA,SACA,KACA,iBACA,gBACA,2BACA,gBACA,oBACA,sBACA,gBACA,aACA,iBACA,YACA,iBACA,aACA,WACA,eACA,UACA,mBACA,UACA,cACA,gBACA,UACA,SACA,YACA,cACA,eACA,iBACA,WACA,WACA,OACA,YACA,gBACA,mBACA,aACA,mBACA,oBACA,kBACA,oBACA,aACA,cACA,gBACA,2BACA,aACA,kBACA,iBACA,iBACA,kBACA,eACA,WACA,uBACA,SACA,yBACA,gBACA,iCACA,6BACA,iCACA,8BACA,4CACA,8BACA,qBACA,YACA,WACA,eACA,oBACA,sBACA,YACA,oBACA,YACA,WACA,mBACA,UACA,UACA,cACA,kBACA,aACA,qBACA,uBACA,gBACA,eACA,eACA,sBACA,iBACA,iBACA,kBACA,wBACA,+BACA,uBACA,4BACA,8BACA,0BACA,yBACA,0BACA,2BACA,yBACA,4BACA,wBACA,0BACA,0BACA,yBACA,4BACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,gBACA,aACA,aACA,eACA,mBACA,kBACA,YACA,cACA,WACA,mBACA,oBACA,oBACA,oBACA,WACA,gBACA,mBACA,oBACA,eACA,uBACA,6BACA,qBACA,eACA,eACA,sBACA,iBACA,iBACA,eACA,cACA,WACA,iBACA,gBACA,gBACA,gBACA,sBACA,cACA,WACA,cACA,aACA,eACA,gBACA,eACA,gBACA,qBACA,iBACA,eACA,WACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,eACA,eACA,WACA,sBACA,WACA,gBACA,eACA,cACA,cACA,mBACA,cACA,sBACA,WACA,gBACA,WACA,eACA,WACA,cACA,eACA,WACA,cACA,kBACA,mBACA,WACA,cACA,oBACA,kBACA,WACA,oBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,kBACA,WACA,eACA,iBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,mBACA,mBACA,oBACA,kBACA,sBACA,4BACA,oBACA,WACA,aACA,kBACA,gBACA,mBACA,iBACA,eACA,iBACA,gBACA,cACA,cACA,cACA,eACA,qBACA,oBACA,oBACA,WACA,uBACA,eACA,WACA,cACA,gBACA,eACA,WACA,qBACA,gBACA,mBACA,mBACA,eACA,eACA,eACA,eACA,kBACA,WACA,aACA,eACA,WACA,oBACA,cACA,iBACA,YACA,WACA,qBACA,qBACA,mBACA,WACA,aACA,gBACA,oBACA,uBACA,sBACA,sBACA,sBACA,yBACA,uBACA,sBACA,uBACA,sBACA,wBACA,0BACA,yBACA,4BACA,yBACA,4BACA,sBACA,qBACA,qBACA,qBACA,uBACA,wBACA,WACA,6BACA,iCACA,kCACA,kCACA,8BACA,mCACA,4BACA,2BACA,2BACA,4BACA,2BACA,2BACA,mCACA,kCACA,6BACA,6BACA,6BACA,2BACA,qBACA,qBACA,6BACA,wBACA,qBACA,0BACA,qBACA,kCACA,2BACA,yBACA,mBACA,sBACA,0BACA,gCACA,qBACA,oBACA,4BACA,wBACA,0BACA,oBACA,sBACA,sBACA,yBACA,0BACA,wBACA,wBACA,2BACA,8BACA,qBACA,mBACA,sBACA,0BACA,wBACA,0BACA,0BACA,wBACA,oCACA,kCACA,iCACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,2BACA,wBACA,qBACA,6BACA,uBACA,wBACA,qBACA,wBACA,wBACA,0BACA,oCACA,kCACA,sBACA,4BACA,yBACA,oBACA,qBACA,4BACA,qBACA,yBACA,uBACA,sBACA,sBACA,yBACA,2BACA,0BACA,oBACA,wBACA,uBACA,sBACA,4BACA,6BACA,0BACA,+BACA,4BACA,4BACA,qBACA,6BACA,6BACA,4BACA,0BACA,uBACA,qBACA,qBACA,sBACA,6BACA,wBACA,sBACA,qBACA,yBACA,wBACA,wBACA,0BACA,yBACA,qBACA,sBACA,yBACA,2BACA,uBACA,wBACA,wBACA,wBACA,oBACA,4BACA,sBACA,qBACA,wBACA,wBACA,6BACA,qBACA,qBACA,oBACA,qBACA,uBACA,wBACA,yBACA,WACA,WACA,cACA,OACA,YACA,cACA,WACA,YACA,YACA,eACA,cACA,eACA,mBACA,uBACA,WACA,OACA,iBACA,YACA,sBACA,4BACA,mBACA,oBACA,yBACA,uBACA,gBACA,2BACA,WACA,mBACA,eACA,YACA,yBACA,IACA,uBACA,+BACA,eACA,QACA,eACA,QACA,aACA,eACA,cACA,wBACA,UACA,QACA,aACA,QACA,uBACA,UACA,eACA,SACA,kBACA,QACA,aACA,YACA,QACA,iBACA,cACA,cACA,WACA,UACA,UACA,gBACA,mBACA,gBACA,cACA,iBACA,0BACA,QACA,aACA,aACA,aACA,aACA,aACA,aACA,QACA,iBACA,2BACA,kBACA,sCACA,cACA,qCACA,qCACA,+CACA,uCACA,sBACA,uBACA,oCACA,oCACA,4CACA,0BACA,QACA,iBACA,aACA,WACA,wBACA,gBACA,OACA,YACA,OACA,YACA,WACA,aACA,aACA,eACA,eACA,aACA,WACA,WACA,WACA,uBACA,SACA,UACA,aACA,WACA,UACA,gBACA,eACA,eACA,oBACA,mBACA,mBACA,gBACA,eACA,mBACA,SACA,wBACA,WACA,YACA,aACA,WACA,aACA,kBACA,OACA,oBACA,oBACA,oBACA,kBACA,mBACA,gBACA,kBACA,sBACA,wBACA,kBACA,oBACA,oBACA,iBACA,qBACA,qBACA,mBACA,kBACA,sBACA,qBACA,oBACA,uBACA,iBACA,eACA,cACA,mBACA,sBACA,kBACA,6BACA,kBACA,mBACA,sBACA,gBACA,kBACA,qBACA,kBACA,oBACA,mBACA,mBACA,qBACA,oBACA,gBACA,mBACA,oBACA,kBACA,iBACA,qBACA,mBACA,kBACA,sBACA,kBACA,mBACA,iBACA,mBACA,oBACA,sBACA,oBACA,wBACA,oBACA,uBACA,mBACA,qBACA,iBACA,sBACA,2BACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,mBACA,0BACA,uBACA,sBACA,mBACA,sBACA,0BACA,sBACA,sBACA,kBACA,mBACA,mBACA,mBACA,qBACA,mBACA,kBACA,UACA,UACA,eACA,aACA,gBACA,gBACA,aACA,gBACA,cACA,YACA,qBACA,cACA,uBACA,aACA,gBACA,iBACA,WACA,cACA,iBACA,iBACA,mBACA,aACA,iBACA,wBACA,OACA,mCACA,iCACA,cACA,OACA,YACA,iBACA,MACA,WACA,WACA,WACA,sBACA,qBACA,wBACA,eACA,yBACA,gCACA,2BACA,wBACA,oBACA,oBACA,gBACA,mBACA,SACA,eACA,QACA,cACA,YACA,WACA,aACA,qBACA,iBACA,aACA,aACA,YACA,SACA,gBACA,OACA,4BACA,WACA,OACA,OACA,UACA,iBACA,gBACA,WACA,QACA,WACA,gBACA,uBACA,gCACA,uBACA,SACA,OACA,SACA,kBACA,uBACA,wBACA,QACA,YACA,aACA,aACA,cACA,OACA,OACA,MACA,SACA,UACA,SACA,QACA,UACA,WACA,YACA,UACA,cACA,iBACA,YACA,kBACA,mBACA,WACA,mCACA,4BACA,+BACA,wBACA,mBACA,0BACA,iCACA,mBACA,YACA,sBACA,qBACA,iCACA,6BACA,oBACA,oBACA,mBACA,sBACA,oBACA,8BACA,sBACA,sBACA,8BACA,sBACA,uBACA,uBACA,aACA,eACA,aACA,YACA,mBACA,YACA,kBACA,oBACA,mBACA,eACA,YACA,YACA,YACA,WACA,YACA,UACA,qBACA,oBACA,oBACA,oBACA,sBACA,mBACA,iBACA,mBACA,qBACA,uBACA,wBACA,qBACA,yBACA,sBACA,uBACA,qBACA,uBACA,2CACA,kCACA,qCACA,iCACA,gCACA,8BACA,2BACA,6BACA,+BACA,kCACA,kCACA,iCACA,gCACA,kCACA,kCACA,gCACA,yBACA,yBACA,yBACA,iCACA,yBACA,0BACA,0BACA,MACA,OACA,kBACA,eACA,8BACA,sBACA,aACA,gBACA,gBACA,uBACA,sBACA,kBACA,oBACA,uBACA,YACA,YACA,iBACA,sBACA,gBACA,cACA,cACA,kCACA,6BACA,mBACA,mBACA,wBACA,iBACA,eACA,cACA,UACA,WACA,gBACA,aACA,mBACA,eACA,oBACA,wBACA,uBACA,uBACA,6BACA,mBACA,wBACA,6BACA,gBACA,wBACA,aACA,wBACA,eACA,oBACA,oBACA,oBACA,iBACA,sBACA,uBACA,iBACA,sBACA,sBACA,sBACA,qBACA,cACA,kBACA,aACA,qBACA,eACA,aACA,eACA,qBACA,sBACA,iBACA,gBACA,eACA,gBACA,qBACA,qBACA,qBACA,iBACA,aACA,wBACA,eACA,yBACA,0BACA,0BACA,aACA,iBACA,eACA,iBACA,cACA,gBACA,yBACA,sBACA,YACA,mBACA,6BACA,8BACA,0BACA,2BACA,gBACA,kBACA,iBACA,uBACA,kBACA,mBACA,cACA,gBACA,iBACA,aACA,mBACA,yBACA,wBACA,yBACA,oBACA,eACA,qBACA,oBACA,gBACA,qBACA,wBACA,wBACA,8BACA,eACA,eACA,gBACA,gBACA,oBACA,kBACA,gBACA,mBACA,iBACA,gBACA,iBACA,UACA,wBACA,yBACA,oBACA,gBACA,cACA,eACA,iBACA,kBACA,oBACA,QACA,MACA,OACA,oBACA,SACA,aACA,cACA,wBACA,cACA,OACA,oBACA,gBACA,QACA,WACA,kBACA,gBACA,mBACA,oBACA,sBACA,SACA,WACA,8BACA,cACA,iCACA,MACA,eACA,YACA,cACA,qBACA,OACA,aACA,eACA,WACA,WACA,eACA,mBACA,SACA,eACA,WACA,MACA,2BACA,2BACA,sBACA,sBACA,sBACA,sBACA,OACA,SACA,UACA,6BACA,6BACA,gBACA,SACA,8BACA,sBACA,sBACA,SACA,iBACA,gBACA,iBACA,YACA,YACA,kBACA,kBACA,oBACA,4BACA,4BACA,mCACA,mCACA,gCACA,gCACA,uCACA,uCACA,qBACA,gCACA,gCACA,qBACA,8BACA,8BACA,qBACA,qBACA,kBACA,kBACA,UACA,oBACA,aACA,KACA,gBACA,SACA,wBACA,sBACA,uBACA,uBACA,oBACA,OACA,oBACA,8BACA,kBACA,sBACA,eACA,mBACA,aACA,SACA,cACA,mBACA,kBACA,qBACA,wBACA,4BACA,oBACA,eACA,SACA,cACA,gBACA,oBACA,wBACA,gBACA,UACA,mBACA,QACA,cACA,mBACA,IACA,YACA,qBACA,iBACA,YACA,gBACA,aACA,WACA,UACA,eACA,0BACA,uBACA,yBACA,0BACA,0BACA,sBACA,+BACA,wBACA,4BACA,qBACA,WACA,yCACA,wBACA,8BACA,yCACA,8BACA,2BACA,SACA,UACA,MACA,SACA,UACA,OACA,QACA,WACA,qBACA,4BACA,sBACA,kBACA,4BACA,iBACA,eACA,wBACA,iBACA,gBACA,QACA,aACA,iBACA,mBACA,OACA,iBACA,SACA,UACA,WACA,aACA,eACA,UACA,2BACA,iBACA,kBACA,yBACA,wBACA,WACA,kBACA,cACA,eACA,mBACA,iBACA,aACA,YACA,eACA,eACA,SACA,gBACA,iBACA,uBACA,mBACA,kBACA,cACA,2BACA,aACA,QACA,UACA,WACA,iBACA,qBACA,eACA,gBACA,yBACA,qBACA,eACA,cACA,wBACA,gBACA,8BACA,YACA,OACA,aACA,eACA,UACA,QACA,SACA,YACA,qBACA,YACA,eACA,iBACA,cACA,qBACA,oBACA,oBACA,+BACA,+BACA,mBACA,0BACA,yBACA,eACA,qBACA,sBACA,eACA,eACA,gBACA,iBACA,0BACA,0BACA,cACA,eACA,qBACA,oBACA,cACA,cACA,aACA,gBACA,gBACA,cACA,wBACA,qBACA,yBACA,WACA,yBACA,oBACA,0BACA,6BACA,mBACA,qBACA,yBACA,qBACA,oBACA,wBACA,oBACA,wBACA,iCACA,kBACA,oBACA,2BACA,sBACA,mBACA,qBACA,WACA,sCACA,mBACA,iBACA,iBACA,oBACA,cACA,aACA,qBACA,yBACA,oBACA,eACA,oBACA,0BACA,gCACA,wBACA,6BACA,8BACA,8BACA,2BACA,yBACA,oBACA,oBACA,oBACA,oBACA,oBACA,2BACA,oBACA,oBACA,wBACA,yBACA,qBACA,yBACA,+BACA,wBACA,mBACA,yBACA,mBACA,iBACA,qBACA,2BACA,yBACA,wBACA,wBACA,0BACA,cACA,qBACA,kBACA,qBACA,qBACA,qBACA,kBACA,kBACA,YACA,gBACA,iBACA,2BACA,kBACA,mBACA,iBACA,YACA,qBACA,yBACA,YACA,gBACA,WACA,iBACA,aACA,mBACA,mBACA,sBACA,4BACA,4BACA,kCACA,kCACA,gCACA,gCACA,sCACA,sCACA,sBACA,gCACA,gCACA,sBACA,8BACA,8BACA,iBACA,sBACA,sBACA,oBACA,WACA,eACA,oBACA,qBACA,yBACA,2BACA,UACA,iBACA,qBACA,gBACA,mBACA,gBACA,iBACA,gBACA,kBACA,mBACA,mBACA,iBACA,kBACA,wBACA,iBACA,qBACA,4BACA,kBACA,eACA,mBACA,eACA,gBACA,kBACA,iBACA,cACA,gBACA,eACA,oBACA,qBACA,oBACA,wBACA,4BACA,gBACA,gBACA,gBACA,gBACA,sBACA,6BACA,yBACA,kCACA,wBACA,yBACA,oBACA,uBACA,oBACA,yBACA,8BACA,+BACA,0BACA,8BACA,6BACA,8BACA,uBACA,2BACA,8BACA,4BACA,0BACA,2BACA,8BACA,0BACA,8BACA,2BACA,mCACA,0CACA,gCACA,kCACA,iCACA,wCACA,qCACA,wCACA,sCACA,qCACA,uCACA,sCACA,gCACA,8BACA,+BACA,gCACA,mCACA,+BACA,wBACA,oBACA,qBACA,qBACA,oBACA,oBACA,wBACA,oBACA,4BACA,oBACA,oBACA,yBACA,8BACA,0BACA,iCACA,0BACA,yBACA,4BACA,qBACA,yBACA,4BACA,uBACA,wBACA,0BACA,iCACA,gCACA,kCACA,6BACA,qBACA,yBACA,kCACA,wBACA,oBACA,iCACA,yBACA,6BACA,sCACA,+BACA,kCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCACA,uBACA,2BACA,0BACA,2BACA,0BACA,wBACA,yBACA,uBACA,uBACA,sBACA,sBACA,sBACA,0BACA,wBACA,mCACA,iCACA,8BACA,kCACA,wBACA,+BACA,qBACA,yBACA,yBACA,yBACA,aACA,aACA,SACA,oBACA,SACA,sBACA,kBACA,+BACA,YACA,gBACA,yBACA,4BACA,qBACA,MACA,aACA,eACA,qBACA,uBACA,2BACA,gBACA,UACA,eACA,SACA,aACA,iBACA,eACA,SACA,cACA,YACA,4BACA,8BACA,8BACA,4BACA,6BACA,+BACA,UACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,aACA,qBACA,2BACA,mBACA,8BACA,8BACA,8BACA,8BACA,8BACA,8BACA,qBACA,6BACA,qBACA,iBACA,iBACA,YACA,UACA,cACA,gBACA,2BACA,WACA,YACA,eACA,iBACA,oBACA,WACA,oBACA,gBACA,cACA,gBACA,OACA,cACA,cACA,YACA,cACA,YACA,eACA,mBACA,gBACA,YACA,aACA,QACA,aACA,YACA,aACA,kBACA,aACA,YACA,UACA,WACA,cACA,eACA,0BACA,wBACA,+BACA,+BACA,mBACA,qCACA,sBACA,iCACA,oBACA,SACA,gBACA,eACA,iBACA,yBACA,yBACA,uBACA,6BACA,cACA,WACA,MACA,kBACA,eACA,mBACA,MACA,cACA,cACA,aACA,oBACA,qBACA,+BACA,qBACA,kBACA,iBACA,iBACA,SACA,UACA,iBACA,cACA,qCACA,oCACA,8BACA,iCACA,8BACA,2BACA,6BACA,2BACA,gBACA,WACA,gBACA,UACA,WACA,gBACA,SACA,YACA,gBACA,mBACA,qBACA,wBACA,uBACA,qBACA,qBACA,iBACA,UACA,UACA,kBACA,cACA,oBACA,mBACA,eACA,oBACA,wBACA,cACA,6BACA,eACA,uBACA,mBACA,uBACA,oBACA,sBACA,uBACA,wBACA,yBACA,kBACA,sBACA,0BACA,gBACA,gBACA,sBACA,6BACA,wBACA,kBACA,oBACA,yBACA,kBACA,wCACA,cACA,mBACA,qBACA,yBACA,wBACA,YACA,aACA,SACA,SACA,cACA,iBACA,4BACA,0BACA,8BACA,uBACA,gBACA,qCACA,iBACA,iBACA,kBACA,kBACA,cACA,gBACA,OACA,SACA,SACA,mBACA,mBACA,mBACA,mBACA,UACA,YACA,gBACA,IACA,QACA,OACA,QACA,MACA,WACA,eACA,+BACA,cACA,SACA,gBACA,aACA,YACA,iBACA,WACA,OACA,QACA,SACA,YACA,SACA,aACA,gBACA,sBACA,oBACA,gBACA,MACA,cACA,eACA,eACA,SACA,aACA,mBACA,YACA,gBACA,aACA,kBACA,YACA,cACA,WACA,cACA,UACA,aACA,WACA,YACA,UACA,kBACA,kBACA,YACA,eACA,WACA,sBACA,aACA,iBACA,kBACA,SACA,YACA,MACA,UACA,QACA,YACA,QACA,gBACA,cACA,aACA,eACA,aACA,YACA,oBACA,aACA,MACA,aACA,kBACA,oBACA,QACA,MACA,cACA,UACA,SACA,UACA,WACA,mBACA,YACA,kBACA,SACA,aACA,eACA,UACA,QACA,UACA,UACA,uBACA,gCACA,sBACA,iBACA,YACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,4BACA,iBACA,qBACA,oBACA,oBACA,0BACA,gBACA,qBACA,qBACA,0BACA,mBACA,cACA,MACA,MACA,cACA,kBACA,UACA,mBACA,aACA,SACA,eACA,cACA,aACA,aACA,eACA,cACA,aACA,eACA,kBACA,oBACA,UACA,mBACA,QACA,eACA,MACA,QACA,UACA,QACA,YACA,cACA,OACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,OACA,cACA,eACA,eACA,cACA,SACA,aACA,WACA,kBACA,gBACA,qBACA,oBACA,aACA,cACA,gBACA,aACA,iBACA,eACA,cACA,YACA,WACA,cACA,YACA,WACA,aACA,eACA,YACA,WACA,OACA,OACA,UACA,IACA,OACA,sBACA,qBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,oBACA,kBACA,uBACA,sBACA,iBACA,kBACA,kBACA,mBACA,qBACA,sBACA,sBACA,mBACA,iBACA,WACA,UACA,iBACA,iBACA,WACA,aACA,UACA,UACA,gBACA,UACA,OACA,eACA,iBACA,YACA,WACA,iBACA,eACA,eACA,OACA,gBACA,UACA,eACA,OACA,MACA,aACA,OACA,qBACA,aACA,kBACA,mBACA,cACA,aACA,gBACA,wBACA,YACA,oBACA,QACA,OACA,iBACA,OACA,OACA,OACA,WACA,OACA,YACA,eACA,SACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,eACA,oBACA,yBACA,0BACA,oBACA,oBACA,iBACA,cACA,kBACA,mBACA,cACA,oBACA,oBACA,mBACA,oBACA,mBACA,aACA,kBACA,kBACA,kBACA,eACA,cACA,mBACA,mBACA,mBACA,gBACA,cACA,YACA,iBACA,sBACA,uBACA,iBACA,iBACA,cACA,SACA,eACA,QACA,gBACA,qBACA,iBACA,eACA,cACA,gBACA,SACA,uBACA,aACA,aACA,qBACA,YACA,YACA,aACA,cACA,cACA,kBACA,OACA,UACA,SACA,aACA,cACA,aACA,gBACA,WACA,iBACA,UACA,cACA,SACA,WACA,UACA,aACA,aACA,IACA,OACA,SACA,iBACA,eACA,cACA,kBACA,cACA,cACA,SACA,uBACA,eACA,wBACA,aACA,YACA,SACA,UACA,eACA,cACA,UACA,gBACA,oBACA,yBACA,sBACA,OACA,QACA,WACA,OACA,KACA,OACA,YACA,cACA,cACA,QACA,KACA,QACA,QACA,YACA,iBACA,UACA,eACA,mBACA,wBACA,OACA,SACA,WACA,aACA,YACA,gBACA,wBACA,eACA,WACA,eACA,UACA,iBACA,yBACA,oBACA,gBACA,UACA,oBACA,YACA,aACA,WACA,SACA,aACA,OACA,YACA,YACA,UACA,QACA,kBACA,aACA,YACA,aACA,iBACA,gBACA,aACA,gBACA,kBACA,YACA,uBACA,cACA,eACA,eACA,aACA,QACA,aACA,eACA,oBACA,aACA,aACA,cACA,YACA,cACA,UACA,UACA,OACA,YACA,YACA,aACA,WACA,WACA,gBACA,YACA,WACA,UACA,gBACA,QACA,gBACA,YACA,aACA,QACA,YACA,SACA,UACA,MACA,QACA,MACA,OACA,WACA,cACA,WACA,UACA,WACA,gBACA,kBACA,YACA,UACA,QACA,QACA,sBACA,8BACA,aACA,qBACA,4BACA,YACA,YACA,OACA,cACA,aACA,YACA,eACA,aACA,kBACA,kBACA,kBACA,aACA,cACA,UACA,UACA,oBACA,0BACA,UACA,wBACA,0BACA,mBACA,cACA,eACA,aACA,aACA,UACA,gBACA,WACA,qBACA,uBACA,yBACA,uBACA,0BACA,SACA,gBACA,iBACA,iBACA,gBACA,UACA,qBACA,uCACA,kCACA,UACA,aACA,eACA,YACA,aACA,kBACA,UACA,cACA,qBACA,cACA,YACA,WACA,eACA,UACA,kBACA,kBACA,kBACA,oBACA,mBACA,cACA,gBACA,UACA,cACA,cACA,WACA,aACA,UACA,aACA,WACA,0BACA,SACA,gBACA,SACA,kBACA,iBACA,oBACA,gBACA,aACA,uBACA,0BACA,MACA,OACA,QACA,oBACA,gBACA,mBACA,eACA,WACA,kBACA,SACA,iBACA,eACA,kBACA,oBACA,qBACA,eACA,qBACA,qBACA,sBACA,gBACA,sBACA,wBACA,gBACA,2BACA,qBACA,kBACA,mBACA,oBACA,cACA,kBACA,iBACA,yBACA,qBACA,2BACA,gBACA,kBACA,wBACA,cACA,oBACA,mBACA,oBACA,iBACA,aACA,iBACA,qBACA,oBACA,kBACA,cACA,uBACA,uBACA,2BACA,kBACA,+BACA,0BACA,oBACA,mBACA,qBACA,qBACA,oBACA,kBACA,cACA,mBACA,eACA,gBACA,qBACA,cACA,8BACA,gBACA,uBACA,cACA,wBACA,qBACA,iBACA,kBACA,kBACA,kBACA,yBACA,yBACA,4BACA,kCACA,kCACA,wCACA,wCACA,sCACA,sCACA,4CACA,4CACA,4BACA,sCACA,sCACA,4BACA,oCACA,oCACA,4BACA,4BACA,iBACA,gBACA,qBACA,+BACA,wBACA,gBACA,eACA,mBACA,qBACA,mBACA,cACA,cACA,cACA,iBACA,kBACA,gBACA,cACA,kBACA,mBACA,mBACA,eACA,cACA,SACA,MACA,WACA,WACA,UACA,eACA,UACA,WACA,OACA,WACA,cACA,cACA,eACA,gBACA,aACA,eACA,eACA,gBACA,cACA,mBACA,cACA,SACA,QACA,cACA,KACA,KACA,IACA,OACA,UACA,eACA,eACA,UACA,eACA,WACA,UACA,WACA,KACA,QACA,kBACA,UACA,SACA,kBACA,YACA,qBACA,eACA,UACA,UACA,iBACA,iBACA,eACA,sBACA,mBACA,kBACA,gBACA,aACA,eACA,cACA,gBACA,QACA,sBACA,sBACA,mBACA,iBACA,YACA,SACA,eACA,gBACA,aACA,iBACA,aACA,iBACA,oBACA,qBACA,cACA,eACA,oBACA,gBACA,qBACA,YACA,aACA,eACA,cACA,cACA,gBACA,uBACA,WACA,eACA,iBACA,oBACA,QACA,YACA,SACA,SACA,SACA,YACA,YACA,aACA,aACA,YACA,cACA,cACA,aACA,cACA,iBACA,SACA,cACA,eACA,SACA,SACA,mBACA,aACA,aACA,kBACA,SACA,aACA,MACA,UACA,YACA,SACA,UACA,2BACA,WACA,kBACA,aACA,gBACA,UACA,gBACA,UACA,SACA,WACA,WACA,aACA,WACA,UACA,WACA,kBACA,eACA,cACA,UACA,oBACA,cACA,cACA,cACA,2BACA,6BACA,iBACA,aACA,SACA,kBACA,oBACA,oBACA,mBACA,OACA,gBACA,WACA,WACA,YACA,aACA,2BACA,sBACA,eACA,6BACA,oBACA,YACA,oBACA,sBACA,sBACA,qBACA,aACA,qBACA,WACA,OACA,YACA,WACA,SACA,QACA,KACA,KACA,SACA,IACA,WACA,gBACA,cACA,mBACA,WACA,YACA,UACA,QACA,SACA,QACA,cACA,aACA,SACA,mBACA,0BACA,0BACA,UACA,gBACA,SACA,YACA,qBACA,WACA,UACA,UACA,MACA,eACA,aACA,eACA,cACA,YACA,UACA,QACA,WACA,WACA,UACA,YACA,YACA,oBACA,QACA,YACA,SACA,OACA,WACA,QACA,aACA,QACA,YACA,OACA,cACA,sBACA,aACA,iBACA,kBACA,MACA,SACA,yBACA,UACA,YACA,aACA,yBACA,QACA,WACA,+BACA,YACA,SACA,aACA,aACA,eACA,WACA,4BACA,kBACA,cACA,IACA,OACA,eACA,WACA,aACA,0BACA,WACA,QACA,QACA,aACA,UACA,UACA,kBACA,aACA,mBACA,WACA,WACA,kBACA,WACA,QACA,OACA,eACA,YACA,cACA,WACA,WACA,YACA,WACA,SACA,aACA,aACA,cACA,UACA,UACA,OACA,YACA,WACA,WACA,SACA,YACA,aACA,oBACA,YACA,QACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,YACA,gBACA,WACA,WACA,aACA,WACA,QACA,QACA,QACA,cACA,gBACA,aACA,eACA,QACA,QACA,QACA,YACA,cACA,OACA,cACA,wBACA,eACA,yBACA,YACA,mBACA,eACA,aACA,iBACA,eACA,0BACA,oBACA,0BACA,yBACA,uBACA,wBACA,cACA,aACA,sBACA,cACA,uBACA,WACA,iBACA,uBACA,cACA,YACA,gBACA,cACA,wBACA,kBACA,uBACA,uBACA,qBACA,sBACA,aACA,YACA,QACA,WACA,MACA,UACA,cACA,OACA,aACA,cACA,aACA,iBACA,aACA,SACA,gBACA,QACA,UACA,KACA,QACA,cACA,eACA,eACA,0BACA,uBACA,SACA,YACA,SACA,YACA,oBACA,OACA,eACA,gBACA,cACA,YACA,SACA,aACA,oBACA,oBACA,KACA,KACA,OACA,UACA,QACA,iBACA,cACA,iBACA,kBACA,cACA,gBACA,MACA,kBACA,mBACA,kBACA,SACA,wBACA,YACA,cACA,qBACA,oBACA,eACA,iBACA,mBACA,qBACA,iBACA,UACA,aACA,UACA,cACA,wBACA,qBACA,uBACA,wBACA,sBACA,SACA,+BACA,iBACA,uBACA,gBACA,iBACA,6BACA,mBACA,wBACA,mBACA,aACA,uBACA,kBACA,eACA,aACA,qBACA,iBACA,UACA,mBACA,UACA,SACA,0BACA,gCACA,sBACA,cACA,iBACA,yBACA,oBACA,uBACA,yBACA,mBACA,uBACA,aACA,mBACA,mBACA,WACA,eACA,kBACA,aACA,UACA,aACA,aACA,wBACA,yBACA,gBACA,oCACA,uBACA,cACA,cACA,WACA,eACA,WACA,WACA,UACA,sBACA,UACA,WACA,SACA,cACA,kBACA,WACA,qBACA,cACA,cACA,kBACA,aACA,mBACA,WACA,eACA,iBACA,cACA,mBACA,mCACA,mBACA,2BACA,sBACA,wBACA,eACA,qBACA,mBACA,gBACA,uBACA,2BACA,oBACA,oBACA,sBACA,sBACA,sBACA,uBACA,mBACA,iBACA,mBACA,kBACA,aACA,eACA,eACA,kBACA,mBACA,2BACA,oBACA,UACA,oBACA,iBACA,eACA,aACA,eACA,aACA,mBACA,qBACA,2BACA,kBACA,oBACA,eACA,aACA,2BACA,yBACA,eACA,WACA,oBACA,gBACA,iBACA,qBACA,kBACA,yBACA,kBACA,UACA,oBACA,iBACA,eACA,YACA,wBACA,aACA,YACA,iBACA,cACA,qBACA,gBACA,cACA,gBACA,YACA,YACA,WACA,aACA,qBACA,eACA,YACA,aACA,mBACA,kBACA,wBACA,0BACA,iBACA,mBACA,UACA,YACA,SACA,cACA,2BACA,6BACA,2BACA,WACA,KACA,oBACA,gBACA,WACA,QACA,QACA,iBACA,WACA,sBACA,MACA,eACA,iBACA,gBACA,gBACA,iBACA,eACA,aACA,WACA,YACA,iBACA,OACA,OACA,UACA,UACA,SACA,SACA,OACA,YACA,OACA,OACA,UACA,kBACA,kBACA,qBACA,OACA,WACA,OACA,WACA,SACA,wBACA,UACA,WACA,YACA,cACA,QACA,QACA,qBACA,oBACA,OACA,KACA,aACA,WACA,YACA,aACA,oBACA,kBACA,mBACA,iBACA,SACA,WACA,UACA,iBACA,YACA,aACA,mBACA,UACA,OACA,OACA,MACA,MACA,kCACA,UACA,WACA,cACA,gBACA,QACA,aACA,UACA,YACA,sBACA,sBACA,OACA,OACA,qBACA,sBACA,qBACA,iBACA,mBACA,uBACA,kBACA,WACA,wBACA,6BACA,gBACA,iBACA,YACA,iBACA,mBACA,sBACA,eACA,oBACA,0BACA,mBACA,iBACA,uBACA,sBACA,oBACA,mBACA,oBACA,gBACA,0BACA,mBACA,oBACA,oBACA,sBACA,yBACA,mBACA,gBACA,gBACA,iBACA,sBACA,cACA,2BACA,4BACA,uBACA,iBACA,cACA,aACA,gBACA,QACA,YACA,cACA,YACA,aACA,QACA,cACA,gBACA,cACA,wBACA,qBACA,qBACA,eACA,aACA,aACA,mBACA,aACA,YACA,aACA,eACA,YACA,iBACA,iBACA,iBACA,WACA,uBACA,UACA,aACA,KACA,OACA,cACA,UACA,6BACA,WACA,2BACA,SACA,cACA,cACA,oBACA,6BACA,gBACA,qBACA,aACA,YACA,UACA,cACA,eACA,WACA,gBACA,WACA,cACA,OACA,aACA,YACA,QACA,cACA,QACA,SACA,gBACA,gBACA,iBACA,kBACA,kBACA,YACA,YACA,qBACA,8BACA,gBACA,iBACA,gBACA,aACA,WACA,WACA,cACA,aACA,YACA,YACA,kBACA,SACA,YACA,UACA,OACA,SACA,WACA,UACA,YACA,WACA,YACA,cACA,WACA,cACA,WACA,OACA,OACA,kBACA,iBACA,KACA,KACA,KACA,KACA,eACA,oBACA,oBACA,UACA,MACA,UACA,SACA,gBACA,kBACA,cACA,UACA,YACA,UACA,WACA,OACA,UACA,OACA,OACA,QACA,SACA,OACA,WACA,YACA,eACA,YACA,mBACA,cACA,YACA,cACA,YACA,qBACA,kBACA,eACA,mBACA,WACA,YACA,YACA,oBACA,WACA,SACA,SACA,aACA,aACA,iBACA,iBACA,iBACA,iBACA,SACA,OACA,cACA,aACA,SACA,eACA,mBACA,iBACA,gBACA,QACA,iBACA,gBACA,oBACA,OACA,cACA,YACA,YACA,UACA,iBACA,aACA,WACA,aACA,SACA,YACA,0BACA,SACA,OACA,YACA,cACA,QACA,OACA,aACA,mBACA,sBACA,kBACA,YACA,iBACA,oBACA,gBACA,WACA,OACA,eACA,iBACA,YACA,SACA,mBACA,YACA,eACA,SACA,gBACA,WACA,cACA,OACA,aACA,MACA,QACA,QACA,OACA,cACA,cACA,WACA,YACA,qBACA,eACA,OACA,UACA,YACA,UACA,MACA,QACA,aACA,YACA,SACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,WACA,MACA,UACA,SACA,gBACA,cACA,eACA,aACA,eACA,eACA,aACA,cACA,YACA,cACA,OACA,SACA,aACA,aACA,gBACA,eACA,YACA,eACA,YACA,eACA,cACA,cACA,cACA,QACA,OACA,YACA,mBACA,WACA,YACA,QACA,aACA,cACA,UACA,SACA,kBACA,MACA,aACA,YACA,kBACA,kBACA,0BACA,cACA,cACA,YACA,YACA,iBACA,WACA,WACA,UACA,cACA,QACA,oBACA,eACA,eACA,aACA,YACA,YACA,cACA,SACA,UACA,kBACA,UACA,eACA,kBACA,UACA,SACA,WACA,YACA,MACA,aACA,YACA,cACA,YACA,WACA,WACA,aACA,iBACA,eACA,OACA,SACA,QACA,OACA,SACA,UACA,YACA,gBACA,gBACA,iBACA,cACA,WACA,UACA,YACA,SACA,iBACA,oBACA,cACA,SACA,wBACA,UACA,UACA,mBACA,sBACA,qBACA,0BACA,sBACA,iCACA,mBACA,6BACA,iBACA,aACA,cACA,sBACA,sBACA,6BACA,YACA,UACA,gBACA,mBACA,qBACA,cACA,iBACA,gBACA,gBACA,uBACA,uBACA,YACA,gBACA,eACA,eACA,iBACA,kBACA,cACA,aACA,YACA,2BACA,eACA,kBACA,kBACA,iBACA,iBACA,UACA,eACA,WACA,YACA,qBACA,qBACA,eACA,eACA,YACA,iBACA,gBACA,mBACA,kBACA,SACA,wBACA,qBACA,oBACA,cACA,mBACA,qBACA,uBACA,2BACA,YACA,2BACA,uBACA,wBACA,eACA,qBACA,gBACA,eACA,YACA,eACA,eACA,aACA,uBACA,mBACA,qBACA,cACA,mBACA,uBACA,sBACA,sBACA,4BACA,kBACA,uBACA,uBACA,4BACA,uBACA,qBACA,6BACA,YACA,mBACA,gCACA,uBACA,mBACA,UACA,wBACA,sBACA,qBACA,wBACA,wBACA,oBACA,0BACA,wBACA,mBACA,eACA,WACA,eACA,sBACA,qBACA,mBACA,iBACA,aACA,eACA,SACA,cACA,kBACA,aACA,kBACA,iBACA,iBACA,cACA,aACA,iBACA,sBACA,aACA,aACA,aACA,wBACA,sBACA,sBACA,oBACA,qBACA,2BACA,wBACA,eACA,oBACA,mBACA,gBACA,YACA,iBACA,gBACA,aACA,WACA,uBACA,wBACA,wBACA,uBACA,YACA,0BACA,aACA,cACA,sBACA,iBACA,cACA,SACA,cACA,oBACA,6BACA,eACA,oBACA,mBACA,gBACA,kBACA,gBACA,sBACA,mBACA,6BACA,kBACA,mBACA,mBACA,0BACA,0BACA,sBACA,aACA,mBACA,mBACA,gBACA,oBACA,oBACA,oBACA,oBACA,gBACA,sBACA,sBACA,mBACA,gBACA,gBACA,sBACA,iBACA,iBACA,sBACA,0BACA,mBACA,WACA,gBACA,gBACA,gCACA,+BACA,iCACA,gCACA,cACA,oBACA,mBACA,eACA,oBACA,uBACA,uBACA,6BACA,sBACA,gCACA,eACA,oBACA,aACA,eACA,gBACA,sBACA,SACA,WACA,KACA,aACA,oBACA,YACA,WACA,WACA,eACA,cACA,QACA,IACA,OACA,WACA,YACA,iBACA,QACA,eACA,aACA,gBACA,eACA,WACA,aACA,iBACA,kBACA,YACA,OACA,yBACA,WACA,WACA,eACA,WACA,eACA,SACA,WACA,yBACA,aACA,UACA,OACA,qBACA,WACA,WACA,cACA,WACA,SACA,WACA,UACA,aACA,SACA,WACA,WACA,YACA,YACA,wBACA,eACA,YACA,OACA,cACA,UACA,SACA,MACA,aACA,SACA,mBACA,iBACA,gBACA,kBACA,cACA,mBACA,SACA,aACA,kBACA,YACA,iBACA,cACA,mBACA,UACA,KACA,qBACA,SACA,eACA,aACA,aACA,eACA,YACA,cACA,UACA,UACA,KACA,SACA,WACA,aACA,kBACA,SACA,UACA,aACA,WACA,cACA,aACA,eACA,uBACA,gBACA,aACA,iBACA,eACA,iBACA,sBACA,mBACA,eACA,cACA,qBACA,oBACA,gBACA,gBACA,wBACA,iBACA,iBACA,YACA,SACA,WACA,aACA,WACA,WACA,wBACA,wBACA,0BACA,YACA,mBACA,OACA,eACA,WACA,mBACA,uBACA,aACA,UACA,UACA,4BACA,aACA,gBACA,kBACA,SACA,cACA,QACA,kBACA,gBACA,mBACA,oBACA,aACA,eACA,gBACA,iBACA,sBACA,oBACA,0BACA,YACA,gBACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,cACA,QACA,UACA,UACA,UACA,gBACA,SACA,iBACA,WACA,UACA,YACA,aACA,qBACA,oBACA,kBACA,eACA,iBACA,sBACA,eACA,SACA,iBACA,6BACA,aACA,UACA,YACA,YACA,aACA,UACA,mBACA,mBACA,gBACA,SACA,eACA,mBACA,YACA,cACA,gBACA,uBACA,OACA,SACA,YACA,cACA,eACA,eACA,cACA,aACA,cACA,YACA,eACA,SACA,YACA,cACA,wBACA,uBACA,yBACA,yBACA,wBACA,kBACA,uBACA,sBACA,oBACA,uBACA,iBACA,kBACA,mBACA,iBACA,wBACA,mBACA,yBACA,+BACA,cACA,wBACA,oBACA,kBACA,mBACA,mBACA,mBACA,kBACA,iBACA,kBACA,gBACA,kCACA,qBACA,sBACA,YACA,aACA,aACA,YACA,WACA,SACA,sBACA,eACA,aACA,aACA,UACA,UACA,SACA,YACA,sBACA,kBACA,gBACA,iBACA,iBACA,sBACA,qBACA,gBACA,eACA,gBACA,cACA,aACA,aACA,mBACA,eACA,qBACA,iBACA,gBACA,UACA,WACA,cACA,gBACA,6BACA,WACA,WACA,aACA,YACA,eACA,iBACA,WACA,WACA,WACA,YACA,WACA,oBACA,gBACA,SACA,yBACA,aACA,eACA,cACA,gBACA,YACA,UACA,gBACA,SACA,YACA,kBACA,WACA,YACA,YACA,cACA,YACA,eACA,WACA,gBACA,aACA,cACA,eACA,kBACA,WACA,gBACA,kBACA,kBACA,kBACA,kBACA,iBACA,YACA,YACA,uBACA,6BACA,yBACA,iDACA,2BACA,0BACA,mBACA,mBACA,qBACA,kBACA,4BACA,4CACA,4BACA,2BACA,mCACA,wBACA,UACA,SACA,UACA,OACA,aACA,eACA,gBACA,SACA,QACA,gBACA,WACA,MACA,UACA,UACA,QACA,SACA,SACA,UACA,MACA,SACA,cACA,aACA,cACA,SACA,iBACA,UACA,QACA,YACA,cACA,YACA,aACA,UACA,gBACA,iBACA,gBACA,gBACA,eACA,gBACA,eACA,eACA,eACA,WACA,aACA,aACA,YACA,YACA,mBACA,aACA,gBACA,eACA,YACA,YACA,kBACA,gBACA,KACA,KACA,KACA,KACA,MACA,UACA,iBACA,eACA,gBACA,cACA,gBACA,cACA,eACA,aACA,OACA,mBACA,oBACA,oBACA,iBACA,kBACA,kBACA,YACA,QACA,cACA,QACA,cACA,QACA,cACA,aACA,gBACA,YACA,UACA,eACA,SACA,gBACA,aACA,aACA,mBACA,iBACA,eACA,QACA,aACA,kBACA,WACA,eACA,UACA,WACA,YACA,OACA,aACA,cACA,cACA,sBACA,WACA,UACA,sBACA,kBACA,mBACA,eACA,QACA,kBACA,cACA,SACA,UACA,cACA,aACA,YACA,cACA,cACA,qBACA,oBACA,qBACA,oBACA,QACA,OACA,QACA,cACA,aACA,cACA,YACA,aACA,cACA,WACA,yBACA,yBACA,aACA,cACA,WACA,OACA,eACA,gBACA,eACA,SACA,UACA,cACA,QACA,iBACA,6BACA,iBACA,gBACA,YACA,qBACA,cACA,SACA,YACA,YACA,YACA,gBACA,MACA,sBACA,kBACA,iBACA,OACA,QACA,QACA,QACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,gBACA,YACA,cACA,SACA,MACA,WACA,kBACA,YACA,yBACA,yBACA,SACA,UACA,UACA,gBACA,sBACA,4BACA,UACA,WACA,YACA,iBACA,oBACA,yBACA,eACA,eACA,gBACA,kBACA,oBACA,aACA,gBACA,iBACA,aACA,QACA,aACA,0BACA,UACA,oBACA,UACA,aACA,UACA,aACA,WACA,SACA,aACA,uBACA,eACA,WACA,eACA,YACA,cACA,gBACA,WACA,YACA,YACA,OACA,mBACA,YACA,MACA,eACA,mBACA,YACA,sBACA,uBACA,oBACA,wBACA,mBACA,oBACA,gBACA,mBACA,QACA,SACA,IACA,KACA,KACA,OACA,aACA,UACA,UACA,SACA,QACA,aACA,WACA,WACA,cACA,gBACA,cACA,iBACA,OACA,QACA,MACA,OACA,oBACA,qBACA,aACA,gBACA,aACA,WACA,aACA,sBACA,aACA,SACA,SACA,WACA,YACA,eACA,YACA,OACA,MACA,gBACA,cACA,gBACA,SACA,cACA,YACA,cACA,OACA,OACA,gBACA,WACA,UACA,SACA,gBACA,gBACA,WACA,UACA,WACA,yBACA,kBACA,0BACA,SACA,MACA,UACA,cACA,gBACA,UACA,iBACA,gBACA,wBACA,wBACA,WACA,SACA,iBACA,oBACA,SACA,kBACA,kBACA,oBACA,sBACA,iBACA,cACA,YACA,sBACA,eACA,eACA,aACA,iBACA,kBACA,oBACA,aACA,kBACA,iBACA,cACA,eACA,aACA,sCACA,qBACA,eACA,cACA,iBACA,yBACA,iCACA,eACA,sBACA,iBACA,gBACA,SACA,UACA,sBACA,eACA,cACA,YACA,cACA,cACA,eACA,eACA,mBACA,iBACA,wBACA,sBACA,cACA,oBACA,8BACA,oBACA,qBACA,eACA,mBACA,WACA,qBACA,mBACA,QACA,iBACA,SACA,WACA,WACA,UACA,WACA,eACA,cACA,gBACA,eACA,eACA,cACA,cACA,UACA,SACA,aACA,SACA,cACA,MACA,UACA,WACA,YACA,kBACA,WACA,QACA,eACA,cACA,gBACA,OACA,cACA,SACA,kBACA,sBACA,mBACA,uBACA,aACA,WACA,eACA,QACA,WACA,UACA,OACA,YACA,eACA,eACA,QACA,UACA,eACA,KACA,KACA,SACA,iBACA,aACA,UACA,OACA,QACA,UACA,cACA,kBACA,sBACA,YACA,SACA,UACA,QACA,YACA,SACA,SACA,mBACA,gBACA,aACA,2BACA,2BACA,YACA,UACA,UACA,UACA,SACA,kBACA,eACA,iBACA,WACA,gBACA,gBACA,cACA,eACA,iBACA,yBACA,aACA,gBACA,aACA,aACA,WACA,YACA,eACA,cACA,UACA,UACA,wBACA,sBACA,qBACA,2BACA,qBACA,0BACA,uBACA,sBACA,aACA,YACA,MACA,gBACA,SACA,OACA,SACA,YACA,uBACA,eACA,kBACA,wBACA,WACA,OACA,WACA,UACA,SACA,oBACA,aACA,qBACA,cACA,mBACA,kBACA,WACA,gBACA,kBACA,wBACA,wBACA,YACA,qBACA,eACA,iBACA,WACA,eACA,OACA,OACA,eACA,aACA,SACA,gBACA,YACA,oBACA,gBACA,YACA,iBACA,MACA,YACA,WACA,eACA,iBACA,mBACA,qBACA,mBACA,8BACA,aACA,WACA,wBACA,iBACA,oBACA,UACA,UACA,eACA,SACA,cACA,eACA,cACA,eACA,eACA,aACA,aACA,gBACA,cACA,WACA,eACA,WACA,WACA,UACA,cACA,UACA,aACA,cACA,cACA,eACA,sBACA,YACA,iBACA,eACA,kBACA,aACA,gBACA,WACA,eACA,iBACA,2BACA,mBACA,kBACA,iBACA,mCACA,WACA,eACA,kBACA,oBACA,cACA,gBACA,cACA,iBACA,cACA,sBACA,YACA,eACA,uBACA,mBACA,eACA,8BACA,YACA,WACA,aACA,oBACA,uBACA,YACA,WACA,WACA,WACA,gBACA,iBACA,kBACA,iBACA,iBACA,mBACA,kBACA,uBACA,UACA,aACA,eACA,eACA,aACA,iBACA,cACA,qBACA,gBACA,cACA,gBACA,YACA,YACA,WACA,SACA,iBACA,sBACA,cACA,cACA,aACA,UACA,cACA,eACA,MACA,eACA,aACA,cACA,gBACA,gBACA,aACA,QACA,kBACA,iBACA,QACA,QACA,WACA,YACA,OACA,WACA,YACA,kBACA,qBACA,mBACA,UACA,OACA,iBACA,MACA,kBACA,OACA,OACA,gBACA,QACA,QACA,YACA,QACA,YACA,QACA,QACA,QACA,OACA,SACA,wBACA,cACA,eACA,iBACA,OACA,OACA,SACA,eACA,gBACA,cACA,UACA,OACA,UACA,WACA,YACA,mBACA,mBACA,kBACA,QACA,eACA,aACA,SACA,QACA,YACA,eACA,OACA,MACA,aACA,YACA,SACA,SACA,UACA,SACA,QACA,kBACA,aACA,aACA,UACA,QACA,iBACA,WACA,cACA,iBACA,YACA,aACA,QACA,SACA,gBACA,aACA,YACA,gBACA,gBACA,cACA,sBACA,cACA,sBACA,YACA,oBACA,OACA,WACA,eACA,SACA,SACA,cACA,OACA,aACA,eACA,YACA,2BACA,cACA,kBACA,cACA,cACA,gBACA,qCACA,gCACA,aACA,SACA,SACA,cACA,YACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,kBACA,mBACA,gBACA,iBACA,mBACA,gBACA,aACA,cACA,aACA,cACA,QACA,aACA,aACA,aACA,iBACA,cACA,MACA,WACA,UACA,SACA,YACA,SACA,YACA,gBACA,SACA,UACA,SACA,WACA,UACA,MACA,WACA,eACA,mBACA,UACA,gBACA,YACA,WACA,YACA,UACA,SACA,aACA,WACA,iBACA,aACA,aACA,UACA,QACA,QACA,WACA,QACA,eACA,cACA,cACA,MACA,UACA,SACA,OACA,eACA,cACA,MACA,OACA,SACA,gBACA,gBACA,UACA,UACA,MACA,YACA,OACA,aACA,gBACA,gBACA,gBACA,OACA,aACA,cACA,kBACA,wBACA,uBACA,wBACA,cACA,gBACA,iBACA,cACA,iBACA,YACA,gBACA,aACA,gBACA,eACA,cACA,iBACA,sBACA,sBACA,qBACA,4BACA,qBACA,yBACA,sBACA,0BACA,aACA,cACA,kBACA,cACA,mBACA,aACA,eACA,gBACA,aACA,aACA,gBACA,wBACA,OACA,WACA,YACA,QACA,QACA,OACA,UACA,YACA,UACA,YACA,kBACA,SACA,QACA,UACA,SACA,YACA,eACA,YACA,gBACA,UACA,iBACA,iBACA,cACA,cACA,SACA,qBACA,iBACA,oBACA,iBACA,qBACA,oBACA,cACA,WACA,cACA,QACA,WACA,eACA,WACA,cACA,eACA,cACA,cACA,SACA,yBACA,UACA,UACA,MACA,YACA,QACA,kBACA,mBACA,cACA,UACA,QACA,QACA,cACA,eACA,YACA,mBACA,kBACA,kBACA,iBACA,kBACA,iBACA,sBACA,sBACA,aACA,mBACA,sBACA,sBACA,6BACA,kBACA,qBACA,qBACA,2BACA,YACA,gBACA,eACA,eACA,OACA,WACA,YACA,YACA,QACA,WACA,OACA,aACA,eACA,gBACA,QACA,SACA,YACA,WACA,SACA,eACA,cACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,mBACA,mBACA,mBACA,SACA,WACA,eACA,WACA,QACA,iBACA,mBACA,SACA,UACA,YACA,UACA,oBACA,cACA,aACA,2BACA,4BACA,cACA,eACA,UACA,cACA,kBACA,qBACA,UACA,YACA,SACA,iBACA,YACA,iBACA,iBACA,UACA,WACA,SACA,QACA,aACA,YACA,MACA,MACA,MACA,OACA,SACA,iBACA,SACA,aACA,YACA,YACA,eACA,WACA,kBACA,SACA,QACA,QACA,kBACA,oBACA,WACA,QACA,cACA,gBACA,gBACA,wBACA,eACA,UACA,YACA,YACA,SACA,gBACA,eACA,kBACA,oBACA,YACA,YACA,SACA,YACA,SACA,UACA,iBACA,kBACA,iBACA,kBACA,iBACA,kBACA,iBACA,kBACA,2BACA,sBACA,WACA,iBACA,gBACA,mBACA,UACA,cACA,cACA,aACA,OACA,UACA,gBACA,aACA,mBACA,WACA,kBACA,kBACA,kBACA,aACA,kBACA,UACA,aACA,QACA,SACA,OACA,SACA,IACA,OACA,OACA,WACA,QACA,gBACA,YACA,eACA,kBACA,uBACA,2BACA,0BACA,0BACA,gCACA,sBACA,2BACA,gCACA,mBACA,qBACA,8BACA,wBACA,2BACA,mBACA,6BACA,uBACA,wBACA,wBACA,yBACA,2BACA,4BACA,4BACA,yBACA,uBACA,+BACA,oBACA,0BACA,0BACA,yBACA,0BACA,yBACA,iBACA,qBACA,gBACA,wBACA,kBACA,gBACA,kBACA,6BACA,yBACA,yBACA,oCACA,6BACA,8BACA,mCACA,mCACA,yBACA,iCACA,wCACA,oCACA,6BACA,wBACA,wBACA,uBACA,uBACA,wBACA,uCACA,0BACA,0BACA,2BACA,mBACA,yBACA,mBACA,yBACA,yBACA,sBACA,oBACA,uBACA,sBACA,4BACA,qBACA,0BACA,eACA,kBACA,oBACA,yBACA,6BACA,mBACA,iBACA,oBACA,uBACA,mBACA,uBACA,8BACA,kBACA,yBACA,qBACA,aACA,uBACA,wBACA,wBACA,oBACA,sBACA,4BACA,oBACA,yBACA,0BACA,2BACA,oBACA,uBACA,uBACA,0BACA,sBACA,8BACA,0BACA,0BACA,0BACA,2BACA,kCACA,qBACA,oCACA,mBACA,iCACA,cACA,sBACA,0BACA,0BACA,+BACA,+BACA,oBACA,2BACA,yBACA,uBACA,kBAC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"}