{"version":3,"sources":["../lib/utils.js","../lib/parse.js","../lib/ast.js","../lib/transform.js","../lib/output.js","../lib/scope.js","../lib/compress/index.js","../tools/domprops.js","../lib/propmangle.js","../lib/minify.js","../lib/mozilla-ast.js","../lib/sourcemap.js"],"names":["characters","str","split","member","name","array","includes","find_if","func","i","n","length","configure_error_stack","fn","Object","defineProperty","prototype","get","err","Error","this","message","e","stack","DefaultsError","msg","defs","defaults","args","croak","ret","HOP","merge","obj","ext","count","noop","return_false","return_true","return_this","return_null","create","constructor","MAP","a","f","backwards","top","doit","val","is_last","Last","v","AtTop","Splice","push","apply","slice","reverse","skip","Array","concat","at_top","splice","last","push_uniq","el","string_template","text","props","replace","p","remove","mergeSort","cmp","_ms","m","Math","floor","left","right","b","r","ai","bi","makePredicate","words","cats","out","j","quote","word","JSON","stringify","s","compareTo","arr","sort","cat","Function","all","predicate","Dictionary","_values","_size","prop","hasOwnProperty","call","first_in_statement","node","parent","AST_Statement","body","AST_Sequence","expressions","TYPE","expression","AST_Dot","AST_Sub","AST_Conditional","condition","AST_Binary","AST_UnaryPostfix","keep_name","keep_setting","RegExp","test","set","key","has","add","del","each","substr","size","map","clone","toObject","fromObject","dict","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","OPERATORS","WHITESPACE_CHARS","NEWLINE_CHARS","PUNC_AFTER_EXPRESSION","PUNC_BEFORE_EXPRESSION","PUNC_CHARS","UNICODE","ID_Start","ID_Continue","get_full_char","pos","char","charAt","is_surrogate_pair_head","next","is_surrogate_pair_tail","prev","code","charCodeAt","is_digit","is_identifier","is_identifier_start","ch","is_identifier_char","is_identifier_string","JS_Parse_Error","filename","line","col","js_error","is_token","token","type","value","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","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","read_num","prefix","has_e","after_e","has_x","has_dot","num","pred","read_while","next_token","has_directive","valid","parseInt","parseFloat","parse_js_number","isNaN","read_escaped_char","strict_hex","template_string","String","fromCharCode","hex_bytes","result","strict_octal","read_octal_escape_sequence","digit","read_string","with_eof_error","quote_char","tok","read_template_characters","begin","content","end","tmp","pop","skip_line_comment","find_eol","skip_multiline_comment","surrogates","get_full_char_length","read_name","escaped","read_escaped_identifier_char","read_regexp","source","prev_backslash","in_class","mods","regexp","raw_source","read_operator","grow","op","bigger","handle_slash","eof_error","cont","x","ex","force_regexp","context","nc","add_directive","directive","undefined","push_directives_stack","pop_directives_stack","UNARY_PREFIX","ASSIGNMENT","PRECEDENCE","ATOMIC_START_TOKEN","parse","options","bare_returns","ecma","module","strict","toplevel","input","peeked","in_function","in_async","in_generator","in_directives","in_loop","labels","is","ctx","token_error","unexpected","expect_token","expect","punc","has_newline_before","comment","can_insert_semicolon","is_in_generator","is_in_async","semicolon","optional","parenthesised","exp","embed_tokens","parser","start","expr","arguments","handle_regexp","statement","is_export_default","is_for_body","is_if_body","dir","stat","simple_statement","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","l","AST_IterationStatement","references","forEach","ref","AST_Continue","AST_LabeledStatement","labeled_statement","AST_BlockStatement","block_","AST_EmptyStatement","break_cont","AST_Break","AST_Debugger","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","arrow_function","argnames","is_async","_function_body","AST_Arrow","async","ctor","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","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_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","mark_pure","new_","exprs","maybe_sequence","spread_token","invalid_sequence","trailing_comma","params_or_seq_","AST_Call","len","unshift","comments_before_length","array_","object_or_destructuring_","cls","AST_ClassExpression","tagged","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_ast","AST_SymbolMethod","is_static","AST_ConciseMethod","static","AST_ObjectGetter","AST_ObjectSetter","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","pure","call_args","AST_PrefixedTemplateString","maybe_unary","AST_Await","make_unary","AST_UnaryPrefix","expr_op","min_prec","prec","maybe_conditional","expr_ops","yes","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","initialize","BASE","SUBCLASSES","CTOR","SELF_PROPS","DEFMETHOD","_clone","deep","self","transform","TreeTransformer","$documentation","$propdoc","_walk","visitor","_visit","walk","warn_function","warn","txt","walk_body","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","pinned","globals","wrap_commonjs","wrapped_tl","wrap_enclose","args_values","index","join","uses_arguments","args_as_names","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","callback","visit","before","after","descend","getPrototypeOf","find_parent","st","loopcontrol_target","tw","in_list","y","do_list","list","EXPECT_DIRECTIVE","is_some_comments","OutputStream","readonly","ascii_only","beautify","braces","ie8","indent_level","indent_start","inline_script","keep_quoted_props","max_line_len","preamble","quote_keys","quote_style","safari10","semicolons","shorthand","source_map","webkit","width","wrap_iife","comment_filter","regex_pos","lastIndexOf","indentation","current_col","current_line","current_pos","OUTPUT","to_utf8","identifier","toString","encode_string","dq","sq","quote_single","quote_double","make_string","make_indent","back","repeat_string","d","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","with_indent","next_indent","save_indentation","newline","force_semicolon","has_nlb","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","_dumped","shift","filter","last_nlb","c","append_comments","tail","insert","push_node","pop_node","SymbolDef","orig","eliminated","replaced","global","export","mangled_name","undeclared","id","next_id","DEFPRINT","nodetype","in_directive","active_scope","use_asm","PARENS","isArray","display_body","is_toplevel","output","allow_directives","stmt","print_braced_empty","print_braced","parenthesize_for_noin","noin","parens","print_property_name","make_num","force_statement","make_block","need_constructor_parens","toLowerCase","exec","best","best_of","DEFMAP","stream","force_parens","_codegen","add_source_map","needs_parens","po","pp","so","sp","p1","_do_print_body","nokeyword","arg","_do_print","tag","parenthesize_tag","is_tagged","make_then","definition","get_name","allowShortHand","_print_getter_setter","MASK_EXPORT_DONT_MANGLE","MASK_EXPORT_WANT_MANGLE","next_mangled","base54","reserved","unmangleable","eval","keep_fnames","keep_classnames","mangle","cache","redefined","defun","in_destructuring","for_scopes","save_scope","init_scope_vars","save_defun","save_labels","def_function","mark_export","def_variable","destructuring","mark_enclosed","find_variable","reference","level","exported","def_global","refs","g","symbol","mangled_names","tricky_def","tricky_name","_default_mangler_options","lname","to_mangle","Set","collect","save_nesting","avoid","to_avoid","add_def","reset","find_colliding_names","rename","next_name","_print","consider","skip_string","tail_node","print_to_string","chars","frequency","leading","digits","compare","Compressor","false_by_default","arrows","booleans","booleans_as_integers","collapse_vars","comparisons","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_methods","unsafe_proto","unsafe_regexp","unsafe_undefined","unused","warnings","funcs","vars","sequences_limit","warnings_produced","exposed","in_boolean_context","compress","resolve_defines","process_expression","min_count","stopping","pass","figure_out_scope","reset_opt_flags","info","clear_warnings","_squeezed","was_scope","hoist_properties","hoist_declarations","optimize","drop_unused","def_optimize","optimizer","compressor","_optimized","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","make_node","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","tt","drop_side_effect_free","def_reduce_vars","reset_def","assignments","chained","direct_access","fixed","recursive_refs","should_replace","single_use","reset_variables","safe_ids","mark","loop_ids","reset_block_variables","safe","safe_to_read","safe_to_assign","mark_escaped","depth","is_constant","is_constant_expression","lazy_op","suppressor","mark_def_node","inlined","save_ids","mark_func_expr","iife","eq","saved_loop","has_break_or_continue","recursive_ref","ref_once","_top","global_names","def_is_boolean","unary_bool","binary_bool","def_is_string","identifier_atom","is_identifier_atom","tighten_body","statements","in_try","find_loop_scope_try","CHANGED","max_iter","eliminate_spurious_blocks","eliminate_dead_code","handle_if_return","sequencesize","sequencesize_2","join_consecutive_vars","collapse","candidates","stat_index","scanner","abort","hit","hit_stack","hit_index","handle_custom_scan_order","stop_after","find_stop","write_only","lvalues","equivalent_to","replace_all","is_declared","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_strict","found","scan_this","referenced","var_def","mangleable_var","get_rvalue","min","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","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_dot_throw","_dot_throw","is_boolean","def_is_number","unary","binary","is_number","is_string","unary_side_effects","best_of_expression","ast1","ast2","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","element","non_converting_unary","non_converting_binary","pow","global_objs","static_values","aa","first_arg","def_negate","basic_negation","negated","global_pure_fns","fns","def_has_side_effects","any","is_call_pure","def_may_throw","def_is_constant_expression","all_refs_local","scope_def","block_aborts","opt_AST_Lambda","drop_funcs","drop_vars","assign_as_unused","in_use","in_use_ids","fixed_ids","var_defs_by_id","initializations","destructuring_value","node_def","in_export","destructuring_cache","scan_ref_scoped","trim","__unused","unreferenced","template","drop_block","head","is_destructure","var_defs","assign","dirs","hoisted","vars_found","var_decl","to_assignments","varNames","var_names","_var_names","isParentScopeAvailable","defs_by_id","make_sym","new_var","make_var_name","def_drop_side_effect_free","nodes","changed","values","pure_prop_access_globals","retain_top_func","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","EXIT","separator","consts","ast","fun","comp","compute_char_frequency","mangle_names","is_regular_func","can_inline","return_value","can_flatten_body","block_scoped","variable","safe_to_inject","can_inject_vars","can_inject_args","is_reachable","can_inject_symbols","append_var","flatten_args","lines","flatten_vars","flatten_fn","ev","trim_right_for_undefined","lift_sequences","commutativeOperators","is_atomic","reachable","find_ref","scan_scope","reversible","is_strict_comparison","combined","ll","rr","truthy","falsy","lr","associative","reversed","within_array_or_object_literal","defun_def","lambda_def","value_length","has_symbol_ref","name_length","overhead","undef","ASSIGN_OPS","ASSIGN_OPS_COMMUTATIVE","safe_to_flatten","literals_in_boolean_context","lift_key","evaluateRight","arg_index","single_arg_diff","in_bool","is_true","is_false","booleanize","OPT_ARGUMENTS","sub","flatten_object","retValue","FLATTEN","flatten","k","optimized","has_special_symbol","segment","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","Symbol","ArrayBuffer","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Map","Promise","Proxy","RangeError","ReferenceError","Reflect","SyntaxError","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakSet","getOwnPropertyNames","find_builtins","debug_name_suffix","names_to_mangle","root","mangleStrings","can_mangle","should_mangle","mangled","debug_mangled","to_ascii","atob","b64","Buffer","from","to_base64","btoa","set_shorthand","keys","init_cache","to_json","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","ArrayExpression","ObjectExpression","SequenceExpression","MemberExpression","SwitchCase","VariableDeclaration","declarations","ImportDeclaration","specifiers","specifier","imported","local","ExportAllDeclaration","ExportNamedDeclaration","declaration","ExportDefaultDeclaration","Literal","rx","pattern","flags","MetaProperty","meta","Identifier","FROM_MOZ_STACK","raw_token","moznode","loc","range","column","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","match","to_mozilla_ast","mynode","from_mozilla_ast","save_stack","TO_MOZ_STACK","files","quoted_props","timings","enclose","nameCache","sourceMap","wrap","now","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","addMapping","generated","original","toJSON","SourceMap","total","error"],"mappings":"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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,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,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,cACA,SACA,aACA,WACA,gBACA,qBACA,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,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,eACA,WACA,eACA,UACA,iBACA,yBACA,oBACA,gBACA,UACA,oBACA,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,eACA,YACA,qBACA,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,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,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,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,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,SACA,OACA,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,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,kBACA,wBACA,mBACA,wBACA,2BACA,2BACA,iCACA,YACA,0BACA,mBACA,8BACA,wBACA,sCACA,iBACA,WACA,SACA,aACA,aACA,cACA,cACA,QACA,cACA,aACA,YACA,SACA,QACA,cACA,aACA,eACA,SACA,kBACA,aACA,eACA,YACA,YACA,cACA,WACA,OACA,UACA,QACA,UACA,cACA,IACA,KACA,KACA,mBACA,cACA,gBACA,aACA,UACA,UACA,WACA,IACA,KACA,KACA,mBACA,SACA,IACA,UACA,SACA,OACA,aACA,kBCt3KJ,SAASC,GAAoB5E,EAAKvY,GAC9B,SAASxtB,EAAI9H,GACT6D,EAAUyxB,EAAUt1B,GAGxB6tC,EAAI1mB,KAAK,IAAIS,GAAW,SAASnhB,GACzBA,aAAgB8W,IAAoB9W,EAAKnB,MACzCwC,EAAIrB,EAAKmB,KACFnB,aAAgB2e,IAAsB3e,EAAKnB,MAClDwC,EAAIrB,EAAKmB,IAAI5H,MACNyG,aAAgBS,IACvBwrC,GAAWjsC,EAAKgX,SAAU3V,MAKtC,SAAS4qC,GAAWjsC,EAAMqB,GACtBrB,EAAK0gB,KAAK,IAAIS,GAAW,SAASnhB,GAS9B,OARIA,aAAgBI,GAChB6rC,GAAWjsC,EAAK4xB,YAAavwB,GACtBrB,aAAgBwO,GACvBnN,EAAIrB,EAAK2E,OACF3E,aAAgBU,KACvBurC,GAAWjsC,EAAKye,WAAYpd,GAC5B4qC,GAAWjsC,EAAKqS,YAAahR,KAE1B,KAIf,SAAS6qC,GAAkB9E,EAAKv7B,GAW5B,IAAIsgC,GAVJtgC,EAAU/Q,EAAS+Q,EAAS,CACxBugC,UAAU,EACVjd,MAAO,KACPkd,OAAO,EACPC,aAAa,EACbC,YAAY,EACZC,MAAO,KACP3d,SAAU,OACX,IAE2BA,SACzB9xB,MAAM+uB,QAAQqgB,KAAkBA,EAAkB,CAACA,IACxD,IAAItd,EAAW,IAAIkC,IAAIob,GAClBtgC,EAAQugC,UAvFjB,SAAuBvd,GACnBkd,GAASr8B,QAAQrO,GAGjB,IACIorC,EAAU,GACVC,EAA+B,iBAAXxhB,OAAsBA,OAAShL,KAgCvD,SAAS7e,EAAI9H,GACTs1B,EAASxtB,IAAI9H,GAnCC,CAAC,SAAU,MAAO,UAAW,QAAS,UAAW,MAAO,UAAW,WAIzEmW,QAAQ,SAAUi9B,GAC1BF,EAAQE,GAAcD,EAAWC,IAAe,IAAIrtC,WAIxD,CACI,OACA,OACA,QACA,WACA,YACA,aACFoQ,QAAQrO,GACV,CAAEpH,OAAQ8C,MAAOuC,SAAUsiC,OACzBr5B,OAAQo5B,QAASrnC,MAAO0D,KACxB4uC,KAAM5rC,OAAQyrC,EAAQI,OAAQC,YAC9BC,SAAUC,UAAWC,mBACrBC,UAAWC,mBAAoBpe,KAAMqe,UACrCC,aAAcC,aAAcC,UAAWC,WACvCC,WAAY9V,SAAUxvB,MAAOpJ,KAAM0tC,EAAQiB,IAAKzlC,WAChDD,SAAUykC,EAAQkB,QAASlB,EAAQmB,MAAOC,WAAYC,eACtDrB,EAAQsB,QAAStB,EAAQ1b,IAAKid,YAAaC,UAAWC,WACtDC,kBAAmBC,YAAaC,YAAaC,SAC7C7B,EAAQ8B,QAAS9B,EAAQ+B,SACzB9+B,QAAQ,SAAS4E,GACfra,OAAOw0C,oBAAoBn6B,GAAM5S,IAAIL,GACjCiT,EAAKna,WACLF,OAAOw0C,oBAAoBn6B,EAAKna,WAAWuH,IAAIL,KAoDhCqtC,CAAc7f,GAErC,IACIM,EADAtN,GAAS,EAEThW,EAAQsjB,OACRA,EAAQtjB,EAAQsjB,MAAM3xB,OAChB+D,KAAK,SAAS6pB,GAChByD,EAASxtB,IAAI+pB,KAGjB+D,EAAQ,IAAI1vB,EAGhB,IAMIkvC,EANAnC,EAAQ3gC,EAAQ2gC,MAKhBH,GAA0B,IAAlBxgC,EAAQwgC,MAEhBA,IACAsC,GAAuC,IAAlB9iC,EAAQwgC,MAAiB,GAAKxgC,EAAQwgC,OAG/D,IAAIuC,EAAkB,IAAI7d,IACtBjC,EAAe,IAAIiC,IA0BvB,OAvBAqW,EAAI1mB,KAAK,IAAIS,GAAW,SAASnhB,GAC7B,GAAIA,aAAgB8W,GACO,iBAAZ9W,EAAKmB,KACZE,EAAIrB,EAAKmB,UAEV,GAAInB,aAAgB2e,GAEvBtd,EAAIrB,EAAKmB,IAAI5H,WACV,GAAIyG,aAAgBQ,GAAS,CAEhC,IADA,IAAIquC,EAAO7uC,EACJ6uC,EAAKtuC,YACRsuC,EAAOA,EAAKtuC,WAEVsuC,EAAK96B,QAAU86B,EAAK96B,OAAOsX,YAAahqB,EAAIrB,EAAKgX,eAChDhX,aAAgBS,GACvBwrC,GAAWjsC,EAAKgX,SAAU3V,GACnBrB,aAAgB2a,IACiB,yBAArC3a,EAAKO,WAAWsxB,mBACnBoa,GAAWjsC,EAAKjF,KAAK,GAAIsG,MAK1B+lC,EAAIjnB,UAAU,IAAIC,GAAgB,SAASpgB,GAC1CA,aAAgB8W,GACO,iBAAZ9W,EAAKmB,MACZnB,EAAKmB,IAAM+tB,EAAOlvB,EAAKmB,MAEpBnB,aAAgB2e,GAEvB3e,EAAKmB,IAAI5H,KAAO21B,EAAOlvB,EAAKmB,IAAI5H,MACzByG,aAAgBQ,GACvBR,EAAKgX,SAAWkY,EAAOlvB,EAAKgX,WACpBnL,EAAQygC,aAAetsC,aAAgBS,GAC/CT,EAAKgX,SAAW83B,EAAc9uC,EAAKgX,UAC5BhX,aAAgB2a,IACiB,yBAArC3a,EAAKO,WAAWsxB,oBACnB7xB,EAAKjF,KAAK,GAAK+zC,EAAc9uC,EAAKjF,KAAK,QAM/C,SAASg0C,EAAWx1C,GAChB,OAAIu1B,EAAa1tB,IAAI7H,MACjBs1B,EAASztB,IAAI7H,KACbsS,EAAQ0gC,WACDpd,EAAM/tB,IAAI7H,IAEjB,sCAAsC0H,KAAK1H,KAInD,SAASy1C,EAAcz1C,GACnB,QAAIizC,IAAUA,EAAMvrC,KAAK1H,OACrBs1B,EAASztB,IAAI7H,KACV41B,EAAM/tB,IAAI7H,IACVq1C,EAAgBxtC,IAAI7H,KAG/B,SAAS8H,EAAI9H,GACLw1C,EAAWx1C,IACXq1C,EAAgBvtC,IAAI9H,GAEnBy1C,EAAcz1C,IACfu1B,EAAaztB,IAAI9H,GAIzB,SAAS21B,EAAO31B,GACZ,IAAKy1C,EAAcz1C,GACf,OAAOA,EAGX,IAAI01C,EAAU9f,EAAM/0B,IAAIb,GACxB,IAAK01C,EAAS,CACV,GAAI5C,EAAO,CAEP,IAAI6C,EAAgB,KAAO31C,EAAO,IAAMo1C,EAAoB,IAExDI,EAAWG,KACXD,EAAUC,GAKlB,IAAKD,EACD,GACIA,EAAUrgB,KAAS/M,UACbktB,EAAWE,IAGzB9f,EAAMjuB,IAAI3H,EAAM01C,GAEpB,OAAOA,EAGX,SAASH,EAAc9uC,GACnB,OAAOA,EAAKmgB,UAAU,IAAIC,GAAgB,SAASpgB,GAC/C,GAAIA,aAAgBI,GAAc,CAC9B,IAAIjD,EAAO6C,EAAKK,YAAYvG,OAAS,EACrCkG,EAAKK,YAAYlD,GAAQ2xC,EAAc9uC,EAAKK,YAAYlD,SACjD6C,aAAgBwO,GACvBxO,EAAK2E,MAAQuqB,EAAOlvB,EAAK2E,OAClB3E,aAAgBU,KACvBV,EAAKye,WAAaqwB,EAAc9uC,EAAKye,YACrCze,EAAKqS,YAAcy8B,EAAc9uC,EAAKqS,cAE1C,OAAOrS,MC3QhB,IAACmvC,GAA0B,oBAARC,KAAsB,SAASC,GACjD,OAAOC,OAAOC,KAAKF,EAAK,UAAUxoB,YAClCuoB,KACAI,GAA2B,oBAARC,KAAsB,SAASr2C,GAClD,OAAOk2C,OAAOC,KAAKn2C,GAAKytB,SAAS,WACjC4oB,KAWJ,SAASC,GAAcn2C,EAAMsS,EAAS8jC,GAC9B9jC,EAAQtS,IACRo2C,EAAKjgC,QAAQ,SAASvO,GACd0K,EAAQ1K,KACmB,iBAAhB0K,EAAQ1K,KAAkB0K,EAAQ1K,GAAO,IAC9C5H,KAAQsS,EAAQ1K,KAAO0K,EAAQ1K,GAAK5H,GAAQsS,EAAQtS,OAM1E,SAASq2C,GAAWzgB,GACXA,IACC,UAAWA,EAEJA,EAAM3xB,iBAAiBiC,IAChC0vB,EAAM3xB,MAAQiC,EAAWoC,WAAWstB,EAAM3xB,QAF1C2xB,EAAM3xB,MAAQ,IAAIiC,GAM1B,SAASowC,GAAQ1gB,GACb,MAAO,CACH3xB,MAAO2xB,EAAM3xB,MAAMoE,aC2F3B,WAEI,IAAIkuC,EAAuB,SAAS3vC,GAGhC,IAFA,IAAIurB,GAAe,EAEV9xB,EAAI,EAAGA,EAAIuG,EAAKrG,OAAQF,IACzB8xB,GAAgBvrB,EAAKvG,aAAcsG,IAAiBC,EAAKvG,GAAGuG,gBAAgBqO,GAC5ErO,EAAKvG,GAAK,IAAI6U,GAAc,CACxBZ,MAAO1N,EAAKvG,GAAGiU,MACfxE,IAAKlJ,EAAKvG,GAAGyP,IACb1E,MAAOxE,EAAKvG,GAAGuG,KAAKwE,SAEjB+mB,GAAkBvrB,EAAKvG,aAAcsG,IAAiBC,EAAKvG,GAAGuG,gBAAgBqO,KACrFkd,GAAe,GAIvB,OAAOvrB,GAGP4vC,EAAY,CACZC,QAAS,SAASC,GACd,OAAO,IAAI9wB,GAAa,CACpBtR,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB9vC,KAAM2vC,EAAqBG,EAAE9vC,KAAKuB,IAAI0uC,OAG9CC,aAAc,SAASJ,GACnB,OAAO,IAAI9+B,GAAkB,CACzBtD,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClBr5B,MAAOq5B,EAAE35B,SAAS5U,IAAI,SAAS4uC,GAC3B,OAAY,OAARA,EACO,IAAI35B,GAERy5B,EAASE,KAEpBz5B,UAAU,KAGlB05B,cAAe,SAASN,GACpB,OAAO,IAAI9+B,GAAkB,CACzBtD,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClBr5B,MAAOq5B,EAAEz2B,WAAW9X,IAAI0uC,GACxBv5B,UAAU,KAGlB25B,kBAAmB,SAASP,GACxB,OAAO,IAAIrvC,GAAW,CAClBiN,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB/xC,KAAMkyC,EAASH,EAAE/xC,MACjBiY,SAAU,IACVhY,MAAOiyC,EAASH,EAAE9xC,UAG1BsyC,cAAe,SAASR,GACpB,OAAO,IAAI75B,GAAc,CACrBvI,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB1vC,WAAY6vC,EAASH,EAAES,aAG/BC,YAAa,SAASV,GAClB,OAAO,IAAI75B,GAAc,CACrBvI,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB1vC,WAAY6vC,EAASH,EAAES,aAG/BE,gBAAiB,SAASX,GACtB,OAAO,IAAI50B,GAAoB,CAC3BxN,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClBtrC,MAAOsrC,EAAEtrC,MAAMksC,OACf/pC,IAAKmpC,EAAEtrC,MAAMmC,OAGrBgqC,gBAAiB,SAASb,GAEtB,IADA,IAAI70B,EAAW,GACNxhB,EAAI,EAAGA,EAAIq2C,EAAEc,OAAOj3C,OAAQF,IACjCwhB,EAAS1e,KAAK0zC,EAASH,EAAEc,OAAOn3C,KAC5Bq2C,EAAE5vC,YAAYzG,IACdwhB,EAAS1e,KAAK0zC,EAASH,EAAE5vC,YAAYzG,KAG7C,OAAO,IAAI0hB,GAAmB,CAC1BzN,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB70B,SAAUA,KAGlB41B,yBAA0B,SAASf,GAC/B,OAAO,IAAInyB,GAA2B,CAClCjQ,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB3nC,gBAAiB8nC,EAASH,EAAEgB,OAC5B5pC,OAAQ+oC,EAASH,EAAEhiB,QAG3BijB,oBAAqB,SAASjB,GAC1B,OAAO,IAAIthC,GAAU,CACjBd,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB12C,KAAM62C,EAASH,EAAE3kB,IACjBrX,SAAUg8B,EAAE14B,OAAO7V,IAAI0uC,GACvB37B,aAAcw7B,EAAE94B,UAChB9C,MAAO47B,EAAE57B,MACTlU,KAAM2vC,EAAqBM,EAASH,EAAE9vC,MAAMA,SAGpDgxC,mBAAoB,SAASlB,GACzB,OAAO,IAAIr7B,GAAa,CACpB/G,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB12C,KAAM62C,EAASH,EAAE3kB,IACjBrX,SAAUg8B,EAAE14B,OAAO7V,IAAI0uC,GACvB37B,aAAcw7B,EAAE94B,UAChB9C,MAAO47B,EAAE57B,MACTlU,KAAM2vC,EAAqBM,EAASH,EAAE9vC,MAAMA,SAGpDixC,wBAAyB,SAASnB,GAC9B,OAAO,IAAI77B,GAAU,CACjBvG,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClBh8B,SAAUg8B,EAAE14B,OAAO7V,IAAI0uC,GACvBjwC,KAAMiwC,EAASH,EAAE9vC,MACjBkU,MAAO47B,EAAE57B,SAGjBg9B,oBAAqB,SAASpB,GAC1B,OAAO,IAAIt8B,GAAoB,CAC3B9F,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB9vC,KAAMiwC,EAASH,EAAE1vC,eAGzB+wC,aAAc,SAASrB,GACnB,IAAIsB,EAAWtB,EAAEsB,UAAY,CAACtB,EAAEuB,SAChC,GAAID,EAASz3C,OAAS,GAAKm2C,EAAEwB,iBAAmBxB,EAAEwB,gBAAgB33C,OAC9D,MAAM,IAAIQ,MAAM,6CAEpB,OAAO,IAAI4Y,GAAQ,CACfrF,MAAWqiC,EAAeD,GAC1B5mC,IAAW8mC,EAAaF,GACxB9vC,KAAWiwC,EAASH,EAAE/4B,OAAO/W,KAC7BwS,OAAWy9B,EAASmB,EAAS,IAC7B3+B,SAAWq9B,EAAEyB,UAAY,IAAIz+B,GAAYm9B,EAASH,EAAEyB,YAAc,QAG1EC,SAAU,SAAS1B,GACf,IAAI9uC,EAAM8uC,EAAE9uC,IACRpG,EAAO,CACP8S,MAAWqiC,EAAe/uC,GAAO8uC,EAAEtrC,OACnC0E,IAAW8mC,EAAaF,EAAEtrC,OAC1BxD,IAAuB,cAAZA,EAAIuD,KAAuBvD,EAAI5H,KAAO4H,EAAIwD,MACrDA,MAAWyrC,EAASH,EAAEtrC,QAK1B,OAHIsrC,EAAE2B,WACF72C,EAAKoG,IAAMivC,EAASH,EAAE9uC,MAEtB8uC,EAAEl0B,QACFhhB,EAAK0Z,aAAew7B,EAAEtrC,MAAMwS,UAC5Bpc,EAAKsZ,MAAQ47B,EAAEtrC,MAAM0P,MAChB47B,EAAE2B,SAGH72C,EAAKoG,IAAMivC,EAASH,EAAE9uC,KAFtBpG,EAAKoG,IAAM,IAAIob,GAAiB,CAAEhjB,KAAMwB,EAAKoG,MAI1C,IAAIsb,GAAkB1hB,IAEnB,QAAVk1C,EAAEl4B,MACc,cAAZ5W,EAAIuD,MAAoC,WAAZvD,EAAIuD,OAChC3J,EAAKoG,IAAMivC,EAASjvC,IAEjB,IAAI2V,GAAiB/b,KAER,iBAAbA,EAAKoG,KAAwC,iBAAbpG,EAAKoG,MAC5CpG,EAAKoG,IAAM,IAAIob,GAAiB,CAC5BhjB,KAAMwB,EAAKoG,OAGnBpG,EAAK4J,MAAQ,IAAIkQ,GAAa9Z,EAAK4J,OACrB,OAAVsrC,EAAEl4B,KAAsB,IAAI4E,GAAiB5hB,GACnC,OAAVk1C,EAAEl4B,KAAsB,IAAI6E,GAAiB7hB,GACnC,UAAVk1C,EAAEl4B,MACFhd,EAAKsZ,MAAQ47B,EAAEtrC,MAAM0P,MACrBtZ,EAAK0Z,aAAew7B,EAAEtrC,MAAMwS,UAC5Bpc,EAAK8D,MAAQoxC,EAAE2B,SAAW,IAAO,KAC1B,IAAIn1B,GAAkB1hB,SAJjC,IAOJ82C,iBAAkB,SAAS5B,GACvB,IAAIl1C,EAAO,CACP8S,MAAWqiC,EAAeD,GAC1B5mC,IAAW8mC,EAAaF,GACxB9uC,IAAW8uC,EAAE2B,SAAWxB,EAASH,EAAE9uC,KAAO,IAAIob,GAAiB,CAAEhjB,KAAM02C,EAAE9uC,IAAI5H,MAAQ02C,EAAE9uC,IAAIwD,QAC3FA,MAAWyrC,EAASH,EAAEtrC,OACtB+X,OAAWuzB,EAAEvzB,QAEjB,MAAc,OAAVuzB,EAAEl4B,KACK,IAAI4E,GAAiB5hB,GAElB,OAAVk1C,EAAEl4B,KACK,IAAI6E,GAAiB7hB,IAEhCA,EAAK0Z,aAAew7B,EAAEtrC,MAAMwS,UAC5Bpc,EAAKsZ,MAAQ47B,EAAEtrC,MAAM0P,MACd,IAAIoI,GAAkB1hB,KAEjC+2C,gBAAiB,SAAS7B,GACtB,OAAO,IAAIx2B,GAAU,CACjB5L,MAAWqiC,EAAeD,GAC1B5mC,IAAW8mC,EAAaF,GACxB35B,SAAW25B,EAAE35B,SAAS5U,IAAI,SAASmqC,GAC/B,OAAgB,OAATA,EAAgB,IAAIl1B,GAAay5B,EAASvE,QAI7DkG,iBAAkB,SAAS9B,GACvB,OAAO,IAAI12B,GAAW,CAClB1L,MAAaqiC,EAAeD,GAC5B5mC,IAAa8mC,EAAaF,GAC1Bz2B,WAAay2B,EAAEz2B,WAAW9X,IAAI,SAAS9B,GACnC,MAAkB,kBAAdA,EAAK8E,KACE0rC,EAASxwC,IAEpBA,EAAK8E,KAAO,WACL0rC,EAASxwC,SAI5BoyC,mBAAoB,SAAS/B,GACzB,OAAO,IAAI7vC,GAAa,CACpByN,MAAaqiC,EAAeD,GAC5B5mC,IAAa8mC,EAAaF,GAC1B5vC,YAAa4vC,EAAE5vC,YAAYqB,IAAI0uC,MAGvC6B,iBAAkB,SAAShC,GACvB,OAAO,IAAKA,EAAE2B,SAAWnxC,GAAUD,IAAS,CACxCqN,MAAaqiC,EAAeD,GAC5B5mC,IAAa8mC,EAAaF,GAC1Bj5B,SAAai5B,EAAE2B,SAAWxB,EAASH,EAAEj5B,UAAYi5B,EAAEj5B,SAASzd,KAC5DgH,WAAa6vC,EAASH,EAAE5+B,WAGhC6gC,WAAY,SAASjC,GACjB,OAAO,IAAKA,EAAEhvC,KAAO0W,GAAWC,IAAa,CACzC/J,MAAaqiC,EAAeD,GAC5B5mC,IAAa8mC,EAAaF,GAC1B1vC,WAAa6vC,EAASH,EAAEhvC,MACxBd,KAAa8vC,EAAExxB,WAAW/c,IAAI0uC,MAGtC+B,oBAAqB,SAASlC,GAC1B,OAAO,IAAgB,UAAXA,EAAEl4B,KAAmBS,GACV,QAAXy3B,EAAEl4B,KAAiBQ,GAAUD,IAAS,CAC9CzK,MAAcqiC,EAAeD,GAC7B5mC,IAAc8mC,EAAaF,GAC3Bj/B,YAAci/B,EAAEmC,aAAa1wC,IAAI0uC,MAIzCiC,kBAAmB,SAASpC,GACxB,IAAIrhC,EAAgB,KAChBC,EAAiB,KAsBrB,OArBAohC,EAAEqC,WAAW5iC,QAAQ,SAAU6iC,GACJ,oBAAnBA,EAAU7tC,MACLmK,IAAkBA,EAAiB,IACxCA,EAAenS,KAAK,IAAI2gB,GAAgB,CACpCxP,MAAOqiC,EAAeqC,GACtBlpC,IAAK8mC,EAAaoC,GAClBv1B,aAAcozB,EAASmC,EAAUC,UACjCj5C,KAAM62C,EAASmC,EAAUE,WAEH,2BAAnBF,EAAU7tC,KACjBkK,EAAgBwhC,EAASmC,EAAUE,OACT,6BAAnBF,EAAU7tC,OACZmK,IAAkBA,EAAiB,IACxCA,EAAenS,KAAK,IAAI2gB,GAAgB,CACpCxP,MAAOqiC,EAAeqC,GACtBlpC,IAAK8mC,EAAaoC,GAClBv1B,aAAc,IAAIE,GAAwB,CAAE3jB,KAAM,MAClDA,KAAM62C,EAASmC,EAAUE,aAI9B,IAAIvjC,GAAW,CAClBrB,MAAcqiC,EAAeD,GAC7B5mC,IAAc8mC,EAAaF,GAC3BrhC,cAAeA,EACfC,eAAiBA,EACjBM,YAAcihC,EAASH,EAAEhmC,WAGjCyoC,qBAAsB,SAASzC,GAC3B,OAAO,IAAIx8B,GAAW,CAClB5F,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB38B,eAAgB,CACZ,IAAI+J,GAAgB,CAChB9jB,KAAM,IAAI4jB,GAAwB,CAAE5jB,KAAM,MAC1CyjB,aAAc,IAAIG,GAAwB,CAAE5jB,KAAM,SAG1D4V,YAAaihC,EAASH,EAAEhmC,WAGhC0oC,uBAAwB,SAAS1C,GAC7B,OAAO,IAAIx8B,GAAW,CAClB5F,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClBz8B,oBAAqB48B,EAASH,EAAE2C,aAChCt/B,eAAgB28B,EAAEqC,YAAcrC,EAAEqC,WAAWx4C,OAASm2C,EAAEqC,WAAW5wC,IAAI,SAAU6wC,GAC7E,OAAO,IAAIl1B,GAAgB,CACvBL,aAAcozB,EAASmC,EAAUniB,UACjC72B,KAAM62C,EAASmC,EAAUE,WAE5B,KACLtjC,YAAaihC,EAASH,EAAEhmC,WAGhC4oC,yBAA0B,SAAS5C,GAC/B,OAAO,IAAIx8B,GAAW,CAClB5F,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,GAClB18B,eAAgB68B,EAASH,EAAE2C,aAC3Bv/B,YAAY,KAGpBy/B,QAAS,SAAS7C,GACd,IAAI7zC,EAAM6zC,EAAEtrC,MAAO5J,EAAO,CACtB8S,MAASqiC,EAAeD,GACxB5mC,IAAS8mC,EAAaF,IAE1B,GAAY,OAAR7zC,EAAc,OAAO,IAAI4c,GAASje,GACtC,IAAIg4C,EAAK9C,EAAEzD,MACX,GAAIuG,GAAMA,EAAGC,QAAS,CAElBj4C,EAAK4J,MAAQ,IAAI3D,OAAO+xC,EAAGC,QAASD,EAAGE,OACvC,IAAInsC,EAAM/L,EAAK4J,MAAMkiB,WAIrB,OAHA9rB,EAAK4J,MAAM2F,WAAayoC,EAAGE,MACrBnsC,EAAIC,UAAU,EAAGD,EAAIhN,OAASi5C,EAAGE,MAAMn5C,QAAUi5C,EAAGE,MACpDnsC,EACC,IAAI+R,GAAW9d,GACnB,GAAIg4C,EAGP,OADAh4C,EAAK4J,MAAQsrC,EAAEzD,OAASyD,EAAEnpC,IAAMmpC,EAAEnpC,IAAM1K,EACjC,IAAIyc,GAAW9d,GAE1B,cAAeqB,GACb,IAAK,SAEH,OADArB,EAAK4J,MAAQvI,EACN,IAAIoS,GAAWzT,GACxB,IAAK,SAEH,OADAA,EAAK4J,MAAQvI,EACN,IAAIwc,GAAW7d,GACxB,IAAK,UACH,OAAO,IAAKqB,EAAM2c,GAAWD,IAAW/d,KAGhDm4C,aAAc,SAASjD,GACnB,GAAoB,QAAhBA,EAAEkD,KAAK55C,MAAsC,WAApB02C,EAAEj5B,SAASzd,KACpC,OAAO,IAAIwgB,GAAc,CACrBlM,MAAOqiC,EAAeD,GACtB5mC,IAAK8mC,EAAaF,MAI9BmD,WAAY,SAASnD,GACjB,IAAIvyC,EAAI21C,EAAeA,EAAev5C,OAAS,GAC/C,OAAO,IAAiB,oBAAV4D,EAAEgH,KAA6B4K,GACrB,sBAAV5R,EAAEgH,MAAgChH,EAAE4tB,KAAO2kB,EAAe,SAAVvyC,EAAEqa,KAAkBI,GAA4B,OAAVza,EAAEqa,KAAgBK,GAAgBF,GACxH,oBAAoBjX,KAAKvD,EAAEgH,MAAShH,EAAE+0C,QAAUxC,EAAIlhC,GAAmBmO,GAC7D,mBAAVxf,EAAEgH,KAA6BhH,EAAE+0C,QAAUxC,EAAI7yB,GAAmBD,GACxD,sBAAVzf,EAAEgH,KAAgChH,EAAE4tB,KAAO2kB,EAAIt7B,GAAmB+B,GACxD,uBAAVhZ,EAAEgH,KAAiChH,EAAE4tB,KAAO2kB,EAAIv7B,GAAkBgC,GACxD,2BAAVhZ,EAAEgH,KAAqChH,EAAE6Z,OAAO9d,SAASw2C,GAAMv5B,GAAmBiC,GACxE,mBAAVjb,EAAEgH,KAA6BhH,EAAE4tB,KAAO2kB,EAAI9zB,GAAkBxD,GACpD,YAAVjb,EAAEgH,KAAsBhH,EAAEyD,MAAQ8uC,GAAKvyC,EAAEk0C,UAAYl0C,EAAEiH,QAAUsrC,EAAIt3B,GAAgB4D,GAC3E,oBAAV7e,EAAEgH,KAA8BhH,EAAE4tB,KAAO2kB,EAAI/zB,GAAqBvD,GACxD,oBAAVjb,EAAEgH,KAA8BhH,EAAEk0C,SAAWj5B,GAAgB4D,GACnD,eAAV7e,EAAEgH,KAAwBoO,GAChB,kBAAVpV,EAAEgH,MAAsC,qBAAVhH,EAAEgH,KAA8BoP,GAC9D6E,IAAe,CACb9K,MAAQqiC,EAAeD,GACvB5mC,IAAQ8mC,EAAaF,GACrB12C,KAAQ02C,EAAE12C,SAgelC,SAAS+5C,EAAUC,GACf,GAAoB,WAAhBA,EAAQ7uC,KACR,OAAsB,MAAf6uC,EAAQzsC,IAAcysC,EAAQzsC,IAAMysC,EAAQ5uC,MAAQ,GAInE,SAASurC,EAAeqD,GACpB,IAAIC,EAAMD,EAAQC,IAAK3lC,EAAQ2lC,GAAOA,EAAI3lC,MACtC4lC,EAAQF,EAAQE,MACpB,OAAO,IAAIxsC,GAAU,CACjBJ,KAAU2sC,GAAOA,EAAIvpC,OACrB5F,KAAUwJ,GAASA,EAAMxJ,KACzBC,IAAUuJ,GAASA,EAAM6lC,OACzBtwC,IAAUqwC,EAAQA,EAAM,GAAKF,EAAQ1lC,MACrCpH,QAAUoH,GAASA,EAAMxJ,KACzBqC,OAAUmH,GAASA,EAAM6lC,OACzB/sC,OAAU8sC,EAAQA,EAAM,GAAKF,EAAQ1lC,MACrC/G,IAAUwsC,EAAUC,KAI5B,SAASpD,EAAaoD,GAClB,IAAIC,EAAMD,EAAQC,IAAKnqC,EAAMmqC,GAAOA,EAAInqC,IACpCoqC,EAAQF,EAAQE,MACpB,OAAO,IAAIxsC,GAAU,CACjBJ,KAAU2sC,GAAOA,EAAIvpC,OACrB5F,KAAUgF,GAAOA,EAAIhF,KACrBC,IAAU+E,GAAOA,EAAIqqC,OACrBtwC,IAAUqwC,EAAQA,EAAM,GAAKF,EAAQlqC,IACrC5C,QAAU4C,GAAOA,EAAIhF,KACrBqC,OAAU2C,GAAOA,EAAIqqC,OACrB/sC,OAAU8sC,EAAQA,EAAM,GAAKF,EAAQlqC,IACrCvC,IAAUwsC,EAAUC,KAI5B,SAAS7xC,EAAIiyC,EAASC,EAAQC,GAC1B,IAAIC,EAAY,qBAAuBH,EAAU,SACjDG,GAAa,iBAAmBF,EAAOr6C,KAAO,sDAI9C,IAAIw6C,EAAY,mBAAqBJ,EAAU,SAC/CI,GAAa,mBACEh1C,KAAKC,UAAU20C,GAE1BE,GAASA,EAAQx6C,MAAM,WAAWqW,QAAQ,SAAS9P,GACnD,IAAI7B,EAAI,sCAAsCgvB,KAAKntB,GACnD,IAAK7B,EAAG,MAAM,IAAIzD,MAAM,kCAAoCsF,GAC5D,IAAIo0C,EAAMj2C,EAAE,GAAIk2C,EAAMl2C,EAAE,GAAIm2C,EAAKn2C,EAAE,GAGnC,OAFA+1C,GAAa,MAAQI,EAAK,KAC1BH,GAAa,MAAQC,EAAM,KACnBC,GACJ,IAAK,IACDH,GAAa,KAAOE,EAAM,iBAC1BD,GAAa,KAAQG,EAAK,eAC1B,MACJ,IAAK,IACDJ,GAAa,cAAgBE,EAAM,IACnCD,GAAa,YAAcG,EAAK,IAChC,MACJ,IAAK,IACDJ,GAAa,KAAOE,EACpBD,GAAa,KAAOG,EACpB,MACJ,IAAK,IACDJ,GAAa,cAAgBE,EAAM,SACnCD,GAAa,kBACb,MACJ,QACI,MAAM,IAAIz5C,MAAM,yCAA2CsF,MAIvEk0C,GAAa,UACbC,GAAa,SAMbD,EAAY,IAAIx0C,SAAS,KAAM,iBAAkB,eAAgB,WAAY,UAAYw0C,EAAY,IAAzF,CACR1M,GAAK8I,EAAgBC,EAAcC,GAEvC2D,EAAY,IAAIz0C,SAAS,SAAU,eAAgB,eAAgB,UAAYy0C,EAAY,IAA/E,CACRI,EAAQC,EAAcC,GAE1BtE,EAAU4D,GAAWG,EACrBQ,EAAWV,EAAQG,GAnjBvBhE,EAAUwE,iBACVxE,EAAUyE,gBAAkB,SAAsBvE,GAG9C,OAAO,KAFM,WAAYA,EAAIA,EAAE5oC,OACf,mBAAV4oC,EAAEvrC,MACawZ,GAAkBrd,IAAkB,CACrDgN,MAAaqiC,EAAeD,GAC5B5mC,IAAa8mC,EAAaF,GAC1B95B,SAAa85B,EAAE95B,SACf5V,WAAa6vC,EAASH,EAAES,aAIhCX,EAAU0E,iBACV1E,EAAU2E,gBAAkB,SAAwBzE,GAChD,OAAO,IAAgB,qBAAXA,EAAEvrC,KAA8BuN,GAAeiJ,IAAqB,CAC5ErN,MAAWqiC,EAAeD,GAC1B5mC,IAAW8mC,EAAaF,GACxB12C,KAAW62C,EAASH,EAAE3kB,IACtBlP,QAAWg0B,EAASH,EAAE0E,YACtBn7B,WAAYy2B,EAAE9vC,KAAKA,KAAKuB,IAAI0uC,MAIpC1uC,EAAI,iBAAkBuO,IACtBvO,EAAI,iBAAkBqO,GAAoB,aAC1CrO,EAAI,cAAe0Q,GAAQ,0DAC3B1Q,EAAI,mBAAoBmO,GAAsB,0BAC9CnO,EAAI,iBAAkByO,GAAW,eACjCzO,EAAI,oBAAqBkO,GAAc,eACvClO,EAAI,gBAAiB0R,GAAU,gCAC/B1R,EAAI,kBAAmB8Q,GAAY,uCACnC9Q,EAAI,kBAAmB6Q,GAAY,kBACnC7Q,EAAI,iBAAkBgR,GAAW,kBACjChR,EAAI,iBAAkB4O,GAAW,6BACjC5O,EAAI,mBAAoB2O,GAAQ,6BAChC3O,EAAI,eAAgBmQ,GAAS,qDAC7BnQ,EAAI,iBAAkB0P,GAAW,sCACjC1P,EAAI,iBAAkB+P,GAAW,mDACjC/P,EAAI,kBAAmBsc,GAAW,uBAClCtc,EAAI,kBAAmBqd,GAAW,yCAClCrd,EAAI,oBAAqB0O,IACzB1O,EAAI,qBAAsB2W,GAAY,uBACtC3W,EAAI,cAAeqR,GAAW,4BAE9BrR,EAAI,iBAAkB6b,IACtB7b,EAAI,QAAS8b,IACb9b,EAAI,mBAAoBd,GAAY,6CACpCc,EAAI,oBAAqBd,GAAY,6CACrCc,EAAI,uBAAwBgY,GAAY,6CACxChY,EAAI,wBAAyBhB,GAAiB,gEAC9CgB,EAAI,gBAAiBwY,GAAS,qCAC9BxY,EAAI,iBAAkBiZ,GAAU,qCAEhC25B,EAAWn1B,GAAc,SAAwB8wB,GAC7C,OAAOoE,EAAa,UAAWpE,KAGnCqE,EAAWl+B,GAAe,SAAuB65B,EAAGhwC,GAChD,MAAO,CACHyE,KAAMkwC,IAA4B,cAAgB,gBAClDlE,SAAUyD,EAAOlE,EAAE1vC,eAI3B+zC,EAAWx2B,GAA4B,SAAyCmyB,GAC5E,MAAO,CACHvrC,KAAM,2BACNupB,IAAKkmB,EAAOlE,EAAE5oC,QACd4pC,MAAOkD,EAAOlE,EAAE3nC,oBAIxBgsC,EAAWh5B,GAAoB,SAAgC20B,GAG3D,IAFA,IAAIc,EAAS,GACT1wC,EAAc,GACTzG,EAAI,EAAGA,EAAIq2C,EAAE70B,SAASthB,OAAQF,IAC/BA,EAAI,GAAM,EACVyG,EAAY3D,KAAKy3C,EAAOlE,EAAE70B,SAASxhB,KAEnCm3C,EAAOr0C,KAAK,CACRgI,KAAM,kBACNC,MAAO,CACHmC,IAAKmpC,EAAE70B,SAASxhB,GAAGkN,IACnB+pC,OAAQZ,EAAE70B,SAASxhB,GAAG+K,OAE1B+lB,KAAM9wB,IAAMq2C,EAAE70B,SAASthB,OAAS,IAI5C,MAAO,CACH4K,KAAM,kBACNqsC,OAAQA,EACR1wC,YAAaA,KAIrBi0C,EAAW3lC,GAAW,SAAoCshC,GACtD,MAAO,CACHvrC,KAAM,sBACN4mB,GAAI6oB,EAAOlE,EAAE12C,MACbge,OAAQ04B,EAAEh8B,SAASvS,IAAIyyC,GACvBh9B,UAAW84B,EAAEx7B,aACbJ,MAAO47B,EAAE57B,MACTlU,KAAMk0C,EAAa,iBAAkBpE,MAI7CqE,EAAW1/B,GAAc,SAAmCq7B,EAAGhwC,GAC3D,IAAIwU,OAAuCpJ,IAAxBpL,EAAOwU,aACtBxU,EAAOwU,aAAew7B,EAAEx7B,aAC5B,MAAO,CACH/P,KAAM,qBACN4mB,GAAI6oB,EAAOlE,EAAE12C,MACbge,OAAQ04B,EAAEh8B,SAASvS,IAAIyyC,GACvBh9B,UAAW1C,EACXJ,MAAO47B,EAAE57B,MACTlU,KAAMk0C,EAAa,iBAAkBpE,MAI7CqE,EAAWlgC,GAAW,SAAwC67B,GAC1D,IAAI9vC,EAAO8vC,EAAE9vC,gBAAgBpD,MAAQ,CACjC2H,KAAM,iBACNvE,KAAM8vC,EAAE9vC,KAAKuB,IAAIyyC,IACjBA,EAAOlE,EAAE9vC,MACb,MAAO,CACHuE,KAAM,0BACN6S,OAAQ04B,EAAEh8B,SAASvS,IAAIyyC,GACvB9/B,MAAO47B,EAAE57B,MACTlU,KAAMA,KAIdm0C,EAAWnjC,GAAmB,SAA8B8+B,GACxD,OAAIA,EAAEp5B,SACK,CACHnS,KAAM,eACN4R,SAAU25B,EAAEr5B,MAAMlV,IAAIyyC,IAGvB,CACHzvC,KAAM,gBACN8U,WAAYy2B,EAAEr5B,MAAMlV,IAAIyyC,MAIhCG,EAAW7lC,GAAe,SAA0BwhC,GAChD,MAAO,CACHvrC,KAAM,sBACNnE,WAAY,CACRmE,KAAM,UACNC,MAAOsrC,EAAEtrC,UAKrB2vC,EAAW3gC,GAAqB,SAAoCs8B,GAChE,MAAO,CACHvrC,KAAM,sBACNnE,WAAY4zC,EAAOlE,EAAE9vC,SAI7Bm0C,EAAWvxB,GAAkB,SAA2BktB,GACpD,MAAO,CACHvrC,KAAM,aACNzD,KAAMkzC,EAAOlE,EAAE1vC,YACfke,WAAYwxB,EAAE9vC,KAAKuB,IAAIyyC,MAI/BG,EAAWphC,GAAS,SAA6B+8B,GAC7C,MAAO,CACHvrC,KAAM,eACNwS,MAAOk9B,EAAanE,GACpBuB,QAAS2C,EAAOlE,EAAEt9B,QAClB8+B,gBAAiB,GACjBC,UAAWyC,EAAOlE,EAAEr9B,aAI5B0hC,EAAWvhC,GAAW,SAA4Bk9B,GAC9C,MAAO,CACHvrC,KAAM,cACNqR,MAAOo+B,EAAOlE,EAAEj9B,SAChB6hC,MAAO,KACP10C,KAAMi0C,EAAanE,MAI3BqE,EAAWvjC,GAAiB,SAAoCk/B,GAC5D,MAAO,CACHvrC,KAAM,sBACNqT,KACIk4B,aAAaz3B,GAAY,QACzBy3B,aAAa13B,GAAU,MAAQ,MACnC65B,aAAcnC,EAAEj/B,YAAYtP,IAAIyyC,MAIxCG,EAAW7gC,GAAY,SAAkCw8B,GACrD,OAAIA,EAAE38B,eACoC,MAAlC28B,EAAE38B,eAAe,GAAG/Z,KAAKA,KAClB,CACHmL,KAAM,uBACNuF,OAAQkqC,EAAOlE,EAAE9gC,cAGlB,CACHzK,KAAM,yBACN4tC,WAAYrC,EAAE38B,eAAe5R,IAAI,SAAUozC,GACvC,MAAO,CACHpwC,KAAM,kBACN0rB,SAAU+jB,EAAOW,EAAa93B,cAC9By1B,MAAO0B,EAAOW,EAAav7C,SAGnCq5C,YAAauB,EAAOlE,EAAEz8B,qBACtBvJ,OAAQkqC,EAAOlE,EAAE9gC,cAGlB,CACHzK,KAAMurC,EAAE58B,WAAa,2BAA6B,yBAClDu/B,YAAauB,EAAOlE,EAAE18B,gBAAkB08B,EAAEz8B,wBAIlD8gC,EAAWplC,GAAY,SAAkC+gC,GACrD,IAAIqC,EAAa,GAqBjB,OApBIrC,EAAErhC,eACF0jC,EAAW51C,KAAK,CACZgI,KAAM,yBACN+tC,MAAO0B,EAAOlE,EAAErhC,iBAGpBqhC,EAAEphC,gBAA4D,MAA1CohC,EAAEphC,eAAe,GAAGmO,aAAazjB,KACrD+4C,EAAW51C,KAAK,CACZgI,KAAM,2BACN+tC,MAAO0B,EAAOlE,EAAEphC,eAAe,GAAGtV,QAE/B02C,EAAEphC,gBACTohC,EAAEphC,eAAea,QAAQ,SAASolC,GAC9BxC,EAAW51C,KAAK,CACZgI,KAAM,kBACN+tC,MAAO0B,EAAOW,EAAav7C,MAC3Bi5C,SAAU2B,EAAOW,EAAa93B,kBAInC,CACHtY,KAAM,oBACN4tC,WAAYA,EACZroC,OAAQkqC,EAAOlE,EAAE9gC,gBAIzBmlC,EAAWl0C,GAAc,SAAmC6vC,GACxD,MAAO,CACHvrC,KAAM,qBACNrE,YAAa4vC,EAAE5vC,YAAYqB,IAAIyyC,MAIvCG,EAAW51B,GAAgB,SAAiCuxB,GACxD,IAAI8E,EAAa9E,aAAaxvC,GAC9B,MAAO,CACHiE,KAAM,mBACN2M,OAAQ8iC,EAAOlE,EAAE1vC,YACjBqxC,SAAUmD,EACV/9B,SAAU+9B,EAAaZ,EAAOlE,EAAEj5B,UAAY,CAACtS,KAAM,aAAcnL,KAAM02C,EAAEj5B,aAIjFs9B,EAAWpxB,GAAW,SAAsB+sB,GACxC,MAAO,CACHvrC,KAAoB,MAAdurC,EAAE95B,UAAkC,MAAd85B,EAAE95B,SAAmB,mBAAqB,kBACtEA,SAAU85B,EAAE95B,SACZ9O,OAAQ4oC,aAAa/xB,GACrBwyB,SAAUyD,EAAOlE,EAAE1vC,eAI3B+zC,EAAW1zC,GAAY,SAAiCqvC,GACpD,MAAkB,KAAdA,EAAE95B,UAAmBy+B,IACd,CACHlwC,KAAM,oBACNxG,KAAMi2C,EAAOlE,EAAE/xC,MACfC,MAAOg2C,EAAOlE,EAAE9xC,QAGjB,CACHuG,KAAoB,MAAdurC,EAAE95B,UAAkC,MAAd85B,EAAE95B,SAAmB,oBAAsB,mBACvEjY,KAAMi2C,EAAOlE,EAAE/xC,MACfiY,SAAU85B,EAAE95B,SACZhY,MAAOg2C,EAAOlE,EAAE9xC,UAIxBm2C,EAAW76B,GAAW,SAAgCw2B,GAClD,MAAO,CACHvrC,KAAM,kBACN4R,SAAU25B,EAAE35B,SAAS5U,IAAIyyC,MAIjCG,EAAW/6B,GAAY,SAAiC02B,GACpD,MAAO,CACHvrC,KAAM,mBACN8U,WAAYy2B,EAAEz2B,WAAW9X,IAAIyyC,MAIrCG,EAAW31B,GAAoB,SAAyBsxB,EAAGhwC,GACvD,IAgBI8X,EAhBA5W,EAAM8uC,EAAE9uC,eAAe0a,GAAWs4B,EAAOlE,EAAE9uC,KAAO,CAClDuD,KAAM,aACNC,MAAOsrC,EAAE9uC,KAEQ,iBAAV8uC,EAAE9uC,MACTA,EAAM,CACFuD,KAAM,UACNC,MAAOi9B,OAAOqO,EAAE9uC,OAGH,iBAAV8uC,EAAE9uC,MACTA,EAAM,CACFuD,KAAM,aACNnL,KAAM02C,EAAE9uC,MAIhB,IAAI6zC,EAAiC,iBAAV/E,EAAE9uC,KAAqC,iBAAV8uC,EAAE9uC,IACtDywC,GAAWoD,MAA0B/E,EAAE9uC,eAAewhB,KAAestB,EAAE9uC,eAAewX,IAW1F,OAVIs3B,aAAan5B,IACbiB,EAAO,OACP65B,GAAYoD,GAEZ/E,aAAatzB,GACb5E,EAAO,MAEPk4B,aAAarzB,KACb7E,EAAO,OAEP9X,aAAkBkjB,GACX,CACHze,KAAM,mBACNktC,SAAUA,EACV75B,KAAMA,EACN2E,OAAQuzB,EAAEvzB,OACVvb,IAAKgzC,EAAOlE,EAAE9uC,KACdwD,MAAOwvC,EAAOlE,EAAEtrC,QAGjB,CACHD,KAAM,WACNktC,SAAUA,EACV75B,KAAMA,EACN5W,IAAKA,EACLwD,MAAOwvC,EAAOlE,EAAEtrC,UAIxB2vC,EAAW73B,GAAmB,SAAiCwzB,EAAGhwC,GAC9D,OAAIA,aAAkBsZ,GACX,CACH7U,KAAM,WACNktC,WAAY3B,EAAE9uC,eAAewhB,KAAestB,EAAE9uC,eAAewX,GAC7DZ,KAAM,OACNgE,QAAQ,EACR+J,WAAW,EACX3kB,IAAKgzC,EAAOlE,EAAE9uC,KACdwD,MAAOwvC,EAAOlE,EAAEtrC,QAGjB,CACHD,KAAM,mBACNktC,WAAY3B,EAAE9uC,eAAewhB,KAAestB,EAAE9uC,eAAewX,GAC7DZ,KAAgB,gBAAVk4B,EAAE9uC,IAAwB,cAAgB,SAChDub,OAAQuzB,EAAEvzB,OACVvb,IAAKgzC,EAAOlE,EAAE9uC,KACdwD,MAAOwvC,EAAOlE,EAAEtrC,UAIxB2vC,EAAWnxB,GAAW,SAAsB8sB,GAExC,MAAO,CACHvrC,KAFOurC,aAAa/0B,GAAsB,kBAAoB,mBAG9Dy5B,WAAYR,EAAOlE,EAAE7zB,SACrBkP,GAAI2kB,EAAE12C,KAAO46C,EAAOlE,EAAE12C,MAAQ,KAC9B4G,KAAM,CACFuE,KAAM,YACNvE,KAAM8vC,EAAEz2B,WAAW9X,IAAIyyC,OAKnCG,EAAWv6B,GAAe,SAA6Bk2B,GACnD,MAAO,CACHvrC,KAAM,eACNyuC,KAAM,CACFzuC,KAAM,aACNnL,KAAM,OAEVyd,SAAU,CACNtS,KAAM,aACNnL,KAAM,aAKlB+6C,EAAW3xB,GAAY,SAA2BstB,EAAGhwC,GACjD,GAAIgwC,aAAa1zB,IAAoBtc,EAAOpB,MACxC,MAAO,CACH6F,KAAM,UACNC,MAAOsrC,EAAE12C,MAGjB,IAAIye,EAAMi4B,EAAE5hB,aACZ,MAAO,CACH3pB,KAAM,aACNnL,KAAMye,EAAMA,EAAIoT,cAAgBpT,EAAIze,KAAO02C,EAAE12C,QAIrD+6C,EAAWz7B,GAAY,SAA8Bo3B,GACjD,IAAI+C,EAAU/C,EAAEtrC,MAAMsF,OAClBgpC,EAAQhD,EAAEtrC,MAAMkiB,WAAWouB,MAAM,cAAc,GACnD,MAAO,CACHvwC,KAAM,UACNC,MAAO,IAAI3D,OAAOgyC,EAASC,GAC3BnsC,IAAKmpC,EAAEtrC,MAAM2F,WACbkiC,MAAO,CACHwG,QAASA,EACTC,MAAOA,MAKnBqB,EAAWhxB,GAAc,SAAwB2sB,GAC7C,IAAItrC,EAAQsrC,EAAEtrC,MACd,MAAqB,iBAAVA,IAAuBA,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,GAChE,CACHD,KAAM,kBACNyR,SAAU,IACV9O,QAAQ,EACRqpC,SAAU,CACNhsC,KAAM,UACNC,OAAQA,EACRmC,IAAKmpC,EAAEpiC,MAAM/G,MAIlB,CACHpC,KAAM,UACNC,MAAOA,EACPmC,IAAKmpC,EAAEpiC,MAAM/G,OAIrBwtC,EAAW7wB,GAAU,SAAqBwsB,GACtC,MAAO,CACHvrC,KAAM,aACNnL,KAAMgP,OAAO0nC,EAAEtrC,UAIvBkf,GAAY9D,UAAU,iBAAkBuD,GAAanpB,UAAU+6C,gBAC/Dl8B,GAAS+G,UAAU,iBAAkBuD,GAAanpB,UAAU+6C,gBAC5Dv+B,GAASoJ,UAAU,iBAAkB,WAA8B,OAAO,OAE1EkB,GAAUlB,UAAU,iBAAkBhQ,GAAmB5V,UAAU+6C,gBACnExhC,GAAWqM,UAAU,iBAAkBnL,GAAaza,UAAU+6C,gBA+F9D,IAAI7B,EAAiB,KAErB,SAASjD,EAASpwC,GACdqzC,EAAe32C,KAAKsD,GACpB,IAAI/E,EAAc,MAAR+E,EAAe+vC,EAAU/vC,EAAK0E,MAAM1E,GAAQ,KAEtD,OADAqzC,EAAe9pC,MACRtO,EA6BX,SAASq5C,EAAWV,EAAQpC,GACxBoC,EAAO7zB,UAAU,iBAAkB,SAAS9f,GACxC,OApBak1C,EAoBM56C,KApBEg5C,EAoBI/B,EAAQj3C,KAAM0F,GAnBvC4N,EAAQsnC,EAAOtnC,MACfxE,EAAM8rC,EAAO9rC,IACA,MAAbwE,EAAMzK,KAA6B,MAAdiG,EAAI1C,SACzB4sC,EAAQE,MAAQ,CAAC5lC,EAAMzK,IAAKiG,EAAI1C,SAEhCkH,EAAMxJ,OACNkvC,EAAQC,IAAM,CACV3lC,MAAO,CAACxJ,KAAMwJ,EAAMxJ,KAAMqvC,OAAQ7lC,EAAMvJ,KACxC+E,IAAKA,EAAI5C,QAAU,CAACpC,KAAMgF,EAAI5C,QAASitC,OAAQrqC,EAAI3C,QAAU,MAE7DmH,EAAMhH,OACN0sC,EAAQC,IAAIvpC,OAAS4D,EAAMhH,OAG5B0sC,EAfX,IAAqB4B,EAAQ5B,EACrB1lC,EACAxE,IAVRwS,GAASu5B,iBAAmB,SAASp1C,GACjC,IAAIq1C,EAAahC,EACjBA,EAAiB,GACjB,IAAIjM,EAAMgJ,EAASpwC,GAEnB,OADAqzC,EAAiBgC,EACVjO,GA2BX,IAAIkO,EAAe,KAEnB,SAASnB,EAAOn0C,GACS,OAAjBs1C,IAAyBA,EAAe,IAC5CA,EAAa54C,KAAKsD,GAClB,IAAIonC,EAAc,MAARpnC,EAAeA,EAAKk1C,eAAeI,EAAaA,EAAax7C,OAAS,IAAM,KAGtF,OAFAw7C,EAAa/rC,MACe,IAAxB+rC,EAAax7C,SAAgBw7C,EAAe,MACzClO,EAGX,SAASwN,IAEL,IADA,IAAIh7C,EAAI07C,EAAax7C,OACdF,KACH,GAAI07C,EAAa17C,aAAcuX,GAC3B,OAAO,EAGf,OAAO,EAGX,SAASijC,EAAap0C,GAClB,MAAO,CACH0E,KAAM,iBACNvE,KAAMH,EAAKG,KAAKuB,IAAIyyC,IAI5B,SAASE,EAAa3vC,EAAM1E,GACxB,IAAIG,EAAOH,EAAKG,KAAKuB,IAAIyyC,GAIzB,OAHIn0C,EAAKG,KAAK,aAAcwT,IAAuB3T,EAAKG,KAAK,GAAGA,gBAAgBqO,IAC5ErO,EAAK0a,QAAQs5B,EAAO,IAAIlkC,GAAmBjQ,EAAKG,KAAK,MAElD,CACHuE,KAAMA,EACNvE,KAAMA,IA9gClB,YDvFA,SAAgBo1C,EAAO1pC,GACnB,IApCqBlI,EACjBsxC,EAmCAt0B,EAAgB9E,GAAS8E,cAC7B,IAqBI,IAiBI60B,EAjBAC,GApBJ5pC,EAAU/Q,EAAS+Q,EAAS,CACxBypB,SAAU,GACVvpB,UAAMV,EACNqqC,SAAS,EACTvwB,KAAK,EACL8J,qBAAiB5jB,EACjB2jB,aAAa,EACbE,OAAQ,GACRljB,QAAQ,EACR2pC,UAAW,KACX1pB,OAAQ,GACRrgB,MAAO,GACP2lB,YAAQlmB,EACRua,UAAU,EACVgwB,WAAW,EACXH,SAAS,EACTvpC,UAAU,EACV6oB,UAAU,EACV8gB,MAAM,IACP,IACmBJ,SAAW,CAC7B5nC,MAAO++B,KAAKkJ,YAEgBzqC,IAA5BQ,EAAQojB,kBACRpjB,EAAQojB,gBAAkBpjB,EAAQmjB,kBAEf3jB,IAAnBQ,EAAQ0lB,SACR1lB,EAAQ0lB,OAAS1lB,EAAQypB,UAAYzpB,EAAQqjB,QAEjDwgB,GAAc,OAAQ7jC,EAAS,CAAE,QAAS,WAAY,WACtD6jC,GAAc,MAAO7jC,EAAS,CAAE,WAAY,SAAU,WACtD6jC,GAAc,kBAAmB7jC,EAAS,CAAE,WAAY,WACxD6jC,GAAc,cAAe7jC,EAAS,CAAE,WAAY,WACpD6jC,GAAc,SAAU7jC,EAAS,CAAE,QAAS,WAAY,WACxD6jC,GAAc,WAAY7jC,EAAS,CAAE,SAAU,WAC/C6jC,GAAc,WAAY7jC,EAAS,CAAE,WAAY,WACjD6jC,GAAc,WAAY7jC,EAAS,CAAE,aAEjCA,EAAQqjB,SACRrjB,EAAQqjB,OAASp0B,EAAS+Q,EAAQqjB,OAAQ,CACtCC,MAAOtjB,EAAQ8pC,YAAc9pC,EAAQ8pC,UAAU1gB,MAAQ,IACvDlG,MAAM,EACN5J,KAAK,EACL8J,iBAAiB,EACjBD,aAAa,EACbhjB,QAAQ,EACRwN,YAAY,EACZqV,SAAU,GACVjJ,UAAU,EACV1Z,UAAU,IACX,GACCL,EAAQqjB,OAAO1V,aACyB,iBAA7B3N,EAAQqjB,OAAO1V,aACtB3N,EAAQqjB,OAAO1V,WAAa,IAE5B3N,EAAQqjB,OAAO1V,WAAW8yB,cAC1BkJ,EAAe3pC,EAAQqjB,OAAO1V,WAAWqV,SACpC9xB,MAAM+uB,QAAQ0pB,KAAeA,EAAe,IACjD3pC,EAAQqjB,OAAO1V,WAAWqV,SAAW2mB,IAErC3pC,EAAQ8pC,WAAe,UAAW9pC,EAAQqjB,OAAO1V,aACjD3N,EAAQqjB,OAAO1V,WAAW2V,MAAQtjB,EAAQ8pC,UAAUn4C,OAAS,KAGrEoyC,GAAW/jC,EAAQqjB,OAAOC,OAC1BygB,GAAW/jC,EAAQqjB,OAAO1V,WAAW2V,QAErCtjB,EAAQ+pC,YACR/pC,EAAQ+pC,UAAY96C,EAAS+Q,EAAQ+pC,UAAW,CAC5CxsC,QAAS,KACThF,SAAU,KACV2xC,gBAAgB,EAChBlH,KAAM,KACNmH,IAAK,OACN,IAEP,IAOI9pC,EAPA6oB,EAAW,GAQf,GAPIlpB,EAAQkpB,WAAalZ,GAAS8E,gBAC9B9E,GAAS8E,cAAgB,SAASs1B,GAC9BlhB,EAASr4B,KAAKu5C,KAGlBR,IAASA,EAAQ7pC,MAAQghC,KAAKkJ,OAE9BP,aAAiBp2B,GACjBjT,EAAWqpC,MACR,CAMH,IAAK,IAAIh8C,IALW,iBAATg8C,IACPA,EAAQ,CAAEA,IAEd1pC,EAAQD,MAAQC,EAAQD,OAAS,GACjCC,EAAQD,MAAMM,SAAW,KACRqpC,EAAO,GAAIr6C,EAAIq6C,EAAOh8C,KACnCsS,EAAQD,MAAMxH,SAAW7K,EACzBsS,EAAQD,MAAMM,SAAWN,GAAM2pC,EAAMh8C,GAAOsS,EAAQD,OAChDC,EAAQ+pC,WAA0C,UAA7B/pC,EAAQ+pC,UAAUxsC,SAAqB,CAC5D,GAAInP,OAAO01C,KAAK4F,GAAOz7C,OAAS,EAC5B,MAAM,IAAIQ,MAAM,oDACpBuR,EAAQ+pC,UAAUxsC,SAxIbzF,EAwIuC4xC,EAAMh8C,GAvI9D07C,OAAAA,GAAAA,EAAQ,oGAAmGloB,KAAKppB,IAK7GwrC,GAAS8F,EAAM,KAHlBp5B,GAAS+E,KAAK,+BACP,OAuIH1U,EAAWL,EAAQD,MAAMM,SAEzBspC,GACAxJ,GAAoB9/B,EAAUspC,GAE9B3pC,EAAQgqC,OACR3pC,EAAWA,EAASgW,cAAcrW,EAAQgqC,OAE1ChqC,EAAQ6pC,UACRxpC,EAAWA,EAASkW,aAAavW,EAAQ6pC,UAEzCD,IAASA,EAAQlkB,OAASqb,KAAKkJ,OAO/BL,IAASA,EAAQngB,SAAWsX,KAAKkJ,OACjCjqC,EAAQypB,WAAUppB,EAAW,IAAIimB,GAAWtmB,EAAQypB,UAAUA,SAASppB,IACvEupC,IAASA,EAAQryB,MAAQwpB,KAAKkJ,OAC9BjqC,EAAQqjB,QAAQhjB,EAAS0pB,iBAAiB/pB,EAAQqjB,QAClDumB,IAASA,EAAQvmB,OAAS0d,KAAKkJ,OAC/BjqC,EAAQqjB,SACRN,GAAOyC,QACPnlB,EAASq7B,uBAAuB17B,EAAQqjB,QACxChjB,EAASs7B,aAAa37B,EAAQqjB,SAE9BumB,IAASA,EAAQj8B,WAAaozB,KAAKkJ,OACnCjqC,EAAQqjB,QAAUrjB,EAAQqjB,OAAO1V,aACjCtN,EAAWggC,GAAkBhgC,EAAUL,EAAQqjB,OAAO1V,aAEtDi8B,IAASA,EAAQxpB,OAAS2gB,KAAKkJ,OACnC,IAAIptC,EAAS,GAIb,GAHImD,EAAQogB,OAAOmb,MACf1+B,EAAO0+B,IAAMl7B,IAEZhR,EAAI2Q,EAAQogB,OAAQ,SAAWpgB,EAAQogB,OAAOtoB,KAAM,CACrD,GAAIkI,EAAQ+pC,YACgC,iBAA7B/pC,EAAQ+pC,UAAUxsC,UACzByC,EAAQ+pC,UAAUxsC,QAAUrK,KAAK6M,MAAMC,EAAQ+pC,UAAUxsC,UAE7DyC,EAAQogB,OAAOlG,WE/J/B,SAAmBla,GACfA,EAAU/Q,EAAS+Q,EAAS,CACxBhF,KAAO,KACPgoC,KAAO,KACP9jB,KAAO,KAEPmrB,eAAiB,EACjBC,eAAiB,IAErB,IAAIh/B,EAAY,IAAIi/B,EAAcC,mBAAmB,CACjDxvC,KAAagF,EAAQhF,KACrByvC,WAAazqC,EAAQgjC,OAErB0H,EAAW1qC,EAAQkf,MAAQ,IAAIqrB,EAAcI,kBAAkB3qC,EAAQkf,MAgC3E,OA9BIwrB,GACAA,EAASE,QAAQ/mC,QAAQ,SAASzF,GAC9B,IAAIysC,EAAgBH,EAASI,iBAAiB1sC,GAAQ,GAClDysC,GACAv/B,EAAUy/B,iBAAiB3sC,EAAQysC,KA0BxC,CACHr1C,IAtBJ,SAAa4I,EAAQ4sC,EAAUC,EAASC,EAAWC,EAAUz9C,GACzD,GAAIg9C,EAAU,CACV,IAAIzgB,EAAOygB,EAASU,oBAAoB,CACpC5yC,KAAM0yC,EACNrD,OAAQsD,IAEZ,GAAoB,OAAhBlhB,EAAK7rB,OACL,OAEJA,EAAS6rB,EAAK7rB,OACd8sC,EAAYjhB,EAAKzxB,KACjB2yC,EAAWlhB,EAAK4d,OAChBn6C,EAAOu8B,EAAKv8B,MAAQA,EAExB4d,EAAU+/B,WAAW,CACjBC,UAAY,CAAE9yC,KAAMwyC,EAAWhrC,EAAQsqC,eAAgBzC,OAAQoD,GAC/DM,SAAY,CAAE/yC,KAAM0yC,EAAYlrC,EAAQqqC,eAAgBxC,OAAQsD,GAChE/sC,OAAYA,EACZ1Q,KAAYA,KAKhBa,IAAa,WAAa,OAAO+c,GACjC0P,SAAa,WAAa,OAAO9nB,KAAKC,UAAUmY,EAAUkgC,YF+GtBC,CAAU,CAClCzwC,KAAMgF,EAAQ+pC,UAAUxxC,SACxB2mB,KAAMlf,EAAQ+pC,UAAUxsC,QACxBylC,KAAMhjC,EAAQ+pC,UAAU/G,OAExBhjC,EAAQ+pC,UAAUG,gBAAgB,CAClC,GAAIR,aAAiBp2B,GACjB,MAAM,IAAI7kB,MAAM,uCACb,IAAK,IAAIf,KAAQg8C,EAAWr6C,EAAIq6C,EAAOh8C,IAC1CsS,EAAQogB,OAAOlG,WAAW3rB,MAAMw8C,iBAAiBr9C,EAAMg8C,EAAMh8C,WAIlEsS,EAAQogB,OAAOmb,WACfv7B,EAAQogB,OAAOtoB,KACtB,IAAIwpB,EAASrI,GAAajZ,EAAQogB,QAClC/f,EAASuc,MAAM0E,GACfzkB,EAAO/E,KAAOwpB,EAAO/yB,MACjByR,EAAQ+pC,YACRltC,EAAOhH,IAAMmK,EAAQogB,OAAOlG,WAAWc,WACV,UAAzBhb,EAAQ+pC,UAAUI,IAClBttC,EAAO/E,MAAQ,qEAAuE6rC,GAAU9mC,EAAOhH,KAChGmK,EAAQ+pC,UAAUI,MACzBttC,EAAO/E,MAAQ,0BAA4BkI,EAAQ+pC,UAAUI,MA0BzE,OAtBInqC,EAAQ8pC,WAAa9pC,EAAQqjB,SACzBrjB,EAAQqjB,OAAOC,QAAOtjB,EAAQ8pC,UAAU1gB,KAAO4a,GAAQhkC,EAAQqjB,OAAOC,QACtEtjB,EAAQqjB,OAAO1V,YAAc3N,EAAQqjB,OAAO1V,WAAW2V,QACvDtjB,EAAQ8pC,UAAUn4C,MAAQqyC,GAAQhkC,EAAQqjB,OAAO1V,WAAW2V,SAGhEsmB,IACAA,EAAQpsC,IAAMujC,KAAKkJ,MACnBptC,EAAO+sC,QAAU,CACb7pC,MAAO,MAAQ6pC,EAAQlkB,OAASkkB,EAAQ7pC,OACxC2lB,OAAQ,MAAQkkB,EAAQngB,SAAWmgB,EAAQlkB,QAC3C+D,SAAU,MAAQmgB,EAAQryB,MAAQqyB,EAAQngB,UAC1ClS,MAAO,MAAQqyB,EAAQvmB,OAASumB,EAAQryB,OACxC8L,OAAQ,MAAQumB,EAAQj8B,WAAai8B,EAAQvmB,QAC7C1V,WAAY,MAAQi8B,EAAQxpB,OAASwpB,EAAQj8B,YAC7CyS,OAAQ,MAAQwpB,EAAQpsC,IAAMosC,EAAQxpB,QACtCsrB,MAAO,MAAQ9B,EAAQpsC,IAAMosC,EAAQ5nC,SAGzCknB,EAASj7B,SACT4O,EAAOqsB,SAAWA,GAEfrsB,EACT,MAAOqC,GACL,MAAO,CAAEysC,MAAOzsC,GACnB,QACG8Q,GAAS8E,cAAgBA","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\nimport {\n AST_Binary,\n AST_Conditional,\n AST_Dot,\n AST_Sequence,\n AST_Statement,\n AST_Sub,\n AST_UnaryPostfix,\n} from \"./ast.js\";\n\nfunction characters(str) {\n return str.split(\"\");\n}\n\nfunction member(name, array) {\n return array.includes(name);\n}\n\nfunction find_if(func, array) {\n for (var i = 0, n = array.length; i < n; ++i) {\n if (func(array[i]))\n return array[i];\n }\n}\n\nfunction repeat_string(str, i) {\n if (i <= 0) return \"\";\n if (i == 1) return str;\n var d = repeat_string(str, i >> 1);\n d += d;\n if (i & 1) d += str;\n return d;\n}\n\nfunction configure_error_stack(fn) {\n Object.defineProperty(fn.prototype, \"stack\", {\n get: function() {\n var err = new Error(this.message);\n err.name = this.name;\n try {\n throw err;\n } catch(e) {\n return e.stack;\n }\n }\n });\n}\n\nfunction DefaultsError(msg, defs) {\n this.message = msg;\n this.defs = defs;\n}\nDefaultsError.prototype = Object.create(Error.prototype);\nDefaultsError.prototype.constructor = DefaultsError;\nDefaultsError.prototype.name = \"DefaultsError\";\nconfigure_error_stack(DefaultsError);\n\nDefaultsError.croak = function(msg, defs) {\n throw new DefaultsError(msg, defs);\n};\n\nfunction defaults(args, defs, croak) {\n if (args === true)\n args = {};\n var ret = args || {};\n if (croak) for (var i in ret) if (HOP(ret, i) && !HOP(defs, i))\n DefaultsError.croak(\"`\" + i + \"` is not a supported option\", defs);\n for (var i in defs) if (HOP(defs, i)) {\n ret[i] = (args && HOP(args, i)) ? args[i] : defs[i];\n }\n return ret;\n}\n\nfunction merge(obj, ext) {\n var count = 0;\n for (var i in ext) if (HOP(ext, i)) {\n obj[i] = ext[i];\n count++;\n }\n return count;\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 (a instanceof Array) {\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 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\n// this function is taken from Acorn [1], written by Marijn Haverbeke\n// [1] https://github.com/marijnh/acorn\nfunction makePredicate(words) {\n if (!(words instanceof Array)) words = words.split(\" \");\n var f = \"\", cats = [];\n out: for (var i = 0; i < words.length; ++i) {\n for (var j = 0; j < cats.length; ++j)\n if (cats[j][0].length == words[i].length) {\n cats[j].push(words[i]);\n continue out;\n }\n cats.push([words[i]]);\n }\n function quote(word) {\n return JSON.stringify(word).replace(/[\\u2028\\u2029]/g, function(s) {\n switch (s) {\n case \"\\u2028\": return \"\\\\u2028\";\n case \"\\u2029\": return \"\\\\u2029\";\n }\n return s;\n });\n }\n function compareTo(arr) {\n if (arr.length == 1) return f += \"return str === \" + quote(arr[0]) + \";\";\n f += \"switch(str){\";\n for (var i = 0; i < arr.length; ++i) f += \"case \" + quote(arr[i]) + \":\";\n f += \"return true}return false;\";\n }\n // When there are more than three length categories, an outer\n // switch first dispatches on the lengths, to save on comparisons.\n if (cats.length > 3) {\n cats.sort(function(a, b) {return b.length - a.length;});\n f += \"switch(str.length){\";\n for (var i = 0; i < cats.length; ++i) {\n var cat = cats[i];\n f += \"case \" + cat[0].length + \":\";\n compareTo(cat);\n }\n f += \"}\";\n // Otherwise, simply generate a flat `switch` statement.\n } else {\n compareTo(words);\n }\n return new Function(\"str\", f);\n}\n\nfunction all(array, predicate) {\n for (var i = array.length; --i >= 0;)\n if (!predicate(array[i]))\n return false;\n return true;\n}\n\nfunction Dictionary() {\n this._values = Object.create(null);\n this._size = 0;\n}\nDictionary.prototype = {\n set: function(key, val) {\n if (!this.has(key)) ++this._size;\n this._values[\"$\" + key] = val;\n return this;\n },\n add: function(key, val) {\n if (this.has(key)) {\n this.get(key).push(val);\n } else {\n this.set(key, [ val ]);\n }\n return this;\n },\n get: function(key) { return this._values[\"$\" + key]; },\n del: function(key) {\n if (this.has(key)) {\n --this._size;\n delete this._values[\"$\" + key];\n }\n return this;\n },\n has: function(key) { return (\"$\" + key) in this._values; },\n each: function(f) {\n for (var i in this._values)\n f(this._values[i], i.substr(1));\n },\n size: function() {\n return this._size;\n },\n map: function(f) {\n var ret = [];\n for (var i in this._values)\n ret.push(f(this._values[i], i.substr(1)));\n return ret;\n },\n clone: function() {\n var ret = new Dictionary();\n for (var i in this._values)\n ret._values[i] = this._values[i];\n ret._size = this._size;\n return ret;\n },\n toObject: function() { return this._values; }\n};\nDictionary.fromObject = function(obj) {\n var dict = new Dictionary();\n dict._size = merge(dict._values, obj);\n return dict;\n};\n\nfunction HOP(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\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 var node = stack.parent(-1);\n for (var 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_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\nfunction keep_name(keep_setting, name) {\n return keep_setting === true\n || (keep_setting instanceof RegExp && keep_setting.test(name));\n}\n\nexport {\n all,\n characters,\n configure_error_stack,\n defaults,\n Dictionary,\n find_if,\n first_in_statement,\n HOP,\n keep_name,\n makePredicate,\n MAP,\n member,\n merge,\n mergeSort,\n noop,\n push_uniq,\n remove,\n repeat_string,\n return_false,\n return_null,\n return_this,\n return_true,\n string_template,\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 all,\n characters,\n configure_error_stack,\n defaults,\n find_if,\n HOP,\n makePredicate,\n} from \"./utils.js\";\nimport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Await,\n AST_Binary,\n AST_BlockStatement,\n AST_Break,\n AST_Call,\n AST_Case,\n AST_Catch,\n AST_ClassExpression,\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_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} 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;\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\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-Za-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\\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 var char = str.charAt(pos);\n if (is_surrogate_pair_head(char)) {\n var next = str.charAt(pos + 1);\n if (is_surrogate_pair_tail(next)) {\n return char + next;\n }\n }\n if (is_surrogate_pair_tail(char)) {\n var prev = str.charAt(pos - 1);\n if (is_surrogate_pair_head(prev)) {\n return prev + char;\n }\n }\n return char;\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.charAt(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))) {\n if (is_surrogate_pair_tail(str.charCodeAt(i + 1))) {\n surrogates++;\n i++;\n }\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 if (typeof code === \"string\")\n code = code.charCodeAt(0);\n\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction is_surrogate_pair_tail(code) {\n if (typeof code === \"string\")\n code = code.charCodeAt(0);\n return code >= 0xdc00 && code <= 0xdfff;\n}\n\nfunction is_digit(code) {\n return code >= 48 && code <= 57;\n}\n\nfunction is_identifier(name) {\n return typeof name === \"string\" && !RESERVED_WORDS(name);\n}\n\nfunction is_identifier_start(ch) {\n var code = ch.charCodeAt(0);\n return UNICODE.ID_Start.test(ch) || code == 36 || code == 95;\n}\n\nfunction is_identifier_char(ch) {\n var code = ch.charCodeAt(0);\n return UNICODE.ID_Continue.test(ch)\n || code == 36\n || code == 95\n || code == 8204 // \\u200c: zero-width non-joiner \n || code == 8205 // \\u200d: zero-width joiner (in my ECMA-262 PDF, this is also 200c)\n ;\n}\n\nfunction is_identifier_string(str) {\n return /^[a-z_$][a-z0-9_$]*$/i.test(str);\n}\n\nfunction parse_js_number(num) {\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\nfunction JS_Parse_Error(message, filename, line, col, pos) {\n this.message = message;\n this.filename = filename;\n this.line = line;\n this.col = col;\n this.pos = pos;\n}\nJS_Parse_Error.prototype = Object.create(Error.prototype);\nJS_Parse_Error.prototype.constructor = JS_Parse_Error;\nJS_Parse_Error.prototype.name = \"SyntaxError\";\nconfigure_error_stack(JS_Parse_Error);\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\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(ch)) {\n S.newline_before = S.newline_before || !in_string;\n ++S.line;\n S.col = 0;\n if (!in_string && 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-- > 0) 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(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(value)) ||\n (type == \"keyword\" && KEYWORDS_BEFORE_EXPRESSION(value)) ||\n (type == \"punc\" && PUNC_BEFORE_EXPRESSION(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(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 == \".\";\n var num = read_while(function(ch, i) {\n var code = ch.charCodeAt(0);\n switch (code) {\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 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 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 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 (ch >= \"0\" && ch <= \"7\") {\n if (template_string && strict_hex) {\n parse_error(\"Octal escape sequences are not allowed in template strings\");\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(quote_char) {\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 (NEWLINE_CHARS(ch)) 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_char;\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.begin = begin;\n tok.raw = raw;\n tok.end = false;\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.begin = begin;\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, hex;\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(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(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 var mods = read_name();\n try {\n var regexp = new RegExp(source, mods);\n regexp.raw_source = \"/\" + source + \"/\" + mods;\n return token(\"regexp\", regexp);\n } catch(e) {\n parse_error(e.message);\n }\n });\n\n function read_operator(prefix) {\n function grow(op) {\n if (!peek()) return op;\n var bigger = op + peek();\n if (OPERATORS(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(word) ? token(\"atom\", word)\n : !KEYWORDS(word) ? token(\"name\", word)\n : OPERATORS(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(ch);\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(ch)) return token(\"punc\", next());\n if (OPERATOR_CHARS(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 [\"<\", \">\", \"<=\", \">=\", \"in\", \"instanceof\"],\n [\">>\", \"<<\", \">>>\"],\n [\"+\", \"-\"],\n [\"*\", \"/\", \"%\"],\n [\"**\"]\n ],\n {}\n);\n\nvar ATOMIC_START_TOKEN = makePredicate([ \"atom\", \"num\", \"string\", \"regexp\", \"name\" ]);\n\n/* -----[ Parser ]----- */\n\nfunction parse($TEXT, options) {\n\n options = defaults(options, {\n bare_returns : false,\n ecma : 8,\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 || !all(token.comments_before, function(comment) {\n return !comment.nlb;\n });\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() {\n var start = S.token;\n var expr = parser.apply(null, arguments);\n var end = prev();\n expr.start = start;\n expr.end = end;\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 \"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 (find_if(function(l) { return l.name == label.name; }, S.labels)) {\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 = find_if(function(l) { return l.name == label.name; }, S.labels);\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 start = S.token;\n\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 = {};\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[\"$\" + token.value] !== undefined) {\n if (duplicate === false) {\n duplicate = token;\n }\n tracker.check_strict();\n } else {\n parameters[\"$\" + token.value] = true;\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(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 start = S.token;\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 < 8) 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 < 8) 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 = expression(false);\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(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 >= 8);\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 mark_pure(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 \"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 var len = start.comments_before.length;\n [].unshift.apply(ex.start.comments_before, start.comments_before);\n start.comments_before = ex.start.comments_before;\n start.comments_before_length = len;\n if (len == 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 [].push.apply(ex.end.comments_after, end.comments_after);\n end.comments_after = ex.end.comments_after;\n }\n ex.end = end;\n if (ex instanceof AST_Call) mark_pure(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(S.token.type)) {\n return subscripts(as_atom_node(), allow_calls);\n }\n unexpected();\n };\n\n function template_string(tagged) {\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 === false) {\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(function(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 if (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 if (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_ast = function(name, token) {\n if (typeof name === \"string\" || typeof name === \"number\") {\n return new AST_SymbolMethod({\n start: token,\n name: \"\" + name,\n end: prev()\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\", \"}\")) {\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_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 property_token = S.token;\n if (name == \"get\") {\n if (!is(\"punc\") || is(\"punc\", \"[\")) {\n name = get_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 property_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_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 property_token.quote : undefined,\n value : create_accessor(),\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 case \"name\":\n if (tmp.value == \"yield\") {\n if (is_in_generator()) {\n token_error(tmp, \"Yield cannot be used as identifier inside generators\");\n } else if (!is_token(peek(), \"punc\", \":\")\n && !is_token(peek(), \"punc\", \"(\")\n && S.input.has_directive(\"use strict\")) {\n token_error(tmp, \"Unexpected yield identifier inside strict mode\");\n }\n }\n case \"string\":\n case \"num\":\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 function mark_pure(call) {\n var start = call.start;\n var comments = start.comments_before;\n var i = HOP(start, \"comments_before_length\") ? start.comments_before_length : comments.length;\n while (--i >= 0) {\n var comment = comments[i];\n if (/[@#]__PURE__/.test(comment.value)) {\n call.pure = comment;\n break;\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 mark_pure(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 var call_args = embed_tokens(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 < 8) 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(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(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(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_identifier_string,\n is_identifier,\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.js\";\nimport { parse } from \"./parse.js\";\n\nfunction DEFNODE(type, props, methods, base) {\n if (arguments.length < 4) 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 var proto = base && new base;\n if (proto && proto.initialize || (methods && methods.initialize))\n code += \"this.initialize();\";\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.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 (/^\\$/.test(i)) {\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\", {\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}, 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}, AST_Statement);\n\nfunction walk_body(node, visitor) {\n var body = node.body;\n if (body instanceof AST_Node) {\n body._walk(visitor);\n } else 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 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 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}, 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}, 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}, 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}, 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}, AST_StatementWithBody);\n\n/* -----[ scope and functions ]----- */\n\nvar AST_Scope = DEFNODE(\"Scope\", \"variables functions uses_with uses_eval parent_scope enclosed cname\", {\n $documentation: \"Base class for all statements introducing a lexical scope\",\n $propdoc: {\n variables: \"[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope\",\n functions: \"[Object/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 = this.variables.clone();\n if (this.functions) node.functions = this.functions.clone();\n if (this.enclosed) node.enclosed = this.enclosed.slice();\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: \"[Object/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 var self = this;\n return visitor._visit(this, function() {\n self.expression.walk(visitor);\n });\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 = out.concat(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}, 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\", \"inlined\", {\n $documentation: \"A function expression\"\n}, AST_Lambda);\n\nvar AST_Arrow = DEFNODE(\"Arrow\", \"inlined\", {\n $documentation: \"An ES6 Arrow function ((a) => b)\"\n}, AST_Lambda);\n\nvar AST_Defun = DEFNODE(\"Defun\", \"inlined\", {\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 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 if (node instanceof AST_Expansion) {\n out.push(node.expression);\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 this.prefix._walk(visitor);\n this.template_string._walk(visitor);\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});\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}, 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}, 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\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}, 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}, 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}, 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}, 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}, 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}, 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_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});\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});\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 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}, AST_Statement);\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});\n\n/* -----[ OTHER ]----- */\n\nvar AST_Call = DEFNODE(\"Call\", \"expression args\", {\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 },\n _walk: function(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);\n });\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});\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\", null, {\n $documentation: \"A dotted property access expression\",\n _walk: function(visitor) {\n return visitor._visit(this, function() {\n this.expression._walk(visitor);\n });\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}, 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});\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});\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});\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});\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});\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});\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}, 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}, 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}, 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}, AST_ObjectProperty);\n\nvar AST_Class = DEFNODE(\"Class\", \"name extends properties inlined\", {\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(function(prop) {\n prop._walk(visitor);\n });\n });\n },\n}, AST_Scope);\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_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_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\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});\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});\n\n/* -----[ TreeWalker ]----- */\n\nfunction TreeWalker(callback) {\n this.visit = callback;\n this.stack = [];\n this.directives = Object.create(null);\n}\nTreeWalker.prototype = {\n _visit: function(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 parent: function(n) {\n return this.stack[this.stack.length - 2 - (n || 0)];\n },\n push: function(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 pop: function() {\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 self: function() {\n return this.stack[this.stack.length - 1];\n },\n find_parent: function(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 has_directive: function(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 loopcontrol_target: function(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.\nfunction TreeTransformer(before, after) {\n TreeWalker.call(this);\n this.before = before;\n this.after = after;\n}\nTreeTransformer.prototype = new TreeWalker;\n\nexport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Atom,\n AST_Await,\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_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_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_body,\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_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.js\";\n\n(function(undefined) {\n\n function _(node, descend) {\n node.DEFMETHOD(\"transform\", function(tw, in_list) {\n var x, y;\n tw.push(this);\n if (tw.before) x = tw.before(this, descend, in_list);\n if (x === undefined) {\n x = this;\n descend(x, tw);\n if (tw.after) {\n y = tw.after(x, in_list);\n if (y !== undefined) x = y;\n }\n }\n tw.pop();\n return x;\n });\n }\n\n function do_list(list, tw) {\n return MAP(list, function(node) {\n return node.transform(tw, true);\n });\n }\n\n _(AST_Node, noop);\n\n _(AST_LabeledStatement, function(self, tw) {\n self.label = self.label.transform(tw);\n self.body = self.body.transform(tw);\n });\n\n _(AST_SimpleStatement, function(self, tw) {\n self.body = self.body.transform(tw);\n });\n\n _(AST_Block, function(self, tw) {\n self.body = do_list(self.body, tw);\n });\n\n _(AST_Do, function(self, tw) {\n self.body = self.body.transform(tw);\n self.condition = self.condition.transform(tw);\n });\n\n _(AST_While, function(self, tw) {\n self.condition = self.condition.transform(tw);\n self.body = self.body.transform(tw);\n });\n\n _(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\n _(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\n _(AST_With, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = self.body.transform(tw);\n });\n\n _(AST_Exit, function(self, tw) {\n if (self.value) self.value = self.value.transform(tw);\n });\n\n _(AST_LoopControl, function(self, tw) {\n if (self.label) self.label = self.label.transform(tw);\n });\n\n _(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\n _(AST_Switch, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = do_list(self.body, tw);\n });\n\n _(AST_Case, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.body = do_list(self.body, tw);\n });\n\n _(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\n _(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\n _(AST_Definitions, function(self, tw) {\n self.definitions = do_list(self.definitions, tw);\n });\n\n _(AST_VarDef, function(self, tw) {\n self.name = self.name.transform(tw);\n if (self.value) self.value = self.value.transform(tw);\n });\n\n _(AST_Destructuring, function(self, tw) {\n self.names = do_list(self.names, tw);\n });\n\n _(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\n _(AST_Call, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.args = do_list(self.args, tw);\n });\n\n _(AST_Sequence, function(self, tw) {\n self.expressions = do_list(self.expressions, tw);\n });\n\n _(AST_Dot, function(self, tw) {\n self.expression = self.expression.transform(tw);\n });\n\n _(AST_Sub, function(self, tw) {\n self.expression = self.expression.transform(tw);\n self.property = self.property.transform(tw);\n });\n\n _(AST_Yield, function(self, tw) {\n if (self.expression) self.expression = self.expression.transform(tw);\n });\n\n _(AST_Await, function(self, tw) {\n self.expression = self.expression.transform(tw);\n });\n\n _(AST_Unary, function(self, tw) {\n self.expression = self.expression.transform(tw);\n });\n\n _(AST_Binary, function(self, tw) {\n self.left = self.left.transform(tw);\n self.right = self.right.transform(tw);\n });\n\n _(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\n _(AST_Array, function(self, tw) {\n self.elements = do_list(self.elements, tw);\n });\n\n _(AST_Object, function(self, tw) {\n self.properties = do_list(self.properties, tw);\n });\n\n _(AST_ObjectProperty, function(self, tw) {\n if (self.key instanceof AST_Node) {\n self.key = self.key.transform(tw);\n }\n self.value = self.value.transform(tw);\n });\n\n _(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\n _(AST_Expansion, function(self, tw) {\n self.expression = self.expression.transform(tw);\n });\n\n _(AST_NameMapping, function(self, tw) {\n self.foreign_name = self.foreign_name.transform(tw);\n self.name = self.name.transform(tw);\n });\n\n _(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\n _(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\n _(AST_TemplateString, function(self, tw) {\n self.segments = do_list(self.segments, tw);\n });\n\n _(AST_PrefixedTemplateString, function(self, tw) {\n self.prefix = self.prefix.transform(tw);\n self.template_string = self.template_string.transform(tw);\n });\n\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 all,\n defaults,\n first_in_statement,\n makePredicate,\n noop,\n repeat_string,\n return_false,\n return_true,\n} from \"./utils.js\";\n\nimport {\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Await,\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_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_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} from \"./ast.js\";\nimport {\n get_full_char_code,\n get_full_char,\n is_identifier_char,\n is_identifier_string,\n is_identifier,\n is_surrogate_pair_head,\n is_surrogate_pair_tail,\n PRECEDENCE,\n RESERVED_WORDS,\n} from \"./parse.js\";\n\nvar EXPECT_DIRECTIVE = /^$|[;{][\\s\\n]*$/;\n\nfunction is_some_comments(comment) {\n // multiline comment\n return comment.type == \"comment2\" && /@preserve|@license|@cc_on/i.test(comment.value);\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 : false,\n ecma : 5,\n ie8 : false,\n indent_level : 4,\n indent_start : 0,\n inline_script : true,\n keep_quoted_props: false,\n max_line_len : false,\n preamble : null,\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 }, 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 var 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\n var to_utf8 = options.ascii_only ? function(str, identifier) {\n if (options.ecma >= 6) {\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 var s = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n if (is_surrogate_pair_head(str[i]) && !is_surrogate_pair_tail(str[i + 1])\n || is_surrogate_pair_tail(str[i]) && !is_surrogate_pair_head(str[i - 1])) {\n s += \"\\\\u\" + str.charCodeAt(i).toString(16);\n } else {\n s += str[i];\n }\n }\n return s;\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_string(\" \", 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(ch)) {\n OUTPUT += \";\";\n current_col++;\n current_pos++;\n } else {\n ensure_line_len();\n OUTPUT += \"\\n\";\n current_pos++;\n current_line++;\n current_col = 0;\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 var index = OUTPUT.lastIndexOf(\"\\n\");\n return /^ *$/.test(OUTPUT.slice(index + 1));\n }\n\n function prepend_comments(node) {\n var self = this;\n var start = node.start;\n if (!start) return;\n if (start.comments_before && start.comments_before._dumped === self) return;\n var comments = start.comments_before;\n if (!comments) {\n comments = start.comments_before = [];\n }\n comments._dumped = self;\n\n if (node instanceof AST_Exit && node.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 && text._dumped !== self) {\n text._dumped = self;\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 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);\n if (comments.length == 0) return;\n var last_nlb = has_nlb();\n comments.forEach(function(c, i) {\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 if (/comment[134]/.test(c.type)) {\n print(\"//\" + c.value.replace(/[@#]__PURE__/g, \" \") + \"\\n\");\n indent();\n last_nlb = true;\n } else if (c.type == \"comment2\") {\n print(\"/*\" + c.value.replace(/[@#]__PURE__/g, \" \") + \"*/\");\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 comments = token[tail ? \"comments_before\" : \"comments_after\"];\n if (!comments || comments._dumped === self) return;\n if (!(node instanceof AST_Statement || all(comments, function(c) {\n return !/comment[134]/.test(c.type);\n }))) return;\n comments._dumped = self;\n var insert = OUTPUT.length;\n comments.filter(comment_filter, node).forEach(function(c, i) {\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 print(\"//\" + c.value.replace(/[@#]__PURE__/g, \" \"));\n need_newline_indented = true;\n } else if (c.type == \"comment2\") {\n print(\"/*\" + c.value.replace(/[@#]__PURE__/g, \" \") + \"*/\");\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 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 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 var in_directive = false;\n var active_scope = null;\n var use_asm = null;\n\n AST_Node.DEFMETHOD(\"print\", function(stream, force_parens) {\n var self = this, generator = self._codegen;\n if (self instanceof AST_Scope) {\n active_scope = self;\n } else if (!use_asm && self instanceof AST_Directive && self.value == \"use asm\") {\n use_asm = active_scope;\n }\n function doit() {\n stream.prepend_comments(self);\n self.add_source_map(stream);\n generator(self, stream);\n stream.append_comments(self);\n }\n stream.push_node(self);\n if (force_parens || self.needs_parens(stream)) {\n stream.with_parens(doit);\n } else {\n doit();\n }\n stream.pop_node();\n if (self === use_asm) {\n 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 s = OutputStream(options);\n this.print(s);\n return s.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 return p instanceof AST_Call && p.expression === this;\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 var po = p.operator, pp = PRECEDENCE[po];\n var so = this.operator, 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 var parens = false;\n this.walk(new TreeWalker(function(node) {\n if (parens || node instanceof AST_Scope) return true;\n if (node instanceof AST_Call) {\n parens = true;\n return true;\n }\n }));\n return parens;\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 (!need_constructor_parens(this, output)\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_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 in_directive = allow_directives;\n body.forEach(function(stmt, i) {\n if (in_directive === true && !(stmt instanceof AST_Directive ||\n stmt instanceof AST_EmptyStatement ||\n (stmt instanceof AST_SimpleStatement && stmt.body instanceof AST_String)\n )) {\n 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 (in_directive === true &&\n stmt instanceof AST_SimpleStatement &&\n stmt.body instanceof AST_String\n ) {\n in_directive = false;\n }\n });\n 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_Arrow\n || tag instanceof AST_Binary\n || tag instanceof AST_Conditional\n || tag instanceof AST_Sequence\n || tag instanceof AST_Unary;\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 ||\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 if (self.body instanceof AST_Node) {\n self.body.print(output);\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 this.value.print(output);\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) node.walk(new TreeWalker(function(node) {\n if (parens || node instanceof AST_Scope) return true;\n if (node instanceof AST_Binary && node.operator == \"in\") {\n parens = true;\n return true;\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 && !need_constructor_parens(self, output))\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 if (output.option(\"ie8\") && RESERVED_WORDS(prop)) {\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 = self.left.truthy ? true : self.left.falsy ? false : 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 self.truthy = true;\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 }\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.left instanceof AST_Constant\n && self.right.is_string(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: make_node(AST_String, self.left, {\n value: \"\" + self.left.getValue() + self.right.left.getValue(),\n start: self.left.start,\n end: self.right.left.end\n }),\n right: self.right.right\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.right instanceof AST_Constant\n && self.left.is_string(compressor)) {\n self = make_node(AST_Binary, self, {\n operator: \"+\",\n left: self.left.left,\n right: make_node(AST_String, self.right, {\n value: \"\" + self.left.right.getValue() + self.right.getValue(),\n start: self.left.right.start,\n end: self.right.end\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.left.right instanceof AST_Constant\n && self.right instanceof AST_Binary\n && self.right.operator == \"+\"\n && self.right.left instanceof AST_Constant\n && self.right.is_string(compressor)) {\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: make_node(AST_String, self.left.right, {\n value: \"\" + self.left.right.getValue() + self.right.left.getValue(),\n start: self.left.right.start,\n end: self.right.left.end\n })\n }),\n right: self.right.right\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 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(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\n def_optimize(AST_SymbolExport, function(self, compressor) {\n return self;\n });\n\n function recursive_ref(compressor, def) {\n var node;\n for (var i = 0; node = compressor.parent(i); i++) {\n if (node instanceof AST_Lambda) {\n var name = node.name;\n if (name && name.definition() === def) break;\n }\n }\n return node;\n }\n\n function 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\n def_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 var d = self.definition();\n if (compressor.top_retain && d.global && compressor.top_retain(d)) {\n d.fixed = false;\n d.should_replace = false;\n d.single_use = false;\n return self;\n }\n var fixed = self.fixed_value();\n var single_use = d.single_use\n && !(parent instanceof AST_Call && parent.is_expr_pure(compressor));\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 (d.scope !== self.scope\n && (!compressor.option(\"reduce_funcs\") && fixed instanceof AST_Lambda\n || d.escaped == 1\n || fixed.inlined\n || within_array_or_object_literal(compressor))) {\n single_use = false;\n } else if (recursive_ref(compressor, d)) {\n single_use = false;\n } else if (d.scope !== self.scope || d.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 scope.inlined = true;\n }\n } while (scope = scope.parent_scope);\n }\n }\n }\n if (single_use && fixed) {\n if (fixed instanceof AST_DefClass) {\n fixed = make_node(AST_ClassExpression, fixed, fixed);\n }\n if (fixed instanceof AST_Defun) {\n fixed._squeezed = true;\n fixed = make_node(AST_Function, fixed, fixed);\n }\n var value;\n if (d.recursive_refs > 0 && fixed.name instanceof AST_SymbolDefun) {\n value = fixed.clone(true);\n var defun_def = value.name.definition();\n var lambda_def = value.variables.get(value.name.name);\n var name = lambda_def && lambda_def.orig[0];\n if (!(name instanceof AST_SymbolLambda)) {\n name = make_node(AST_SymbolLambda, value.name, value.name);\n name.scope = value;\n value.name = name;\n lambda_def = value.def_function(name);\n }\n value.walk(new TreeWalker(function(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 } else {\n value = fixed.optimize(compressor);\n if (value === fixed) value = fixed.clone(true);\n }\n return value;\n }\n if (fixed && d.should_replace === undefined) {\n var init;\n if (fixed instanceof AST_This) {\n if (!(d.orig[0] instanceof AST_SymbolFunarg)\n && all(d.references, function(ref) {\n return d.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).print_to_string().length;\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.print_to_string().length);\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 = d.name.length;\n var overhead = 0;\n if (compressor.option(\"unused\") && !compressor.exposed(d)) {\n overhead = (name_length + 2 + value_length) / (d.references.length - d.assignments);\n }\n d.should_replace = value_length <= name_length + overhead ? fn : false;\n } else {\n d.should_replace = false;\n }\n }\n if (d.should_replace) {\n return d.should_replace();\n }\n }\n return self;\n\n function has_symbol_ref(value) {\n var found;\n value.walk(new TreeWalker(function(node) {\n if (node instanceof AST_SymbolRef) found = true;\n if (found) return true;\n }));\n return found;\n }\n });\n\n function is_atomic(lhs, self) {\n return lhs instanceof AST_SymbolRef || lhs.TYPE === self.TYPE;\n }\n\n def_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 ref.is_undefined = true;\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\n def_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 (compressor.option(\"keep_infinity\")\n && !(lhs && !is_atomic(lhs, self))\n && !find_variable(compressor, \"Infinity\"))\n return self;\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\n def_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\n function is_reachable(self, defs) {\n var reachable = false;\n var find_ref = new TreeWalker(function(node) {\n if (reachable) return true;\n if (node instanceof AST_SymbolRef && member(node.definition(), defs)) {\n return reachable = true;\n }\n });\n var scan_scope = new TreeWalker(function(node) {\n if (reachable) return true;\n if (node instanceof AST_Scope && node !== self) {\n var parent = scan_scope.parent();\n if (parent instanceof AST_Call && parent.expression === node) return;\n node.walk(find_ref);\n return true;\n }\n });\n self.walk(scan_scope);\n return reachable;\n }\n\n var ASSIGN_OPS = [ \"+\", \"-\", \"/\", \"*\", \"%\", \">>\", \"<<\", \">>>\", \"|\", \"^\", \"&\" ];\n var ASSIGN_OPS_COMMUTATIVE = [ \"*\", \"|\", \"^\", \"&\" ];\n def_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 && member(self.right.operator, ASSIGN_OPS)) {\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 && member(self.right.operator, ASSIGN_OPS_COMMUTATIVE)\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\n def_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\n def_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 // 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\n def_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\n function safe_to_flatten(value, compressor) {\n if (value instanceof AST_SymbolRef) {\n value = value.fixed_value();\n }\n if (!value) return false;\n return !(value instanceof AST_Lambda || value instanceof AST_Class)\n || compressor.parent() instanceof AST_New\n || !value.contains_this();\n }\n\n def_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_identifier_string(property)\n && property.length <= prop.print_to_string().length + 1) {\n return make_node(AST_Dot, self, {\n expression: expr,\n property: property\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 = Object.create(null);\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 (param in params) {\n break OPT_ARGUMENTS; // duplicate parameter - bail\n }\n params[param] = true;\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 delete 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\n AST_Lambda.DEFMETHOD(\"contains_this\", function() {\n var result;\n var self = this;\n self.walk(new TreeWalker(function(node) {\n if (result) return true;\n if (node instanceof AST_This) return result = true;\n if (node !== self && node instanceof AST_Scope && !(node instanceof AST_Arrow)) return true;\n }));\n return result;\n });\n\n AST_PropAccess.DEFMETHOD(\"flatten_object\", function(key, compressor) {\n if (!compressor.option(\"properties\")) return;\n var arrows = compressor.option(\"unsafe_arrows\") && compressor.option(\"ecma\") >= 6;\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 (!all(props, function(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\n def_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 if (is_lhs(self, compressor.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: /t/\n });\n break;\n case \"String\":\n self.expression = make_node(AST_String, self.expression, {\n value: \"\"\n });\n break;\n }\n }\n var sub = self.flatten_object(self.property, compressor);\n if (sub) return sub.optimize(compressor);\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\n function 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\n function 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.apply(elements, [i, 1].concat(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\n def_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\n def_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\n def_optimize(AST_RegExp, literals_in_boolean_context);\n\n def_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\n def_optimize(AST_Arrow, function(self, compressor) {\n if (!(self.body instanceof AST_Node)) {\n self = opt_AST_Lambda(self, compressor);\n }\n if (compressor.option(\"arrows\")\n && self.body.length == 1\n && self.body[0] instanceof AST_Return) {\n var value = self.body[0].value;\n self.body = value ? value : [];\n }\n return self;\n });\n\n def_optimize(AST_Function, function(self, compressor) {\n self = opt_AST_Lambda(self, compressor);\n if (compressor.option(\"unsafe_arrows\")\n && compressor.option(\"ecma\") >= 6\n && !self.name\n && !self.is_generator\n && !self.uses_arguments\n && !self.pinned()) {\n var has_special_symbol = false;\n self.walk(new TreeWalker(function(node) {\n if (has_special_symbol) return true;\n if (node instanceof AST_This) {\n has_special_symbol = true;\n return true;\n }\n }));\n if (!has_special_symbol) return make_node(AST_Arrow, self, self).optimize(compressor);\n }\n return self;\n });\n\n def_optimize(AST_Class, function(self, compressor) {\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\n def_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\n def_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.print_to_string().length + \"${}\".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 }\n segments.push(segment);\n }\n self.segments = segments;\n\n return segments.length == 1 ? make_node(AST_String, self, segments[0]) : self;\n });\n\n def_optimize(AST_PrefixedTemplateString, function(self, compressor) {\n return self;\n });\n\n // [\"p\"]:1 ---> p:1\n // [42]:1 ---> 42:1\n function 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 {\n self.key = make_node(AST_SymbolMethod, self.key, {\n name: self.key.value\n });\n }\n }\n return self;\n }\n\n def_optimize(AST_ObjectProperty, lift_key);\n\n def_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\n def_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\") >= 6\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\n def_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})();\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 \"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 \"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 \"attachments\",\n \"attack\",\n \"attrChange\",\n \"attrName\",\n \"attributeName\",\n \"attributeNamespace\",\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 \"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 \"characterSet\",\n \"charging\",\n \"chargingTime\",\n \"charset\",\n \"checkEnclosure\",\n \"checkFramebufferStatus\",\n \"checkIntersection\",\n \"checkValidity\",\n \"checked\",\n \"childElementCount\",\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 \"decodingInfo\",\n \"decodeURI\",\n \"decodeURIComponent\",\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 \"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 \"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 \"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 \"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 \"smooth\",\n \"smil\",\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 \"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 Dictionary,\n push_uniq,\n} from \"./utils\";\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 // NaN will be included due to Number.NaN\n [\n \"null\",\n \"true\",\n \"false\",\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 }, 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.each(function(mangled_name) {\n reserved.add(mangled_name);\n });\n } else {\n cache = new Dictionary();\n }\n\n var regex = 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 // 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 add(node.key);\n }\n } else if (node instanceof AST_ObjectProperty) {\n // setter or getter, since KeyVal is handled above\n add(node.key.name);\n } else if (node instanceof AST_Dot) {\n var root = node;\n while (root.expression) {\n root = root.expression;\n }\n if (!(root.thedef && root.thedef.undeclared)) add(node.property);\n } else if (node instanceof AST_Sub) {\n addStrings(node.property, add);\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 node.key = mangle(node.key);\n }\n } else if (node instanceof AST_ObjectProperty) {\n // setter or getter\n node.key.name = mangle(node.key.name);\n } else if (node instanceof AST_Dot) {\n node.property = mangle(node.property);\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 Dictionary,\n HOP,\n} from \"./utils.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 Dictionary();\n } else if (!(cache.props instanceof Dictionary)) {\n cache.props = Dictionary.fromObject(cache.props);\n }\n}\n\nfunction to_json(cache) {\n return {\n props: cache.props.toObject()\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 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) {\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 result.map = options.output.source_map.toString();\n if (options.sourceMap.url == \"inline\") {\n result.code += \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" + to_base64(result.map);\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 = to_json(options.mangle.cache);\n if (options.mangle.properties && options.mangle.properties.cache) {\n options.nameCache.props = 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 * as ast from \"./ast.js\";\nimport {\n AST_Accessor,\n AST_Array,\n AST_Arrow,\n AST_Assign,\n AST_Atom,\n AST_Await,\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_ConciseMethod,\n AST_Conditional,\n AST_Const,\n AST_Constant,\n AST_Continue,\n AST_Debugger,\n AST_Default,\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_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_Binary({\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 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: from_moz(M.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 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 if (val === null) return new AST_Null(args);\n var rx = M.regex;\n if (rx && rx.pattern) {\n // RegExpLiteral as per ESTree AST spec\n args.value = new RegExp(rx.pattern, rx.flags);\n var raw = args.value.toString();\n args.value.raw_source = rx.flags\n ? raw.substring(0, raw.length - rx.flags.length) + rx.flags\n : raw;\n return new AST_RegExp(args);\n } else if (rx) {\n // support legacy RegExp\n args.value = M.regex && M.raw ? M.raw : val;\n return new AST_RegExp(args);\n }\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 == \"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 };\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, parent) {\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 = M.body instanceof Array ? {\n type: \"BlockStatement\",\n body: M.body.map(to_moz)\n } : to_moz(M.body);\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 }\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 return {\n type: M.operator == \"&&\" || M.operator == \"||\" ? \"LogicalExpression\" : \"BinaryExpression\",\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 (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(M) {\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 var pattern = M.value.source;\n var flags = M.value.toString().match(/[gimuys]*$/)[0];\n return {\n type: \"Literal\",\n value: new RegExp(pattern, flags),\n raw: M.value.raw_source,\n regex: {\n pattern: pattern,\n flags: flags,\n }\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 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 = parse(moz_to_me).print_to_string({ beautify: true });\n //me_to_moz = parse(me_to_moz).print_to_string({ beautify: true });\n //console.log(moz_to_me);\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, myparent) {\n var start = mynode.start;\n var end = mynode.end;\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","/***********************************************************************\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.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"]}