ivprog.bundle.js.map 1.9 MB

1
  1. {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./grammar/en/ivprog.g4","webpack:///./grammar/en/langFunctions.js","webpack:///./grammar/en/langLibs.js","webpack:///./grammar/es/ivprog.g4","webpack:///./grammar/es/langFunctions.js","webpack:///./grammar/es/langLibs.js","webpack:///./grammar/index.js","webpack:///./grammar/pt/ivprog.g4","webpack:///./grammar/pt/langFunctions.js","webpack:///./grammar/pt/langLibs.js","webpack:///./i18n/en/index.js","webpack:///./i18n/es/index.js","webpack:///./i18n/index.js","webpack:///./i18n/pt/index.js","webpack:///./js/ast/commands/arrayAssign.js","webpack:///./js/ast/commands/arrayDeclaration.js","webpack:///./js/ast/commands/assign.js","webpack:///./js/ast/commands/break.js","webpack:///./js/ast/commands/case.js","webpack:///./js/ast/commands/command.js","webpack:///./js/ast/commands/commandBlock.js","webpack:///./js/ast/commands/declaration.js","webpack:///./js/ast/commands/doWhile.js","webpack:///./js/ast/commands/for.js","webpack:///./js/ast/commands/formalParameter.js","webpack:///./js/ast/commands/function.js","webpack:///./js/ast/commands/ifThenElse.js","webpack:///./js/ast/commands/index.js","webpack:///./js/ast/commands/return.js","webpack:///./js/ast/commands/switch.js","webpack:///./js/ast/commands/sysCall.js","webpack:///./js/ast/commands/while.js","webpack:///./js/ast/error/syntaxError.js","webpack:///./js/ast/error/syntaxErrorFactory.js","webpack:///./js/ast/expressions/arrayAccess.js","webpack:///./js/ast/expressions/arrayLiteral.js","webpack:///./js/ast/expressions/boolLiteral.js","webpack:///./js/ast/expressions/expression.js","webpack:///./js/ast/expressions/functionCall.js","webpack:///./js/ast/expressions/index.js","webpack:///./js/ast/expressions/infixApp.js","webpack:///./js/ast/expressions/intLiteral.js","webpack:///./js/ast/expressions/literal.js","webpack:///./js/ast/expressions/realLiteral.js","webpack:///./js/ast/expressions/stringLiteral.js","webpack:///./js/ast/expressions/unaryApp.js","webpack:///./js/ast/expressions/variableLiteral.js","webpack:///./js/ast/ivprogParser.js","webpack:///./js/ast/operators.js","webpack:///./js/ast/sourceInfo.js","webpack:///./js/io/domInput.js","webpack:///./js/io/domOutput.js","webpack:///./js/io/input.js","webpack:///./js/io/output.js","webpack:///./js/main.js","webpack:///./js/processor/compatibilityTable.js","webpack:///./js/processor/context.js","webpack:///./js/processor/definedFunctions.js","webpack:///./js/processor/error/processorErrorFactory.js","webpack:///./js/processor/error/runtimeError.js","webpack:///./js/processor/error/semanticError.js","webpack:///./js/processor/ivprogProcessor.js","webpack:///./js/processor/lib/arrays.js","webpack:///./js/processor/lib/io.js","webpack:///./js/processor/lib/lang.js","webpack:///./js/processor/lib/math.js","webpack:///./js/processor/lib/strings.js","webpack:///./js/processor/modes.js","webpack:///./js/processor/semantic/semanticAnalyser.js","webpack:///./js/processor/store/store.js","webpack:///./js/processor/store/storeObject.js","webpack:///./js/processor/store/storeObjectArray.js","webpack:///./js/processor/store/storeObjectArrayAddress.js","webpack:///./js/processor/store/storeObjectArrayAddressRef.js","webpack:///./js/processor/store/storeObjectRef.js","webpack:///./js/services/languageService.js","webpack:///./js/services/localizedStringsService.js","webpack:///./js/typeSystem/baseTypes.js","webpack:///./js/typeSystem/compoundType.js","webpack:///./js/typeSystem/multiType.js","webpack:///./js/typeSystem/parsers.js","webpack:///./js/typeSystem/type.js","webpack:///./js/typeSystem/types.js","webpack:///./js/util/config.js","webpack:///./node_modules/antlr4/BufferedTokenStream.js","webpack:///./node_modules/antlr4/CharStreams.js","webpack:///./node_modules/antlr4/CommonTokenFactory.js","webpack:///./node_modules/antlr4/CommonTokenStream.js","webpack:///./node_modules/antlr4/FileStream.js","webpack:///./node_modules/antlr4/InputStream.js","webpack:///./node_modules/antlr4/IntervalSet.js","webpack:///./node_modules/antlr4/LL1Analyzer.js","webpack:///./node_modules/antlr4/Lexer.js","webpack:///./node_modules/antlr4/Parser.js","webpack:///./node_modules/antlr4/ParserRuleContext.js","webpack:///./node_modules/antlr4/PredictionContext.js","webpack:///./node_modules/antlr4/Recognizer.js","webpack:///./node_modules/antlr4/RuleContext.js","webpack:///./node_modules/antlr4/Token.js","webpack:///./node_modules/antlr4/Utils.js","webpack:///./node_modules/antlr4/atn/ATN.js","webpack:///./node_modules/antlr4/atn/ATNConfig.js","webpack:///./node_modules/antlr4/atn/ATNConfigSet.js","webpack:///./node_modules/antlr4/atn/ATNDeserializationOptions.js","webpack:///./node_modules/antlr4/atn/ATNDeserializer.js","webpack:///./node_modules/antlr4/atn/ATNSimulator.js","webpack:///./node_modules/antlr4/atn/ATNState.js","webpack:///./node_modules/antlr4/atn/ATNType.js","webpack:///./node_modules/antlr4/atn/LexerATNSimulator.js","webpack:///./node_modules/antlr4/atn/LexerAction.js","webpack:///./node_modules/antlr4/atn/LexerActionExecutor.js","webpack:///./node_modules/antlr4/atn/ParserATNSimulator.js","webpack:///./node_modules/antlr4/atn/PredictionMode.js","webpack:///./node_modules/antlr4/atn/SemanticContext.js","webpack:///./node_modules/antlr4/atn/Transition.js","webpack:///./node_modules/antlr4/atn/index.js","webpack:///./node_modules/antlr4/dfa/DFA.js","webpack:///./node_modules/antlr4/dfa/DFASerializer.js","webpack:///./node_modules/antlr4/dfa/DFAState.js","webpack:///./node_modules/antlr4/dfa/index.js","webpack:///./node_modules/antlr4/error/DiagnosticErrorListener.js","webpack:///./node_modules/antlr4/error/ErrorListener.js","webpack:///./node_modules/antlr4/error/ErrorStrategy.js","webpack:///./node_modules/antlr4/error/Errors.js","webpack:///./node_modules/antlr4/error/index.js","webpack:///./node_modules/antlr4/index.js","webpack:///./node_modules/antlr4/polyfills/codepointat.js","webpack:///./node_modules/antlr4/polyfills/fromcodepoint.js","webpack:///./node_modules/antlr4/tree/Tree.js","webpack:///./node_modules/antlr4/tree/Trees.js","webpack:///./node_modules/antlr4/tree/index.js","webpack:///./node_modules/decimal.js/decimal.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/line-i18n/dist/LanguageService.js","webpack:///./node_modules/line-i18n/dist/LanguageServiceNoLS.js","webpack:///./node_modules/line-i18n/dist/LocalizedStrings.js","webpack:///./node_modules/line-i18n/dist/StringTypes.js","webpack:///./node_modules/line-i18n/dist/index.js","webpack:///(webpack)/buildin/module.js"],"names":["main_function","$read","$write","$numElements","$matrixLines","$matrixColumns","$substring","$length","$uppercase","$lowercase","$charAt","$isReal","$isInt","$isBool","$castReal","$castInt","$castBool","$castString","$sin","$cos","$tan","$sqrt","$pow","$log","$abs","$negate","$invert","$max","$min","$mathLib","$ioLib","$strLib","$arrayLib","$langLib","PT","EN","ES","exports","pt","lexer","ivprog","langFuncs","PTFuncs","langLibs","PTLibs","en","ENFuncs","ENLibs","es","ESFuncs","ESLibs","messages","errors","ui","ArrayIndexAssign","id","lineExpression","columnExpression","expression","line","column","Assign","ArrayDeclaration","type","lines","columns","initial","isConst","Declaration","Command","Break","Case","commands","_sourceInfo","sourceInfo","CommandBlock","variables","DoWhile","condition","commandBlock","While","For","assignment","increment","FormalParameter","byRef","Function","name","returnType","formalParameters","isCompatible","Types","VOID","IfThenElse","ifTrue","ifFalse","Return","Switch","SysCall","FunctionCall","cases","langFunc","SyntaxError","msg","Error","captureStackTrace","SyntaxErrorFactory","Object","freeze","extra_lines","LocalizedStrings","getError","token_missing_one","expected","token","context","text","token_missing_list","expectedList","join","getOR","id_missing","eos_missing","invalid_array_dimension","typeName","invalid_array_size","invalid_main_return","invalid_var_declaration","invalid_break_command","cmdName","invalid_terminal","invalid_type","list","const_not_init","invalid_id_format","duplicate_function","main_parameters","duplicate_variable","ArrayAccess","strLine","toString","strColumn","Expression","ArrayLiteral","value","valid","equalityTest","data","map","v","length","reduce","old","next","strList","arrayLiteral","element","Literal","BoolLiteral","BOOLEAN","actualParameters","isMainCall","LanguageDefinedFunction","getMainFunctionName","getLocalName","params","strParams","IntLiteral","RealLiteral","StringLiteral","VariableLiteral","InfixApp","UnaryApp","op","left","right","l","r","INTEGER","REAL","STRING","UNDEFINED","Expressions","Commands","IVProgParser","input","lexerClass","LanguageService","getCurrentLexer","InputStream","tokenStream","CommonTokenStream","fill","pos","variableTypes","RK_INTEGER","RK_REAL","RK_BOOLEAN","RK_STRING","functionTypes","concat","RK_VOID","parsingArrayDimension","scope","getCurrentLangFuncs","definedFuncsNameList","definedVariablesStack","parseProgram","index","LT","BASE","push","pop","getToken","fetchedEOF","globalVars","functions","RK_PROGRAM","consumeNewLines","checkOpenCurly","pushVariableStack","RK_CONST","isVariableType","parseGlobalVariables","RK_FUNCTION","parseFunction","popVariableStack","checkCloseCurly","isEOF","global","literalNames","attempt","OPEN_CURLY","CLOSE_CURLY","OPEN_BRACE","CLOSE_BRACE","OPEN_PARENTHESIS","CLOSE_PARENTHESIS","eosToken","EOS","functionID","funcIDToken","indexOf","variableID","variableIDToken","getCurrentVariableStack","match","decl","parseMaybeConst","checkEOS","constToken","typeString","parseType","parseDeclaration","getTypeArray","dim1","dim2","idToken","idString","parseID","checkVariableDuplicate","checkOpenBrace","parseArrayDimension","checkCloseBrace","equalsToken","EQUAL","parseExpressionOR","declaration","dimensions","CompoundType","SourceInfo","createSourceInfo","commaToken","COMMA","find","dimToken","getIntLiteral","ID","parseVariable","exp","val","beginArray","parseExpressionList","endArray","createSourceInfoFromList","dataDim","pushScope","FUNCTION","formalParams","funType","checkFunctionDuplicate","checkOpenParenthesis","checkCloseParenthesis","parseFormalParameters","commandsBlock","parseCommandBlock","func","isMain","popScope","console","log","insideScope","LIB_ID","optionalCurly","variablesDecl","hasOpen","cmd","parseCommand","Array","varType","parseIDCommand","RK_RETURN","parseReturn","RK_WHILE","parseWhile","RK_FOR","parseFor","RK_BREAK","BREAKABLE","parseBreak","RK_SWITCH","parseSwitchCase","RK_DO","parseDoWhile","RK_IF","parseIfThenElse","casesList","parseCases","whileToken","COMMAND","logicalExpression","cmdBlocks","maybeElse","RK_ELSE","maybeIf","elseBlock","attribution","parseForAssign","consumeForSemiColon","refToken","isID","parseMaybeLibID","parseExpression","equalToken","equalOrParenthesis","funcCall","parseFunctionCallCommand","isLast","equal","RK_CASE","nextToken","RK_DEFAULT","colonToken","COLON","block","defaultCase","setCommands","aCase","caseToken","exp1","parseExpressionAND","OR_OPERATOR","opToken","or","exp2","finalExp","parseExpressionNot","AND_OPERATOR","and","maybeNotToken","NOT_OPERATOR","not","parseExpressionRel","RELATIONAL_OPERATOR","relToken","rel","factor","parseFactor","SUM_OP","sumOpToken","factor2","term","parseTerm","MULTI_OP","multOpToken","term2","getRealLiteral","getStringLiteral","RK_TRUE","RK_FALSE","getBoolLiteral","parseArrayLiteral","parseIDTerm","parseParenthesisExp","tokenA","tokenB","firstIndex","secondIndex","parseFunctionCallExpression","getInternalName","parseActualParameters","funcName","getFunctionName","maybeToken","types","x","convertFromString","Operators","ADD","ord","SUB","MULT","DIV","MOD","GT","GE","LE","EQ","NEQ","AND","OR","NOT","size","tokenIndex","DOMInput","el","listeners","setupEvents","on","e","code","keyCode","which","replace","notifyInput","callback","focus","forEach","resolve","splice","Input","DOMOutput","selector","span","addClass","html","append","empty","Output","ivprogLexer","getUI","editor","JsonEditor","domIn","domOut","$","click","analiser","parseTree","semAna","SemanticAnalyser","proc","IVProgProcessor","analyseTree","registerInput","clear","registerOutput","interpretAST","then","load","catch","alert","error","a","resultTypeAfterInfixOp","resultTypeAfterUnaryOp","buildInfixAddTable","table","buildInfixMultiDivSubTable","buildInfixEqualityInequalityTable","buildInfixRelationalTable","buildInfixAndOrTable","buildInfixModTable","buildUnarySumSubList","buildUnaryNegList","buildInfixCompatibilityTable","compatibilityMap","WeakMap","set","buildUnaryCompatibilityTable","infixMap","unaryMap","operator","leftExpressionType","rightExpressionType","MultiType","newMulti","i","resultType","get","undefined","TypeError","Context","Symbol","valueToKey","object","key","hasOwnProperty","concatObjects","result","objs","obj","libsObject","funcsObject","localName","names","split","lib","getCurrentLangLibs","internalName","getFunction","libName","funName","translateType","dim","transType","translateOp","ProcessorErrorFactory","symbol_not_found_full","SemanticError","symbol_not_found","function_missing_full","function_missing","main_missing","array_dimension_not_int_full","array_dimension_not_int","unknown_command_full","RuntimeError","unknown_command","incompatible_types_full","incompatible_types","incompatible_types_array_full","incompatible_types_array","loop_condition_type_full","loop_condition_type","endless_loop_full","endless_loop","for_condition_type_full","for_condition_type","if_condition_type_full","if_condition_type","invalid_global_var","not_implemented","invalid_case_type_full","invalid_case_type","void_in_expression_full","void_in_expression","invalid_array_access_full","invalid_array_access","invalid_matrix_access_full","invalid_matrix_access","matrix_column_outbounds_full","matrix_column_outbounds","matrix_line_outbounds_full","matrix_line_outbounds","vector_line_outbounds_full","vector_line_outbounds","vector_not_matrix_full","vector_not_matrix","function_no_return","invalid_void_return_full","invalid_void_return","invalid_return_type_full","invalid_return_type","invalid_parameters_size_full","actual","invalid_parameters_size","invalid_parameter_type_full","invalid_parameter_type","invalid_ref_full","invalid_ref","unexpected_break_command_full","unexpected_break_command","invalid_array_literal_type_full","invalid_array_literal_type","invalid_array_literal_line_full","invalid_array_literal_line","invalid_array_literal_column_full","invalid_array_literal_column","invalid_unary_op_full","opName","invalid_unary_op","invalid_infix_op_full","typeLeft","dimLeft","typeRight","dimRight","invalid_infix_op","array_dimension_not_positive_full","array_dimension_not_positive","Config","loopTimeout","ms","setConfig","ast","globalStore","Store","stores","forceKill","loopTimers","output","store","mode","Modes","RETURN","BREAK","initGlobal","mainFunc","findMainFunction","runFunction","checkContext","executeCommand","sto","fun","MAIN_INTERNAL_ID","funcStore","extendStore","returnStoreObject","StoreObjectArray","StoreObject","insertStore","newFuncStore$","associateParameters","executeCommands","variablesDeclarations","stoWithVars","finalSto","formalList","actualList","callerStore","calleeStore","promises$","evaluateExpression","actualParameter","Promise","all","values","stoObj","formalParameter","inStore","ref","StoreObjectArrayAddress","StoreObjectArrayAddressRef","StoreObjectRef","realValue","parseStoreObjectValue","cmds","outerRef","partial","lastCommand","nextCommand","bind","reject","PAUSE","executeDeclaration","executeArrayIndexAssign","executeAssign","executeBreak","executeReturn","executeIfThenElse","executeWhile","executeDoWhile","executeFor","executeSwitch","executeFunctionCall","executeSysCall","findFunction","auxCaseFun","promise","switchExp","ignoreSwitchCases","wasTrue","isDefault","$newSto","nSto","$value","vl","breakLoop","$result","RUN","initCmd","whileBlock","forAsWhile","newCmdList","Date","now","$newStore","time","LOOP_TIMEOUT","funcType","applyStore","stringInfo","info","updateStore","mustBeArray","line$","column$","value$","lineSO","results","number","columnSO","isVector","newArray","assign","innerType","$lines","$columns","temp","refValue","readOnly","evaluateUnaryApp","evaluateInfixApp","evaluateArrayAccess","evaluateVariableLiteral","evaluateLiteral","evaluateArrayLiteral","evaluateFunctionCall","errorHelperFunction","validationResult","errorCode","WRONG_COLUMN_NUMBER","columnValue","arr","WRONG_LINE_NUMBER","lineValue","WRONG_TYPE","strExp","$matrix","evaluateMatrix","checkResult","isValid","evaluateVector","stoArray","exps","$vector","vector","_","$line","$column","unaryApp","$left","negated","infixApp","$right","stringInfoLeft","infoLeft","stringInfoRight","infoRight","rightStr","leftStr","plus","minus","times","dp","decimalPlaces","Decimal","toFixed","divToInt","div","modulo","gt","gte","lt","lte","eq","createNumElementsFun","createMatrixLinesFun","createMatrixColumnsFun","numElementsFun","ALL","matrixLinesFun","matrix","matrixColumnsFun","createOutputFun","createInputFun","writeFunction","sendOutput","readFunction","request","requestInput","typeToConvert","createIsRealFun","createIsIntFun","createIsBoolFun","createCastRealFun","createCastIntFun","createCastBoolFun","createCastStringFun","isRealFun","str","parser","createParser","isIntFun","isBoolFun","castRealFun","castIntFun","Math","floor","castBoolFun","castStringFun","createSinFun","createCosFun","createTanFun","createSqrtFun","createPowFun","createLogFun","createAbsFun","createNegateFun","createInvertFun","createMaxFun","createMinFun","convertToRadians","degrees","acos","sinFun","angle","mod","sin","cosFun","cos","tanFun","toNumber","tan","sqrtFun","sqrt","powFun","y","pow","logFun","isNegative","log10","absFun","abs","negateFun","invertFun","dividedBy","maxFun","numbers","max","paramType","minFun","min","createSubstringFun","createLengthFun","createUppercaseFun","createLowercaseFun","createrCharAtFun","substringFun","start","end","substring","lengthFun","uppercaseFun","toUpperCase","lowercaseFun","toLowerCase","charAtFun","idx","charAt","symbolMap","currentFunction","n","typeInfo","symMap","findSymbol","pushMap","assertDeclarations","filter","f","assertFunction","assertDeclaration","lineType","evaluateExpressionType","columnType","insertSymbol","resultTypeLeft","resultTypeRight","evaluateLiteralType","assertParameters","arrayTypeInfo","arrType","literal","warn","last","strInfo","dimType","isNeg","eType","canAccept","invalid","anotherArray","formalParam","optional","assertReturn","popMap","checkCommand","checkCommands","sType","hasDefault","caseType","lineExp","columnExp","getMainFunction","actualParametersList","param","shared","j","nextStore","isRef","getRefObj","oldObj","updateRef","setID","oldType","stoType","_type","_value","_readOnly","_id","another","_lines","_columns","mustBeNull","refID","anArray","getArrayObject","refLine","refColumn","address","updateArrayObject","DEFAULT_LANG","LanguageServiceExtended","langInfo","Lexers","getLang","getDefaultLang","line_i18n","Langs","BaseType","BaseTypes","Type","t","toInt","toReal","toBool","convertToString","instance","convertBoolToString","bool","baseType","ConfigObject","intConvertRoundMode","opts","config","Token","require","Lexer","Interval","TokenStream","BufferedTokenStream","tokenSource","call","tokens","prototype","create","constructor","mark","release","marker","reset","seek","lazyInit","adjustSeekIndex","consume","skipEofCheck","LA","EOF","sync","fetched","fetch","getTokens","stop","subset","contains","LB","k","setup","setTokenSource","nextTokenOnChannel","channel","previousTokenOnChannel","getHiddenTokensToRight","nextOnChannel","DEFAULT_TOKEN_CHANNEL","from_","to","filterForChannel","getHiddenTokensToLeft","prevOnChannel","hidden","getSourceName","getText","interval","s","isNodeJs","window","importScripts","fs","CharStreams","fromString","fromBlob","blob","encoding","onLoad","onError","reader","FileReader","onload","is","target","onerror","readAsText","fromBuffer","buffer","fromPath","path","readFile","err","fromPathSync","readFileSync","CommonToken","TokenFactory","CommonTokenFactory","copyText","DEFAULT","source","createThin","DEFAULT_CHANNEL","getNumberOfOnChannelTokens","FileStream","fileName","decodeToUnicodeCodePoints","_loadString","stream","_index","strdata","codePoint","codePointAt","codeUnit","charCodeAt","_size","defineProperty","offset","String","fromCodePoint","slice","item","IntervalSet","intervals","first","INVALID_TYPE","addOne","addInterval","addRange","h","addSet","other","intervalslength","complement","removeRange","len","removeOne","symbolicNames","elemsAreChar","toTokenString","toCharString","toIndexString","fromCharCode","elementName","EPSILON","Set","BitSet","ATNConfig","RuleStopState","RuleTransition","NotSetTransition","WildcardTransition","AbstractPredicateTransition","pc","predictionContextFromRuleContext","PredictionContext","SingletonPredictionContext","LL1Analyzer","atn","HIT_PRED","getDecisionLookahead","count","transitions","look","alt","lookBusy","seeThruPreds","_LOOK","transition","EMPTY","LOOK","stopState","ctx","lookContext","calledRuleStack","addEOF","c","state","add","isEmpty","returnState","states","getReturnState","removed","ruleIndex","remove","getParent","newContext","followState","stateNumber","isEpsilon","MIN_USER_TOKEN_TYPE","maxTokenType","label","Recognizer","RecognitionException","LexerNoViableAltException","TokenSource","_input","_factory","_tokenFactorySourcePair","_interp","_token","_tokenStartCharIndex","_tokenStartLine","_tokenStartColumn","_hitEOF","_channel","_modeStack","_mode","DEFAULT_MODE","_text","MORE","SKIP","HIDDEN","HIDDEN_CHANNEL","MIN_CHAR_VALUE","MAX_CHAR_VALUE","tokenStartMarker","emitEOF","continueOuter","ttype","notifyListeners","recover","stack","emit","skip","more","m","pushMode","debug","popMode","sourceName","emitToken","getCharIndex","cpos","lpos","eof","getAllTokens","getErrorDisplay","listener","getErrorListenerDispatch","syntaxError","d","getErrorDisplayForChar","getCharErrorDisplay","re","ParseTreeListener","DefaultErrorStrategy","ATNDeserializer","ATNDeserializationOptions","TerminalNode","ErrorNode","TraceListener","enterEveryRule","ruleNames","visitTerminal","node","symbol","_ctx","exitEveryRule","Parser","_errHandler","_precedenceStack","buildParseTrees","_tracer","_parseListeners","_syntaxErrors","setInputStream","contructor","bypassAltsAtnCache","setTrace","getCurrentToken","reportMatch","recoverInline","addErrorNode","matchWildcard","_buildParseTrees","getParseListeners","addParseListener","removeParseListener","removeParseListeners","triggerEnterRuleEvent","enterRule","triggerExitRuleEvent","reverse","exitRule","getTokenFactory","setTokenFactory","factory","getATNWithBypassAlts","serializedAtn","getSerializedATN","deserializationOptions","generateRuleBypassTransitions","deserialize","compileParseTreePattern","pattern","patternRuleIndex","getTokenStream","ParseTreePatternMatcher","compile","getInputStream","setTokenStream","notifyErrorListeners","offendingToken","o","hasListener","inErrorRecoveryMode","addTokenNode","invokingState","isErrorNode","visitErrorNode","addContextToParseTree","parentCtx","addChild","localctx","enterOuterAlt","altNum","setAltNumber","removeLastChild","getPrecedence","enterRecursionRule","precedence","pushNewRecursionContext","previous","unrollRecursionContexts","retCtx","getInvokingContext","precpred","inContext","isExpectedToken","following","nextTokens","rt","getExpectedTokens","getExpectedTokensWithinCurrentRule","getRuleIndex","ruleName","getRuleIndexMap","getRuleInvocationStack","p","getDFAStrings","decisionToDFA","dumpDFA","seenOne","dfa","printer","println","decision","print","trace","RuleContext","Tree","INVALID_INTERVAL","TerminalNodeImpl","ErrorNodeImpl","ParserRuleContext","parent","invokingStateNumber","children","exception","copyFrom","child","badToken","getChild","getTypedRuleContext","ctxType","getTypedRuleContexts","contexts","getChildCount","getSourceInterval","InterpreterRuleContext","Hash","cachedHashCode","EMPTY_RETURN_STATE","globalNodeCount","hasEmptyPath","hashCode","updateHashCode","hash","update","PredictionContextCache","cache","existing","finish","equals","up","EmptyPredictionContext","ArrayPredictionContext","parents","returnStates","outerContext","merge","b","rootIsWildcard","mergeCache","mergeSingletons","mergeArrays","rootMerge","mergeRoot","spc","singleParent","payloads","apc","a_","mergedReturnStates","mergedParents","a_parent","b_parent","payload","bothDollars","ax_ax","mergedParent","M","combineCommonParents","uniqueParents","q","getCachedPredictionContext","contextCache","visited","changed","updated","getAllContextNodes","nodes","ConsoleErrorListener","ProxyErrorListener","_listeners","INSTANCE","_stateNumber","tokenTypeMapCache","ruleIndexMapCache","checkVersion","toolVersion","runtimeVersion","addErrorListener","removeErrorListeners","getTokenTypeMap","tokenNames","getTokenNames","getTokenType","tokenName","getErrorHeader","getOffendingToken","getTokenErrorDisplay","sempred","actionIndex","RuleNode","INVALID_ALT_NUMBER","depth","getRuleContext","getPayload","getAltNumber","altNumber","accept","visitor","visitChildren","Trees","toStringTree","recog","ri","getTokenSource","EMPTY_SOURCE","clone","txt","arrayToString","seed","round","random","remainder","bytes","h1","h1b","c1","c1b","c2","c2b","k1","standardEqualsFunction","standardHashCodeFunction","hashFunction","equalsFunction","bits","keys","minValue","apply","Map","hashKey","put","entries","entry","oldValue","containsKey","getKeys","getValues","ss","AltDict","DoubleDict","arguments","isArray","hashStuff","escapeWhitespace","escapeSpaces","titleCase","substr","equalArrays","ATN","grammarType","decisionToState","ruleToStartState","ruleToStopState","modeNameToStartState","ruleToTokenType","lexerActions","modeToStartState","nextTokensInContext","anal","nextTokensNoContext","nextTokenWithinRule","addState","removeState","defineDecisionState","getDecisionState","DecisionState","SemanticContext","checkParams","isCfg","semanticContext","reachesIntoOuterContext","props","precedenceFilterSuppressed","NONE","hashCodeForConfigSet","equalsForConfigSet","LexerATNConfig","lexerActionExecutor","passedThroughNonGreedyDecision","checkNonGreedyDecision","nonGreedy","Utils","hashATNConfig","equalATNConfigs","ATNConfigSet","fullCtx","configLookup","configs","uniqueAlt","conflictingAlts","hasSemanticContext","dipsIntoOuterContext","merged","getStates","getPredicates","preds","optimizeConfigs","interpreter","getCachedContext","addAll","coll","containsFast","setReadonly","OrderedATNConfigSet","verifyATN","defaultOptions","ATNType","ATNStates","ATNState","BasicState","BlockStartState","BlockEndState","LoopEndState","RuleStartState","TokensStartState","PlusLoopbackState","StarLoopbackState","StarLoopEntryState","PlusBlockStartState","StarBlockStartState","BasicBlockStartState","Transitions","Transition","AtomTransition","SetTransition","RangeTransition","ActionTransition","EpsilonTransition","PredicateTransition","PrecedencePredicateTransition","LexerActions","LexerActionType","LexerSkipAction","LexerChannelAction","LexerCustomAction","LexerMoreAction","LexerTypeAction","LexerPushModeAction","LexerPopModeAction","LexerModeAction","BASE_SERIALIZED_UUID","ADDED_UNICODE_SMP","SUPPORTED_UUIDS","SERIALIZED_VERSION","SERIALIZED_UUID","initArray","tmp","options","stateFactories","actionFactories","isFeatureSupported","feature","actualUuid","idx1","idx2","checkUUID","readATN","readStates","readRules","readModes","sets","readSets","readInt","uuid","readInt32","readEdges","readDecisions","readLexerActions","markPrecedenceDecisions","PARSER","adjust","version","readUUID","pair","loopBackStateNumbers","endStateNumbers","nstates","stype","stateFactory","LOOP_END","loopBackStateNumber","endStateNumber","loopBackState","endState","numNonGreedyStates","numPrecedenceStates","isPrecedenceRule","nrules","LEXER","startState","tokenType","nmodes","readUnicode","iset","containsEof","i1","i2","trans","nedges","src","trg","arg1","arg2","arg3","edgeFactory","srcState","addTransition","outermostPrecedenceReturn","ndecisions","decState","actionType","data1","data2","lexerAction","lexerActionFactory","generateRuleBypassTransition","bypassStart","bypassStop","excludeTransition","stateIsEndStateFor","matchState","maybeLoopEndState","epsilonOnlyTransitions","isPrecedenceDecision","checkCondition","message","low","high","readLong","createByteToHex","bth","byteToHex","bb","int","RANGE","RULE","PREDICATE","PRECEDENCE","ATOM","ACTION","SET","NOT_SET","WILDCARD","sf","BASIC","RULE_START","BLOCK_START","PLUS_BLOCK_START","STAR_BLOCK_START","TOKEN_START","RULE_STOP","BLOCK_END","STAR_LOOP_BACK","STAR_LOOP_ENTRY","PLUS_LOOP_BACK","af","CHANNEL","CUSTOM","MODE","POP_MODE","PUSH_MODE","TYPE","DFAState","ATNSimulator","sharedContextCache","ERROR","INITIAL_NUM_TRANSITIONS","INVALID_STATE_NUMBER","stateType","serializationNames","isNonGreedyExitState","LexerActionExecutor","resetSimState","sim","dfaState","SimState","LexerATNSimulator","startIndex","prevAccept","dfa_debug","MIN_DFA_EDGE","MAX_DFA_EDGE","match_calls","copyState","simulator","s0","matchATN","execATN","old_mode","s0_closure","computeStartState","suppressEdge","addDFAState","predict","toLexerString","ds0","isAcceptState","captureSimState","getExistingTargetState","computeTargetState","failOrAccept","edges","reach","getReachableConfigSet","items","addDFAEdge","prediction","closure","skipAlt","cfg","currentAltReachedAcceptState","getTokenName","getReachableTarget","fixOffsetBeforeMatch","treatEofAsEpsilon","charPos","execute","matches","initialContext","speculative","getEpsilonTarget","serializationType","predIndex","evaluatePredicate","savedcolumn","savedLine","settings","tk","cfgs","proposed","firstConfigWithRuleStopState","newState","getDFA","curChar","tt","LexerAction","action","isPositionDependent","LexerIndexedCustomAction","updatedLexerActions","requiresSeek","stopIndex","numActions","PredPrediction","PredictionMode","NoViableAltException","ParserATNSimulator","predictionMode","LL","_startIndex","_outerContext","_dfa","debug_closure","debug_add","debug_list_atn_decisions","retry_debug","adaptivePredict","getLookaheadName","precedenceDfa","getPrecedenceStartState","atnStartState","applyPrecedenceFilter","setPrecedenceStartState","previousD","D","noViableAlt","getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule","requiresFullContext","SLL","predicates","conflictIndex","evalSemanticContext","reportAttemptingFullContext","execATNWithFullContext","alts","reportAmbiguity","computeReachSet","predictedAlt","getUniqueAlt","altSubSets","getConflictingAltSubsets","allSubsetsConflict","getConflictingAlts","hasSLLConflictTerminatingPrediction","predicateDFAState","decisionState","nalts","altsToCollectPredsFrom","getConflictingAltsOrUniqueAlt","altToPred","getPredsForAmbigAlts","getPredicatePredictions","foundExactAmbig","resolvesToJustOneViableAlt","LL_EXACT_AMBIG_DETECTION","allSubsetsEqual","getSingleViableAlt","reportContextSensitivity","intermediate","skippedStopStates","closureBusy","removeAllConfigsNotInRuleStopState","hasConfigInRuleStopState","lookToEndOfRule","allConfigsInRuleStopStates","endOfRuleState","statesFromAlt1","configSet","updatedContext","evalPrecedence","ambigAlts","orContext","nPredAlts","pred","pairs","containsPredicate","splitAccordingToSemanticValidity","semValidConfigs","semInvalidConfigs","getAltThatFinishedDecisionEntryRule","succeeded","failed","predicateEvaluationResult","evaluate","predPredictions","complete","predictions","collectPredicates","initialDepth","closureCheckingStopState","getRuleName","closure_","parms","canDropLoopEntryEdgeInLeftRecursiveRule","continueCollecting","newDepth","numCtxs","decisionStartState","blockEndStateNum","blockEndState","returnStateNumber","returnStateTarget","ruleTransition","precedenceTransition","predTransition","actionTransition","currentPosition","predSucceeds","getPredicate","newSemCtx","andContext","isCtxDependent","altsets","getAlts","dumpDeadEndConfigs","nvae","decs","getDeadEndConfigs","neg","exact","dup","hasConflictingAltSet","hasStateAssociatedWithOneAlt","hasNonConflictingAltSet","configToAlts","getStateToAltMap","minAlt","opnds","Predicate","PrecedencePredicate","compareTo","filterPrecedencePredicates","operands","precedencePredicates","reduced","differs","evaluated","sort","serializationTypes","label_","makeLabel","minVocabSymbol","maxVocabSymbol","ruleStart","DFASerializer","LexerDFASerializer","DFA","_states","precedenceState","setPrecedenceDfa","DFAStatesSet","sortedStates","serializer","buf","getStateString","getEdgeLabel","baseStateStr","getAltSet","ErrorListener","DiagnosticErrorListener","exactOnly","recognizer","getDecisionDescription","reportedAlts","offendingSymbol","delegates","Errors","InputMismatchException","FailedPredicateException","ParseCancellationException","ErrorStrategy","reportError","errorRecoveryMode","lastErrorIndex","lastErrorStates","endErrorCondition","beginErrorCondition","reportNoViableAlternative","reportInputMismatch","reportFailedPredicate","getMessage","followSet","getErrorRecoverySet","consumeUntil","la","singleTokenDeletion","reportUnwantedToken","expecting","whatFollowsLoopIterationOrRule","startToken","escapeWSAndQuote","reportMissingToken","matchedSymbol","singleTokenInsertion","getMissingSymbol","currentSymbolType","currentState","expectingAtLL2","nextTokenType","currentSymbol","expectedTokenType","tokenText","current","lookback","recoverSet","follow","BailErrorStrategy","offendingState","deadEndConfigs","predicate","formatMessage","predicateIndex","codepointat","fromcodepoint","tree","$defineProperty","position","string","Number","second","stringFromCharCode","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","isFinite","RangeError","SyntaxTree","ParseTree","ParseTreeVisitor","visit","getSymbol","ParseTreeWalker","walk","errorNode","getNodeText","res","getChildren","getAncestors","ancestors","findAllTokenNodes","findAllNodes","findAllRuleNodes","findTokens","_findAllNodes","descendants","globalScope","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","precision","rounding","toExpNeg","toExpPos","minE","maxE","crypto","inexact","noConflict","quadrant","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","mathfloor","mathpow","isBinary","isHex","isOctal","isDecimal","LOG_BASE","MAX_SAFE_INTEGER","LN10_PRECISION","PI_PRECISION","P","absoluteValue","finalise","ceil","comparedTo","cmp","xdL","ydL","xd","yd","xs","ys","NaN","cosine","pr","rm","Ctor","sd","toLessThanHalfPi","cubeRoot","cbrt","rep","t3","t3plusx","isZero","digitsToString","toExponential","divide","w","dividedToIntegerBy","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh","one","taylorSeries","cosh2_x","d8","hyperbolicSine","sinh","sinh2_x","d5","d16","d20","hyperbolicTangent","tanh","inverseCosine","halfPi","getPi","asin","inverseHyperbolicCosine","acosh","ln","inverseHyperbolicSine","asinh","inverseHyperbolicTangent","atanh","wpr","xsd","inverseSine","atan","inverseTangent","px","x2","isInteger","isInt","isNaN","isPositive","isPos","lessThan","lessThanOrEqualTo","logarithm","base","isBase10","denominator","inf","num","arg","guard","naturalLogarithm","getLn10","checkRoundingDigits","sub","xe","xLTy","shift","getBase10Exponent","naturalExponential","carry","unshift","z","getPrecision","sine","squareRoot","tangent","mul","rL","toBinary","toStringBinary","toDecimalPlaces","toDP","checkInt32","finiteToString","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","intPow","toPrecision","toSignificantDigits","toSD","truncated","trunc","valueOf","toJSON","ws","indexOfLastWord","getZeroString","repeating","di","rd","convertBase","baseIn","baseOut","arrL","strL","cos2x","multiplyInteger","compare","aL","bL","subtract","logBase","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","digits","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","args","ltgt","sum","c0","numerator","x1","parseDecimal","search","parseOther","divisor","isFloat","test","sin2_x","isHyperbolic","u","pi","atan2","useDefaults","defaults","ps","getRandomValues","randomBytes","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","isDecimalInstance","hypot","log2","Uint32Array","copy","define","module","document","noGlobal","getProto","getPrototypeOf","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","nodeType","isWindow","preservedScriptAttributes","noModule","DOMEval","doc","script","createElement","head","appendChild","parentNode","removeChild","toType","jQuery","fn","init","rtrim","jquery","toArray","pushStack","elems","ret","prevObject","each","elem","extend","copyIsArray","deep","isPlainObject","expando","isReady","noop","proto","isEmptyObject","globalEval","isArrayLike","trim","makeArray","inArray","grep","invert","callbackInverse","callbackExpect","guid","iterator","Sizzle","Expr","isXML","tokenize","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","disabledAncestor","addCombinator","disabled","dir","childNodes","els","nid","groups","newSelector","ownerDocument","exec","getElementById","getElementsByTagName","getElementsByClassName","qsa","nodeName","getAttribute","setAttribute","toSelector","testContext","querySelectorAll","qsaError","removeAttribute","cacheLength","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","check","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","matcher","unmatched","innerText","lang","elemLang","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","filters","parseOnly","soFar","preFilters","cached","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","self","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","has","targets","closest","prevAll","addBack","sibling","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","createOptions","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Identity","Thrower","ex","adoptValue","noValue","method","fail","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","readyWait","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","letter","camelCase","acceptData","owner","Data","uid","configurable","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","createTextNode","htmlPrefilter","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","origFn","event","off","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","Event","enumerable","originalEvent","writable","noBubble","trigger","blur","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","width","scrollboxSizeVal","offsetWidth","measure","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelBoxStyles","pixelPosition","reliableMarginLeft","scrollboxSize","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","finalPropName","cssProps","setPositiveNumber","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","cssHooks","opacity","origName","isCustomProp","setProperty","getClientRects","getBoundingClientRect","margin","padding","border","prefix","suffix","expand","expanded","parts","Tween","easing","propHooks","run","percent","eased","duration","step","fx","scrollTop","scrollLeft","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","timer","tweener","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","parseInt","stripAndCollapse","getClass","classesToArray","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","triggerHandler","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","conv","responseFields","dataFilter","throws","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","lsKey","defaultLang","setupListener","_this","localStorage","getItem","registerLanguageChangeListener","LanguageServiceNoLS","notifyChange","setLang","service","i18nData","listenToChange","updateTagText","getString","i18nObj","StringTypes","processString","MESSAGE","UI","processTagTex","webpackPolyfill","deprecate","paths"],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;AClFA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,OAAO;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA,OAAO;AACP,Y;;;;;;;;;;;;;;;;;ACxfA;;kBAEe;AACbA,iBAAe,OADF;AAEbC,SAAO,MAFM;AAGbC,UAAQ,OAHK;AAIbC,gBAAc,kBAJD;AAKbC,gBAAc,eALD;AAMbC,kBAAgB,gBANH;AAObC,cAAY,WAPC;AAQbC,WAAS,aARI;AASbC,cAAY,YATC;AAUbC,cAAY,aAVC;AAWbC,WAAS,SAXI;AAYbC,WAAS,QAZI;AAabC,UAAQ,WAbK;AAcbC,WAAS,UAdI;AAebC,aAAW,WAfE;AAgBbC,YAAU,cAhBG;AAiBbC,aAAW,aAjBE;AAkBbC,eAAa,aAlBA;AAmBbC,QAAM,KAnBO;AAoBbC,QAAM,KApBO;AAqBbC,QAAM,KArBO;AAsBbC,SAAO,eAtBM;AAuBbC,QAAM,KAvBO;AAwBbC,QAAM,KAxBO;AAyBbC,QAAM,QAzBO;AA0BbC,WAAS,cA1BI;AA2BbC,WAAS,gBA3BI;AA4BbC,QAAM,QA5BO;AA6BbC,QAAM;AA7BO,C;;;;;;;;;;;;;;;;;ACFf;;;kBAGe;AACbC,YAAU,YADG;AAEbC,UAAQ,IAFK;AAGbC,WAAS,OAHI;AAIbC,aAAW,SAJE;AAKbC,YAAU;AALG,C;;;;;;;;;;;ACHf;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB,gCAAgC;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,OAAO;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA,OAAO;AACP,Y;;;;;;;;;;;;;;;;;AChgBA;;kBAEe;AACbjC,iBAAe,QADF;AAEbC,SAAO,MAFM;AAGbC,UAAQ,SAHK;AAIbC,gBAAc,kBAJD;AAKbC,gBAAc,eALD;AAMbC,kBAAgB,gBANH;AAObC,cAAY,WAPC;AAQbC,WAAS,aARI;AASbC,cAAY,YATC;AAUbC,cAAY,aAVC;AAWbC,WAAS,SAXI;AAYbC,WAAS,QAZI;AAabC,UAAQ,WAbK;AAcbC,WAAS,UAdI;AAebC,aAAW,WAfE;AAgBbC,YAAU,cAhBG;AAiBbC,aAAW,aAjBE;AAkBbC,eAAa,aAlBA;AAmBbC,QAAM,KAnBO;AAoBbC,QAAM,KApBO;AAqBbC,QAAM,KArBO;AAsBbC,SAAO,eAtBM;AAuBbC,QAAM,KAvBO;AAwBbC,QAAM,KAxBO;AAyBbC,QAAM,QAzBO;AA0BbC,WAAS,cA1BI;AA2BbC,WAAS,gBA3BI;AA4BbC,QAAM,QA5BO;AA6BbC,QAAM;AA7BO,C;;;;;;;;;;;;;;;;;ACFf;;;kBAGe;AACbC,YAAU,YADG;AAEbC,UAAQ,IAFK;AAGbC,WAAS,OAHI;AAIbC,aAAW,SAJE;AAKbC,YAAU;AALG,C;;;;;;;;;;;;;;ACHf;;IAAYC,E;;AACZ;;;;AACA;;;;AACA;;IAAYC,E;;AACZ;;;;AACA;;;;AACA;;IAAYC,E;;AACZ;;;;AACA;;;;;;;;AAEAC,QAAQC,EAAR,GAAa,EAACC,OAAOL,GAAGM,MAAX,EAAmBC,WAAWC,uBAA9B,EAAuCC,UAAUC,kBAAjD,EAAb;AACAP,QAAQQ,EAAR,GAAa,EAACN,OAAOJ,GAAGK,MAAX,EAAmBC,WAAWK,uBAA9B,EAAuCH,UAAUI,kBAAjD,EAAb;AACAV,QAAQW,EAAR,GAAa,EAACT,OAAOH,GAAGI,MAAX,EAAmBC,WAAWQ,uBAA9B,EAAuCN,UAAUO,kBAAjD,EAAb,C;;;;;;;;;;;ACZA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oBAAoB;AACrE,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,OAAO;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA,OAAO;AACP,Y;;;;;;;;;;;;;;;;;ACrgBA;;kBAEe;AACblD,iBAAe,QADF;AAEbC,SAAO,MAFM;AAGbC,UAAQ,SAHK;AAIbC,gBAAc,kBAJD;AAKbC,gBAAc,eALD;AAMbC,kBAAgB,gBANH;AAObC,cAAY,WAPC;AAQbC,WAAS,aARI;AASbC,cAAY,YATC;AAUbC,cAAY,aAVC;AAWbC,WAAS,SAXI;AAYbC,WAAS,QAZI;AAabC,UAAQ,WAbK;AAcbC,WAAS,UAdI;AAebC,aAAW,WAfE;AAgBbC,YAAU,cAhBG;AAiBbC,aAAW,aAjBE;AAkBbC,eAAa,aAlBA;AAmBbC,QAAM,KAnBO;AAoBbC,QAAM,KApBO;AAqBbC,QAAM,KArBO;AAsBbC,SAAO,eAtBM;AAuBbC,QAAM,KAvBO;AAwBbC,QAAM,KAxBO;AAyBbC,QAAM,QAzBO;AA0BbC,WAAS,cA1BI;AA2BbC,WAAS,gBA3BI;AA4BbC,QAAM,QA5BO;AA6BbC,QAAM;AA7BO,C;;;;;;;;;;;;;;;;;ACFf;;;kBAGe;AACbC,YAAU,YADG;AAEbC,UAAQ,IAFK;AAGbC,WAAS,OAHI;AAIbC,aAAW,SAJE;AAKbC,YAAU;AALG,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHf;;;;AACA;;;;AACA;;;;;;kBAEe;AACd,aAAYkB,iBADE;AAEd,WAASC,eAFK;AAGd,QAAMC;AAHQ,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJf;;;;AACA;;;;AACA;;;;;;kBAEe;AACd,aAAYF,iBADE;AAEd,WAASC,eAFK;AAGd,QAAMC;AAHQ,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJf;;;;AACA;;;;AACA;;;;;;kBAEe;AACb,QAAMlB,YADO;AAEb,QAAMD,YAFO;AAGb,QAAME;AAHO,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJf;;;;AACA;;;;AACA;;;;;;kBAEe;AACd,aAAYe,iBADE;AAEd,WAASC,eAFK;AAGd,QAAMC;AAHQ,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJf;;;;;;;;IAEaC,gB,WAAAA,gB;;;AAEX,4BAAaC,EAAb,EAAiBC,cAAjB,EAAiCC,gBAAjC,EAAmDC,UAAnD,EAA+D;AAAA;;AAAA,oIACvDH,EADuD,EACnDG,UADmD;;AAE7D,UAAKC,IAAL,GAAYH,cAAZ;AACA,UAAKI,MAAL,GAAcH,gBAAd;AAH6D;AAI9D;;;EANmCI,c;;;;;;;;;;;;;;;;;;;ACFtC;;;;;;;;IAEaC,gB,WAAAA,gB;;;AAEX,4BAAaP,EAAb,EAAiBQ,IAAjB,EAAuBC,KAAvB,EAA8BC,OAA9B,EAAuCC,OAAvC,EAAgDC,OAAhD,EAA2D;AAAA;;AAAA,oIACnDZ,EADmD,EAC/CQ,IAD+C,EACzCG,OADyC,EAChCC,OADgC;;AAEzD,UAAKH,KAAL,GAAaA,KAAb;AACA,UAAKC,OAAL,GAAeA,OAAf;AAHyD;AAI1D;;;EANmCG,wB;;;;;;;;;;;;;;;;;;;ACFtC;;;;;;;;IAEaP,M,WAAAA,M;;;AAEX,kBAAaN,EAAb,EAAiBG,UAAjB,EAA6B;AAAA;;AAAA;;AAE3B,UAAKH,EAAL,GAAUA,EAAV;AACA,UAAKG,UAAL,GAAkBA,UAAlB;AAH2B;AAI5B;;;EANyBW,gB;;;;;;;;;;;;;;;;;;;ACF5B;;;;;;;;IAEaC,K,WAAAA,K;;;AAEX,mBAAe;AAAA;;AAAA;AAEd;;;EAJwBD,gB;;;;;;;;;;;;;;;;;;;;;ACF3B;;;;;;;;IAEaE,I,WAAAA,I;;;AAEX,gBAAab,UAAb,EAAyB;AAAA;;AAAA;;AAEvB,UAAKA,UAAL,GAAkBA,UAAlB;AACA,UAAKc,QAAL,GAAgB,EAAhB;AAHuB;AAIxB;;;;gCAEYA,Q,EAAU;AACrB,WAAKA,QAAL,GAAgBA,QAAhB;AACD;;;wBAEgB;AACf,aAAO,KAAKd,UAAL,KAAoB,IAA3B;AACD;;;;EAduBW,gB;;;;;;;;;;;;;;;;;;;;;;ICFbA,O,WAAAA,O;AAEX,qBAAe;AAAA;;AACb,SAAKI,WAAL,GAAmB,IAAnB;AACD;;;;sBAEeC,U,EAAY;AAC1B,WAAKD,WAAL,GAAmBC,UAAnB;AACD,K;wBAEiB;AAChB,aAAO,KAAKD,WAAZ;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;ICZUE,Y,WAAAA,Y;AAEZ,uBAAYC,SAAZ,EAAuBJ,QAAvB,EAAiC;AAAA;;AAChC,OAAKI,SAAL,GAAiBA,SAAjB;AACA,OAAKJ,QAAL,GAAgBA,QAAhB;AACA,OAAKC,WAAL,GAAmB,IAAnB;AACA;;;;oBAEeC,U,EAAY;AAC3B,QAAKD,WAAL,GAAmBC,UAAnB;AACA,G;sBAEiB;AACjB,UAAO,KAAKD,WAAZ;AACA;;;;;;;;;;;;;;;;;;;;;;;ACdF;;;;;;;;IAEaL,W,WAAAA,W;;;AAEX,uBAAab,EAAb,EAAiBQ,IAAjB,EAAuBG,OAAvB,EAAgCC,OAAhC,EAAyC;AAAA;;AAAA;;AAEvC,UAAKZ,EAAL,GAAUA,EAAV;AACA,UAAKQ,IAAL,GAAYA,IAAZ;AACA,UAAKG,OAAL,GAAeA,OAAf;AACA,UAAKC,OAAL,GAAeA,OAAf;AALuC;AAMxC;;;EAR8BE,gB;;;;;;;;;;;;;;;;;;;;;ACFjC;;;;;;;;IAEaQ,O,WAAAA,O;;;AAEX,mBAAYC,SAAZ,EAAuBC,YAAvB,EAAqC;AAAA;;AAAA,6GAC7BD,SAD6B,EAClBC,YADkB;AAEpC;;;;wBAEgB;AACf,aAAO,KAAP;AACD;;;;EAR0BC,Y;;;;;;;;;;;;;;;;;;;;;ACF7B;;;;;;;;IAEaC,G,WAAAA,G;;;AAEX,eAAaC,UAAb,EAAyBJ,SAAzB,EAAoCK,SAApC,EAA+CJ,YAA/C,EAA6D;AAAA;;AAAA;;AAE3D,UAAKG,UAAL,GAAkBA,UAAlB;AACA,UAAKJ,SAAL,GAAiBA,SAAjB;AACA,UAAKK,SAAL,GAAiBA,SAAjB;AACA,UAAKJ,YAAL,GAAoBA,YAApB;AAL2D;AAM5D;;;;wBAEe;AACd,aAAO,KAAKA,YAAL,CAAkBP,QAAzB;AACD;;;;EAZsBH,gB;;;;;;;;;;;;;;;;;;;;;;ICFZe,e,WAAAA,e;AAEX,2BAAarB,IAAb,EAAmBR,EAAnB,EAAsC;AAAA,QAAf8B,KAAe,uEAAP,KAAO;;AAAA;;AACpC,SAAKtB,IAAL,GAAYA,IAAZ;AACA,SAAKR,EAAL,GAAUA,EAAV;AACA,SAAK8B,KAAL,GAAaA,KAAb;AACA,SAAKZ,WAAL,GAAmB,IAAnB;AACD;;;;sBAEeC,U,EAAY;AAC5B,WAAKD,WAAL,GAAmBC,UAAnB;AACA,K;wBAEiB;AACjB,aAAO,KAAKD,WAAZ;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACfF;;;;IAEaa,Q,WAAAA,Q;AAEX,oBAAYC,IAAZ,EAAkBC,UAAlB,EAA8BC,gBAA9B,EAAgDV,YAAhD,EAA8D;AAAA;;AAC5D,SAAKQ,IAAL,GAAYA,IAAZ;AACA,SAAKC,UAAL,GAAkBA,UAAlB;AACA,SAAKC,gBAAL,GAAwBA,gBAAxB;AACA,SAAKV,YAAL,GAAoBA,YAApB;AACA,SAAKN,WAAL,GAAmB,IAAnB;AACD;;;;wBAEa;AACZ,aAAO,KAAKc,IAAL,KAAc,IAAd,IAAsB,KAAKC,UAAL,CAAgBE,YAAhB,CAA6BC,aAAMC,IAAnC,CAA7B;AACD;;;wBAEe;AACd,aAAO,KAAKb,YAAL,CAAkBP,QAAzB;AACD;;;wBAE4B;AAC3B,aAAO,KAAKO,YAAL,CAAkBH,SAAzB;AACD;;;sBAEeF,U,EAAY;AAC5B,WAAKD,WAAL,GAAmBC,UAAnB;AACA,K;wBAEiB;AACjB,aAAO,KAAKD,WAAZ;AACA;;;;;;;;;;;;;;;;;;;;;;;AC9BF;;;;;;;;IAEaoB,U,WAAAA,U;;;AAEX,sBAAaf,SAAb,EAAwBgB,MAAxB,EAAgCC,OAAhC,EAAyC;AAAA;;AAAA;;AAEvC,UAAKjB,SAAL,GAAiBA,SAAjB;AACA,UAAKgB,MAAL,GAAcA,MAAd;AACA,UAAKC,OAAL,GAAeA,OAAf;AAJuC;AAKxC;;;EAP6B1B,gB;;;;;;;;;;;;;;;;;;;ACFhC;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAA8D;;QAG5DC,K,GAAAA,Y;QACA0B,M,GAAAA,c;QACAnC,M,GAAAA,c;QACAP,gB,GAAAA,6B;QACAc,W,GAAAA,wB;QACAN,gB,GAAAA,kC;QACAkB,K,GAAAA,Y;QACAC,G,GAAAA,Q;QACAK,Q,GAAAA,kB;QACAO,U,GAAAA,sB;QACAlB,Y,GAAAA,0B;QACAE,O,GAAAA,gB;QACAoB,M,GAAAA,c;QACA1B,I,GAAAA,U;QACA2B,O,GAAAA,gB;QACAd,e,GAAAA,gC;QACAe,Y,GAAAA,0B;;;;;;;;;;;;;;;;;;;ACnCF;;;;;;;;IAEaH,M,WAAAA,M;;;AAEX,kBAAYtC,UAAZ,EAAwB;AAAA;;AAAA;;AAEtB,UAAKA,UAAL,GAAkBA,UAAlB;AAFsB;AAGvB;;;EALyBW,gB;;;;;;;;;;;;;;;;;;;ACF5B;;;;;;;;IAEa4B,M,WAAAA,M;;;AAEX,kBAAavC,UAAb,EAAyB0C,KAAzB,EAAgC;AAAA;;AAAA;;AAE9B,UAAK1C,UAAL,GAAkBA,UAAlB;AACA,UAAK0C,KAAL,GAAaA,KAAb;AAH8B;AAI/B;;;EANyB/B,gB;;;;;;;;;;;;;;;;;;;;ACF5B;;;;;;IAMa6B,O,WAAAA,O,GAEX,iBAAaG,QAAb,EAAuB;AAAA;;AACrB,OAAKA,QAAL,GAAgBA,QAAhB;AACD,C;;;;;;;;;;;;;;;;;;;;;ACVH;;;;;;;;IAEarB,K,WAAAA,K;;;AAEX,iBAAatB,UAAb,EAAyBqB,YAAzB,EAAuC;AAAA;;AAAA;;AAErC,UAAKrB,UAAL,GAAkBA,UAAlB;AACA,UAAKqB,YAAL,GAAoBA,YAApB;AAHqC;AAItC;;;;wBAEe;AACd,aAAO,KAAKA,YAAL,CAAkBP,QAAzB;AACD;;;wBAEgB;AAChB,aAAO,IAAP;AACA;;;;EAdwBH,gB;;;;;;;;;;;;;;;;;;;;;;;;ICFdiC,W,WAAAA,W;;;AAEX,yBAAqB;AAAA;;AAAA;;AAAA,sCAALC,GAAK;AAALA,SAAK;AAAA;;AAAA,qJACVA,GADU;;AAEnB,QAAGC,MAAMC,iBAAT,EACED,MAAMC,iBAAN,QAA8BH,WAA9B;AAHiB;AAIpB;;;EAN8BE,K;;;;;;;;;;;;;;;;;;;ACAjC;;AACA;;AAEO,IAAME,kDAAqBC,OAAOC,MAAP,CAAc;AAC9CC,eAAa;AAAA,WAAM,IAAIP,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,aAA1B,CAAhB,CAAN;AAAA,GADiC;AAE9CC,qBAAmB,2BAACC,QAAD,EAAWC,KAAX,EAAqB;AACtC,QAAMC,UAAU,CAACF,QAAD,EAAWC,MAAME,IAAjB,EAAuBF,MAAMvD,IAA7B,EAAmCuD,MAAMtD,MAAzC,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,mBAA1B,EAA+CI,OAA/C,CAAhB,CAAP;AACD,GAL6C;AAM9CE,sBAAoB,4BAACC,YAAD,EAAeJ,KAAf,EAAyB;AAC3C,QAAMvD,OAAO2D,aAAaC,IAAb,CAAkBT,0CAAiBU,KAAjB,EAAlB,CAAb;AACA,WAAOd,mBAAmBM,iBAAnB,CAAqCrD,IAArC,EAA2CuD,KAA3C,CAAP;AACD,GAT6C;AAU9CO,cAAY,oBAACP,KAAD,EAAW;AACrB,QAAMC,UAAU,CAACD,MAAME,IAAP,EAAaF,MAAMvD,IAAnB,EAAyBuD,MAAMtD,MAA/B,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,YAA1B,EAAwCI,OAAxC,CAAhB,CAAP;AACD,GAb6C;AAc9CO,eAAa,qBAACR,KAAD,EAAW;AACtB,QAAMC,UAAU,CAACD,MAAMvD,IAAP,EAAauD,MAAMtD,MAAnB,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,aAA1B,EAAyCI,OAAzC,CAAhB,CAAP;AACD,GAjB6C;AAkB9CQ,2BAAyB,iCAACC,QAAD,EAAWV,KAAX,EAAqB;AAC5C,QAAMC,UAAU,CAACD,MAAMvD,IAAP,EAAauD,MAAMtD,MAAnB,EAA2BgE,QAA3B,CAAhB;AACA,WAAO,IAAItB,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,yBAA1B,EAAqDI,OAArD,CAAhB,CAAP;AACD,GArB6C;AAsB9CU,sBAAoB,4BAACX,KAAD,EAAW;AAC7B,QAAMC,UAAU,CAACD,MAAMvD,IAAP,CAAhB;AACA,WAAO,IAAI2C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,oBAA1B,EAAgDI,OAAhD,CAAhB,CAAP;AACD,GAzB6C;AA0B9CW,uBAAqB,6BAACvC,IAAD,EAAOqC,QAAP,EAAiBV,KAAjB,EAA2B;AAC9C,QAAMC,UAAU,CAAC5B,IAAD,EAAOqC,QAAP,EAAiBV,MAAMvD,IAAvB,CAAhB;AACA,WAAO,IAAI2C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,qBAA1B,EAAiDI,OAAjD,CAAhB,CAAP;AACD,GA7B6C;AA8B9CY,2BAAyB,iCAACb,KAAD,EAAW;AAClC,QAAMC,UAAU,CAACD,MAAMvD,IAAP,CAAhB;AACA,WAAO,IAAI2C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,yBAA1B,EAAqDI,OAArD,CAAhB,CAAP;AACD,GAjC6C;AAkC9Ca,yBAAuB,+BAACC,OAAD,EAAUf,KAAV,EAAoB;AACzC,QAAMC,UAAU,CAACD,MAAMvD,IAAP,EAAasE,OAAb,CAAhB;AACA,WAAO,IAAI3B,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAhB,CAAP;AACD,GArC6C;AAsC9Ce,oBAAkB,0BAAChB,KAAD,EAAW;AAC3B,QAAMC,UAAU,CAACD,MAAME,IAAP,EAAaF,MAAMvD,IAAnB,EAAyBuD,MAAMtD,MAA/B,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,kBAA1B,EAA8CI,OAA9C,CAAhB,CAAP;AACD,GAzC6C;AA0C9CgB,gBAAc,sBAACC,IAAD,EAAOlB,KAAP,EAAiB;AAC7B,QAAMvD,OAAOyE,KAAKb,IAAL,CAAUT,0CAAiBU,KAAjB,EAAV,CAAb;AACA,QAAML,UAAU,CAACD,MAAME,IAAP,EAAaF,MAAMvD,IAAnB,EAAyBuD,MAAMtD,MAA/B,EAAuCD,IAAvC,CAAhB;AACA,WAAO,IAAI2C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,cAA1B,EAA0CI,OAA1C,CAAhB,CAAP;AACD,GA9C6C;AA+C9CkB,kBAAgB,wBAACnB,KAAD,EAAW;AACzB,QAAMC,UAAU,CAACD,MAAMvD,IAAP,EAAauD,MAAMtD,MAAnB,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,gBAA1B,EAA4CI,OAA5C,CAAhB,CAAP;AACD,GAlD6C;AAmD9CmB,qBAAmB,2BAACpB,KAAD,EAAW;AAC5B,QAAMC,UAAU,CAACD,MAAME,IAAP,EAAaF,MAAMvD,IAAnB,EAAyBuD,MAAMtD,MAA/B,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,mBAA1B,EAA+CI,OAA/C,CAAhB,CAAP;AACD,GAtD6C;AAuD9CoB,sBAAoB,4BAACrB,KAAD,EAAW;AAC7B,QAAMC,UAAU,CAACD,MAAME,IAAP,EAAaF,MAAMvD,IAAnB,EAAyBuD,MAAMtD,MAA/B,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,oBAA1B,EAAgDI,OAAhD,CAAhB,CAAP;AACD,GA1D6C;AA2D9CqB,mBAAiB,2BAAM;AACrB,WAAO,IAAIlC,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,iBAA1B,CAAhB,CAAP;AACD,GA7D6C;AA8D9C0B,sBAAoB,4BAACvB,KAAD,EAAW;AAC7B,QAAMC,UAAU,CAACD,MAAME,IAAP,EAAaF,MAAMvD,IAAnB,EAAyBuD,MAAMtD,MAA/B,CAAhB;AACA,WAAO,IAAI0C,wBAAJ,CAAgBQ,0CAAiBC,QAAjB,CAA0B,oBAA1B,EAAgDI,OAAhD,CAAhB,CAAP;AACD;AAjE6C,CAAd,CAA3B,C;;;;;;;;;;;;;;;;;;;;;ACHP;;;;;;;;IAEauB,W,WAAAA,W;;;AAEZ,sBAAanF,EAAb,EAAiBI,IAAjB,EAAuBC,MAAvB,EAA+B;AAAA;;AAAA;;AAE9B,QAAKL,EAAL,GAAUA,EAAV;AACA,QAAKI,IAAL,GAAYA,IAAZ;AACA,QAAKC,MAAL,GAAcA,MAAd;AAJ8B;AAK9B;;;;6BAEW;AACX,OAAM+E,UAAU,KAAKhF,IAAL,CAAUiF,QAAV,EAAhB;AACA,OAAIC,YAAY,IAAhB;AACA,OAAG,KAAKjF,MAAR,EAAgB;AACfiF,gBAAY,KAAKjF,MAAL,CAAYgF,QAAZ,EAAZ;AACA;AACD,OAAGC,SAAH,EAAc;AACb,WAAU,KAAKtF,EAAf,SAAqBoF,OAArB,UAAiCE,SAAjC;AACA,IAFD,MAEO;AACN,WAAU,KAAKtF,EAAf,SAAqBoF,OAArB;AACA;AACD;;;;EApB+BG,sB;;;;;;;;;;;;;;;;;;;;;ACFjC;;;;;;;;IAEaC,Y,WAAAA,Y;;;AAEX,wBAAYhF,IAAZ,EAAkBiF,KAAlB,EAAyB;AAAA;;AAAA,4HACjBjF,IADiB;;AAEvB,UAAKiF,KAAL,GAAaA,KAAb;AAFuB;AAGxB;;;;mCAgCe;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAO,IAAP,CAtBc,CAsBF;AACb;;;mCAEe;AACd,UAAIC,QAAQ,IAAZ;AACA,UAAG,KAAKhF,OAAL,KAAiB,IAApB,EAA0B;AACxB,YAAMiF,eAAeC,KAAKH,KAAL,CAAWI,GAAX,CAAe;AAAA,iBAAKC,EAAEC,MAAP;AAAA,SAAf,EACpBC,MADoB,CACb,UAACC,GAAD,EAAMC,IAAN,EAAe;AACrB,cAAID,QAAQ,IAAZ,EAAkB;AAChB,mBAAOC,IAAP;AACD,WAFD,MAEO,IAAID,QAAQC,IAAZ,EAAkB;AACvB,mBAAOD,GAAP;AACD,WAFM,MAEA;AACL,mBAAO,CAAC,CAAR;AACD;AACF,SAToB,EASlB,IATkB,CAArB;AAUAP,gBAAQC,iBAAiB,CAAC,CAA1B;AACD;AACD,aAAOD,KAAP;AACD;;;+BAEW;AACV,UAAMS,UAAU,KAAKV,KAAL,CAAWI,GAAX,CAAe;AAAA,eAAgBO,aAAaf,QAAb,EAAhB;AAAA,OAAf,CAAhB;AACA,aAAO,MAAMc,QAAQnC,IAAR,CAAa,GAAb,CAAN,GAA0B,GAAjC;AACD;;;wBA5Ec;AACb,UAAIqC,UAAU,KAAKZ,KAAL,CAAW,CAAX,CAAd;AACA,UAAIY,mBAAmBb,YAAvB,EAAqC;AACnC,eAAOa,QAAQZ,KAAR,CAAc,CAAd,EAAiBjF,IAAxB;AACD,OAFD,MAEO;AACL,eAAO6F,QAAQ7F,IAAf;AACD;AACF;;;wBAEY;AACX,aAAO,KAAKiF,KAAL,CAAWM,MAAlB;AACD;;;wBAEc;AACb,UAAIM,UAAU,KAAKZ,KAAL,CAAW,CAAX,CAAd;AACA,UAAI,EAAEY,mBAAmBb,YAArB,CAAJ,EAAuC;AACrC,eAAO,IAAP;AACD,OAFD,MAEO;AACL,eAAOa,QAAQZ,KAAR,CAAc,CAAd,EAAiBA,KAAjB,CAAuBM,MAA9B;AACD;AACF;;;wBAEe;AACd,aAAO,KAAKrF,OAAL,KAAiB,IAAxB;AACD;;;wBAEc;AACb,aAAO,IAAP,CADa,CACD;AACb;;;;EAnC+B4F,gB;;;;;;;;;;;;;;;;;;;;;ACFlC;;AACA;;AACA;;;;;;;;IAEaC,W,WAAAA,W;;;AAEX,uBAAYd,KAAZ,EAAmB;AAAA;;AAAA,0HACXrD,aAAMoE,OADK;;AAEjB,UAAKf,KAAL,GAAaA,KAAb;AAFiB;AAGlB;;;;+BAEW;AACV,aAAO,kCAAoB,KAAKA,KAAzB,CAAP;AACD;;;;EAT8Ba,gB;;;;;;;;;;;;;;;;;;;;;;ICJpBf,U,WAAAA,U;AAEX,uBAAe;AAAA;;AACb,OAAKrE,WAAL,GAAmB,IAAnB;AACD;;;;oBAEeC,U,EAAY;AAC5B,QAAKD,WAAL,GAAmBC,UAAnB;AACA,G;sBAEiB;AACjB,UAAO,KAAKD,WAAZ;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACZF;;AACA;;;;;;;;IAEa0B,Y,WAAAA,Y;;;AAEZ,uBAAa5C,EAAb,EAAiByG,gBAAjB,EAAmC;AAAA;;AAAA;;AAElC,QAAKzG,EAAL,GAAUA,EAAV;AACA,QAAKyG,gBAAL,GAAwBA,gBAAxB;AAHkC;AAIlC;;;;6BAUW;AACX,OAAIzE,OAAO,IAAX;AACA,OAAG,KAAK0E,UAAR,EAAoB;AACnB1E,WAAO2E,0CAAwBC,mBAAxB,EAAP;AACA,IAFD,MAEO;AACN5E,WAAO2E,0CAAwBE,YAAxB,CAAqC,KAAK7G,EAA1C,CAAP;AACA;AACD,OAAI8G,SAAS,IAAb;AACA,OAAG,KAAKL,gBAAL,CAAsBV,MAAtB,IAAgC,CAAnC,EAAsC;AACrCe,aAAS,IAAT;AACA,IAFD,MAEO;AACN,QAAMC,YAAY,KAAKN,gBAAL,CAAsBZ,GAAtB,CAA0B;AAAA,YAAKC,EAAET,QAAF,EAAL;AAAA,KAA1B,CAAlB;AACAyB,aAAS,MAAMC,UAAU/C,IAAV,CAAe,GAAf,CAAN,GAA4B,GAArC;AACA;AACD,UAAOhC,OAAO8E,MAAd;AACA;;;sBAvBiB;AACjB,UAAO,KAAK9G,EAAL,KAAY,IAAnB;AACA;;;sBAEqB;AACrB,UAAO,KAAKyG,gBAAL,CAAsBV,MAA7B;AACA;;;;EAdgCR,sB;;;;;;;;;;;;;;;;;;;ACHlC;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;QAGCJ,W,GAAAA,wB;QACAvC,Y,GAAAA,0B;QACCoE,U,GAAAA,sB;QACAC,W,GAAAA,wB;QACAV,W,GAAAA,wB;QACAW,a,GAAAA,4B;QACA1B,Y,GAAAA,0B;QACA2B,e,GAAAA,gC;QACAC,Q,GAAAA,kB;QACAC,Q,GAAAA,kB;;;;;;;;;;;;;;;;;;;;;ACrBF;;;;;;;;IAEaD,Q,WAAAA,Q;;;AAEX,oBAAYE,EAAZ,EAAgBC,IAAhB,EAAsBC,KAAtB,EAA6B;AAAA;;AAAA;;AAE3B,UAAKF,EAAL,GAAUA,EAAV;AACA,UAAKC,IAAL,GAAYA,IAAZ;AACA,UAAKC,KAAL,GAAaA,KAAb;AAJ2B;AAK5B;;;;+BAEW;AACV,UAAMC,IAAI,KAAKF,IAAL,CAAUlC,QAAV,EAAV;AACA,UAAMiC,KAAK,KAAKA,EAAL,CAAQ7B,KAAnB;AACA,UAAMiC,IAAI,KAAKF,KAAL,CAAWnC,QAAX,EAAV;AACA,aAAOoC,IAAIH,EAAJ,GAASI,CAAhB;AACD;;;;EAd2BnC,sB;;;;;;;;;;;;;;;;;;;;;ACF9B;;AACA;;AACA;;;;;;;;IAEayB,U,WAAAA,U;;;AAEX,sBAAYvB,KAAZ,EAAmB;AAAA;;AAAA,wHACXrD,aAAMuF,OADK;;AAEjB,UAAKlC,KAAL,GAAaA,KAAb;AAFiB;AAGlB;;;;+BAEU;AACT,aAAO,8BAAgB,KAAKA,KAArB,EAA4B,KAAKjF,IAAjC,CAAP;AACD;;;;EAT6B8F,gB;;;;;;;;;;;;;;;;;;;ACJhC;;;;;;;;IAEaA,O,WAAAA,O;;;AAEX,mBAAa9F,IAAb,EAAmB;AAAA;;AAAA;;AAEjB,UAAKA,IAAL,GAAYA,IAAZ;AAFiB;AAGlB;;;EAL0B+E,sB;;;;;;;;;;;;;;;;;;;;;ACF7B;;AACA;;AACA;;;;;;;;IAEa0B,W,WAAAA,W;;;AAEX,uBAAYxB,KAAZ,EAAmB;AAAA;;AAAA,0HACXrD,aAAMwF,IADK;;AAEjB,UAAKnC,KAAL,GAAaA,KAAb;AAFiB;AAGlB;;;;+BAEU;AACT,aAAO,8BAAgB,KAAKA,KAArB,EAA4B,KAAKjF,IAAjC,CAAP;AACD;;;;EAT8B8F,gB;;;;;;;;;;;;;;;;;;;;;ACJjC;;AACA;;;;;;;;IAEaY,a,WAAAA,a;;;AAEX,yBAAYzB,KAAZ,EAAmB;AAAA;;AAAA,8HACXrD,aAAMyF,MADK;;AAEjB,UAAKpC,KAAL,GAAaA,KAAb;AAFiB;AAGlB;;;;+BAEU;AACT,aAAO,KAAKA,KAAZ;AACD;;;;EATgCa,gB;;;;;;;;;;;;;;;;;;;;;ACHnC;;;;;;;;IAEae,Q,WAAAA,Q;;;AAEX,oBAAaC,EAAb,EAAiBC,IAAjB,EAAuB;AAAA;;AAAA,+GACfD,EADe,EACXC,IADW,EACL,IADK;AAEtB;;;;+BAEW;AACV,UAAME,IAAI,KAAKF,IAAL,CAAUlC,QAAV,EAAV;AACA,UAAMiC,KAAK,KAAKA,EAAL,CAAQ7B,KAAnB;AACA,aAAO6B,KAAKG,CAAZ;AACD;;;;EAV2BL,kB;;;;;;;;;;;;;;;;;;;;;ACF9B;;AACA;;;;;;;;IAEaD,e,WAAAA,e;;;AAEX,2BAAYnH,EAAZ,EAAgB;AAAA;;AAAA,kIACRoC,aAAM0F,SADE;;AAEd,UAAK9H,EAAL,GAAUA,EAAV;AAFc;AAGf;;;;+BAEW;AACV,aAAO,KAAKA,EAAZ;AACD;;;;EATkCsG,gB;;;;;;;;;;;;;;;;;;;;;ACHrC;;AACA;;IAAYyB,W;;AACZ;;IAAYC,Q;;AACZ;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaC,Y,WAAAA,Y;;;iCAEUC,K,EAAO;AAC1B,UAAMC,aAAaC,iCAAgBC,eAAhB,EAAnB;AACA,aAAO,IAAIJ,YAAJ,CAAiBC,KAAjB,EAAwBC,UAAxB,CAAP;AACD;;AAED;;;;wBACmB;AACjB,aAAO,CAAP;AACD;;;wBACsB;AACrB,aAAO,CAAP;AACD;;;wBACqB;AACpB,aAAO,CAAP;AACD;;;wBACuB;AACtB,aAAO,CAAP;AACD;AACD;;;;AAEA,wBAAaD,KAAb,EAAoBC,UAApB,EAAgC;AAAA;;AAC9B,SAAKA,UAAL,GAAkBA,UAAlB;AACA,SAAKnJ,KAAL,GAAa,IAAImJ,UAAJ,CAAe,IAAIG,kBAAJ,CAAgBJ,KAAhB,CAAf,CAAb;AACA,SAAKK,WAAL,GAAmB,IAAIC,wBAAJ,CAAsB,KAAKxJ,KAA3B,CAAnB;AACA,SAAKuJ,WAAL,CAAiBE,IAAjB;AACA,SAAKC,GAAL,GAAW,CAAX;AACA,SAAKC,aAAL,GAAqB,CAAC,KAAKR,UAAL,CAAgBS,UAAjB,EACnB,KAAKT,UAAL,CAAgBU,OADG,EAEnB,KAAKV,UAAL,CAAgBW,UAFG,EAGnB,KAAKX,UAAL,CAAgBY,SAHG,CAArB;AAKA,SAAKC,aAAL,GAAqB,KAAKL,aAAL,CAAmBM,MAAnB,CAA0B,KAAKd,UAAL,CAAgBe,OAA1C,CAArB;AACA,SAAKC,qBAAL,GAA6B,CAA7B;AACA,SAAKC,KAAL,GAAa,EAAb;AACA,SAAKlK,SAAL,GAAiBkJ,iCAAgBiB,mBAAhB,EAAjB;AACA,SAAKC,oBAAL,GAA4B,EAA5B;AACA,SAAKC,qBAAL,GAA6B,EAA7B;AACD;;;;gCAEY;AACX,aAAO,KAAKC,YAAL,EAAP;AACD;;;+BAE2B;AAAA,UAAlBC,KAAkB,uEAAV,KAAKf,GAAK;;AAC1B;AACA;AACA,aAAO,KAAKH,WAAL,CAAiBmB,EAAjB,CAAoBD,KAApB,CAAP;AACD;;;gCAEYL,K,EAAO;AAClB,UAAG,KAAKA,KAAL,CAAWrD,MAAX,IAAqB,CAAxB,EAA2B;AACzB,eAAOkC,aAAa0B,IAAb,KAAsBP,KAA7B;AACD,OAFD,MAEO;AACL,eAAO,KAAKA,KAAL,CAAW,KAAKA,KAAL,CAAWrD,MAAX,GAAkB,CAA7B,MAAoCqD,KAA3C;AACD;AACF;;;8BAEUA,K,EAAO;AAChB,WAAKA,KAAL,CAAWQ,IAAX,CAAgBR,KAAhB;AACD;;;wCAEoB;AACnB,WAAKG,qBAAL,CAA2BK,IAA3B,CAAgC,EAAhC;AACD;;;+BAEW;AACV,aAAO,KAAKR,KAAL,CAAWS,GAAX,EAAP;AACD;;;uCAEmB;AAClB,aAAO,KAAKN,qBAAL,CAA2BM,GAA3B,EAAP;AACD;;;8CAE0B;AACzB,aAAO,KAAKN,qBAAL,CAA2B,KAAKA,qBAAL,CAA2BxD,MAA3B,GAAoC,CAA/D,CAAP;AACD;;;4BAEQ;AACP,WAAK+D,QAAL,CAAc,KAAKpB,GAAnB;AACA,aAAO,KAAKH,WAAL,CAAiBwB,UAAxB;AACD;;;mCAEe;AACd,UAAMpG,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAIE,aAAa,EAAjB;AACA,UAAIC,YAAY,EAAhB;;AAEA,UAAG,KAAK9B,UAAL,CAAgB+B,UAAhB,KAA+BvG,MAAMnD,IAAxC,EAA8C;AAC5C,aAAKkI,GAAL;AACA,aAAKyB,eAAL;AACA,aAAKC,cAAL;AACA,aAAK1B,GAAL;AACA,aAAK2B,iBAAL;AACA,eAAM,IAAN,EAAY;AACV,eAAKF,eAAL;AACA,cAAMxG,SAAQ,KAAKmG,QAAL,EAAd;AACA,cAAInG,OAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBmC,QAA/B,IAA2C,KAAKC,cAAL,CAAoB5G,MAApB,CAA/C,EAA2E;AACzEqG,yBAAaA,WAAWf,MAAX,CAAkB,KAAKuB,oBAAL,EAAlB,CAAb;AACD,WAFD,MAEO,IAAI7G,OAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBsC,WAAnC,EAAgD;AACrD,iBAAKJ,iBAAL;AACAJ,wBAAYA,UAAUhB,MAAV,CAAiB,KAAKyB,aAAL,EAAjB,CAAZ;AACA,iBAAKC,gBAAL;AACD,WAJM,MAIA;AACL;AACD;AACF;AACD,aAAKR,eAAL;AACA,aAAKS,eAAL;AACA,aAAKlC,GAAL;AACA,aAAKyB,eAAL;AACA,YAAG,CAAC,KAAKU,KAAL,EAAJ,EAAkB;AAChB,gBAAM1H,uCAAmBG,WAAnB,EAAN;AACD;AACD,aAAKqH,gBAAL;AACA,eAAO,EAACG,QAAQd,UAAT,EAAqBC,WAAWA,SAAhC,EAAP;AACD,OA5BD,MA4BO;AACL,cAAM9G,uCAAmBM,iBAAnB,CAAqC,KAAKzE,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgB+B,UAAxC,CAArC,EAA0FvG,KAA1F,CAAN;AACD;AACF;;;qCAEgC;AAAA,UAAjBqH,OAAiB,uEAAP,KAAO;;AAC/B,UAAMrH,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAG,KAAK3B,UAAL,CAAgB8C,UAAhB,KAA+BtH,MAAMnD,IAAxC,EAA6C;AAC3C,YAAG,CAACwK,OAAJ,EACE,MAAM7H,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CE,KAA1C,CAAN,CADF,KAGE,OAAO,KAAP;AACH;AACD,aAAO,IAAP;AACD;;;sCAEiC;AAAA,UAAjBqH,OAAiB,uEAAP,KAAO;;AAChC,UAAMrH,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAG,KAAK3B,UAAL,CAAgB+C,WAAhB,KAAgCvH,MAAMnD,IAAzC,EAA8C;AAC5C,YAAG,CAACwK,OAAJ,EACE,MAAM7H,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CE,KAA1C,CAAN,CADF,KAGE,OAAO,KAAP;AACH;AACD,aAAO,IAAP;AACD;;AAED;;;;;;;;;;;qCAQiC;AAAA,UAAjBqH,OAAiB,uEAAP,KAAO;;AAC/B,UAAMrH,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAG,KAAK3B,UAAL,CAAgBgD,UAAhB,KAA+BxH,MAAMnD,IAAxC,EAA6C;AAC3C,YAAI,CAACwK,OAAL,EAAc;AACZ,gBAAM7H,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CE,KAA1C,CAAN;AACD,SAFD,MAEO;AACL,iBAAO,KAAP;AACD;AACF;AACD,aAAO,IAAP;AACD;;;sCAEiC;AAAA,UAAjBqH,OAAiB,uEAAP,KAAO;;AAChC,UAAMrH,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAG,KAAK3B,UAAL,CAAgBiD,WAAhB,KAAgCzH,MAAMnD,IAAzC,EAA8C;AAC5C,YAAI,CAACwK,OAAL,EAAc;AACZ,gBAAM7H,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CE,KAA1C,CAAN;AACD,SAFD,MAEO;AACL,iBAAO,KAAP;AACD;AACF;AACD,aAAO,IAAP;AACD;;;2CAEsC;AAAA,UAAjBqH,OAAiB,uEAAP,KAAO;;AACrC,UAAMrH,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAG,KAAK3B,UAAL,CAAgBkD,gBAAhB,KAAqC1H,MAAMnD,IAA9C,EAAmD;AACjD,YAAI,CAACwK,OAAL,EAAc;AACZ,gBAAM7H,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CE,KAA1C,CAAN;AACD,SAFD,MAEO;AACL,iBAAO,KAAP;AACD;AACF;AACD,aAAO,IAAP;AACD;;;4CAEuC;AAAA,UAAjBqH,OAAiB,uEAAP,KAAO;;AACtC,UAAMrH,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAG,KAAK3B,UAAL,CAAgBmD,iBAAhB,KAAsC3H,MAAMnD,IAA/C,EAAoD;AAClD,YAAI,CAACwK,OAAL,EAAc;AACZ,gBAAM7H,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CE,KAA1C,CAAN;AACD,SAFD,MAEO;AACL,iBAAO,KAAP;AACD;AACF;AACD,aAAO,IAAP;AACD;;;+BAE2B;AAAA,UAAlBqH,OAAkB,uEAAR,KAAQ;;AAC1B,UAAMO,WAAW,KAAKzB,QAAL,EAAjB;AACA,UAAIyB,SAAS/K,IAAT,KAAkB,KAAK2H,UAAL,CAAgBqD,GAAtC,EAA2C;AACzC,YAAI,CAACR,OAAL,EACE,MAAM7H,uCAAmBgB,WAAnB,CAA+BoH,QAA/B,CAAN,CADF,KAGE,OAAO,KAAP;AACH;AACD,aAAO,IAAP;AACD;;;2CAEuBE,U,EAAYC,W,EAAa;AAC/C,UAAM1L,KAAKyL,eAAe,IAAf,GAAsB,OAAtB,GAAgCA,UAA3C;AACA,UAAMhC,QAAQ,KAAKH,oBAAL,CAA0BqC,OAA1B,CAAkC3L,EAAlC,CAAd;AACA,UAAGyJ,UAAU,CAAC,CAAd,EAAiB;AACf,cAAMtG,uCAAmB6B,kBAAnB,CAAsC0G,WAAtC,CAAN;AACD;AACD,WAAKpC,oBAAL,CAA0BM,IAA1B,CAA+B5J,EAA/B;AACD;;;2CAEuB4L,U,EAAYC,e,EAAiB;AACnD,UAAMpC,QAAQ,KAAKqC,uBAAL,GAA+BH,OAA/B,CAAuCC,UAAvC,CAAd;AACA,UAAGnC,UAAU,CAAC,CAAd,EAAiB;AACf,cAAMtG,uCAAmB+B,kBAAnB,CAAsC2G,eAAtC,CAAN;AACD;AACD,WAAKC,uBAAL,GAA+BlC,IAA/B,CAAoCgC,UAApC;AACD;;;0CAEsB;AACrB,UAAML,WAAW,KAAKzB,QAAL,EAAjB;AACA,UAAIyB,SAAS/K,IAAT,KAAkB,KAAK2H,UAAL,CAAgBqD,GAAlC,IAAyCD,SAAS1H,IAAT,CAAckI,KAAd,CAAoB,GAApB,CAA7C,EAAuE;AACrE,aAAKrD,GAAL;AACA;AACD;AACD,YAAMvF,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0C8H,QAA1C,CAAN;AACD;;;2CAEuB;AACtB,UAAMS,OAAO,KAAKC,eAAL,EAAb;AACA,WAAKC,QAAL;AACA,WAAKxD,GAAL;AACA,aAAOsD,IAAP;AACD;;AAED;;;;;;;;sCAKmB;AACjB,UAAMG,aAAa,KAAKrC,QAAL,EAAnB;AACA,UAAGqC,WAAW3L,IAAX,KAAoB,KAAK2H,UAAL,CAAgBmC,QAAvC,EAAiD;AAC/C,aAAK5B,GAAL;AACA,YAAM0D,aAAa,KAAKC,SAAL,EAAnB;AACA,eAAO,KAAKC,gBAAL,CAAsBF,UAAtB,EAAkC,IAAlC,CAAP;AACD,OAJD,MAIO,IAAG,KAAK7B,cAAL,CAAoB4B,UAApB,CAAH,EAAoC;AACzC,YAAMC,cAAa,KAAKC,SAAL,EAAnB;AACA,eAAO,KAAKC,gBAAL,CAAsBF,WAAtB,CAAP;AACD,OAHM,MAGA;AACL,cAAMjJ,uCAAmBW,kBAAnB,CACJ,CAAC,KAAK9E,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgBmC,QAAxC,CAAD,EAAoDrB,MAApD,CAA2D,KAAKsD,YAAL,EAA3D,CADI,EAC6EJ,UAD7E,CAAN;AAED;AAEF;;AAED;;;;;;;qCAIkBC,U,EAA6B;AAAA,UAAjBxL,OAAiB,uEAAP,KAAO;;AAC7C,UAAID,UAAU,IAAd;AACA,UAAI6L,OAAO,IAAX;AACA,UAAIC,OAAO,IAAX;AACA,UAAMC,UAAU,KAAK5C,QAAL,EAAhB;AACA,UAAM6C,WAAW,KAAKC,OAAL,EAAjB;AACA,WAAKC,sBAAL,CAA4BF,QAA5B,EAAqCD,OAArC;AACA;AACA;AACA,UAAI,KAAKI,cAAL,CAAoB,IAApB,CAAJ,EAA+B;AAC7B,aAAKpE,GAAL;AACA,aAAKyB,eAAL;AACAqC,eAAO,KAAKO,mBAAL,EAAP;AACA,aAAK5C,eAAL;AACA,aAAK6C,eAAL;AACA,aAAKtE,GAAL;AACA,YAAG,KAAKoE,cAAL,CAAoB,IAApB,CAAH,EAA8B;AAC5B,eAAKpE,GAAL;AACA,eAAKyB,eAAL;AACAsC,iBAAO,KAAKM,mBAAL,EAAP;AACA,eAAK5C,eAAL;AACA,eAAK6C,eAAL;AACA,eAAKtE,GAAL;AACD;AACF;;AAED,UAAMuE,cAAc,KAAKnD,QAAL,EAApB;AACA,UAAGlJ,WAAWqM,YAAYzM,IAAZ,KAAqB,KAAK2H,UAAL,CAAgB+E,KAAnD,EAA2D;AACzD,cAAM/J,uCAAmB2B,cAAnB,CAAkC4H,OAAlC,CAAN;AACD;AACD,UAAGO,YAAYzM,IAAZ,KAAqB,KAAK2H,UAAL,CAAgB+E,KAAxC,EAA+C;AAC7C,aAAKxE,GAAL;AACA/H,kBAAU,KAAKwM,iBAAL,EAAV;AACD;AACD,UAAIC,cAAc,IAAlB;AACA,UAAIC,aAAa,CAAjB;AACA,UAAIb,SAAS,IAAb,EAAmB;AACjBa;AACA,YAAGZ,SAAS,IAAZ,EAAkB;AAChBY;AACD;AACDD,sBAAc,IAAIpF,SAASzH,gBAAb,CAA8BoM,QAA9B,EACZ,IAAIW,0BAAJ,CAAiBlB,UAAjB,EAA6BiB,UAA7B,CADY,EAC8Bb,IAD9B,EACoCC,IADpC,EAC0C9L,OAD1C,EACmDC,OADnD,CAAd;AAED,OAPD,MAOO;AACLwM,sBAAc,IAAIpF,SAASnH,WAAb,CAAyB8L,QAAzB,EAAmCP,UAAnC,EAA+CzL,OAA/C,EAAwDC,OAAxD,CAAd;AACD;AACDwM,kBAAYjM,UAAZ,GAAyBoM,wBAAWC,gBAAX,CAA4Bd,OAA5B,CAAzB;AACA,UAAMe,aAAa,KAAK3D,QAAL,EAAnB;AACA,UAAG2D,WAAWjN,IAAX,KAAoB,KAAK2H,UAAL,CAAgBuF,KAAvC,EAA8C;AAC5C,aAAKhF,GAAL;AACA,aAAKyB,eAAL;AACA,eAAO,CAACiD,WAAD,EACNnE,MADM,CACC,KAAKqD,gBAAL,CAAsBF,UAAtB,EAAkCxL,OAAlC,CADD,CAAP;AAED,OALD,MAKO;AACJ,eAAO,CAACwM,WAAD,CAAP;AACF;AACF;;;sCAEkB;AACjB,UAAIzJ,QAAQ,KAAKmG,QAAL,EAAZ;AACA,aAAMnG,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBqD,GAA/B,IAAsC7H,MAAME,IAAN,CAAWkI,KAAX,CAAiB,SAAjB,CAA5C,EAAyE;AACvE,aAAKrD,GAAL;AACA/E,gBAAQ,KAAKmG,QAAL,EAAR;AACD;AACF;;;mCAEenG,K,EAAO;AACrB,aAAO,KAAKgF,aAAL,CAAmBgF,IAAnB,CAAwB;AAAA,eAAK7H,MAAMnC,MAAMnD,IAAjB;AAAA,OAAxB,CAAP;AACD;;AAED;;;;;;;0CAIuB;AACrB,UAAMoN,WAAW,KAAK9D,QAAL,EAAjB;AACA,UAAG8D,SAASpN,IAAT,KAAkB,KAAK2H,UAAL,CAAgBR,OAArC,EAA8C;AAC5C;AACA,aAAKe,GAAL;AACA,eAAO,KAAKmF,aAAL,CAAmBD,QAAnB,CAAP;AACD,OAJD,MAIO,IAAGA,SAASpN,IAAT,KAAkB,KAAK2H,UAAL,CAAgB2F,EAArC,EAAyC;AAC9C;AACA,aAAKpF,GAAL;AACA,eAAO,KAAKqF,aAAL,CAAmBH,QAAnB,CAAP;AACD,OAJM,MAIA;AACL,cAAMzK,uCAAmBiB,uBAAnB,CAA2C,KAAKpF,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgBS,UAAxC,CAA3C,EAAgGgF,QAAhG,CAAN;AACD;AACF;;AAED;;;;;;;;kCAKejK,K,EAAO;AACpB,UAAME,OAAOF,MAAME,IAAnB;AACA,UAAM1C,aAAaoM,wBAAWC,gBAAX,CAA4B7J,KAA5B,CAAnB;AACA,UAAMqK,MAAM,IAAIjG,YAAYf,UAAhB,CAA2B,oBAAMnD,IAAN,CAA3B,CAAZ;AACAmK,UAAI7M,UAAJ,GAAiBA,UAAjB;AACA,aAAO6M,GAAP;AACD;;;mCAEerK,K,EAAO;AACrB,UAAMxC,aAAaoM,wBAAWC,gBAAX,CAA4B7J,KAA5B,CAAnB;AACA,UAAMqK,MAAM,IAAIjG,YAAYd,WAAhB,CAA4B,qBAAOtD,MAAME,IAAb,CAA5B,CAAZ;AACAmK,UAAI7M,UAAJ,GAAiBA,UAAjB;AACA,aAAO6M,GAAP;AACD;;;qCAEiBrK,K,EAAO;AACvB,UAAME,OAAOF,MAAME,IAAnB;AACA,UAAM1C,aAAaoM,wBAAWC,gBAAX,CAA4B7J,KAA5B,CAAnB;AACA,UAAMqK,MAAM,IAAIjG,YAAYb,aAAhB,CAA8B,uBAASrD,IAAT,CAA9B,CAAZ;AACAmK,UAAI7M,UAAJ,GAAiBA,UAAjB;AACA,aAAO6M,GAAP;AACD;;;mCAEerK,K,EAAO;AACrB,UAAMsK,MAAM,qBAAOtK,MAAME,IAAb,CAAZ;AACA,UAAMmK,MAAM,IAAIjG,YAAYxB,WAAhB,CAA4B0H,GAA5B,CAAZ;AACAD,UAAI7M,UAAJ,GAAiBoM,wBAAWC,gBAAX,CAA4B7J,KAA5B,CAAjB,CAAoD;AACpD,aAAOqK,GAAP;AACD;;;wCAEoB;AACnB,WAAK5D,cAAL;AACA,UAAM8D,aAAa,KAAKpE,QAAL,EAAnB;AACA,UAAI,KAAKX,qBAAL,IAA8B,CAAlC,EAAqC;AACnC,cAAMhG,uCAAmBW,kBAAnB,wDAA2FoK,WAAW9N,IAAtG,CAAN;AACD;AACD,WAAKsI,GAAL;AACA,WAAKS,qBAAL;AACA,WAAKgB,eAAL;AACA,UAAMvE,OAAO,KAAKuI,mBAAL,EAAb;AACA,WAAKhE,eAAL;AACA,WAAKS,eAAL;AACA,UAAMwD,WAAW,KAAKtE,QAAL,EAAjB;AACA,WAAKpB,GAAL;AACA,WAAKS,qBAAL;AACA,UAAI,KAAKA,qBAAL,KAA+B,CAAnC,EAAsC;AACpC;AACA;AACA;AACA;AACA;AACD;AACD,UAAMhI,aAAaoM,wBAAWc,wBAAX,CAAoCH,UAApC,EAAgDE,QAAhD,CAAnB;AACA,UAAIE,UAAU,CAAd;AACA,UAAG1I,KAAK,CAAL,aAAmBmC,YAAYvC,YAAlC,EAAgD;AAC9C8I;AACD;AACD,UAAM9N,OAAO,IAAI8M,0BAAJ,CAAiBlL,aAAM0F,SAAvB,EAAkCwG,OAAlC,CAAb;AACA,UAAMN,MAAM,IAAIjG,YAAYvC,YAAhB,CAA6BhF,IAA7B,EAAmCoF,IAAnC,CAAZ;AACAoI,UAAI7M,UAAJ,GAAiBA,UAAjB;AACA,aAAO6M,GAAP;AACD;;AAED;;;;;;;kCAIerK,K,EAAO;AACpB,UAAMxC,aAAaoM,wBAAWC,gBAAX,CAA4B7J,KAA5B,CAAnB;AACA,UAAMqK,MAAM,IAAIjG,YAAYZ,eAAhB,CAAgCxD,MAAME,IAAtC,CAAZ;AACAmK,UAAI7M,UAAJ,GAAiBA,UAAjB;AACA,aAAO6M,GAAP;AACD;;AAED;;;;;;;;oCAKiB;AACf,WAAKO,SAAL,CAAetG,aAAauG,QAA5B;AACA,UAAIC,eAAe,EAAnB;AACA,UAAM9K,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAGnG,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBsC,WAAlC,EAA+C;AAC7C;AACA,eAAO,IAAP;AACD;AACD,WAAK/B,GAAL;AACA,UAAMgG,UAAU,KAAKrC,SAAL,EAAhB;AACA,UAAIgB,aAAa,CAAjB;AACA,UAAG,KAAKP,cAAL,CAAoB,IAApB,CAAH,EAA8B;AAC5B,aAAKpE,GAAL;AACA,aAAKsE,eAAL;AACA,aAAKtE,GAAL;AACA2E;AACA,YAAG,KAAKP,cAAL,CAAoB,IAApB,CAAH,EAA8B;AAC5B,eAAKpE,GAAL;AACA,eAAKsE,eAAL;AACA,eAAKtE,GAAL;AACA2E;AACD;AACF;AACD,UAAM3B,cAAc,KAAK5B,QAAL,EAApB;AACA,UAAM2B,aAAa,KAAKmB,OAAL,EAAnB;AACA,WAAK+B,sBAAL,CAA4BlD,UAA5B,EAAwCC,WAAxC;AACA,WAAKkD,oBAAL;AACA,WAAKlG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAI,CAAC,KAAK0E,qBAAL,CAA2B,IAA3B,CAAL,EAAuC;AACrCJ,uBAAe,KAAKK,qBAAL,EAAf,CADqC,CACQ;AAC7C,aAAK3E,eAAL;AACA,aAAK0E,qBAAL;AACA,aAAKnG,GAAL;AACD,OALD,MAKO;AACL,aAAKA,GAAL;AACD;AACD,WAAKyB,eAAL;AACA,UAAM4E,gBAAgB,KAAKC,iBAAL,EAAtB;AACA,UAAI/M,aAAayM,OAAjB;AACA,UAAGrB,aAAa,CAAhB,EAAmB;AACjBpL,qBAAa,IAAIqL,0BAAJ,CAAiBoB,OAAjB,EAA0BrB,UAA1B,CAAb;AACD;AACD,UAAM4B,OAAO,IAAIjH,SAASjG,QAAb,CAAsB0J,UAAtB,EAAkCxJ,UAAlC,EAA8CwM,YAA9C,EAA4DM,aAA5D,CAAb;AACA,UAAItD,eAAe,IAAf,IAAuB,CAACwD,KAAKC,MAAjC,EAAyC;AACvC,cAAM/L,uCAAmBoB,mBAAnB,CAAuCoC,0CAAwBC,mBAAxB,EAAvC,EACJ,KAAK5H,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgBe,OAAxC,CADI,EAEJvF,MAAMvD,IAFF,CAAN;AAGD,OAJD,MAIO,IAAI6O,KAAKC,MAAL,IAAeT,aAAa1I,MAAb,KAAwB,CAA3C,EAA8C;AACnD,cAAM5C,uCAAmB8B,eAAnB,EAAN;AACD;AACD,WAAKkK,QAAL;AACA,aAAOF,IAAP;AACD;;AAED;;;;;;;4CAIyB;AACvB,UAAMpK,OAAO,EAAb;AACA,aAAM,IAAN,EAAY;AACV,YAAIwI,aAAa,CAAjB;AACA,YAAMjB,aAAa,KAAKC,SAAL,EAAnB;AACA,YAAMK,UAAU,KAAK5C,QAAL,EAAhB;AACA,YAAM6C,WAAW,KAAKC,OAAL,EAAjB;AACA,aAAKC,sBAAL,CAA4BF,QAA5B,EAAsCD,OAAtC;AACA,YAAI,KAAKI,cAAL,CAAoB,IAApB,CAAJ,EAA+B;AAC7B,eAAKpE,GAAL;AACA2E;AACA,eAAKL,eAAL;AACA,eAAKtE,GAAL;AACA,cAAG,KAAKoE,cAAL,CAAoB,IAApB,CAAH,EAA8B;AAC5B,iBAAKpE,GAAL;AACA2E;AACA,iBAAKL,eAAL;AACA,iBAAKtE,GAAL;AACD;AACF;AACD,YAAIlI,OAAO,IAAX;AACA,YAAG6M,aAAa,CAAhB,EAAmB;AACjB7M,iBAAO,IAAI8M,0BAAJ,CAAiBlB,UAAjB,EAA6BiB,UAA7B,CAAP;AACD,SAFD,MAEO;AACL7M,iBAAO4L,UAAP;AACD;AACDvH,aAAK+E,IAAL,CAAU,IAAI5B,SAASnG,eAAb,CAA6BrB,IAA7B,EAAmCmM,QAAnC,CAAV;AACA,YAAMc,aAAa,KAAK3D,QAAL,EAAnB;AACA,YAAI2D,WAAWjN,IAAX,KAAoB,KAAK2H,UAAL,CAAgBuF,KAAxC,EACE;AACF,aAAKhF,GAAL;AACA,aAAKyB,eAAL;AACD;AACD,aAAOtF,IAAP;AACD;;;8BAEU;AACT,UAAMlB,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAGnG,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgB2F,EAAlC,EAAsC;AACpC,cAAM3K,uCAAmBe,UAAnB,CAA8BP,KAA9B,CAAN;AACD;AACD,WAAK+E,GAAL;AACA0G,cAAQC,GAAR,CAAY1L,MAAME,IAAlB;AACA,UAAI,KAAKyL,WAAL,CAAiBrH,aAAauG,QAA9B,CAAJ,EAA6C;AAC3C,YAAI7K,MAAME,IAAN,KAAe8C,0CAAwBC,mBAAxB,EAAnB,EAAiE;AAC/D,iBAAO,IAAP;AACD;AACF;AACD,aAAOjD,MAAME,IAAb;AACD;;;sCAEkB;AACjB,UAAMF,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAGnG,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgB2F,EAA/B,IAAqCnK,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBoH,MAAvE,EAA+E;AAC7E,cAAMpM,uCAAmBe,UAAnB,CAA8BP,KAA9B,CAAN;AACD;AACD,WAAK+E,GAAL;AACA,aAAO/E,MAAME,IAAb;AACD;;;gCAEY;AACX,UAAMF,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAGnG,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgB2F,EAA/B,IAAqC,KAAKwB,WAAL,CAAiBrH,aAAauG,QAA9B,CAAxC,EAAiF;AAC/E,eAAOpM,aAAMC,IAAb;AACD,OAFD,MAEO,IAAIsB,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBe,OAA/B,IAA0C,KAAKoG,WAAL,CAAiBrH,aAAauG,QAA9B,CAA9C,EAAuF;AAC5F,aAAK9F,GAAL;AACA,eAAOtG,aAAMC,IAAb;AACD,OAHM,MAGA,IAAI,KAAKkI,cAAL,CAAoB5G,KAApB,CAAJ,EAAgC;AACrC,aAAK+E,GAAL;AACA,gBAAO/E,MAAMnD,IAAb;AACE,eAAK,KAAK2H,UAAL,CAAgBS,UAArB;AACE,mBAAOxG,aAAMuF,OAAb;AACF,eAAK,KAAKQ,UAAL,CAAgBW,UAArB;AACE,mBAAO1G,aAAMoE,OAAb;AACF,eAAK,KAAK2B,UAAL,CAAgBU,OAArB;AACE,mBAAOzG,aAAMwF,IAAb;AACF,eAAK,KAAKO,UAAL,CAAgBY,SAArB;AACE,mBAAO3G,aAAMyF,MAAb;AACF;AACE;AAVJ;AAYD;;AAED,YAAM1E,uCAAmByB,YAAnB,CAAgC,KAAK2H,YAAL,EAAhC,EAAqD5I,KAArD,CAAN;AACD;;;wCAEyC;AAAA,UAAvB6L,aAAuB,uEAAP,KAAO;;AACxC,UAAIC,gBAAgB,EAApB;AACA,UAAMxO,WAAW,EAAjB;AACA,UAAIyO,UAAU,KAAd;AACA,UAAI,KAAKtF,cAAL,CAAoBoF,aAApB,CAAJ,EAAwC;AACtC,aAAK9G,GAAL;AACAgH,kBAAU,IAAV;AACD;AACD,WAAKvF,eAAL;AACA,aAAM,IAAN,EAAY;;AAEV,YAAMwF,MAAM,KAAKC,YAAL,EAAZ;AACA,YAAID,QAAQ,IAAZ,EACE;AACF,YAAGA,QAAQ,CAAC,CAAZ,EAAe;AACb,cAAIA,eAAeE,KAAnB,EAA0B;AACxBJ,4BAAgBA,cAAcxG,MAAd,CAAqB0G,GAArB,CAAhB;AACD,WAFD,MAEO;AACL1O,qBAAS2I,IAAT,CAAc+F,GAAd;AACD;AACF;AACF;AACD,WAAKxF,eAAL;AACA,UAAIuF,OAAJ,EAAa;AACX,aAAK9E,eAAL;AACA,aAAKlC,GAAL;AACA,aAAKyB,eAAL;AACD;AACD,aAAO,IAAInC,SAAS5G,YAAb,CAA0BqO,aAA1B,EAAyCxO,QAAzC,CAAP;AACD;;;mCAEe;AACd,UAAM0C,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAI,KAAKS,cAAL,CAAoB5G,KAApB,CAAJ,EAAgC;AAC9B,YAAG,CAAC,KAAK2L,WAAL,CAAiBrH,aAAauG,QAA9B,CAAJ,EAA6C;AAC3C,gBAAMrL,uCAAmBqB,uBAAnB,CAA2Cb,MAAMvD,IAAjD,CAAN;AACD;AACD,aAAKmO,SAAL,CAAetG,aAAa0B,IAA5B;AACA,YAAMmG,UAAU,KAAKzD,SAAL,EAAhB;AACA,aAAK8C,QAAL;AACA,YAAMQ,MAAM,KAAKrD,gBAAL,CAAsBwD,OAAtB,CAAZ;AACA,aAAK5D,QAAL;AACA,aAAKxD,GAAL;AACA,eAAOiH,GAAP;AACD,OAXD,MAWO,IAAIhM,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgB2F,EAAnC,EAAuC;AAC5C,eAAO,KAAKiC,cAAL,EAAP;AACD,OAFM,MAEA,IAAIpM,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBoH,MAAnC,EAA2C;AAChD,eAAO,KAAKQ,cAAL,EAAP;AACD,OAFM,MAEA,IAAIpM,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgB6H,SAAnC,EAA8C;AACnD,eAAO,KAAKC,WAAL,EAAP;AACD,OAFM,MAEA,IAAItM,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgB+H,QAAnC,EAA6C;AAClD,eAAO,KAAKC,UAAL,EAAP;AACD,OAFM,MAEA,IAAIxM,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBiI,MAAnC,EAA2C;AAChD,eAAO,KAAKC,QAAL,EAAP;AACD,OAFM,MAEA,IAAI1M,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBmI,QAAnC,EAA8C;AACnD,YAAG,CAAC,KAAKhB,WAAL,CAAiBrH,aAAasI,SAA9B,CAAJ,EAA8C;AAC5C,gBAAMpN,uCAAmBsB,qBAAnB,CACJ,KAAKzF,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgBmI,QAAxC,CADI,EAEJ3M,KAFI,CAAN;AAID;AACD,eAAO,KAAK6M,UAAL,EAAP;AACD,OARM,MAQA,IAAI7M,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBsI,SAAnC,EAA8C;AACnD,eAAO,KAAKC,eAAL,EAAP;AACD,OAFM,MAEA,IAAI/M,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBwI,KAAnC,EAA0C;AAC/C,eAAO,KAAKC,YAAL,EAAP;AACD,OAFM,MAEA,IAAIjN,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgB0I,KAAnC,EAA0C;AAC/C,eAAO,KAAKC,eAAL,EAAP;AACD,OAFM,MAEA,IAAI,KAAK5E,QAAL,CAAc,IAAd,CAAJ,EAAwB;AAC7B,aAAKxD,GAAL;AACA,eAAO,CAAC,CAAR;AACD,OAHM,MAGA;AACL,eAAO,IAAP;AACD;AACF;;;sCAEkB;AACjB,WAAK6F,SAAL,CAAetG,aAAasI,SAA5B;AACA,WAAK7H,GAAL;AACA,WAAKkG,oBAAL;AACA,WAAKlG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAM6D,MAAM,KAAKb,iBAAL,EAAZ;AACA,WAAKhD,eAAL;AACA,WAAK0E,qBAAL;AACA,WAAKnG,GAAL;AACA,WAAKyB,eAAL;AACA,WAAKC,cAAL;AACA,WAAK1B,GAAL;AACA,WAAKyB,eAAL;AACA,UAAM4G,YAAY,KAAKC,UAAL,EAAlB;AACA,WAAK7G,eAAL;AACA,WAAKS,eAAL;AACA,WAAKlC,GAAL;AACA,WAAKyB,eAAL;;AAEA,WAAKgF,QAAL;AACA,aAAO,IAAInH,SAAStF,MAAb,CAAoBsL,GAApB,EAAyB+C,SAAzB,CAAP;AACD;;;mCAEe;AACd,WAAKrI,GAAL;AACA,WAAKyB,eAAL;AACA,WAAKoE,SAAL,CAAetG,aAAasI,SAA5B;AACA,UAAMxB,gBAAgB,KAAKC,iBAAL,EAAtB;AACA,WAAK7E,eAAL,GALc,CAKU;AACxB,UAAM8G,aAAa,KAAKnH,QAAL,EAAnB;AACA,UAAImH,WAAWzQ,IAAX,KAAoB,KAAK2H,UAAL,CAAgB+H,QAAxC,EAAkD;AAChD,cAAM/M,uCAAmBM,iBAAnB,CAAqC,KAAKzE,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgB+H,QAAxC,CAArC,EAAwFe,UAAxF,CAAN;AACD;AACD,WAAKvI,GAAL;AACA,WAAKkG,oBAAL;AACA,WAAKlG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAM5I,YAAY,KAAK4L,iBAAL,EAAlB;AACA,WAAKhD,eAAL;AACA,WAAK0E,qBAAL;AACA,WAAKnG,GAAL;AACA,WAAKwD,QAAL;AACA,WAAKiD,QAAL;AACA,aAAO,IAAInH,SAAS1G,OAAb,CAAqBC,SAArB,EAAgCwN,aAAhC,CAAP;AACD;;;sCAEkB;AACjB,UAAG,KAAKO,WAAL,CAAiBrH,aAAasI,SAA9B,CAAH,EAA6C;AAC3C,aAAKhC,SAAL,CAAetG,aAAasI,SAA5B;AACD,OAFD,MAEO;AACL,aAAKhC,SAAL,CAAetG,aAAaiJ,OAA5B;AACD;AACD,WAAKxI,GAAL;AACA,WAAKkG,oBAAL;AACA,WAAKlG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAMgH,oBAAoB,KAAKhE,iBAAL,EAA1B;AACA,WAAKhD,eAAL;AACA,WAAK0E,qBAAL;AACA,WAAKnG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAMiH,YAAY,KAAKpC,iBAAL,EAAlB;;AAEA,UAAMqC,YAAY,KAAKvH,QAAL,EAAlB;AACA,UAAGuH,UAAU7Q,IAAV,KAAmB,KAAK2H,UAAL,CAAgBmJ,OAAtC,EAA+C;AAC7C,aAAK5I,GAAL;AACA,aAAKyB,eAAL;AACA,YAAMoH,UAAU,KAAKzH,QAAL,EAAhB;AACA,YAAI0H,YAAY,IAAhB;AACA,YAAG,KAAKpH,cAAL,CAAoB,IAApB,CAAH,EAA8B;AAC5BoH,sBAAY,KAAKxC,iBAAL,EAAZ;AACD,SAFD,MAEO,IAAGuC,QAAQ/Q,IAAR,KAAiB,KAAK2H,UAAL,CAAgB0I,KAApC,EAA2C;AAChDW,sBAAY,KAAKV,eAAL,EAAZ;AACD,SAFM,MAEA;AACL,gBAAM3N,uCAAmBW,kBAAnB,CAAsC,CAAC,KAAK9E,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgB0I,KAAxC,CAAD,EAAiD,GAAjD,CAAtC,EAA6FU,OAA7F,CAAN;AACD;AACD,eAAO,IAAIvJ,SAAS1F,UAAb,CAAwB6O,iBAAxB,EAA2CC,SAA3C,EAAsDI,SAAtD,CAAP;AACD;AACD,WAAKrC,QAAL;;AAEA,aAAO,IAAInH,SAAS1F,UAAb,CAAwB6O,iBAAxB,EAA2CC,SAA3C,EAAsD,IAAtD,CAAP;AACD;;;+BAEW;AACV,WAAK7C,SAAL,CAAetG,aAAasI,SAA5B;AACA,WAAK7H,GAAL;AACA,WAAKkG,oBAAL;AACA,WAAKlG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAMsH,cAAc,KAAKC,cAAL,EAApB;AACA,WAAKvH,eAAL;AACA,UAAM5I,YAAY,KAAK4L,iBAAL,EAAlB;AACA,WAAKwE,mBAAL;AACA,UAAM/P,YAAY,KAAK8P,cAAL,CAAoB,IAApB,CAAlB;AACA,WAAK7C,qBAAL;AACA,WAAKnG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAM4E,gBAAgB,KAAKC,iBAAL,EAAtB;AACA,WAAKG,QAAL;AACA,aAAO,IAAInH,SAAStG,GAAb,CAAiB+P,WAAjB,EAA8BlQ,SAA9B,EAAyCK,SAAzC,EAAoDmN,aAApD,CAAP;AACD;;;iCAEa;AACZ,WAAKR,SAAL,CAAetG,aAAasI,SAA5B;AACA,WAAK7H,GAAL;AACA,WAAKkG,oBAAL;AACA,WAAKlG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAMgH,oBAAoB,KAAKhE,iBAAL,EAA1B;AACA,WAAKhD,eAAL;AACA,WAAK0E,qBAAL;AACA,WAAKnG,GAAL;AACA,WAAKyB,eAAL;AACA,UAAMiH,YAAY,KAAKpC,iBAAL,EAAlB;AACA,WAAKG,QAAL;AACA,aAAO,IAAInH,SAASvG,KAAb,CAAmB0P,iBAAnB,EAAsCC,SAAtC,CAAP;AACD;;;iCAEa;AACZ,WAAK1I,GAAL;AACA,WAAKwD,QAAL;AACA,WAAKxD,GAAL;AACA,aAAO,IAAIV,SAASjH,KAAb,EAAP;AACD;;;kCAEc;AACb,WAAK2H,GAAL;AACA,UAAIsF,MAAM,IAAV;AACA,UAAG,CAAC,KAAK9B,QAAL,CAAc,IAAd,CAAJ,EAAyB;AACvB8B,cAAM,KAAKb,iBAAL,EAAN;AACA,aAAKjB,QAAL;AACD;AACD,WAAKxD,GAAL;AACA,aAAO,IAAIV,SAASvF,MAAb,CAAoBuL,GAApB,CAAP;AACD;;;qCAEiB;AAChB,UAAM4D,WAAW,KAAK9H,QAAL,EAAjB;AACA,UAAM+H,OAAOD,SAASpR,IAAT,KAAkB,KAAK2H,UAAL,CAAgB2F,EAA/C;AACA,UAAM9N,KAAK,KAAK8R,eAAL,EAAX;AACA,UAAG,KAAKhF,cAAL,CAAoB,IAApB,CAAH,EAA8B;AAC5B,aAAKpE,GAAL;AACA,YAAIzI,iBAAiB,IAArB;AACA,YAAIC,mBAAmB,IAAvB;AACA,aAAKiK,eAAL;AACAlK,yBAAiB,KAAK8R,eAAL,EAAjB;AACA,aAAK5H,eAAL;AACA,aAAK6C,eAAL;AACA,aAAKtE,GAAL;AACA,YAAI,KAAKoE,cAAL,CAAoB,IAApB,CAAJ,EAA+B;AAC7B,eAAKpE,GAAL;AACA,eAAKyB,eAAL;AACAjK,6BAAmB,KAAK6R,eAAL,EAAnB;AACA,eAAK5H,eAAL;AACA,eAAK6C,eAAL;AACA,eAAKtE,GAAL;AACD;AACD,YAAMsJ,aAAa,KAAKlI,QAAL,EAAnB;AACA,YAAIkI,WAAWxR,IAAX,KAAoB,KAAK2H,UAAL,CAAgB+E,KAAxC,EAA+C;AAC7C,gBAAM/J,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CuO,UAA1C,CAAN;AACD;AACD,aAAKtJ,GAAL;AACA,YAAMsF,MAAM,KAAKb,iBAAL,EAAZ;AACA,aAAKjB,QAAL;AACA,aAAKxD,GAAL;AACA,YAAMiH,MAAM,IAAI3H,SAASjI,gBAAb,CAA8BC,EAA9B,EAAkCC,cAAlC,EAAkDC,gBAAlD,EAAoE8N,GAApE,CAAZ;AACA2B,YAAIxO,UAAJ,GAAiBoM,wBAAWC,gBAAX,CAA4BwE,UAA5B,CAAjB;AACA,eAAOrC,GAAP;AACD;AACD,UAAMsC,qBAAqB,KAAKnI,QAAL,EAA3B;AACA,UAAI+H,QAAQI,mBAAmBzR,IAAnB,KAA4B,KAAK2H,UAAL,CAAgB+E,KAAxD,EAA+D;AAC7D,aAAKxE,GAAL;AACA,YAAMsF,OAAM,KAAKb,iBAAL,EAAZ;AACA,aAAKjB,QAAL;AACA,aAAKxD,GAAL;AACA,YAAMiH,OAAM,IAAI3H,SAAS1H,MAAb,CAAoBN,EAApB,EAAwBgO,IAAxB,CAAZ;AACA2B,aAAIxO,UAAJ,GAAiBoM,wBAAWC,gBAAX,CAA4ByE,kBAA5B,CAAjB;AACA,eAAOtC,IAAP;AACD,OARD,MAQO,IAAIsC,mBAAmBzR,IAAnB,KAA4B,KAAK2H,UAAL,CAAgBkD,gBAAhD,EAAkE;AACvE,YAAM6G,WAAW,KAAKC,wBAAL,CAA8BnS,EAA9B,CAAjB;AACA,aAAKkM,QAAL;AACA,aAAKxD,GAAL;AACA,eAAOwJ,QAAP;AACD,OALM,MAKA,IAAIL,IAAJ,EAAU;AACf,cAAM1O,uCAAmBW,kBAAnB,CAAsC,CAAC,GAAD,EAAK,GAAL,CAAtC,EAAiDmO,kBAAjD,CAAN;AACD,OAFM,MAEA;AACL,cAAM9O,uCAAmB4B,iBAAnB,CAAqC6M,QAArC,CAAN;AACD;AACF;;;qCAE+B;AAAA,UAAhBQ,MAAgB,uEAAP,KAAO;;AAC9B,UAAG,CAACA,MAAJ,EACE,KAAKjI,eAAL;AACF,UAAG,KAAK+B,QAAL,CAAc,IAAd,CAAH,EAAwB;AACtB,eAAO,IAAP;AACD;AACD,UAAMlM,KAAK,KAAK4M,OAAL,EAAX;AACA,UAAMyF,QAAQ,KAAKvI,QAAL,EAAd;AACA,UAAIuI,MAAM7R,IAAN,KAAe,KAAK2H,UAAL,CAAgB+E,KAAnC,EAA0C;AACxC,cAAM/J,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0C4O,KAA1C,CAAN;AACD;AACD,WAAK3J,GAAL;AACA,UAAMsF,MAAM,KAAKb,iBAAL,EAAZ;AACA,UAAG,CAACiF,MAAJ,EAAY;AACV,aAAKT,mBAAL;AACD;AACD,UAAMxQ,aAAaoM,wBAAWC,gBAAX,CAA4B6E,KAA5B,CAAnB;AACA,UAAM1C,MAAM,IAAI3H,SAAS1H,MAAb,CAAoBN,EAApB,EAAwBgO,GAAxB,CAAZ;AACA2B,UAAIxO,UAAJ,GAAiBA,UAAjB;AACA,aAAOwO,GAAP;AACD;;;iCAEa;AACZ,UAAMhM,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAGnG,MAAMnD,IAAN,KAAe,KAAK2H,UAAL,CAAgBmK,OAAlC,EAA2C;AACzC,cAAMnP,uCAAmBM,iBAAnB,CAAqC,KAAKzE,KAAL,CAAW+L,YAAX,CAAwB,KAAK5C,UAAL,CAAgBmK,OAAxC,CAArC,EAAuF3O,KAAvF,CAAN;AACD;AACD,WAAK+E,GAAL;AACA,UAAM6J,YAAY,KAAKzI,QAAL,EAAlB;AACA,UAAGyI,UAAU/R,IAAV,KAAmB,KAAK2H,UAAL,CAAgBqK,UAAtC,EAAkD;AAChD,aAAK9J,GAAL;AACA,YAAM+J,aAAa,KAAK3I,QAAL,EAAnB;AACA,YAAI2I,WAAWjS,IAAX,KAAoB,KAAK2H,UAAL,CAAgBuK,KAAxC,EAA+C;AAC7C,gBAAMvP,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CgP,UAA1C,CAAN;AACD;AACD,aAAK/J,GAAL;AACA,aAAKyB,eAAL;AACA,YAAMwI,QAAQ,KAAK3D,iBAAL,CAAuB,IAAvB,CAAd;AACA,YAAM4D,cAAc,IAAI5K,SAAShH,IAAb,CAAkB,IAAlB,CAApB;AACA4R,oBAAYC,WAAZ,CAAwBF,MAAM1R,QAA9B;AACA,eAAO,CAAC2R,WAAD,CAAP;AACD,OAZD,MAYO;AACL,YAAM5E,MAAM,KAAKb,iBAAL,EAAZ;AACA,YAAMsF,cAAa,KAAK3I,QAAL,EAAnB;AACA,YAAI2I,YAAWjS,IAAX,KAAoB,KAAK2H,UAAL,CAAgBuK,KAAxC,EAA+C;AAC7C,gBAAMvP,uCAAmBM,iBAAnB,CAAqC,GAArC,EAA0CgP,WAA1C,CAAN;AACD;AACD,aAAK/J,GAAL;AACA,aAAKyB,eAAL;AACA,YAAMwI,SAAQ,KAAK3D,iBAAL,CAAuB,IAAvB,CAAd;AACA,YAAM8D,QAAQ,IAAI9K,SAAShH,IAAb,CAAkBgN,GAAlB,CAAd;AACA8E,cAAMD,WAAN,CAAkBF,OAAM1R,QAAxB;AACA,YAAM8R,YAAY,KAAKjJ,QAAL,EAAlB;AACA,YAAGiJ,UAAUvS,IAAV,KAAmB,KAAK2H,UAAL,CAAgBmK,OAAtC,EAA+C;AAC7C,iBAAO,CAACQ,KAAD,EAAQ7J,MAAR,CAAe,KAAK+H,UAAL,EAAf,CAAP;AACD,SAFD,MAEO;AACL,iBAAO,CAAC8B,KAAD,CAAP;AACD;AACF;AACF;;AAED;;;;;;;;;;;;;;;;;;;;wCAiBqB;AACnB,UAAIE,OAAO,KAAKC,kBAAL,EAAX;AACA,aAAO,KAAKnJ,QAAL,GAAgBtJ,IAAhB,KAAyB,KAAK2H,UAAL,CAAgB+K,WAAhD,EAA6D;AAC3D,YAAMC,UAAU,KAAKrJ,QAAL,EAAhB;AACA,aAAKpB,GAAL;AACA,YAAM0K,KAAK,kCAAkB,IAAlB,CAAX;AACA,aAAKjJ,eAAL;AACA,YAAMkJ,OAAO,KAAKJ,kBAAL,EAAb;AACA,YAAMK,YAAW,IAAIvL,YAAYX,QAAhB,CAAyBgM,EAAzB,EAA6BJ,IAA7B,EAAmCK,IAAnC,CAAjB;AACAC,kBAASnS,UAAT,GAAsBoM,wBAAWC,gBAAX,CAA4B2F,OAA5B,CAAtB;AACAH,eAAOM,SAAP;AACD;AACD,aAAON,IAAP;AACD;;;yCAEqB;AACpB,UAAIA,OAAO,KAAKO,kBAAL,EAAX;AACA,aAAO,KAAKzJ,QAAL,GAAgBtJ,IAAhB,KAAyB,KAAK2H,UAAL,CAAgBqL,YAAhD,EAA8D;AAC5D,YAAML,UAAU,KAAKrJ,QAAL,EAAhB;AACA,aAAKpB,GAAL;AACA,YAAM+K,MAAM,kCAAkB,KAAlB,CAAZ;AACA,aAAKtJ,eAAL;AACA,YAAMkJ,OAAO,KAAKE,kBAAL,EAAb;AACA,YAAMD,aAAW,IAAIvL,YAAYX,QAAhB,CAAyBqM,GAAzB,EAA8BT,IAA9B,EAAoCK,IAApC,CAAjB;AACAC,mBAASnS,UAAT,GAAsBoM,wBAAWC,gBAAX,CAA4B2F,OAA5B,CAAtB;AACAH,eAAOM,UAAP;AACD;AACD,aAAON,IAAP;AACD;;;yCAEqB;AACpB,UAAMU,gBAAgB,KAAK5J,QAAL,EAAtB;AACA,UAAI4J,cAAclT,IAAd,KAAuB,KAAK2H,UAAL,CAAgBwL,YAA3C,EAAyD;AACvD,YAAMR,UAAU,KAAKrJ,QAAL,EAAhB;AACA,aAAKpB,GAAL;AACA,YAAMkL,MAAM,kCAAkB,KAAlB,CAAZ;AACA,YAAMZ,OAAO,KAAKa,kBAAL,EAAb;AACAP,mBAAW,IAAIvL,YAAYV,QAAhB,CAAyBuM,GAAzB,EAA8BZ,IAA9B,CAAX;AACAM,iBAASnS,UAAT,GAAsBoM,wBAAWC,gBAAX,CAA4B2F,OAA5B,CAAtB;AACA,eAAOG,QAAP;AAED,OATD,MASO;AACL,eAAO,KAAKO,kBAAL,EAAP;AACD;AACF;;;yCAEqB;AACpB,UAAIb,OAAO,KAAKjB,eAAL,EAAX;AACA,aAAO,KAAKjI,QAAL,GAAgBtJ,IAAhB,KAAyB,KAAK2H,UAAL,CAAgB2L,mBAAhD,EAAqE;AACnE,YAAMC,WAAW,KAAKjK,QAAL,EAAjB;AACA,aAAKpB,GAAL;AACA,YAAMsL,MAAM,kCAAkBD,SAASlQ,IAA3B,CAAZ;AACA,YAAMwP,OAAO,KAAKtB,eAAL,EAAb;AACA,YAAMuB,aAAW,IAAIvL,YAAYX,QAAhB,CAAyB4M,GAAzB,EAA8BhB,IAA9B,EAAoCK,IAApC,CAAjB;AACAC,mBAASnS,UAAT,GAAsBoM,wBAAWC,gBAAX,CAA4BuG,QAA5B,CAAtB;AACAf,eAAOM,UAAP;AACD;AACD,aAAON,IAAP;AACD;;;sCAEkB;AACjB,UAAIiB,SAAS,KAAKC,WAAL,EAAb;AACA,aAAO,KAAKpK,QAAL,GAAgBtJ,IAAhB,KAAyB,KAAK2H,UAAL,CAAgBgM,MAAhD,EAAwD;AACtD,YAAMC,aAAa,KAAKtK,QAAL,EAAnB;AACA,aAAKpB,GAAL;AACA,YAAMpB,KAAK,kCAAkB8M,WAAWvQ,IAA7B,CAAX;AACA,YAAMwQ,UAAU,KAAKH,WAAL,EAAhB;AACA,YAAMZ,aAAW,IAAIvL,YAAYX,QAAhB,CAAyBE,EAAzB,EAA6B2M,MAA7B,EAAqCI,OAArC,CAAjB;AACAf,mBAASnS,UAAT,GAAsBoM,wBAAWC,gBAAX,CAA4B4G,UAA5B,CAAtB;AACAH,iBAASX,UAAT;AACD;AACD,aAAOW,MAAP;AACD;;;kCAEc;AACb,UAAIK,OAAO,KAAKC,SAAL,EAAX;AACA,aAAO,KAAKzK,QAAL,GAAgBtJ,IAAhB,KAAyB,KAAK2H,UAAL,CAAgBqM,QAAhD,EAA0D;AACxD,YAAMC,cAAc,KAAK3K,QAAL,EAApB;AACA,aAAKpB,GAAL;AACA,YAAMpB,KAAK,kCAAkBmN,YAAY5Q,IAA9B,CAAX;AACA,YAAM6Q,QAAO,KAAKH,SAAL,EAAb;AACA,YAAMjB,aAAW,IAAIvL,YAAYX,QAAhB,CAAyBE,EAAzB,EAA6BgN,IAA7B,EAAmCI,KAAnC,CAAjB;AACApB,mBAASnS,UAAT,GAAsBoM,wBAAWC,gBAAX,CAA4BiH,WAA5B,CAAtB;AACAH,eAAOhB,UAAP;AACD;AACD,aAAOgB,IAAP;AACD;;;gCAEY;AACX,UAAM3Q,QAAQ,KAAKmG,QAAL,EAAd;AACA,UAAI3I,aAAa,IAAjB;AACA,cAAOwC,MAAMnD,IAAb;AACE,aAAK,KAAK2H,UAAL,CAAgBgM,MAArB;AACE,eAAKzL,GAAL;AACAvH,uBAAaoM,wBAAWC,gBAAX,CAA4B7J,KAA5B,CAAb;AACA,cAAMqK,MAAM,IAAIjG,YAAYV,QAAhB,CAAyB,kCAAkB1D,MAAME,IAAxB,CAAzB,EAAwD,KAAK0Q,SAAL,EAAxD,CAAZ;AACAvG,cAAI7M,UAAJ,GAAiBA,UAAjB;AACA,iBAAO6M,GAAP;AACF,aAAK,KAAK7F,UAAL,CAAgBR,OAArB;AACE,eAAKe,GAAL;AACA,iBAAO,KAAKmF,aAAL,CAAmBlK,KAAnB,CAAP;AACF,aAAK,KAAKwE,UAAL,CAAgBP,IAArB;AACE,eAAKc,GAAL;AACA,iBAAO,KAAKiM,cAAL,CAAoBhR,KAApB,CAAP;AACF,aAAK,KAAKwE,UAAL,CAAgBN,MAArB;AACE,eAAKa,GAAL;AACA,iBAAO,KAAKkM,gBAAL,CAAsBjR,KAAtB,CAAP;AACF,aAAK,KAAKwE,UAAL,CAAgB0M,OAArB;AACA,aAAK,KAAK1M,UAAL,CAAgB2M,QAArB;AACE,eAAKpM,GAAL;AACA,iBAAO,KAAKqM,cAAL,CAAoBpR,KAApB,CAAP;AACF,aAAK,KAAKwE,UAAL,CAAgB8C,UAArB;AACE,iBAAO,KAAK+J,iBAAL,EAAP;AACF,aAAK,KAAK7M,UAAL,CAAgB2F,EAArB;AACA,aAAK,KAAK3F,UAAL,CAAgBoH,MAArB;AACE,iBAAO,KAAK0F,WAAL,EAAP;AACF,aAAK,KAAK9M,UAAL,CAAgBkD,gBAArB;AACE,iBAAO,KAAK6J,mBAAL,EAAP;AACF;AACE,gBAAM/R,uCAAmBwB,gBAAnB,CAAoChB,KAApC,CAAN;AA5BJ;AA8BD;;;kCAEc;AACb,UAAMwR,SAAS,KAAKrL,QAAL,EAAf;AACA,UAAM9J,KAAK,KAAK8R,eAAL,EAAX;AACA,UAAMD,OAAOsD,OAAO3U,IAAP,KAAgB,KAAK2H,UAAL,CAAgB2F,EAA7C;AACA,UAAG+D,QAAQ,KAAK/E,cAAL,CAAoB,IAApB,CAAX,EAAsC;AACpC,YAAIsI,SAAS,IAAb;AACA,aAAK1M,GAAL;AACA,YAAM2M,aAAa,KAAKtD,eAAL,EAAnB;AACA,YAAIuD,cAAc,IAAlB;AACA,aAAKnL,eAAL;AACA,aAAK6C,eAAL;AACAoI,iBAAS,KAAKtL,QAAL,EAAT;AACA,aAAKpB,GAAL;AACA,YAAG,KAAKoE,cAAL,CAAoB,IAApB,CAAH,EAA6B;AAC3B,eAAKpE,GAAL;AACA4M,wBAAc,KAAKvD,eAAL,EAAd;AACA,eAAK5H,eAAL;AACA,eAAK6C,eAAL;AACAoI,mBAAS,KAAKtL,QAAL,EAAT;AACA,eAAKpB,GAAL;AACD;AACD,YAAMvH,aAAaoM,wBAAWc,wBAAX,CAAoC8G,MAApC,EAA4CC,MAA5C,CAAnB;AACA,YAAMpH,MAAM,IAAIjG,YAAY5C,WAAhB,CAA4BnF,EAA5B,EAAgCqV,UAAhC,EAA4CC,WAA5C,CAAZ;AACAtH,YAAI7M,UAAJ,GAAiBA,UAAjB;AACA,eAAO6M,GAAP;AAED,OAtBD,MAsBO,IAAI,KAAKY,oBAAL,CAA0B,IAA1B,CAAJ,EAAqC;AAC1C,eAAO,KAAK2G,2BAAL,CAAiCvV,EAAjC,CAAP;AACD,OAFM,MAEA,IAAI6R,IAAJ,EAAU;AACf,YAAM1Q,cAAaoM,wBAAWC,gBAAX,CAA4B2H,MAA5B,CAAnB;AACA,YAAMnH,QAAM,IAAIjG,YAAYZ,eAAhB,CAAgCnH,EAAhC,CAAZ;AACAgO,cAAI7M,UAAJ,GAAiBA,WAAjB;AACA,eAAO6M,KAAP;AACD,OALM,MAKA;AACL,cAAM7K,uCAAmB4B,iBAAnB,CAAqCoQ,MAArC,CAAN;AACD;AACF;;;oCAEgBnV,E,EAAI;AACnB,UAAMgC,OAAO2E,0CAAwB6O,eAAxB,CAAwCxV,EAAxC,CAAb;AACA,UAAIgC,SAAS,IAAb,EAAmB;AACjB,YAAIhC,OAAO2G,0CAAwBC,mBAAxB,EAAX,EAA0D;AACxD,iBAAO,IAAP;AACD;AACD,eAAO5G,EAAP;AACD,OALD,MAKO;AACL,eAAOgC,IAAP;AACD;AACF;;;gDAE4BhC,E,EAAI;AAC/B,UAAMmV,SAAS,KAAKrL,QAAL,CAAc,KAAKpB,GAAL,GAAW,CAAzB,CAAf;AACA,UAAMjC,mBAAmB,KAAKgP,qBAAL,EAAzB;AACA,UAAML,SAAS,KAAKtL,QAAL,CAAc,KAAKpB,GAAL,GAAW,CAAzB,CAAf;AACA,UAAMgN,WAAW,KAAKC,eAAL,CAAqB3V,EAArB,CAAjB;AACA,UAAMmB,aAAaoM,wBAAWc,wBAAX,CAAoC8G,MAApC,EAA4CC,MAA5C,CAAnB;AACA,UAAMzF,MAAM,IAAI5H,YAAYnF,YAAhB,CAA6B8S,QAA7B,EAAuCjP,gBAAvC,CAAZ;AACAkJ,UAAIxO,UAAJ,GAAiBA,UAAjB;AACA,aAAOwO,GAAP;AACD;;;6CAEyB3P,E,EAAI;AAC5B,aAAO,KAAKuV,2BAAL,CAAiCvV,EAAjC,CAAP;AACD;;;0CAEsB;AACrB,WAAK4O,oBAAL;AACA,UAAMuG,SAAS,KAAKrL,QAAL,EAAf;AACA,WAAKpB,GAAL;AACA,WAAKyB,eAAL;AACA,UAAM6D,MAAM,KAAKb,iBAAL,EAAZ;AACA,WAAKhD,eAAL;AACA,WAAK0E,qBAAL;AACA,UAAMuG,SAAS,KAAKtL,QAAL,EAAf;AACA,UAAM3I,aAAaoM,wBAAWc,wBAAX,CAAoC8G,MAApC,EAA4CC,MAA5C,CAAnB;AACA,WAAK1M,GAAL;AACAsF,UAAI7M,UAAJ,GAAiBA,UAAjB;AACA,aAAO6M,GAAP;AACD;;;4CAEwB;AACvB,WAAKY,oBAAL;AACA,WAAKlG,GAAL;AACA,UAAG,KAAKmG,qBAAL,CAA2B,IAA3B,CAAH,EAAqC;AACnC,aAAKnG,GAAL;AACA,eAAO,EAAP;AACD;AACD,WAAKyB,eAAL;AACA,UAAMtF,OAAO,KAAKsJ,mBAAL,EAAb;AACA,WAAKhE,eAAL;AACA,WAAK0E,qBAAL;AACA,WAAKnG,GAAL;AACA,aAAO7D,IAAP;AACD;;;0CAEsB;AACrB,UAAMA,OAAO,EAAb;AACA,aAAM,IAAN,EAAY;AACV,YAAMmJ,MAAM,KAAKb,iBAAL,EAAZ;AACAtI,aAAK+E,IAAL,CAAUoE,GAAV;AACA,YAAM4H,aAAa,KAAK9L,QAAL,EAAnB;AACA,YAAI8L,WAAWpV,IAAX,KAAoB,KAAK2H,UAAL,CAAgBuF,KAAxC,EAA+C;AAC7C;AACD,SAFD,MAEO;AACL,eAAKhF,GAAL;AACA,eAAKyB,eAAL;AACD;AACF;AACD,aAAOtF,IAAP;AACD;;;mCAEe;AAAA;;AACd,UAAMgR,QAAQ,KAAKvG,WAAL,CAAiBrH,aAAauG,QAA9B,IAA0C,KAAKxF,aAA/C,GAA+D,KAAKL,aAAlF;AACA,aAAOkN,MAAMhQ,GAAN,CAAW;AAAA,eAAK,MAAK7G,KAAL,CAAW+L,YAAX,CAAwB+K,CAAxB,CAAL;AAAA,OAAX,CAAP;AACD;;;;;;;;;;;;;;;;;;;;;QC5oCaC,iB,GAAAA,iB;AAjBT,IAAMC,gCAAY5S,OAAOC,MAAP,CAAc;AACrC4S,OAAK,EAACC,KAAK,CAAN,EAASzQ,OAAO,GAAhB,EADgC;AAErC0Q,OAAK,EAACD,KAAK,CAAN,EAASzQ,OAAO,GAAhB,EAFgC;AAGrC2Q,QAAM,EAACF,KAAK,CAAN,EAASzQ,OAAO,GAAhB,EAH+B;AAIrC4Q,OAAK,EAACH,KAAK,CAAN,EAASzQ,OAAO,GAAhB,EAJgC;AAKrC6Q,OAAK,EAACJ,KAAK,CAAN,EAASzQ,OAAO,GAAhB,EALgC;AAMrC8Q,MAAI,EAACL,KAAK,CAAN,EAASzQ,OAAO,GAAhB,EANiC;AAOrC+Q,MAAI,EAACN,KAAK,CAAN,EAASzQ,OAAO,IAAhB,EAPiC;AAQrCiE,MAAI,EAACwM,KAAK,CAAN,EAASzQ,OAAO,GAAhB,EARiC;AASrCgR,MAAI,EAACP,KAAK,CAAN,EAASzQ,OAAO,IAAhB,EATiC;AAUrCiR,MAAI,EAACR,KAAK,CAAN,EAASzQ,OAAO,IAAhB,EAViC;AAWrCkR,OAAK,EAACT,KAAK,EAAN,EAAUzQ,OAAO,IAAjB,EAXgC;AAYrCmR,OAAK,EAACV,KAAK,EAAN,EAAUzQ,OAAO,KAAjB,EAZgC;AAarCoR,MAAI,EAACX,KAAK,EAAN,EAAUzQ,OAAO,IAAjB,EAbiC;AAcrCqR,OAAK,EAACZ,KAAK,EAAN,EAAUzQ,OAAO,KAAjB;AAdgC,CAAd,CAAlB;;AAiBA,SAASsQ,iBAAT,CAA4BzO,EAA5B,EAAgC;AACrC,UAAQA,EAAR;AACE,SAAK,GAAL;AAAW,aAAO0O,UAAUC,GAAjB;AACX,SAAK,GAAL;AAAW,aAAOD,UAAUG,GAAjB;AACX,SAAK,GAAL;AAAW,aAAOH,UAAUI,IAAjB;AACX,SAAK,GAAL;AAAW,aAAOJ,UAAUK,GAAjB;AACX,SAAK,GAAL;AAAW,aAAOL,UAAUM,GAAjB;AACX,SAAK,GAAL;AAAW,aAAON,UAAUO,EAAjB;AACX,SAAK,IAAL;AAAY,aAAOP,UAAUQ,EAAjB;AACZ,SAAK,GAAL;AAAW,aAAOR,UAAUtM,EAAjB;AACX,SAAK,IAAL;AAAY,aAAOsM,UAAUS,EAAjB;AACZ,SAAK,IAAL;AAAY,aAAOT,UAAUU,EAAjB;AACZ,SAAK,IAAL;AAAY,aAAOV,UAAUW,GAAjB;AACZ,SAAK,KAAL;AAAa,aAAOX,UAAUY,GAAjB;AACb,SAAK,IAAL;AAAY,aAAOZ,UAAUa,EAAjB;AACZ,SAAK,KAAL;AAAa,aAAOb,UAAUc,GAAjB;AAdf;AAgBD,C;;;;;;;;;;;;;;;;;;;;;;IClCYvJ,U,WAAAA,U;;;qCAEc5J,K,EAAO;AAC9B,aAAO,IAAI4J,UAAJ,CAAe5J,MAAMvD,IAArB,EAA2BuD,MAAMtD,MAAjC,EAAyCsD,MAAME,IAAN,CAAWkC,MAApD,CAAP;AACD;;;6CAEgCoP,M,EAAQC,M,EAAQ;AAC/C,UAAMhV,OAAO+U,OAAO/U,IAApB;AACA,UAAMC,SAAS8U,OAAO9U,MAAtB;AACA;AACA;AACA,UAAM0W,OAAO3B,OAAO4B,UAAP,GAAoB,CAApB,GAAwB7B,OAAO6B,UAA5C;AACA,aAAO,IAAIzJ,UAAJ,CAAenN,IAAf,EAAqBC,MAArB,EAA6B0W,IAA7B,CAAP;AACD;;;AAED,sBAAa3W,IAAb,EAAmBC,MAAnB,EAA2B0W,IAA3B,EAAiC;AAAA;;AAC/B,SAAK3W,IAAL,GAAYA,IAAZ;AACA,SAAKC,MAAL,GAAcA,MAAd;AACA,SAAK0W,IAAL,GAAYA,IAAZ;AACD;;;;;;;;;;;;;;;;;;;;;;;;ACnBH;;AACA;;;;;;;;;;;;IAEaE,Q,WAAAA,Q;;;AAEX,oBAAa5Q,OAAb,EAAsB;AAAA;;AAAA;;AAEpB,UAAK6Q,EAAL,GAAU,sBAAE7Q,OAAF,CAAV;AACA,UAAK8Q,SAAL,GAAiB,EAAjB;AACA,UAAKC,WAAL;AAJoB;AAKrB;;;;kCAEc;AAAA;;AACb,WAAKF,EAAL,CAAQG,EAAR,CAAW,SAAX,EAAsB,UAACC,CAAD,EAAO;AAC3B,YAAMC,OAAOD,EAAEE,OAAF,IAAaF,EAAEG,KAA5B;AACA,YAAIF,SAAS,EAAb,EAAiB;AACf,cAAI1T,OAAO,OAAKqT,EAAL,CAAQjJ,GAAR,EAAX;AACApK,iBAAOA,KAAK6T,OAAL,CAAa,SAAb,EAAwB,EAAxB,CAAP;AACA,iBAAKC,WAAL,CAAiB9T,IAAjB;AACA,iBAAKqT,EAAL,CAAQjJ,GAAR,CAAY,EAAZ;AACD;AACF,OARD;AASD;;;iCAEa2J,Q,EAAU;AACtB,WAAKT,SAAL,CAAevN,IAAf,CAAoBgO,QAApB;AACA,WAAKV,EAAL,CAAQW,KAAR;AACD;;;gCAEYhU,I,EAAM;AACjB,WAAKsT,SAAL,CAAeW,OAAf,CAAuB,mBAAW;AAChCC,gBAAQlU,IAAR;AACD,OAFD;AAGA,WAAKsT,SAAL,CAAea,MAAf,CAAsB,CAAtB,EAAyB,KAAKb,SAAL,CAAepR,MAAxC;AACD;;;;EA/B2BkS,Y;;;;;;;;;;;;;;;;;;;;;ACH9B;;AACA;;;;;;;;;;;;IAEaC,S,WAAAA,S;;;AAEX,qBAAaC,QAAb,EAAuB;AAAA;;AAAA;;AAErB,UAAKjB,EAAL,GAAU,sBAAEiB,QAAF,CAAV;AAFqB;AAGtB;;;;+BAEWtU,I,EAAM;AAChBA,aAAOA,KAAK6T,OAAL,CAAa,IAAb,EAAmB,OAAnB,CAAP;AACA7T,aAAOA,KAAK6T,OAAL,CAAa,KAAb,EAAmB,MAAnB,CAAP;AACA,UAAMU,OAAO,sBAAE,UAAF,EAAcC,QAAd,CAAuB,uBAAvB,EAAgDC,IAAhD,CAAqDzU,IAArD,CAAb;AACA,WAAKqT,EAAL,CAAQqB,MAAR,CAAeH,IAAf;AACD;;;4BAEQ;AACP,WAAKlB,EAAL,CAAQsB,KAAR;AACD;;;;EAhB4BC,c;;;;;;;;;;;;;;;;;;;;;;ICHlBR,K,WAAAA,K;;;;;;;iCAEGL,Q,EAAU;AACtB,YAAM,IAAI3U,KAAJ,CAAU,qBAAV,CAAN;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;ICJUwV,M,WAAAA,M;;;;;;;+BAEC5U,I,EAAM;AAChB,YAAM,IAAIZ,KAAJ,CAAU,qBAAV,CAAN;AACD;;;;;;;;;;;;;;;;;;ACJH;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMyV,cAActQ,iCAAgBC,eAAhB,EAApB;AACA+G,QAAQC,GAAR,CAAY9L,0CAAiBoV,KAAjB,CAAuB,OAAvB,CAAZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,SAAS,IAAIC,UAAJ,CAAe,gBAAf,EAAiC,EAAjC,CAAf;AACA,IAAMC,QAAQ,IAAI7B,kBAAJ,CAAa,SAAb,CAAd;AACA,IAAM8B,SAAS,IAAIb,oBAAJ,CAAc,UAAd,CAAf;AACA;AACA;AACA;AACA,IAAI;AACFc,IAAE,MAAF,EAAUC,KAAV,CAAiB,YAAM;AACrB,QAAM/Q,QAAQ8Q,EAAE,QAAF,EAAY/K,GAAZ,EAAd;AACA,QAAMiL,WAAW,IAAIjR,0BAAJ,CAAiBC,KAAjB,EAAwBwQ,WAAxB,CAAjB;AACA,QAAI;AACF,UAAM9S,OAAOsT,SAASC,SAAT,EAAb;AACA,UAAMC,SAAS,IAAIC,kCAAJ,CAAqBzT,IAArB,CAAf;AACA,UAAM0T,OAAO,IAAIC,gCAAJ,CAAoBH,OAAOI,WAAP,EAApB,CAAb;AACAF,WAAKG,aAAL,CAAmBX,KAAnB;AACAC,aAAOW,KAAP;AACAJ,WAAKK,cAAL,CAAoBZ,MAApB;AACAO,WAAKM,YAAL,GAAoBC,IAApB,CAAyB;AAAA,eAAKjB,OAAOkB,IAAP,CAAY,EAAZ,CAAL;AAAA,OAAzB,EACGC,KADH,CACU,aAAK;AAACC,cAAM1C,CAAN,EAASlI,QAAQC,GAAR,CAAYiI,CAAZ;AAAgB,OADzC;AAED,KATD,CASE,OAAO2C,KAAP,EAAc;AACdD,YAAMC,KAAN;AACA7K,cAAQC,GAAR,CAAY4K,KAAZ;AACD;AAEF,GAjBD;AAkBD,CAnBD,CAmBE,OAAMC,CAAN,EAAS;AACT9K,UAAQC,GAAR,CAAY6K,CAAZ;AACD,C;;;;;;;;;;;;;;;;;QC2EeC,sB,GAAAA,sB;QA0CAC,sB,GAAAA,sB;;AAtKhB;;AACA;;AACA;;AAEA,SAASC,kBAAT,GAA+B;AAC7B,MAAMC,QAAQ,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAAd;;AAEAA,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMuF,OAAN,CAAcuO,GAAvC,IAA8C9T,aAAMuF,OAApD;AACA2S,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMwF,IAAN,CAAWsO,GAApC,IAA2C9T,aAAMwF,IAAjD;AACA0S,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMyF,MAAN,CAAaqO,GAAtC,IAA6C9T,aAAMyF,MAAnD;;AAEAyS,QAAMlY,aAAMwF,IAAN,CAAWsO,GAAjB,EAAsB9T,aAAMuF,OAAN,CAAcuO,GAApC,IAA2C9T,aAAMwF,IAAjD;AACA0S,QAAMlY,aAAMwF,IAAN,CAAWsO,GAAjB,EAAsB9T,aAAMwF,IAAN,CAAWsO,GAAjC,IAAwC9T,aAAMwF,IAA9C;AACA0S,QAAMlY,aAAMwF,IAAN,CAAWsO,GAAjB,EAAsB9T,aAAMyF,MAAN,CAAaqO,GAAnC,IAA0C9T,aAAMyF,MAAhD;;AAEAyS,QAAMlY,aAAMyF,MAAN,CAAaqO,GAAnB,EAAwB9T,aAAMuF,OAAN,CAAcuO,GAAtC,IAA6C9T,aAAMyF,MAAnD;AACAyS,QAAMlY,aAAMyF,MAAN,CAAaqO,GAAnB,EAAwB9T,aAAMwF,IAAN,CAAWsO,GAAnC,IAA0C9T,aAAMyF,MAAhD;AACAyS,QAAMlY,aAAMyF,MAAN,CAAaqO,GAAnB,EAAwB9T,aAAMyF,MAAN,CAAaqO,GAArC,IAA4C9T,aAAMyF,MAAlD;AACAyS,QAAMlY,aAAMyF,MAAN,CAAaqO,GAAnB,EAAwB9T,aAAMoE,OAAN,CAAc0P,GAAtC,IAA6C9T,aAAMyF,MAAnD;;AAEA,SAAOyS,KAAP;AACD;;AAED,SAASC,0BAAT,GAAuC;AACrC,MAAMD,QAAQ,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAAd;;AAEAA,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMuF,OAAN,CAAcuO,GAAvC,IAA8C9T,aAAMuF,OAApD;AACA2S,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMwF,IAAN,CAAWsO,GAApC,IAA2C9T,aAAMwF,IAAjD;;AAEA0S,QAAMlY,aAAMwF,IAAN,CAAWsO,GAAjB,EAAsB9T,aAAMuF,OAAN,CAAcuO,GAApC,IAA2C9T,aAAMwF,IAAjD;AACA0S,QAAMlY,aAAMwF,IAAN,CAAWsO,GAAjB,EAAsB9T,aAAMwF,IAAN,CAAWsO,GAAjC,IAAwC9T,aAAMwF,IAA9C;;AAEA,SAAO0S,KAAP;AACD;;AAED,SAASE,iCAAT,GAA8C;AAC5C,MAAMF,QAAQ,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAAd;;AAEAA,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMuF,OAAN,CAAcuO,GAAvC,IAA8C9T,aAAMoE,OAApD;;AAEA8T,QAAMlY,aAAMwF,IAAN,CAAWsO,GAAjB,EAAsB9T,aAAMwF,IAAN,CAAWsO,GAAjC,IAAwC9T,aAAMoE,OAA9C;;AAEA8T,QAAMlY,aAAMoE,OAAN,CAAc0P,GAApB,EAAyB9T,aAAMoE,OAAN,CAAc0P,GAAvC,IAA8C9T,aAAMoE,OAApD;;AAEA8T,QAAMlY,aAAMyF,MAAN,CAAaqO,GAAnB,EAAwB9T,aAAMyF,MAAN,CAAaqO,GAArC,IAA4C9T,aAAMoE,OAAlD;;AAEA,SAAO8T,KAAP;AACD;;AAED,SAASG,yBAAT,GAAsC;AACpC,MAAMH,QAAQ,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAAd;;AAEAA,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMuF,OAAN,CAAcuO,GAAvC,IAA8C9T,aAAMoE,OAApD;;AAEA8T,QAAMlY,aAAMwF,IAAN,CAAWsO,GAAjB,EAAsB9T,aAAMwF,IAAN,CAAWsO,GAAjC,IAAwC9T,aAAMoE,OAA9C;;AAEA8T,QAAMlY,aAAMyF,MAAN,CAAaqO,GAAnB,EAAwB9T,aAAMyF,MAAN,CAAaqO,GAArC,IAA4C9T,aAAMoE,OAAlD;;AAEA,SAAO8T,KAAP;AACD;;AAED,SAASI,oBAAT,GAAiC;AAC/B,MAAMJ,QAAQ,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAAd;;AAEAA,QAAMlY,aAAMoE,OAAN,CAAc0P,GAApB,EAAyB9T,aAAMoE,OAAN,CAAc0P,GAAvC,IAA8C9T,aAAMoE,OAApD;;AAEA,SAAO8T,KAAP;AACD;;AAED,SAASK,kBAAT,GAA+B;AAC7B,MAAML,QAAQ,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAAd;;AAEAA,QAAMlY,aAAMuF,OAAN,CAAcuO,GAApB,EAAyB9T,aAAMuF,OAAN,CAAcuO,GAAvC,IAA8C9T,aAAMuF,OAApD;;AAEA,SAAO2S,KAAP;AACD;;AAED,SAASM,oBAAT,GAAiC;AAC/B,MAAM/V,OAAO,EAAb;;AAEAA,OAAKzC,aAAMuF,OAAN,CAAcuO,GAAnB,IAA0B9T,aAAMuF,OAAhC;;AAEA9C,OAAKzC,aAAMwF,IAAN,CAAWsO,GAAhB,IAAuB9T,aAAMwF,IAA7B;;AAEA,SAAO/C,IAAP;AACD;;AAED,SAASgW,iBAAT,GAA8B;AAC5B,MAAMhW,OAAO,EAAb;;AAEAA,OAAKzC,aAAMoE,OAAN,CAAc0P,GAAnB,IAA0B9T,aAAMoE,OAAhC;;AAEA,SAAO3B,IAAP;AACD;;AAED,SAASiW,4BAAT,GAAyC;AACvC,MAAMC,mBAAmB,IAAIC,OAAJ,EAAzB;AACAD,mBAAiBE,GAAjB,CAAqBjF,qBAAUC,GAA/B,EAAoCoE,oBAApC;AACAU,mBAAiBE,GAAjB,CAAqBjF,qBAAUG,GAA/B,EAAoCoE,4BAApC;AACAQ,mBAAiBE,GAAjB,CAAqBjF,qBAAUI,IAA/B,EAAqCmE,4BAArC;AACAQ,mBAAiBE,GAAjB,CAAqBjF,qBAAUK,GAA/B,EAAoCkE,4BAApC;AACAQ,mBAAiBE,GAAjB,CAAqBjF,qBAAUU,EAA/B,EAAmC8D,mCAAnC;AACAO,mBAAiBE,GAAjB,CAAqBjF,qBAAUW,GAA/B,EAAoC6D,mCAApC;AACAO,mBAAiBE,GAAjB,CAAqBjF,qBAAUQ,EAA/B,EAAmCiE,2BAAnC;AACAM,mBAAiBE,GAAjB,CAAqBjF,qBAAUO,EAA/B,EAAmCkE,2BAAnC;AACAM,mBAAiBE,GAAjB,CAAqBjF,qBAAUS,EAA/B,EAAmCgE,2BAAnC;AACAM,mBAAiBE,GAAjB,CAAqBjF,qBAAUtM,EAA/B,EAAmC+Q,2BAAnC;AACAM,mBAAiBE,GAAjB,CAAqBjF,qBAAUa,EAA/B,EAAmC6D,sBAAnC;AACAK,mBAAiBE,GAAjB,CAAqBjF,qBAAUY,GAA/B,EAAoC8D,sBAApC;AACAK,mBAAiBE,GAAjB,CAAqBjF,qBAAUM,GAA/B,EAAoCqE,oBAApC;AACA,SAAOI,gBAAP;AACD;;AAED,SAASG,4BAAT,GAAyC;AACvC,MAAMH,mBAAmB,IAAIC,OAAJ,EAAzB;AACAD,mBAAiBE,GAAjB,CAAqBjF,qBAAUC,GAA/B,EAAoC2E,sBAApC;AACAG,mBAAiBE,GAAjB,CAAqBjF,qBAAUG,GAA/B,EAAoCyE,sBAApC;AACAG,mBAAiBE,GAAjB,CAAqBjF,qBAAUc,GAA/B,EAAoC+D,mBAApC;AACA,SAAOE,gBAAP;AACD;;AAED,IAAMI,WAAWL,8BAAjB;AACA,IAAMM,WAAWF,8BAAjB;;AAEO,SAASf,sBAAT,CAAiCkB,QAAjC,EAA2CC,kBAA3C,EAA+DC,mBAA/D,EAAoF;AACzF,MAAI;AACF,QAAGD,8BAA8BE,oBAA9B,IAA2CD,+BAA+BC,oBAA7E,EAAwF;AACtF,UAAIC,WAAW,EAAf;AACA,WAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIJ,mBAAmBzF,KAAnB,CAAyB9P,MAA7C,EAAqD2V,GAArD,EAA0D;AACxD,YAAMrV,UAAUiV,mBAAmBzF,KAAnB,CAAyB6F,CAAzB,CAAhB;AACA,YAAGH,oBAAoB1F,KAApB,CAA0BlK,OAA1B,CAAkCtF,OAAlC,MAA+C,CAAC,CAAnD,EAAsD;AACpDoV,mBAAS7R,IAAT,CAAcvD,OAAd;AACD;AACF;AACD,UAAGoV,SAAS1V,MAAT,IAAmB,CAAtB,EAAyB;AACvB,eAAO3D,aAAM0F,SAAb;AACD,OAFD,MAEO;AACL,eAAO,IAAI0T,oBAAJ,CAAcC,QAAd,CAAP;AACD;AACF,KAbD,MAaO,IAAGH,8BAA8BE,oBAAjC,EAA4C;AACjD,UAAGF,mBAAmBnZ,YAAnB,CAAgCoZ,mBAAhC,CAAH,EAAyD;AACvD,eAAOA,mBAAP;AACD,OAFD,MAEO;AACL,eAAOnZ,aAAM0F,SAAb;AACD;AACF,KANM,MAMA,IAAGyT,+BAA+BC,oBAAlC,EAA6C;AAClD,UAAGD,oBAAoBpZ,YAApB,CAAiCmZ,kBAAjC,CAAH,EAAyD;AACvD,eAAOA,kBAAP;AACD,OAFD,MAEO;AACL,eAAOlZ,aAAM0F,SAAb;AACD;AACF;AACD,QAAM6T,aAAaR,SAASS,GAAT,CAAaP,QAAb,EAAuBC,mBAAmBpF,GAA1C,EAA+CqF,oBAAoBrF,GAAnE,CAAnB;AACA,QAAIyF,eAAe,IAAf,IAAuBA,eAAeE,SAA1C,EAAqD;AACnD,aAAOzZ,aAAM0F,SAAb;AACD;AACD,WAAO6T,UAAP;AACD,GAhCD,CAgCE,OAAOrE,CAAP,EAAU;AACV,QAAIA,aAAawE,SAAjB,EAA4B;AAC1B,aAAO1Z,aAAM0F,SAAb;AACD,KAFD,MAEO;AACL,YAAMwP,CAAN;AACD;AACF;AACF;;AAEM,SAAS8C,sBAAT,CAAiCiB,QAAjC,EAA2CC,kBAA3C,EAA+D;AACpE,MAAI;AACF,QAAGA,8BAA8BE,oBAAjC,EAA2C;AACzC,aAAOF,kBAAP;AACD;AACD,WAAOF,SAASQ,GAAT,CAAaP,QAAb,EAAuBC,mBAAmBpF,GAA1C,CAAP;AACD,GALD,CAKE,OAAOoB,CAAP,EAAU;AACV,QAAIA,aAAawE,SAAjB,EAA4B;AAC1B,aAAO1Z,aAAM0F,SAAb;AACD,KAFD,MAEO;AACL,YAAMwP,CAAN;AACD;AACF;AACF,C;;;;;;;;;;;;;;;;;ACnLM,IAAMyE,4BAAU3Y,OAAOC,MAAP,CAAc;AACnCsG,QAAMqS,OAAO,cAAP,CAD6B;AAEnCzL,aAAWyL,OAAO,mBAAP,CAFwB;AAGnCxN,YAAUwN,OAAO,kBAAP;AAHyB,CAAd,CAAhB,C;;;;;;;;;;;;;;;;;;;ACAP;;AACA;;AACA;;AAGA;;AAEA;;AAIA;;AAOA,SAASC,UAAT,CAAqBxW,KAArB,EAA4ByW,MAA5B,EAAoC;AAClC,OAAK,IAAMC,GAAX,IAAkBD,MAAlB,EAA0B;AACxB,QAAGA,OAAOE,cAAP,CAAsBD,GAAtB,CAAH,EAA8B;AAC5B,UAAID,OAAOC,GAAP,MAAgB1W,KAApB,EAA2B;AACzB,eAAO0W,GAAP;AACD;AACF;AACF;AACD,SAAO,IAAP;AACD;;AAED,SAASE,aAAT,GAAiC;AAC/B,MAAIC,SAAS,EAAb;;AAD+B,oCAANC,IAAM;AAANA,QAAM;AAAA;;AAE/B,OAAK,IAAIb,IAAI,CAAb,EAAgBA,IAAIa,KAAKxW,MAAzB,EAAiC2V,GAAjC,EAAsC;AACpC,QAAMc,MAAMD,KAAKb,CAAL,CAAZ;AACA,SAAI,IAAMS,GAAV,IAAiBK,GAAjB,EAAsB;AACpB,UAAGA,IAAIJ,cAAJ,CAAmBD,GAAnB,CAAH,EAA4B;AAC1BG,eAAOH,GAAP,IAAcK,IAAIL,GAAJ,CAAd;AACD;AACF;AACF;AACD,SAAOG,MAAP;AACD;;AAED,IAAMG,aAAa;AACjBne,YAAU;AACRX,UAAM,yBADE;AAERC,UAAM,yBAFE;AAGRC,UAAM,yBAHE;AAIRC,WAAO,0BAJC;AAKRC,UAAM,yBALE;AAMRC,UAAM,yBANE;AAORC,UAAM,yBAPE;AAQRC,aAAS,4BARD;AASRC,aAAS,4BATD;AAURC,UAAM,yBAVE;AAWRC,UAAM;AAXE,GADO;AAcjBE,UAAQ;AACN7B,WAAO,yBADD;AAENC,YAAQ;AAFF,GAdS;AAkBjB6B,WAAS;AACPzB,gBAAY,kCADL;AAEPC,aAAS,+BAFF;AAGPC,gBAAY,kCAHL;AAIPC,gBAAY,kCAJL;AAKPC,aAAS;AALF,GAlBQ;AAyBjBsB,aAAW;AACT7B,kBAAc,mCADL;AAETC,kBAAc,mCAFL;AAGTC,oBAAgB;AAHP,GAzBM;AA8BjB4B,YAAU;AACRtB,aAAS,4BADD;AAERC,YAAQ,2BAFA;AAGRC,aAAS,4BAHD;AAIRC,eAAW,8BAJH;AAKRC,cAAU,6BALF;AAMRC,eAAW,8BANH;AAORC,iBAAa;AAPL;AA9BO,CAAnB;;AAyCA,IAAMgf,cAAcL,cAAcI,WAAWle,MAAzB,EAAiCke,WAAW/d,QAA5C,EAClB+d,WAAWje,OADO,EACEie,WAAWhe,SADb,CAApB;;AAGO,IAAMkI,4DAA0BvD,OAAOC,MAAP,CAAc;AACnDuD,uBAAqB;AAAA,WAAMwB,iCAAgBiB,mBAAhB,GAAsC5M,aAA5C;AAAA,GAD8B;AAEnD+Y,mBAAiB,yBAACmH,SAAD,EAAe;AAC9B,QAAIA,UAAUhR,OAAV,CAAkB,GAAlB,MAA2B,CAAC,CAAhC,EAAmC;AACjC,UAAMiR,QAAQD,UAAUE,KAAV,CAAgB,GAAhB,CAAd;AACA,UAAMC,MAAMb,WAAWW,MAAM,CAAN,CAAX,EAAqBxU,iCAAgB2U,kBAAhB,EAArB,CAAZ;AACA,UAAMC,eAAef,WAAWW,MAAM,CAAN,CAAX,EAAqBxU,iCAAgBiB,mBAAhB,EAArB,CAArB;AACA,UAAIyT,QAAQ,IAAR,IAAgBE,iBAAiB,IAArC,EAA2C;AACzC,eAAO,IAAP;AACD;AACD,aAAOF,MAAM,GAAN,GAAYE,YAAnB;AACD;AACD,QAAMtH,WAAWuG,WAAWU,SAAX,EAAsBvU,iCAAgBiB,mBAAhB,EAAtB,CAAjB;AACA,QAAGqM,aAAa,IAAhB,EAAsB;AACpB,UAAGgH,YAAYhH,QAAZ,CAAH,EAA0B;AACxB,eAAOA,QAAP;AACD;AACF;AACD,WAAO,IAAP;AACD,GAnBkD;AAoBnDuH,eAAa,qBAACD,YAAD,EAAkB;AAC7B,QAAIA,aAAarR,OAAb,CAAqB,GAArB,MAA8B,CAAC,CAAnC,EAAsC;AACpC,UAAMiR,QAAQI,aAAaH,KAAb,CAAmB,GAAnB,CAAd;AACA,UAAMK,UAAUN,MAAM,CAAN,CAAhB;AACA,UAAMO,UAAUP,MAAM,CAAN,CAAhB;AACA,aAAOH,WAAWS,OAAX,EAAoBC,OAApB,CAAP;AACD;AACD,WAAOT,YAAYM,YAAZ,CAAP;AACD,GA5BkD;AA6BnDnW,gBAAc,sBAACmW,YAAD,EAAkB;AAC9B,QAAIA,aAAarR,OAAb,CAAqB,GAArB,MAA8B,CAAC,CAAnC,EAAsC;AACpC,UAAMiR,QAAQI,aAAaH,KAAb,CAAmB,GAAnB,CAAd;AACA,UAAMK,UAAU9U,iCAAgB2U,kBAAhB,GAAqCH,MAAM,CAAN,CAArC,CAAhB;AACA,UAAMO,UAAU/U,iCAAgBiB,mBAAhB,GAAsCuT,MAAM,CAAN,CAAtC,CAAhB;AACA,aAAUM,OAAV,SAAqBC,OAArB;AACD,KALD,MAKO,IAAI/U,iCAAgBiB,mBAAhB,GAAsC2T,YAAtC,CAAJ,EAAyD;AAC9D,aAAO5U,iCAAgBiB,mBAAhB,GAAsC2T,YAAtC,CAAP;AACD,KAFM,MAEA;AACL,aAAOA,YAAP;AACD;AACF;AAxCkD,CAAd,CAAhC,C;;;;;;;;;;;;;;;;;;;ACtFP;;AACA;;AACA;;AACA;;AAEA,SAASI,aAAT,CAAwB5c,IAAxB,EAA8B6c,GAA9B,EAAmC;AACjC,UAAQA,GAAR;AACE,SAAK,CAAL;AACE,aAAO9Z,0CAAiBoV,KAAjB,CAAuBnY,IAAvB,CAAP;AACF;AACE,UAAM8c,YAAY/Z,0CAAiBoV,KAAjB,CAAuBnY,IAAvB,CAAlB;AACA,UAAG6c,QAAQ,CAAX,EACE,OAAO9Z,0CAAiBoV,KAAjB,CAAuB,eAAvB,EAAwC,CAAC2E,SAAD,CAAxC,CAAP,CADF,KAGE,OAAO/Z,0CAAiBoV,KAAjB,CAAuB,eAAvB,EAAwC,CAAC2E,SAAD,CAAxC,CAAP;AARN;AAUD;;AAED,SAASC,WAAT,CAAsBjW,EAAtB,EAA0B;AACxB,UAAOA,GAAG4O,GAAV;AACE,SAAKF,qBAAUY,GAAV,CAAcV,GAAnB;AACA,SAAKF,qBAAUa,EAAV,CAAaX,GAAlB;AACA,SAAKF,qBAAUc,GAAV,CAAcZ,GAAnB;AACE,aAAO3S,0CAAiBoV,KAAjB,CAAuBrR,GAAG7B,KAA1B,CAAP;AACF;AACE,aAAO6B,GAAG7B,KAAV;AANJ;AAQD;;AAEM,IAAM+X,wDAAyBpa,OAAOC,MAAP,CAAc;AAClDoa,yBAAuB,+BAACzd,EAAD,EAAKmB,UAAL,EAAoB;AACzC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAAC5D,EAAD,EAAKmB,WAAWf,IAAhB,EAAsBe,WAAWd,MAAjC,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBG,gBAAtB,CAAuC3d,EAAvC,CAAP;AACD;AACF,GARiD;AASlD2d,oBAAkB,0BAAC3d,EAAD,EAAQ;AACxB,QAAM4D,UAAU,CAAC5D,EAAD,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,kBAA1B,EAA8CI,OAA9C,CAAlB,CAAP;AACD,GAZiD;AAalDga,yBAAuB,+BAAC5d,EAAD,EAAKmB,UAAL,EAAoB;AACzC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAAC5D,EAAD,EAAKmB,WAAWf,IAAhB,EAAsBe,WAAWd,MAAjC,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBK,gBAAtB,CAAuC7d,EAAvC,CAAP;AACD;AACF,GApBiD;AAqBlD6d,oBAAkB,0BAAC7d,EAAD,EAAQ;AACxB,QAAM4D,UAAU,CAAC5D,EAAD,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,kBAA1B,EAA8CI,OAA9C,CAAlB,CAAP;AACD,GAxBiD;AAyBlDka,gBAAc,wBAAM;AAClB,WAAO,IAAIJ,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,cAA1B,CAAlB,CAAP;AACD,GA3BiD,EA2BxC;AACVua,gCAA8B,sCAAC5c,UAAD,EAAgB;AAC5C,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,CAAhB;AACA,aAAO,IAAIsd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,8BAA1B,EAA0DI,OAA1D,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBQ,uBAAtB,EAAP;AACD;AACF,GAnCiD;AAoClDA,2BAAyB,mCAAM;AAC7B,WAAO,IAAIN,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,yBAA1B,CAAlB,CAAP;AACD,GAtCiD;AAuClDya,wBAAsB,8BAAC9c,UAAD,EAAe;AACnC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,CAAhB;AACA,aAAO,IAAI8d,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,sBAA1B,EAAkDI,OAAlD,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBW,eAAtB,EAAP;AACD;AAEF,GA/CiD;AAgDlDA,mBAAiB,2BAAK;AACpB,WAAO,IAAID,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,iBAA1B,CAAjB,CAAP;AACD,GAlDiD;AAmDlD4a,2BAAyB,iCAAC5d,IAAD,EAAO6c,GAAP,EAAYlc,UAAZ,EAA2B;AAClD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACwZ,cAAc5c,IAAd,EAAoB6c,GAApB,CAAD,EAA2Blc,WAAWf,IAAtC,EAA4Ce,WAAWd,MAAvD,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,yBAA1B,EAAqDI,OAArD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBa,kBAAtB,CAAyC7d,IAAzC,EAA+C6c,GAA/C,CAAP;AACD;AACF,GA1DiD;AA2DlDgB,sBAAoB,4BAAC7d,IAAD,EAAO6c,GAAP,EAAe;AACjC,QAAMzZ,UAAU,CAACwZ,cAAc5c,IAAd,EAAoB6c,GAApB,CAAD,CAAhB;AACA,WAAO,IAAIK,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,oBAA1B,EAAgDI,OAAhD,CAAlB,CAAP;AACD,GA9DiD;AA+DlD0a,iCAA+B,uCAACtQ,GAAD,EAAMxN,IAAN,EAAY6c,GAAZ,EAAiBlc,UAAjB,EAAgC;AAC7D,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACoK,GAAD,EAAMoP,cAAc5c,IAAd,EAAoB6c,GAApB,CAAN,EAAgClc,WAAWf,IAA3C,EAAiDe,WAAWd,MAA5D,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,+BAA1B,EAA2DI,OAA3D,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBe,wBAAtB,CAA+CvQ,GAA/C,EAAoDxN,IAApD,EAA0D6c,GAA1D,CAAP;AACD;AACF,GAtEiD;AAuElDkB,4BAA0B,kCAACvQ,GAAD,EAAMxN,IAAN,EAAY6c,GAAZ,EAAoB;AAC5C,QAAMzZ,UAAU,CAACoK,GAAD,EAAMoP,cAAc5c,IAAd,EAAoB6c,GAApB,CAAN,CAAhB;AACA,WAAO,IAAIK,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,0BAA1B,EAAsDI,OAAtD,CAAlB,CAAP;AACD,GA1EiD;AA2ElD4a,4BAA0B,kCAACrd,UAAD,EAAgB;AACxC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBe,WAAWd,MAA7B,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,0BAA1B,EAAsDI,OAAtD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBiB,mBAAtB,EAAP;AACD;AACF,GAlFiD;AAmFlDA,uBAAqB,+BAAM;AACzB,WAAO,IAAIf,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,qBAA1B,CAAlB,CAAP;AACD,GArFiD;AAsFlDkb,qBAAmB,2BAACvd,UAAD,EAAgB;AACjC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,CAAhB;AACA,aAAO,IAAIsd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,mBAA1B,EAA+CI,OAA/C,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBmB,YAAtB,EAAP;AACD;AACF,GA7FiD;AA8FlDA,gBAAc,wBAAM;AAClB,WAAO,IAAIjB,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,cAA1B,CAAlB,CAAP;AACD,GAhGiD;AAiGlDob,2BAAyB,iCAACzd,UAAD,EAAgB;AACvC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBe,WAAWd,MAA7B,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,yBAA1B,EAAqDI,OAArD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBqB,kBAAtB,EAAP;AACD;AACF,GAxGiD;AAyGlDA,sBAAoB,8BAAM;AACxB,WAAO,IAAInB,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,oBAA1B,CAAlB,CAAP;AACD,GA3GiD;AA4GlDsb,0BAAwB,gCAAC3d,UAAD,EAAgB;AACtC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBe,WAAWd,MAA7B,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,wBAA1B,EAAoDI,OAApD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBuB,iBAAtB,EAAP;AACD;AACF,GAnHiD;AAoHlDA,qBAAmB,6BAAM;AACvB,WAAO,IAAIrB,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,mBAA1B,CAAlB,CAAP;AACD,GAtHiD;AAuHlDwb,sBAAoB,8BAAM;AACxB,WAAO,IAAId,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,oBAA1B,CAAjB,CAAP;AACD,GAzHiD;AA0HlDyb,mBAAiB,yBAACjf,EAAD,EAAQ;AACvB,QAAM4D,UAAW,CAAC5D,EAAD,CAAjB;AACA,WAAO,IAAIke,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,iBAA1B,EAA6CI,OAA7C,CAAjB,CAAP;AACD,GA7HiD;AA8HlDsb,0BAAwB,gCAAClR,GAAD,EAAMxN,IAAN,EAAY6c,GAAZ,EAAiBlc,UAAjB,EAAgC;AACtD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACoK,GAAD,EAAMoP,cAAc5c,IAAd,EAAoB6c,GAApB,CAAN,EAAgClc,WAAWf,IAA3C,EAAiDe,WAAWd,MAA5D,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,wBAA1B,EAAoDI,OAApD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsB2B,iBAAtB,CAAwCnR,GAAxC,EAA6CxN,IAA7C,EAAmD6c,GAAnD,CAAP;AACD;AACF,GArIiD;AAsIlD8B,qBAAmB,2BAACnR,GAAD,EAAMxN,IAAN,EAAY6c,GAAZ,EAAoB;AACrC,QAAMzZ,UAAU,CAACoK,GAAD,EAAMoP,cAAc5c,IAAd,EAAoB6c,GAApB,CAAN,CAAhB;AACA,WAAO,IAAIK,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,mBAA1B,EAA+CI,OAA/C,CAAlB,CAAP;AACD,GAzIiD;AA0IlDwb,2BAAyB,iCAACpf,EAAD,EAAKmB,UAAL,EAAoB;AAC3C,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBe,WAAWd,MAA7B,EAAqCL,EAArC,CAAhB;AACA,aAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,yBAA1B,EAAqDI,OAArD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsB6B,kBAAtB,CAAyCrf,EAAzC,CAAP;AACD;AACF,GAjJiD;AAkJlDqf,sBAAoB,4BAACrf,EAAD,EAAQ;AAC1B,QAAM4D,UAAU,CAAC5D,EAAD,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,oBAA1B,EAAgDI,OAAhD,CAAlB,CAAP;AACD,GArJiD;AAsJlD0b,6BAA2B,mCAACtf,EAAD,EAAKmB,UAAL,EAAoB;AAC7C,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAAC5D,EAAD,EAAKmB,WAAWf,IAAhB,EAAsBe,WAAWd,MAAjC,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,2BAA1B,EAAuDI,OAAvD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsB+B,oBAAtB,CAA2Cvf,EAA3C,CAAP;AACD;AACF,GA7JiD;AA8JlDuf,wBAAsB,8BAACvf,EAAD,EAAQ;AAC5B,QAAM4D,UAAU,CAAC5D,EAAD,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,sBAA1B,EAAkDI,OAAlD,CAAlB,CAAP;AACD,GAjKiD;AAkKlD4b,8BAA4B,oCAACxf,EAAD,EAAKmB,UAAL,EAAoB;AAC9C,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAAC5D,EAAD,EAAKmB,WAAWf,IAAhB,EAAsBe,WAAWd,MAAjC,CAAhB;AACA,aAAO,IAAIqd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,4BAA1B,EAAwDI,OAAxD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBiC,qBAAtB,CAA4Czf,EAA5C,CAAP;AACD;AACF,GAzKiD;AA0KlDyf,yBAAuB,+BAACzf,EAAD,EAAQ;AAC7B,QAAM4D,UAAU,CAAC5D,EAAD,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAlB,CAAP;AACD,GA7KiD;AA8KlD8b,gCAA8B,sCAAC1f,EAAD,EAAKyF,KAAL,EAAY/E,OAAZ,EAAqBS,UAArB,EAAoC;AAChE,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBqF,KAAlB,EAAyBzF,EAAzB,EAA6BU,OAA7B,CAAhB;AACA,aAAO,IAAIwd,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,8BAA1B,EAA0DI,OAA1D,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBmC,uBAAtB,CAA8C3f,EAA9C,EAAkDyF,KAAlD,EAAyD/E,OAAzD,CAAP;AACD;AACF,GArLiD;AAsLlDif,2BAAyB,iCAAC3f,EAAD,EAAKyF,KAAL,EAAY/E,OAAZ,EAAwB;AAC/C,QAAMkD,UAAU,CAAC6B,KAAD,EAAQzF,EAAR,EAAYU,OAAZ,CAAhB;AACA,WAAO,IAAIwd,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,yBAA1B,EAAqDI,OAArD,CAAjB,CAAP;AACD,GAzLiD;AA0LlDgc,8BAA4B,oCAAC5f,EAAD,EAAKyF,KAAL,EAAYhF,KAAZ,EAAmBU,UAAnB,EAAkC;AAC5D,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBqF,KAAlB,EAAyBzF,EAAzB,EAA6BS,KAA7B,CAAhB;AACA,aAAO,IAAIyd,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,4BAA1B,EAAwDI,OAAxD,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBqC,qBAAtB,CAA4C7f,EAA5C,EAAgDyF,KAAhD,EAAuDhF,KAAvD,CAAP;AACD;AACF,GAjMiD;AAkMlDof,yBAAuB,+BAAC7f,EAAD,EAAKyF,KAAL,EAAYhF,KAAZ,EAAsB;AAC3C,QAAMmD,UAAU,CAAC6B,KAAD,EAAQzF,EAAR,EAAYS,KAAZ,CAAhB;AACA,WAAO,IAAIyd,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAjB,CAAP;AACD,GArMiD;AAsMlDkc,8BAA4B,oCAAC9f,EAAD,EAAKyF,KAAL,EAAYhF,KAAZ,EAAmBU,UAAnB,EAAkC;AAC5D,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBqF,KAAlB,EAAyBzF,EAAzB,EAA6BS,KAA7B,CAAhB;AACA,aAAO,IAAIyd,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,4BAA1B,EAAwDI,OAAxD,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBuC,qBAAtB,CAA4C/f,EAA5C,EAAgDyF,KAAhD,EAAuDhF,KAAvD,CAAP;AACD;AACF,GA7MiD;AA8MlDsf,yBAAuB,+BAAC/f,EAAD,EAAKyF,KAAL,EAAYhF,KAAZ,EAAsB;AAC3C,QAAMmD,UAAU,CAAC6B,KAAD,EAAQzF,EAAR,EAAYS,KAAZ,CAAhB;AACA,WAAO,IAAIyd,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAjB,CAAP;AACD,GAjNiD;AAkNlDoc,0BAAwB,gCAAChgB,EAAD,EAAKmB,UAAL,EAAoB;AAC1C,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBJ,EAAlB,CAAhB;AACA,aAAO,IAAIke,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,wBAA1B,EAAoDI,OAApD,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsByC,iBAAtB,CAAwCjgB,EAAxC,CAAP;AACD;AACF,GAzNiD;AA0NlDigB,qBAAmB,2BAACjgB,EAAD,EAAQ;AACzB,QAAM4D,UAAU,CAAC5D,EAAD,CAAhB;AACA,WAAO,IAAIke,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,mBAA1B,EAA+CI,OAA/C,CAAjB,CAAP;AACD,GA7NiD;AA8NlDsc,sBAAoB,4BAAClgB,EAAD,EAAQ;AAC1B,QAAM4D,UAAU,CAAC5D,EAAD,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,oBAA1B,EAAgDI,OAAhD,CAAlB,CAAP;AACD,GAjOiD;AAkOlDuc,4BAA0B,kCAACngB,EAAD,EAAKQ,IAAL,EAAW6c,GAAX,EAAgBlc,UAAhB,EAA+B;AACvD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBJ,EAAlB,EAAsBod,cAAc5c,IAAd,EAAoB6c,GAApB,CAAtB,CAAhB;AACA,aAAO,IAAIK,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,0BAA1B,EAAsDI,OAAtD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsB4C,mBAAtB,CAA0CpgB,EAA1C,EAA8CQ,IAA9C,EAAoD6c,GAApD,CAAP;AACD;AACF,GAzOiD;AA0OlD+C,uBAAqB,6BAACpgB,EAAD,EAAKQ,IAAL,EAAW6c,GAAX,EAAmB;AACtC,QAAMzZ,UAAU,CAAC5D,EAAD,EAAKod,cAAc5c,IAAd,EAAoB6c,GAApB,CAAL,CAAhB;AACA,WAAO,IAAIK,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,0BAA1B,EAAsDI,OAAtD,CAAlB,CAAP;AACD,GA7OiD;AA8OlDyc,4BAA0B,kCAACrgB,EAAD,EAAKQ,IAAL,EAAW6c,GAAX,EAAgBlc,UAAhB,EAA+B;AACvD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBJ,EAAlB,EAAsBod,cAAc5c,IAAd,EAAoB6c,GAApB,CAAtB,CAAhB;AACA,aAAO,IAAIK,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,0BAA1B,EAAsDI,OAAtD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsB8C,mBAAtB,CAA0CtgB,EAA1C,EAA8CQ,IAA9C,EAAoD6c,GAApD,CAAP;AACD;AACF,GArPiD;AAsPlDiD,uBAAqB,6BAACtgB,EAAD,EAAKQ,IAAL,EAAW6c,GAAX,EAAmB;AACtC,QAAMzZ,UAAU,CAAC5D,EAAD,EAAKod,cAAc5c,IAAd,EAAoB6c,GAApB,CAAL,CAAhB;AACA,WAAO,IAAIK,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,qBAA1B,EAAiDI,OAAjD,CAAlB,CAAP;AACD,GAzPiD;AA0PlD2c,gCAA8B,sCAACvgB,EAAD,EAAK0D,QAAL,EAAe8c,MAAf,EAAuBrf,UAAvB,EAAsC;AAClE,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBJ,EAAlB,EAAsB0D,QAAtB,EAAgC8c,MAAhC,CAAhB;AACA,aAAO,IAAI9C,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,8BAA1B,EAA0DI,OAA1D,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBiD,uBAAtB,CAA8CzgB,EAA9C,EAAkD0D,QAAlD,EAA4D8c,MAA5D,CAAP;AACD;AACF,GAjQiD;AAkQlDC,2BAAyB,iCAACzgB,EAAD,EAAK0D,QAAL,EAAe8c,MAAf,EAA0B;AACjD,QAAM5c,UAAU,CAAC5D,EAAD,EAAK0D,QAAL,EAAe8c,MAAf,CAAhB;AACA,WAAO,IAAI9C,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,yBAA1B,EAAqDI,OAArD,CAAlB,CAAP;AACD,GArQiD;AAsQlD8c,+BAA6B,qCAAC1gB,EAAD,EAAKgO,GAAL,EAAU7M,UAAV,EAAyB;AACpD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACoK,GAAD,EAAMhO,EAAN,EAAUmB,WAAWf,IAArB,CAAhB;AACA,aAAO,IAAIsd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,6BAA1B,EAAyDI,OAAzD,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBmD,sBAAtB,CAA6C3gB,EAA7C,EAAiDgO,GAAjD,CAAP;AACD;AACF,GA7QiD;AA8QlD2S,0BAAwB,gCAAC3gB,EAAD,EAAKgO,GAAL,EAAa;AACnC,QAAMpK,UAAU,CAACoK,GAAD,EAAMhO,EAAN,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,6BAA1B,EAAyDI,OAAzD,CAAlB,CAAP;AACD,GAjRiD;AAkRlDgd,oBAAkB,0BAAC5gB,EAAD,EAAKgO,GAAL,EAAU7M,UAAV,EAAyB;AACzC,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACoK,GAAD,EAAMhO,EAAN,EAAWmB,WAAWf,IAAtB,CAAhB;AACA,aAAO,IAAIsd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,kBAA1B,EAA8CI,OAA9C,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBqD,WAAtB,CAAkC7gB,EAAlC,EAAsCgO,GAAtC,CAAP;AACD;AACF,GAzRiD;AA0RlD6S,eAAa,qBAAC7gB,EAAD,EAAKgO,GAAL,EAAa;AACxB,QAAMpK,UAAU,CAACoK,GAAD,EAAMhO,EAAN,CAAhB;AACA,WAAO,IAAI0d,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,aAA1B,EAAyCI,OAAzC,CAAlB,CAAP;AACD,GA7RiD;AA8RlDkd,iCAA+B,uCAAC3f,UAAD,EAAgB;AAC7C,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,CAAhB;AACA,aAAO,IAAI8d,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,+BAA1B,EAA2DI,OAA3D,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBuD,wBAAtB,EAAP;AACD;AACF,GArSiD;AAsSlDA,4BAA0B,oCAAM;AAC9B,WAAO,IAAI7C,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,0BAA1B,CAAjB,CAAP;AACD,GAxSiD;AAySlDwd,mCAAiC,yCAAChT,GAAD,EAAM7M,UAAN,EAAqB;AACpD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkB4N,GAAlB,CAAhB;AACA,aAAO,IAAIkQ,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,iCAA1B,EAA6DI,OAA7D,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsByD,0BAAtB,CAAiDjT,GAAjD,CAAP;AACD;AACF,GAhTiD;AAiTlDiT,8BAA4B,oCAACjT,GAAD,EAAS;AACnC,QAAMpK,UAAU,CAACoK,GAAD,CAAhB;AACA,WAAO,IAAIkQ,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,4BAA1B,EAAwDI,OAAxD,CAAjB,CAAP;AACD,GApTiD;AAqTlDsd,mCAAiC,yCAACxd,QAAD,EAAW8c,MAAX,EAAmBrf,UAAnB,EAAkC;AACjE,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBsD,QAAlB,EAA4B8c,MAA5B,CAAhB;AACA,aAAO,IAAItC,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,iCAA1B,EAA6DI,OAA7D,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsByD,0BAAtB,CAAiDvd,QAAjD,EAA2D8c,MAA3D,CAAP;AACD;AACF,GA5TiD;AA6TlDW,8BAA4B,oCAACzd,QAAD,EAAW8c,MAAX,EAAsB;AAChD,QAAM5c,UAAU,CAACF,QAAD,EAAW8c,MAAX,CAAhB;AACA,WAAO,IAAItC,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,4BAA1B,EAAwDI,OAAxD,CAAjB,CAAP;AACD,GAhUiD;AAiUlDwd,qCAAmC,2CAAC1d,QAAD,EAAW8c,MAAX,EAAmBrf,UAAnB,EAAkC;AACnE,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBsD,QAAlB,EAA4B8c,MAA5B,CAAhB;AACA,aAAO,IAAItC,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,mCAA1B,EAA+DI,OAA/D,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsB6D,4BAAtB,CAAmD3d,QAAnD,EAA6D8c,MAA7D,CAAP;AACD;AACF,GAxUiD;AAyUlDa,gCAA8B,sCAAC3d,QAAD,EAAW8c,MAAX,EAAsB;AAClD,QAAM5c,UAAU,CAACF,QAAD,EAAW8c,MAAX,CAAhB;AACA,WAAO,IAAItC,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,8BAA1B,EAA0DI,OAA1D,CAAjB,CAAP;AACD,GA5UiD;AA6UlD0d,yBAAuB,+BAACC,MAAD,EAAS/gB,IAAT,EAAe6c,GAAf,EAAoBlc,UAApB,EAAmC;AACxD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBmd,YAAYgE,MAAZ,CAAlB,EAAuCnE,cAAc5c,IAAd,EAAoB6c,GAApB,CAAvC,CAAhB;AACA,aAAO,IAAIa,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBgE,gBAAtB,CAAuCD,MAAvC,EAA+C/gB,IAA/C,EAAqD6c,GAArD,CAAP;AACD;AACF,GApViD;AAqVlDmE,oBAAkB,0BAACD,MAAD,EAAS/gB,IAAT,EAAe6c,GAAf,EAAuB;AACvC,QAAMzZ,UAAU,CAAC2Z,YAAYgE,MAAZ,CAAD,EAAsBnE,cAAc5c,IAAd,EAAoB6c,GAApB,CAAtB,CAAhB;AACA,WAAO,IAAIa,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,kBAA1B,EAA8CI,OAA9C,CAAjB,CAAP;AACD,GAxViD;AAyVlD6d,yBAAuB,+BAACF,MAAD,EAASG,QAAT,EAAmBC,OAAnB,EAA4BC,SAA5B,EAAuCC,QAAvC,EAAkD1gB,UAAlD,EAAiE;AACtF,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,EAAkBmd,YAAYgE,MAAZ,CAAlB,EAAuCnE,cAAcsE,QAAd,EAAwBC,OAAxB,CAAvC,EAAyEvE,cAAcwE,SAAd,EAAyBC,QAAzB,CAAzE,CAAhB;AACA,aAAO,IAAI3D,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,uBAA1B,EAAmDI,OAAnD,CAAjB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBsE,gBAAtB,CAAuCP,MAAvC,EAA+CG,QAA/C,EAAyDC,OAAzD,EAAkEC,SAAlE,EAA6EC,QAA7E,CAAP;AACD;AACF,GAhWiD;AAiWlDC,oBAAkB,0BAACP,MAAD,EAASG,QAAT,EAAmBC,OAAnB,EAA4BC,SAA5B,EAAuCC,QAAvC,EAAoD;AACpE,QAAMje,UAAU,CAAC2Z,YAAYgE,MAAZ,CAAD,EAAsBnE,cAAcsE,QAAd,EAAwBC,OAAxB,CAAtB,EAAwDvE,cAAcwE,SAAd,EAAyBC,QAAzB,CAAxD,CAAhB;AACA,WAAO,IAAI3D,0BAAJ,CAAiB3a,0CAAiBC,QAAjB,CAA0B,kBAA1B,EAA8CI,OAA9C,CAAjB,CAAP;AACD,GApWiD;AAqWlDme,qCAAmC,2CAAC5gB,UAAD,EAAgB;AACjD,QAAGA,UAAH,EAAe;AACb,UAAMyC,UAAU,CAACzC,WAAWf,IAAZ,CAAhB;AACA,aAAO,IAAIsd,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,mCAA1B,EAA+DI,OAA/D,CAAlB,CAAP;AACD,KAHD,MAGO;AACL,aAAO4Z,sBAAsBwE,4BAAtB,EAAP;AACD;AACF,GA5WiD;AA6WlDA,gCAA8B,wCAAM;AAClC,WAAO,IAAItE,4BAAJ,CAAkBna,0CAAiBC,QAAjB,CAA0B,8BAA1B,CAAlB,CAAP;AACD;AA/WiD,CAAd,CAA/B,C;;;;;;;;;;;;;;;;;;;;;;;;IC7BM0a,Y,WAAAA,Y;;;AAEX,0BAAqB;AAAA;;AAAA;;AAAA,sCAALlb,GAAK;AAALA,SAAK;AAAA;;AAAA,uJACVA,GADU;;AAEnB,QAAGC,MAAMC,iBAAT,EACED,MAAMC,iBAAN,QAA8Bgb,YAA9B;AAHiB;AAIpB;;;EAN+Bjb,K;;;;;;;;;;;;;;;;;;;;;;;;ICArBya,a,WAAAA,a;;;AAEX,2BAAqB;AAAA;;AAAA;;AAAA,sCAAL1a,GAAK;AAALA,SAAK;AAAA;;AAAA,yJACVA,GADU;;AAEnB,QAAGC,MAAMC,iBAAT,EACED,MAAMC,iBAAN,QAA8Bwa,aAA9B;AAHiB;AAIpB;;;EANgCza,K;;;;;;;;;;;;;;;;;;;;;ACAnC;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;IAAY+E,Q;;AACZ;;IAAYD,W;;AACZ;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AACA;;AACA;;;;;;;;IAEawR,e,WAAAA,e;;;wBAEgB;AACzB,aAAO0I,eAAOC,WAAd;AACD,K;sBAEwBC,E,EAAI;AAC3BF,qBAAOG,SAAP,CAAiB,EAACF,aAAaC,EAAd,EAAjB;AACD;;;wBAE8B;AAC7B,aAAO,OAAP;AACD;;;AAED,2BAAaE,GAAb,EAAkB;AAAA;;AAChB,SAAKA,GAAL,GAAWA,GAAX;AACA,SAAKC,WAAL,GAAmB,IAAIC,YAAJ,CAAU,SAAV,CAAnB;AACA,SAAKC,MAAL,GAAc,CAAC,KAAKF,WAAN,CAAd;AACA,SAAK1e,OAAL,GAAe,CAACmY,iBAAQpS,IAAT,CAAf;AACA,SAAKzB,KAAL,GAAa,IAAb;AACA,SAAKua,SAAL,GAAiB,KAAjB;AACA,SAAKC,UAAL,GAAkB,EAAlB;AACA,SAAKC,MAAL,GAAc,IAAd;AACD;;;;kCAEcza,K,EAAO;AACpB,WAAKA,KAAL,GAAaA,KAAb;AACD;;;mCAEeya,M,EAAQ;AACtB,WAAKA,MAAL,GAAcA,MAAd;AACD;;;iCAEY/e,O,EAAS;AACpB,aAAO,KAAKA,OAAL,CAAa,KAAKA,OAAL,CAAamC,MAAb,GAAsB,CAAnC,MAA0CnC,OAAjD;AACD;;;sCAEkBgf,K,EAAO;AACxB,UAAIA,MAAMC,IAAN,KAAeC,aAAMC,MAAzB,EAAiC;AAC/B,eAAO,IAAP;AACD,OAFD,MAEO,IAAIH,MAAMC,IAAN,KAAeC,aAAME,KAAzB,EAAgC;AACrC,eAAO,IAAP;AACD,OAFM,MAEA;AACL,eAAO,KAAP;AACD;AACF;;;mCAEe;AACd,WAAKC,UAAL;AACA,UAAMC,WAAW,KAAKC,gBAAL,EAAjB;AACA,UAAGD,aAAa,IAAhB,EAAsB;AACpB,cAAM1F,6CAAsBM,YAAtB,EAAN;AACD;AACD,aAAO,KAAKsF,WAAL,CAAiBF,QAAjB,EAA2B,EAA3B,EAA+B,KAAKZ,WAApC,CAAP;AACD;;;iCAEa;AAAA;;AACZ,UAAG,CAAC,KAAKe,YAAL,CAAkBtH,iBAAQpS,IAA1B,CAAJ,EAAqC;AACnC,cAAM6T,6CAAsBwB,kBAAtB,EAAN;AACD;AACD,WAAKqD,GAAL,CAASvX,MAAT,CAAgBgN,OAAhB,CAAwB,gBAAQ;AAC9B,cAAKwL,cAAL,CAAoB,MAAKhB,WAAzB,EAAsCtW,IAAtC,EAA4C6N,IAA5C,CAAiD;AAAA,iBAAO,MAAKyI,WAAL,GAAmBiB,GAA1B;AAAA,SAAjD;AACD,OAFD;AAGD;;;uCAEmB;AAClB,aAAO,KAAKlB,GAAL,CAASpY,SAAT,CAAmB0D,IAAnB,CAAwB;AAAA,eAAK7H,EAAEoJ,MAAP;AAAA,OAAxB,CAAP;AACD;;;iCAEalN,I,EAAM;AAClB,UAAGA,KAAK+J,KAAL,CAAW,QAAX,CAAH,EAAyB;AACvB,YAAMyX,MAAM7c,0CAAwBsW,WAAxB,CAAoCjb,IAApC,CAAZ;AACA,YAAG,CAAC,CAAC,CAACwhB,GAAN,EAAW;AACT,gBAAMhG,6CAAsByB,eAAtB,CAAsCjd,IAAtC,CAAN;AACD;AACD,eAAOwhB,GAAP;AACD,OAND,MAMO;AACL,YAAMvV,MAAM,KAAKoU,GAAL,CAASpY,SAAT,CAAmB0D,IAAnB,CAAyB;AAAA,iBAAK7H,EAAE9D,IAAF,KAAWA,IAAhB;AAAA,SAAzB,CAAZ;AACA,YAAI,CAAC,CAAC,CAACiM,GAAP,EAAY;AACV;AACA,gBAAMuP,6CAAsBK,gBAAtB,CAAuC7b,IAAvC,CAAN;AACD;AACD,eAAOiM,GAAP;AACD;AACF;;;gCAEYgB,I,EAAMxI,gB,EAAkBmc,K,EAAO;AAAA;;AAC1C,UAAMlN,WAAWzG,KAAKC,MAAL,GAAcqK,gBAAgBkK,gBAA9B,GAAiDxU,KAAKjN,IAAvE;AACA,UAAI0hB,YAAY,IAAInB,YAAJ,CAAU7M,QAAV,CAAhB;AACAgO,gBAAUC,WAAV,CAAsB,KAAKrB,WAA3B;AACA,UAAIsB,oBAAoB,IAAxB;AACA,UAAG3U,KAAKhN,UAAL,YAA2BqL,0BAA9B,EAA4C;AAC1C,YAAG2B,KAAKhN,UAAL,CAAgBoL,UAAhB,GAA6B,CAAhC,EAAmC;AACjCuW,8BAAoB,IAAIC,kCAAJ,CAAqB5U,KAAKhN,UAA1B,EAAqC,CAAC,CAAtC,EAAwC,CAAC,CAAzC,EAA2C,CAAC,EAAD,CAA3C,CAApB;AACD,SAFD,MAEO;AACL2hB,8BAAoB,IAAIC,kCAAJ,CAAqB5U,KAAKhN,UAA1B,EAAqC,CAAC,CAAtC,EAAwC,IAAxC,EAA6C,EAA7C,CAApB;AACD;AACF,OAND,MAMO;AACL2hB,4BAAoB,IAAIE,wBAAJ,CAAgB7U,KAAKhN,UAArB,EAAiC,IAAjC,CAApB;AACD;AACDyhB,gBAAUK,WAAV,CAAsB,GAAtB,EAA2BH,iBAA3B;AACA,UAAMI,gBAAgB,KAAKC,mBAAL,CAAyBhV,KAAK/M,gBAA9B,EAAgDuE,gBAAhD,EAAkEmc,KAAlE,EAAyEc,SAAzE,CAAtB;AACA,aAAOM,cAAcnK,IAAd,CAAmB,eAAO;AAC/B,eAAKjW,OAAL,CAAagG,IAAb,CAAkBmS,iBAAQvN,QAA1B;AACA,eAAKgU,MAAL,CAAY5Y,IAAZ,CAAiB2Z,GAAjB;AACA,eAAO,OAAKW,eAAL,CAAqBX,GAArB,EAA0BtU,KAAKkV,qBAA/B,EACJtK,IADI,CACC;AAAA,iBAAe,OAAKqK,eAAL,CAAqBE,WAArB,EAAkCnV,KAAKhO,QAAvC,CAAf;AAAA,SADD,EACkE4Y,IADlE,CACuE,oBAAY;AACtF,iBAAK2I,MAAL,CAAY3Y,GAAZ;AACA,iBAAKjG,OAAL,CAAaiG,GAAb;AACA,iBAAOwa,QAAP;AACD,SALI,CAAP;AAMD,OATM,CAAP;AAUD;;;wCAEoBC,U,EAAYC,U,EAAYC,W,EAAaC,W,EAAa;AAAA;;AACrE,UAAM/O,WAAW+O,YAAYziB,IAAZ,KAAqBuX,gBAAgBkK,gBAArC,GACf9c,0CAAwBC,mBAAxB,EADe,GACiC6d,YAAYziB,IAD9D;;AAGA,UAAIsiB,WAAWve,MAAX,IAAqBwe,WAAWxe,MAApC,EAA4C;AAC1C,cAAMyX,6CAAsBiD,uBAAtB,CAA8C/K,QAA9C,EAAwD4O,WAAWve,MAAnE,EAA2Ewe,WAAWxe,MAAtF,CAAN;AACD;AACD,UAAM2e,YAAYH,WAAW1e,GAAX,CAAe;AAAA,eAAmB,OAAK8e,kBAAL,CAAwBH,WAAxB,EAAqCI,eAArC,CAAnB;AAAA,OAAf,CAAlB;AACA,aAAOC,QAAQC,GAAR,CAAYJ,SAAZ,EAAuB7K,IAAvB,CAA4B,kBAAU;AAC3C,aAAK,IAAI6B,IAAI,CAAb,EAAgBA,IAAIqJ,OAAOhf,MAA3B,EAAmC2V,GAAnC,EAAwC;AACtC,cAAMsJ,SAASD,OAAOrJ,CAAP,CAAf;AACA,cAAM1N,MAAMuW,WAAW7I,CAAX,CAAZ;AACA,cAAMuJ,kBAAkBX,WAAW5I,CAAX,CAAxB;AACA,cAAGuJ,gBAAgBzkB,IAAhB,CAAqB2B,YAArB,CAAkC6iB,OAAOxkB,IAAzC,CAAH,EAAmD;AACjD,gBAAGykB,gBAAgBnjB,KAAhB,IAAyB,CAACkjB,OAAOE,OAApC,EAA6C;AAC3C,oBAAM1H,6CAAsBqD,WAAtB,CAAkCnL,QAAlC,EAA4C1H,IAAI3I,QAAJ,EAA5C,CAAN;AACD;;AAED,gBAAG4f,gBAAgBnjB,KAAnB,EAA0B;AACxB,kBAAIqjB,MAAM,IAAV;AACA,kBAAIH,kBAAkBI,gDAAtB,EAA+C;AAC7CD,sBAAM,IAAIE,sDAAJ,CAA+BL,MAA/B,CAAN;AACD,eAFD,MAEO;AACLG,sBAAM,IAAIG,8BAAJ,CAAmBN,OAAOhlB,EAA1B,EAA8BwkB,WAA9B,CAAN;AACD;AACDC,0BAAYV,WAAZ,CAAwBkB,gBAAgBjlB,EAAxC,EAA4CmlB,GAA5C;AACD,aARD,MAQO;AACL,kBAAII,YAAY,OAAKC,qBAAL,CAA2BR,MAA3B,CAAhB;AACAP,0BAAYV,WAAZ,CAAwBkB,gBAAgBjlB,EAAxC,EAA4CulB,SAA5C;AACD;AACF,WAjBD,MAiBO;AACL,kBAAM/H,6CAAsBmD,sBAAtB,CAA6CjL,QAA7C,EAAuD1H,IAAI3I,QAAJ,EAAvD,CAAN;AACD;AACF;AACD,eAAOof,WAAP;AACD,OA3BM,CAAP;AA4BD;;;oCAEgB7B,K,EAAO6C,I,EAAM;AAC5B;AACA,UAAMC,WAAW,IAAjB;AACA,UAAMC,UAAU,SAAVA,OAAU,CAACnC,GAAD,EAAM7T,GAAN;AAAA,eAAc,UAAC4T,GAAD;AAAA,iBAASC,IAAID,GAAJ,EAAS5T,GAAT,CAAT;AAAA,SAAd;AAAA,OAAhB;AACA,aAAO8V,KAAKzf,MAAL,CAAY,UAAC4f,WAAD,EAAc1f,IAAd,EAAuB;AACxC,YAAM2f,cAAcF,QAAQD,SAASpC,cAAT,CAAwBwC,IAAxB,CAA6BJ,QAA7B,CAAR,EAAgDxf,IAAhD,CAApB;AACA,eAAO0f,YAAY/L,IAAZ,CAAiBgM,WAAjB,CAAP;AACD,OAHM,EAGJhB,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAHI,CAAP;AAID;;;mCAEeA,K,EAAOjT,G,EAAK;;AAE1B,UAAG,KAAK8S,SAAR,EAAmB;AACjB,eAAOoC,QAAQkB,MAAR,CAAe,cAAf,CAAP;AACD,OAFD,MAEO,IAAInD,MAAMC,IAAN,KAAeC,aAAMkD,KAAzB,EAAgC;AACrC,eAAOnB,QAAQ9M,OAAR,CAAgB,KAAKuL,cAAL,CAAoBV,KAApB,EAA2BjT,GAA3B,CAAhB,CAAP;AACD,OAFM,MAEA,IAAGiT,MAAMC,IAAN,KAAeC,aAAMC,MAAxB,EAAgC;AACrC,eAAO8B,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD,OAFM,MAEA,IAAG,KAAKS,YAAL,CAAkBtH,iBAAQxL,SAA1B,KAAwCqS,MAAMC,IAAN,KAAeC,aAAME,KAAhE,EAAuE;AAC5E,eAAO6B,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD;;AAED,UAAIjT,eAAe3H,SAASnH,WAA5B,EAAyC;AACvC,eAAO,KAAKolB,kBAAL,CAAwBrD,KAAxB,EAA+BjT,GAA/B,CAAP;AACD,OAFD,MAEO,IAAIA,eAAe3H,SAASjI,gBAA5B,EAA8C;AACnD,eAAO,KAAKmmB,uBAAL,CAA6BtD,KAA7B,EAAoCjT,GAApC,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAAS1H,MAA5B,EAAoC;AACzC,eAAO,KAAK6lB,aAAL,CAAmBvD,KAAnB,EAA0BjT,GAA1B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAASjH,KAA5B,EAAmC;AACxC,eAAO,KAAKqlB,YAAL,CAAkBxD,KAAlB,EAAyBjT,GAAzB,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAASvF,MAA5B,EAAoC;AACzC,eAAO,KAAK4jB,aAAL,CAAmBzD,KAAnB,EAA0BjT,GAA1B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAAS1F,UAA5B,EAAwC;AAC7C,eAAO,KAAKgkB,iBAAL,CAAuB1D,KAAvB,EAA8BjT,GAA9B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAASvG,KAA5B,EAAmC;AACxC,eAAO,KAAK8kB,YAAL,CAAkB3D,KAAlB,EAAyBjT,GAAzB,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAAS1G,OAA5B,EAAqC;AAC1C,eAAO,KAAKklB,cAAL,CAAoB5D,KAApB,EAA2BjT,GAA3B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAAStG,GAA5B,EAAiC;AACtC,eAAO,KAAK+kB,UAAL,CAAgB7D,KAAhB,EAAuBjT,GAAvB,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe3H,SAAStF,MAA5B,EAAoC;AACzC,eAAO,KAAKgkB,aAAL,CAAmB9D,KAAnB,EAA0BjT,GAA1B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAe5H,YAAYnF,YAA/B,EAA6C;;AAElD,eAAO,KAAK+jB,mBAAL,CAAyB/D,KAAzB,EAAgCjT,GAAhC,CAAP;AACD,OAHM,MAGA,IAAIA,eAAe3H,SAASrF,OAA5B,EAAqC;AAC1C,eAAO,KAAKikB,cAAL,CAAoBhE,KAApB,EAA2BjT,GAA3B,CAAP;AACD,OAFM,MAEA;AACL,cAAM6N,6CAAsBW,eAAtB,CAAsCxO,IAAIxO,UAA1C,CAAN;AACD;AACF;;;mCAEeyhB,K,EAAOjT,G,EAAK;AAC1B,UAAMV,OAAOU,IAAI7M,QAAJ,CAAagjB,IAAb,CAAkB,IAAlB,CAAb;AACA,aAAO7W,KAAK2T,KAAL,EAAYjT,GAAZ,CAAP;AACD;;;wCAEoBiT,K,EAAOjT,G,EAAK;AAC/B,UAAIV,OAAO,IAAX;AACA,UAAGU,IAAIjJ,UAAP,EAAmB;AACjBuI,eAAO,KAAKkU,gBAAL,EAAP;AACD,OAFD,MAEO;AACLlU,eAAO,KAAK4X,YAAL,CAAkBlX,IAAI3P,EAAtB,CAAP;AACD;AACD,aAAO,KAAKojB,WAAL,CAAiBnU,IAAjB,EAAuBU,IAAIlJ,gBAA3B,EAA6Cmc,KAA7C,EACJ/I,IADI,CACC,eAAO;AACX,YAAG,CAACzX,aAAMC,IAAN,CAAWF,YAAX,CAAwB8M,KAAKhN,UAA7B,CAAD,IAA6CshB,IAAIV,IAAJ,KAAaC,aAAMC,MAAnE,EAA2E;AACzE,cAAMrN,WAAWzG,KAAKjN,IAAL,KAAcuX,gBAAgBkK,gBAA9B,GACf9c,0CAAwBC,mBAAxB,EADe,GACiCqI,KAAKjN,IADvD;AAEA,iBAAO6iB,QAAQkB,MAAR,CAAevI,6CAAsB0C,kBAAtB,CAAyCxK,QAAzC,CAAf,CAAP;AACD,SAJD,MAIO;AACL,iBAAOkN,KAAP;AACD;AACF,OATI,CAAP;AAUD;;;kCAEcA,K,EAAOjT,G,EAAK;AAAA;;AACzB,WAAK/L,OAAL,CAAagG,IAAb,CAAkBmS,iBAAQxL,SAA1B;AACA,UAAMuW,aAAa,SAAbA,UAAa,CAACC,OAAD,EAAUC,SAAV,EAAqBlU,KAArB,EAA+B;AAChD,eAAOiU,QAAQlN,IAAR,CAAc,kBAAU;AAC7B,cAAM0J,MAAMjH,OAAOiH,GAAnB;AACA,cAAI,OAAK0D,iBAAL,CAAuB1D,GAAvB,CAAJ,EAAiC;AAC/B,mBAAOsB,QAAQ9M,OAAR,CAAgBuE,MAAhB,CAAP;AACD,WAFD,MAEO,IAAIA,OAAO4K,OAAP,IAAkBpU,MAAMqU,SAA5B,EAAuC;AAC5C,gBAAMC,UAAU,OAAKlD,eAAL,CAAqB5H,OAAOiH,GAA5B,EAAgCzQ,MAAM7R,QAAtC,CAAhB;AACA,mBAAOmmB,QAAQvN,IAAR,CAAa,gBAAQ;AAC1B,qBAAOgL,QAAQ9M,OAAR,CAAgB,EAACmP,SAAS,IAAV,EAAgB3D,KAAK8D,IAArB,EAAhB,CAAP;AACD,aAFM,CAAP;AAGD,WALM,MAKA;AACL,gBAAMC,SAAS,OAAK3C,kBAAL,CAAwBpB,GAAxB,EACb,IAAIxb,YAAYX,QAAhB,CAAyB4O,qBAAUU,EAAnC,EAAuCsQ,SAAvC,EAAkDlU,MAAM3S,UAAxD,CADa,CAAf;AAEA,mBAAOmnB,OAAOzN,IAAP,CAAY,cAAM;AACvB,kBAAI0N,GAAG9hB,KAAP,EAAc;AACZ,oBAAM2hB,WAAU,OAAKlD,eAAL,CAAqB5H,OAAOiH,GAA5B,EAAgCzQ,MAAM7R,QAAtC,CAAhB;AACA,uBAAOmmB,SAAQvN,IAAR,CAAa,gBAAQ;AAC1B,yBAAOgL,QAAQ9M,OAAR,CAAgB,EAACmP,SAAS,IAAV,EAAgB3D,KAAK8D,IAArB,EAAhB,CAAP;AACD,iBAFM,CAAP;AAGD,eALD,MAKO;AACL,uBAAOxC,QAAQ9M,OAAR,CAAgB,EAACmP,SAAS,KAAV,EAAiB3D,KAAKA,GAAtB,EAAhB,CAAP;AACD;AACF,aATM,CAAP;AAUD;AACF,SAvBM,CAAP;AAwBD,OAzBD;;AA2BA,UAAI;AACF,YAAIiE,YAAY,KAAhB;AACA,YAAIC,UAAU5C,QAAQ9M,OAAR,CAAgB,EAACmP,SAAS,KAAV,EAAiB3D,KAAKX,KAAtB,EAAhB,CAAd;AACA,aAAK,IAAInZ,QAAQ,CAAjB,EAAoBA,QAAQkG,IAAI9M,KAAJ,CAAUkD,MAAlB,IAA4B,CAACyhB,SAAjD,EAA4D/d,OAA5D,EAAqE;AACnE,cAAMqJ,QAAQnD,IAAI9M,KAAJ,CAAU4G,KAAV,CAAd;AACAge,oBAAUX,WAAWW,OAAX,EAAoB9X,IAAIxP,UAAxB,EAAoC2S,KAApC,CAAV;AACA2U,kBAAQ5N,IAAR,CAAc;AAAA,mBAAK2N,YAAY,OAAKP,iBAAL,CAAuBvf,EAAE6b,GAAzB,CAAjB;AAAA,WAAd;AACD;AACD,eAAOkE,QAAQ5N,IAAR,CAAa,aAAK;AACvB,iBAAKjW,OAAL,CAAaiG,GAAb;AACA,cAAGnC,EAAE6b,GAAF,CAAMV,IAAN,KAAeC,aAAME,KAAxB,EAA+B;AAC7Btb,cAAE6b,GAAF,CAAMV,IAAN,GAAaC,aAAM4E,GAAnB;AACD;AACD,iBAAOhgB,EAAE6b,GAAT;AACD,SANM,CAAP;AAOD,OAfD,CAeE,OAAOtJ,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;+BAEW2I,K,EAAOjT,G,EAAK;AACtB,UAAI;AACF;AACA,YAAMgY,UAAUhY,IAAIhO,UAApB;AACA,YAAMJ,YAAYoO,IAAIpO,SAAtB;AACA,YAAMK,YAAY+N,IAAI/N,SAAtB;AACA,YAAMgmB,aAAa,IAAI5f,SAAS5G,YAAb,CAA0B,EAA1B,EACjBuO,IAAI1O,QAAJ,CAAagI,MAAb,CAAoBrH,SAApB,CADiB,CAAnB;AAEA,YAAMimB,aAAa,IAAI7f,SAASvG,KAAb,CAAmBF,SAAnB,EAA8BqmB,UAA9B,CAAnB;AACA;AACA,YAAME,aAAa,CAACH,OAAD,EAASE,UAAT,CAAnB;AACA,eAAO,KAAK3D,eAAL,CAAqBtB,KAArB,EAA4BkF,UAA5B,CAAP;AACD,OAXD,CAWE,OAAO7N,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;mCAEe2I,K,EAAOjT,G,EAAK;AAC1B,UAAM+V,WAAW,IAAjB;AACA,UAAI;AACFA,iBAAShD,UAAT,CAAoB9Y,IAApB,CAAyBme,KAAKC,GAAL,EAAzB;AACAtC,iBAAS9hB,OAAT,CAAiBgG,IAAjB,CAAsBmS,iBAAQxL,SAA9B;AACA,YAAM0X,YAAYvC,SAASxB,eAAT,CAAyBtB,KAAzB,EAAgCjT,IAAI1O,QAApC,CAAlB;AACA,eAAOgnB,UAAUpO,IAAV,CAAe,eAAO;AAC3B,cAAG0J,IAAIV,IAAJ,KAAaC,aAAME,KAAtB,EAA6B;AAC3B0C,qBAAS9hB,OAAT,CAAiBiG,GAAjB;AACA0Z,gBAAIV,IAAJ,GAAWC,aAAM4E,GAAjB;AACAhC,qBAAShD,UAAT,CAAoB7Y,GAApB;AACA,mBAAO0Z,GAAP;AACD;AACD,cAAM+D,SAAS5B,SAASf,kBAAT,CAA4BpB,GAA5B,EAAiC5T,IAAIxP,UAArC,CAAf;AACA,iBAAOmnB,OAAOzN,IAAP,CAAY,cAAM;AACvB,gBAAI,CAAC0N,GAAG/mB,IAAH,CAAQ2B,YAAR,CAAqBC,aAAMoE,OAA3B,CAAL,EAA0C;AACxC,qBAAOqe,QAAQkB,MAAR,CAAevI,6CAAsBgB,wBAAtB,CAA+C7O,IAAIxO,UAAnD,CAAf,CAAP;AACD;AACD,gBAAIomB,GAAG9hB,KAAP,EAAc;AACZigB,uBAAS9hB,OAAT,CAAiBiG,GAAjB;AACA,mBAAK,IAAI6R,IAAI,CAAb,EAAgBA,IAAIgK,SAAShD,UAAT,CAAoB3c,MAAxC,EAAgD2V,GAAhD,EAAqD;AACnD,oBAAMwM,OAAOxC,SAAShD,UAAT,CAAoBhH,CAApB,CAAb;AACA,oBAAGqM,KAAKC,GAAL,KAAaE,IAAb,IAAqB3O,gBAAgB4O,YAAxC,EAAsD;AACpDzC,2BAASjD,SAAT,GAAqB,IAArB;AACA,yBAAOoC,QAAQkB,MAAR,CAAevI,6CAAsBkB,iBAAtB,CAAwC/O,IAAIxO,UAA5C,CAAf,CAAP;AACD;AACF;AACD,qBAAOukB,SAASpC,cAAT,CAAwBC,GAAxB,EAA6B5T,GAA7B,CAAP;AACD,aAVD,MAUO;AACL+V,uBAAS9hB,OAAT,CAAiBiG,GAAjB;AACA6b,uBAAShD,UAAT,CAAoB7Y,GAApB;AACA,qBAAO0Z,GAAP;AACD;AACF,WAnBM,CAAP;AAoBD,SA5BM,CAAP;AA6BD,OAjCD,CAiCE,OAAOtJ,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;iCAEa2I,K,EAAOjT,G,EAAK;AACxB,UAAM+V,WAAW,IAAjB;AACA,UAAI;AACFA,iBAAShD,UAAT,CAAoB9Y,IAApB,CAAyBme,KAAKC,GAAL,EAAzB;AACAtC,iBAAS9hB,OAAT,CAAiBgG,IAAjB,CAAsBmS,iBAAQxL,SAA9B;AACA,YAAM+W,SAAS5B,SAASf,kBAAT,CAA4B/B,KAA5B,EAAmCjT,IAAIxP,UAAvC,CAAf;AACA,eAAOmnB,OAAOzN,IAAP,CAAY,cAAM;AACvB,cAAG0N,GAAG/mB,IAAH,CAAQ2B,YAAR,CAAqBC,aAAMoE,OAA3B,CAAH,EAAwC;AACtC,gBAAG+gB,GAAG9hB,KAAN,EAAa;AACX,kBAAMwiB,YAAYvC,SAASxB,eAAT,CAAyBtB,KAAzB,EAAgCjT,IAAI1O,QAApC,CAAlB;AACA,qBAAOgnB,UAAUpO,IAAV,CAAe,eAAO;AAC3B6L,yBAAS9hB,OAAT,CAAiBiG,GAAjB;AACA,oBAAI0Z,IAAIV,IAAJ,KAAaC,aAAME,KAAvB,EAA8B;AAC5B0C,2BAAShD,UAAT,CAAoB7Y,GAApB;AACA0Z,sBAAIV,IAAJ,GAAWC,aAAM4E,GAAjB;AACA,yBAAOnE,GAAP;AACD;AACD,qBAAK,IAAI7H,IAAI,CAAb,EAAgBA,IAAIgK,SAAShD,UAAT,CAAoB3c,MAAxC,EAAgD2V,GAAhD,EAAqD;AACnD,sBAAMwM,OAAOxC,SAAShD,UAAT,CAAoBhH,CAApB,CAAb;AACA,sBAAGqM,KAAKC,GAAL,KAAaE,IAAb,IAAqB3O,gBAAgB4O,YAAxC,EAAsD;AACpDzC,6BAASjD,SAAT,GAAqB,IAArB;AACA,2BAAOoC,QAAQkB,MAAR,CAAevI,6CAAsBkB,iBAAtB,CAAwC/O,IAAIxO,UAA5C,CAAf,CAAP;AACD;AACF;AACD,uBAAOukB,SAASpC,cAAT,CAAwBC,GAAxB,EAA6B5T,GAA7B,CAAP;AACD,eAfM,CAAP;AAgBD,aAlBD,MAkBO;AACL+V,uBAAS9hB,OAAT,CAAiBiG,GAAjB;AACA6b,uBAAShD,UAAT,CAAoB7Y,GAApB;AACA,qBAAO+Y,KAAP;AACD;AACF,WAxBD,MAwBO;AACL,mBAAOiC,QAAQkB,MAAR,CAAevI,6CAAsBgB,wBAAtB,CAA+C7O,IAAIxO,UAAnD,CAAf,CAAP;AACD;AACF,SA5BM,CAAP;AA8BD,OAlCD,CAkCE,OAAO8Y,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;sCAEkB2I,K,EAAOjT,G,EAAK;AAAA;;AAC7B,UAAI;AACF,YAAM2X,SAAS,KAAK3C,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIpO,SAAnC,CAAf;AACA,eAAO+lB,OAAOzN,IAAP,CAAY,cAAM;AACvB,cAAG0N,GAAG/mB,IAAH,CAAQ2B,YAAR,CAAqBC,aAAMoE,OAA3B,CAAH,EAAwC;AACtC,gBAAG+gB,GAAG9hB,KAAN,EAAa;AACX,qBAAO,OAAKye,eAAL,CAAqBtB,KAArB,EAA4BjT,IAAIpN,MAAJ,CAAWtB,QAAvC,CAAP;AACD,aAFD,MAEO,IAAI0O,IAAInN,OAAJ,KAAgB,IAApB,EAAyB;AAC9B,kBAAGmN,IAAInN,OAAJ,YAAuBwF,SAAS1F,UAAnC,EAA+C;AAC7C,uBAAO,OAAKghB,cAAL,CAAoBV,KAApB,EAA2BjT,IAAInN,OAA/B,CAAP;AACD,eAFD,MAEO;AACL,uBAAO,OAAK0hB,eAAL,CAAqBtB,KAArB,EAA4BjT,IAAInN,OAAJ,CAAYvB,QAAxC,CAAP;AACD;AACF,aANM,MAMA;AACL,qBAAO4jB,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD;AACF,WAZD,MAYO;AACL,mBAAOiC,QAAQkB,MAAR,CAAevI,6CAAsBsB,sBAAtB,CAA6CnP,IAAIxO,UAAjD,CAAf,CAAP;AACD;AACF,SAhBM,CAAP;AAiBD,OAnBD,CAmBE,OAAO8Y,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;kCAEc2I,K,EAAOjT,G,EAAK;AAAA;;AACzB,UAAI;AACF,YAAMyY,WAAWxF,MAAMyF,UAAN,CAAiB,GAAjB,EAAsB7nB,IAAvC;AACA,YAAM8mB,SAAS,KAAK3C,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIxP,UAAnC,CAAf;AACA,YAAMuV,WAAWkN,MAAM5gB,IAAN,KAAeuX,gBAAgBkK,gBAA/B,GACf9c,0CAAwBC,mBAAxB,EADe,GACiCgc,MAAM5gB,IADxD;AAEA,eAAOslB,OAAOzN,IAAP,CAAY,cAAM;;AAEvB,cAAG0N,OAAO,IAAP,IAAea,SAASjmB,YAAT,CAAsBC,aAAMC,IAA5B,CAAlB,EAAqD;AACnD,mBAAOwiB,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD;;AAED,cAAI2E,OAAO,IAAP,IAAe,CAACa,SAASjmB,YAAT,CAAsBolB,GAAG/mB,IAAzB,CAApB,EAAoD;AAClD,gBAAM8nB,aAAaF,SAASE,UAAT,EAAnB;AACA,gBAAMC,OAAOD,WAAW,CAAX,CAAb;AACA,mBAAOzD,QAAQkB,MAAR,CAAevI,6CAAsB6C,wBAAtB,CAA+C3K,QAA/C,EAAyD6S,KAAK/nB,IAA9D,EAAoE+nB,KAAKlL,GAAzE,EAA8E1N,IAAIxO,UAAlF,CAAf,CAAP;AACD,WAJD,MAIO;AACL,gBAAIokB,YAAY,OAAKC,qBAAL,CAA2B+B,EAA3B,CAAhB;AACA3E,kBAAM4F,WAAN,CAAkB,GAAlB,EAAuBjD,SAAvB;AACA3C,kBAAMC,IAAN,GAAaC,aAAMC,MAAnB;AACA,mBAAO8B,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD;AACF,SAhBM,CAAP;AAiBD,OAtBD,CAsBE,OAAO3I,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;iCAEa2I,K,EAAOjT,G,EAAK;AACxB,UAAG,KAAK0T,YAAL,CAAkBtH,iBAAQxL,SAA1B,CAAH,EAAyC;AACvCqS,cAAMC,IAAN,GAAaC,aAAME,KAAnB;AACA,eAAO6B,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD,OAHD,MAGO;AACL,eAAOiC,QAAQkB,MAAR,CAAevI,6CAAsBsD,6BAAtB,CAAoDnR,IAAIxO,UAAxD,CAAf,CAAP;AACD;AACF;;;kCAEcyhB,K,EAAOjT,G,EAAK;AAAA;;AACzB,UAAI;AACF,YAAM2X,SAAS,KAAK3C,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIxP,UAAnC,CAAf;AACA,eAAOmnB,OAAOzN,IAAP,CAAa,cAAM;AACxB,cAAI0L,YAAY,OAAKC,qBAAL,CAA2B+B,EAA3B,CAAhB;AACA3E,gBAAM4F,WAAN,CAAkB7Y,IAAI3P,EAAtB,EAA0BulB,SAA1B;AACA,iBAAO3C,KAAP;AACD,SAJM,CAAP;AAKD,OAPD,CAOE,OAAO3I,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;4CAEwB2I,K,EAAOjT,G,EAAK;AAAA;;AACnC,UAAM8Y,cAAc7F,MAAMyF,UAAN,CAAiB1Y,IAAI3P,EAArB,CAApB;AACA,UAAG,EAAEyoB,YAAYjoB,IAAZ,YAA4B8M,0BAA9B,CAAH,EAAgD;AAC9C,eAAOuX,QAAQkB,MAAR,CAAevI,6CAAsB8B,yBAAtB,CAAgD3P,IAAI3P,EAApD,EAAwD2P,IAAIxO,UAA5D,CAAf,CAAP;AACD;AACD,UAAMunB,QAAQ,KAAK/D,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIvP,IAAnC,CAAd;AACA,UAAMuoB,UAAU,KAAKhE,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAItP,MAAnC,CAAhB;AACA,UAAMuoB,SAAU,KAAKjE,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIxP,UAAnC,CAAhB;AACA,aAAO0kB,QAAQC,GAAR,CAAY,CAAC4D,KAAD,EAAQC,OAAR,EAAiBC,MAAjB,CAAZ,EAAsC/O,IAAtC,CAA2C,mBAAW;AAC3D,YAAMgP,SAASC,QAAQ,CAAR,CAAf;AACA,YAAG,CAAC1mB,aAAMuF,OAAN,CAAcxF,YAAd,CAA2B0mB,OAAOroB,IAAlC,CAAJ,EAA6C;AAC3C,iBAAOqkB,QAAQkB,MAAR,CAAevI,6CAAsBO,4BAAtB,CAAmDpO,IAAIxO,UAAvD,CAAf,CAAP;AACD;AACD,YAAMf,OAAOyoB,OAAOE,MAApB;AACA,YAAMC,WAAWF,QAAQ,CAAR,CAAjB;AACA,YAAIzoB,SAAS,IAAb;AACA,YAAI2oB,aAAa,IAAjB,EAAuB;AACrB,cAAG,CAAC5mB,aAAMuF,OAAN,CAAcxF,YAAd,CAA2B6mB,SAASxoB,IAApC,CAAJ,EAA+C;AAC7C,mBAAOqkB,QAAQkB,MAAR,CAAevI,6CAAsBO,4BAAtB,CAAmDpO,IAAIxO,UAAvD,CAAf,CAAP;AACD;AACDd,mBAAS2oB,SAASD,MAAlB;AACD;AACD,YAAMtjB,QAAQ,OAAK+f,qBAAL,CAA2BsD,QAAQ,CAAR,CAA3B,CAAd;AACA,YAAI1oB,QAAQqoB,YAAYhoB,KAAxB,EAA+B;AAC7B,cAAGgoB,YAAYQ,QAAf,EAAyB;AACvB,mBAAOpE,QAAQkB,MAAR,CAAevI,6CAAsBsC,0BAAtB,CAAiDnQ,IAAI3P,EAArD,EAAyDI,IAAzD,EAA+DqoB,YAAYhoB,KAA3E,EAAkFkP,IAAIxO,UAAtF,CAAf,CAAP;AACD,WAFD,MAEO;AACL,mBAAO0jB,QAAQkB,MAAR,CAAevI,6CAAsBoC,0BAAtB,CAAiDjQ,IAAI3P,EAArD,EAAyDI,IAAzD,EAA+DqoB,YAAYhoB,KAA3E,EAAkFkP,IAAIxO,UAAtF,CAAf,CAAP;AACD;AACF,SAND,MAMO,IAAIf,OAAO,CAAX,EAAc;AACnB,gBAAMod,6CAAsBuE,iCAAtB,CAAwDpS,IAAIxO,UAA5D,CAAN;AACD;AACD,YAAId,WAAW,IAAX,IAAmBooB,YAAY/nB,OAAZ,KAAwB,IAA/C,EAAqD;AACnD,iBAAOmkB,QAAQkB,MAAR,CAAevI,6CAAsBwC,sBAAtB,CAA6CrQ,IAAI3P,EAAjD,EAAqD2P,IAAIxO,UAAzD,CAAf,CAAP;AACD;AACD,YAAGd,WAAW,IAAd,EAAqB;AACnB,cAAIA,UAAUooB,YAAY/nB,OAA1B,EAAmC;AACjC,mBAAOmkB,QAAQkB,MAAR,CAAevI,6CAAsBkC,4BAAtB,CAAmD/P,IAAI3P,EAAvD,EAA2DK,MAA3D,EAAkEooB,YAAY/nB,OAA9E,EAAuFiP,IAAIxO,UAA3F,CAAf,CAAP;AACD,WAFD,MAEO,IAAId,SAAS,CAAb,EAAgB;AACrB,kBAAMmd,6CAAsBuE,iCAAtB,CAAwDpS,IAAIxO,UAA5D,CAAN;AACD;AACF;;AAED,YAAM+nB,WAAW9lB,OAAO+lB,MAAP,CAAc,IAAItF,kCAAJ,CAAqB,IAArB,EAA0B,IAA1B,EAA+B,IAA/B,CAAd,EAAoD4E,WAApD,CAAjB;AACA,YAAIpoB,WAAW,IAAf,EAAqB;AACnB,cAAIoF,MAAMjF,IAAN,YAAsB8M,0BAA1B,EAAwC;AACtC,gBAAM9M,OAAOioB,YAAYjoB,IAAZ,CAAiB4oB,SAA9B;AACA,gBAAMd,aAAa9nB,KAAK8nB,UAAL,EAAnB;AACA,gBAAMC,OAAOD,WAAW,CAAX,CAAb;AACA,mBAAOzD,QAAQkB,MAAR,CAAevI,6CAAsBY,uBAAtB,CAA8CmK,KAAK/nB,IAAnD,EAAyD+nB,KAAKlL,GAA9D,EAAmE1N,IAAIxO,UAAvE,CAAf,CAAP;AACD;AACD+nB,mBAASzjB,KAAT,CAAerF,IAAf,EAAqBqF,KAArB,CAA2BpF,MAA3B,IAAqCoF,KAArC;AACAmd,gBAAM4F,WAAN,CAAkB7Y,IAAI3P,EAAtB,EAA0BkpB,QAA1B;AACD,SATD,MASO;AACL,cAAGT,YAAY/nB,OAAZ,KAAwB,IAAxB,IAAgC+E,MAAMjF,IAAN,YAAsB8M,0BAAzD,EAAuE;AACrE,gBAAM9M,QAAOioB,YAAYjoB,IAAzB;AACA,gBAAM8nB,cAAa9nB,MAAK8nB,UAAL,EAAnB;AACA,gBAAMC,QAAOD,YAAW,CAAX,CAAb;AACA,gBAAMta,MAAM2B,IAAIxP,UAAJ,CAAekF,QAAf,EAAZ;AACA,mBAAOwf,QAAQkB,MAAR,CAAevI,6CAAsBc,6BAAtB,CAAoDtQ,GAApD,EAAwDua,MAAK/nB,IAA7D,EAAmE+nB,MAAKlL,GAAL,GAAS,CAA5E,EAA+E1N,IAAIxO,UAAnF,CAAf,CAAP;AACD;AACD+nB,mBAASzjB,KAAT,CAAerF,IAAf,IAAuBqF,KAAvB;AACAmd,gBAAM4F,WAAN,CAAkB7Y,IAAI3P,EAAtB,EAA0BkpB,QAA1B;AACD;AACD,eAAOtG,KAAP;AACD,OAzDM,CAAP;AA0DD;;;uCAEmBA,K,EAAOjT,G,EAAK;AAC9B,UAAI;AACF,YAAM2X,SAAS,KAAK3C,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIhP,OAAnC,CAAf;AACA,YAAGgP,eAAe3H,SAASzH,gBAA3B,EAA6C;AAC3C,cAAM8oB,SAAS,KAAK1E,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIlP,KAAnC,CAAf;AACA,cAAM6oB,WAAW3Z,IAAIjP,OAAJ,KAAgB,IAAhB,GAAuB,IAAvB,GAA6B,KAAKikB,kBAAL,CAAwB/B,KAAxB,EAA+BjT,IAAIjP,OAAnC,CAA9C;AACA,iBAAOmkB,QAAQC,GAAR,CAAY,CAACuE,MAAD,EAASC,QAAT,EAAmBhC,MAAnB,CAAZ,EAAwCzN,IAAxC,CAA6C,kBAAU;AAC5D,gBAAMgP,SAAS9D,OAAO,CAAP,CAAf;AACA,gBAAG,CAAC3iB,aAAMuF,OAAN,CAAcxF,YAAd,CAA2B0mB,OAAOroB,IAAlC,CAAJ,EAA6C;AAC3C,qBAAOqkB,QAAQkB,MAAR,CAAevI,6CAAsBO,4BAAtB,CAAmDpO,IAAIxO,UAAvD,CAAf,CAAP;AACD;AACD,gBAAMf,OAAOyoB,OAAOE,MAApB;AACA,gBAAG3oB,OAAO,CAAV,EAAa;AACX,oBAAMod,6CAAsBuE,iCAAtB,CAAwDpS,IAAIxO,UAA5D,CAAN;AACD;AACD,gBAAM6nB,WAAWjE,OAAO,CAAP,CAAjB;AACA,gBAAI1kB,SAAS,IAAb;AACA,gBAAI2oB,aAAa,IAAjB,EAAuB;AACrB,kBAAG,CAAC5mB,aAAMuF,OAAN,CAAcxF,YAAd,CAA2B6mB,SAASxoB,IAApC,CAAJ,EAA+C;AAC7C,uBAAOqkB,QAAQkB,MAAR,CAAevI,6CAAsBO,4BAAtB,CAAmDpO,IAAIxO,UAAvD,CAAf,CAAP;AACD;AACDd,uBAAS2oB,SAASD,MAAlB;AACA,kBAAG1oB,SAAS,CAAZ,EAAe;AACb,sBAAMmd,6CAAsBuE,iCAAtB,CAAwDpS,IAAIxO,UAA5D,CAAN;AACD;AACF;AACD,gBAAMsE,QAAQsf,OAAO,CAAP,CAAd;AACA,gBAAMwE,OAAO,IAAI1F,kCAAJ,CAAqBlU,IAAInP,IAAzB,EAA+BJ,IAA/B,EAAqCC,MAArC,EAA6C,IAA7C,CAAb;AACAuiB,kBAAMmB,WAAN,CAAkBpU,IAAI3P,EAAtB,EAA0BupB,IAA1B;AACA,gBAAIhE,YAAY9f,KAAhB;AACA,gBAAIA,UAAU,IAAd,EAAoB;AAClB,kBAAGA,iBAAiB2f,gDAApB,EAA6C;AAC3C,oBAAG3f,MAAMjF,IAAN,YAAsB8M,0BAAzB,EAAuC;AACrCiY,8BAAYniB,OAAO+lB,MAAP,CAAc,IAAItF,kCAAJ,CAAqB,IAArB,EAA0B,IAA1B,EAA+B,IAA/B,CAAd,EAAoDpe,MAAM+jB,QAA1D,CAAZ;AACD,iBAFD,MAEO;AACLjE,8BAAYniB,OAAO+lB,MAAP,CAAc,IAAIrF,wBAAJ,CAAgB,IAAhB,EAAqB,IAArB,CAAd,EAA0Cre,MAAM+jB,QAAhD,CAAZ;AACD;AACF;AACF,aARD,MAQO;AACLjE,0BAAY,IAAI1B,kCAAJ,CAAqBlU,IAAInP,IAAzB,EAA+BJ,IAA/B,EAAqCC,MAArC,EAA6C,EAA7C,CAAZ;AACA,kBAAGA,WAAW,IAAd,EAAoB;AAClB,qBAAK,IAAIqb,IAAI,CAAb,EAAgBA,IAAItb,IAApB,EAA0Bsb,GAA1B,EAA+B;AAC7B6J,4BAAU9f,KAAV,CAAgBmE,IAAhB,CAAqB,IAAIia,kCAAJ,CAAqB,IAAIvW,0BAAJ,CAAiBqC,IAAInP,IAAJ,CAAS4oB,SAA1B,EAAqC,CAArC,CAArB,EAA8D/oB,MAA9D,EAAsE,IAAtE,EAA4E,EAA5E,CAArB;AACD;AACF;AACF;AACDklB,sBAAUkE,QAAV,GAAqB9Z,IAAI/O,OAAzB;AACAgiB,kBAAM4F,WAAN,CAAkB7Y,IAAI3P,EAAtB,EAA0BulB,SAA1B;AACA,mBAAO3C,KAAP;AACD,WA3CM,CAAP;AA6CD,SAhDD,MAgDO;AACL,cAAM2G,OAAO,IAAIzF,wBAAJ,CAAgBnU,IAAInP,IAApB,EAA0B,IAA1B,CAAb;AACAoiB,gBAAMmB,WAAN,CAAkBpU,IAAI3P,EAAtB,EAA0BupB,IAA1B;AACA,iBAAOjC,OAAOzN,IAAP,CAAY,cAAM;AACvB,gBAAI0L,YAAYgC,EAAhB;AACA,gBAAIA,OAAO,IAAX,EAAiB;AACf,kBAAGA,cAAcnC,gDAAjB,EAA0C;AACxC,oBAAGmC,GAAG/mB,IAAH,YAAmB8M,0BAAtB,EAAoC;AAClCiY,8BAAYniB,OAAO+lB,MAAP,CAAc,IAAItF,kCAAJ,CAAqB,IAArB,EAA0B,IAA1B,EAA+B,IAA/B,CAAd,EAAoD0D,GAAGiC,QAAvD,CAAZ;AACD,iBAFD,MAEO;AACLjE,8BAAYniB,OAAO+lB,MAAP,CAAc,IAAIrF,wBAAJ,CAAgB,IAAhB,EAAqB,IAArB,CAAd,EAA0CyD,GAAGiC,QAA7C,CAAZ;AACD;AACF;AACF,aARD,MAQO;AACLjE,0BAAY,IAAIzB,wBAAJ,CAAgBnU,IAAInP,IAApB,EAAyB,CAAzB,CAAZ;AACD;AACD+kB,sBAAUkE,QAAV,GAAqB9Z,IAAI/O,OAAzB;AACAgiB,kBAAM4F,WAAN,CAAkB7Y,IAAI3P,EAAtB,EAA0BulB,SAA1B;AACA,mBAAO3C,KAAP;AACD,WAhBM,CAAP;AAiBD;AACF,OAvED,CAuEE,OAAOtL,CAAP,EAAU;AACV,eAAOuN,QAAQkB,MAAR,CAAezO,CAAf,CAAP;AACD;AACF;;;uCAEoBsL,K,EAAO5U,G,EAAK;;AAE/B,UAAIA,eAAejG,YAAYV,QAA/B,EAAyC;AACvC,eAAO,KAAKqiB,gBAAL,CAAsB9G,KAAtB,EAA6B5U,GAA7B,CAAP;AACD,OAFD,MAEO,IAAIA,eAAejG,YAAYX,QAA/B,EAAyC;AAC9C,eAAO,KAAKuiB,gBAAL,CAAsB/G,KAAtB,EAA6B5U,GAA7B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAY5C,WAA/B,EAA4C;AACjD,eAAO,KAAKykB,mBAAL,CAAyBhH,KAAzB,EAAgC5U,GAAhC,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAYZ,eAA/B,EAAgD;AACrD,eAAO,KAAK0iB,uBAAL,CAA6BjH,KAA7B,EAAoC5U,GAApC,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAYf,UAA/B,EAA2C;AAChD,eAAO,KAAK8iB,eAAL,CAAqBlH,KAArB,EAA4B5U,GAA5B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAYd,WAA/B,EAA4C;AACjD,eAAO,KAAK6iB,eAAL,CAAqBlH,KAArB,EAA4B5U,GAA5B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAYxB,WAA/B,EAA4C;AACjD,eAAO,KAAKujB,eAAL,CAAqBlH,KAArB,EAA4B5U,GAA5B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAYb,aAA/B,EAA8C;AACnD,eAAO,KAAK4iB,eAAL,CAAqBlH,KAArB,EAA4B5U,GAA5B,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAYvC,YAA/B,EAA6C;AAClD,eAAO,KAAKukB,oBAAL,CAA0BnH,KAA1B,EAAiC5U,GAAjC,CAAP;AACD,OAFM,MAEA,IAAIA,eAAejG,YAAYnF,YAA/B,EAA6C;AAClD,eAAO,KAAKonB,oBAAL,CAA0BpH,KAA1B,EAAiC5U,GAAjC,CAAP;AACD;AACD,aAAO6W,QAAQ9M,OAAR,CAAgB,IAAhB,CAAP;AACD;;;yCAEqB6K,K,EAAO5U,G,EAAK;AAChC,UAAGA,IAAItH,UAAP,EAAmB;AACjB,eAAOme,QAAQkB,MAAR,CAAevI,6CAAsB4B,uBAAtB,CAA8CzY,0CAAwBC,mBAAxB,EAA9C,EAA6FoH,IAAI7M,UAAjG,CAAf,CAAP;AACD;AACD,UAAM8N,OAAO,KAAK4X,YAAL,CAAkB7Y,IAAIhO,EAAtB,CAAb;AACA,UAAGoC,aAAMC,IAAN,CAAWF,YAAX,CAAwB8M,KAAKhN,UAA7B,CAAH,EAA6C;AAC3C;AACA,eAAO4iB,QAAQkB,MAAR,CAAevI,6CAAsB4B,uBAAtB,CAA8CpR,IAAIhO,EAAlD,EAAsDgO,IAAI7M,UAA1D,CAAf,CAAP;AACD;AACD,UAAM8mB,YAAY,KAAK7E,WAAL,CAAiBnU,IAAjB,EAAuBjB,IAAIvH,gBAA3B,EAA6Cmc,KAA7C,CAAlB;AACA,aAAOqF,UAAUpO,IAAV,CAAgB,eAAO;AAC5B,YAAG0J,IAAIV,IAAJ,KAAaC,aAAMC,MAAtB,EAA8B;AAC5B,iBAAO8B,QAAQkB,MAAR,CAAe,IAAI9iB,KAAJ,CAAU,gEAA8D+K,IAAIhO,EAA5E,CAAf,CAAP;AACD;AACD,YAAMiO,MAAMsV,IAAI8E,UAAJ,CAAe,GAAf,CAAZ;AACA,YAAIpa,eAAe4V,kCAAnB,EAAqC;AACnC,iBAAOgB,QAAQ9M,OAAR,CAAgB3U,OAAO+lB,MAAP,CAAc,IAAItF,kCAAJ,CAAqB,IAArB,EAA0B,IAA1B,EAA+B,IAA/B,EAAoC,IAApC,EAAyC,IAAzC,CAAd,EAA8D5V,GAA9D,CAAhB,CAAP;AACD,SAFD,MAEO;AACL,iBAAO4W,QAAQ9M,OAAR,CAAgB3U,OAAO+lB,MAAP,CAAc,IAAIrF,wBAAJ,CAAgB,IAAhB,EAAqB,IAArB,CAAd,EAA0C7V,GAA1C,CAAhB,CAAP;AACD;AACF,OAVM,CAAP;AAWD;;;yCAEqB2U,K,EAAO5U,G,EAAK;AAChC,UAAMic,sBAAsB,SAAtBA,mBAAsB,CAACC,gBAAD,EAAmBlc,GAAnB,EAA2B;AACrD,YAAMmc,YAAYD,iBAAiB,CAAjB,CAAlB;AACA,gBAAOC,SAAP;AACE,eAAKtG,mCAAiBuG,mBAAtB;AAA2C;AACzC,kBAAMC,cAAcH,iBAAiB,CAAjB,CAApB;AACA,qBAAOrF,QAAQkB,MAAR,CAAevI,6CAAsB4D,iCAAtB,CAAwDkJ,IAAI5pB,OAA5D,EAAqE2pB,WAArE,EAAkFrc,IAAI7M,UAAtF,CAAf,CAAP;AACD;AACD,eAAK0iB,mCAAiB0G,iBAAtB;AAAyC;AACvC,kBAAMC,YAAYN,iBAAiB,CAAjB,CAAlB;AACA,qBAAOrF,QAAQkB,MAAR,CAAevI,6CAAsB0D,+BAAtB,CAAsDoJ,IAAI7pB,KAA1D,EAAiE+pB,SAAjE,EAA4Exc,IAAI7M,UAAhF,CAAf,CAAP;AACD;AACD,eAAK0iB,mCAAiB4G,UAAtB;AAAkC;AAChC,kBAAIrqB,OAAO,IAAX;AACA,kBAAIsqB,SAAS,IAAb;AACA,kBAAIR,iBAAiBnkB,MAAjB,GAA0B,CAA9B,EAAiC;AAC/B3F,uBAAO8pB,iBAAiB,CAAjB,CAAP;AACA,oBAAM7pB,SAAS6pB,iBAAiB,CAAjB,CAAf;AACAQ,yBAAS1c,IAAIvI,KAAJ,CAAUrF,IAAV,EAAgBqF,KAAhB,CAAsBpF,MAAtB,EAA8BgF,QAA9B,EAAT;AACD,eAJD,MAIO;AACLjF,uBAAO8pB,iBAAiB,CAAjB,CAAP;AACAQ,yBAAS1c,IAAIvI,KAAJ,CAAUrF,IAAV,EAAgBiF,QAAhB,EAAT;AACD;AACD,qBAAOwf,QAAQkB,MAAR,CAAevI,6CAAsBwD,+BAAtB,CAAsD0J,MAAtD,EAA8D1c,IAAI7M,UAAlE,CAAf,CAAP;AAAkH;AApBtH;AAsBD,OAxBD;AAyBA,UAAG,CAAC6M,IAAIib,QAAR,EAAkB;AAChB,YAAM0B,UAAU,KAAKC,cAAL,CAAoBhI,KAApB,EAA2B5U,IAAIvI,KAA/B,CAAhB;AACA,eAAOklB,QAAQ9Q,IAAR,CAAa,gBAAQ;AAC1B,cAAMrZ,OAAO,IAAI8M,0BAAJ,CAAiBzI,KAAK,CAAL,EAAQrE,IAAR,CAAa4oB,SAA9B,EAAyC,CAAzC,CAAb;AACA,cAAMkB,MAAM,IAAIzG,kCAAJ,CAAqBrjB,IAArB,EAA2BqE,KAAKkB,MAAhC,EAAwClB,KAAK,CAAL,EAAQpE,KAAhD,EAAuDoE,IAAvD,CAAZ;AACA,cAAMgmB,cAAcP,IAAIQ,OAAxB;AACA,cAAGD,YAAY9kB,MAAZ,IAAsB,CAAzB,EACE,OAAO8e,QAAQ9M,OAAR,CAAgBuS,GAAhB,CAAP,CADF,KAEK;AACH,mBAAOL,oBAAoBY,WAApB,EAAiC7c,GAAjC,CAAP;AACD;AACF,SATM,CAAP;AAUD,OAZD,MAYO;AACL,eAAO,KAAK+c,cAAL,CAAoBnI,KAApB,EAA2B5U,IAAIvI,KAA/B,EAAsCoU,IAAtC,CAA2C,gBAAQ;AACxD,cAAMrZ,OAAO,IAAI8M,0BAAJ,CAAiBzI,KAAK,CAAL,EAAQrE,IAAzB,EAA+B,CAA/B,CAAb;AACA,cAAMwqB,WAAW,IAAInH,kCAAJ,CAAqBrjB,IAArB,EAA2BqE,KAAKkB,MAAhC,EAAwC,IAAxC,EAA8ClB,IAA9C,CAAjB;AACA,cAAMgmB,cAAcG,SAASF,OAA7B;AACA,cAAGD,YAAY9kB,MAAZ,IAAsB,CAAzB,EACE,OAAO8e,QAAQ9M,OAAR,CAAgBiT,QAAhB,CAAP,CADF,KAEK;AACH,mBAAOf,oBAAoBY,WAApB,EAAiC7c,GAAjC,CAAP;AACD;AACF,SATM,CAAP;AAUD;AACF;;;mCAEe4U,K,EAAOqI,I,EAAM;AAAA;;AAC3B,aAAOpG,QAAQC,GAAR,CAAYmG,KAAKplB,GAAL,CAAU;AAAA,eAAO,OAAK8e,kBAAL,CAAwB/B,KAAxB,EAA+B5U,GAA/B,CAAP;AAAA,OAAV,CAAZ,CAAP;AACD;;;mCAEe4U,K,EAAOqI,I,EAAM;AAAA;;AAC3B,aAAOpG,QAAQC,GAAR,CAAYmG,KAAKplB,GAAL,CAAU,kBAAU;AACrC,YAAMqlB,UAAU,QAAKH,cAAL,CAAoBnI,KAApB,EAA2BuI,OAAO1lB,KAAlC,CAAhB;AACA,eAAOylB,QAAQrR,IAAR,CAAa,gBAAQ;AAC1B,cAAMrZ,OAAO,IAAI8M,0BAAJ,CAAiBzI,KAAK,CAAL,EAAQrE,IAAzB,EAA+B,CAA/B,CAAb;AACA,iBAAO,IAAIqjB,kCAAJ,CAAqBrjB,IAArB,EAA2BqE,KAAKkB,MAAhC,EAAwC,IAAxC,EAA8ClB,IAA9C,CAAP;AACD,SAHM,CAAP;AAID,OANkB,CAAZ,CAAP;AAOD;;;oCAEgBumB,C,EAAGpd,G,EAAK;AACvB,aAAO6W,QAAQ9M,OAAR,CAAgB,IAAI+L,wBAAJ,CAAgB9V,IAAIxN,IAApB,EAA0BwN,IAAIvI,KAA9B,CAAhB,CAAP;AACD;;;4CAEwBmd,K,EAAO5U,G,EAAK;AACnC,UAAI;AACF,YAAMC,MAAM2U,MAAMyF,UAAN,CAAiBra,IAAIhO,EAArB,CAAZ;AACA,YAAIiO,eAAe4V,kCAAnB,EAAqC;AACnC,iBAAOgB,QAAQ9M,OAAR,CAAgB3U,OAAO+lB,MAAP,CAAc,IAAItF,kCAAJ,CAAqB,IAArB,EAA0B,IAA1B,EAA+B,IAA/B,EAAoC,IAApC,CAAd,EAAyD5V,GAAzD,CAAhB,CAAP;AACD,SAFD,MAEO;AACL,iBAAO4W,QAAQ9M,OAAR,CAAgB3U,OAAO+lB,MAAP,CAAc,IAAIrF,wBAAJ,CAAgB,IAAhB,EAAqB,IAArB,CAAd,EAA0C7V,GAA1C,CAAhB,CAAP;AACD;AACF,OAPD,CAOE,OAAOgM,KAAP,EAAc;AACd,eAAO4K,QAAQkB,MAAR,CAAe9L,KAAf,CAAP;AACD;AACF;;;wCAEoB2I,K,EAAO5U,G,EAAK;AAC/B,UAAMya,cAAc7F,MAAMyF,UAAN,CAAiBra,IAAIhO,EAArB,CAApB;AACA,UAAI,EAAEyoB,YAAYjoB,IAAZ,YAA4B8M,0BAA9B,CAAJ,EAAiD;AAC/C,eAAOuX,QAAQkB,MAAR,CAAevI,6CAAsB8B,yBAAtB,CAAgDtR,IAAIhO,EAApD,EAAwDgO,IAAI7M,UAA5D,CAAf,CAAP;AACD;AACD,UAAMkqB,QAAQ,KAAK1G,kBAAL,CAAwB/B,KAAxB,EAA+B5U,IAAI5N,IAAnC,CAAd;AACA,UAAMkrB,UAAU,KAAK3G,kBAAL,CAAwB/B,KAAxB,EAA+B5U,IAAI3N,MAAnC,CAAhB;AACA,aAAOwkB,QAAQC,GAAR,CAAY,CAACuG,KAAD,EAAQC,OAAR,CAAZ,EAA8BzR,IAA9B,CAAmC,kBAAU;AAClD,YAAMgP,SAAS9D,OAAO,CAAP,CAAf;AACA,YAAMiE,WAAWjE,OAAO,CAAP,CAAjB;AACA,YAAG,CAAC3iB,aAAMuF,OAAN,CAAcxF,YAAd,CAA2B0mB,OAAOroB,IAAlC,CAAJ,EAA6C;AAC3C,iBAAOqkB,QAAQkB,MAAR,CAAevI,6CAAsBO,4BAAtB,CAAmD/P,IAAI7M,UAAvD,CAAf,CAAP;AACD;AACD,YAAMf,OAAOyoB,OAAOE,MAApB;AACA,YAAI1oB,SAAS,IAAb;AACA,YAAG2oB,aAAa,IAAhB,EAAsB;AACpB,cAAG,CAAC5mB,aAAMuF,OAAN,CAAcxF,YAAd,CAA2B6mB,SAASxoB,IAApC,CAAJ,EAA+C;AAC7C,mBAAOqkB,QAAQkB,MAAR,CAAevI,6CAAsBO,4BAAtB,CAAmD/P,IAAI7M,UAAvD,CAAf,CAAP;AACD;AACDd,mBAAS2oB,SAASD,MAAlB;AACD;;AAED,YAAI3oB,QAAQqoB,YAAYhoB,KAAxB,EAA+B;AAC7B,cAAGgoB,YAAYQ,QAAf,EAAyB;AACvB,mBAAOpE,QAAQkB,MAAR,CAAevI,6CAAsBsC,0BAAtB,CAAiD9R,IAAIhO,EAArD,EAAyDI,IAAzD,EAA+DqoB,YAAYhoB,KAA3E,EAAkFuN,IAAI7M,UAAtF,CAAf,CAAP;AACD,WAFD,MAEO;AACL,mBAAO0jB,QAAQkB,MAAR,CAAevI,6CAAsBoC,0BAAtB,CAAiD5R,IAAIhO,EAArD,EAAyDI,IAAzD,EAA+DqoB,YAAYhoB,KAA3E,EAAkFuN,IAAI7M,UAAtF,CAAf,CAAP;AACD;AACF,SAND,MAMO,IAAIf,OAAO,CAAX,EAAc;AACnB,gBAAMod,6CAAsBuE,iCAAtB,CAAwD/T,IAAI7M,UAA5D,CAAN;AACD;AACD,YAAId,WAAW,IAAX,IAAmBooB,YAAY/nB,OAAZ,KAAwB,IAA/C,EAAqD;AACnD,iBAAOmkB,QAAQkB,MAAR,CAAevI,6CAAsBwC,sBAAtB,CAA6ChS,IAAIhO,EAAjD,EAAqDgO,IAAI7M,UAAzD,CAAf,CAAP;AACD;AACD,YAAGd,WAAW,IAAd,EAAqB;AACnB,cAAIA,UAAUooB,YAAY/nB,OAA1B,EAAmC;AACjC,mBAAOmkB,QAAQkB,MAAR,CAAevI,6CAAsBkC,4BAAtB,CAAmD1R,IAAIhO,EAAvD,EAA2DK,MAA3D,EAAkEooB,YAAY/nB,OAA9E,EAAuFsN,IAAI7M,UAA3F,CAAf,CAAP;AACD,WAFD,MAEO,IAAId,SAAS,CAAb,EAAgB;AACrB,kBAAMmd,6CAAsBuE,iCAAtB,CAAwD/T,IAAI7M,UAA5D,CAAN;AACD;AAEF;AACD,eAAO0jB,QAAQ9M,OAAR,CAAgB,IAAIqN,gDAAJ,CAA4BqD,YAAYzoB,EAAxC,EAA4CI,IAA5C,EAAkDC,MAAlD,EAA0DuiB,KAA1D,CAAhB,CAAP;AACD,OApCM,CAAP;AAqCD;;;qCAEiBA,K,EAAO2I,Q,EAAU;AACjC,UAAMC,QAAQ,KAAK7G,kBAAL,CAAwB/B,KAAxB,EAA+B2I,SAAShkB,IAAxC,CAAd;AACA,aAAOikB,MAAM3R,IAAN,CAAY,gBAAQ;AACzB,YAAM8B,aAAa,gDAAuB4P,SAASjkB,EAAhC,EAAoCC,KAAK/G,IAAzC,CAAnB;AACA,YAAI4B,aAAM0F,SAAN,CAAgB3F,YAAhB,CAA6BwZ,UAA7B,CAAJ,EAA8C;AAC5C,cAAM2M,aAAa/gB,KAAK/G,IAAL,CAAU8nB,UAAV,EAAnB;AACA,cAAMC,OAAOD,WAAW,CAAX,CAAb;AACA,iBAAOzD,QAAQkB,MAAR,CAAevI,6CAAsB8D,qBAAtB,CAA4CiK,SAASjkB,EAArD,EAAyDihB,KAAK/nB,IAA9D,EAAoE+nB,KAAKlL,GAAzE,EAA8EkO,SAASpqB,UAAvF,CAAf,CAAP;AACD;AACD,gBAAQoqB,SAASjkB,EAAT,CAAY4O,GAApB;AACE,eAAKF,qBAAUC,GAAV,CAAcC,GAAnB;AACE,mBAAO,IAAI4N,wBAAJ,CAAgBnI,UAAhB,EAA4BpU,KAAK9B,KAAjC,CAAP;AACF,eAAKuQ,qBAAUG,GAAV,CAAcD,GAAnB;AACE,mBAAO,IAAI4N,wBAAJ,CAAgBnI,UAAhB,EAA4BpU,KAAK9B,KAAL,CAAWgmB,OAAX,EAA5B,CAAP;AACF,eAAKzV,qBAAUc,GAAV,CAAcZ,GAAnB;AACE,mBAAO,IAAI4N,wBAAJ,CAAgBnI,UAAhB,EAA4B,CAACpU,KAAK9B,KAAlC,CAAP;AACF;AACE,mBAAOof,QAAQkB,MAAR,CAAe,IAAI7H,0BAAJ,CAAiB,kCAAiCqN,SAASjkB,EAA3D,CAAf,CAAP;AARJ;AAUD,OAjBM,CAAP;AAkBD;;;qCAEiBsb,K,EAAO8I,Q,EAAU;AACjC,UAAMF,QAAQ,KAAK7G,kBAAL,CAAwB/B,KAAxB,EAA+B8I,SAASnkB,IAAxC,CAAd;AACA,UAAMokB,SAAS,KAAKhH,kBAAL,CAAwB/B,KAAxB,EAA+B8I,SAASlkB,KAAxC,CAAf;AACA,aAAOqd,QAAQC,GAAR,CAAY,CAAC0G,KAAD,EAAQG,MAAR,CAAZ,EAA6B9R,IAA7B,CAAkC,kBAAU;AACjD,YAAMtS,OAAOwd,OAAO,CAAP,CAAb;AACA,YAAMvd,QAAQud,OAAO,CAAP,CAAd;AACA,YAAMpJ,aAAa,gDAAuB+P,SAASpkB,EAAhC,EAAoCC,KAAK/G,IAAzC,EAA+CgH,MAAMhH,IAArD,CAAnB;AACA,YAAI4B,aAAM0F,SAAN,CAAgB3F,YAAhB,CAA6BwZ,UAA7B,CAAJ,EAA8C;AAC5C,cAAMiQ,iBAAiBrkB,KAAK/G,IAAL,CAAU8nB,UAAV,EAAvB;AACA,cAAMuD,WAAWD,eAAe,CAAf,CAAjB;AACA,cAAME,kBAAkBtkB,MAAMhH,IAAN,CAAW8nB,UAAX,EAAxB;AACA,cAAMyD,YAAYD,gBAAgB,CAAhB,CAAlB;AACA,iBAAOjH,QAAQkB,MAAR,CAAevI,6CAAsBiE,qBAAtB,CAA4CiK,SAASpkB,EAArD,EAAyDukB,SAASrrB,IAAlE,EAAwEqrB,SAASxO,GAAjF,EACpB0O,UAAUvrB,IADU,EACLurB,UAAU1O,GADL,EACSqO,SAASvqB,UADlB,CAAf,CAAP;AAED;AACD,YAAImb,SAAS,IAAb;AACA,gBAAQoP,SAASpkB,EAAT,CAAY4O,GAApB;AACE,eAAKF,qBAAUC,GAAV,CAAcC,GAAnB;AAAwB;AACtB,kBAAG9T,aAAMyF,MAAN,CAAa1F,YAAb,CAA0BoF,KAAK/G,IAA/B,CAAH,EAAyC;AACvC,oBAAMwrB,WAAW,8BAAgBxkB,MAAM/B,KAAtB,EAA6B+B,MAAMhH,IAAnC,CAAjB;AACA,uBAAO,IAAIsjB,wBAAJ,CAAgBnI,UAAhB,EAA4BpU,KAAK9B,KAAL,GAAaumB,QAAzC,CAAP;AACD,eAHD,MAGO,IAAI5pB,aAAMyF,MAAN,CAAa1F,YAAb,CAA0BqF,MAAMhH,IAAhC,CAAJ,EAA2C;AAChD,oBAAMyrB,UAAU,8BAAgB1kB,KAAK9B,KAArB,EAA4B8B,KAAK/G,IAAjC,CAAhB;AACA,uBAAO,IAAIsjB,wBAAJ,CAAgBnI,UAAhB,EAA4BsQ,UAAUzkB,MAAM/B,KAA5C,CAAP;AACD,eAHM,MAGA;AACL,uBAAO,IAAIqe,wBAAJ,CAAgBnI,UAAhB,EAA4BpU,KAAK9B,KAAL,CAAWymB,IAAX,CAAgB1kB,MAAM/B,KAAtB,CAA5B,CAAP;AACD;AACF;AACD,eAAKuQ,qBAAUG,GAAV,CAAcD,GAAnB;AACE,mBAAO,IAAI4N,wBAAJ,CAAgBnI,UAAhB,EAA4BpU,KAAK9B,KAAL,CAAW0mB,KAAX,CAAiB3kB,MAAM/B,KAAvB,CAA5B,CAAP;AACF,eAAKuQ,qBAAUI,IAAV,CAAeF,GAApB;AAAyB;AACvBoG,uBAAS/U,KAAK9B,KAAL,CAAW2mB,KAAX,CAAiB5kB,MAAM/B,KAAvB,CAAT;AACA,kBAAG6W,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,yBAAS,IAAIiQ,iBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,qBAAO,IAAIxI,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUK,GAAV,CAAcH,GAAnB;AAAwB;AACtB,kBAAI9T,aAAMuF,OAAN,CAAcxF,YAAd,CAA2BwZ,UAA3B,CAAJ,EACEW,SAAS/U,KAAK9B,KAAL,CAAWgnB,QAAX,CAAoBjlB,MAAM/B,KAA1B,CAAT,CADF,KAGE6W,SAAS/U,KAAK9B,KAAL,CAAWinB,GAAX,CAAellB,MAAM/B,KAArB,CAAT;AACF,kBAAG6W,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,yBAAS,IAAIiQ,iBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,qBAAO,IAAIxI,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUM,GAAV,CAAcJ,GAAnB;AAAwB;AACtBoG,uBAAS/U,KAAK9B,KAAL,CAAWknB,MAAX,CAAkBnlB,MAAM/B,KAAxB,CAAT;AACA,kBAAG6W,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,yBAAS,IAAIiQ,iBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,qBAAO,IAAIxI,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUO,EAAV,CAAaL,GAAlB;AAAuB;AACrB,kBAAI9T,aAAMyF,MAAN,CAAa1F,YAAb,CAA0BoF,KAAK/G,IAA/B,CAAJ,EAA0C;AACxC8b,yBAAS/U,KAAK9B,KAAL,CAAWM,MAAX,GAAoByB,MAAM/B,KAAN,CAAYM,MAAzC;AACD,eAFD,MAEO;AACLuW,yBAAS/U,KAAK9B,KAAL,CAAWmnB,EAAX,CAAcplB,MAAM/B,KAApB,CAAT;AACD;AACD,qBAAO,IAAIqe,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUQ,EAAV,CAAaN,GAAlB;AAAuB;AACrB,kBAAI9T,aAAMyF,MAAN,CAAa1F,YAAb,CAA0BoF,KAAK/G,IAA/B,CAAJ,EAA0C;AACxC8b,yBAAS/U,KAAK9B,KAAL,CAAWM,MAAX,IAAqByB,MAAM/B,KAAN,CAAYM,MAA1C;AACD,eAFD,MAEO;AACLuW,yBAAS/U,KAAK9B,KAAL,CAAWonB,GAAX,CAAerlB,MAAM/B,KAArB,CAAT;AACD;AACD,qBAAO,IAAIqe,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUtM,EAAV,CAAawM,GAAlB;AAAuB;AACrB,kBAAI9T,aAAMyF,MAAN,CAAa1F,YAAb,CAA0BoF,KAAK/G,IAA/B,CAAJ,EAA0C;AACxC8b,yBAAS/U,KAAK9B,KAAL,CAAWM,MAAX,GAAoByB,MAAM/B,KAAN,CAAYM,MAAzC;AACD,eAFD,MAEO;AACLuW,yBAAS/U,KAAK9B,KAAL,CAAWqnB,EAAX,CAActlB,MAAM/B,KAApB,CAAT;AACD;AACD,qBAAO,IAAIqe,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUS,EAAV,CAAaP,GAAlB;AAAuB;AACrB,kBAAI9T,aAAMyF,MAAN,CAAa1F,YAAb,CAA0BoF,KAAK/G,IAA/B,CAAJ,EAA0C;AACxC8b,yBAAS/U,KAAK9B,KAAL,CAAWM,MAAX,IAAqByB,MAAM/B,KAAN,CAAYM,MAA1C;AACD,eAFD,MAEO;AACLuW,yBAAS/U,KAAK9B,KAAL,CAAWsnB,GAAX,CAAevlB,MAAM/B,KAArB,CAAT;AACD;AACD,qBAAO,IAAIqe,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUU,EAAV,CAAaR,GAAlB;AAAuB;AACrB,kBAAI9T,aAAMuF,OAAN,CAAcxF,YAAd,CAA2BoF,KAAK/G,IAAhC,KAAyC4B,aAAMwF,IAAN,CAAWzF,YAAX,CAAwBoF,KAAK/G,IAA7B,CAA7C,EAAiF;AAC/E8b,yBAAS/U,KAAK9B,KAAL,CAAWunB,EAAX,CAAcxlB,MAAM/B,KAApB,CAAT;AACD,eAFD,MAEO;AACL6W,yBAAS/U,KAAK9B,KAAL,KAAe+B,MAAM/B,KAA9B;AACD;AACD,qBAAO,IAAIqe,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUW,GAAV,CAAcT,GAAnB;AAAwB;AACtB,kBAAI9T,aAAMuF,OAAN,CAAcxF,YAAd,CAA2BoF,KAAK/G,IAAhC,KAAyC4B,aAAMwF,IAAN,CAAWzF,YAAX,CAAwBoF,KAAK/G,IAA7B,CAA7C,EAAiF;AAC/E8b,yBAAS,CAAC/U,KAAK9B,KAAL,CAAWunB,EAAX,CAAcxlB,MAAM/B,KAApB,CAAV;AACD,eAFD,MAEO;AACL6W,yBAAS/U,KAAK9B,KAAL,KAAe+B,MAAM/B,KAA9B;AACD;AACD,qBAAO,IAAIqe,wBAAJ,CAAgBnI,UAAhB,EAA4BW,MAA5B,CAAP;AACD;AACD,eAAKtG,qBAAUY,GAAV,CAAcV,GAAnB;AACE,mBAAO,IAAI4N,wBAAJ,CAAgBnI,UAAhB,EAA4BpU,KAAK9B,KAAL,IAAc+B,MAAM/B,KAAhD,CAAP;AACF,eAAKuQ,qBAAUa,EAAV,CAAaX,GAAlB;AACE,mBAAO,IAAI4N,wBAAJ,CAAgBnI,UAAhB,EAA4BpU,KAAK9B,KAAL,IAAc+B,MAAM/B,KAAhD,CAAP;AACF;AACE,mBAAOof,QAAQkB,MAAR,CAAe,IAAI7H,0BAAJ,CAAiB,kCAAiCwN,SAASpkB,EAA3D,CAAf,CAAP;AA3FJ;AA6FD,OA1GM,CAAP;AA2GD;;;0CAEsBigB,E,EAAI;AACzB,UAAIhC,YAAYgC,EAAhB;AACA,UAAGA,cAAcnC,gDAAjB,EAA0C;AACxC,YAAGmC,GAAG/mB,IAAH,YAAmB8M,0BAAtB,EAAoC;AAClC,kBAAOia,GAAG/mB,IAAH,CAAQ6M,UAAf;AACE,iBAAK,CAAL;AAAQ;AACNkY,4BAAY,IAAI1B,kCAAJ,CAAqB0D,GAAG/mB,IAAxB,EAA8B+mB,GAAG9hB,KAAjC,CAAZ;AACA;AACD;AACD;AAAS;AACP,sBAAM,IAAIyY,0BAAJ,CAAiB,oCAAjB,CAAN;AACD;AAPH;AASD,SAVD,MAUO;AACLqH,sBAAY,IAAIzB,wBAAJ,CAAgByD,GAAG/mB,IAAnB,EAAyB+mB,GAAG9hB,KAA5B,CAAZ;AACD;AACF;AACD,aAAO8f,SAAP;AACD;;;;;;;;;;;;;;;;;;;;;QCr6Ba0H,oB,GAAAA,oB;QAeAC,oB,GAAAA,oB;QAeAC,sB,GAAAA,sB;;AA3ChB;;AACA;;IAAYnlB,Q;;AACZ;;AACA;;AACA;;AACA;;;;AAEA;;;;;;AAMO,SAASilB,oBAAT,GAAiC;AACtC,MAAMG,iBAAiB,SAAjBA,cAAiB,CAAC7J,GAAD,EAAM6H,CAAN,EAAY;AACjC,QAAMD,SAAU5H,IAAI8E,UAAJ,CAAe,QAAf,CAAhB;AACA,QAAMkB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMuF,OAAtB,EAA+B,oBAAMwjB,OAAO1qB,KAAb,CAA/B,CAAb;AACA8iB,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GALD;;AAOA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqByqB,cAArB,CAAD,CAA/B,CAAd;AACA,MAAMne,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,cAAtB,EAAsCK,aAAMuF,OAA5C,EACX,CAAC,IAAIK,SAASnG,eAAb,CAA6B,IAAIyL,0BAAJ,CAAiBlL,aAAMirB,GAAvB,EAA4B,CAA5B,CAA7B,EAA6D,QAA7D,EAAuE,KAAvE,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEK,SAASie,oBAAT,GAAiC;AACtC,MAAMI,iBAAiB,SAAjBA,cAAiB,CAAC/J,GAAD,EAAM6H,CAAN,EAAY;AACjC,QAAMmC,SAAUhK,IAAI8E,UAAJ,CAAe,QAAf,CAAhB;AACA,QAAMkB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMuF,OAAtB,EAA+B,oBAAM4lB,OAAO9sB,KAAb,CAA/B,CAAb;AACA8iB,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GALD;;AAOA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB2qB,cAArB,CAAD,CAA/B,CAAd;AACA,MAAMre,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,cAAtB,EAAsCK,aAAMuF,OAA5C,EACX,CAAC,IAAIK,SAASnG,eAAb,CAA6B,IAAIyL,0BAAJ,CAAiBlL,aAAMirB,GAAvB,EAA4B,CAA5B,CAA7B,EAA6D,QAA7D,EAAuE,KAAvE,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEK,SAASke,sBAAT,GAAmC;AACxC,MAAMK,mBAAmB,SAAnBA,gBAAmB,CAACjK,GAAD,EAAM6H,CAAN,EAAY;AACnC,QAAMmC,SAAUhK,IAAI8E,UAAJ,CAAe,QAAf,CAAhB;AACA,QAAMkB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMuF,OAAtB,EAA+B,oBAAM4lB,OAAO7sB,OAAb,CAA/B,CAAb;AACA6iB,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GALD;;AAOA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB6qB,gBAArB,CAAD,CAA/B,CAAd;AACA,MAAMve,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,gBAAtB,EAAwCK,aAAMuF,OAA9C,EACX,CAAC,IAAIK,SAASnG,eAAb,CAA6B,IAAIyL,0BAAJ,CAAiBlL,aAAMirB,GAAvB,EAA4B,CAA5B,CAA7B,EAA6D,QAA7D,EAAuE,KAAvE,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA,C;;;;;;;;;;;;;;;;;QCnDcwe,e,GAAAA,e;QAuBAC,c,GAAAA,c;;AA5BhB;;AACA;;IAAY1lB,Q;;AACZ;;AACA;;;;AAEO,SAASylB,eAAT,GAA4B;AACjC,MAAME,gBAAgB,SAAhBA,aAAgB,CAAU/K,KAAV,EAAiBwI,CAAjB,EAAoB;AACxC,QAAMnd,MAAM2U,MAAMyF,UAAN,CAAiB,IAAjB,CAAZ;AACA,QAAGpa,IAAIzN,IAAJ,CAAS2B,YAAT,CAAsBC,aAAMuF,OAA5B,CAAH,EAAyC;AACvC,WAAKgb,MAAL,CAAYiL,UAAZ,CAAuB3f,IAAIxI,KAAJ,CAAUJ,QAAV,EAAvB;AACD,KAFD,MAEO,IAAI4I,IAAIzN,IAAJ,CAAS2B,YAAT,CAAsBC,aAAMwF,IAA5B,CAAJ,EAAuC;AAC5C,UAAIqG,IAAIxI,KAAJ,CAAU4mB,EAAV,MAAkB,CAAtB,EAAyB;AACvB,aAAK1J,MAAL,CAAYiL,UAAZ,CAAuB3f,IAAIxI,KAAJ,CAAU+mB,OAAV,CAAkB,CAAlB,CAAvB;AACD,OAFD,MAEO;AACL,aAAK7J,MAAL,CAAYiL,UAAZ,CAAuB3f,IAAIxI,KAAJ,CAAUJ,QAAV,EAAvB;AACD;AACF,KANM,MAMA;AACL,WAAKsd,MAAL,CAAYiL,UAAZ,CAAuB3f,IAAIxI,KAA3B;AACD;AACD,WAAOof,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD,GAdD;AAeA,MAAMjQ,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA8B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBgrB,aAArB,CAAD,CAA9B,CAAd;AACA,MAAM1e,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,QAAtB,EAAgCK,aAAMC,IAAtC,EACX,CAAC,IAAI2F,SAASnG,eAAb,CAA6BO,aAAMirB,GAAnC,EAAwC,IAAxC,EAA8C,KAA9C,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASye,cAAT,GAA2B;AAChC,MAAMG,eAAe,SAAfA,YAAe,CAAUjL,KAAV,EAAiBwI,CAAjB,EAAoB;AAAA;;AACvC,QAAM0C,UAAU,IAAIjJ,OAAJ,CAAY,UAAC9M,OAAD,EAAUqT,CAAV,EAAgB;AAC1C,YAAKljB,KAAL,CAAW6lB,YAAX,CAAwBhW,OAAxB;AACD,KAFe,CAAhB;AAGA,WAAO+V,QAAQjU,IAAR,CAAa,gBAAQ;AAC1B,UAAMmU,gBAAgBpL,MAAMyF,UAAN,CAAiB,IAAjB,EAAuB7nB,IAA7C;AACA,UAAIwkB,SAAS,IAAb;AACA,UAAIgJ,cAAc7rB,YAAd,CAA2BC,aAAMuF,OAAjC,CAAJ,EAA+C;AAC7C,YAAMsG,MAAM,oBAAMpK,IAAN,CAAZ;AACAmhB,iBAAS,IAAIlB,wBAAJ,CAAgB1hB,aAAMuF,OAAtB,EAA+BsG,GAA/B,CAAT;AACD,OAHD,MAGO,IAAI+f,cAAc7rB,YAAd,CAA2BC,aAAMwF,IAAjC,CAAJ,EAA4C;AACjDod,iBAAS,IAAIlB,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B,qBAAO/D,IAAP,CAA5B,CAAT;AACD,OAFM,MAEA,IAAImqB,cAAc7rB,YAAd,CAA2BC,aAAMoE,OAAjC,CAAJ,EAA+C;AACpDwe,iBAAS,IAAIlB,wBAAJ,CAAgB1hB,aAAMoE,OAAtB,EAA+B,qBAAO3C,IAAP,CAA/B,CAAT;AACD,OAFM,MAEA,IAAImqB,cAAc7rB,YAAd,CAA2BC,aAAMyF,MAAjC,CAAJ,EAA8C;AACnDmd,iBAAS,IAAIlB,wBAAJ,CAAgB1hB,aAAMyF,MAAtB,EAA8B,uBAAShE,IAAT,CAA9B,CAAT;AACD;AACD,YAAK6e,UAAL,CAAgB1K,MAAhB,CAAuB,CAAvB,EAAyB,MAAK0K,UAAL,CAAgB3c,MAAzC;AACA6c,YAAM4F,WAAN,CAAkB,IAAlB,EAAwBxD,MAAxB;AACA,aAAOH,QAAQ9M,OAAR,CAAgB6K,KAAhB,CAAP;AACD,KAhBM,CAAP;AAiBD,GArBD;AAsBA,MAAMjQ,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBkrB,YAArB,CAAD,CAA/B,CAAd;AACA,MAAM5e,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,OAAtB,EAA+BK,aAAMC,IAArC,EACX,CAAC,IAAI2F,SAASnG,eAAb,CAA6BO,aAAMirB,GAAnC,EAAwC,IAAxC,EAA8C,IAA9C,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD,C;;;;;;;;;;;;;;;;;QCrCegf,e,GAAAA,e;QAuBAC,c,GAAAA,c;QAuBAC,e,GAAAA,e;QAuBAC,iB,GAAAA,iB;QAgCAC,gB,GAAAA,gB;QAgCAC,iB,GAAAA,iB;QAsBAC,mB,GAAAA,mB;;AA9KhB;;AACA;;IAAYvmB,Q;;AACZ;;AACA;;AACA;;AACA;;AACA;;;;AAEA;;;;;;;;;;;AAWO,SAASimB,eAAT,GAA4B;AACjC,MAAMO,YAAY,SAAZA,SAAY,CAACjL,GAAD,EAAM6H,CAAN,EAAY;AAC5B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMqG,SAASzmB,2BAAa0mB,YAAb,CAA0BF,IAAIhpB,KAA9B,CAAf;AACA,QAAI6W,SAAS,KAAb;AACA,QAAI;AACF,UAAMrO,MAAMygB,OAAOna,SAAP,EAAZ;AACA,UAAItG,eAAehH,wBAAnB,EAAgC;AAC9BqV,iBAAS,IAAT;AACD;AACF,KALD,CAKE,OAAOrC,KAAP,EAAc,CAAG;AACnB,QAAMsP,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMoE,OAAtB,EAA+B8V,MAA/B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAbD;;AAeA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB6rB,SAArB,CAAD,CAA/B,CAAd;AACA,MAAMvf,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,SAAtB,EAAiCK,aAAMoE,OAAvC,EACX,CAAC,IAAIwB,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,CADW,EAEX8K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASif,cAAT,GAA2B;AAChC,MAAMU,WAAW,SAAXA,QAAW,CAACrL,GAAD,EAAM6H,CAAN,EAAY;AAC3B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMqG,SAASzmB,2BAAa0mB,YAAb,CAA0BF,IAAIhpB,KAA9B,CAAf;AACA,QAAI6W,SAAS,KAAb;AACA,QAAI;AACF,UAAMrO,MAAMygB,OAAOna,SAAP,EAAZ;AACA,UAAItG,eAAejH,uBAAnB,EAA+B;AAC7BsV,iBAAS,IAAT;AACD;AACF,KALD,CAKE,OAAOrC,KAAP,EAAc,CAAG;AACnB,QAAMsP,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMoE,OAAtB,EAA+B8V,MAA/B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAbD;;AAeA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBisB,QAArB,CAAD,CAA/B,CAAd;AACA,MAAM3f,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,QAAtB,EAAgCK,aAAMoE,OAAtC,EACX,CAAC,IAAIwB,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,CADW,EAEX8K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASkf,eAAT,GAA4B;AACjC,MAAMU,YAAY,SAAZA,SAAY,CAACtL,GAAD,EAAM6H,CAAN,EAAY;AAC5B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMqG,SAASzmB,2BAAa0mB,YAAb,CAA0BF,IAAIhpB,KAA9B,CAAf;AACA,QAAI6W,SAAS,KAAb;AACA,QAAI;AACF,UAAMrO,MAAMygB,OAAOna,SAAP,EAAZ;AACA,UAAItG,eAAe1H,wBAAnB,EAAgC;AAC9B+V,iBAAS,IAAT;AACD;AACF,KALD,CAKE,OAAOrC,KAAP,EAAc,CAAG;AACnB,QAAMsP,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMoE,OAAtB,EAA+B8V,MAA/B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAbD;;AAeA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBksB,SAArB,CAAD,CAA/B,CAAd;AACA,MAAM5f,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,SAAtB,EAAiCK,aAAMoE,OAAvC,EACX,CAAC,IAAIwB,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,CADW,EAEX8K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASmf,iBAAT,GAA8B;AACnC,MAAMU,cAAc,SAAdA,WAAc,CAACvL,GAAD,EAAM6H,CAAN,EAAY;AAC9B,QAAMnd,MAAMsV,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,YAAQpa,IAAIzN,IAAJ,CAAS0V,GAAjB;AACE,WAAK9T,aAAMuF,OAAN,CAAcuO,GAAnB;AAAwB;AACtB,cAAMqT,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B,qBAAOqG,IAAI8a,MAAX,CAA5B,CAAb;AACAxF,cAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,iBAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD;AACD,WAAKnnB,aAAMyF,MAAN,CAAaqO,GAAlB;AAAuB;AACrB,cAAMwY,SAASzmB,2BAAa0mB,YAAb,CAA0B1gB,IAAIxI,KAA9B,CAAf;AACA,cAAI;AACF,gBAAM6W,SAASoS,OAAOna,SAAP,EAAf;AACA,gBAAI+H,kBAAkBrV,wBAAtB,EAAmC;AACjC,kBAAMsiB,QAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,OAAO7W,KAAnC,CAAb;AACA8d,kBAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,qBAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,KAArB,CAAhB,CAAP;AACD;AACF,WAPD,CAOE,OAAOtP,KAAP,EAAc;AACd,mBAAO4K,QAAQkB,MAAR,CAAe,+BAAf,CAAP;AACD;AACF;AAlBH;AAoBD,GAtBD;;AAwBA,MAAMpT,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBmsB,WAArB,CAAD,CAA/B,CAAd;AACA,MAAM7f,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,WAAtB,EAAmCK,aAAMwF,IAAzC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6BO,aAAMirB,GAAnC,EAAwC,KAAxC,EAA+C,KAA/C,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASof,gBAAT,GAA6B;AAClC,MAAMU,aAAa,SAAbA,UAAa,CAACxL,GAAD,EAAM6H,CAAN,EAAY;AAC7B,QAAMnd,MAAMsV,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,YAAQpa,IAAIzN,IAAJ,CAAS0V,GAAjB;AACE,WAAK9T,aAAMwF,IAAN,CAAWsO,GAAhB;AAAqB;AACnB,cAAMqT,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMuF,OAAtB,EAA+BqnB,KAAKC,KAAL,CAAWhhB,IAAI8a,MAAf,CAA/B,CAAb;AACAxF,cAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,iBAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD;AACD,WAAKnnB,aAAMyF,MAAN,CAAaqO,GAAlB;AAAuB;AACrB,cAAMwY,SAASzmB,2BAAa0mB,YAAb,CAA0B1gB,IAAIxI,KAA9B,CAAf;AACA,cAAI;AACF,gBAAM6W,SAASoS,OAAOna,SAAP,EAAf;AACA,gBAAI+H,kBAAkBtV,uBAAtB,EAAkC;AAChC,kBAAMuiB,SAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMuF,OAAtB,EAA+B2U,OAAO7W,KAAtC,CAAb;AACA8d,kBAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,qBAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,MAArB,CAAhB,CAAP;AACD;AACF,WAPD,CAOE,OAAOtP,KAAP,EAAc;AACd,mBAAO4K,QAAQkB,MAAR,CAAe,+BAAf,CAAP;AACD;AACF;AAlBH;AAoBD,GAtBD;;AAwBA,MAAMpT,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBosB,UAArB,CAAD,CAA/B,CAAd;AACA,MAAM9f,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,UAAtB,EAAkCK,aAAMuF,OAAxC,EACX,CAAC,IAAIK,SAASnG,eAAb,CAA6BO,aAAMirB,GAAnC,EAAwC,KAAxC,EAA+C,KAA/C,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASqf,iBAAT,GAA8B;AACnC,MAAMY,cAAc,SAAdA,WAAc,CAAC3L,GAAD,EAAM6H,CAAN,EAAY;AAC9B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMqG,SAASzmB,2BAAa0mB,YAAb,CAA0BF,IAAIhpB,KAA9B,CAAf;AACA,QAAI;AACF,UAAMwI,MAAMygB,OAAOna,SAAP,EAAZ;AACA,UAAItG,eAAe1H,wBAAnB,EAAgC;AAC9B,YAAMgjB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMoE,OAAtB,EAA+ByH,IAAIxI,KAAnC,CAAb;AACA8d,YAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,eAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD;AACF,KAPD,CAOE,OAAOtP,KAAP,EAAc,CAAG;AACnB,WAAO4K,QAAQkB,MAAR,CAAe,oBAAoB0I,IAAIhpB,KAAxB,GAAgC,aAA/C,CAAP;AACD,GAZD;;AAcA,MAAMkN,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBusB,WAArB,CAAD,CAA/B,CAAd;AACA,MAAMjgB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,WAAtB,EAAmCK,aAAMoE,OAAzC,EACX,CAAC,IAAIwB,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,CADW,EAEX8K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASsf,mBAAT,GAAgC;AACrC,MAAMY,gBAAgB,SAAhBA,aAAgB,CAAUvM,KAAV,EAAiBwI,CAAjB,EAAoB;AACxC,QAAMnd,MAAM2U,MAAMyF,UAAN,CAAiB,KAAjB,CAAZ;AACA,QAAI/L,SAAS,8BAAgBrO,GAAhB,CAAb;AACA,QAAMsb,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMyF,MAAtB,EAA8ByU,MAA9B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAND;AAOA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA8B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBwsB,aAArB,CAAD,CAA9B,CAAd;AACA,MAAMlgB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,aAAtB,EAAqCK,aAAMyF,MAA3C,EACX,CAAC,IAAIG,SAASnG,eAAb,CAA6BO,aAAMirB,GAAnC,EAAwC,KAAxC,EAA+C,KAA/C,CAAD,CADW,EAEX1a,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD,C;;;;;;;;;;;;;;;;;QC/JemgB,Y,GAAAA,Y;QA6BAC,Y,GAAAA,Y;QA4BAC,Y,GAAAA,Y;QAuBAC,a,GAAAA,a;QAmBAC,Y,GAAAA,Y;QAqBAC,Y,GAAAA,Y;QAsBAC,Y,GAAAA,Y;QAgBAC,e,GAAAA,e;QAgBAC,e,GAAAA,e;QAmBAC,Y,GAAAA,Y;QAiBAC,Y,GAAAA,Y;;AA9OhB;;AACA;;IAAY9nB,Q;;AACZ;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA;;;;;;;;;;;;;;AAcA,SAAS+nB,gBAAT,CAA2BC,OAA3B,EAAoC;AAClC,SAAOA,QAAQ5D,KAAR,CAAcG,iBAAQ0D,IAAR,CAAa,CAAC,CAAd,CAAd,EAAgCvD,GAAhC,CAAoC,GAApC,CAAP;AACD;;AAEM,SAAS0C,YAAT,GAAyB;AAC7B,MAAMc,SAAS,SAATA,MAAS,CAAC3M,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAM8H,QAAQra,EAAErQ,KAAF,CAAQ2qB,GAAR,CAAY,GAAZ,CAAd;AACA,QAAI9T,SAAS,IAAb;AACA,QAAG6T,MAAMnD,EAAN,CAAS,EAAT,CAAH,EAAiB;AACf1Q,eAAS,IAAIiQ,gBAAJ,CAAY,CAAZ,CAAT;AACD,KAFD,MAEO,IAAI4D,MAAMnD,EAAN,CAAS,GAAT,CAAJ,EAAmB;AACzB1Q,eAAS,IAAIiQ,gBAAJ,CAAY,CAAZ,CAAT;AACA,KAFM,MAEA,IAAI4D,MAAMnD,EAAN,CAAS,GAAT,CAAJ,EAAmB;AACxB1Q,eAAS,IAAIiQ,gBAAJ,CAAY,CAAC,CAAb,CAAT;AACD,KAFM,MAEA;AACLjQ,eAASiQ,iBAAQ8D,GAAR,CAAYN,iBAAiBI,KAAjB,CAAZ,CAAT;AACD;AACD,QAAG7T,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACtChQ,eAAS,IAAIiQ,gBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACA,QAAM/C,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,MAA5B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAnBD;;AAqBD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqButB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAMjhB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8BK,aAAMwF,IAApC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASogB,YAAT,GAAyB;AAC9B,MAAMiB,SAAS,SAATA,MAAS,CAAC/M,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAM8H,QAAQra,EAAErQ,KAAF,CAAQ2qB,GAAR,CAAY,GAAZ,CAAd;AACA,QAAI9T,SAAS,IAAb;AACA,QAAG6T,MAAMnD,EAAN,CAAS,EAAT,CAAH,EAAiB;AACf1Q,eAAS,IAAIiQ,gBAAJ,CAAY,CAAZ,CAAT;AACD,KAFD,MAEO,IAAI4D,MAAMnD,EAAN,CAAS,GAAT,CAAJ,EAAmB;AACxB1Q,eAAS,IAAIiQ,gBAAJ,CAAY,CAAC,CAAb,CAAT;AACD,KAFM,MAEA,IAAI4D,MAAMnD,EAAN,CAAS,GAAT,CAAJ,EAAmB;AACxB1Q,eAAS,IAAIiQ,gBAAJ,CAAY,CAAZ,CAAT;AACD;AACDjQ,aAASiQ,iBAAQgE,GAAR,CAAYR,iBAAiBI,KAAjB,CAAZ,CAAT;AACA,QAAG7T,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,eAAS,IAAIiQ,gBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,QAAM/C,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,MAA5B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAlBD;;AAoBD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB2tB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAMrhB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8BK,aAAMwF,IAApC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAASqgB,YAAT,GAAyB;AAC9B,MAAMkB,SAAS,SAATA,MAAS,CAACjN,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAM8H,QAAQra,EAAErQ,KAAF,CAAQ2qB,GAAR,CAAY,GAAZ,CAAd;AACA,QAAGD,MAAMnD,EAAN,CAAS,EAAT,KAAgBmD,MAAMnD,EAAN,CAAS,GAAT,CAAnB,EAAkC;AAChC,aAAOnI,QAAQkB,MAAR,CAAe,gBAAcjQ,EAAErQ,KAAF,CAAQgrB,QAAR,EAAd,GAAiC,iBAAhD,CAAP;AACD;AACD,QAAInU,SAASiQ,iBAAQmE,GAAR,CAAYX,iBAAiBI,KAAjB,CAAZ,CAAb;AACA,QAAG7T,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,eAAS,IAAIiQ,gBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,QAAM/C,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,MAA5B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAbD;;AAeD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB6tB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAMvhB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8BK,aAAMwF,IAApC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAASsgB,aAAT,GAA0B;AAC/B,MAAMoB,UAAU,SAAVA,OAAU,CAACpN,GAAD,EAAM6H,CAAN,EAAY;AAC1B,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAI/L,SAASxG,EAAErQ,KAAF,CAAQmrB,IAAR,EAAb;AACA,QAAGtU,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,eAAS,IAAIiQ,gBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,QAAM/C,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,MAA5B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GATD;;AAWD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBguB,OAArB,CAAD,CAA/B,CAAd;AACA,MAAM1hB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,OAAtB,EAA+BK,aAAMwF,IAArC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAASugB,YAAT,GAAyB;AAC9B,MAAMqB,SAAS,SAATA,MAAS,CAACtN,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAMyI,IAAIvN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAI/L,SAASxG,EAAErQ,KAAF,CAAQsrB,GAAR,CAAYD,EAAErrB,KAAd,CAAb;AACA,QAAG6W,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,eAAS,IAAIiQ,gBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,QAAM/C,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,MAA5B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAVD;;AAYD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBkuB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAM5hB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8BK,aAAMwF,IAApC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,EACC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CADD,CADW,EAGX+K,KAHW,CAAb;AAIA,SAAO1D,IAAP;AACA;;AAEM,SAASwgB,YAAT,GAAyB;AAC9B,MAAMuB,SAAS,SAATA,MAAS,CAACzN,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAIvS,EAAErQ,KAAF,CAAQwrB,UAAR,EAAJ,EAA0B;AACxB,aAAOpM,QAAQkB,MAAR,CAAe,qDAAf,CAAP;AACD;AACD,QAAIzJ,SAASiQ,iBAAQ2E,KAAR,CAAcpb,EAAErQ,KAAhB,CAAb;AACA,QAAG6W,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,eAAS,IAAIiQ,gBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,QAAM/C,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,MAA5B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAZD;;AAcD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBquB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAM/hB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8BK,aAAMwF,IAApC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAASygB,YAAT,GAAyB;AAC9B,MAAMyB,SAAS,SAATA,MAAS,CAAC5N,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAM/L,SAASxG,EAAErQ,KAAF,CAAQ2rB,GAAR,EAAf;AACA,QAAM7H,OAAO,IAAIzF,wBAAJ,CAAgBhO,EAAEtV,IAAlB,EAAwB8b,MAAxB,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAND;;AAQD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBwuB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAMliB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8B,IAAIyZ,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA9B,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAAS0gB,eAAT,GAA4B;AACjC,MAAM0B,YAAY,SAAZA,SAAY,CAAC9N,GAAD,EAAM6H,CAAN,EAAY;AAC5B,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAM/L,SAASxG,EAAErQ,KAAF,CAAQgmB,OAAR,EAAf;AACA,QAAMlC,OAAO,IAAIzF,wBAAJ,CAAgBhO,EAAEtV,IAAlB,EAAwB8b,MAAxB,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAND;;AAQD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB0uB,SAArB,CAAD,CAA/B,CAAd;AACA,MAAMpiB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,SAAtB,EAAiC,IAAIyZ,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAAjC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAAS2gB,eAAT,GAA4B;AACjC,MAAM0B,YAAY,SAAZA,SAAY,CAAC/N,GAAD,EAAM6H,CAAN,EAAY;AAC5B,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAI/L,SAAS,qBAAO,CAAP,EAAUiV,SAAV,CAAoBzb,EAAErQ,KAAtB,CAAb;AACA,QAAG6W,OAAO+P,EAAP,KAAcpK,eAAOqK,aAAxB,EAAuC;AACrChQ,eAAS,IAAIiQ,gBAAJ,CAAYjQ,OAAOkQ,OAAP,CAAevK,eAAOqK,aAAtB,CAAZ,CAAT;AACD;AACD,QAAM/C,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMwF,IAAtB,EAA4B0U,MAA5B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GATD;;AAWD,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB2uB,SAArB,CAAD,CAA/B,CAAd;AACA,MAAMriB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,SAAtB,EAAiCK,aAAMwF,IAAvC,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B,IAAI2Z,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA7B,EAAyE,GAAzE,EAA8E,KAA9E,CAAD,CADW,EAEX+K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAAS4gB,YAAT,GAAyB;AAC9B,MAAM2B,SAAS,SAATA,MAAS,CAACjO,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAMoJ,UAAU3b,EAAErQ,KAAF,CAAQI,GAAR,CAAY;AAAA,aAAUmf,OAAOvf,KAAjB;AAAA,KAAZ,CAAhB;AACA,QAAM6W,SAASiQ,iBAAQmF,GAAR,4CAAeD,OAAf,EAAf;AACA,QAAMlI,OAAO,IAAIzF,wBAAJ,CAAgBhO,EAAEtV,IAAF,CAAO4oB,SAAvB,EAAkC9M,MAAlC,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAPD;AAQD,MAAMoI,YAAY,IAAIrkB,0BAAJ,CAAiB,IAAIkO,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAAjB,EAA6D,CAA7D,CAAlB;AACA,MAAM+K,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB6uB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAMviB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8B,IAAIyZ,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA9B,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B8vB,SAA7B,EAAwC,GAAxC,EAA6C,KAA7C,CAAD,CADW,EAEXhf,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA;;AAEM,SAAS6gB,YAAT,GAAyB;AAC9B,MAAM8B,SAAS,SAATA,MAAS,CAACrO,GAAD,EAAM6H,CAAN,EAAY;AACzB,QAAMtV,IAAIyN,IAAI8E,UAAJ,CAAe,GAAf,CAAV;AACA,QAAMoJ,UAAU3b,EAAErQ,KAAF,CAAQI,GAAR,CAAY;AAAA,aAAUmf,OAAOvf,KAAjB;AAAA,KAAZ,CAAhB;AACA,QAAM6W,SAASiQ,iBAAQsF,GAAR,4CAAeJ,OAAf,EAAf;AACA,QAAMlI,OAAO,IAAIzF,wBAAJ,CAAgBhO,EAAEtV,IAAF,CAAO4oB,SAAvB,EAAkC9M,MAAlC,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GAPD;AAQD,MAAMoI,YAAY,IAAIrkB,0BAAJ,CAAiB,IAAIkO,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAAjB,EAA6D,CAA7D,CAAlB;AACA,MAAM+K,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBivB,MAArB,CAAD,CAA/B,CAAd;AACA,MAAM3iB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,MAAtB,EAA8B,IAAIyZ,oBAAJ,CAAc,CAACpZ,aAAMuF,OAAP,EAAgBvF,aAAMwF,IAAtB,CAAd,CAA9B,EACX,CAAC,IAAII,SAASnG,eAAb,CAA6B8vB,SAA7B,EAAwC,GAAxC,EAA6C,KAA7C,CAAD,CADW,EAEXhf,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACA,C;;;;;;;;;;;;;;;;;QC/Oe6iB,kB,GAAAA,kB;QAoBAC,e,GAAAA,e;QAcAC,kB,GAAAA,kB;QAcAC,kB,GAAAA,kB;QAcAC,gB,GAAAA,gB;;AA5EhB;;AACA;;IAAYlqB,Q;;AACZ;;AACA;;AACA;;;;AAEA;;;;;;;;AAQO,SAAS8pB,kBAAT,GAA+B;AACpC,MAAMK,eAAe,SAAfA,YAAe,CAAC5O,GAAD,EAAM6H,CAAN,EAAY;AAC/B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAM+J,QAAQ7O,IAAI8E,UAAJ,CAAe,OAAf,CAAd;AACA,QAAMgK,MAAM9O,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAM/L,SAASmS,IAAIhpB,KAAJ,CAAU6sB,SAAV,CAAoBF,MAAM3sB,KAA1B,EAAiC4sB,IAAI5sB,KAArC,CAAf;AACA,QAAM8jB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMyF,MAAtB,EAA8ByU,MAA9B,CAAb;AACAiH,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GARD;;AAUA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBwvB,YAArB,CAAD,CAA/B,CAAd;AACA,MAAMljB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,YAAtB,EAAoCK,aAAMyF,MAA1C,EACX,CAAC,IAAIG,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,EACA,IAAIG,SAASnG,eAAb,CAA6BO,aAAMuF,OAAnC,EAA4C,OAA5C,EAAqD,KAArD,CADA,EAEA,IAAIK,SAASnG,eAAb,CAA6BO,aAAMuF,OAAnC,EAA4C,KAA5C,EAAmD,KAAnD,CAFA,CADW,EAIXgL,KAJW,CAAb;AAKA,SAAO1D,IAAP;AACD;;AAEM,SAAS8iB,eAAT,GAA4B;AACjC,MAAMQ,YAAY,SAAZA,SAAY,CAAChP,GAAD,EAAM6H,CAAN,EAAY;AAC5B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMkB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMuF,OAAtB,EAA+B,oBAAM8mB,IAAIhpB,KAAJ,CAAUM,MAAhB,CAA/B,CAAb;AACAwd,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GALD;AAMA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB4vB,SAArB,CAAD,CAA/B,CAAd;AACA,MAAMtjB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,SAAtB,EAAiCK,aAAMuF,OAAvC,EACX,CAAC,IAAIK,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,CADW,EAEX8K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAAS+iB,kBAAT,GAA+B;AACpC,MAAMQ,eAAe,SAAfA,YAAe,CAACjP,GAAD,EAAM6H,CAAN,EAAY;AAC/B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMkB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMyF,MAAtB,EAA8B4mB,IAAIhpB,KAAJ,CAAUgtB,WAAV,EAA9B,CAAb;AACAlP,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GALD;AAMA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB6vB,YAArB,CAAD,CAA/B,CAAd;AACA,MAAMvjB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,YAAtB,EAAoCK,aAAMyF,MAA1C,EACX,CAAC,IAAIG,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,CADW,EAEX8K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASgjB,kBAAT,GAA+B;AACpC,MAAMS,eAAe,SAAfA,YAAe,CAACnP,GAAD,EAAM6H,CAAN,EAAY;AAC/B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMkB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMyF,MAAtB,EAA8B4mB,IAAIhpB,KAAJ,CAAUktB,WAAV,EAA9B,CAAb;AACApP,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GALD;AAMA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqB+vB,YAArB,CAAD,CAA/B,CAAd;AACA,MAAMzjB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,YAAtB,EAAoCK,aAAMyF,MAA1C,EACX,CAAC,IAAIG,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,CADW,EAEX8K,KAFW,CAAb;AAGA,SAAO1D,IAAP;AACD;;AAEM,SAASijB,gBAAT,GAA6B;AAClC,MAAMU,YAAY,SAAZA,SAAY,CAACrP,GAAD,EAAM6H,CAAN,EAAY;AAC5B,QAAMqD,MAAMlL,IAAI8E,UAAJ,CAAe,KAAf,CAAZ;AACA,QAAMwK,MAAMtP,IAAI8E,UAAJ,CAAe,OAAf,CAAZ;AACA,QAAIwK,IAAIptB,KAAJ,CAAUgrB,QAAV,KAAuB,CAAvB,IAA4BoC,IAAIptB,KAAJ,CAAUgrB,QAAV,MAAwBhC,IAAIhpB,KAAJ,CAAUM,MAAlE,EAA0E;AACxE,aAAO8e,QAAQkB,MAAR,CAAe,IAAI9iB,KAAJ,CAAU,yBAAV,CAAf,CAAP;AACD;AACD,QAAMsmB,OAAO,IAAIzF,wBAAJ,CAAgB1hB,aAAMyF,MAAtB,EAA8B4mB,IAAIhpB,KAAJ,CAAUqtB,MAAV,CAAiBD,IAAIptB,KAAJ,CAAUgrB,QAAV,EAAjB,CAA9B,CAAb;AACAlN,QAAIV,IAAJ,GAAWC,aAAMC,MAAjB;AACA,WAAO8B,QAAQ9M,OAAR,CAAgBwL,IAAIiF,WAAJ,CAAgB,GAAhB,EAAqBe,IAArB,CAAhB,CAAP;AACD,GATD;AAUA,MAAM5W,QAAQ,IAAI3K,SAAS5G,YAAb,CAA0B,EAA1B,EAA+B,CAAC,IAAI4G,SAASrF,OAAb,CAAqBiwB,SAArB,CAAD,CAA/B,CAAd;AACA,MAAM3jB,OAAO,IAAIjH,SAASjG,QAAb,CAAsB,SAAtB,EAAiCK,aAAMyF,MAAvC,EACX,CAAC,IAAIG,SAASnG,eAAb,CAA6BO,aAAMyF,MAAnC,EAA2C,KAA3C,EAAkD,KAAlD,CAAD,EACA,IAAIG,SAASnG,eAAb,CAA6BO,aAAMuF,OAAnC,EAA4C,OAA5C,EAAqD,KAArD,CADA,CADW,EAGXgL,KAHW,CAAb;AAIA,SAAO1D,IAAP;AACD,C;;;;;;;;;;;;;;;;;AC7FM,IAAM6T,wBAAQ1f,OAAOC,MAAP,CAAc;AACjC0f,UAAQ/G,OAAO,aAAP,CADyB;AAEjCgH,SAAOhH,OAAO,YAAP,CAF0B;AAGjCgK,SAAOhK,OAAO,YAAP,CAH0B;AAIjC0L,OAAK1L,OAAO,UAAP;AAJ4B,CAAd,CAAd,C;;;;;;;;;;;;;;;;;;;;;ACAP;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;IAEa3C,gB,WAAAA,gB;AAEX,4BAAYgJ,GAAZ,EAAiB;AAAA;;AACf,SAAKA,GAAL,GAAWA,GAAX;AACA,SAAKla,UAAL,GAAkBC,iCAAgBC,eAAhB,EAAlB;AACA,QAAMrJ,QAAQ,IAAI,KAAKmJ,UAAT,CAAoB,IAApB,CAAd;AACA,SAAK4C,YAAL,GAAoB/L,MAAM+L,YAA1B;AACA,SAAKgoB,SAAL,GAAiB,IAAjB;AACA,SAAKC,eAAL,GAAuB,IAAvB;AACD;;;;8BAEU;AACT,UAAG,KAAKD,SAAL,KAAmB,IAAtB,EAA4B;AAC1B,aAAKA,SAAL,GAAiB,EAACltB,KAAI,EAAL,EAASK,MAAM,IAAf,EAAjB;AACD,OAFD,MAEO;AACL,YAAM+sB,IAAI,EAACptB,KAAI,EAAL,EAASK,MAAM,KAAK6sB,SAApB,EAAV;AACA,aAAKA,SAAL,GAAiBE,CAAjB;AACD;AACF;;;6BAES;AACR,UAAG,KAAKF,SAAL,KAAmB,IAAtB,EAA4B;AAC1B,aAAKA,SAAL,GAAiB,KAAKA,SAAL,CAAe7sB,IAAhC;AACD;AACF;;;iCAEalG,E,EAAIkzB,Q,EAAU;AAC1B,WAAKH,SAAL,CAAeltB,GAAf,CAAmB7F,EAAnB,IAAyBkzB,QAAzB;AACD;;;+BAEWlzB,E,EAAImzB,M,EAAQ;AACtB,UAAG,CAACA,OAAOttB,GAAP,CAAW7F,EAAX,CAAJ,EAAoB;AAClB,YAAGmzB,OAAOjtB,IAAV,EAAgB;AACd,iBAAO,KAAKktB,UAAL,CAAgBpzB,EAAhB,EAAoBmzB,OAAOjtB,IAA3B,CAAP;AACD;AACD,eAAO,IAAP;AACD,OALD,MAKO;AACL,eAAOitB,OAAOttB,GAAP,CAAW7F,EAAX,CAAP;AACD;AACF;;;sCAEkB;AACjB,aAAO,KAAKqiB,GAAL,CAASpY,SAAT,CAAmB0D,IAAnB,CAAwB;AAAA,eAAK7H,EAAEoJ,MAAP;AAAA,OAAxB,CAAP;AACD;;;iCAEalN,I,EAAM;AAClB,UAAGA,KAAK+J,KAAL,CAAW,QAAX,CAAH,EAAyB;AACvB,YAAMyX,MAAM7c,0CAAwBsW,WAAxB,CAAoCjb,IAApC,CAAZ;AACA,YAAG,CAAC,CAAC,CAACwhB,GAAN,EAAW;AACT,gBAAMhG,6CAAsByB,eAAtB,CAAsCjd,IAAtC,CAAN;AACD;AACD,eAAOwhB,GAAP;AACD,OAND,MAMO;AACL,YAAMvV,MAAM,KAAKoU,GAAL,CAASpY,SAAT,CAAmB0D,IAAnB,CAAyB;AAAA,iBAAK7H,EAAE9D,IAAF,KAAWA,IAAhB;AAAA,SAAzB,CAAZ;AACA,YAAI,CAAC,CAAC,CAACiM,GAAP,EAAY;AACV,iBAAO,IAAP;AACD;AACD,eAAOA,GAAP;AACD;AACF;;;kCAEc;AACb,UAAMjE,aAAa,KAAKqY,GAAL,CAASvX,MAA5B;AACA,WAAKuoB,OAAL;AACA,WAAKC,kBAAL,CAAwBtpB,UAAxB;AACA,UAAMC,YAAY,KAAKoY,GAAL,CAASpY,SAA3B;AACA,UAAMiZ,WAAWjZ,UAAUspB,MAAV,CAAiB,UAACC,CAAD;AAAA,eAAOA,EAAExxB,IAAF,KAAW,IAAlB;AAAA,OAAjB,CAAjB;AACA,UAAIkhB,SAASnd,MAAT,IAAmB,CAAvB,EAA0B;AACxB,cAAMyX,6CAAsBM,YAAtB,EAAN;AACD;AACD,WAAK,IAAIpC,IAAI,CAAb,EAAgBA,IAAIzR,UAAUlE,MAA9B,EAAsC2V,GAAtC,EAA2C;AACzC,YAAM8H,MAAMvZ,UAAUyR,CAAV,CAAZ;AACA,aAAK+X,cAAL,CAAoBjQ,GAApB;AACD;AACD,aAAO,KAAKnB,GAAZ;AACD;;;uCAEmBxd,I,EAAM;AACxB,WAAK,IAAI6W,IAAI,CAAb,EAAgBA,IAAI7W,KAAKkB,MAAzB,EAAiC2V,GAAjC,EAAsC;AACpC,aAAKgY,iBAAL,CAAuB7uB,KAAK6W,CAAL,CAAvB;AACD;AACF;;;sCAEkBtO,W,EAAa;AAC9B,UAAIA,uBAAuB7M,0BAA3B,EAA6C;AAC3C,YAAG6M,YAAYzM,OAAZ,KAAwB,IAA3B,EAAiC;AAC/B,cAAMgzB,WAAW,KAAKC,sBAAL,CAA4BxmB,YAAY3M,KAAxC,CAAjB;AACA,cAAI,CAACkzB,SAASxxB,YAAT,CAAsBC,aAAMuF,OAA5B,CAAL,EAA2C;AACzC,kBAAM6V,6CAAsBO,4BAAtB,CAAmD3Q,YAAYjM,UAA/D,CAAN;AACD;AACD,cAAIiM,YAAY1M,OAAZ,KAAwB,IAA5B,EAAkC;AAChC,gBAAMmzB,aAAa,KAAKD,sBAAL,CAA4BxmB,YAAY1M,OAAxC,CAAnB;AACA,gBAAI,CAACmzB,WAAW1xB,YAAX,CAAwBC,aAAMuF,OAA9B,CAAL,EAA6C;AAC3C,oBAAM6V,6CAAsBO,4BAAtB,CAAmD3Q,YAAYjM,UAA/D,CAAN;AACD;AACF;AACD,eAAK2yB,YAAL,CAAkB1mB,YAAYpN,EAA9B,EAAkC,EAACA,IAAIoN,YAAYpN,EAAjB,EAAqBS,OAAO2M,YAAY3M,KAAxC,EAA+CC,SAAS0M,YAAY1M,OAApE,EAA6EF,MAAM4M,YAAY5M,IAA/F,EAAlC;AACA;AACD;AACD,aAAKupB,oBAAL,CAA0B3c,YAAYpN,EAAtC,EAA0CoN,YAAY3M,KAAtD,EAA6D2M,YAAY1M,OAAzE,EAAkF0M,YAAY5M,IAA9F,EAAoG4M,YAAYzM,OAAhH;AACA,aAAKmzB,YAAL,CAAkB1mB,YAAYpN,EAA9B,EAAkC,EAACA,IAAIoN,YAAYpN,EAAjB,EAAqBS,OAAO2M,YAAY3M,KAAxC,EAA+CC,SAAS0M,YAAY1M,OAApE,EAA6EF,MAAM4M,YAAY5M,IAA/F,EAAlC;AAED,OAlBD,MAkBO;AACL,YAAG4M,YAAYzM,OAAZ,KAAwB,IAA3B,EAAiC;AAC/B,eAAKmzB,YAAL,CAAkB1mB,YAAYpN,EAA9B,EAAkC,EAACA,IAAIoN,YAAYpN,EAAjB,EAAqBQ,MAAM4M,YAAY5M,IAAvC,EAAlC;AACA;AACD;AACD,YAAMmb,aAAa,KAAKiY,sBAAL,CAA4BxmB,YAAYzM,OAAxC,CAAnB;AACA,YAAGgb,sBAAsBH,oBAAzB,EAAoC;AAClC,cAAG,CAACG,WAAWxZ,YAAX,CAAwBiL,YAAY5M,IAApC,CAAJ,EAA+C;AAC7C,gBAAM8nB,aAAalb,YAAY5M,IAAZ,CAAiB8nB,UAAjB,EAAnB;AACA,gBAAMC,OAAOD,WAAW,CAAX,CAAb;AACA,kBAAM9K,6CAAsBY,uBAAtB,CAA8CmK,KAAK/nB,IAAnD,EAAyD+nB,KAAKlL,GAA9D,EAAmEjQ,YAAYjM,UAA/E,CAAN;AACD;AACD,eAAK2yB,YAAL,CAAkB1mB,YAAYpN,EAA9B,EAAkC,EAACA,IAAIoN,YAAYpN,EAAjB,EAAqBQ,MAAM4M,YAAY5M,IAAvC,EAAlC;AACD,SAPD,MAOO,IAAG,CAAC4M,YAAY5M,IAAZ,CAAiB2B,YAAjB,CAA8BwZ,UAA9B,CAAJ,EAA+C;AACpD,cAAM2M,cAAalb,YAAY5M,IAAZ,CAAiB8nB,UAAjB,EAAnB;AACA,cAAMC,QAAOD,YAAW,CAAX,CAAb;AACA,gBAAM9K,6CAAsBY,uBAAtB,CAA8CmK,MAAK/nB,IAAnD,EAAyD+nB,MAAKlL,GAA9D,EAAmEjQ,YAAYjM,UAA/E,CAAN;AACD,SAJM,MAIA;AACL,eAAK2yB,YAAL,CAAkB1mB,YAAYpN,EAA9B,EAAkC,EAACA,IAAIoN,YAAYpN,EAAjB,EAAqBQ,MAAM4M,YAAY5M,IAAvC,EAAlC;AACD;AACF;AACF;;;2CAEuBL,U,EAAY;AAClC,UAAGA,sBAAsBkH,qBAAzB,EAAmC;AACjC,YAAMC,KAAKnH,WAAWmH,EAAtB;AACA,YAAMqU,aAAa,KAAKiY,sBAAL,CAA4BzzB,WAAWoH,IAAvC,CAAnB;AACA,eAAO,gDAAuBD,EAAvB,EAA2BqU,UAA3B,CAAP;AACD,OAJD,MAIO,IAAIxb,sBAAsBiH,qBAA1B,EAAoC;AACzC,YAAME,MAAKnH,WAAWmH,EAAtB;AACA,YAAMysB,iBAAiB,KAAKH,sBAAL,CAA4BzzB,WAAWoH,IAAvC,CAAvB;AACA,YAAMysB,kBAAkB,KAAKJ,sBAAL,CAA4BzzB,WAAWqH,KAAvC,CAAxB;AACA,eAAO,gDAAuBF,GAAvB,EAA2BysB,cAA3B,EAA2CC,eAA3C,CAAP;AACD,OALM,MAKA,IAAI7zB,sBAAsBmG,gBAA1B,EAAmC;AACxC,eAAO,KAAK2tB,mBAAL,CAAyB9zB,UAAzB,CAAP;AACD,OAFM,MAEA,IAAIA,sBAAsByC,yBAA1B,EAAwC;AAC7C,YAAIzC,WAAWuG,UAAf,EAA2B;AACzB,gBAAM8W,6CAAsB4B,uBAAtB,CAA8CzY,0CAAwBC,mBAAxB,EAA9C,EAA6FzG,WAAWgB,UAAxG,CAAN;AACD;AACD,YAAMqiB,MAAM,KAAKqD,YAAL,CAAkB1mB,WAAWH,EAA7B,CAAZ;AACA,YAAGwjB,QAAQ,IAAX,EAAiB;AACf,gBAAMhG,6CAAsBI,qBAAtB,CAA4Czd,WAAWH,EAAvD,EAA2DG,WAAWgB,UAAtE,CAAN;AACD;AACD,YAAIqiB,IAAIvhB,UAAJ,CAAeE,YAAf,CAA4BC,aAAMC,IAAlC,CAAJ,EAA6C;AAC3C,gBAAMmb,6CAAsB4B,uBAAtB,CAA8Cjf,WAAWH,EAAzD,EAA6DG,WAAWgB,UAAxE,CAAN;AACD;AACD,aAAK+yB,gBAAL,CAAsB1Q,GAAtB,EAA2BrjB,WAAWsG,gBAAtC;AACA,eAAO+c,IAAIvhB,UAAX;AACD,OAbM,MAaA,IAAI9B,sBAAsBgF,wBAA1B,EAAuC;AAC5C,YAAMgvB,gBAAgB,KAAKf,UAAL,CAAgBjzB,WAAWH,EAA3B,EAA+B,KAAK+yB,SAApC,CAAtB;AACA,YAAGoB,kBAAkB,IAArB,EAA2B;AACzB,gBAAM3W,6CAAsBC,qBAAtB,CAA4Ctd,WAAWH,EAAvD,EAA2DG,WAAWgB,UAAtE,CAAN;AACD;AACD,YAAI,EAAEgzB,cAAc3zB,IAAd,YAA8B8M,0BAAhC,CAAJ,EAAmD;AACjD,gBAAMkQ,6CAAsB8B,yBAAtB,CAAgDnf,WAAWH,EAA3D,EAA+DG,WAAWgB,UAA1E,CAAN;AACD;AACD,YAAMwyB,WAAW,KAAKC,sBAAL,CAA4BzzB,WAAWC,IAAvC,CAAjB;AACA,YAAI,CAACuzB,SAASxxB,YAAT,CAAsBC,aAAMuF,OAA5B,CAAL,EAA2C;AACzC,gBAAM6V,6CAAsBO,4BAAtB,CAAmD5d,WAAWgB,UAA9D,CAAN;AACD;AACD,YAAIhB,WAAWE,MAAX,KAAsB,IAA1B,EAAgC;AAC9B,cAAI8zB,cAAczzB,OAAd,KAA0B,IAA9B,EAAoC;AAClC,kBAAM8c,6CAAsBgC,0BAAtB,CAAiDrf,WAAWH,EAA5D,EAAgEG,WAAWgB,UAA3E,CAAN;AACD;AACD,cAAM0yB,aAAa,KAAKD,sBAAL,CAA4BzzB,WAAWE,MAAvC,CAAnB;AACA,cAAG,CAACwzB,WAAW1xB,YAAX,CAAwBC,aAAMuF,OAA9B,CAAJ,EAA4C;AAC1C,kBAAM6V,6CAAsBO,4BAAtB,CAAmD5d,WAAWgB,UAA9D,CAAN;AACD;AACF;AACD,YAAMizB,UAAUD,cAAc3zB,IAA9B;AACA,YAAGL,WAAWE,MAAX,KAAsB,IAAzB,EAA+B;AAC7B;AACA,iBAAO+zB,QAAQhL,SAAf;AACD,SAHD,MAGO;AACL,cAAG+K,cAAczzB,OAAd,KAA0B,IAA7B,EAAmC;AACjC,mBAAO0zB,QAAQhL,SAAf;AACD;AACD,iBAAO,IAAI9b,0BAAJ,CAAiB8mB,QAAQhL,SAAzB,EAAoC,CAApC,CAAP;AACD;AACF;AACF;;;wCAEoBiL,O,EAAS;AAC5B,UAAGA,mBAAmBrtB,uBAAtB,EAAkC;AAChC,eAAOqtB,QAAQ7zB,IAAf;AACD,OAFD,MAEO,IAAI6zB,mBAAmBptB,wBAAvB,EAAoC;AACzC,eAAOotB,QAAQ7zB,IAAf;AACD,OAFM,MAEA,IAAI6zB,mBAAmBntB,0BAAvB,EAAsC;AAC3C,eAAOmtB,QAAQ7zB,IAAf;AACD,OAFM,MAEA,IAAI6zB,mBAAmB9tB,wBAAvB,EAAoC;AACzC,eAAO8tB,QAAQ7zB,IAAf;AACD,OAFM,MAEA,IAAI6zB,mBAAmBltB,4BAAvB,EAAwC;AAC7C,YAAM+rB,WAAW,KAAKE,UAAL,CAAgBiB,QAAQr0B,EAAxB,EAA4B,KAAK+yB,SAAjC,CAAjB;AACA,YAAGG,aAAa,IAAhB,EAAsB;AACpB,gBAAM1V,6CAAsBC,qBAAtB,CAA4C4W,QAAQr0B,EAApD,EAAwDq0B,QAAQlzB,UAAhE,CAAN;AACD;AACD,YAAI+xB,SAAS1yB,IAAT,YAAyB8M,0BAA7B,EAA2C;AACzC,iBAAO4lB,SAAS1yB,IAAhB;AACD;AACD,eAAO0yB,SAAS1yB,IAAhB;AACD,OATM,MASA;AACL4O,gBAAQklB,IAAR,CAAa,8CAAb;AACA,YAAIC,OAAO,IAAX;AACA,YAAGF,QAAQ5uB,KAAR,CAAcM,MAAd,KAAyB,CAA5B,EAA+B;AAC7BwuB,iBAAO,KAAKX,sBAAL,CAA4BS,QAAQ5uB,KAAR,CAAc,CAAd,CAA5B,CAAP;AACD,SAFD,MAEO;AACL,eAAK,IAAIiW,IAAI,CAAb,EAAgBA,IAAI2Y,QAAQ5uB,KAAR,CAAcM,MAAlC,EAA0C2V,GAA1C,EAA+C;AAC7C,gBAAMpE,IAAI,KAAKsc,sBAAL,CAA4BS,QAAQ5uB,KAAR,CAAciW,CAAd,CAA5B,CAAV;AACA,gBAAG6Y,SAAS,IAAZ,EAAkB;AAChBA,qBAAOjd,CAAP;AACD,aAFD,MAEO,IAAG,CAACid,KAAKpyB,YAAL,CAAkBmV,CAAlB,CAAJ,EAA0B;AAC/B,kBAAMkd,UAAUD,KAAKjM,UAAL,EAAhB;AACA,kBAAMC,OAAOiM,QAAQ,CAAR,CAAb;AACA,kBAAM9J,SAAS2J,QAAQhvB,QAAR,EAAf;AACA,oBAAMmY,6CAAsBc,6BAAtB,CAAoDoM,MAApD,EAA2DnC,KAAK/nB,IAAhE,EAAsE+nB,KAAKlL,GAA3E,EAAgFgX,QAAQlzB,UAAxF,CAAN;AACD;AACF;AACF;AACD,YAAGozB,gBAAgBjnB,0BAAnB,EAAiC;AAC/B,iBAAO,IAAIA,0BAAJ,CAAiBinB,KAAKnL,SAAtB,EAAiCmL,KAAKlnB,UAAL,GAAkB,CAAnD,CAAP;AACD;AACD,eAAO,IAAIC,0BAAJ,CAAiBinB,IAAjB,EAAuB,CAAvB,CAAP;AACD;AACF;;;yCAEqBv0B,E,EAAIS,K,EAAOC,O,EAASF,I,EAAM6zB,O,EAAS;AAAA;;AACvD,UAAIA,mBAAmB7uB,yBAAvB,EAAqC;AACnC,YAAI9E,YAAY,IAAhB,EAAsB;AACpB;AACA,cAAM+zB,UAAU,KAAKb,sBAAL,CAA4BnzB,KAA5B,CAAhB;AACA,cAAI,CAACg0B,QAAQtyB,YAAR,CAAqBC,aAAMuF,OAA3B,CAAL,EAA0C;AACxC,kBAAM6V,6CAAsBO,4BAAtB,CAAmDsW,QAAQlzB,UAA3D,CAAN;AACD;AACD,cAAKV,iBAAiBuG,uBAAtB,EAAmC;AACjC,gBAAI,CAACvG,MAAMgF,KAAN,CAAYunB,EAAZ,CAAeqH,QAAQ5uB,KAAR,CAAcM,MAA7B,CAAL,EAA2C;AACzC,kBAAGvF,KAAK6M,UAAL,GAAkB,CAArB,EAAwB;AACtB,sBAAMmQ,6CAAsBoC,0BAAtB,CAAiD5f,EAAjD,EAAqDq0B,QAAQ5uB,KAAR,CAAcM,MAAnE,EAA2EtF,MAAMskB,MAAN,CAAa0L,QAAb,EAA3E,EAAoG4D,QAAQlzB,UAA5G,CAAN;AACD,eAFD,MAEO;AACL,sBAAMqc,6CAAsBsC,0BAAtB,CAAiD9f,EAAjD,EAAqDq0B,QAAQ5uB,KAAR,CAAcM,MAAnE,EAA2EtF,MAAMskB,MAAN,CAAa0L,QAAb,EAA3E,EAAoG4D,QAAQlzB,UAA5G,CAAN;AACD;AACF,aAND,MAMO,IAAIf,KAAKqF,KAAL,CAAWivB,KAAX,EAAJ,EAAwB;AAC7B,oBAAMlX,6CAAsBuE,iCAAtB,CAAwDsS,QAAQlzB,UAAhE,CAAN;AACD;AAEF;AACDkzB,kBAAQ5uB,KAAR,CAAcO,MAAd,CAAqB,UAACuuB,IAAD,EAAOruB,IAAP,EAAgB;AACnC,gBAAMyuB,QAAQ,MAAKf,sBAAL,CAA4B1tB,IAA5B,CAAd;AACA,gBAAI,CAACquB,KAAKK,SAAL,CAAeD,KAAf,CAAL,EAA4B;AAC1B,kBAAMH,UAAUD,KAAKjM,UAAL,EAAhB,CAAkCuM;AAClC,kBAAMtM,OAAOiM,QAAQ,CAAR,CAAb;AACA,kBAAM9J,SAAS2J,QAAQhvB,QAAR,EAAf;AACA,oBAAMmY,6CAAsBc,6BAAtB,CAAoDoM,MAApD,EAA2DnC,KAAK/nB,IAAhE,EAAsE+nB,KAAKlL,GAA3E,EAAgFgX,QAAQlzB,UAAxF,CAAN;AACD;AACD,mBAAOozB,IAAP;AACD,WATD,EASG/zB,IATH;AAUA,iBAAO,IAAP;AACD,SA7BD,MA6BO;AACL,cAAMi0B,WAAU,KAAKb,sBAAL,CAA4BlzB,OAA5B,CAAhB;AACA,cAAI,CAAC+zB,SAAQtyB,YAAR,CAAqBC,aAAMuF,OAA3B,CAAL,EAA0C;AACxC,kBAAM6V,6CAAsBO,4BAAtB,CAAmDsW,QAAQlzB,UAA3D,CAAN;AACD;AACD,cAAKT,mBAAmBsG,uBAAxB,EAAqC;AACnC,gBAAI,CAACtG,QAAQ+E,KAAR,CAAcunB,EAAd,CAAiBqH,QAAQ5uB,KAAR,CAAcM,MAA/B,CAAL,EAA6C;AAC3C,kBAAGvF,KAAK6M,UAAL,GAAkB,CAArB,EAAwB;AACtB,sBAAMmQ,6CAAsBkC,4BAAtB,CAAmD1f,EAAnD,EAAuDq0B,QAAQ5uB,KAAR,CAAcM,MAArE,EAA6ErF,QAAQqkB,MAAR,CAAe0L,QAAf,EAA7E,EAAwG4D,QAAQlzB,UAAhH,CAAN;AACD,eAFD,MAEO;AACL,sBAAMqc,6CAAsBgC,0BAAtB,CAAiDxf,EAAjD,EAAqDq0B,QAAQlzB,UAA7D,CAAN;AACD;AACF,aAND,MAMO,IAAIT,QAAQ+E,KAAR,CAAcivB,KAAd,EAAJ,EAA2B;AAChC,oBAAMlX,6CAAsBuE,iCAAtB,CAAwDsS,QAAQlzB,UAAhE,CAAN;AACD;AAEF;AACD,eAAK,IAAIua,IAAI,CAAb,EAAgBA,IAAIhb,OAApB,EAA6Bgb,GAA7B,EAAkC;AAChC,gBAAMoZ,eAAeT,QAAQ5uB,KAAR,CAAciW,CAAd,CAArB;AACA,iBAAKqO,oBAAL,CAA0B/pB,EAA1B,EAA8BS,KAA9B,EAAqC,IAArC,EAA2CD,IAA3C,EAAiDs0B,YAAjD;AACD;AACF;AAEF,OArDD,MAqDO;;AAEL,YAAMnZ,aAAa,KAAKiY,sBAAL,CAA4BS,OAA5B,CAAnB;AACA,YAAI,EAAE1Y,sBAAsBrO,0BAAxB,CAAJ,EAA2C;AACzC,cAAMknB,UAAUh0B,KAAK8nB,UAAL,EAAhB;AACA,cAAMC,OAAOiM,QAAQ,CAAR,CAAb;AACA,cAAM9J,SAAS2J,QAAQhvB,QAAR,EAAf;AACA,gBAAMmY,6CAAsBc,6BAAtB,CAAoDoM,MAApD,EAA2DnC,KAAK/nB,IAAhE,EAAsE+nB,KAAKlL,GAA3E,EAAgFgX,QAAQlzB,UAAxF,CAAN;AACD;AACD,YAAI,CAACX,KAAK2B,YAAL,CAAkBwZ,UAAlB,CAAL,EAAoC;AAClC,cAAM6Y,WAAUh0B,KAAK8nB,UAAL,EAAhB;AACA,cAAMC,SAAOiM,SAAQ,CAAR,CAAb;AACA,cAAM9J,UAAS2J,QAAQhvB,QAAR,EAAf;AACA,gBAAMmY,6CAAsBc,6BAAtB,CAAoDoM,OAApD,EAA2DnC,OAAK/nB,IAAhE,EAAsE+nB,OAAKlL,GAA3E,EAAgFgX,QAAQlzB,UAAxF,CAAN;AACD;AACD,eAAO,IAAP;AACD;AACF;;;mCAEeqiB,G,EAAK;AAAA;;AACnB,WAAK6P,OAAL;AACA,WAAKL,eAAL,GAAuBxP,GAAvB;AACAA,UAAIthB,gBAAJ,CAAqB4V,OAArB,CAA6B,uBAAe;AAC1C,YAAGid,YAAYv0B,IAAZ,YAA4B8M,0BAA/B,EAA6C;AAC3C,cAAGynB,YAAYv0B,IAAZ,CAAiB6M,UAAjB,GAA8B,CAAjC,EAAoC;AAClC,mBAAKymB,YAAL,CAAkBiB,YAAY/0B,EAA9B,EAAkC,EAACA,IAAI+0B,YAAY/0B,EAAjB,EAAqBS,OAAO,CAAC,CAA7B,EAAgCC,SAAS,CAAC,CAA1C,EAA6CF,MAAMu0B,YAAYv0B,IAA/D,EAAlC;AACD,WAFD,MAEO;AACL,mBAAKszB,YAAL,CAAkBiB,YAAY/0B,EAA9B,EAAkC,EAACA,IAAI+0B,YAAY/0B,EAAjB,EAAqBS,OAAO,CAAC,CAA7B,EAAgCC,SAAS,IAAzC,EAA+CF,MAAMu0B,YAAYv0B,IAAjE,EAAlC;AACD;AACF,SAND,MAMO;AACL,iBAAKszB,YAAL,CAAkBiB,YAAY/0B,EAA9B,EAAkC,EAACA,IAAI+0B,YAAY/0B,EAAjB,EAAqBQ,MAAMu0B,YAAYv0B,IAAvC,EAAlC;AACD;AACF,OAVD;AAWA,WAAK8yB,kBAAL,CAAwB9P,IAAIW,qBAA5B;AACA,UAAM6Q,WAAWxR,IAAIvhB,UAAJ,CAAeE,YAAf,CAA4BC,aAAMC,IAAlC,CAAjB;AACA,UAAMqD,QAAQ,KAAKuvB,YAAL,CAAkBzR,GAAlB,EAAuBwR,QAAvB,CAAd;AACA,UAAI,CAACtvB,KAAL,EAAY;AACV,cAAM8X,6CAAsB0C,kBAAtB,CAAyCsD,IAAIxhB,IAA7C,CAAN;AACD;AACD,WAAKkzB,MAAL;AACD;;;iCAEa1R,G,EAAKwR,Q,EAAU;AAAA;;AAC3B,aAAOxR,IAAIviB,QAAJ,CAAa+E,MAAb,CACL,UAACuuB,IAAD,EAAOruB,IAAP;AAAA,eAAgB,OAAKivB,YAAL,CAAkB3R,IAAIvhB,UAAtB,EAAkCiE,IAAlC,EAAwC8uB,QAAxC,KAAqDT,IAArE;AAAA,OADK,EACsES,QADtE,CAAP;AAGD;;;iCAEax0B,I,EAAMmP,G,EAAKqlB,Q,EAAU;AACjC,UAAIrlB,eAAelO,eAAnB,EAA0B;AACxB,YAAMka,aAAa,KAAKiY,sBAAL,CAA4BjkB,IAAIxP,UAAhC,CAAnB;AACA,YAAI,CAACwb,WAAWxZ,YAAX,CAAwBC,aAAMoE,OAA9B,CAAL,EAA6C;AAC3C,gBAAMgX,6CAAsBgB,wBAAtB,CAA+C7O,IAAIxO,UAAnD,CAAN;AACD;AACD,aAAKi0B,aAAL,CAAmB50B,IAAnB,EAAyBmP,IAAI1O,QAA7B,EAAuC+zB,QAAvC;AACA,eAAO,KAAP;AACD,OAPD,MAOO,IAAIrlB,eAAejO,aAAnB,EAAwB;AAC7B,aAAKyzB,YAAL,CAAkB30B,IAAlB,EAAwBmP,IAAIhO,UAA5B,EAAwCqzB,QAAxC;AACA,YAAMrZ,cAAa,KAAKiY,sBAAL,CAA4BjkB,IAAIpO,SAAhC,CAAnB;AACA,YAAI,CAACoa,YAAWxZ,YAAX,CAAwBC,aAAMoE,OAA9B,CAAL,EAA6C;AAC3C,gBAAMgX,6CAAsBoB,uBAAtB,CAA8CjP,IAAIxO,UAAlD,CAAN;AACD;AACD,aAAKg0B,YAAL,CAAkB30B,IAAlB,EAAwBmP,IAAI/N,SAA5B,EAAuCozB,QAAvC;AACA,aAAKI,aAAL,CAAmB50B,IAAnB,EAAyBmP,IAAI1O,QAA7B,EAAuC+zB,QAAvC;AACA,eAAO,KAAP;AACD,OATM,MASA,IAAIrlB,eAAejN,gBAAnB,EAA2B;AAChC,YAAM2yB,QAAQ,KAAKzB,sBAAL,CAA4BjkB,IAAIxP,UAAhC,CAAd;AACA,YAAImc,SAAS0Y,QAAb;AACA,YAAIM,aAAa,KAAjB;AACA,aAAK,IAAI5Z,IAAI,CAAb,EAAgBA,IAAI/L,IAAI9M,KAAJ,CAAUkD,MAA9B,EAAsC2V,GAAtC,EAA2C;AACzC,cAAM5I,QAAQnD,IAAI9M,KAAJ,CAAU6Y,CAAV,CAAd;AACA,cAAI5I,MAAM3S,UAAN,KAAqB,IAAzB,EAA+B;AAC7B,gBAAMo1B,WAAW,KAAK3B,sBAAL,CAA4B9gB,MAAM3S,UAAlC,CAAjB;AACA,gBAAI,CAACk1B,MAAMlzB,YAAN,CAAmBozB,QAAnB,CAAL,EAAmC;AACjC,kBAAMf,UAAUa,MAAM/M,UAAN,EAAhB;AACA,kBAAMC,OAAOiM,QAAQ,CAAR,CAAb;AACA,kBAAM9J,SAAS5X,MAAM3S,UAAN,CAAiBkF,QAAjB,EAAf;AACA,oBAAMmY,6CAAsB0B,sBAAtB,CAA6CwL,MAA7C,EAAqDnC,KAAK/nB,IAA1D,EAAgE+nB,KAAKlL,GAArE,EAA0EvK,MAAM3R,UAAhF,CAAN;AACD;AACF,WARD,MAQO;AACLm0B,yBAAa,IAAb;AACD;AACDhZ,mBAASA,UAAU,KAAK8Y,aAAL,CAAmB50B,IAAnB,EAAyBsS,MAAM7R,QAA/B,EAAyCqb,MAAzC,CAAnB;AACD;AACD,eAAOA,UAAUgZ,UAAjB;AAED,OArBM,MAqBA,IAAI3lB,eAAe5P,0BAAnB,EAAqC;AAC1C,YAAMmzB,WAAW,KAAKE,UAAL,CAAgBzjB,IAAI3P,EAApB,EAAwB,KAAK+yB,SAA7B,CAAjB;AACA,YAAGG,aAAa,IAAhB,EAAsB;AACpB,gBAAM1V,6CAAsBC,qBAAtB,CAA4C9N,IAAI3P,EAAhD,EAAoD2P,IAAIxO,UAAxD,CAAN;AACD;AACD,YAAG,EAAE+xB,SAAS1yB,IAAT,YAAyB8M,0BAA3B,CAAH,EAA6C;AAC3C,gBAAMkQ,6CAAsB8B,yBAAtB,CAAgD3P,IAAI3P,EAApD,EAAwD2P,IAAIxO,UAA5D,CAAN;AACD;AACD,YAAM6M,MAAM2B,IAAIxP,UAAhB;AACA,YAAMq1B,UAAU7lB,IAAIvP,IAApB;AACA,YAAMuzB,WAAW,KAAKC,sBAAL,CAA4B4B,OAA5B,CAAjB;AACA,YAAI,CAAC7B,SAASxxB,YAAT,CAAsBC,aAAMuF,OAA5B,CAAL,EAA2C;AACzC,gBAAM6V,6CAAsBO,4BAAtB,CAAmDpO,IAAIxO,UAAvD,CAAN;AACD;AACD,YAAMs0B,YAAY9lB,IAAItP,MAAtB;AACA,YAAI6yB,SAASxyB,OAAT,KAAqB,IAArB,IAA6B+0B,cAAc,IAA/C,EAAqD;AACnD,gBAAMjY,6CAAsBgC,0BAAtB,CAAiD7P,IAAI3P,EAArD,EAAyD2P,IAAIxO,UAA7D,CAAN;AACD,SAFD,MAEO,IAAIs0B,cAAc,IAAlB,EAAwB;AAC7B,cAAM5B,aAAa,KAAKD,sBAAL,CAA4B6B,SAA5B,CAAnB;AACA,cAAI,CAAC5B,WAAW1xB,YAAX,CAAwBC,aAAMuF,OAA9B,CAAL,EAA6C;AAC3C,kBAAM6V,6CAAsBO,4BAAtB,CAAmDpO,IAAIxO,UAAvD,CAAN;AACD;AACF;AACD;AACA,YAAG6M,eAAexI,yBAAlB,EAAgC;AAC9B,eAAKukB,oBAAL,CAA0Bpa,IAAI3P,EAA9B,EAAkCkzB,SAASzyB,KAA3C,EAAmDg1B,YAAYvC,SAASxyB,OAArB,GAA+B,IAAlF,EAAyFwyB,SAAS1yB,IAAlG,EAAwGwN,GAAxG;AACD,SAFD,MAEO;AACL;AACD;AACD,eAAOgnB,QAAP;AACD,OA9BM,MA8BA,IAAIrlB,eAAerP,gBAAnB,EAA2B;AAChC,YAAM4yB,YAAW,KAAKE,UAAL,CAAgBzjB,IAAI3P,EAApB,EAAwB,KAAK+yB,SAA7B,CAAjB;AACA,YAAGG,cAAa,IAAhB,EAAsB;AACpB,gBAAM1V,6CAAsBC,qBAAtB,CAA4C9N,IAAI3P,EAAhD,EAAoD2P,IAAIxO,UAAxD,CAAN;AACD;AACD,YAAM6M,OAAM2B,IAAIxP,UAAhB;AACA,YAAG6N,gBAAexI,yBAAlB,EAAgC;AAC9B,cAAG,EAAE0tB,UAAS1yB,IAAT,YAAyB8M,0BAA3B,CAAH,EAA6C;AAC3C,gBAAMgb,aAAa4K,UAAS1yB,IAAT,CAAc8nB,UAAd,EAAnB;AACA,gBAAMC,SAAOD,WAAW,CAAX,CAAb;AACA,kBAAM9K,6CAAsBY,uBAAtB,CAA8CmK,OAAK/nB,IAAnD,EAAyD+nB,OAAKlL,GAA9D,EAAmE1N,IAAIxO,UAAvE,CAAN;AACD;AACD,eAAK4oB,oBAAL,CAA0Bpa,IAAI3P,EAA9B,EAAkCkzB,UAASzyB,KAA3C,EAAkDyyB,UAASxyB,OAA3D,EAAoEwyB,UAAS1yB,IAA7E,EAAmFwN,IAAnF;AACD,SAPD,MAOO;AACL,cAAM2N,eAAa,KAAKiY,sBAAL,CAA4B5lB,IAA5B,CAAnB;AACA,cAAG,CAAC2N,aAAWxZ,YAAX,CAAwB+wB,UAAS1yB,IAAjC,CAAJ,EAA4C;AAC1C,gBAAM8nB,eAAa4K,UAAS1yB,IAAT,CAAc8nB,UAAd,EAAnB;AACA,gBAAMC,SAAOD,aAAW,CAAX,CAAb;AACA,kBAAM9K,6CAAsBY,uBAAtB,CAA8CmK,OAAK/nB,IAAnD,EAAyD+nB,OAAKlL,GAA9D,EAAmE1N,IAAIxO,UAAvE,CAAN;AACD;AACF;AACD,eAAO6zB,QAAP;AACD,OAtBM,MAsBA,IAAIrlB,eAAe5O,eAAnB,EAA0B;AAC/B,eAAOi0B,QAAP;AACD,OAFM,MAEA,IAAIrlB,eAAerN,oBAAnB,EAA+B;AACpC,YAAMqZ,eAAa,KAAKiY,sBAAL,CAA4BjkB,IAAIpO,SAAhC,CAAnB;AACA,YAAI,CAACoa,aAAWxZ,YAAX,CAAwBC,aAAMoE,OAA9B,CAAL,EAA6C;AAC3C,gBAAMgX,6CAAsBsB,sBAAtB,CAA6CnP,IAAIxO,UAAjD,CAAN;AACD;AACD,YAAGwO,IAAInN,OAAJ,YAAuBF,oBAA1B,EAAsC;AACpC,iBAAO,KAAK8yB,aAAL,CAAmB50B,IAAnB,EAAyBmP,IAAIpN,MAAJ,CAAWtB,QAApC,EAA8C+zB,QAA9C,KAA2D,KAAKG,YAAL,CAAkB30B,IAAlB,EAAwBmP,IAAInN,OAA5B,EAAqCwyB,QAArC,CAAlE;AACD,SAFD,MAEO;AACL,iBAAO,KAAKI,aAAL,CAAmB50B,IAAnB,EAAyBmP,IAAIpN,MAAJ,CAAWtB,QAApC,EAA8C+zB,QAA9C,KAA2D,KAAKI,aAAL,CAAmB50B,IAAnB,EAAyBmP,IAAInN,OAAJ,CAAYvB,QAArC,EAA8C+zB,QAA9C,CAAlE;AACD;AAEF,OAXM,MAWA,IAAIrlB,eAAe/M,yBAAnB,EAAiC;AACtC,YAAI4gB,MAAM,IAAV;AACA,YAAI7T,IAAIjJ,UAAR,EAAoB;AAClB8c,gBAAM,KAAKkS,eAAL,EAAN;AACD,SAFD,MAEO;AACLlS,gBAAM,KAAKqD,YAAL,CAAkBlX,IAAI3P,EAAtB,CAAN;AACD;AACD,YAAGwjB,QAAQ,IAAX,EAAiB;AACf,gBAAMhG,6CAAsBI,qBAAtB,CAA4CjO,IAAI3P,EAAhD,EAAoD2P,IAAIxO,UAAxD,CAAN;AACD;AACD,aAAK+yB,gBAAL,CAAsB1Q,GAAtB,EAA2B7T,IAAIlJ,gBAA/B;AACA,eAAOuuB,QAAP;AACD,OAZM,MAYA,IAAIrlB,eAAelN,gBAAnB,EAA2B;AAChC,YAAMiT,WAAW,KAAKsd,eAAL,CAAqB9jB,MAArB,GAA8BvI,0CAAwBC,mBAAxB,EAA9B,GAA8E,KAAKosB,eAAL,CAAqBhxB,IAApH;AACA,YAAI2N,IAAIxP,UAAJ,KAAmB,IAAnB,IAA2B,CAACK,KAAK2B,YAAL,CAAkBC,aAAMC,IAAxB,CAAhC,EAA+D;AAC7D,cAAMimB,eAAa9nB,KAAK8nB,UAAL,EAAnB;AACA,cAAMC,SAAOD,aAAW,CAAX,CAAb;AACA,gBAAM9K,6CAAsB2C,wBAAtB,CAA+CzK,QAA/C,EAAyD6S,OAAK/nB,IAA9D,EAAoE+nB,OAAKlL,GAAzE,EAA8E1N,IAAIxO,UAAlF,CAAN;AACD,SAJD,MAIO,IAAIwO,IAAIxP,UAAJ,KAAmB,IAAvB,EAA6B;AAClC,cAAMwb,eAAa,KAAKiY,sBAAL,CAA4BjkB,IAAIxP,UAAhC,CAAnB;AACA,cAAI,CAACK,KAAK2B,YAAL,CAAkBwZ,YAAlB,CAAL,EAAoC;AAClC,gBAAM2M,eAAa9nB,KAAK8nB,UAAL,EAAnB;AACA,gBAAMC,SAAOD,aAAW,CAAX,CAAb;AACA,kBAAM9K,6CAAsB6C,wBAAtB,CAA+C3K,QAA/C,EAAyD6S,OAAK/nB,IAA9D,EAAoE+nB,OAAKlL,GAAzE,EAA8E1N,IAAIxO,UAAlF,CAAN;AACD,WAJD,MAIO;AACL,mBAAO,IAAP;AACD;AACF,SATM,MASA;AACL,iBAAO,IAAP;AACD;AACF;AACF;;;kCAEcX,I,EAAMilB,I,EAAMuP,Q,EAAU;AAAA;;AACnC,aAAOvP,KAAKzf,MAAL,CACL,UAACuuB,IAAD,EAAOruB,IAAP;AAAA,eAAgB,OAAKivB,YAAL,CAAkB30B,IAAlB,EAAwB0F,IAAxB,EAA8B8uB,QAA9B,KAA2CT,IAA3D;AAAA,OADK,EAC4DS,QAD5D,CAAP;AAGD;;;qCAEiBxR,G,EAAKmS,oB,EAAsB;AAC3C,UAAInS,IAAIthB,gBAAJ,CAAqB6D,MAArB,KAAgC4vB,qBAAqB5vB,MAAzD,EAAiE;AAC/D,cAAMyX,6CAAsB+C,4BAAtB,CAAmDiD,IAAIxhB,IAAvD,EAA6D2zB,qBAAqB5vB,MAAlF,EAA0Fyd,IAAIthB,gBAAJ,CAAqB6D,MAA/G,EAAuH,IAAvH,CAAN;AACD;AACD,WAAK,IAAI2V,IAAI,CAAb,EAAgBA,IAAIia,qBAAqB5vB,MAAzC,EAAiD2V,GAAjD,EAAsD;AACpD,YAAMka,QAAQD,qBAAqBja,CAArB,CAAd;AACA,YAAMqZ,cAAcvR,IAAIthB,gBAAJ,CAAqBwZ,CAArB,CAApB;AACA,YAAGqZ,YAAYjzB,KAAf,EAAsB;AACpB,cAAI,EAAE8zB,iBAAiBzuB,4BAAjB,IAAoCyuB,iBAAiBzwB,wBAAvD,CAAJ,EAAyE;AACvE,kBAAMqY,6CAAsBkD,2BAAtB,CAAkD1gB,EAAlD,EAAsD41B,MAAMvwB,QAAN,EAAtD,EAAwEuwB,MAAMz0B,UAA9E,CAAN;AACD;AACF;AACD,YAAMwa,aAAa,KAAKiY,sBAAL,CAA4BgC,KAA5B,CAAnB;AACA,YAAGja,sBAAsBH,oBAAtB,IAAmCuZ,YAAYv0B,IAAZ,YAA4Bgb,oBAAlE,EAA6E;AAC3E,cAAIqa,SAAS,CAAb;AACA,eAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIna,WAAW9F,KAAX,CAAiB9P,MAArC,EAA6C+vB,GAA7C,EAAkD;AAChD,gBAAMzvB,UAAUsV,WAAW9F,KAAX,CAAiBigB,CAAjB,CAAhB;AACA,gBAAGf,YAAYv0B,IAAZ,CAAiBqV,KAAjB,CAAuBlK,OAAvB,CAA+BtF,OAA/B,MAA4C,CAAC,CAAhD,EAAmD;AACjDwvB;AACD;AACF;AACD,cAAGA,UAAU,CAAb,EAAgB;AACd,kBAAMrY,6CAAsBkD,2BAAtB,CAAkD1gB,EAAlD,EAAsD41B,MAAMvwB,QAAN,EAAtD,EAAwEuwB,MAAMz0B,UAA9E,CAAN;AACD;AACF,SAXD,MAWO,IAAIwa,sBAAsBH,oBAA1B,EAAqC;AAC1C,cAAG,CAACG,WAAWxZ,YAAX,CAAwB4yB,YAAYv0B,IAApC,CAAJ,EAA+C;AAC7C,kBAAMgd,6CAAsBkD,2BAAtB,CAAkD1gB,EAAlD,EAAsD41B,MAAMvwB,QAAN,EAAtD,EAAwEuwB,MAAMz0B,UAA9E,CAAN;AACD;AACF,SAJM,MAIA,IAAG,CAAC4zB,YAAYv0B,IAAZ,CAAiB2B,YAAjB,CAA8BwZ,UAA9B,CAAJ,EAA+C;AACpD,gBAAM6B,6CAAsBkD,2BAAtB,CAAkD1gB,EAAlD,EAAsD41B,MAAMvwB,QAAN,EAAtD,EAAwEuwB,MAAMz0B,UAA9E,CAAN;AACD;AAEF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;ACngBH;;;;IAEaohB,K,WAAAA,K;AAEX,iBAAYvgB,IAAZ,EAAkB;AAAA;;AAChB,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAK4gB,KAAL,GAAa,EAAb;AACA,SAAKmT,SAAL,GAAiB,IAAjB;AACA,SAAKlT,IAAL,GAAYC,aAAM4E,GAAlB;AACD;;;;gCAEYqO,S,EAAW;AACtB,WAAKA,SAAL,GAAiBA,SAAjB;AACD;;;+BAEW/1B,E,EAAI;AACd,UAAG,CAAC,KAAK4iB,KAAL,CAAW5iB,EAAX,CAAJ,EAAoB;AAClB,YAAI,KAAK+1B,SAAL,KAAmB,IAAvB,EAA6B;AAC3B,iBAAO,KAAKA,SAAL,CAAe1N,UAAf,CAA0BroB,EAA1B,CAAP;AACD,SAFD,MAEO;AACL;AACA,gBAAM,IAAIiD,KAAJ,eAAsBjD,EAAtB,iBAAN;AACD;AACF;AACD,UAAMiO,MAAM,KAAK2U,KAAL,CAAW5iB,EAAX,CAAZ;AACA,UAAIiO,IAAI+nB,KAAR,EAAe;AACb,eAAO/nB,IAAIgoB,SAAJ,EAAP;AACD;AACD,aAAO,KAAKrT,KAAL,CAAW5iB,EAAX,CAAP;AACD;;;gCAEYA,E,EAAIglB,M,EAAQ;AACvB,UAAG,CAAC,KAAKpC,KAAL,CAAW5iB,EAAX,CAAJ,EAAoB;AAClB,YAAG,KAAK+1B,SAAL,KAAmB,IAAtB,EAA4B;AAC1B,eAAKA,SAAL,CAAevN,WAAf,CAA2BxoB,EAA3B,EAA+BglB,MAA/B;AACA,iBAAO,IAAP;AACD,SAHD,MAGO;AACL;AACA,gBAAM,IAAI/hB,KAAJ,eAAsBjD,EAAtB,iBAAN;AACD;AACF,OARD,MAQO;AACL,YAAMk2B,SAAS,KAAKtT,KAAL,CAAW5iB,EAAX,CAAf;AACA,YAAGk2B,OAAOzM,QAAV,EAAoB;AAClB;AACA,gBAAM,IAAIxmB,KAAJ,CAAU,kDAAkDjD,EAA5D,CAAN;AACD;AACD,YAAGk2B,OAAOF,KAAV,EAAiB;AACfE,iBAAOC,SAAP,CAAiBnR,MAAjB;AACA,iBAAO,IAAP;AACD,SAHD,MAGO,IAAGkR,OAAO/zB,YAAP,CAAoB6iB,MAApB,CAAH,EAAgC;AACrCA,iBAAOoR,KAAP,CAAap2B,EAAb;AACA,eAAK4iB,KAAL,CAAW5iB,EAAX,IAAiBoD,OAAOC,MAAP,CAAc2hB,MAAd,CAAjB;AACA,iBAAO,IAAP;AACD,SAJM,MAIA;AACL,cAAMqR,UAAUH,OAAO11B,IAAvB;AACA,cAAM81B,UAAUtR,OAAOxkB,IAAvB;AACA;AACA,gBAAM,IAAIyC,KAAJ,CAAaozB,OAAb,qCAAoDC,OAApD,YAAN;AACD;AACF;AACF;;AAED;AACA;AACA;;;;gCAEat2B,E,EAAIglB,M,EAAQ;AACvB,UAAI,KAAKpC,KAAL,CAAW5iB,EAAX,CAAJ,EAAoB;AAClB;AACA,cAAM,IAAIiD,KAAJ,CAAajD,EAAb,yBAAN;AACD;AACDglB,aAAOoR,KAAP,CAAap2B,EAAb;AACA,WAAK4iB,KAAL,CAAW5iB,EAAX,IAAiBoD,OAAOC,MAAP,CAAc2hB,MAAd,CAAjB;AACA,aAAO,IAAP;AACD;;;;;;;;;;;;;;;;;;;;;;;;;AC1EH;;;;;;;;IAEalB,W,WAAAA,W;AAEX,uBAAatjB,IAAb,EAAmBiF,KAAnB,EAA4C;AAAA,QAAlBgkB,QAAkB,uEAAP,KAAO;;AAAA;;AAC1C,SAAK8M,KAAL,GAAa/1B,IAAb;AACA,SAAKg2B,MAAL,GAAc/wB,KAAd;AACA,SAAKgxB,SAAL,GAAiBhN,QAAjB;AACA,SAAKiN,GAAL,GAAW,IAAX;AACD;;;;0BAEM12B,E,EAAI;AACT,WAAK02B,GAAL,GAAW12B,EAAX;AACD;;;iCAkCa22B,O,EAAS;AACrB,UAAIA,mBAAmB7S,WAAvB,EAAoC;AAClC,eAAO,KAAKtjB,IAAL,CAAU2B,YAAV,CAAuBw0B,QAAQn2B,IAA/B,CAAP;AACD;AACD,aAAO,KAAP;AACD;;;wBArCS;AACR,aAAO,KAAKk2B,GAAZ;AACD;;;wBAEc;AACb,aAAO,KAAK12B,EAAL,KAAY,IAAnB;AACD;;;wBAEW;AACV,aAAO,KAAKu2B,KAAZ;AACD;;;wBAEY;AACX,aAAO,KAAKC,MAAZ;AACD;;;wBAEa;AACZ,UAAI,KAAKA,MAAL,YAAuBjK,iBAA3B,EAAoC;AAClC,eAAO,KAAKiK,MAAL,CAAY/F,QAAZ,EAAP;AACD,OAFD,MAEO;AACL,eAAO,IAAP;AACD;AACF;;;wBAEe;AACd,aAAO,KAAKgG,SAAZ;AACD,K;sBAEahxB,K,EAAO;AACnB,WAAKgxB,SAAL,GAAiBhxB,KAAjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CH;;;;;;;;IAEaoe,gB,WAAAA,gB;;;;;wBAEqB;AAC9B,aAAO,CAAP;AACD;;;wBAEwB;AACvB,aAAO,CAAP;AACD;;;wBAEiC;AAChC,aAAO,CAAP;AACD;;;AAED,4BAAarjB,IAAb,EAAmBC,KAAnB,EAA0BC,OAA1B,EAAmE;AAAA,QAAhC+E,KAAgC,uEAAxB,IAAwB;AAAA,QAAlBgkB,QAAkB,uEAAP,KAAO;;AAAA;;AAAA,oIAC3DjpB,IAD2D,EACrDiF,KADqD,EAC9CgkB,QAD8C;;AAEjE,UAAKmN,MAAL,GAAcn2B,KAAd;AACA,UAAKo2B,QAAL,GAAgBn2B,OAAhB;AAHiE;AAIlE;;;;iCAUai2B,O,EAAS;AACrB,UAAGA,mBAAmB7S,wBAAtB,EAAmC;AACjC,YAAK,KAAKrjB,KAAL,KAAe,CAAC,CAAhB,IAAqBk2B,QAAQl2B,KAAR,GAAgB,CAAtC,IACD,KAAKA,KAAL,KAAek2B,QAAQl2B,KAD1B,EACmC;AAC/B,cAAK,KAAKC,OAAL,KAAiB,CAAC,CAAlB,IAAuBi2B,QAAQj2B,OAAR,GAAkB,CAA1C,IACD,KAAKA,OAAL,KAAiBi2B,QAAQj2B,OAD5B,EACsC;AAClC,oJAA0Bi2B,OAA1B;AACH;AACF;AACJ;AACD,aAAO,KAAP;AACD;;;wBAnBY;AACX,aAAO,KAAKC,MAAZ;AACD;;;wBAEc;AACb,aAAO,KAAKC,QAAZ;AACD;;;wBAee;AACd,aAAO,KAAKr2B,IAAL,CAAU6M,UAAV,KAAyB,CAAhC;AACD;;;wBAEc;AAAA;;AACb,UAAI,KAAK5H,KAAL,KAAe,IAAnB,EAAyB;AACvB,YAAI,KAAKwjB,QAAT,EAAmB;AACjB,cAAG,KAAKxjB,KAAL,CAAWM,MAAX,KAAsB,KAAKtF,KAA9B,EAAqC;AACnC,mBAAO,CAACojB,iBAAiB0G,iBAAlB,EAAqC,KAAK9kB,KAAL,CAAWM,MAAhD,CAAP,CAA+D;AAChE;AACD,cAAM+wB,aAAa,KAAKrxB,KAAL,CAAWkI,IAAX,CAAgB;AAAA,mBAAK,CAAC,OAAKnN,IAAL,CAAUo0B,SAAV,CAAoB9uB,EAAEtF,IAAtB,CAAN;AAAA,WAAhB,CAAnB;AACA,cAAG,CAAC,CAACs2B,UAAL,EAAiB;AACf,mBAAO,CAACjT,iBAAiB4G,UAAlB,EAA8B,KAAKhlB,KAAL,CAAWkG,OAAX,CAAmBmrB,UAAnB,CAA9B,CAAP,CAAqE;AACtE;AACF;AACD,eAAO,EAAP;AACD,OAXD,MAWO;AACP,YAAG,KAAKr2B,KAAL,KAAe,KAAKgF,KAAL,CAAWM,MAA7B,EAAqC;AACnC,iBAAO,CAAC8d,iBAAiB0G,iBAAlB,EAAqC,KAAK9kB,KAAL,CAAWM,MAAhD,CAAP;AACD;AACD,aAAK,IAAI2V,IAAI,CAAb,EAAgBA,IAAI,KAAKjb,KAAzB,EAAgCib,GAAhC,EAAqC;AACnC,eAAK,IAAIoa,IAAI,CAAb,EAAgBA,IAAI,KAAKp1B,OAAzB,EAAkCo1B,GAAlC,EAAuC;AACrC,gBAAMxL,MAAM,KAAK7kB,KAAL,CAAWiW,CAAX,CAAZ;AACA,gBAAG4O,IAAIvkB,MAAJ,KAAe,KAAKrF,OAAvB,EAAgC;AAC9B,qBAAO,CAACmjB,iBAAiBuG,mBAAlB,EAAuCE,IAAIvkB,MAA3C,CAAP;AACD;AACD,gBAAM+wB,cAAaxM,IAAI3c,IAAJ,CAAS;AAAA,qBAAK,CAAC,OAAKnN,IAAL,CAAUo0B,SAAV,CAAoB9uB,EAAEtF,IAAtB,CAAN;AAAA,aAAT,CAAnB;AACA,gBAAG,CAAC,CAACs2B,WAAL,EAAiB;AACf,qBAAO,CAACjT,iBAAiB4G,UAAlB,EAA8B/O,CAA9B,EAAiC4O,IAAI3e,OAAJ,CAAYmrB,WAAZ,CAAjC,CAAP;AACD;AACF;AACF;AACC,eAAO,EAAP;AACD;AACF;;;;EA3EmChT,wB;;;;;;;;;;;;;;;;;;;;;ACFtC;;AACA;;AACA;;AACA;;;;;;;;IAEasB,uB,WAAAA,uB;;;AAEX,mCAAa2R,KAAb,EAAoB32B,IAApB,EAA0BC,MAA1B,EAAkCuiB,KAAlC,EAAyC;AAAA;;AAAA,kJACjC,IADiC,EAC3B,IAD2B,EACrB,KADqB;;AAEvC,UAAKmU,KAAL,GAAaA,KAAb;AACA,UAAKnU,KAAL,GAAaA,KAAb;AACA,UAAKxiB,IAAL,GAAYA,IAAZ;AACA,UAAKC,MAAL,GAAcA,MAAd;AALuC;AAMxC;;;;qCAyDiB;AAChB,aAAO,KAAKuiB,KAAL,CAAWyF,UAAX,CAAsB,KAAK0O,KAA3B,CAAP;AACD;;;sCAEkB/R,M,EAAQ;AACzB,UAAMgS,UAAW,KAAKC,cAAL,EAAjB;AACA,UAAM/N,WAAW9lB,OAAO+lB,MAAP,CAAc,IAAItF,kCAAJ,CAAqB,IAArB,EAA0B,IAA1B,EAA+B,IAA/B,CAAd,EAAoDmT,OAApD,CAAjB;AACA,UAAG,CAAChS,OAAOxkB,IAAP,CAAY2B,YAAZ,CAAyB,KAAK3B,IAA9B,CAAJ,EAAyC;AACvC,cAAM,IAAIyC,KAAJ,0DAAiE,KAAK8zB,KAAtE,CAAN;AACD,OAFD,MAEO,IAAI,KAAKv2B,IAAL,YAAqB8M,0BAArB,IAAqC,KAAK9M,IAAL,CAAUo0B,SAAV,CAAoB5P,OAAOxkB,IAA3B,CAAzC,EAA2E;AAChF,cAAM,IAAIyC,KAAJ,0DAAiE,KAAK8zB,KAAtE,CAAN;AACD;AACD,UAAI,KAAK12B,MAAL,KAAgB,IAApB,EAA0B;AACzB6oB,iBAASzjB,KAAT,CAAe,KAAKrF,IAApB,EAA0BqF,KAA1B,CAAgC,KAAKpF,MAArC,IAA+C2kB,MAA/C;AACA,eAAOkE,QAAP;AACA,OAHD,MAGO;AACNA,iBAASzjB,KAAT,CAAe,KAAKrF,IAApB,IAA4B4kB,MAA5B;AACA,eAAOkE,QAAP;AACA;AACF;;;iCAEayN,O,EAAS;AACrB,UAAG,KAAKn2B,IAAL,CAAU2B,YAAV,CAAuBw0B,QAAQn2B,IAA/B,CAAH,EAAyC;AACvC,YAAGm2B,QAAQn2B,IAAR,YAAwB8M,0BAA3B,EAAyC;AACvC,iBAAO,KAAK7M,KAAL,KAAek2B,QAAQl2B,KAAvB,IAAgC,KAAKC,OAAL,KAAiBi2B,QAAQj2B,OAAhE;AACD,SAFD,MAEO;AACL,eAAK8oB,QAAL,CAAcrnB,YAAd,CAA2Bw0B,OAA3B;AACD;AACF;AACF;;;wBApFY;AACX,aAAO,KAAP;AACD;;;wBAEc;AACb,aAAO,IAAP;AACD;;;wBAEe;AACd,UAAMO,UAAU,KAAKtU,KAAL,CAAWyF,UAAX,CAAsB,KAAK0O,KAA3B,EAAkCtxB,KAAlC,CAAwC,KAAKrF,IAA7C,CAAhB;AACA,UAAG,CAAC82B,OAAJ,EAAa;AACX,YAAG,KAAKD,cAAL,GAAsBhO,QAAzB,EAAmC;AACjC,gBAAMzL,6CAAsBuC,qBAAtB,CAA4C,KAAKgX,KAAjD,EAAwD,KAAK32B,IAA7D,EAAmE,KAAK62B,cAAL,GAAsBx2B,KAAzF,CAAN;AACD,SAFD,MAEO;AACL,gBAAM+c,6CAAsBqC,qBAAtB,CAA4C,KAAKkX,KAAjD,EAAwD,KAAK32B,IAA7D,EAAmE,KAAK62B,cAAL,GAAsBx2B,KAAzF,CAAN;AACD;AACF;AACD,UAAI,KAAKJ,MAAL,KAAgB,IAApB,EAA0B;AACxB,YAAM82B,YAAYD,QAAQzxB,KAAR,CAAc,KAAKpF,MAAnB,CAAlB;AACA,YAAG,CAAC82B,SAAJ,EAAe;AACb,cAAG,KAAKF,cAAL,GAAsBhO,QAAzB,EAAmC;AACjC,kBAAMzL,6CAAsByC,iBAAtB,CAAwC,KAAK8W,KAA7C,CAAN;AACD,WAFD,MAEO;AACL,kBAAMvZ,6CAAsBmC,uBAAtB,CAA8C,KAAKoX,KAAnD,EAA0D,KAAK12B,MAA/D,EAAuE,KAAK42B,cAAL,GAAsBv2B,OAA7F,CAAN;AACD;AACF;AACD,eAAOy2B,SAAP;AACD;AACD,aAAOD,OAAP;AACD;;;wBAEY;AACX,aAAO,KAAK1N,QAAL,CAAc/jB,KAArB;AACD;;;wBAEW;AACV,aAAO,KAAK+jB,QAAL,CAAchpB,IAArB;AACD;;;wBAEY;AACX,UAAG,EAAE,KAAKA,IAAL,YAAqB8M,0BAAvB,CAAH,EAAyC;AACvC,eAAO,IAAP;AACD;AACD,aAAO,KAAKkc,QAAL,CAAc/jB,KAAd,CAAoBM,MAA3B;AACD;;;wBAEc;AACb,cAAQ,KAAKvF,IAAL,CAAU6M,UAAlB;AACE,aAAK,CAAL;AACE,iBAAO,KAAKmc,QAAL,CAAc/jB,KAAd,CAAoB,CAApB,EAAuBA,KAAvB,CAA6BM,MAApC;AACF;AACE,iBAAO,IAAP;AAJJ;AAMD;;;;EA/D0C+d,wB;;;;;;;;;;;;;;;;;;;;;ACL7C;;AACA;;;;;;;;;;;;IAEauB,0B,WAAAA,0B;;;AAEX,sCAAa+R,OAAb,EAAsB;AAAA;;AAAA,wJACd,IADc,EACR,IADQ,EACF,KADE;;AAEpB,UAAKA,OAAL,GAAeA,OAAf;AAFoB;AAGrB;;;;gCAsBY;AACX,aAAO,KAAKA,OAAL,CAAa5N,QAApB;AACD;;;8BAEUxE,M,EAAQ;AACjB,UAAMkE,WAAW,KAAKkO,OAAL,CAAaC,iBAAb,CAA+BrS,MAA/B,CAAjB;AACA,WAAKoS,OAAL,CAAaxU,KAAb,CAAmB4F,WAAnB,CAA+B,KAAK4O,OAAL,CAAaL,KAA5C,EAAmD7N,QAAnD;AACD;;;iCAEayN,O,EAAS;AACrB,aAAO,KAAKS,OAAL,CAAaj1B,YAAb,CAA0Bw0B,OAA1B,CAAP;AACD;;;wBA/BY;AACX,aAAO,IAAP;AACD;;;wBAEW;AACV,aAAO,KAAKS,OAAL,CAAa52B,IAApB;AACD;;;wBAEY;AACX,aAAO,KAAK42B,OAAL,CAAa3xB,KAApB;AACD;;;wBAEa;AACZ,UAAI,KAAKA,KAAL,YAAsB8mB,iBAA1B,EAAmC;AACjC,eAAO,KAAK9mB,KAAL,CAAWgrB,QAAX,EAAP;AACD,OAFD,MAEO;AACL,eAAO,IAAP;AACD;AACF;;;;EAzB6C3M,wB;;;;;;;;;;;;;;;;;;;;;ACHhD;;AACA;;;;;;;;;;;;IAEawB,c,WAAAA,c;;;AAEX,0BAAayR,KAAb,EAAoBnU,KAApB,EAA2B;AAAA;;AAAA,gIACnB,IADmB,EACb,IADa,EACP,KADO;;AAEzB,UAAKmU,KAAL,GAAaA,KAAb;AACA,UAAKnU,KAAL,GAAaA,KAAb;AAHyB;AAI1B;;;;gCAsBY;AACX,aAAO,KAAKA,KAAL,CAAWyF,UAAX,CAAsB,KAAK0O,KAA3B,CAAP;AACD;;;8BAEU/R,M,EAAQ;AACjB,WAAKpC,KAAL,CAAW4F,WAAX,CAAuB,KAAKuO,KAA5B,EAAmC/R,MAAnC;AACD;;;iCAEa2R,O,EAAS;AACrB,aAAO,KAAK/T,KAAL,CAAWyF,UAAX,CAAsB,KAAK0O,KAA3B,EAAkC50B,YAAlC,CAA+Cw0B,OAA/C,CAAP;AACD;;;wBA9BY;AACX,aAAO,IAAP;AACD;;;wBAEW;AACV,aAAO,KAAK/T,KAAL,CAAWyF,UAAX,CAAsB,KAAK0O,KAA3B,EAAkCv2B,IAAzC;AACD;;;wBAEY;AACX,aAAO,KAAKoiB,KAAL,CAAWyF,UAAX,CAAsB,KAAK0O,KAA3B,EAAkCtxB,KAAzC;AACD;;;wBAEa;AACZ,UAAI,KAAKA,KAAL,YAAsB8mB,iBAA1B,EAAmC;AACjC,eAAO,KAAK9mB,KAAL,CAAWgrB,QAAX,EAAP;AACD,OAFD,MAEO;AACL,eAAO,IAAP;AACD;AACF;;;;EA1BiC3M,wB;;;;;;;;;;;;;;;;;;;;;ACHpC;;;;AACA;;;;;;;;;;;;AAEA,IAAMwT,eAAe,IAArB;;IAEMC,uB;;;AAEJ,qCAAe;AAAA;;AAAA,6IACP,aADO,EACQD,YADR;AAEd;;;;sCAEkB;AACjB,UAAME,WAAWC,kBAAO,KAAKC,OAAL,EAAP,CAAjB;AACA,UAAGF,aAAa,IAAb,IAAqBA,aAAa3b,SAArC,EAAgD;AAC9C,eAAO4b,kBAAO,KAAKE,cAAL,EAAP,EAA8B34B,KAArC;AACD,OAFD,MAEO;AACL,eAAOw4B,SAASx4B,KAAhB;AACD;AACF;;;0CAEsB;AACrB,UAAMw4B,WAAWC,kBAAO,KAAKC,OAAL,EAAP,CAAjB;AACA,UAAGF,aAAa,IAAb,IAAqBA,aAAa3b,SAArC,EAAgD;AAC9C,eAAO4b,kBAAO,KAAKE,cAAL,EAAP,EAA8Bz4B,SAArC;AACD,OAFD,MAEO;AACL,eAAOs4B,SAASt4B,SAAhB;AACD;AACF;;;yCAEqB;AACpB,UAAMs4B,WAAWC,kBAAO,KAAKC,OAAL,EAAP,CAAjB;AACA,UAAGF,aAAa,IAAb,IAAqBA,aAAa3b,SAArC,EAAgD;AAC9C,eAAO4b,kBAAO,KAAKE,cAAL,EAAP,EAA8Bv4B,QAArC;AACD;AACD,aAAOo4B,SAASp4B,QAAhB;AACD;;;;EA9BmCw4B,mBAAUxvB,e;;AAiCzC,IAAMA,4CAAmBhF,OAAOC,MAAP,CAAc,IAAIk0B,uBAAJ,EAAd,CAAzB,C;;;;;;;;;;;;;;;;;;;ACtCP;;AACA;;;;AACA;;;;;;AAEO,IAAMh0B,8CAAmBH,OAAOC,MAAP,CAAc,IAAIu0B,mBAAUr0B,gBAAd,CAA+B6E,gCAA/B,EAAgDyvB,cAAhD,EAAuD,IAAvD,CAAd,CAAzB,C;;;;;;;;;;;;;;;;;;;;;;ICJDC,Q;AACJ,oBAAY91B,IAAZ,EAAkBkU,GAAlB,EAAuB;AAAA;;AACrB,SAAKlU,IAAL,GAAYA,IAAZ;AACA,SAAKkU,GAAL,GAAWA,GAAX;AACD;;;;iCAMaygB,O,EAAS;AACrB,UAAGA,mBAAmBmB,QAAtB,EAAgC;AAC9B,eAAO,KAAK91B,IAAL,KAAc20B,QAAQ30B,IAAtB,IAA8B,KAAKkU,GAAL,KAAaygB,QAAQzgB,GAA1D;AACD;AACD,aAAO,KAAP;AACD;;;wBATY;AACX,aAAO,KAAKlU,IAAZ;AACD;;;;;;AAUH;;;AACO,IAAM+1B,gCAAY30B,OAAOC,MAAP,CAAc;AACrCsE,WAAS,IAAImwB,QAAJ,CAAa,SAAb,EAAwB,CAAxB,CAD4B;AAErClwB,QAAM,IAAIkwB,QAAJ,CAAa,MAAb,EAAqB,CAArB,CAF+B;AAGrCjwB,UAAQ,IAAIiwB,QAAJ,CAAa,MAAb,EAAqB,CAArB,CAH6B;AAIrCtxB,WAAS,IAAIsxB,QAAJ,CAAa,SAAb,EAAwB,CAAxB,CAJ4B;AAKrCz1B,QAAM,IAAIy1B,QAAJ,CAAa,MAAb,EAAqB,CAArB,CAL+B;AAMrChwB,aAAW,IAAIgwB,QAAJ,CAAa,WAAb,EAA0B,CAA1B;AAN0B,CAAd,CAAlB,C;;;;;;;;;;;;;;;;;;;;;ACnBP;;;;;;;;IAEaxqB,Y,WAAAA,Y;;;AAEX,wBAAa9M,IAAb,EAAmB6M,UAAnB,EAA+B;AAAA;;AAAA,4HACvB,IADuB;;AAE7B,UAAK+b,SAAL,GAAiB5oB,IAAjB;AACA,UAAK6M,UAAL,GAAkBA,UAAlB;AAH6B;AAI9B;;;;iCAEaspB,O,EAAS;AACrB,UAAGA,mBAAmBrpB,YAAtB,EAAmC;AACjC,YAAG,KAAKD,UAAL,KAAoBspB,QAAQtpB,UAA/B,EAA2C;AACzC,iBAAO,KAAP;AACD;AACD,eAAO,KAAK+b,SAAL,CAAejnB,YAAf,CAA4Bw0B,QAAQvN,SAApC,CAAP;AACD;AACD,aAAO,KAAP;AACD;;;iCAEa;AAAA;;AACZ,UAAMvkB,OAAO,KAAKukB,SAAL,CAAed,UAAf,EAAb;AACAzjB,WAAKiT,OAAL,CAAa,aAAK;AAChBhS,UAAEuX,GAAF,GAAQ,OAAKhQ,UAAb;AACD,OAFD;AAGA,aAAOxI,IAAP;AACD;;;8BAEU8xB,O,EAAS;AAClB,UAAGA,mBAAmBrpB,YAAtB,EAAoC;AAClC,eAAO,KAAKD,UAAL,GAAkBspB,QAAQtpB,UAA1B,IAAwC,KAAK+b,SAAL,CAAejnB,YAAf,CAA4Bw0B,QAAQvN,SAApC,CAA/C;AACD,OAFD,MAEO;AACL,eAAO,KAAKA,SAAL,CAAejnB,YAAf,CAA4Bw0B,OAA5B,CAAP;AACD;AACF;;;;EAhC+BqB,U;;;;;;;;;;;;;;;;;;;;;ACFlC;;;;;;;;IAEaxc,S,WAAAA,S;;;AAEX,qBAAa3F,KAAb,EAAoB;AAAA;;AAAA,sHACZ,IADY;;AAElB,UAAKA,KAAL,GAAaA,KAAb;AAFkB;AAGnB;;;;iCAUa;AACZ,UAAIhR,OAAO,EAAX;AACA,WAAK,IAAI6W,IAAI,CAAb,EAAgBA,IAAI,KAAK7F,KAAL,CAAW9P,MAA/B,EAAuC2V,GAAvC,EAA4C;AAC1C,YAAMuc,IAAI,KAAKpiB,KAAL,CAAW6F,CAAX,CAAV;AACA7W,eAAOA,KAAKoE,MAAL,CAAYgvB,EAAE3P,UAAF,EAAZ,CAAP;AACD;AACD,aAAOzjB,IAAP;AACD;;;iCAEa8xB,O,EAAS;AACrB,UAAGA,mBAAmBqB,UAAtB,EAA4B;AAC1B,aAAK,IAAItc,IAAI,CAAb,EAAgBA,IAAI,KAAK7F,KAAL,CAAW9P,MAA/B,EAAuC2V,GAAvC,EAA4C;AAC1C,cAAMuc,IAAI,KAAKpiB,KAAL,CAAW6F,CAAX,CAAV;AACA,cAAIuc,EAAE91B,YAAF,CAAew0B,OAAf,CAAJ,EAA6B;AAC3B,mBAAO,IAAP;AACD;AACF;AACF;AACD,aAAO,KAAP;AACD;;;wBA3BY;AACX,aAAO,IAAP;AACD;;;wBAEU;AACT,aAAO,IAAP;AACD;;;;EAb4BqB,U;;;;;;;;;;;;;;;;;QCEfE,K,GAAAA,K;QAIA7yB,Q,GAAAA,Q;QAaA8yB,M,GAAAA,M;QAIAC,M,GAAAA,M;QAwBAC,e,GAAAA,e;;AAjDhB;;AACA;;AACA;;;;;;AAEO,SAASH,KAAT,CAAgBzJ,GAAhB,EAAqB;AAC1B,SAAO,IAAIlC,iBAAJ,CAAYkC,GAAZ,CAAP;AACD;;AAEM,SAASppB,QAAT,CAAmBopB,GAAnB,EAAwB;AAC7B,MAAIhpB,QAAQgpB,IAAI/W,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAZ;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,IAAd,EAAoB,EAApB,CAAR;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,MAAd,EAAsB,IAAtB,CAAR;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,MAAd,EAAsB,IAAtB,CAAR;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,MAAd,EAAsB,IAAtB,CAAR;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,MAAd,EAAsB,IAAtB,CAAR;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,OAAd,EAAuB,IAAvB,CAAR;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,OAAd,EAAuB,IAAvB,CAAR;AACAjS,UAAQA,MAAMiS,OAAN,CAAc,OAAd,EAAuB,IAAvB,CAAR;AACA,SAAOjS,KAAP;AACD;;AAEM,SAAS0yB,MAAT,CAAiB1yB,KAAjB,EAAwB;AAC7B,SAAO,IAAI8mB,iBAAJ,CAAY9mB,KAAZ,CAAP;AACD;;AAEM,SAAS2yB,MAAT,CAAiB3J,GAAjB,EAAsB;AAC3B,MAAMxgB,MAAM,MAAMwgB,GAAN,GAAY,GAAxB;AACA,MAAMzvB,QAAQoJ,iCAAgBC,eAAhB,EAAd;AACA,MAAMiwB,WAAW,IAAIt5B,KAAJ,CAAU,IAAV,CAAjB;AACA,MAAIs5B,SAASvtB,YAAT,CAAsB/L,MAAM6V,OAA5B,MAAyC5G,GAA7C,EAAkD;AAChD,WAAO,IAAP;AACD,GAFD,MAEO,IAAIqqB,SAASvtB,YAAT,CAAsB/L,MAAM8V,QAA5B,MAA0C7G,GAA9C,EAAmD;AACxD,WAAO,KAAP;AACD,GAFM,MAEA;AACL;AACA,UAAM,IAAIhL,KAAJ,CAAUwrB,MAAM,qBAAhB,CAAN;AACD;AACF;;AAED,SAAS8J,mBAAT,CAA8BC,IAA9B,EAAoC;AAClC,MAAMx5B,QAAQoJ,iCAAgBC,eAAhB,EAAd;AACA,MAAMiwB,WAAW,IAAIt5B,KAAJ,CAAU,IAAV,CAAjB;AACA,MAAIw5B,IAAJ,EAAU;AACR,WAAOF,SAASvtB,YAAT,CAAsB/L,MAAM6V,OAA5B,CAAP;AACD,GAFD,MAEO;AACL,WAAOyjB,SAASvtB,YAAT,CAAsB/L,MAAM8V,QAA5B,CAAP;AACD;AACF;;AAEM,SAASujB,eAAT,CAAyBrT,MAAzB,EAAiCxkB,IAAjC,EAAuC;AAC5C,UAAQA,KAAK0V,GAAb;AACE,SAAK9T,aAAMuF,OAAN,CAAcuO,GAAnB;AACE,aAAO8O,OAAO3f,QAAP,EAAP;AACF,SAAKjD,aAAMwF,IAAN,CAAWsO,GAAhB;AAAqB;AACnB,YAAI8O,OAAOqH,EAAP,MAAe,CAAnB,EAAsB;AACpB,iBAAOrH,OAAOwH,OAAP,CAAe,CAAf,CAAP;AACD,SAFD,MAEO;AACL,iBAAOxH,OAAOyL,QAAP,EAAP;AACD;AACF;AACD,SAAKruB,aAAMoE,OAAN,CAAc0P,GAAnB;AACE,aAAOqiB,oBAAoBvT,MAApB,CAAP;AACF;AACE,aAAOA,MAAP;AAbJ;AAeD,C;;;;;;;;;;;;;;;;;;;;;;ICjEYgT,I,WAAAA,I;AAEX,gBAAYS,QAAZ,EAAsB;AAAA;;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;;;iCAUa;AACZ,aAAO,CAAC,EAACj4B,MAAM,KAAKi4B,QAAL,CAAcz2B,IAArB,EAA2Bqb,KAAK,CAAhC,EAAD,CAAP;AACD;;;iCAEasZ,O,EAAS;AACrB,UAAGA,mBAAmBqB,IAAtB,EAA4B;AAC1B,eAAO,KAAKS,QAAL,CAAct2B,YAAd,CAA2Bw0B,QAAQ8B,QAAnC,CAAP;AACD;AACD,aAAO,KAAP;AACD;;;wBAjBY;AACX,aAAO,KAAKA,QAAL,CAAchzB,KAArB;AACD;;;wBAEU;AACT,aAAO,KAAKgzB,QAAL,CAAcviB,GAArB;AACD;;;;;;;;;;;;;;;;;;;;;;;ACZH;;AACA;;AACA;;AAEA,IAAMvO,UAAU,IAAIqwB,UAAJ,CAASD,qBAAUpwB,OAAnB,CAAhB;AACA,IAAMC,OAAO,IAAIowB,UAAJ,CAASD,qBAAUnwB,IAAnB,CAAb;AACA,IAAMC,SAAS,IAAImwB,UAAJ,CAASD,qBAAUlwB,MAAnB,CAAf;AACA,IAAMrB,UAAU,IAAIwxB,UAAJ,CAASD,qBAAUvxB,OAAnB,CAAhB;AACA,IAAMnE,OAAO,IAAI21B,UAAJ,CAASD,qBAAU11B,IAAnB,CAAb;AACA,IAAMyF,YAAY,IAAIkwB,UAAJ,CAASD,qBAAUjwB,SAAnB,CAAlB;AACA,IAAMulB,MAAM,IAAI7R,oBAAJ,CAAc,CAAC7T,OAAD,EAAUC,IAAV,EAAgBC,MAAhB,EAAwBrB,OAAxB,CAAd,CAAZ;;AAEO,IAAMpE,wBAAQgB,OAAOC,MAAP,CAAc;AACjCsE,WAASA,OADwB;AAEjCC,QAAMA,IAF2B;AAGjCC,UAAQA,MAHyB;AAIjCrB,WAASA,OAJwB;AAKjCnE,QAAMA,IAL2B;AAMjCyF,aAAWA,SANsB;AAOjCulB,OAAKA;AAP4B,CAAd,CAAd,C;;;;;;;;;;;;;;;;;;;;;;ICZDqL,Y;AAEJ,0BAAe;AAAA;;AACb,SAAKxW,WAAL,GAAmB,IAAnB;AACA,SAAKoK,aAAL,GAAqB,CAArB;AACA,SAAKqM,mBAAL,GAA2B,CAA3B;AACD;;;;8BAEUC,I,EAAM;AACf,WAAK,IAAMzc,GAAX,IAAkByc,IAAlB,EAAwB;AACtB,YAAG,KAAKxc,cAAL,CAAoBD,GAApB,CAAH,EAA4B;AAC1B,eAAKA,GAAL,IAAYyc,KAAKzc,GAAL,CAAZ;AACD;AACF;AACF;;;;;;AAEH,IAAI0c,SAAS,IAAIH,YAAJ,EAAb;AACO,IAAMzW,0BAAS4W,MAAf,C;;;;;;;;;;;;;;ACjBP;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIC,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;AACA,IAAIE,QAAQ,mBAAAD,CAAQ,+CAAR,EAAmBC,KAA/B;AACA,IAAIC,WAAW,mBAAAF,CAAQ,2DAAR,EAAyBE,QAAxC;;AAEA;AACA,SAASC,WAAT,GAAuB;AACtB,QAAO,IAAP;AACA;;AAED,SAASC,mBAAT,CAA6BC,WAA7B,EAA0C;;AAEzCF,aAAYG,IAAZ,CAAiB,IAAjB;AACA;AACA,MAAKD,WAAL,GAAmBA,WAAnB;;AAEA;AACA;AACA;AACA,MAAKE,MAAL,GAAc,EAAd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK7vB,KAAL,GAAa,CAAC,CAAd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAKM,UAAL,GAAkB,KAAlB;AACA,QAAO,IAAP;AACA;;AAEDovB,oBAAoBI,SAApB,GAAgCn2B,OAAOo2B,MAAP,CAAcN,YAAYK,SAA1B,CAAhC;AACAJ,oBAAoBI,SAApB,CAA8BE,WAA9B,GAA4CN,mBAA5C;;AAEAA,oBAAoBI,SAApB,CAA8BG,IAA9B,GAAqC,YAAW;AAC/C,QAAO,CAAP;AACA,CAFD;;AAIAP,oBAAoBI,SAApB,CAA8BI,OAA9B,GAAwC,UAASC,MAAT,EAAiB;AACxD;AACA,CAFD;;AAIAT,oBAAoBI,SAApB,CAA8BM,KAA9B,GAAsC,YAAW;AAChD,MAAKC,IAAL,CAAU,CAAV;AACA,CAFD;;AAIAX,oBAAoBI,SAApB,CAA8BO,IAA9B,GAAqC,UAASrwB,KAAT,EAAgB;AACpD,MAAKswB,QAAL;AACA,MAAKtwB,KAAL,GAAa,KAAKuwB,eAAL,CAAqBvwB,KAArB,CAAb;AACA,CAHD;;AAKA0vB,oBAAoBI,SAApB,CAA8B3d,GAA9B,GAAoC,UAASnS,KAAT,EAAgB;AACnD,MAAKswB,QAAL;AACA,QAAO,KAAKT,MAAL,CAAY7vB,KAAZ,CAAP;AACA,CAHD;;AAKA0vB,oBAAoBI,SAApB,CAA8BU,OAA9B,GAAwC,YAAW;AAClD,KAAIC,eAAe,KAAnB;AACA,KAAI,KAAKzwB,KAAL,IAAc,CAAlB,EAAqB;AACpB,MAAI,KAAKM,UAAT,EAAqB;AACpB;AACA;AACAmwB,kBAAe,KAAKzwB,KAAL,GAAa,KAAK6vB,MAAL,CAAYvzB,MAAZ,GAAqB,CAAjD;AACA,GAJD,MAIO;AACN;AACAm0B,kBAAe,KAAKzwB,KAAL,GAAa,KAAK6vB,MAAL,CAAYvzB,MAAxC;AACA;AACD,EATD,MASO;AACN;AACAm0B,iBAAe,KAAf;AACA;AACD,KAAI,CAACA,YAAD,IAAiB,KAAKC,EAAL,CAAQ,CAAR,MAAerB,MAAMsB,GAA1C,EAA+C;AAC9C,QAAM,oBAAN;AACA;AACD,KAAI,KAAKC,IAAL,CAAU,KAAK5wB,KAAL,GAAa,CAAvB,CAAJ,EAA+B;AAC9B,OAAKA,KAAL,GAAa,KAAKuwB,eAAL,CAAqB,KAAKvwB,KAAL,GAAa,CAAlC,CAAb;AACA;AACD,CArBD;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA0vB,oBAAoBI,SAApB,CAA8Bc,IAA9B,GAAqC,UAAS3e,CAAT,EAAY;AAChD,KAAIuX,IAAIvX,IAAI,KAAK4d,MAAL,CAAYvzB,MAAhB,GAAyB,CAAjC,CADgD,CACZ;AACpC,KAAIktB,IAAI,CAAR,EAAW;AACV,MAAIqH,UAAU,KAAKC,KAAL,CAAWtH,CAAX,CAAd;AACA,SAAOqH,WAAWrH,CAAlB;AACA;AACD,QAAO,IAAP;AACA,CAPD;;AASA;AACA;AACA;AACA;AACAkG,oBAAoBI,SAApB,CAA8BgB,KAA9B,GAAsC,UAAStH,CAAT,EAAY;AACjD,KAAI,KAAKlpB,UAAT,EAAqB;AACpB,SAAO,CAAP;AACA;AACD,MAAK,IAAI2R,IAAI,CAAb,EAAgBA,IAAIuX,CAApB,EAAuBvX,GAAvB,EAA4B;AAC3B,MAAIuc,IAAI,KAAKmB,WAAL,CAAiB7mB,SAAjB,EAAR;AACA0lB,IAAEjhB,UAAF,GAAe,KAAKsiB,MAAL,CAAYvzB,MAA3B;AACA,OAAKuzB,MAAL,CAAY1vB,IAAZ,CAAiBquB,CAAjB;AACA,MAAIA,EAAEz3B,IAAF,KAAWs4B,MAAMsB,GAArB,EAA0B;AACzB,QAAKrwB,UAAL,GAAkB,IAAlB;AACA,UAAO2R,IAAI,CAAX;AACA;AACD;AACD,QAAOuX,CAAP;AACA,CAdD;;AAgBA;AACAkG,oBAAoBI,SAApB,CAA8BiB,SAA9B,GAA0C,UAASpI,KAAT,EAAgBqI,IAAhB,EAAsB5kB,KAAtB,EAA6B;AACtE,KAAIA,UAAUgG,SAAd,EAAyB;AACxBhG,UAAQ,IAAR;AACA;AACD,KAAIuc,QAAQ,CAAR,IAAaqI,OAAO,CAAxB,EAA2B;AAC1B,SAAO,IAAP;AACA;AACD,MAAKV,QAAL;AACA,KAAIW,SAAS,EAAb;AACA,KAAID,QAAQ,KAAKnB,MAAL,CAAYvzB,MAAxB,EAAgC;AAC/B00B,SAAO,KAAKnB,MAAL,CAAYvzB,MAAZ,GAAqB,CAA5B;AACA;AACD,MAAK,IAAI2V,IAAI0W,KAAb,EAAoB1W,IAAI+e,IAAxB,EAA8B/e,GAA9B,EAAmC;AAClC,MAAIuc,IAAI,KAAKqB,MAAL,CAAY5d,CAAZ,CAAR;AACA,MAAIuc,EAAEz3B,IAAF,KAAWs4B,MAAMsB,GAArB,EAA0B;AACzB;AACA;AACD,MAAIvkB,UAAU,IAAV,IAAkBA,MAAM8kB,QAAN,CAAe1C,EAAEz3B,IAAjB,CAAtB,EAA8C;AAC7Ck6B,UAAO9wB,IAAP,CAAYquB,CAAZ;AACA;AACD;AACD,QAAOyC,MAAP;AACA,CAtBD;;AAwBAvB,oBAAoBI,SAApB,CAA8BY,EAA9B,GAAmC,UAASze,CAAT,EAAY;AAC9C,QAAO,KAAKhS,EAAL,CAAQgS,CAAR,EAAWlb,IAAlB;AACA,CAFD;;AAIA24B,oBAAoBI,SAApB,CAA8BqB,EAA9B,GAAmC,UAASC,CAAT,EAAY;AAC9C,KAAI,KAAKpxB,KAAL,GAAaoxB,CAAb,GAAiB,CAArB,EAAwB;AACvB,SAAO,IAAP;AACA;AACD,QAAO,KAAKvB,MAAL,CAAY,KAAK7vB,KAAL,GAAaoxB,CAAzB,CAAP;AACA,CALD;;AAOA1B,oBAAoBI,SAApB,CAA8B7vB,EAA9B,GAAmC,UAASmxB,CAAT,EAAY;AAC9C,MAAKd,QAAL;AACA,KAAIc,MAAM,CAAV,EAAa;AACZ,SAAO,IAAP;AACA;AACD,KAAIA,IAAI,CAAR,EAAW;AACV,SAAO,KAAKD,EAAL,CAAQ,CAACC,CAAT,CAAP;AACA;AACD,KAAInf,IAAI,KAAKjS,KAAL,GAAaoxB,CAAb,GAAiB,CAAzB;AACA,MAAKR,IAAL,CAAU3e,CAAV;AACA,KAAIA,KAAK,KAAK4d,MAAL,CAAYvzB,MAArB,EAA6B;AAAE;AAC9B;AACA,SAAO,KAAKuzB,MAAL,CAAY,KAAKA,MAAL,CAAYvzB,MAAZ,GAAqB,CAAjC,CAAP;AACA;AACD,QAAO,KAAKuzB,MAAL,CAAY5d,CAAZ,CAAP;AACA,CAfD;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAyd,oBAAoBI,SAApB,CAA8BS,eAA9B,GAAgD,UAASte,CAAT,EAAY;AAC3D,QAAOA,CAAP;AACA,CAFD;;AAIAyd,oBAAoBI,SAApB,CAA8BQ,QAA9B,GAAyC,YAAW;AACnD,KAAI,KAAKtwB,KAAL,KAAe,CAAC,CAApB,EAAuB;AACtB,OAAKqxB,KAAL;AACA;AACD,CAJD;;AAMA3B,oBAAoBI,SAApB,CAA8BuB,KAA9B,GAAsC,YAAW;AAChD,MAAKT,IAAL,CAAU,CAAV;AACA,MAAK5wB,KAAL,GAAa,KAAKuwB,eAAL,CAAqB,CAArB,CAAb;AACA,CAHD;;AAKA;AACAb,oBAAoBI,SAApB,CAA8BwB,cAA9B,GAA+C,UAAS3B,WAAT,EAAsB;AACpE,MAAKA,WAAL,GAAmBA,WAAnB;AACA,MAAKE,MAAL,GAAc,EAAd;AACA,MAAK7vB,KAAL,GAAa,CAAC,CAAd;AACA,MAAKM,UAAL,GAAkB,KAAlB;AACA,CALD;;AAQA;AACA;AACA;AACA;AACAovB,oBAAoBI,SAApB,CAA8ByB,kBAA9B,GAAmD,UAAStf,CAAT,EAAYuf,OAAZ,EAAqB;AACvE,MAAKZ,IAAL,CAAU3e,CAAV;AACA,KAAIA,KAAK,KAAK4d,MAAL,CAAYvzB,MAArB,EAA6B;AAC5B,SAAO,CAAC,CAAR;AACA;AACD,KAAIpC,QAAQ,KAAK21B,MAAL,CAAY5d,CAAZ,CAAZ;AACA,QAAO/X,MAAMs3B,OAAN,KAAkB,KAAKA,OAA9B,EAAuC;AACtC,MAAIt3B,MAAMnD,IAAN,KAAes4B,MAAMsB,GAAzB,EAA8B;AAC7B,UAAO,CAAC,CAAR;AACA;AACD1e,OAAK,CAAL;AACA,OAAK2e,IAAL,CAAU3e,CAAV;AACA/X,UAAQ,KAAK21B,MAAL,CAAY5d,CAAZ,CAAR;AACA;AACD,QAAOA,CAAP;AACA,CAfD;;AAiBA;AACA;AACA;AACAyd,oBAAoBI,SAApB,CAA8B2B,sBAA9B,GAAuD,UAASxf,CAAT,EAAYuf,OAAZ,EAAqB;AAC3E,QAAOvf,KAAK,CAAL,IAAU,KAAK4d,MAAL,CAAY5d,CAAZ,EAAeuf,OAAf,KAA2BA,OAA5C,EAAqD;AACpDvf,OAAK,CAAL;AACA;AACD,QAAOA,CAAP;AACA,CALD;;AAOA;AACA;AACA;AACAyd,oBAAoBI,SAApB,CAA8B4B,sBAA9B,GAAuD,UAASnkB,UAAT,EACrDikB,OADqD,EAC5C;AACV,KAAIA,YAAYpf,SAAhB,EAA2B;AAC1Bof,YAAU,CAAC,CAAX;AACA;AACD,MAAKlB,QAAL;AACA,KAAI/iB,aAAa,CAAb,IAAkBA,cAAc,KAAKsiB,MAAL,CAAYvzB,MAAhD,EAAwD;AACvD,QAAM,KAAKiR,UAAL,GAAkB,aAAlB,GAAkC,KAAKsiB,MAAL,CAAYvzB,MAA9C,GAAuD,CAA7D;AACA;AACD,KAAIq1B,gBAAgB,KAAKJ,kBAAL,CAAwBhkB,aAAa,CAArC,EAAwCgiB,MAAMqC,qBAA9C,CAApB;AACA,KAAIC,QAAQtkB,aAAa,CAAzB;AACA;AACA,KAAIukB,KAAKH,kBAAkB,CAAC,CAAnB,GAAuB,KAAK9B,MAAL,CAAYvzB,MAAZ,GAAqB,CAA5C,GAAgDq1B,aAAzD;AACA,QAAO,KAAKI,gBAAL,CAAsBF,KAAtB,EAA6BC,EAA7B,EAAiCN,OAAjC,CAAP;AACA,CAdD;;AAgBA;AACA;AACA;AACA9B,oBAAoBI,SAApB,CAA8BkC,qBAA9B,GAAsD,UAASzkB,UAAT,EACpDikB,OADoD,EAC3C;AACV,KAAIA,YAAYpf,SAAhB,EAA2B;AAC1Bof,YAAU,CAAC,CAAX;AACA;AACD,MAAKlB,QAAL;AACA,KAAI/iB,aAAa,CAAb,IAAkBA,cAAc,KAAKsiB,MAAL,CAAYvzB,MAAhD,EAAwD;AACvD,QAAM,KAAKiR,UAAL,GAAkB,aAAlB,GAAkC,KAAKsiB,MAAL,CAAYvzB,MAA9C,GAAuD,CAA7D;AACA;AACD,KAAI21B,gBAAgB,KAAKR,sBAAL,CAA4BlkB,aAAa,CAAzC,EAA4CgiB,MAAMqC,qBAAlD,CAApB;AACA,KAAIK,kBAAkB1kB,aAAa,CAAnC,EAAsC;AACrC,SAAO,IAAP;AACA;AACD;AACA,KAAIskB,QAAQI,gBAAgB,CAA5B;AACA,KAAIH,KAAKvkB,aAAa,CAAtB;AACA,QAAO,KAAKwkB,gBAAL,CAAsBF,KAAtB,EAA6BC,EAA7B,EAAiCN,OAAjC,CAAP;AACA,CAjBD;;AAmBA9B,oBAAoBI,SAApB,CAA8BiC,gBAA9B,GAAiD,UAASj0B,IAAT,EAAeC,KAAf,EAAsByzB,OAAtB,EAA+B;AAC/E,KAAIU,SAAS,EAAb;AACA,MAAK,IAAIjgB,IAAInU,IAAb,EAAmBmU,IAAIlU,QAAQ,CAA/B,EAAkCkU,GAAlC,EAAuC;AACtC,MAAIuc,IAAI,KAAKqB,MAAL,CAAY5d,CAAZ,CAAR;AACA,MAAIuf,YAAY,CAAC,CAAjB,EAAoB;AACnB,OAAIhD,EAAEgD,OAAF,KAAcjC,MAAMqC,qBAAxB,EAA+C;AAC9CM,WAAO/xB,IAAP,CAAYquB,CAAZ;AACA;AACD,GAJD,MAIO,IAAIA,EAAEgD,OAAF,KAAcA,OAAlB,EAA2B;AACjCU,UAAO/xB,IAAP,CAAYquB,CAAZ;AACA;AACD;AACD,KAAI0D,OAAO51B,MAAP,KAAkB,CAAtB,EAAyB;AACxB,SAAO,IAAP;AACA;AACD,QAAO41B,MAAP;AACA,CAhBD;;AAkBAxC,oBAAoBI,SAApB,CAA8BqC,aAA9B,GAA8C,YAAW;AACxD,QAAO,KAAKxC,WAAL,CAAiBwC,aAAjB,EAAP;AACA,CAFD;;AAIA;AACAzC,oBAAoBI,SAApB,CAA8BsC,OAA9B,GAAwC,UAASC,QAAT,EAAmB;AAC1D,MAAK/B,QAAL;AACA,MAAKtxB,IAAL;AACA,KAAIqzB,aAAajgB,SAAb,IAA0BigB,aAAa,IAA3C,EAAiD;AAChDA,aAAW,IAAI7C,QAAJ,CAAa,CAAb,EAAgB,KAAKK,MAAL,CAAYvzB,MAAZ,GAAqB,CAArC,CAAX;AACA;AACD,KAAIqsB,QAAQ0J,SAAS1J,KAArB;AACA,KAAIA,iBAAiB0G,KAArB,EAA4B;AAC3B1G,UAAQA,MAAMpb,UAAd;AACA;AACD,KAAIyjB,OAAOqB,SAASrB,IAApB;AACA,KAAIA,gBAAgB3B,KAApB,EAA2B;AAC1B2B,SAAOA,KAAKzjB,UAAZ;AACA;AACD,KAAIob,UAAU,IAAV,IAAkBqI,SAAS,IAA3B,IAAmCrI,QAAQ,CAA3C,IAAgDqI,OAAO,CAA3D,EAA8D;AAC7D,SAAO,EAAP;AACA;AACD,KAAIA,QAAQ,KAAKnB,MAAL,CAAYvzB,MAAxB,EAAgC;AAC/B00B,SAAO,KAAKnB,MAAL,CAAYvzB,MAAZ,GAAqB,CAA5B;AACA;AACD,KAAIg2B,IAAI,EAAR;AACA,MAAK,IAAIrgB,IAAI0W,KAAb,EAAoB1W,IAAI+e,OAAO,CAA/B,EAAkC/e,GAAlC,EAAuC;AACtC,MAAIuc,IAAI,KAAKqB,MAAL,CAAY5d,CAAZ,CAAR;AACA,MAAIuc,EAAEz3B,IAAF,KAAWs4B,MAAMsB,GAArB,EAA0B;AACzB;AACA;AACD2B,MAAIA,IAAI9D,EAAEp0B,IAAV;AACA;AACD,QAAOk4B,CAAP;AACA,CA7BD;;AA+BA;AACA5C,oBAAoBI,SAApB,CAA8B9wB,IAA9B,GAAqC,YAAW;AAC/C,MAAKsxB,QAAL;AACA,QAAO,KAAKQ,KAAL,CAAW,IAAX,MAAqB,IAA5B,EAAkC;AACjC;AACA;AACD,CALD;;AAOAz7B,QAAQq6B,mBAAR,GAA8BA,mBAA9B,C;;;;;;;;;;;;;;ACtXA;AACA;;;;AAIA;;AAEA,IAAI7wB,cAAc,mBAAAywB,CAAQ,2DAAR,EAAyBzwB,WAA3C;;AAEA,IAAI0zB,WAAW,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOC,aAAP,KAAyB,WAAzE;AACA,IAAIC,KAAKH,WAAW,mBAAAjD,CAAQ,0DAAR,CAAX,GAA2B,IAApC;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAIqD,cAAc;AAChB;AACAC,cAAY,oBAAS5N,GAAT,EAAc;AACxB,WAAO,IAAInmB,WAAJ,CAAgBmmB,GAAhB,EAAqB,IAArB,CAAP;AACD,GAJe;;AAMhB;AACA;AACA;AACA;AACA;AACA;AACA6N,YAAU,kBAASC,IAAT,EAAeC,QAAf,EAAyBC,MAAzB,EAAiCC,OAAjC,EAA0C;AAClD,QAAIC,SAASC,YAAb;AACAD,WAAOE,MAAP,GAAgB,UAASvlB,CAAT,EAAY;AAC1B,UAAIwlB,KAAK,IAAIx0B,WAAJ,CAAgBgP,EAAEylB,MAAF,CAASzgB,MAAzB,EAAiC,IAAjC,CAAT;AACAmgB,aAAOK,EAAP;AACD,KAHD;AAIAH,WAAOK,OAAP,GAAiBN,OAAjB;AACAC,WAAOM,UAAP,CAAkBV,IAAlB,EAAwBC,QAAxB;AACD,GApBe;;AAsBhB;AACA;AACA;AACAU,cAAY,oBAASC,MAAT,EAAiBX,QAAjB,EAA2B;AACrC,WAAO,IAAIl0B,WAAJ,CAAgB60B,OAAO93B,QAAP,CAAgBm3B,QAAhB,CAAhB,EAA2C,IAA3C,CAAP;AACD,GA3Be;;AA6BhB;AACA;AACA;AACA;AACA;AACAY,YAAU,kBAASC,IAAT,EAAeb,QAAf,EAAyB5kB,QAAzB,EAAmC;AAC3CukB,OAAGmB,QAAH,CAAYD,IAAZ,EAAkBb,QAAlB,EAA4B,UAASe,GAAT,EAAc33B,IAAd,EAAoB;AAC9C,UAAIk3B,KAAK,IAAT;AACA,UAAIl3B,SAAS,IAAb,EAAmB;AACjBk3B,aAAK,IAAIx0B,WAAJ,CAAgB1C,IAAhB,EAAsB,IAAtB,CAAL;AACD;AACDgS,eAAS2lB,GAAT,EAAcT,EAAd;AACD,KAND;AAOD,GA1Ce;;AA4ChB;AACA;AACA;AACAU,gBAAc,sBAASH,IAAT,EAAeb,QAAf,EAAyB;AACrC,QAAI52B,OAAOu2B,GAAGsB,YAAH,CAAgBJ,IAAhB,EAAsBb,QAAtB,CAAX;AACA,WAAO,IAAIl0B,WAAJ,CAAgB1C,IAAhB,EAAsB,IAAtB,CAAP;AACD;AAlDe,CAAlB;;AAqDA9G,QAAQs9B,WAAR,GAAsBA,WAAtB,C;;;;;;;;;;;;;;ACtEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;AAEA,IAAIsB,cAAc,mBAAA3E,CAAQ,+CAAR,EAAmB2E,WAArC;;AAEA,SAASC,YAAT,GAAwB;AACvB,WAAO,IAAP;AACA;;AAED,SAASC,kBAAT,CAA4BC,QAA5B,EAAsC;AACrCF,iBAAatE,IAAb,CAAkB,IAAlB;AACG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAKwE,QAAL,GAAgBA,aAAWhiB,SAAX,GAAuB,KAAvB,GAA+BgiB,QAA/C;AACH,WAAO,IAAP;AACA;;AAEDD,mBAAmBrE,SAAnB,GAA+Bn2B,OAAOo2B,MAAP,CAAcmE,aAAapE,SAA3B,CAA/B;AACAqE,mBAAmBrE,SAAnB,CAA6BE,WAA7B,GAA2CmE,kBAA3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,mBAAmBE,OAAnB,GAA6B,IAAIF,kBAAJ,EAA7B;;AAEAA,mBAAmBrE,SAAnB,CAA6BC,MAA7B,GAAsC,UAASuE,MAAT,EAAiBv9B,IAAjB,EAAuBqD,IAAvB,EAA6Bo3B,OAA7B,EAAsC7I,KAAtC,EAA6CqI,IAA7C,EAAmDr6B,IAAnD,EAAyDC,MAAzD,EAAiE;AACnG,QAAI43B,IAAI,IAAIyF,WAAJ,CAAgBK,MAAhB,EAAwBv9B,IAAxB,EAA8By6B,OAA9B,EAAuC7I,KAAvC,EAA8CqI,IAA9C,CAAR;AACAxC,MAAE73B,IAAF,GAASA,IAAT;AACA63B,MAAE53B,MAAF,GAAWA,MAAX;AACA,QAAIwD,SAAQ,IAAZ,EAAkB;AACdo0B,UAAEp0B,IAAF,GAASA,IAAT;AACH,KAFD,MAEO,IAAI,KAAKg6B,QAAL,IAAiBE,OAAO,CAAP,MAAa,IAAlC,EAAwC;AAC3C9F,UAAEp0B,IAAF,GAASk6B,OAAO,CAAP,EAAUlC,OAAV,CAAkBzJ,KAAlB,EAAwBqI,IAAxB,CAAT;AACH;AACD,WAAOxC,CAAP;AACH,CAVD;;AAYA2F,mBAAmBrE,SAAnB,CAA6ByE,UAA7B,GAA0C,UAASx9B,IAAT,EAAeqD,IAAf,EAAqB;AAC3D,QAAIo0B,IAAI,IAAIyF,WAAJ,CAAgB,IAAhB,EAAsBl9B,IAAtB,CAAR;AACAy3B,MAAEp0B,IAAF,GAASA,IAAT;AACA,WAAOo0B,CAAP;AACH,CAJD;;AAMAn5B,QAAQ8+B,kBAAR,GAA6BA,kBAA7B,C;;;;;;;;;;;;;;ACpEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI9E,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;AACA,IAAIK,sBAAsB,mBAAAJ,CAAQ,2EAAR,EAAiCI,mBAA3D;;AAEA,SAAS3wB,iBAAT,CAA2BxJ,KAA3B,EAAkCi8B,OAAlC,EAA2C;AAC1C9B,wBAAoBE,IAApB,CAAyB,IAAzB,EAA+Br6B,KAA/B;AACG,SAAKi8B,OAAL,GAAeA,YAAUpf,SAAV,GAAsBid,MAAMmF,eAA5B,GAA8ChD,OAA7D;AACA,WAAO,IAAP;AACH;;AAEDzyB,kBAAkB+wB,SAAlB,GAA8Bn2B,OAAOo2B,MAAP,CAAcL,oBAAoBI,SAAlC,CAA9B;AACA/wB,kBAAkB+wB,SAAlB,CAA4BE,WAA5B,GAA0CjxB,iBAA1C;;AAEAA,kBAAkB+wB,SAAlB,CAA4BS,eAA5B,GAA8C,UAASte,CAAT,EAAY;AACtD,WAAO,KAAKsf,kBAAL,CAAwBtf,CAAxB,EAA2B,KAAKuf,OAAhC,CAAP;AACH,CAFD;;AAIAzyB,kBAAkB+wB,SAAlB,CAA4BqB,EAA5B,GAAiC,UAASC,CAAT,EAAY;AACzC,QAAIA,MAAI,CAAJ,IAAS,KAAKpxB,KAAL,GAAWoxB,CAAX,GAAa,CAA1B,EAA6B;AACzB,eAAO,IAAP;AACH;AACD,QAAInf,IAAI,KAAKjS,KAAb;AACA,QAAIwpB,IAAI,CAAR;AACA;AACA,WAAOA,KAAK4H,CAAZ,EAAe;AACX;AACAnf,YAAI,KAAKwf,sBAAL,CAA4Bxf,IAAI,CAAhC,EAAmC,KAAKuf,OAAxC,CAAJ;AACAhI,aAAK,CAAL;AACH;AACD,QAAIvX,IAAI,CAAR,EAAW;AACP,eAAO,IAAP;AACH;AACD,WAAO,KAAK4d,MAAL,CAAY5d,CAAZ,CAAP;AACH,CAhBD;;AAkBAlT,kBAAkB+wB,SAAlB,CAA4B7vB,EAA5B,GAAiC,UAASmxB,CAAT,EAAY;AACzC,SAAKd,QAAL;AACA,QAAIc,MAAM,CAAV,EAAa;AACT,eAAO,IAAP;AACH;AACD,QAAIA,IAAI,CAAR,EAAW;AACP,eAAO,KAAKD,EAAL,CAAQ,CAACC,CAAT,CAAP;AACH;AACD,QAAInf,IAAI,KAAKjS,KAAb;AACA,QAAIwpB,IAAI,CAAR,CATyC,CAS9B;AACX;AACA,WAAOA,IAAI4H,CAAX,EAAc;AACV;AACA,YAAI,KAAKR,IAAL,CAAU3e,IAAI,CAAd,CAAJ,EAAsB;AAClBA,gBAAI,KAAKsf,kBAAL,CAAwBtf,IAAI,CAA5B,EAA+B,KAAKuf,OAApC,CAAJ;AACH;AACDhI,aAAK,CAAL;AACH;AACD,WAAO,KAAKqG,MAAL,CAAY5d,CAAZ,CAAP;AACH,CAnBD;;AAqBA;AACAlT,kBAAkB+wB,SAAlB,CAA4B2E,0BAA5B,GAAyD,YAAW;AAChE,QAAIjL,IAAI,CAAR;AACA,SAAKxqB,IAAL;AACA,SAAK,IAAIiT,IAAG,CAAZ,EAAeA,IAAG,KAAK4d,MAAL,CAAYvzB,MAA9B,EAAqC2V,GAArC,EAA0C;AACtC,YAAIuc,IAAI,KAAKqB,MAAL,CAAY5d,CAAZ,CAAR;AACA,YAAIuc,EAAEgD,OAAF,KAAY,KAAKA,OAArB,EAA8B;AAC1BhI,iBAAK,CAAL;AACH;AACD,YAAIgF,EAAEz3B,IAAF,KAASs4B,MAAMsB,GAAnB,EAAwB;AACpB;AACH;AACJ;AACD,WAAOnH,CAAP;AACH,CAbD;;AAeAn0B,QAAQ0J,iBAAR,GAA4BA,iBAA5B,C;;;;;;;;;;;;;;ACvGA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA,IAAIF,cAAc,mBAAAywB,CAAQ,2DAAR,EAAyBzwB,WAA3C;AACA,IAAI0zB,WAAW,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOC,aAAP,KAAyB,WAAzE;AACA,IAAIC,KAAKH,WAAW,mBAAAjD,CAAQ,0DAAR,CAAX,GAA2B,IAApC;;AAEA,SAASoF,UAAT,CAAoBC,QAApB,EAA8BC,yBAA9B,EAAyD;AACxD,KAAIz4B,OAAOu2B,GAAGsB,YAAH,CAAgBW,QAAhB,EAA0B,MAA1B,CAAX;AACA91B,aAAY+wB,IAAZ,CAAiB,IAAjB,EAAuBzzB,IAAvB,EAA6By4B,yBAA7B;AACA,MAAKD,QAAL,GAAgBA,QAAhB;AACA,QAAO,IAAP;AACA;;AAEDD,WAAW5E,SAAX,GAAuBn2B,OAAOo2B,MAAP,CAAclxB,YAAYixB,SAA1B,CAAvB;AACA4E,WAAW5E,SAAX,CAAqBE,WAArB,GAAmC0E,UAAnC;;AAEAr/B,QAAQq/B,UAAR,GAAqBA,UAArB,C;;;;;;;;;;;;;;ACzBA;AACA;;;;AAIA;;AAEA,IAAIrF,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;AACA,mBAAAC,CAAQ,+EAAR;AACA,mBAAAA,CAAQ,mFAAR;;AAEA;;AAEA,SAASuF,WAAT,CAAqBC,MAArB,EAA6BF,yBAA7B,EAAwD;AACvDE,QAAOC,MAAP,GAAgB,CAAhB;AACAD,QAAO34B,IAAP,GAAc,EAAd;AACA,KAAI24B,OAAOF,yBAAX,EAAsC;AACrC,OAAK,IAAI3iB,IAAI,CAAb,EAAgBA,IAAI6iB,OAAOE,OAAP,CAAe14B,MAAnC,GAA6C;AAC5C,OAAI24B,YAAYH,OAAOE,OAAP,CAAeE,WAAf,CAA2BjjB,CAA3B,CAAhB;AACA6iB,UAAO34B,IAAP,CAAYgE,IAAZ,CAAiB80B,SAAjB;AACAhjB,QAAKgjB,aAAa,MAAb,GAAsB,CAAtB,GAA0B,CAA/B;AACA;AACD,EAND,MAMO;AACN,OAAK,IAAIhjB,IAAI,CAAb,EAAgBA,IAAI6iB,OAAOE,OAAP,CAAe14B,MAAnC,EAA2C2V,GAA3C,EAAgD;AAC/C,OAAIkjB,WAAWL,OAAOE,OAAP,CAAeI,UAAf,CAA0BnjB,CAA1B,CAAf;AACA6iB,UAAO34B,IAAP,CAAYgE,IAAZ,CAAiBg1B,QAAjB;AACA;AACD;AACDL,QAAOO,KAAP,GAAeP,OAAO34B,IAAP,CAAYG,MAA3B;AACA;;AAED;AACA;AACA;AACA;AACA;AACA,SAASuC,WAAT,CAAqB1C,IAArB,EAA2By4B,yBAA3B,EAAsD;AACrD,MAAKr8B,IAAL,GAAY,SAAZ;AACA,MAAKy8B,OAAL,GAAe74B,IAAf;AACA,MAAKy4B,yBAAL,GAAiCA,6BAA6B,KAA9D;AACAC,aAAY,IAAZ;AACA,QAAO,IAAP;AACA;;AAEDl7B,OAAO27B,cAAP,CAAsBz2B,YAAYixB,SAAlC,EAA6C,OAA7C,EAAsD;AACrD3d,MAAM,eAAW;AAChB,SAAO,KAAK4iB,MAAZ;AACA;AAHoD,CAAtD;;AAMAp7B,OAAO27B,cAAP,CAAsBz2B,YAAYixB,SAAlC,EAA6C,MAA7C,EAAqD;AACpD3d,MAAM,eAAW;AAChB,SAAO,KAAKkjB,KAAZ;AACA;AAHmD,CAArD;;AAMA;AACA;AACA;AACA;AACAx2B,YAAYixB,SAAZ,CAAsBM,KAAtB,GAA8B,YAAW;AACxC,MAAK2E,MAAL,GAAc,CAAd;AACA,CAFD;;AAIAl2B,YAAYixB,SAAZ,CAAsBU,OAAtB,GAAgC,YAAW;AAC1C,KAAI,KAAKuE,MAAL,IAAe,KAAKM,KAAxB,EAA+B;AAC9B;AACA,QAAO,oBAAP;AACA;AACD,MAAKN,MAAL,IAAe,CAAf;AACA,CAND;;AAQAl2B,YAAYixB,SAAZ,CAAsBY,EAAtB,GAA2B,UAAS6E,MAAT,EAAiB;AAC3C,KAAIA,WAAW,CAAf,EAAkB;AACjB,SAAO,CAAP,CADiB,CACP;AACV;AACD,KAAIA,SAAS,CAAb,EAAgB;AACfA,YAAU,CAAV,CADe,CACF;AACb;AACD,KAAIt2B,MAAM,KAAK81B,MAAL,GAAcQ,MAAd,GAAuB,CAAjC;AACA,KAAIt2B,MAAM,CAAN,IAAWA,OAAO,KAAKo2B,KAA3B,EAAkC;AAAE;AACnC,SAAOhG,MAAMsB,GAAb;AACA;AACD,QAAO,KAAKx0B,IAAL,CAAU8C,GAAV,CAAP;AACA,CAZD;;AAcAJ,YAAYixB,SAAZ,CAAsB7vB,EAAtB,GAA2B,UAASs1B,MAAT,EAAiB;AAC3C,QAAO,KAAK7E,EAAL,CAAQ6E,MAAR,CAAP;AACA,CAFD;;AAIA;AACA12B,YAAYixB,SAAZ,CAAsBG,IAAtB,GAA6B,YAAW;AACvC,QAAO,CAAC,CAAR;AACA,CAFD;;AAIApxB,YAAYixB,SAAZ,CAAsBI,OAAtB,GAAgC,UAASC,MAAT,EAAiB,CAChD,CADD;;AAGA;AACA;AACA;AACAtxB,YAAYixB,SAAZ,CAAsBO,IAAtB,GAA6B,UAAS0E,MAAT,EAAiB;AAC7C,KAAIA,UAAU,KAAKA,MAAnB,EAA2B;AAC1B,OAAKA,MAAL,GAAcA,MAAd,CAD0B,CACJ;AAChB;AACN;AACA;AACD;AACA,MAAKA,MAAL,GAAcxP,KAAK6C,GAAL,CAAS2M,MAAT,EAAiB,KAAKM,KAAtB,CAAd;AACA,CARD;;AAUAx2B,YAAYixB,SAAZ,CAAsBsC,OAAtB,GAAgC,UAASzJ,KAAT,EAAgBqI,IAAhB,EAAsB;AACrD,KAAIA,QAAQ,KAAKqE,KAAjB,EAAwB;AACvBrE,SAAO,KAAKqE,KAAL,GAAa,CAApB;AACA;AACD,KAAI1M,SAAS,KAAK0M,KAAlB,EAAyB;AACxB,SAAO,EAAP;AACA,EAFD,MAEO;AACN,MAAI,KAAKT,yBAAT,EAAoC;AACnC,OAAI/hB,SAAS,EAAb;AACA,QAAK,IAAIZ,IAAI0W,KAAb,EAAoB1W,KAAK+e,IAAzB,EAA+B/e,GAA/B,EAAoC;AACnCY,cAAU2iB,OAAOC,aAAP,CAAqB,KAAKt5B,IAAL,CAAU8V,CAAV,CAArB,CAAV;AACA;AACD,UAAOY,MAAP;AACA,GAND,MAMO;AACN,UAAO,KAAKmiB,OAAL,CAAaU,KAAb,CAAmB/M,KAAnB,EAA0BqI,OAAO,CAAjC,CAAP;AACA;AACD;AACD,CAjBD;;AAmBAnyB,YAAYixB,SAAZ,CAAsBl0B,QAAtB,GAAiC,YAAW;AAC3C,QAAO,KAAKo5B,OAAZ;AACA,CAFD;;AAIA3/B,QAAQwJ,WAAR,GAAsBA,WAAtB,C;;;;;;;;;;;;;;ACtIA;;;;;AAKA;;AAEA,IAAIwwB,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;;AAEA;AACA,SAASG,QAAT,CAAkB7G,KAAlB,EAAyBqI,IAAzB,EAA+B;AAC9B,MAAKrI,KAAL,GAAaA,KAAb;AACA,MAAKqI,IAAL,GAAYA,IAAZ;AACA,QAAO,IAAP;AACA;;AAEDxB,SAASM,SAAT,CAAmBoB,QAAnB,GAA8B,UAASyE,IAAT,EAAe;AAC5C,QAAOA,QAAQ,KAAKhN,KAAb,IAAsBgN,OAAO,KAAK3E,IAAzC;AACA,CAFD;;AAIAxB,SAASM,SAAT,CAAmBl0B,QAAnB,GAA8B,YAAW;AACxC,KAAG,KAAK+sB,KAAL,KAAa,KAAKqI,IAAL,GAAU,CAA1B,EAA6B;AAC5B,SAAO,KAAKrI,KAAL,CAAW/sB,QAAX,EAAP;AACA,EAFD,MAEO;AACN,SAAO,KAAK+sB,KAAL,CAAW/sB,QAAX,KAAwB,IAAxB,GAA+B,CAAC,KAAKo1B,IAAL,GAAU,CAAX,EAAcp1B,QAAd,EAAtC;AACA;AACD,CAND;;AASAjC,OAAO27B,cAAP,CAAsB9F,SAASM,SAA/B,EAA0C,QAA1C,EAAoD;AACnD3d,MAAM,eAAW;AAChB,SAAO,KAAK6e,IAAL,GAAY,KAAKrI,KAAxB;AACA;AAHkD,CAApD;;AAMA,SAASiN,WAAT,GAAuB;AACtB,MAAKC,SAAL,GAAiB,IAAjB;AACA,MAAK7V,QAAL,GAAgB,KAAhB;AACA;;AAED4V,YAAY9F,SAAZ,CAAsBgG,KAAtB,GAA8B,UAASz5B,CAAT,EAAY;AACzC,KAAI,KAAKw5B,SAAL,KAAmB,IAAnB,IAA2B,KAAKA,SAAL,CAAev5B,MAAf,KAAwB,CAAvD,EAA0D;AACzD,SAAO+yB,MAAM0G,YAAb;AACA,EAFD,MAEO;AACN,SAAO,KAAKF,SAAL,CAAe,CAAf,EAAkBlN,KAAzB;AACA;AACD,CAND;;AAQAiN,YAAY9F,SAAZ,CAAsBkG,MAAtB,GAA+B,UAAS35B,CAAT,EAAY;AAC1C,MAAK45B,WAAL,CAAiB,IAAIzG,QAAJ,CAAanzB,CAAb,EAAgBA,IAAI,CAApB,CAAjB;AACA,CAFD;;AAIAu5B,YAAY9F,SAAZ,CAAsBoG,QAAtB,GAAiC,UAASl4B,CAAT,EAAYm4B,CAAZ,EAAe;AAC/C,MAAKF,WAAL,CAAiB,IAAIzG,QAAJ,CAAaxxB,CAAb,EAAgBm4B,IAAI,CAApB,CAAjB;AACA,CAFD;;AAIAP,YAAY9F,SAAZ,CAAsBmG,WAAtB,GAAoC,UAAS55B,CAAT,EAAY;AAC/C,KAAI,KAAKw5B,SAAL,KAAmB,IAAvB,EAA6B;AAC5B,OAAKA,SAAL,GAAiB,EAAjB;AACA,OAAKA,SAAL,CAAe11B,IAAf,CAAoB9D,CAApB;AACA,EAHD,MAGO;AACN;AACA,OAAK,IAAI+0B,IAAI,CAAb,EAAgBA,IAAI,KAAKyE,SAAL,CAAev5B,MAAnC,EAA2C80B,GAA3C,EAAgD;AAC/C,OAAInf,IAAI,KAAK4jB,SAAL,CAAezE,CAAf,CAAR;AACA;AACA,OAAI/0B,EAAE20B,IAAF,GAAS/e,EAAE0W,KAAf,EAAsB;AACrB,SAAKkN,SAAL,CAAetnB,MAAf,CAAsB6iB,CAAtB,EAAyB,CAAzB,EAA4B/0B,CAA5B;AACA;AACA;AACD;AAJA,QAKK,IAAIA,EAAE20B,IAAF,KAAW/e,EAAE0W,KAAjB,EAAwB;AAC5B,UAAKkN,SAAL,CAAezE,CAAf,EAAkBzI,KAAlB,GAA0BtsB,EAAEssB,KAA5B;AACA;AACA;AACD;AAJK,SAKA,IAAItsB,EAAEssB,KAAF,IAAW1W,EAAE+e,IAAjB,EAAuB;AAC3B,WAAK6E,SAAL,CAAezE,CAAf,IAAoB,IAAI5B,QAAJ,CAAajK,KAAK6C,GAAL,CAASnW,EAAE0W,KAAX,EAAkBtsB,EAAEssB,KAApB,CAAb,EAAyCpD,KAAK0C,GAAL,CAAShW,EAAE+e,IAAX,EAAiB30B,EAAE20B,IAAnB,CAAzC,CAApB;AACA,WAAKz0B,MAAL,CAAY60B,CAAZ;AACA;AACA;AACD;AACD;AACA,OAAKyE,SAAL,CAAe11B,IAAf,CAAoB9D,CAApB;AACA;AACD,CA5BD;;AA8BAu5B,YAAY9F,SAAZ,CAAsBsG,MAAtB,GAA+B,UAASC,KAAT,EAAgB;AAC9C,KAAIA,MAAMR,SAAN,KAAoB,IAAxB,EAA8B;AAC7B,OAAK,IAAIzE,IAAI,CAAb,EAAgBA,IAAIiF,MAAMR,SAAN,CAAgBv5B,MAApC,EAA4C80B,GAA5C,EAAiD;AAChD,OAAInf,IAAIokB,MAAMR,SAAN,CAAgBzE,CAAhB,CAAR;AACA,QAAK6E,WAAL,CAAiB,IAAIzG,QAAJ,CAAavd,EAAE0W,KAAf,EAAsB1W,EAAE+e,IAAxB,CAAjB;AACA;AACD;AACD,QAAO,IAAP;AACA,CARD;;AAUA4E,YAAY9F,SAAZ,CAAsBvzB,MAAtB,GAA+B,UAAS60B,CAAT,EAAY;AAC1C;AACA,KAAIA,IAAI,KAAKkF,eAAL,GAAuB,CAA/B,EAAkC;AACjC,MAAIt4B,IAAI,KAAK63B,SAAL,CAAezE,CAAf,CAAR;AACA,MAAInzB,IAAI,KAAK43B,SAAL,CAAezE,IAAI,CAAnB,CAAR;AACA;AACA,MAAIpzB,EAAEgzB,IAAF,IAAU/yB,EAAE+yB,IAAhB,EAAsB;AACrB,QAAK6E,SAAL,CAAez1B,GAAf,CAAmBgxB,IAAI,CAAvB;AACA,QAAK70B,MAAL,CAAY60B,CAAZ;AACA,GAHD,MAGO,IAAIpzB,EAAEgzB,IAAF,IAAU/yB,EAAE0qB,KAAhB,EAAuB;AAC7B,QAAKkN,SAAL,CAAezE,CAAf,IAAoB,IAAI5B,QAAJ,CAAaxxB,EAAE2qB,KAAf,EAAsB1qB,EAAE+yB,IAAxB,CAApB;AACA,QAAK6E,SAAL,CAAez1B,GAAf,CAAmBgxB,IAAI,CAAvB;AACA;AACD;AACD,CAdD;;AAgBAwE,YAAY9F,SAAZ,CAAsByG,UAAtB,GAAmC,UAAS5N,KAAT,EAAgBqI,IAAhB,EAAsB;AACrD,KAAIne,SAAS,IAAI+iB,WAAJ,EAAb;AACA/iB,QAAOojB,WAAP,CAAmB,IAAIzG,QAAJ,CAAa7G,KAAb,EAAmBqI,OAAK,CAAxB,CAAnB;AACA,MAAI,IAAI/e,IAAE,CAAV,EAAaA,IAAE,KAAK4jB,SAAL,CAAev5B,MAA9B,EAAsC2V,GAAtC,EAA2C;AACvCY,SAAO2jB,WAAP,CAAmB,KAAKX,SAAL,CAAe5jB,CAAf,CAAnB;AACH;AACD,QAAOY,MAAP;AACH,CAPD;;AASA+iB,YAAY9F,SAAZ,CAAsBoB,QAAtB,GAAiC,UAASyE,IAAT,EAAe;AAC/C,KAAI,KAAKE,SAAL,KAAmB,IAAvB,EAA6B;AAC5B,SAAO,KAAP;AACA,EAFD,MAEO;AACN,OAAK,IAAIzE,IAAI,CAAb,EAAgBA,IAAI,KAAKyE,SAAL,CAAev5B,MAAnC,EAA2C80B,GAA3C,EAAgD;AAC/C,OAAG,KAAKyE,SAAL,CAAezE,CAAf,EAAkBF,QAAlB,CAA2ByE,IAA3B,CAAH,EAAqC;AACpC,WAAO,IAAP;AACA;AACD;AACD,SAAO,KAAP;AACA;AACD,CAXD;;AAaAh8B,OAAO27B,cAAP,CAAsBM,YAAY9F,SAAlC,EAA6C,QAA7C,EAAuD;AACtD3d,MAAM,eAAW;AAChB,MAAIskB,MAAM,CAAV;AACA,OAAKZ,SAAL,CAAez5B,GAAf,CAAmB,UAAS6V,CAAT,EAAY;AAACwkB,UAAOxkB,EAAE3V,MAAT;AAAiB,GAAjD;AACA,SAAOm6B,GAAP;AACA;AALqD,CAAvD;;AAQAb,YAAY9F,SAAZ,CAAsB0G,WAAtB,GAAoC,UAASn6B,CAAT,EAAY;AAC5C,KAAGA,EAAEssB,KAAF,KAAUtsB,EAAE20B,IAAF,GAAO,CAApB,EAAuB;AACnB,OAAK0F,SAAL,CAAer6B,EAAEssB,KAAjB;AACH,EAFD,MAEO,IAAI,KAAKkN,SAAL,KAAiB,IAArB,EAA2B;AAC9B,MAAIzE,IAAI,CAAR;AACA,OAAI,IAAI5H,IAAE,CAAV,EAAaA,IAAE,KAAKqM,SAAL,CAAev5B,MAA9B,EAAsCktB,GAAtC,EAA2C;AACvC,OAAIvX,IAAI,KAAK4jB,SAAL,CAAezE,CAAf,CAAR;AACA;AACA,OAAI/0B,EAAE20B,IAAF,IAAQ/e,EAAE0W,KAAd,EAAqB;AACjB;AACH;AACD;AAHA,QAIK,IAAGtsB,EAAEssB,KAAF,GAAQ1W,EAAE0W,KAAV,IAAmBtsB,EAAE20B,IAAF,GAAO/e,EAAE+e,IAA/B,EAAqC;AACtC,UAAK6E,SAAL,CAAezE,CAAf,IAAoB,IAAI5B,QAAJ,CAAavd,EAAE0W,KAAf,EAAsBtsB,EAAEssB,KAAxB,CAApB;AACA,SAAItc,IAAI,IAAImjB,QAAJ,CAAanzB,EAAE20B,IAAf,EAAqB/e,EAAE+e,IAAvB,CAAR;AACA,UAAK6E,SAAL,CAAetnB,MAAf,CAAsB6iB,CAAtB,EAAyB,CAAzB,EAA4B/kB,CAA5B;AACA;AACH;AACD;AANK,SAOA,IAAGhQ,EAAEssB,KAAF,IAAS1W,EAAE0W,KAAX,IAAoBtsB,EAAE20B,IAAF,IAAQ/e,EAAE+e,IAAjC,EAAuC;AACxC,WAAK6E,SAAL,CAAetnB,MAAf,CAAsB6iB,CAAtB,EAAyB,CAAzB;AACAA,UAAIA,IAAI,CAAR,CAFwC,CAE7B;AACd;AACD;AAJK,UAKA,IAAG/0B,EAAEssB,KAAF,GAAQ1W,EAAE+e,IAAb,EAAmB;AACpB,YAAK6E,SAAL,CAAezE,CAAf,IAAoB,IAAI5B,QAAJ,CAAavd,EAAE0W,KAAf,EAAsBtsB,EAAEssB,KAAxB,CAApB;AACH;AACD;AAHK,WAIA,IAAGtsB,EAAE20B,IAAF,GAAO/e,EAAE+e,IAAZ,EAAkB;AACnB,aAAK6E,SAAL,CAAezE,CAAf,IAAoB,IAAI5B,QAAJ,CAAanzB,EAAE20B,IAAf,EAAqB/e,EAAE+e,IAAvB,CAApB;AACH;AACDI,QAAK,CAAL;AACH;AACJ;AACJ,CAlCD;;AAoCAwE,YAAY9F,SAAZ,CAAsB4G,SAAtB,GAAkC,UAASr6B,CAAT,EAAY;AAC7C,KAAI,KAAKw5B,SAAL,KAAmB,IAAvB,EAA6B;AAC5B,OAAK,IAAIzE,IAAI,CAAb,EAAgBA,IAAI,KAAKyE,SAAL,CAAev5B,MAAnC,EAA2C80B,GAA3C,EAAgD;AAC/C,OAAInf,IAAI,KAAK4jB,SAAL,CAAezE,CAAf,CAAR;AACA;AACA,OAAI/0B,IAAI4V,EAAE0W,KAAV,EAAiB;AAChB;AACA;AACD;AAHA,QAIK,IAAItsB,MAAM4V,EAAE0W,KAAR,IAAiBtsB,MAAM4V,EAAE+e,IAAF,GAAS,CAApC,EAAuC;AAC3C,UAAK6E,SAAL,CAAetnB,MAAf,CAAsB6iB,CAAtB,EAAyB,CAAzB;AACA;AACA;AACD;AAJK,SAKA,IAAI/0B,MAAM4V,EAAE0W,KAAZ,EAAmB;AACvB,WAAKkN,SAAL,CAAezE,CAAf,IAAoB,IAAI5B,QAAJ,CAAavd,EAAE0W,KAAF,GAAU,CAAvB,EAA0B1W,EAAE+e,IAA5B,CAApB;AACA;AACA;AACD;AAJK,UAKA,IAAI30B,MAAM4V,EAAE+e,IAAF,GAAS,CAAnB,EAAsB;AAC1B,YAAK6E,SAAL,CAAezE,CAAf,IAAoB,IAAI5B,QAAJ,CAAavd,EAAE0W,KAAf,EAAsB1W,EAAE+e,IAAF,GAAS,CAA/B,CAApB;AACA;AACA;AACD;AAJK,WAKA,IAAI30B,IAAI4V,EAAE+e,IAAF,GAAS,CAAjB,EAAoB;AACxB,YAAI3kB,IAAI,IAAImjB,QAAJ,CAAavd,EAAE0W,KAAf,EAAsBtsB,CAAtB,CAAR;AACA4V,UAAE0W,KAAF,GAAUtsB,IAAI,CAAd;AACA,aAAKw5B,SAAL,CAAetnB,MAAf,CAAsB6iB,CAAtB,EAAyB,CAAzB,EAA4B/kB,CAA5B;AACA;AACA;AACD;AACD;AACD,CAhCD;;AAkCAupB,YAAY9F,SAAZ,CAAsBl0B,QAAtB,GAAiC,UAAS0F,YAAT,EAAuBq1B,aAAvB,EAAsCC,YAAtC,EAAoD;AACpFt1B,gBAAeA,gBAAgB,IAA/B;AACAq1B,iBAAgBA,iBAAiB,IAAjC;AACAC,gBAAeA,gBAAgB,KAA/B;AACA,KAAI,KAAKf,SAAL,KAAmB,IAAvB,EAA6B;AAC5B,SAAO,IAAP;AACA,EAFD,MAEO,IAAGv0B,iBAAe,IAAf,IAAuBq1B,kBAAgB,IAA1C,EAAgD;AACtD,SAAO,KAAKE,aAAL,CAAmBv1B,YAAnB,EAAiCq1B,aAAjC,CAAP;AACA,EAFM,MAEA,IAAGC,YAAH,EAAiB;AACvB,SAAO,KAAKE,YAAL,EAAP;AACA,EAFM,MAEA;AACN,SAAO,KAAKC,aAAL,EAAP;AACA;AACD,CAbD;;AAeAnB,YAAY9F,SAAZ,CAAsBgH,YAAtB,GAAqC,YAAW;AAC/C,KAAI3jB,QAAQ,EAAZ;AACA,MAAK,IAAIlB,IAAI,CAAb,EAAgBA,IAAI,KAAK4jB,SAAL,CAAev5B,MAAnC,EAA2C2V,GAA3C,EAAgD;AAC/C,MAAI5V,IAAI,KAAKw5B,SAAL,CAAe5jB,CAAf,CAAR;AACA,MAAG5V,EAAE20B,IAAF,KAAS30B,EAAEssB,KAAF,GAAQ,CAApB,EAAuB;AACtB,OAAKtsB,EAAEssB,KAAF,KAAU0G,MAAMsB,GAArB,EAA2B;AAC1Bxd,UAAMhT,IAAN,CAAW,OAAX;AACA,IAFD,MAEO;AACNgT,UAAMhT,IAAN,CAAW,MAAMq1B,OAAOwB,YAAP,CAAoB36B,EAAEssB,KAAtB,CAAN,GAAqC,GAAhD;AACA;AACD,GAND,MAMO;AACNxV,SAAMhT,IAAN,CAAW,MAAMq1B,OAAOwB,YAAP,CAAoB36B,EAAEssB,KAAtB,CAAN,GAAqC,MAArC,GAA8C6M,OAAOwB,YAAP,CAAoB36B,EAAE20B,IAAF,GAAO,CAA3B,CAA9C,GAA8E,GAAzF;AACA;AACD;AACD,KAAI7d,MAAM7W,MAAN,GAAe,CAAnB,EAAsB;AACrB,SAAO,MAAM6W,MAAM5Y,IAAN,CAAW,IAAX,CAAN,GAAyB,GAAhC;AACA,EAFD,MAEO;AACN,SAAO4Y,MAAM,CAAN,CAAP;AACA;AACD,CAnBD;;AAsBAyiB,YAAY9F,SAAZ,CAAsBiH,aAAtB,GAAsC,YAAW;AAChD,KAAI5jB,QAAQ,EAAZ;AACA,MAAK,IAAIlB,IAAI,CAAb,EAAgBA,IAAI,KAAK4jB,SAAL,CAAev5B,MAAnC,EAA2C2V,GAA3C,EAAgD;AAC/C,MAAI5V,IAAI,KAAKw5B,SAAL,CAAe5jB,CAAf,CAAR;AACA,MAAG5V,EAAE20B,IAAF,KAAS30B,EAAEssB,KAAF,GAAQ,CAApB,EAAuB;AACtB,OAAKtsB,EAAEssB,KAAF,KAAU0G,MAAMsB,GAArB,EAA2B;AAC1Bxd,UAAMhT,IAAN,CAAW,OAAX;AACA,IAFD,MAEO;AACNgT,UAAMhT,IAAN,CAAW9D,EAAEssB,KAAF,CAAQ/sB,QAAR,EAAX;AACA;AACD,GAND,MAMO;AACNuX,SAAMhT,IAAN,CAAW9D,EAAEssB,KAAF,CAAQ/sB,QAAR,KAAqB,IAArB,GAA4B,CAACS,EAAE20B,IAAF,GAAO,CAAR,EAAWp1B,QAAX,EAAvC;AACA;AACD;AACD,KAAIuX,MAAM7W,MAAN,GAAe,CAAnB,EAAsB;AACrB,SAAO,MAAM6W,MAAM5Y,IAAN,CAAW,IAAX,CAAN,GAAyB,GAAhC;AACA,EAFD,MAEO;AACN,SAAO4Y,MAAM,CAAN,CAAP;AACA;AACD,CAnBD;;AAsBAyiB,YAAY9F,SAAZ,CAAsB+G,aAAtB,GAAsC,UAASv1B,YAAT,EAAuBq1B,aAAvB,EAAsC;AAC3E,KAAIxjB,QAAQ,EAAZ;AACA,MAAK,IAAIlB,IAAI,CAAb,EAAgBA,IAAI,KAAK4jB,SAAL,CAAev5B,MAAnC,EAA2C2V,GAA3C,EAAgD;AAC/C,MAAI5V,IAAI,KAAKw5B,SAAL,CAAe5jB,CAAf,CAAR;AACA,OAAK,IAAIoa,IAAIhwB,EAAEssB,KAAf,EAAsB0D,IAAIhwB,EAAE20B,IAA5B,EAAkC3E,GAAlC,EAAuC;AACtClZ,SAAMhT,IAAN,CAAW,KAAK82B,WAAL,CAAiB31B,YAAjB,EAA+Bq1B,aAA/B,EAA8CtK,CAA9C,CAAX;AACA;AACD;AACD,KAAIlZ,MAAM7W,MAAN,GAAe,CAAnB,EAAsB;AACrB,SAAO,MAAM6W,MAAM5Y,IAAN,CAAW,IAAX,CAAN,GAAyB,GAAhC;AACA,EAFD,MAEO;AACN,SAAO4Y,MAAM,CAAN,CAAP;AACA;AACD,CAbD;;AAeAyiB,YAAY9F,SAAZ,CAAsBmH,WAAtB,GAAoC,UAAS31B,YAAT,EAAuBq1B,aAAvB,EAAsClmB,CAAtC,EAAyC;AAC5E,KAAIA,MAAM4e,MAAMsB,GAAhB,EAAqB;AACpB,SAAO,OAAP;AACA,EAFD,MAEO,IAAIlgB,MAAM4e,MAAM6H,OAAhB,EAAyB;AAC/B,SAAO,WAAP;AACA,EAFM,MAEA;AACN,SAAO51B,aAAamP,CAAb,KAAmBkmB,cAAclmB,CAAd,CAA1B;AACA;AACD,CARD;;AAUApb,QAAQm6B,QAAR,GAAmBA,QAAnB;AACAn6B,QAAQugC,WAAR,GAAsBA,WAAtB,C;;;;;;;;;;;;;;ACzSA;AACA;;;;AAIA;;AAEA,IAAIuB,MAAM,mBAAA7H,CAAQ,+CAAR,EAAmB6H,GAA7B;AACA,IAAIC,SAAS,mBAAA9H,CAAQ,+CAAR,EAAmB8H,MAAhC;AACA,IAAI/H,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;AACA,IAAIgI,YAAY,mBAAA/H,CAAQ,+DAAR,EAA2B+H,SAA3C;AACA,IAAI7H,WAAW,mBAAAF,CAAQ,2DAAR,EAAyBE,QAAxC;AACA,IAAIoG,cAAc,mBAAAtG,CAAQ,2DAAR,EAAyBsG,WAA3C;AACA,IAAI0B,gBAAgB,mBAAAhI,CAAQ,6DAAR,EAA0BgI,aAA9C;AACA,IAAIC,iBAAiB,mBAAAjI,CAAQ,iEAAR,EAA4BiI,cAAjD;AACA,IAAIC,mBAAmB,mBAAAlI,CAAQ,iEAAR,EAA4BkI,gBAAnD;AACA,IAAIC,qBAAqB,mBAAAnI,CAAQ,iEAAR,EAA4BmI,kBAArD;AACA,IAAIC,8BAA8B,mBAAApI,CAAQ,iEAAR,EAA4BoI,2BAA9D;;AAEA,IAAIC,KAAK,mBAAArI,CAAQ,uEAAR,CAAT;AACA,IAAIsI,mCAAmCD,GAAGC,gCAA1C;AACA,IAAIC,oBAAoBF,GAAGE,iBAA3B;AACA,IAAIC,6BAA6BH,GAAGG,0BAApC;;AAEA,SAASC,WAAT,CAAsBC,GAAtB,EAA2B;AACvB,SAAKA,GAAL,GAAWA,GAAX;AACH;;AAED;AACA;AACA;AACAD,YAAYE,QAAZ,GAAuB5I,MAAM0G,YAA7B;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAgC,YAAYjI,SAAZ,CAAsBoI,oBAAtB,GAA6C,UAAS5F,CAAT,EAAY;AACrD,QAAIA,MAAM,IAAV,EAAgB;AACZ,eAAO,IAAP;AACH;AACD,QAAI6F,QAAQ7F,EAAE8F,WAAF,CAAc97B,MAA1B;AACA,QAAI+7B,OAAO,EAAX;AACA,SAAI,IAAIC,MAAI,CAAZ,EAAeA,MAAKH,KAApB,EAA2BG,KAA3B,EAAkC;AAC9BD,aAAKC,GAAL,IAAY,IAAI1C,WAAJ,EAAZ;AACA,YAAI2C,WAAW,IAAIpB,GAAJ,EAAf;AACA,YAAIqB,eAAe,KAAnB,CAH8B,CAGJ;AAC1B,aAAKC,KAAL,CAAWnG,EAAEoG,UAAF,CAAaJ,GAAb,EAAkBhF,MAA7B,EAAqC,IAArC,EAA2CuE,kBAAkBc,KAA7D,EACMN,KAAKC,GAAL,CADN,EACiBC,QADjB,EAC2B,IAAInB,MAAJ,EAD3B,EACyCoB,YADzC,EACuD,KADvD;AAEA;AACA;AACA,YAAIH,KAAKC,GAAL,EAAUh8B,MAAV,KAAmB,CAAnB,IAAwB+7B,KAAKC,GAAL,EAAUpH,QAAV,CAAmB6G,YAAYE,QAA/B,CAA5B,EAAsE;AAClEI,iBAAKC,GAAL,IAAY,IAAZ;AACH;AACJ;AACD,WAAOD,IAAP;AACH,CAnBD;;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAN,YAAYjI,SAAZ,CAAsB8I,IAAtB,GAA6B,UAAStG,CAAT,EAAYuG,SAAZ,EAAuBC,GAAvB,EAA4B;AACrD,QAAI76B,IAAI,IAAI23B,WAAJ,EAAR;AACA,QAAI4C,eAAe,IAAnB,CAFqD,CAE5B;AAC5BM,UAAMA,OAAO,IAAb;AACG,QAAIC,cAAcD,QAAM,IAAN,GAAalB,iCAAiCtF,EAAE0F,GAAnC,EAAwCc,GAAxC,CAAb,GAA4D,IAA9E;AACA,SAAKL,KAAL,CAAWnG,CAAX,EAAcuG,SAAd,EAAyBE,WAAzB,EAAsC96B,CAAtC,EAAyC,IAAIk5B,GAAJ,EAAzC,EAAoD,IAAIC,MAAJ,EAApD,EAAkEoB,YAAlE,EAAgF,IAAhF;AACA,WAAOv6B,CAAP;AACH,CAPD;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA85B,YAAYjI,SAAZ,CAAsB2I,KAAtB,GAA8B,UAASnG,CAAT,EAAYuG,SAAZ,EAAwBC,GAAxB,EAA6BT,IAA7B,EAAmCE,QAAnC,EAA6CS,eAA7C,EAA8DR,YAA9D,EAA4ES,MAA5E,EAAoF;AAC9G,QAAIC,IAAI,IAAI7B,SAAJ,CAAc,EAAC8B,OAAM7G,CAAP,EAAUgG,KAAI,CAAd,EAAiBn+B,SAAS2+B,GAA1B,EAAd,EAA8C,IAA9C,CAAR;AACA,QAAIP,SAASrH,QAAT,CAAkBgI,CAAlB,CAAJ,EAA0B;AACtB;AACH;AACDX,aAASa,GAAT,CAAaF,CAAb;AACA,QAAI5G,MAAMuG,SAAV,EAAqB;AACjB,YAAIC,QAAO,IAAX,EAAiB;AACbT,iBAAKrC,MAAL,CAAY3G,MAAM6H,OAAlB;AACA;AACH,SAHD,MAGO,IAAI4B,IAAIO,OAAJ,MAAiBJ,MAArB,EAA6B;AAChCZ,iBAAKrC,MAAL,CAAY3G,MAAMsB,GAAlB;AACA;AACH;AACJ;AACD,QAAI2B,aAAagF,aAAjB,EAAiC;AAC7B,YAAIwB,QAAO,IAAX,EAAiB;AACbT,iBAAKrC,MAAL,CAAY3G,MAAM6H,OAAlB;AACA;AACH,SAHD,MAGO,IAAI4B,IAAIO,OAAJ,MAAiBJ,MAArB,EAA6B;AAChCZ,iBAAKrC,MAAL,CAAY3G,MAAMsB,GAAlB;AACA;AACH;AACD,YAAImI,QAAQjB,kBAAkBc,KAA9B,EAAqC;AACjC;AACA,iBAAI,IAAI1mB,IAAE,CAAV,EAAaA,IAAE6mB,IAAIx8B,MAAnB,EAA2B2V,GAA3B,EAAgC;AAC5B,oBAAIqnB,cAAc,KAAKtB,GAAL,CAASuB,MAAT,CAAgBT,IAAIU,cAAJ,CAAmBvnB,CAAnB,CAAhB,CAAlB;AACA,oBAAIwnB,UAAUT,gBAAgB9H,QAAhB,CAAyBoI,YAAYI,SAArC,CAAd;AACA,oBAAI;AACAV,oCAAgBW,MAAhB,CAAuBL,YAAYI,SAAnC;AACA,yBAAKjB,KAAL,CAAWa,WAAX,EAAwBT,SAAxB,EAAmCC,IAAIc,SAAJ,CAAc3nB,CAAd,CAAnC,EAAqDomB,IAArD,EAA2DE,QAA3D,EAAqES,eAArE,EAAsFR,YAAtF,EAAoGS,MAApG;AACH,iBAHD,SAGU;AACN,wBAAIQ,OAAJ,EAAa;AACTT,wCAAgBI,GAAhB,CAAoBE,YAAYI,SAAhC;AACH;AACJ;AACJ;AACD;AACH;AACJ;AACD,SAAI,IAAIrN,IAAE,CAAV,EAAaA,IAAEiG,EAAE8F,WAAF,CAAc97B,MAA7B,EAAqC+vB,GAArC,EAA0C;AACtC,YAAImC,IAAI8D,EAAE8F,WAAF,CAAc/L,CAAd,CAAR;AACA,YAAImC,EAAEwB,WAAF,KAAkBuH,cAAtB,EAAsC;AAClC,gBAAIyB,gBAAgB9H,QAAhB,CAAyB1C,EAAE8E,MAAF,CAASoG,SAAlC,CAAJ,EAAkD;AAC9C;AACH;AACD,gBAAIG,aAAa/B,2BAA2B/H,MAA3B,CAAkC+I,GAAlC,EAAuCtK,EAAEsL,WAAF,CAAcC,WAArD,CAAjB;AACA,gBAAI;AACAf,gCAAgBI,GAAhB,CAAoB5K,EAAE8E,MAAF,CAASoG,SAA7B;AACA,qBAAKjB,KAAL,CAAWjK,EAAE8E,MAAb,EAAqBuF,SAArB,EAAgCgB,UAAhC,EAA4CxB,IAA5C,EAAkDE,QAAlD,EAA4DS,eAA5D,EAA6ER,YAA7E,EAA2FS,MAA3F;AACH,aAHD,SAGU;AACND,gCAAgBW,MAAhB,CAAuBnL,EAAE8E,MAAF,CAASoG,SAAhC;AACH;AACJ,SAXD,MAWO,IAAIlL,aAAakJ,2BAAjB,EAA+C;AAClD,gBAAIc,YAAJ,EAAkB;AACd,qBAAKC,KAAL,CAAWjK,EAAE8E,MAAb,EAAqBuF,SAArB,EAAgCC,GAAhC,EAAqCT,IAArC,EAA2CE,QAA3C,EAAqDS,eAArD,EAAsER,YAAtE,EAAoFS,MAApF;AACH,aAFD,MAEO;AACHZ,qBAAKrC,MAAL,CAAY+B,YAAYE,QAAxB;AACH;AACJ,SANM,MAMA,IAAIzJ,EAAEwL,SAAN,EAAiB;AACpB,iBAAKvB,KAAL,CAAWjK,EAAE8E,MAAb,EAAqBuF,SAArB,EAAgCC,GAAhC,EAAqCT,IAArC,EAA2CE,QAA3C,EAAqDS,eAArD,EAAsER,YAAtE,EAAoFS,MAApF;AACH,SAFM,MAEA,IAAIzK,EAAEwB,WAAF,KAAkByH,kBAAtB,EAA0C;AAC7CY,iBAAKnC,QAAL,CAAe7G,MAAM4K,mBAArB,EAA0C,KAAKjC,GAAL,CAASkC,YAAnD;AACH,SAFM,MAEA;AACH,gBAAI1oB,MAAMgd,EAAE2L,KAAZ;AACA,gBAAI3oB,QAAQ,IAAZ,EAAkB;AACd,oBAAIgd,aAAagJ,gBAAjB,EAAmC;AAC/BhmB,0BAAMA,IAAI+kB,UAAJ,CAAelH,MAAM4K,mBAArB,EAA0C,KAAKjC,GAAL,CAASkC,YAAnD,CAAN;AACH;AACD7B,qBAAKjC,MAAL,CAAY5kB,GAAZ;AACH;AACJ;AACJ;AACJ,CAzED;;AA2EAnc,QAAQ0iC,WAAR,GAAsBA,WAAtB,C;;;;;;;;;;;;;;ACrMA;;;;AAIA;;AAEA;AACA;AACA;;AAEA,IAAI1I,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;AACA,IAAI+K,aAAa,mBAAA9K,CAAQ,yDAAR,EAAwB8K,UAAzC;AACA,IAAIjG,qBAAqB,mBAAA7E,CAAQ,yEAAR,EAAgC6E,kBAAzD;AACA,IAAIkG,uBAAwB,mBAAA/K,CAAQ,6DAAR,EAA0B+K,oBAAtD;AACA,IAAIC,4BAA4B,mBAAAhL,CAAQ,6DAAR,EAA0BgL,yBAA1D;;AAEA,SAASC,WAAT,GAAuB;AACtB,QAAO,IAAP;AACA;;AAED,SAAShL,KAAT,CAAe9wB,KAAf,EAAsB;AACrB27B,YAAWxK,IAAX,CAAgB,IAAhB;AACA,MAAK4K,MAAL,GAAc/7B,KAAd;AACA,MAAKg8B,QAAL,GAAgBtG,mBAAmBE,OAAnC;AACA,MAAKqG,uBAAL,GAA+B,CAAE,IAAF,EAAQj8B,KAAR,CAA/B;;AAEA,MAAKk8B,OAAL,GAAe,IAAf,CANqB,CAMA;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAKC,MAAL,GAAc,IAAd;;AAEA;AACA;AACA;AACA,MAAKC,oBAAL,GAA4B,CAAC,CAA7B;;AAEA;AACA,MAAKC,eAAL,GAAuB,CAAC,CAAxB;;AAEA;AACA,MAAKC,iBAAL,GAAyB,CAAC,CAA1B;;AAEA;AACA;AACA,MAAKC,OAAL,GAAe,KAAf;;AAEA;AACA,MAAKC,QAAL,GAAgB5L,MAAMmF,eAAtB;;AAEA;AACA,MAAK1H,KAAL,GAAauC,MAAM0G,YAAnB;;AAEA,MAAKmF,UAAL,GAAkB,EAAlB;AACA,MAAKC,KAAL,GAAa5L,MAAM6L,YAAnB;;AAEA;AACA;AACA;AACA,MAAKC,KAAL,GAAa,IAAb;;AAEA,QAAO,IAAP;AACA;;AAED9L,MAAMO,SAAN,GAAkBn2B,OAAOo2B,MAAP,CAAcqK,WAAWtK,SAAzB,CAAlB;AACAP,MAAMO,SAAN,CAAgBE,WAAhB,GAA8BT,KAA9B;;AAEAA,MAAM6L,YAAN,GAAqB,CAArB;AACA7L,MAAM+L,IAAN,GAAa,CAAC,CAAd;AACA/L,MAAMgM,IAAN,GAAa,CAAC,CAAd;;AAEAhM,MAAMqC,qBAAN,GAA8BvC,MAAMmF,eAApC;AACAjF,MAAMiM,MAAN,GAAenM,MAAMoM,cAArB;AACAlM,MAAMmM,cAAN,GAAuB,MAAvB;AACAnM,MAAMoM,cAAN,GAAuB,QAAvB;;AAEApM,MAAMO,SAAN,CAAgBM,KAAhB,GAAwB,YAAW;AAClC;AACA,KAAI,KAAKoK,MAAL,KAAgB,IAApB,EAA0B;AACzB,OAAKA,MAAL,CAAYnK,IAAZ,CAAiB,CAAjB,EADyB,CACJ;AACrB;AACD,MAAKuK,MAAL,GAAc,IAAd;AACA,MAAK9N,KAAL,GAAauC,MAAM0G,YAAnB;AACA,MAAKkF,QAAL,GAAgB5L,MAAMmF,eAAtB;AACA,MAAKqG,oBAAL,GAA4B,CAAC,CAA7B;AACA,MAAKE,iBAAL,GAAyB,CAAC,CAA1B;AACA,MAAKD,eAAL,GAAuB,CAAC,CAAxB;AACA,MAAKO,KAAL,GAAa,IAAb;;AAEA,MAAKL,OAAL,GAAe,KAAf;AACA,MAAKG,KAAL,GAAa5L,MAAM6L,YAAnB;AACA,MAAKF,UAAL,GAAkB,EAAlB;;AAEA,MAAKP,OAAL,CAAavK,KAAb;AACA,CAlBD;;AAoBA;AACAb,MAAMO,SAAN,CAAgBhnB,SAAhB,GAA4B,YAAW;AACtC,KAAI,KAAK0xB,MAAL,KAAgB,IAApB,EAA0B;AACzB,QAAM,6CAAN;AACA;;AAED;AACA;AACA,KAAIoB,mBAAmB,KAAKpB,MAAL,CAAYvK,IAAZ,EAAvB;AACA,KAAI;AACH,SAAO,IAAP,EAAa;AACZ,OAAI,KAAK+K,OAAT,EAAkB;AACjB,SAAKa,OAAL;AACA,WAAO,KAAKjB,MAAZ;AACA;AACD,QAAKA,MAAL,GAAc,IAAd;AACA,QAAKK,QAAL,GAAgB5L,MAAMmF,eAAtB;AACA,QAAKqG,oBAAL,GAA4B,KAAKL,MAAL,CAAYx6B,KAAxC;AACA,QAAK+6B,iBAAL,GAAyB,KAAKJ,OAAL,CAAa/jC,MAAtC;AACA,QAAKkkC,eAAL,GAAuB,KAAKH,OAAL,CAAahkC,IAApC;AACA,QAAK0kC,KAAL,GAAa,IAAb;AACA,OAAIS,gBAAgB,KAApB;AACA,UAAO,IAAP,EAAa;AACZ,SAAKhP,KAAL,GAAauC,MAAM0G,YAAnB;AACA,QAAIgG,QAAQxM,MAAMgM,IAAlB;AACA,QAAI;AACHQ,aAAQ,KAAKpB,OAAL,CAAar4B,KAAb,CAAmB,KAAKk4B,MAAxB,EAAgC,KAAKW,KAArC,CAAR;AACA,KAFD,CAEE,OAAOttB,CAAP,EAAU;AACR,SAAGA,aAAawsB,oBAAhB,EAAsC;AACtB,WAAK2B,eAAL,CAAqBnuB,CAArB,EADsB,CACG;AACzB,WAAKouB,OAAL,CAAapuB,CAAb;AACH,MAHb,MAGmB;AACHlI,cAAQC,GAAR,CAAYiI,EAAEquB,KAAd;AACA,YAAMruB,CAAN;AACH;AAChB;AACD,QAAI,KAAK2sB,MAAL,CAAY9J,EAAZ,CAAe,CAAf,MAAsBrB,MAAMsB,GAAhC,EAAqC;AACpC,UAAKqK,OAAL,GAAe,IAAf;AACA;AACD,QAAI,KAAKlO,KAAL,KAAeuC,MAAM0G,YAAzB,EAAuC;AACtC,UAAKjJ,KAAL,GAAaiP,KAAb;AACA;AACD,QAAI,KAAKjP,KAAL,KAAeyC,MAAMgM,IAAzB,EAA+B;AAC9BO,qBAAgB,IAAhB;AACA;AACA;AACD,QAAI,KAAKhP,KAAL,KAAeyC,MAAM+L,IAAzB,EAA+B;AAC9B;AACA;AACD;AACD,OAAIQ,aAAJ,EAAmB;AAClB;AACA;AACD,OAAI,KAAKlB,MAAL,KAAgB,IAApB,EAA0B;AACzB,SAAKuB,IAAL;AACA;AACD,UAAO,KAAKvB,MAAZ;AACA;AACD,EAjDD,SAiDU;AACT;AACA;AACA,OAAKJ,MAAL,CAAYtK,OAAZ,CAAoB0L,gBAApB;AACA;AACD,CA9DD;;AAgEA;AACA;AACA;AACA;AACA;AACA;AACArM,MAAMO,SAAN,CAAgBsM,IAAhB,GAAuB,YAAW;AACjC,MAAKtP,KAAL,GAAayC,MAAMgM,IAAnB;AACA,CAFD;;AAIAhM,MAAMO,SAAN,CAAgBuM,IAAhB,GAAuB,YAAW;AACjC,MAAKvP,KAAL,GAAayC,MAAM+L,IAAnB;AACA,CAFD;;AAIA/L,MAAMO,SAAN,CAAgB1W,IAAhB,GAAuB,UAASkjB,CAAT,EAAY;AAClC,MAAKnB,KAAL,GAAamB,CAAb;AACA,CAFD;;AAIA/M,MAAMO,SAAN,CAAgByM,QAAhB,GAA2B,UAASD,CAAT,EAAY;AACtC,KAAI,KAAK3B,OAAL,CAAa6B,KAAjB,EAAwB;AACvB72B,UAAQC,GAAR,CAAY,cAAc02B,CAA1B;AACA;AACD,MAAKpB,UAAL,CAAgB/6B,IAAhB,CAAqB,KAAKg7B,KAA1B;AACA,MAAK/hB,IAAL,CAAUkjB,CAAV;AACA,CAND;;AAQA/M,MAAMO,SAAN,CAAgB2M,OAAhB,GAA0B,YAAW;AACpC,KAAI,KAAKvB,UAAL,CAAgB5+B,MAAhB,KAA2B,CAA/B,EAAkC;AACjC,QAAM,aAAN;AACA;AACD,KAAI,KAAKq+B,OAAL,CAAa6B,KAAjB,EAAwB;AACvB72B,UAAQC,GAAR,CAAY,qBAAqB,KAAKs1B,UAAL,CAAgBxF,KAAhB,CAAsB,CAAtB,EAAyB,CAAC,CAA1B,CAAjC;AACA;AACD,MAAKtc,IAAL,CAAU,KAAK8hB,UAAL,CAAgB96B,GAAhB,EAAV;AACA,QAAO,KAAK+6B,KAAZ;AACA,CATD;;AAWA;AACAxhC,OAAO27B,cAAP,CAAsB/F,MAAMO,SAA5B,EAAuC,aAAvC,EAAsD;AACrD3d,MAAM,eAAW;AAChB,SAAO,KAAKqoB,MAAZ;AACA,EAHoD;AAIrDhpB,MAAM,aAAS/S,KAAT,EAAgB;AACrB,OAAK+7B,MAAL,GAAc,IAAd;AACA,OAAKE,uBAAL,GAA+B,CAAE,IAAF,EAAQ,KAAKF,MAAb,CAA/B;AACA,OAAKpK,KAAL;AACA,OAAKoK,MAAL,GAAc/7B,KAAd;AACA,OAAKi8B,uBAAL,GAA+B,CAAE,IAAF,EAAQ,KAAKF,MAAb,CAA/B;AACA;AAVoD,CAAtD;;AAaA7gC,OAAO27B,cAAP,CAAsB/F,MAAMO,SAA5B,EAAuC,YAAvC,EAAqD;AACpD3d,MAAM,SAASuqB,UAAT,GAAsB;AAC3B,SAAO,KAAKlC,MAAL,CAAYkC,UAAnB;AACA;AAHmD,CAArD;;AAMA;AACA;AACA;AACA;AACA;AACAnN,MAAMO,SAAN,CAAgB6M,SAAhB,GAA4B,UAASziC,KAAT,EAAgB;AAC3C,MAAK0gC,MAAL,GAAc1gC,KAAd;AACA,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACAq1B,MAAMO,SAAN,CAAgBqM,IAAhB,GAAuB,YAAW;AACjC,KAAI3N,IAAI,KAAKiM,QAAL,CAAc1K,MAAd,CAAqB,KAAK2K,uBAA1B,EAAmD,KAAK5N,KAAxD,EACN,KAAKuO,KADC,EACM,KAAKJ,QADX,EACqB,KAAKJ,oBAD1B,EACgD,KACnD+B,YADmD,KAClC,CAFd,EAEiB,KAAK9B,eAFtB,EAGN,KAAKC,iBAHC,CAAR;AAIA,MAAK4B,SAAL,CAAenO,CAAf;AACA,QAAOA,CAAP;AACA,CAPD;;AASAe,MAAMO,SAAN,CAAgB+L,OAAhB,GAA0B,YAAW;AACpC,KAAIgB,OAAO,KAAKjmC,MAAhB;AACA,KAAIkmC,OAAO,KAAKnmC,IAAhB;AACA,KAAIomC,MAAM,KAAKtC,QAAL,CAAc1K,MAAd,CAAqB,KAAK2K,uBAA1B,EAAmDrL,MAAMsB,GAAzD,EACR,IADQ,EACFtB,MAAMmF,eADJ,EACqB,KAAKgG,MAAL,CAAYx6B,KADjC,EAER,KAAKw6B,MAAL,CAAYx6B,KAAZ,GAAoB,CAFZ,EAEe88B,IAFf,EAEqBD,IAFrB,CAAV;AAGA,MAAKF,SAAL,CAAeI,GAAf;AACA,QAAOA,GAAP;AACA,CARD;;AAUApjC,OAAO27B,cAAP,CAAsB/F,MAAMO,SAA5B,EAAuC,MAAvC,EAA+C;AAC9C3d,MAAM,eAAW;AAChB,SAAO,KAAKpb,IAAZ;AACA,EAH6C;AAI9Cya,MAAM,aAASza,IAAT,EAAe;AACpB,OAAK+1B,KAAL,GAAa/1B,IAAb;AACA;AAN6C,CAA/C;;AASA4C,OAAO27B,cAAP,CAAsB/F,MAAMO,SAA5B,EAAuC,MAAvC,EAA+C;AAC9C3d,MAAM,eAAW;AAChB,SAAO,KAAKwoB,OAAL,CAAahkC,IAApB;AACA,EAH6C;AAI9C6a,MAAM,aAAS7a,IAAT,EAAe;AACpB,OAAKgkC,OAAL,CAAahkC,IAAb,GAAoBA,IAApB;AACA;AAN6C,CAA/C;;AASAgD,OAAO27B,cAAP,CAAsB/F,MAAMO,SAA5B,EAAuC,QAAvC,EAAiD;AAChD3d,MAAM,eAAW;AAChB,SAAO,KAAKwoB,OAAL,CAAa/jC,MAApB;AACA,EAH+C;AAIhD4a,MAAM,aAAS5a,MAAT,EAAiB;AACtB,OAAK+jC,OAAL,CAAa/jC,MAAb,GAAsBA,MAAtB;AACA;AAN+C,CAAjD;;AAUA;AACA24B,MAAMO,SAAN,CAAgB8M,YAAhB,GAA+B,YAAW;AACzC,QAAO,KAAKpC,MAAL,CAAYx6B,KAAnB;AACA,CAFD;;AAIA;AACA;AACArG,OAAO27B,cAAP,CAAsB/F,MAAMO,SAA5B,EAAuC,MAAvC,EAA+C;AAC9C3d,MAAM,eAAW;AAChB,MAAI,KAAKkpB,KAAL,KAAe,IAAnB,EAAyB;AACxB,UAAO,KAAKA,KAAZ;AACA,GAFD,MAEO;AACN,UAAO,KAAKV,OAAL,CAAavI,OAAb,CAAqB,KAAKoI,MAA1B,CAAP;AACA;AACD,EAP6C;AAQ9ChpB,MAAM,aAASpX,IAAT,EAAe;AACpB,OAAKihC,KAAL,GAAajhC,IAAb;AACA;AAV6C,CAA/C;AAYA;AACA;AACA;AACAm1B,MAAMO,SAAN,CAAgBkN,YAAhB,GAA+B,YAAW;AACzC,KAAInN,SAAS,EAAb;AACA,KAAIrB,IAAI,KAAK1lB,SAAL,EAAR;AACA,QAAO0lB,EAAEz3B,IAAF,KAAWs4B,MAAMsB,GAAxB,EAA6B;AAC5Bd,SAAO1vB,IAAP,CAAYquB,CAAZ;AACAA,MAAI,KAAK1lB,SAAL,EAAJ;AACA;AACD,QAAO+mB,MAAP;AACA,CARD;;AAUAN,MAAMO,SAAN,CAAgBkM,eAAhB,GAAkC,UAASnuB,CAAT,EAAY;AAC7C,KAAI8a,QAAQ,KAAKkS,oBAAjB;AACA,KAAI7J,OAAO,KAAKwJ,MAAL,CAAYx6B,KAAvB;AACA,KAAI5F,OAAO,KAAKogC,MAAL,CAAYpI,OAAZ,CAAoBzJ,KAApB,EAA2BqI,IAA3B,CAAX;AACA,KAAIz3B,MAAM,kCAAkC,KAAK0jC,eAAL,CAAqB7iC,IAArB,CAAlC,GAA+D,GAAzE;AACA,KAAI8iC,WAAW,KAAKC,wBAAL,EAAf;AACAD,UAASE,WAAT,CAAqB,IAArB,EAA2B,IAA3B,EAAiC,KAAKtC,eAAtC,EACE,KAAKC,iBADP,EAC0BxhC,GAD1B,EAC+BsU,CAD/B;AAEA,CARD;;AAUA0hB,MAAMO,SAAN,CAAgBmN,eAAhB,GAAkC,UAAS3K,CAAT,EAAY;AAC7C,KAAI+K,IAAI,EAAR;AACA,MAAK,IAAIprB,IAAI,CAAb,EAAgBA,IAAIqgB,EAAEh2B,MAAtB,EAA8B2V,GAA9B,EAAmC;AAClCorB,IAAEl9B,IAAF,CAAOmyB,EAAErgB,CAAF,CAAP;AACA;AACD,QAAOorB,EAAE9iC,IAAF,CAAO,EAAP,CAAP;AACA,CAND;;AAQAg1B,MAAMO,SAAN,CAAgBwN,sBAAhB,GAAyC,UAASpE,CAAT,EAAY;AACpD,KAAIA,EAAE9D,UAAF,CAAa,CAAb,MAAoB/F,MAAMsB,GAA9B,EAAmC;AAClC,SAAO,OAAP;AACA,EAFD,MAEO,IAAIuI,MAAM,IAAV,EAAgB;AACtB,SAAO,KAAP;AACA,EAFM,MAEA,IAAIA,MAAM,IAAV,EAAgB;AACtB,SAAO,KAAP;AACA,EAFM,MAEA,IAAIA,MAAM,IAAV,EAAgB;AACtB,SAAO,KAAP;AACA,EAFM,MAEA;AACN,SAAOA,CAAP;AACA;AACD,CAZD;;AAcA3J,MAAMO,SAAN,CAAgByN,mBAAhB,GAAsC,UAASrE,CAAT,EAAY;AACjD,QAAO,MAAM,KAAKoE,sBAAL,CAA4BpE,CAA5B,CAAN,GAAuC,GAA9C;AACA,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA3J,MAAMO,SAAN,CAAgBmM,OAAhB,GAA0B,UAASuB,EAAT,EAAa;AACtC,KAAI,KAAKhD,MAAL,CAAY9J,EAAZ,CAAe,CAAf,MAAsBrB,MAAMsB,GAAhC,EAAqC;AACpC,MAAI6M,cAAclD,yBAAlB,EAA6C;AAC5C;AACA,QAAKK,OAAL,CAAanK,OAAb,CAAqB,KAAKgK,MAA1B;AACA,GAHD,MAGO;AACN;AACA,QAAKA,MAAL,CAAYhK,OAAZ;AACA;AACD;AACD,CAVD;;AAYAn7B,QAAQk6B,KAAR,GAAgBA,KAAhB,C;;;;;;;;;;;;;;AClXA;;;;;AAKA,IAAIF,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;AACA,IAAIoO,oBAAoB,mBAAAnO,CAAQ,uDAAR,EAAuBmO,iBAA/C;AACA,IAAIrD,aAAa,mBAAA9K,CAAQ,yDAAR,EAAwB8K,UAAzC;AACA,IAAIsD,uBAAuB,mBAAApO,CAAQ,2EAAR,EAAiCoO,oBAA5D;AACA,IAAIC,kBAAkB,mBAAArO,CAAQ,2EAAR,EAAiCqO,eAAvD;AACA,IAAIC,4BAA4B,mBAAAtO,CAAQ,+FAAR,EAA2CsO,yBAA3E;AACA,IAAIC,eAAe,mBAAAvO,CAAQ,uDAAR,EAAuBuO,YAA1C;AACA,IAAIC,YAAY,mBAAAxO,CAAQ,uDAAR,EAAuBwO,SAAvC;;AAEA,SAASC,aAAT,CAAuB9Y,MAAvB,EAA+B;AAC9BwY,mBAAkB7N,IAAlB,CAAuB,IAAvB;AACG,MAAK3K,MAAL,GAAcA,MAAd;AACH,QAAO,IAAP;AACA;;AAED8Y,cAAcjO,SAAd,GAA0Bn2B,OAAOo2B,MAAP,CAAc0N,kBAAkB3N,SAAhC,CAA1B;AACAiO,cAAcjO,SAAd,CAAwBE,WAAxB,GAAsC+N,aAAtC;;AAEAA,cAAcjO,SAAd,CAAwBkO,cAAxB,GAAyC,UAASlF,GAAT,EAAc;AACtDnzB,SAAQC,GAAR,CAAY,aAAa,KAAKqf,MAAL,CAAYgZ,SAAZ,CAAsBnF,IAAIY,SAA1B,CAAb,GAAoD,UAApD,GAAiE,KAAKzU,MAAL,CAAYuV,MAAZ,CAAmBv6B,EAAnB,CAAsB,CAAtB,EAAyB7F,IAAtG;AACA,CAFD;;AAIA2jC,cAAcjO,SAAd,CAAwBoO,aAAxB,GAAwC,UAAUC,IAAV,EAAgB;AACvDx4B,SAAQC,GAAR,CAAY,aAAau4B,KAAKC,MAAlB,GAA2B,QAA3B,GAAsC,KAAKnZ,MAAL,CAAYgZ,SAAZ,CAAsB,KAAKhZ,MAAL,CAAYoZ,IAAZ,CAAiB3E,SAAvC,CAAlD;AACA,CAFD;;AAIAqE,cAAcjO,SAAd,CAAwBwO,aAAxB,GAAwC,UAASxF,GAAT,EAAc;AACrDnzB,SAAQC,GAAR,CAAY,aAAa,KAAKqf,MAAL,CAAYgZ,SAAZ,CAAsBnF,IAAIY,SAA1B,CAAb,GAAoD,UAApD,GAAiE,KAAKzU,MAAL,CAAYuV,MAAZ,CAAmBv6B,EAAnB,CAAsB,CAAtB,EAAyB7F,IAAtG;AACA,CAFD;;AAIA;AACA;AACA,SAASmkC,MAAT,CAAgB9/B,KAAhB,EAAuB;AACtB27B,YAAWxK,IAAX,CAAgB,IAAhB;AACA;AACA,MAAK4K,MAAL,GAAc,IAAd;AACA;AACA;AACA,MAAKgE,WAAL,GAAmB,IAAId,oBAAJ,EAAnB;AACA,MAAKe,gBAAL,GAAwB,EAAxB;AACA,MAAKA,gBAAL,CAAsBt+B,IAAtB,CAA2B,CAA3B;AACA;AACA;AACA,MAAKk+B,IAAL,GAAY,IAAZ;AACA;AACA;AACA,MAAKK,eAAL,GAAuB,IAAvB;AACA;AACA;AACA;AACA;AACA;AACA,MAAKC,OAAL,GAAe,IAAf;AACA;AACA;AACA,MAAKC,eAAL,GAAuB,IAAvB;AACA;AACA;AACA,MAAKC,aAAL,GAAqB,CAArB;AACA,MAAKC,cAAL,CAAoBrgC,KAApB;AACA,QAAO,IAAP;AACA;;AAED8/B,OAAOzO,SAAP,GAAmBn2B,OAAOo2B,MAAP,CAAcqK,WAAWtK,SAAzB,CAAnB;AACAyO,OAAOzO,SAAP,CAAiBiP,UAAjB,GAA8BR,MAA9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACAA,OAAOS,kBAAP,GAA4B,EAA5B;;AAEA;AACAT,OAAOzO,SAAP,CAAiBM,KAAjB,GAAyB,YAAW;AACnC,KAAI,KAAKoK,MAAL,KAAgB,IAApB,EAA0B;AACzB,OAAKA,MAAL,CAAYnK,IAAZ,CAAiB,CAAjB;AACA;AACD,MAAKmO,WAAL,CAAiBpO,KAAjB,CAAuB,IAAvB;AACA,MAAKiO,IAAL,GAAY,IAAZ;AACA,MAAKQ,aAAL,GAAqB,CAArB;AACA,MAAKI,QAAL,CAAc,KAAd;AACA,MAAKR,gBAAL,GAAwB,EAAxB;AACA,MAAKA,gBAAL,CAAsBt+B,IAAtB,CAA2B,CAA3B;AACA,KAAI,KAAKw6B,OAAL,KAAiB,IAArB,EAA2B;AAC1B,OAAKA,OAAL,CAAavK,KAAb;AACA;AACD,CAbD;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAmO,OAAOzO,SAAP,CAAiBxtB,KAAjB,GAAyB,UAASy5B,KAAT,EAAgB;AACxC,KAAIvN,IAAI,KAAK0Q,eAAL,EAAR;AACA,KAAI1Q,EAAEz3B,IAAF,KAAWglC,KAAf,EAAsB;AACrB,OAAKyC,WAAL,CAAiBW,WAAjB,CAA6B,IAA7B;AACA,OAAK3O,OAAL;AACA,EAHD,MAGO;AACNhC,MAAI,KAAKgQ,WAAL,CAAiBY,aAAjB,CAA+B,IAA/B,CAAJ;AACA,MAAI,KAAKV,eAAL,IAAwBlQ,EAAEjhB,UAAF,KAAiB,CAAC,CAA9C,EAAiD;AAChD;AACA;AACA;AACA,QAAK8wB,IAAL,CAAUgB,YAAV,CAAuB7Q,CAAvB;AACA;AACD;AACD,QAAOA,CAAP;AACA,CAfD;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA+P,OAAOzO,SAAP,CAAiBwP,aAAjB,GAAiC,YAAW;AAC3C,KAAI9Q,IAAI,KAAK0Q,eAAL,EAAR;AACA,KAAI1Q,EAAEz3B,IAAF,GAAS,CAAb,EAAgB;AACf,OAAKynC,WAAL,CAAiBW,WAAjB,CAA6B,IAA7B;AACA,OAAK3O,OAAL;AACA,EAHD,MAGO;AACNhC,MAAI,KAAKgQ,WAAL,CAAiBY,aAAjB,CAA+B,IAA/B,CAAJ;AACA,MAAI,KAAKG,gBAAL,IAAyB/Q,EAAEjhB,UAAF,KAAiB,CAAC,CAA/C,EAAkD;AACjD;AACA;AACA;AACA,QAAK8wB,IAAL,CAAUgB,YAAV,CAAuB7Q,CAAvB;AACA;AACD;AACD,QAAOA,CAAP;AACA,CAfD;;AAiBA+P,OAAOzO,SAAP,CAAiB0P,iBAAjB,GAAqC,YAAW;AAC/C,QAAO,KAAKZ,eAAL,IAAwB,EAA/B;AACA,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAL,OAAOzO,SAAP,CAAiB2P,gBAAjB,GAAoC,UAASvC,QAAT,EAAmB;AACtD,KAAIA,aAAa,IAAjB,EAAuB;AACtB,QAAM,UAAN;AACA;AACD,KAAI,KAAK0B,eAAL,KAAyB,IAA7B,EAAmC;AAClC,OAAKA,eAAL,GAAuB,EAAvB;AACA;AACD,MAAKA,eAAL,CAAqBz+B,IAArB,CAA0B+8B,QAA1B;AACA,CARD;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACAqB,OAAOzO,SAAP,CAAiB4P,mBAAjB,GAAuC,UAASxC,QAAT,EAAmB;AACzD,KAAI,KAAK0B,eAAL,KAAyB,IAA7B,EAAmC;AAClC,MAAIxV,MAAM,KAAKwV,eAAL,CAAqB18B,OAArB,CAA6Bg7B,QAA7B,CAAV;AACA,MAAI9T,OAAO,CAAX,EAAc;AACb,QAAKwV,eAAL,CAAqBrwB,MAArB,CAA4B6a,GAA5B,EAAiC,CAAjC;AACA;AACD,MAAI,KAAKwV,eAAL,CAAqBtiC,MAArB,KAAgC,CAApC,EAAuC;AACtC,QAAKsiC,eAAL,GAAuB,IAAvB;AACA;AACD;AACD,CAVD;;AAYA;AACAL,OAAOzO,SAAP,CAAiB6P,oBAAjB,GAAwC,YAAW;AAClD,MAAKf,eAAL,GAAuB,IAAvB;AACA,CAFD;;AAIA;AACAL,OAAOzO,SAAP,CAAiB8P,qBAAjB,GAAyC,YAAW;AACnD,KAAI,KAAKhB,eAAL,KAAyB,IAA7B,EAAmC;AAC5B,MAAI9F,MAAM,KAAKuF,IAAf;AACN,OAAKO,eAAL,CAAqBxiC,GAArB,CAAyB,UAAS8gC,QAAT,EAAmB;AAC3CA,YAASc,cAAT,CAAwBlF,GAAxB;AACAA,OAAI+G,SAAJ,CAAc3C,QAAd;AACA,GAHD;AAIA;AACD,CARD;;AAUA;AACA;AACA;AACA;AACA;AACAqB,OAAOzO,SAAP,CAAiBgQ,oBAAjB,GAAwC,YAAW;AAClD,KAAI,KAAKlB,eAAL,KAAyB,IAA7B,EAAmC;AAClC;AACM,MAAI9F,MAAM,KAAKuF,IAAf;AACN,OAAKO,eAAL,CAAqBlJ,KAArB,CAA2B,CAA3B,EAA8BqK,OAA9B,GAAwC3jC,GAAxC,CAA4C,UAAS8gC,QAAT,EAAmB;AAC9DpE,OAAIkH,QAAJ,CAAa9C,QAAb;AACAA,YAASoB,aAAT,CAAuBxF,GAAvB;AACA,GAHD;AAIA;AACD,CATD;;AAWAyF,OAAOzO,SAAP,CAAiBmQ,eAAjB,GAAmC,YAAW;AAC7C,QAAO,KAAKzF,MAAL,CAAY7K,WAAZ,CAAwB8K,QAA/B;AACA,CAFD;;AAIA;AACA8D,OAAOzO,SAAP,CAAiBoQ,eAAjB,GAAmC,UAASC,OAAT,EAAkB;AACpD,MAAK3F,MAAL,CAAY7K,WAAZ,CAAwB8K,QAAxB,GAAmC0F,OAAnC;AACA,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA5B,OAAOzO,SAAP,CAAiBsQ,oBAAjB,GAAwC,YAAW;AAClD,KAAIC,gBAAgB,KAAKC,gBAAL,EAApB;AACA,KAAID,kBAAkB,IAAtB,EAA4B;AAC3B,QAAM,sEAAN;AACA;AACD,KAAIxtB,SAAS,KAAKmsB,kBAAL,CAAwBqB,aAAxB,CAAb;AACA,KAAIxtB,WAAW,IAAf,EAAqB;AACpB,MAAI0tB,yBAAyB,IAAI3C,yBAAJ,EAA7B;AACA2C,yBAAuBC,6BAAvB,GAAuD,IAAvD;AACA3tB,WAAS,IAAI8qB,eAAJ,CAAoB4C,sBAApB,EACNE,WADM,CACMJ,aADN,CAAT;AAEA,OAAKrB,kBAAL,CAAwBqB,aAAxB,IAAyCxtB,MAAzC;AACA;AACD,QAAOA,MAAP;AACA,CAdD;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI0c,QAAQ,mBAAAD,CAAQ,+CAAR,EAAmBC,KAA/B;;AAEAgP,OAAOzO,SAAP,CAAiB4Q,uBAAjB,GAA2C,UAASC,OAAT,EAAkBC,gBAAlB,EAAoCrrC,KAApC,EAA2C;AACrFA,SAAQA,SAAS,IAAjB;AACA,KAAIA,UAAU,IAAd,EAAoB;AACnB,MAAI,KAAKsrC,cAAL,OAA0B,IAA9B,EAAoC;AACnC,OAAIlR,cAAc,KAAKkR,cAAL,GAAsBlR,WAAxC;AACA,OAAIA,uBAAuBJ,KAA3B,EAAkC;AACjCh6B,YAAQo6B,WAAR;AACA;AACD;AACD;AACD,KAAIp6B,UAAU,IAAd,EAAoB;AACnB,QAAM,sCAAN;AACA;AACD,KAAI+mC,IAAI,IAAIwE,uBAAJ,CAA4BvrC,KAA5B,EAAmC,IAAnC,CAAR;AACA,QAAO+mC,EAAEyE,OAAF,CAAUJ,OAAV,EAAmBC,gBAAnB,CAAP;AACA,CAfD;;AAiBArC,OAAOzO,SAAP,CAAiBkR,cAAjB,GAAkC,YAAW;AAC5C,QAAO,KAAKH,cAAL,EAAP;AACA,CAFD;;AAIAtC,OAAOzO,SAAP,CAAiBgP,cAAjB,GAAkC,UAASrgC,KAAT,EAAgB;AACjD,MAAKwiC,cAAL,CAAoBxiC,KAApB;AACA,CAFD;;AAIA8/B,OAAOzO,SAAP,CAAiB+Q,cAAjB,GAAkC,YAAW;AAC5C,QAAO,KAAKrG,MAAZ;AACA,CAFD;;AAIA;AACA+D,OAAOzO,SAAP,CAAiBmR,cAAjB,GAAkC,UAASxiC,KAAT,EAAgB;AACjD,MAAK+7B,MAAL,GAAc,IAAd;AACA,MAAKpK,KAAL;AACA,MAAKoK,MAAL,GAAc/7B,KAAd;AACA,CAJD;;AAMA;AACA;AACA;AACA8/B,OAAOzO,SAAP,CAAiBoP,eAAjB,GAAmC,YAAW;AAC7C,QAAO,KAAK1E,MAAL,CAAYv6B,EAAZ,CAAe,CAAf,CAAP;AACA,CAFD;;AAIAs+B,OAAOzO,SAAP,CAAiBoR,oBAAjB,GAAwC,UAAS3nC,GAAT,EAAc4nC,cAAd,EAA8BrN,GAA9B,EAAmC;AAC1EqN,kBAAiBA,kBAAkB,IAAnC;AACArN,OAAMA,OAAO,IAAb;AACA,KAAIqN,mBAAmB,IAAvB,EAA6B;AAC5BA,mBAAiB,KAAKjC,eAAL,EAAjB;AACA;AACD,MAAKL,aAAL,IAAsB,CAAtB;AACA,KAAIloC,OAAOwqC,eAAexqC,IAA1B;AACA,KAAIC,SAASuqC,eAAevqC,MAA5B;AACA,KAAIsmC,WAAW,KAAKC,wBAAL,EAAf;AACAD,UAASE,WAAT,CAAqB,IAArB,EAA2B+D,cAA3B,EAA2CxqC,IAA3C,EAAiDC,MAAjD,EAAyD2C,GAAzD,EAA8Du6B,GAA9D;AACA,CAXD;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAyK,OAAOzO,SAAP,CAAiBU,OAAjB,GAA2B,YAAW;AACrC,KAAI4Q,IAAI,KAAKlC,eAAL,EAAR;AACA,KAAIkC,EAAErqC,IAAF,KAAWs4B,MAAMsB,GAArB,EAA0B;AACzB,OAAKqQ,cAAL,GAAsBxQ,OAAtB;AACA;AACD,KAAI6Q,cAAc,KAAKzC,eAAL,KAAyB,IAAzB,IAAiC,KAAKA,eAAL,CAAqBtiC,MAArB,GAA8B,CAAjF;AACA,KAAI,KAAKoiC,eAAL,IAAwB2C,WAA5B,EAAyC;AACxC,MAAIlD,IAAJ;AACA,MAAI,KAAKK,WAAL,CAAiB8C,mBAAjB,CAAqC,IAArC,CAAJ,EAAgD;AAC/CnD,UAAO,KAAKE,IAAL,CAAUgB,YAAV,CAAuB+B,CAAvB,CAAP;AACA,GAFD,MAEO;AACNjD,UAAO,KAAKE,IAAL,CAAUkD,YAAV,CAAuBH,CAAvB,CAAP;AACA;AACKjD,OAAKqD,aAAL,GAAqB,KAAKrI,KAA1B;AACN,MAAIkI,WAAJ,EAAiB;AAChB,QAAKzC,eAAL,CAAqBxiC,GAArB,CAAyB,UAAS8gC,QAAT,EAAmB;AAC3C,QAAIiB,gBAAgBL,SAAhB,IAA8BK,KAAKsD,WAAL,KAAqBrvB,SAArB,IAAkC+rB,KAAKsD,WAAL,EAApE,EAAyF;AACxFvE,cAASwE,cAAT,CAAwBvD,IAAxB;AACA,KAFD,MAEO,IAAIA,gBAAgBN,YAApB,EAAkC;AACxCX,cAASgB,aAAT,CAAuBC,IAAvB;AACA;AACD,IAND;AAOA;AACD;AACD,QAAOiD,CAAP;AACA,CAzBD;;AA2BA7C,OAAOzO,SAAP,CAAiB6R,qBAAjB,GAAyC,YAAW;AACnD;AACA,KAAI,KAAKtD,IAAL,CAAUuD,SAAV,KAAwB,IAA5B,EAAkC;AACjC,OAAKvD,IAAL,CAAUuD,SAAV,CAAoBC,QAApB,CAA6B,KAAKxD,IAAlC;AACA;AACD,CALD;;AAOA;AACA;;AAEAE,OAAOzO,SAAP,CAAiB+P,SAAjB,GAA6B,UAASiC,QAAT,EAAmB3I,KAAnB,EAA0BO,SAA1B,EAAqC;AACjE,MAAKP,KAAL,GAAaA,KAAb;AACA,MAAKkF,IAAL,GAAYyD,QAAZ;AACA,MAAKzD,IAAL,CAAU1V,KAAV,GAAkB,KAAK6R,MAAL,CAAYv6B,EAAZ,CAAe,CAAf,CAAlB;AACA,KAAI,KAAKy+B,eAAT,EAA0B;AACzB,OAAKiD,qBAAL;AACA;AACD,KAAI,KAAK/C,eAAL,KAAyB,IAA7B,EAAmC;AAClC,OAAKgB,qBAAL;AACA;AACD,CAVD;;AAYArB,OAAOzO,SAAP,CAAiBkQ,QAAjB,GAA4B,YAAW;AACtC,MAAK3B,IAAL,CAAUrN,IAAV,GAAiB,KAAKwJ,MAAL,CAAYv6B,EAAZ,CAAe,CAAC,CAAhB,CAAjB;AACA;AACA,KAAI,KAAK2+B,eAAL,KAAyB,IAA7B,EAAmC;AAClC,OAAKkB,oBAAL;AACA;AACD,MAAK3G,KAAL,GAAa,KAAKkF,IAAL,CAAUmD,aAAvB;AACA,MAAKnD,IAAL,GAAY,KAAKA,IAAL,CAAUuD,SAAtB;AACA,CARD;;AAUArD,OAAOzO,SAAP,CAAiBiS,aAAjB,GAAiC,UAASD,QAAT,EAAmBE,MAAnB,EAA2B;AACxDF,UAASG,YAAT,CAAsBD,MAAtB;AACH;AACA;AACA,KAAI,KAAKtD,eAAL,IAAwB,KAAKL,IAAL,KAAcyD,QAA1C,EAAoD;AACnD,MAAI,KAAKzD,IAAL,CAAUuD,SAAV,KAAwB,IAA5B,EAAkC;AACjC,QAAKvD,IAAL,CAAUuD,SAAV,CAAoBM,eAApB;AACA,QAAK7D,IAAL,CAAUuD,SAAV,CAAoBC,QAApB,CAA6BC,QAA7B;AACA;AACD;AACD,MAAKzD,IAAL,GAAYyD,QAAZ;AACA,CAXD;;AAaA;AACA;AACA;AACA;;AAEAvD,OAAOzO,SAAP,CAAiBqS,aAAjB,GAAiC,YAAW;AAC3C,KAAI,KAAK1D,gBAAL,CAAsBniC,MAAtB,KAAiC,CAArC,EAAwC;AACvC,SAAO,CAAC,CAAR;AACA,EAFD,MAEO;AACN,SAAO,KAAKmiC,gBAAL,CAAsB,KAAKA,gBAAL,CAAsBniC,MAAtB,GAA6B,CAAnD,CAAP;AACA;AACD,CAND;;AAQAiiC,OAAOzO,SAAP,CAAiBsS,kBAAjB,GAAsC,UAASN,QAAT,EAAmB3I,KAAnB,EAA0BO,SAA1B,EACpC2I,UADoC,EACxB;AACb,MAAKlJ,KAAL,GAAaA,KAAb;AACA,MAAKsF,gBAAL,CAAsBt+B,IAAtB,CAA2BkiC,UAA3B;AACA,MAAKhE,IAAL,GAAYyD,QAAZ;AACA,MAAKzD,IAAL,CAAU1V,KAAV,GAAkB,KAAK6R,MAAL,CAAYv6B,EAAZ,CAAe,CAAf,CAAlB;AACA,KAAI,KAAK2+B,eAAL,KAAyB,IAA7B,EAAmC;AAClC,OAAKgB,qBAAL,GADkC,CACJ;AACtB;AACR;AACD,CAVD;;AAYA;AACA;;AAEArB,OAAOzO,SAAP,CAAiBwS,uBAAjB,GAA2C,UAASR,QAAT,EAAmB3I,KAAnB,EAA0BO,SAA1B,EAAqC;AAC/E,KAAI6I,WAAW,KAAKlE,IAApB;AACAkE,UAASX,SAAT,GAAqBE,QAArB;AACAS,UAASf,aAAT,GAAyBrI,KAAzB;AACAoJ,UAASvR,IAAT,GAAgB,KAAKwJ,MAAL,CAAYv6B,EAAZ,CAAe,CAAC,CAAhB,CAAhB;;AAEA,MAAKo+B,IAAL,GAAYyD,QAAZ;AACA,MAAKzD,IAAL,CAAU1V,KAAV,GAAkB4Z,SAAS5Z,KAA3B;AACA,KAAI,KAAK+V,eAAT,EAA0B;AACzB,OAAKL,IAAL,CAAUwD,QAAV,CAAmBU,QAAnB;AACA;AACD,KAAI,KAAK3D,eAAL,KAAyB,IAA7B,EAAmC;AAClC,OAAKgB,qBAAL,GADkC,CACJ;AACtB;AACR;AACD,CAfD;;AAiBArB,OAAOzO,SAAP,CAAiB0S,uBAAjB,GAA2C,UAASZ,SAAT,EAAoB;AAC9D,MAAKnD,gBAAL,CAAsBr+B,GAAtB;AACA,MAAKi+B,IAAL,CAAUrN,IAAV,GAAiB,KAAKwJ,MAAL,CAAYv6B,EAAZ,CAAe,CAAC,CAAhB,CAAjB;AACA,KAAIwiC,SAAS,KAAKpE,IAAlB,CAH8D,CAGtC;AACxB;AACA,KAAI,KAAKO,eAAL,KAAyB,IAA7B,EAAmC;AAClC,SAAO,KAAKP,IAAL,KAAcuD,SAArB,EAAgC;AAC/B,QAAK9B,oBAAL;AACA,QAAKzB,IAAL,GAAY,KAAKA,IAAL,CAAUuD,SAAtB;AACA;AACD,EALD,MAKO;AACN,OAAKvD,IAAL,GAAYuD,SAAZ;AACA;AACD;AACAa,QAAOb,SAAP,GAAmBA,SAAnB;AACA,KAAI,KAAKlD,eAAL,IAAwBkD,cAAc,IAA1C,EAAgD;AAC/C;AACAA,YAAUC,QAAV,CAAmBY,MAAnB;AACA;AACD,CAnBD;;AAqBAlE,OAAOzO,SAAP,CAAiB4S,kBAAjB,GAAsC,UAAShJ,SAAT,EAAoB;AACzD,KAAIZ,MAAM,KAAKuF,IAAf;AACA,QAAOvF,QAAQ,IAAf,EAAqB;AACpB,MAAIA,IAAIY,SAAJ,KAAkBA,SAAtB,EAAiC;AAChC,UAAOZ,GAAP;AACA;AACDA,QAAMA,IAAI8I,SAAV;AACA;AACD,QAAO,IAAP;AACA,CATD;;AAWArD,OAAOzO,SAAP,CAAiB6S,QAAjB,GAA4B,UAASb,QAAT,EAAmBO,UAAnB,EAA+B;AAC1D,QAAOA,cAAc,KAAK5D,gBAAL,CAAsB,KAAKA,gBAAL,CAAsBniC,MAAtB,GAA6B,CAAnD,CAArB;AACA,CAFD;;AAIAiiC,OAAOzO,SAAP,CAAiB8S,SAAjB,GAA6B,UAASzoC,OAAT,EAAkB;AAC9C;AACA,QAAO,KAAP;AACA,CAHD;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAokC,OAAOzO,SAAP,CAAiB+S,eAAjB,GAAmC,UAASzE,MAAT,EAAiB;AACnD,KAAIpG,MAAM,KAAK2C,OAAL,CAAa3C,GAAvB;AACA,KAAIc,MAAM,KAAKuF,IAAf;AACA,KAAI/L,IAAI0F,IAAIuB,MAAJ,CAAW,KAAKJ,KAAhB,CAAR;AACA,KAAI2J,YAAY9K,IAAI+K,UAAJ,CAAezQ,CAAf,CAAhB;AACA,KAAIwQ,UAAU5R,QAAV,CAAmBkN,MAAnB,CAAJ,EAAgC;AAC/B,SAAO,IAAP;AACA;AACD,KAAI,CAAC0E,UAAU5R,QAAV,CAAmB7B,MAAM6H,OAAzB,CAAL,EAAwC;AACvC,SAAO,KAAP;AACA;AACD,QAAO4B,QAAQ,IAAR,IAAgBA,IAAI0I,aAAJ,IAAqB,CAArC,IAA0CsB,UAAU5R,QAAV,CAAmB7B,MAAM6H,OAAzB,CAAjD,EAAoF;AACnF,MAAIsK,gBAAgBxJ,IAAIuB,MAAJ,CAAWT,IAAI0I,aAAf,CAApB;AACA,MAAIwB,KAAKxB,cAAcpJ,WAAd,CAA0B,CAA1B,CAAT;AACA0K,cAAY9K,IAAI+K,UAAJ,CAAeC,GAAGlJ,WAAlB,CAAZ;AACA,MAAIgJ,UAAU5R,QAAV,CAAmBkN,MAAnB,CAAJ,EAAgC;AAC/B,UAAO,IAAP;AACA;AACDtF,QAAMA,IAAI8I,SAAV;AACA;AACD,KAAIkB,UAAU5R,QAAV,CAAmB7B,MAAM6H,OAAzB,KAAqCkH,WAAW/O,MAAMsB,GAA1D,EAA+D;AAC9D,SAAO,IAAP;AACA,EAFD,MAEO;AACN,SAAO,KAAP;AACA;AACD,CAzBD;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA4N,OAAOzO,SAAP,CAAiBmT,iBAAjB,GAAqC,YAAW;AAC/C,QAAO,KAAKtI,OAAL,CAAa3C,GAAb,CAAiBiL,iBAAjB,CAAmC,KAAK9J,KAAxC,EAA+C,KAAKkF,IAApD,CAAP;AACA,CAFD;;AAIAE,OAAOzO,SAAP,CAAiBoT,kCAAjB,GAAsD,YAAW;AAChE,KAAIlL,MAAM,KAAK2C,OAAL,CAAa3C,GAAvB;AACA,KAAI1F,IAAI0F,IAAIuB,MAAJ,CAAW,KAAKJ,KAAhB,CAAR;AACA,QAAOnB,IAAI+K,UAAJ,CAAezQ,CAAf,CAAP;AACA,CAJD;;AAMA;AACAiM,OAAOzO,SAAP,CAAiBqT,YAAjB,GAAgC,UAASC,QAAT,EAAmB;AAClD,KAAI1J,YAAY,KAAK2J,eAAL,GAAuBD,QAAvB,CAAhB;AACA,KAAI1J,cAAc,IAAlB,EAAwB;AACvB,SAAOA,SAAP;AACA,EAFD,MAEO;AACN,SAAO,CAAC,CAAR;AACA;AACD,CAPD;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA6E,OAAOzO,SAAP,CAAiBwT,sBAAjB,GAA0C,UAASC,CAAT,EAAY;AACrDA,KAAIA,KAAK,IAAT;AACA,KAAIA,MAAM,IAAV,EAAgB;AACfA,MAAI,KAAKlF,IAAT;AACA;AACD,KAAInC,QAAQ,EAAZ;AACA,QAAOqH,MAAM,IAAb,EAAmB;AAClB;AACA,MAAI7J,YAAY6J,EAAE7J,SAAlB;AACA,MAAIA,YAAY,CAAhB,EAAmB;AAClBwC,SAAM/7B,IAAN,CAAW,KAAX;AACA,GAFD,MAEO;AACN+7B,SAAM/7B,IAAN,CAAW,KAAK89B,SAAL,CAAevE,SAAf,CAAX;AACA;AACD6J,MAAIA,EAAE3B,SAAN;AACA;AACD,QAAO1F,KAAP;AACA,CAjBD;;AAmBA;AACAqC,OAAOzO,SAAP,CAAiB0T,aAAjB,GAAiC,YAAW;AAC3C,QAAO,KAAK7I,OAAL,CAAa8I,aAAb,CAA2B7nC,QAA3B,EAAP;AACA,CAFD;AAGA;AACA2iC,OAAOzO,SAAP,CAAiB4T,OAAjB,GAA2B,YAAW;AACrC,KAAIC,UAAU,KAAd;AACA,MAAK,IAAI1xB,IAAI,CAAb,EAAgBA,IAAI,KAAK0oB,OAAL,CAAa8I,aAAb,CAA2BnnC,MAA/C,EAAuD2V,GAAvD,EAA4D;AAC3D,MAAI2xB,MAAM,KAAKjJ,OAAL,CAAa8I,aAAb,CAA2BxxB,CAA3B,CAAV;AACA,MAAI2xB,IAAIrK,MAAJ,CAAWj9B,MAAX,GAAoB,CAAxB,EAA2B;AAC1B,OAAIqnC,OAAJ,EAAa;AACZh+B,YAAQC,GAAR;AACA;AACD,QAAKi+B,OAAL,CAAaC,OAAb,CAAqB,cAAcF,IAAIG,QAAlB,GAA6B,GAAlD;AACA,QAAKF,OAAL,CAAaG,KAAb,CAAmBJ,IAAIhoC,QAAJ,CAAa,KAAK0F,YAAlB,EAAgC,KAAKq1B,aAArC,CAAnB;AACAgN,aAAU,IAAV;AACA;AACD;AACD,CAbD;;AAeA;;;;;;;AAOApF,OAAOzO,SAAP,CAAiBqC,aAAjB,GAAiC,YAAW;AAC3C,QAAO,KAAKqI,MAAL,CAAYkC,UAAnB;AACA,CAFD;;AAIA;AACA;AACA;AACA6B,OAAOzO,SAAP,CAAiBmP,QAAjB,GAA4B,UAASgF,KAAT,EAAgB;AAC3C,KAAI,CAACA,KAAL,EAAY;AACX,OAAKvE,mBAAL,CAAyB,KAAKf,OAA9B;AACA,OAAKA,OAAL,GAAe,IAAf;AACA,EAHD,MAGO;AACN,MAAI,KAAKA,OAAL,KAAiB,IAArB,EAA2B;AAC1B,QAAKe,mBAAL,CAAyB,KAAKf,OAA9B;AACA;AACD,OAAKA,OAAL,GAAe,IAAIZ,aAAJ,CAAkB,IAAlB,CAAf;AACA,OAAK0B,gBAAL,CAAsB,KAAKd,OAA3B;AACA;AACD,CAXD;;AAaAtpC,QAAQkpC,MAAR,GAAiBA,MAAjB,C;;;;;;;;;;;;;;ACjqBA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI2F,cAAc,mBAAA5U,CAAQ,2DAAR,EAAyB4U,WAA3C;AACA,IAAIC,OAAO,mBAAA7U,CAAQ,uDAAR,CAAX;AACA,IAAI8U,mBAAmBD,KAAKC,gBAA5B;AACA,IAAIvG,eAAesG,KAAKtG,YAAxB;AACA,IAAIwG,mBAAmBF,KAAKE,gBAA5B;AACA,IAAIC,gBAAgBH,KAAKG,aAAzB;AACA,IAAI9U,WAAW,mBAAAF,CAAQ,2DAAR,EAAyBE,QAAxC;;AAEA,SAAS+U,iBAAT,CAA2BC,MAA3B,EAAmCC,mBAAnC,EAAwD;AACvDD,WAASA,UAAU,IAAnB;AACAC,wBAAsBA,uBAAuB,IAA7C;AACAP,cAAYtU,IAAZ,CAAiB,IAAjB,EAAuB4U,MAAvB,EAA+BC,mBAA/B;AACA,OAAK/K,SAAL,GAAiB,CAAC,CAAlB;AACG;AACA;AACA;AACA;AACA;AACA;AACA,OAAKgL,QAAL,GAAgB,IAAhB;AACA,OAAK/b,KAAL,GAAa,IAAb;AACA,OAAKqI,IAAL,GAAY,IAAZ;AACA;AACA;AACA,OAAK2T,SAAL,GAAiB,IAAjB;AACH;;AAEDJ,kBAAkBzU,SAAlB,GAA8Bn2B,OAAOo2B,MAAP,CAAcmU,YAAYpU,SAA1B,CAA9B;AACAyU,kBAAkBzU,SAAlB,CAA4BE,WAA5B,GAA0CuU,iBAA1C;;AAEA;AACAA,kBAAkBzU,SAAlB,CAA4B8U,QAA5B,GAAuC,UAAS9L,GAAT,EAAc;AACjD;AACA,OAAK8I,SAAL,GAAiB9I,IAAI8I,SAArB;AACA,OAAKJ,aAAL,GAAqB1I,IAAI0I,aAAzB;AACA,OAAKkD,QAAL,GAAgB,IAAhB;AACA,OAAK/b,KAAL,GAAamQ,IAAInQ,KAAjB;AACA,OAAKqI,IAAL,GAAY8H,IAAI9H,IAAhB;AACA;AACA,MAAG8H,IAAI4L,QAAP,EAAiB;AACb,SAAKA,QAAL,GAAgB,EAAhB;AACA;AACH5L,QAAI4L,QAAJ,CAAatoC,GAAb,CAAiB,UAASyoC,KAAT,EAAgB;AAChC,UAAIA,iBAAiBP,aAArB,EAAoC;AAC1B,aAAKI,QAAL,CAAcvkC,IAAd,CAAmB0kC,KAAnB;AACAA,cAAMjD,SAAN,GAAkB,IAAlB;AACH;AACV,KALE,EAKA,IALA;AAMH;AACD,CAlBD;;AAoBA;AACA2C,kBAAkBzU,SAAlB,CAA4B+P,SAA5B,GAAwC,UAAS3C,QAAT,EAAmB,CAC1D,CADD;;AAGAqH,kBAAkBzU,SAAlB,CAA4BkQ,QAA5B,GAAuC,UAAS9C,QAAT,EAAmB,CACzD,CADD;;AAGA;AACAqH,kBAAkBzU,SAAlB,CAA4B+R,QAA5B,GAAuC,UAASgD,KAAT,EAAgB;AACnD,MAAI,KAAKH,QAAL,KAAkB,IAAtB,EAA4B;AACxB,SAAKA,QAAL,GAAgB,EAAhB;AACH;AACD,OAAKA,QAAL,CAAcvkC,IAAd,CAAmB0kC,KAAnB;AACA,SAAOA,KAAP;AACH,CAND;;AAQA;AACA;AACA;AACA;AACAN,kBAAkBzU,SAAlB,CAA4BoS,eAA5B,GAA8C,YAAW;AACrD,MAAI,KAAKwC,QAAL,KAAkB,IAAtB,EAA4B;AACxB,SAAKA,QAAL,CAActkC,GAAd;AACH;AACJ,CAJD;;AAMAmkC,kBAAkBzU,SAAlB,CAA4ByR,YAA5B,GAA2C,UAASrnC,KAAT,EAAgB;AACvD,MAAIikC,OAAO,IAAIkG,gBAAJ,CAAqBnqC,KAArB,CAAX;AACA,OAAK2nC,QAAL,CAAc1D,IAAd;AACAA,OAAKyD,SAAL,GAAiB,IAAjB;AACA,SAAOzD,IAAP;AACH,CALD;;AAOAoG,kBAAkBzU,SAAlB,CAA4BuP,YAA5B,GAA2C,UAASyF,QAAT,EAAmB;AAC1D,MAAI3G,OAAO,IAAImG,aAAJ,CAAkBQ,QAAlB,CAAX;AACA,OAAKjD,QAAL,CAAc1D,IAAd;AACAA,OAAKyD,SAAL,GAAiB,IAAjB;AACA,SAAOzD,IAAP;AACH,CALD;;AAOAoG,kBAAkBzU,SAAlB,CAA4BiV,QAA5B,GAAuC,UAAS9yB,CAAT,EAAYlb,IAAZ,EAAkB;AACxDA,SAAOA,QAAQ,IAAf;AACA,MAAI,KAAK2tC,QAAL,KAAkB,IAAlB,IAA0BzyB,IAAI,CAA9B,IAAmCA,KAAK,KAAKyyB,QAAL,CAAcpoC,MAA1D,EAAkE;AACjE,WAAO,IAAP;AACA;AACD,MAAIvF,SAAS,IAAb,EAAmB;AAClB,WAAO,KAAK2tC,QAAL,CAAczyB,CAAd,CAAP;AACA,GAFD,MAEO;AACN,SAAI,IAAIoa,IAAE,CAAV,EAAaA,IAAE,KAAKqY,QAAL,CAAcpoC,MAA7B,EAAqC+vB,GAArC,EAA0C;AACzC,UAAIwY,QAAQ,KAAKH,QAAL,CAAcrY,CAAd,CAAZ;AACA,UAAGwY,iBAAiB9tC,IAApB,EAA0B;AACzB,YAAGkb,MAAI,CAAP,EAAU;AACT,iBAAO4yB,KAAP;AACA,SAFD,MAEO;AACN5yB,eAAK,CAAL;AACA;AACD;AACD;AACD,WAAO,IAAP;AACG;AACJ,CApBD;;AAuBAsyB,kBAAkBzU,SAAlB,CAA4BzvB,QAA5B,GAAuC,UAAS07B,KAAT,EAAgB9pB,CAAhB,EAAmB;AACzD,MAAI,KAAKyyB,QAAL,KAAkB,IAAlB,IAA0BzyB,IAAI,CAA9B,IAAmCA,KAAK,KAAKyyB,QAAL,CAAcpoC,MAA1D,EAAkE;AACjE,WAAO,IAAP;AACA;AACD,OAAI,IAAI+vB,IAAE,CAAV,EAAaA,IAAE,KAAKqY,QAAL,CAAcpoC,MAA7B,EAAqC+vB,GAArC,EAA0C;AACzC,QAAIwY,QAAQ,KAAKH,QAAL,CAAcrY,CAAd,CAAZ;AACA,QAAIwY,iBAAiBhH,YAArB,EAAmC;AAClC,UAAIgH,MAAMzG,MAAN,CAAarnC,IAAb,KAAsBglC,KAA1B,EAAiC;AAChC,YAAG9pB,MAAI,CAAP,EAAU;AACT,iBAAO4yB,KAAP;AACA,SAFD,MAEO;AACN5yB,eAAK,CAAL;AACA;AACD;AACK;AACP;AACE,SAAO,IAAP;AACH,CAjBD;;AAmBAsyB,kBAAkBzU,SAAlB,CAA4BiB,SAA5B,GAAwC,UAASgL,KAAT,EAAiB;AACrD,MAAI,KAAK2I,QAAL,KAAiB,IAArB,EAA2B;AACvB,WAAO,EAAP;AACH,GAFD,MAEO;AACT,QAAI7U,SAAS,EAAb;AACA,SAAI,IAAIxD,IAAE,CAAV,EAAaA,IAAE,KAAKqY,QAAL,CAAcpoC,MAA7B,EAAqC+vB,GAArC,EAA0C;AACzC,UAAIwY,QAAQ,KAAKH,QAAL,CAAcrY,CAAd,CAAZ;AACA,UAAIwY,iBAAiBhH,YAArB,EAAmC;AAClC,YAAIgH,MAAMzG,MAAN,CAAarnC,IAAb,KAAsBglC,KAA1B,EAAiC;AAChClM,iBAAO1vB,IAAP,CAAY0kC,KAAZ;AACA;AACD;AACD;AACD,WAAOhV,MAAP;AACG;AACJ,CAfD;;AAiBA0U,kBAAkBzU,SAAlB,CAA4BkV,mBAA5B,GAAkD,UAASC,OAAT,EAAkBhzB,CAAlB,EAAqB;AACnE,SAAO,KAAK8yB,QAAL,CAAc9yB,CAAd,EAAiBgzB,OAAjB,CAAP;AACH,CAFD;;AAIAV,kBAAkBzU,SAAlB,CAA4BoV,oBAA5B,GAAmD,UAASD,OAAT,EAAkB;AACjE,MAAI,KAAKP,QAAL,KAAiB,IAArB,EAA2B;AACvB,WAAO,EAAP;AACH,GAFD,MAEO;AACT,QAAIS,WAAW,EAAf;AACA,SAAI,IAAI9Y,IAAE,CAAV,EAAaA,IAAE,KAAKqY,QAAL,CAAcpoC,MAA7B,EAAqC+vB,GAArC,EAA0C;AACzC,UAAIwY,QAAQ,KAAKH,QAAL,CAAcrY,CAAd,CAAZ;AACA,UAAIwY,iBAAiBI,OAArB,EAA8B;AAC7BE,iBAAShlC,IAAT,CAAc0kC,KAAd;AACA;AACD;AACD,WAAOM,QAAP;AACA;AACD,CAbD;;AAeAZ,kBAAkBzU,SAAlB,CAA4BsV,aAA5B,GAA4C,YAAW;AACtD,MAAI,KAAKV,QAAL,KAAiB,IAArB,EAA2B;AAC1B,WAAO,CAAP;AACA,GAFD,MAEO;AACN,WAAO,KAAKA,QAAL,CAAcpoC,MAArB;AACA;AACD,CAND;;AAQAioC,kBAAkBzU,SAAlB,CAA4BuV,iBAA5B,GAAgD,YAAW;AACvD,MAAI,KAAK1c,KAAL,KAAe,IAAf,IAAuB,KAAKqI,IAAL,KAAc,IAAzC,EAA+C;AAC3C,WAAOoT,gBAAP;AACH,GAFD,MAEO;AACH,WAAO,IAAI5U,QAAJ,CAAa,KAAK7G,KAAL,CAAWpb,UAAxB,EAAoC,KAAKyjB,IAAL,CAAUzjB,UAA9C,CAAP;AACH;AACJ,CAND;;AAQA22B,YAAYvL,KAAZ,GAAoB,IAAI4L,iBAAJ,EAApB;;AAEA,SAASe,sBAAT,CAAgCd,MAAhC,EAAwCC,mBAAxC,EAA6D/K,SAA7D,EAAwE;AACvE6K,oBAAkB3U,IAAlB,CAAuB4U,MAAvB,EAA+BC,mBAA/B;AACG,OAAK/K,SAAL,GAAiBA,SAAjB;AACA,SAAO,IAAP;AACH;;AAED4L,uBAAuBxV,SAAvB,GAAmCn2B,OAAOo2B,MAAP,CAAcwU,kBAAkBzU,SAAhC,CAAnC;AACAwV,uBAAuBxV,SAAvB,CAAiCE,WAAjC,GAA+CsV,sBAA/C;;AAEAjwC,QAAQkvC,iBAAR,GAA4BA,iBAA5B,C;;;;;;;;;;;;;;AChOA;AACA;;;;AAIA;;AAEA,IAAIL,cAAc,mBAAA5U,CAAQ,2DAAR,EAAyB4U,WAA3C;AACA,IAAIqB,OAAO,mBAAAjW,CAAQ,+CAAR,EAAmBiW,IAA9B;;AAEA,SAAS1N,iBAAT,CAA2B2N,cAA3B,EAA2C;AAC1C,MAAKA,cAAL,GAAsBA,cAAtB;AACA;;AAED;AACA;AACA;AACA3N,kBAAkBc,KAAlB,GAA0B,IAA1B;;AAEA;AACA;AACA;AACA;AACAd,kBAAkB4N,kBAAlB,GAAuC,UAAvC;;AAEA5N,kBAAkB6N,eAAlB,GAAoC,CAApC;AACA7N,kBAAkBthC,EAAlB,GAAuBshC,kBAAkB6N,eAAzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA7N,kBAAkB/H,SAAlB,CAA4BuJ,OAA5B,GAAsC,YAAW;AAChD,QAAO,SAASxB,kBAAkBc,KAAlC;AACA,CAFD;;AAIAd,kBAAkB/H,SAAlB,CAA4B6V,YAA5B,GAA2C,YAAW;AACrD,QAAO,KAAKnM,cAAL,CAAoB,KAAKl9B,MAAL,GAAc,CAAlC,MAAyCu7B,kBAAkB4N,kBAAlE;AACA,CAFD;;AAIA5N,kBAAkB/H,SAAlB,CAA4B8V,QAA5B,GAAuC,YAAW;AACjD,QAAO,KAAKJ,cAAZ;AACA,CAFD;;AAKA3N,kBAAkB/H,SAAlB,CAA4B+V,cAA5B,GAA6C,UAASC,IAAT,EAAe;AACxDA,MAAKC,MAAL,CAAY,KAAKP,cAAjB;AACH,CAFD;AAGA;;;;;;AAMA;AACA;AACA;;AAEA,SAASQ,sBAAT,GAAkC;AACjC,MAAKC,KAAL,GAAa,EAAb;AACA,QAAO,IAAP;AACA;;AAED;AACA;AACA;AACA;AACAD,uBAAuBlW,SAAvB,CAAiCsJ,GAAjC,GAAuC,UAASN,GAAT,EAAc;AACpD,KAAIA,QAAQjB,kBAAkBc,KAA9B,EAAqC;AACpC,SAAOd,kBAAkBc,KAAzB;AACA;AACD,KAAIuN,WAAW,KAAKD,KAAL,CAAWnN,GAAX,KAAmB,IAAlC;AACA,KAAIoN,aAAa,IAAjB,EAAuB;AACtB,SAAOA,QAAP;AACA;AACD,MAAKD,KAAL,CAAWnN,GAAX,IAAkBA,GAAlB;AACA,QAAOA,GAAP;AACA,CAVD;;AAYAkN,uBAAuBlW,SAAvB,CAAiC3d,GAAjC,GAAuC,UAAS2mB,GAAT,EAAc;AACpD,QAAO,KAAKmN,KAAL,CAAWnN,GAAX,KAAmB,IAA1B;AACA,CAFD;;AAIAn/B,OAAO27B,cAAP,CAAsB0Q,uBAAuBlW,SAA7C,EAAwD,QAAxD,EAAkE;AACjE3d,MAAM,eAAW;AAChB,SAAO,KAAK8zB,KAAL,CAAW3pC,MAAlB;AACA;AAHgE,CAAlE;;AAMA,SAASw7B,0BAAT,CAAoC0M,MAApC,EAA4ClL,WAA5C,EAAyD;AACxD,KAAIsM,WAAW,CAAf;AACA,KAAGpB,WAAW,IAAd,EAAoB;AACnB,MAAIsB,OAAO,IAAIP,IAAJ,EAAX;AACAO,OAAKC,MAAL,CAAYvB,MAAZ,EAAoBlL,WAApB;AACMsM,aAAWE,KAAKK,MAAL,EAAX;AACN;AACDtO,mBAAkBjI,IAAlB,CAAuB,IAAvB,EAA6BgW,QAA7B;AACA,MAAKhE,SAAL,GAAiB4C,MAAjB;AACA,MAAKlL,WAAL,GAAmBA,WAAnB;AACA;;AAEDxB,2BAA2BhI,SAA3B,GAAuCn2B,OAAOo2B,MAAP,CAAc8H,kBAAkB/H,SAAhC,CAAvC;AACAgI,2BAA2BhI,SAA3B,CAAqCiP,UAArC,GAAkDjH,0BAAlD;;AAEAA,2BAA2B/H,MAA3B,GAAoC,UAASyU,MAAT,EAAiBlL,WAAjB,EAA8B;AACjE,KAAIA,gBAAgBzB,kBAAkB4N,kBAAlC,IAAwDjB,WAAW,IAAvE,EAA6E;AAC5E;AACA,SAAO3M,kBAAkBc,KAAzB;AACA,EAHD,MAGO;AACN,SAAO,IAAIb,0BAAJ,CAA+B0M,MAA/B,EAAuClL,WAAvC,CAAP;AACA;AACD,CAPD;;AASA3/B,OAAO27B,cAAP,CAAsBwC,2BAA2BhI,SAAjD,EAA4D,QAA5D,EAAsE;AACrE3d,MAAM,eAAW;AAChB,SAAO,CAAP;AACA;AAHoE,CAAtE;;AAMA2lB,2BAA2BhI,SAA3B,CAAqC8J,SAArC,GAAiD,UAAS55B,KAAT,EAAgB;AAChE,QAAO,KAAK4hC,SAAZ;AACA,CAFD;;AAIA9J,2BAA2BhI,SAA3B,CAAqC0J,cAArC,GAAsD,UAASx5B,KAAT,EAAgB;AACrE,QAAO,KAAKs5B,WAAZ;AACA,CAFD;;AAIAxB,2BAA2BhI,SAA3B,CAAqCsW,MAArC,GAA8C,UAAS/P,KAAT,EAAgB;AAC7D,KAAI,SAASA,KAAb,EAAoB;AACnB,SAAO,IAAP;AACA,EAFD,MAEO,IAAI,EAAEA,iBAAiByB,0BAAnB,CAAJ,EAAoD;AAC1D,SAAO,KAAP;AACA,EAFM,MAEA,IAAI,KAAK8N,QAAL,OAAoBvP,MAAMuP,QAAN,EAAxB,EAA0C;AAChD,SAAO,KAAP,CADgD,CAClC;AACd,EAFM,MAEA;AACN,MAAG,KAAKtM,WAAL,KAAqBjD,MAAMiD,WAA9B,EACU,OAAO,KAAP,CADV,KAEW,IAAG,KAAKsI,SAAL,IAAgB,IAAnB,EACD,OAAOvL,MAAMuL,SAAN,IAAiB,IAAxB,CADC,KAGD,OAAO,KAAKA,SAAL,CAAewE,MAAf,CAAsB/P,MAAMuL,SAA5B,CAAP;AACV;AACD,CAfD;;AAiBA9J,2BAA2BhI,SAA3B,CAAqCl0B,QAArC,GAAgD,YAAW;AAC1D,KAAIyqC,KAAK,KAAKzE,SAAL,KAAmB,IAAnB,GAA0B,EAA1B,GAA+B,KAAKA,SAAL,CAAehmC,QAAf,EAAxC;AACA,KAAIyqC,GAAG/pC,MAAH,KAAc,CAAlB,EAAqB;AACpB,MAAI,KAAKg9B,WAAL,KAAqBzB,kBAAkB4N,kBAA3C,EAA+D;AAC9D,UAAO,GAAP;AACA,GAFD,MAEO;AACN,UAAO,KAAK,KAAKnM,WAAjB;AACA;AACD,EAND,MAMO;AACN,SAAO,KAAK,KAAKA,WAAV,GAAwB,GAAxB,GAA8B+M,EAArC;AACA;AACD,CAXD;;AAaA,SAASC,sBAAT,GAAkC;AACjCxO,4BAA2BlI,IAA3B,CAAgC,IAAhC,EAAsC,IAAtC,EAA4CiI,kBAAkB4N,kBAA9D;AACA,QAAO,IAAP;AACA;;AAEDa,uBAAuBxW,SAAvB,GAAmCn2B,OAAOo2B,MAAP,CAAc+H,2BAA2BhI,SAAzC,CAAnC;AACAwW,uBAAuBxW,SAAvB,CAAiCE,WAAjC,GAA+CsW,sBAA/C;;AAEAA,uBAAuBxW,SAAvB,CAAiCuJ,OAAjC,GAA2C,YAAW;AACrD,QAAO,IAAP;AACA,CAFD;;AAIAiN,uBAAuBxW,SAAvB,CAAiC8J,SAAjC,GAA6C,UAAS55B,KAAT,EAAgB;AAC5D,QAAO,IAAP;AACA,CAFD;;AAIAsmC,uBAAuBxW,SAAvB,CAAiC0J,cAAjC,GAAkD,UAASx5B,KAAT,EAAgB;AACjE,QAAO,KAAKs5B,WAAZ;AACA,CAFD;;AAIAgN,uBAAuBxW,SAAvB,CAAiCsW,MAAjC,GAA0C,UAAS/P,KAAT,EAAgB;AACzD,QAAO,SAASA,KAAhB;AACA,CAFD;;AAIAiQ,uBAAuBxW,SAAvB,CAAiCl0B,QAAjC,GAA4C,YAAW;AACtD,QAAO,GAAP;AACA,CAFD;;AAIAi8B,kBAAkBc,KAAlB,GAA0B,IAAI2N,sBAAJ,EAA1B;;AAEA,SAASC,sBAAT,CAAgCC,OAAhC,EAAyCC,YAAzC,EAAuD;AACtD;AACA;AACA;AACA;AACA,KAAItQ,IAAI,IAAIoP,IAAJ,EAAR;AACApP,GAAE4P,MAAF,CAASS,OAAT,EAAkBC,YAAlB;AACA,KAAIb,WAAWzP,EAAEgQ,MAAF,EAAf;AACAtO,mBAAkBjI,IAAlB,CAAuB,IAAvB,EAA6BgW,QAA7B;AACA,MAAKY,OAAL,GAAeA,OAAf;AACA,MAAKC,YAAL,GAAoBA,YAApB;AACA,QAAO,IAAP;AACA;;AAEDF,uBAAuBzW,SAAvB,GAAmCn2B,OAAOo2B,MAAP,CAAc8H,kBAAkB/H,SAAhC,CAAnC;AACAyW,uBAAuBzW,SAAvB,CAAiCE,WAAjC,GAA+CuW,sBAA/C;;AAEAA,uBAAuBzW,SAAvB,CAAiCuJ,OAAjC,GAA2C,YAAW;AACrD;AACA;AACA,QAAO,KAAKoN,YAAL,CAAkB,CAAlB,MAAyB5O,kBAAkB4N,kBAAlD;AACA,CAJD;;AAMA9rC,OAAO27B,cAAP,CAAsBiR,uBAAuBzW,SAA7C,EAAwD,QAAxD,EAAkE;AACjE3d,MAAM,eAAW;AAChB,SAAO,KAAKs0B,YAAL,CAAkBnqC,MAAzB;AACA;AAHgE,CAAlE;;AAMAiqC,uBAAuBzW,SAAvB,CAAiC8J,SAAjC,GAA6C,UAAS55B,KAAT,EAAgB;AAC5D,QAAO,KAAKwmC,OAAL,CAAaxmC,KAAb,CAAP;AACA,CAFD;;AAIAumC,uBAAuBzW,SAAvB,CAAiC0J,cAAjC,GAAkD,UAASx5B,KAAT,EAAgB;AACjE,QAAO,KAAKymC,YAAL,CAAkBzmC,KAAlB,CAAP;AACA,CAFD;;AAIAumC,uBAAuBzW,SAAvB,CAAiCsW,MAAjC,GAA0C,UAAS/P,KAAT,EAAgB;AACzD,KAAI,SAASA,KAAb,EAAoB;AACnB,SAAO,IAAP;AACA,EAFD,MAEO,IAAI,EAAEA,iBAAiBkQ,sBAAnB,CAAJ,EAAgD;AACtD,SAAO,KAAP;AACA,EAFM,MAEA,IAAI,KAAKX,QAAL,OAAoBvP,MAAMuP,QAAN,EAAxB,EAA0C;AAChD,SAAO,KAAP,CADgD,CAClC;AACd,EAFM,MAEA;AACN,SAAO,KAAKa,YAAL,KAAsBpQ,MAAMoQ,YAA5B,IACL,KAAKD,OAAL,KAAiBnQ,MAAMmQ,OADzB;AAEA;AACD,CAXD;;AAaAD,uBAAuBzW,SAAvB,CAAiCl0B,QAAjC,GAA4C,YAAW;AACtD,KAAI,KAAKy9B,OAAL,EAAJ,EAAoB;AACnB,SAAO,IAAP;AACA,EAFD,MAEO;AACN,MAAI/G,IAAI,GAAR;AACA,OAAK,IAAIrgB,IAAI,CAAb,EAAgBA,IAAI,KAAKw0B,YAAL,CAAkBnqC,MAAtC,EAA8C2V,GAA9C,EAAmD;AAClD,OAAIA,IAAI,CAAR,EAAW;AACVqgB,QAAIA,IAAI,IAAR;AACA;AACD,OAAI,KAAKmU,YAAL,CAAkBx0B,CAAlB,MAAyB4lB,kBAAkB4N,kBAA/C,EAAmE;AAClEnT,QAAIA,IAAI,GAAR;AACA;AACA;AACDA,OAAIA,IAAI,KAAKmU,YAAL,CAAkBx0B,CAAlB,CAAR;AACA,OAAI,KAAKu0B,OAAL,CAAav0B,CAAb,MAAoB,IAAxB,EAA8B;AAC7BqgB,QAAIA,IAAI,GAAJ,GAAU,KAAKkU,OAAL,CAAav0B,CAAb,CAAd;AACA,IAFD,MAEO;AACNqgB,QAAIA,IAAI,MAAR;AACA;AACD;AACD,SAAOA,IAAI,GAAX;AACA;AACD,CAtBD;;AAwBA;AACA;AACA;AACA,SAASsF,gCAAT,CAA0CI,GAA1C,EAA+C0O,YAA/C,EAA6D;AAC5D,KAAIA,iBAAiBt0B,SAAjB,IAA8Bs0B,iBAAiB,IAAnD,EAAyD;AACxDA,iBAAexC,YAAYvL,KAA3B;AACA;AACD;AACA;AACA,KAAI+N,aAAa9E,SAAb,KAA2B,IAA3B,IAAmC8E,iBAAiBxC,YAAYvL,KAApE,EAA2E;AAC1E,SAAOd,kBAAkBc,KAAzB;AACA;AACD;AACA,KAAI6L,SAAS5M,iCAAiCI,GAAjC,EAAsC0O,aAAa9E,SAAnD,CAAb;AACA,KAAIzI,QAAQnB,IAAIuB,MAAJ,CAAWmN,aAAalF,aAAxB,CAAZ;AACA,KAAI9I,aAAaS,MAAMf,WAAN,CAAkB,CAAlB,CAAjB;AACA,QAAON,2BAA2B/H,MAA3B,CAAkCyU,MAAlC,EAA0C9L,WAAWoB,WAAX,CAAuBC,WAAjE,CAAP;AACA;AACD;;;;;;;;;;;;AAYA,SAAS4M,KAAT,CAAel2B,CAAf,EAAkBm2B,CAAlB,EAAqBC,cAArB,EAAqCC,UAArC,EAAiD;AAChD;AACA,KAAIr2B,MAAMm2B,CAAV,EAAa;AACZ,SAAOn2B,CAAP;AACA;AACD,KAAIA,aAAaqnB,0BAAb,IAA2C8O,aAAa9O,0BAA5D,EAAwF;AACvF,SAAOiP,gBAAgBt2B,CAAhB,EAAmBm2B,CAAnB,EAAsBC,cAAtB,EAAsCC,UAAtC,CAAP;AACA;AACD;AACA;AACA,KAAID,cAAJ,EAAoB;AACnB,MAAIp2B,aAAa61B,sBAAjB,EAAyC;AACxC,UAAO71B,CAAP;AACA;AACD,MAAIm2B,aAAaN,sBAAjB,EAAyC;AACxC,UAAOM,CAAP;AACA;AACD;AACD;AACA,KAAIn2B,aAAaqnB,0BAAjB,EAA6C;AAC5CrnB,MAAI,IAAI81B,sBAAJ,CAA2B,CAAC91B,EAAEmpB,SAAF,EAAD,CAA3B,EAA4C,CAACnpB,EAAE6oB,WAAH,CAA5C,CAAJ;AACA;AACD,KAAIsN,aAAa9O,0BAAjB,EAA6C;AAC5C8O,MAAI,IAAIL,sBAAJ,CAA2B,CAACK,EAAEhN,SAAF,EAAD,CAA3B,EAA4C,CAACgN,EAAEtN,WAAH,CAA5C,CAAJ;AACA;AACD,QAAO0N,YAAYv2B,CAAZ,EAAem2B,CAAf,EAAkBC,cAAlB,EAAkCC,UAAlC,CAAP;AACA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAT,CAAyBt2B,CAAzB,EAA4Bm2B,CAA5B,EAA+BC,cAA/B,EAA+CC,UAA/C,EAA2D;AAC1D,KAAIA,eAAe,IAAnB,EAAyB;AACxB,MAAIvE,WAAWuE,WAAW30B,GAAX,CAAe1B,CAAf,EAAkBm2B,CAAlB,CAAf;AACA,MAAIrE,aAAa,IAAjB,EAAuB;AACtB,UAAOA,QAAP;AACA;AACDA,aAAWuE,WAAW30B,GAAX,CAAey0B,CAAf,EAAkBn2B,CAAlB,CAAX;AACA,MAAI8xB,aAAa,IAAjB,EAAuB;AACtB,UAAOA,QAAP;AACA;AACD;;AAED,KAAI0E,YAAYC,UAAUz2B,CAAV,EAAam2B,CAAb,EAAgBC,cAAhB,CAAhB;AACA,KAAII,cAAc,IAAlB,EAAwB;AACvB,MAAIH,eAAe,IAAnB,EAAyB;AACxBA,cAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBK,SAArB;AACA;AACD,SAAOA,SAAP;AACA;AACD,KAAIx2B,EAAE6oB,WAAF,KAAkBsN,EAAEtN,WAAxB,EAAqC;AACpC,MAAIkL,SAASmC,MAAMl2B,EAAEmxB,SAAR,EAAmBgF,EAAEhF,SAArB,EAAgCiF,cAAhC,EAAgDC,UAAhD,CAAb;AACA;AACA;AACA,MAAItC,WAAW/zB,EAAEmxB,SAAjB,EAA4B;AAC3B,UAAOnxB,CAAP,CAD2B,CACjB;AACV;AACD,MAAI+zB,WAAWoC,EAAEhF,SAAjB,EAA4B;AAC3B,UAAOgF,CAAP,CAD2B,CACjB;AACV;AACD;AACA;AACA;AACA;AACA,MAAIO,MAAMrP,2BAA2B/H,MAA3B,CAAkCyU,MAAlC,EAA0C/zB,EAAE6oB,WAA5C,CAAV;AACA,MAAIwN,eAAe,IAAnB,EAAyB;AACxBA,cAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBO,GAArB;AACA;AACD,SAAOA,GAAP;AACA,EAnBD,MAmBO;AAAE;AACR;AACA,MAAIC,eAAe,IAAnB;AACA,MAAI32B,MAAMm2B,CAAN,IAAYn2B,EAAEmxB,SAAF,KAAgB,IAAhB,IAAwBnxB,EAAEmxB,SAAF,KAAgBgF,EAAEhF,SAA1D,EAAsE;AAAE;AACtD;AACA;AACjBwF,kBAAe32B,EAAEmxB,SAAjB;AACA;AACD,MAAIwF,iBAAiB,IAArB,EAA2B;AAAE;AAC5B;AACA,OAAIC,WAAW,CAAE52B,EAAE6oB,WAAJ,EAAiBsN,EAAEtN,WAAnB,CAAf;AACA,OAAI7oB,EAAE6oB,WAAF,GAAgBsN,EAAEtN,WAAtB,EAAmC;AAClC+N,aAAS,CAAT,IAAcT,EAAEtN,WAAhB;AACA+N,aAAS,CAAT,IAAc52B,EAAE6oB,WAAhB;AACA;AACD,OAAIkN,UAAU,CAAEY,YAAF,EAAgBA,YAAhB,CAAd;AACA,OAAIE,MAAM,IAAIf,sBAAJ,CAA2BC,OAA3B,EAAoCa,QAApC,CAAV;AACA,OAAIP,eAAe,IAAnB,EAAyB;AACxBA,eAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBU,GAArB;AACA;AACD,UAAOA,GAAP;AACA;AACD;AACA;AACA;AACA,MAAID,WAAW,CAAE52B,EAAE6oB,WAAJ,EAAiBsN,EAAEtN,WAAnB,CAAf;AACA,MAAIkN,UAAU,CAAE/1B,EAAEmxB,SAAJ,EAAegF,EAAEhF,SAAjB,CAAd;AACA,MAAInxB,EAAE6oB,WAAF,GAAgBsN,EAAEtN,WAAtB,EAAmC;AAAE;AACpC+N,YAAS,CAAT,IAAcT,EAAEtN,WAAhB;AACA+N,YAAS,CAAT,IAAc52B,EAAE6oB,WAAhB;AACAkN,aAAU,CAAEI,EAAEhF,SAAJ,EAAenxB,EAAEmxB,SAAjB,CAAV;AACA;AACD,MAAI2F,KAAK,IAAIhB,sBAAJ,CAA2BC,OAA3B,EAAoCa,QAApC,CAAT;AACA,MAAIP,eAAe,IAAnB,EAAyB;AACxBA,cAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBW,EAArB;AACA;AACD,SAAOA,EAAP;AACA;AACD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASL,SAAT,CAAmBz2B,CAAnB,EAAsBm2B,CAAtB,EAAyBC,cAAzB,EAAyC;AACxC,KAAIA,cAAJ,EAAoB;AACnB,MAAIp2B,MAAMonB,kBAAkBc,KAA5B,EAAmC;AAClC,UAAOd,kBAAkBc,KAAzB,CADkC,CACF;AAChC;AACD,MAAIiO,MAAM/O,kBAAkBc,KAA5B,EAAmC;AAClC,UAAOd,kBAAkBc,KAAzB,CADkC,CACF;AAChC;AACD,EAPD,MAOO;AACN,MAAIloB,MAAMonB,kBAAkBc,KAAxB,IAAiCiO,MAAM/O,kBAAkBc,KAA7D,EAAoE;AACnE,UAAOd,kBAAkBc,KAAzB,CADmE,CACnC;AAChC,GAFD,MAEO,IAAIloB,MAAMonB,kBAAkBc,KAA5B,EAAmC;AAAE;AAC3C,OAAI0O,WAAW,CAAET,EAAEtN,WAAJ,EACbzB,kBAAkB4N,kBADL,CAAf;AAEA,OAAIe,UAAU,CAAEI,EAAEhF,SAAJ,EAAe,IAAf,CAAd;AACA,UAAO,IAAI2E,sBAAJ,CAA2BC,OAA3B,EAAoCa,QAApC,CAAP;AACA,GALM,MAKA,IAAIT,MAAM/O,kBAAkBc,KAA5B,EAAmC;AAAE;AAC3C,OAAI0O,WAAW,CAAE52B,EAAE6oB,WAAJ,EAAiBzB,kBAAkB4N,kBAAnC,CAAf;AACA,OAAIe,UAAU,CAAE/1B,EAAEmxB,SAAJ,EAAe,IAAf,CAAd;AACA,UAAO,IAAI2E,sBAAJ,CAA2BC,OAA3B,EAAoCa,QAApC,CAAP;AACA;AACD;AACD,QAAO,IAAP;AACA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASL,WAAT,CAAqBv2B,CAArB,EAAwBm2B,CAAxB,EAA2BC,cAA3B,EAA2CC,UAA3C,EAAuD;AACtD,KAAIA,eAAe,IAAnB,EAAyB;AACxB,MAAIvE,WAAWuE,WAAW30B,GAAX,CAAe1B,CAAf,EAAkBm2B,CAAlB,CAAf;AACA,MAAIrE,aAAa,IAAjB,EAAuB;AACtB,UAAOA,QAAP;AACA;AACDA,aAAWuE,WAAW30B,GAAX,CAAey0B,CAAf,EAAkBn2B,CAAlB,CAAX;AACA,MAAI8xB,aAAa,IAAjB,EAAuB;AACtB,UAAOA,QAAP;AACA;AACD;AACD;AACA,KAAItwB,IAAI,CAAR,CAZsD,CAY3C;AACX,KAAIoa,IAAI,CAAR,CAbsD,CAa3C;AACX,KAAI+E,IAAI,CAAR,CAdsD,CAc3C;;AAEX,KAAIoW,qBAAqB,EAAzB;AACA,KAAIC,gBAAgB,EAApB;AACA;AACA,QAAOx1B,IAAIxB,EAAEg2B,YAAF,CAAenqC,MAAnB,IAA6B+vB,IAAIua,EAAEH,YAAF,CAAenqC,MAAvD,EAA+D;AAC9D,MAAIorC,WAAWj3B,EAAE+1B,OAAF,CAAUv0B,CAAV,CAAf;AACA,MAAI01B,WAAWf,EAAEJ,OAAF,CAAUna,CAAV,CAAf;AACA,MAAI5b,EAAEg2B,YAAF,CAAex0B,CAAf,MAAsB20B,EAAEH,YAAF,CAAepa,CAAf,CAA1B,EAA6C;AAC5C;AACA,OAAIub,UAAUn3B,EAAEg2B,YAAF,CAAex0B,CAAf,CAAd;AACA;AACA,OAAI41B,cAAcD,YAAY/P,kBAAkB4N,kBAA9B,IAChBiC,aAAa,IADG,IACKC,aAAa,IADpC;AAEA,OAAIG,QAASJ,aAAa,IAAb,IAAqBC,aAAa,IAAlC,IAA0CD,aAAaC,QAApE,CAN4C,CAMmC;AAC3D;AACA;AACpB,OAAIE,eAAeC,KAAnB,EAA0B;AACzBL,kBAAcrW,CAAd,IAAmBsW,QAAnB,CADyB,CACI;AAC7BF,uBAAmBpW,CAAnB,IAAwBwW,OAAxB;AACA,IAHD,MAGO;AAAE;AACR,QAAIG,eAAepB,MAAMe,QAAN,EAAgBC,QAAhB,EAA0Bd,cAA1B,EAA0CC,UAA1C,CAAnB;AACAW,kBAAcrW,CAAd,IAAmB2W,YAAnB;AACAP,uBAAmBpW,CAAnB,IAAwBwW,OAAxB;AACA;AACD31B,QAAK,CAAL,CAjB4C,CAiBpC;AACRoa,QAAK,CAAL,CAlB4C,CAkBpC;AACR,GAnBD,MAmBO,IAAI5b,EAAEg2B,YAAF,CAAex0B,CAAf,IAAoB20B,EAAEH,YAAF,CAAepa,CAAf,CAAxB,EAA2C;AAAE;AACnDob,iBAAcrW,CAAd,IAAmBsW,QAAnB;AACAF,sBAAmBpW,CAAnB,IAAwB3gB,EAAEg2B,YAAF,CAAex0B,CAAf,CAAxB;AACAA,QAAK,CAAL;AACA,GAJM,MAIA;AAAE;AACRw1B,iBAAcrW,CAAd,IAAmBuW,QAAnB;AACAH,sBAAmBpW,CAAnB,IAAwBwV,EAAEH,YAAF,CAAepa,CAAf,CAAxB;AACAA,QAAK,CAAL;AACA;AACD+E,OAAK,CAAL;AACA;AACD;AACA,KAAInf,IAAIxB,EAAEg2B,YAAF,CAAenqC,MAAvB,EAA+B;AAC9B,OAAK,IAAIinC,IAAItxB,CAAb,EAAgBsxB,IAAI9yB,EAAEg2B,YAAF,CAAenqC,MAAnC,EAA2CinC,GAA3C,EAAgD;AAC/CkE,iBAAcrW,CAAd,IAAmB3gB,EAAE+1B,OAAF,CAAUjD,CAAV,CAAnB;AACAiE,sBAAmBpW,CAAnB,IAAwB3gB,EAAEg2B,YAAF,CAAelD,CAAf,CAAxB;AACAnS,QAAK,CAAL;AACA;AACD,EAND,MAMO;AACN,OAAK,IAAImS,IAAIlX,CAAb,EAAgBkX,IAAIqD,EAAEH,YAAF,CAAenqC,MAAnC,EAA2CinC,GAA3C,EAAgD;AAC/CkE,iBAAcrW,CAAd,IAAmBwV,EAAEJ,OAAF,CAAUjD,CAAV,CAAnB;AACAiE,sBAAmBpW,CAAnB,IAAwBwV,EAAEH,YAAF,CAAelD,CAAf,CAAxB;AACAnS,QAAK,CAAL;AACA;AACD;AACD;AACA,KAAIA,IAAIqW,cAAcnrC,MAAtB,EAA8B;AAAE;AAC/B,MAAI80B,MAAM,CAAV,EAAa;AAAE;AACd,OAAImW,KAAKzP,2BAA2B/H,MAA3B,CAAkC0X,cAAc,CAAd,CAAlC,EACPD,mBAAmB,CAAnB,CADO,CAAT;AAEA,OAAIV,eAAe,IAAnB,EAAyB;AACxBA,eAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBW,EAArB;AACA;AACD,UAAOA,EAAP;AACA;AACDE,kBAAgBA,cAAc/R,KAAd,CAAoB,CAApB,EAAuBtE,CAAvB,CAAhB;AACAoW,uBAAqBA,mBAAmB9R,KAAnB,CAAyB,CAAzB,EAA4BtE,CAA5B,CAArB;AACA;;AAED,KAAI4W,IAAI,IAAIzB,sBAAJ,CAA2BkB,aAA3B,EAA0CD,kBAA1C,CAAR;;AAEA;AACA;AACA,KAAIQ,MAAMv3B,CAAV,EAAa;AACZ,MAAIq2B,eAAe,IAAnB,EAAyB;AACxBA,cAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBn2B,CAArB;AACA;AACD,SAAOA,CAAP;AACA;AACD,KAAIu3B,MAAMpB,CAAV,EAAa;AACZ,MAAIE,eAAe,IAAnB,EAAyB;AACxBA,cAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBA,CAArB;AACA;AACD,SAAOA,CAAP;AACA;AACDqB,sBAAqBR,aAArB;;AAEA,KAAIX,eAAe,IAAnB,EAAyB;AACxBA,aAAWt1B,GAAX,CAAef,CAAf,EAAkBm2B,CAAlB,EAAqBoB,CAArB;AACA;AACD,QAAOA,CAAP;AACA;;AAED;AACA;AACA;AACA;AACA,SAASC,oBAAT,CAA8BzB,OAA9B,EAAuC;AACtC,KAAI0B,gBAAgB,EAApB;;AAEA,MAAK,IAAI3E,IAAI,CAAb,EAAgBA,IAAIiD,QAAQlqC,MAA5B,EAAoCinC,GAApC,EAAyC;AACxC,MAAIiB,SAASgC,QAAQjD,CAAR,CAAb;AACA,MAAI,EAAEiB,UAAU0D,aAAZ,CAAJ,EAAgC;AAC/BA,iBAAc1D,MAAd,IAAwBA,MAAxB;AACA;AACD;AACD,MAAK,IAAI2D,IAAI,CAAb,EAAgBA,IAAI3B,QAAQlqC,MAA5B,EAAoC6rC,GAApC,EAAyC;AACxC3B,UAAQ2B,CAAR,IAAaD,cAAc1B,QAAQ2B,CAAR,CAAd,CAAb;AACA;AACD;;AAED,SAASC,0BAAT,CAAoCjuC,OAApC,EAA6CkuC,YAA7C,EAA2DC,OAA3D,EAAoE;AACnE,KAAInuC,QAAQk/B,OAAR,EAAJ,EAAuB;AACtB,SAAOl/B,OAAP;AACA;AACD,KAAI+rC,WAAWoC,QAAQnuC,OAAR,KAAoB,IAAnC;AACA,KAAI+rC,aAAa,IAAjB,EAAuB;AACtB,SAAOA,QAAP;AACA;AACDA,YAAWmC,aAAal2B,GAAb,CAAiBhY,OAAjB,CAAX;AACA,KAAI+rC,aAAa,IAAjB,EAAuB;AACtBoC,UAAQnuC,OAAR,IAAmB+rC,QAAnB;AACA,SAAOA,QAAP;AACA;AACD,KAAIqC,UAAU,KAAd;AACA,KAAI/B,UAAU,EAAd;AACA,MAAK,IAAIv0B,IAAI,CAAb,EAAgBA,IAAIu0B,QAAQlqC,MAA5B,EAAoC2V,GAApC,EAAyC;AACxC,MAAIuyB,SAAS4D,2BAA2BjuC,QAAQy/B,SAAR,CAAkB3nB,CAAlB,CAA3B,EAAiDo2B,YAAjD,EAA+DC,OAA/D,CAAb;AACA,MAAIC,WAAW/D,WAAWrqC,QAAQy/B,SAAR,CAAkB3nB,CAAlB,CAA1B,EAAgD;AAC/C,OAAI,CAACs2B,OAAL,EAAc;AACb/B,cAAU,EAAV;AACA,SAAK,IAAIna,IAAI,CAAb,EAAgBA,IAAIlyB,QAAQmC,MAA5B,EAAoC+vB,GAApC,EAAyC;AACxCma,aAAQna,CAAR,IAAalyB,QAAQy/B,SAAR,CAAkBvN,CAAlB,CAAb;AACA;AACDkc,cAAU,IAAV;AACA;AACD/B,WAAQv0B,CAAR,IAAauyB,MAAb;AACA;AACD;AACD,KAAI,CAAC+D,OAAL,EAAc;AACbF,eAAajP,GAAb,CAAiBj/B,OAAjB;AACAmuC,UAAQnuC,OAAR,IAAmBA,OAAnB;AACA,SAAOA,OAAP;AACA;AACD,KAAIquC,UAAU,IAAd;AACA,KAAIhC,QAAQlqC,MAAR,KAAmB,CAAvB,EAA0B;AACzBksC,YAAU3Q,kBAAkBc,KAA5B;AACA,EAFD,MAEO,IAAI6N,QAAQlqC,MAAR,KAAmB,CAAvB,EAA0B;AAChCksC,YAAU1Q,2BAA2B/H,MAA3B,CAAkCyW,QAAQ,CAAR,CAAlC,EAA8CrsC,QACrDq/B,cADqD,CACtC,CADsC,CAA9C,CAAV;AAEA,EAHM,MAGA;AACNgP,YAAU,IAAIjC,sBAAJ,CAA2BC,OAA3B,EAAoCrsC,QAAQssC,YAA5C,CAAV;AACA;AACD4B,cAAajP,GAAb,CAAiBoP,OAAjB;AACAF,SAAQE,OAAR,IAAmBA,OAAnB;AACAF,SAAQnuC,OAAR,IAAmBquC,OAAnB;;AAEA,QAAOA,OAAP;AACA;;AAED;AACA,SAASC,kBAAT,CAA4BtuC,OAA5B,EAAqCuuC,KAArC,EAA4CJ,OAA5C,EAAqD;AACpD,KAAII,UAAU,IAAd,EAAoB;AACnBA,UAAQ,EAAR;AACA,SAAOD,mBAAmBtuC,OAAnB,EAA4BuuC,KAA5B,EAAmCJ,OAAnC,CAAP;AACA,EAHD,MAGO,IAAIA,YAAY,IAAhB,EAAsB;AAC5BA,YAAU,EAAV;AACA,SAAOG,mBAAmBtuC,OAAnB,EAA4BuuC,KAA5B,EAAmCJ,OAAnC,CAAP;AACA,EAHM,MAGA;AACN,MAAInuC,YAAY,IAAZ,IAAoBmuC,QAAQnuC,OAAR,MAAqB,IAA7C,EAAmD;AAClD,UAAOuuC,KAAP;AACA;AACDJ,UAAQnuC,OAAR,IAAmBA,OAAnB;AACAuuC,QAAMvoC,IAAN,CAAWhG,OAAX;AACA,OAAK,IAAI8X,IAAI,CAAb,EAAgBA,IAAI9X,QAAQmC,MAA5B,EAAoC2V,GAApC,EAAyC;AACxCw2B,sBAAmBtuC,QAAQy/B,SAAR,CAAkB3nB,CAAlB,CAAnB,EAAyCy2B,KAAzC,EAAgDJ,OAAhD;AACA;AACD,SAAOI,KAAP;AACA;AACD;;AAEDrzC,QAAQsxC,KAAR,GAAgBA,KAAhB;AACAtxC,QAAQwiC,iBAAR,GAA4BA,iBAA5B;AACAxiC,QAAQ2wC,sBAAR,GAAiCA,sBAAjC;AACA3wC,QAAQyiC,0BAAR,GAAqCA,0BAArC;AACAziC,QAAQuiC,gCAAR,GAA2CA,gCAA3C;AACAviC,QAAQ+yC,0BAAR,GAAqCA,0BAArC,C;;;;;;;;;;;;;;AC1tBA;AACA;;;;AAIA;;AAEA,IAAI/Y,QAAQ,mBAAAC,CAAQ,+CAAR,EAAmBD,KAA/B;AACA,IAAIsZ,uBAAuB,mBAAArZ,CAAQ,2EAAR,EAAiCqZ,oBAA5D;AACA,IAAIC,qBAAqB,mBAAAtZ,CAAQ,2EAAR,EAAiCsZ,kBAA1D;;AAEA,SAASxO,UAAT,GAAsB;AAClB,SAAKyO,UAAL,GAAkB,CAAEF,qBAAqBG,QAAvB,CAAlB;AACA,SAAKnO,OAAL,GAAe,IAAf;AACA,SAAKoO,YAAL,GAAoB,CAAC,CAArB;AACA,WAAO,IAAP;AACH;;AAED3O,WAAW4O,iBAAX,GAA+B,EAA/B;AACA5O,WAAW6O,iBAAX,GAA+B,EAA/B;;AAGA7O,WAAWtK,SAAX,CAAqBoZ,YAArB,GAAoC,UAASC,WAAT,EAAsB;AACtD,QAAIC,iBAAiB,OAArB;AACA,QAAIA,mBAAiBD,WAArB,EAAkC;AAC9BxjC,gBAAQC,GAAR,CAAY,yDAAuDwjC,cAAvD,GAAsE,IAAtE,GAA2ED,WAAvF;AACH;AACJ,CALD;;AAOA/O,WAAWtK,SAAX,CAAqBuZ,gBAArB,GAAwC,UAASnM,QAAT,EAAmB;AACvD,SAAK2L,UAAL,CAAgB1oC,IAAhB,CAAqB+8B,QAArB;AACH,CAFD;;AAIA9C,WAAWtK,SAAX,CAAqBwZ,oBAArB,GAA4C,YAAW;AACnD,SAAKT,UAAL,GAAkB,EAAlB;AACH,CAFD;;AAIAzO,WAAWtK,SAAX,CAAqByZ,eAArB,GAAuC,YAAW;AAC9C,QAAIC,aAAa,KAAKC,aAAL,EAAjB;AACA,QAAID,eAAa,IAAjB,EAAuB;AACnB,cAAM,gEAAN;AACH;AACD,QAAI32B,SAAS,KAAKm2B,iBAAL,CAAuBQ,UAAvB,CAAb;AACA,QAAG32B,WAAST,SAAZ,EAAuB;AACnBS,iBAAS22B,WAAWjtC,MAAX,CAAkB,UAAS6kC,CAAT,EAAYhQ,CAAZ,EAAenf,CAAf,EAAkB;AAAEmvB,cAAEhQ,CAAF,IAAOnf,CAAP;AAAW,SAAjD,CAAT;AACAY,eAAO8d,GAAP,GAAatB,MAAMsB,GAAnB;AACA,aAAKqY,iBAAL,CAAuBQ,UAAvB,IAAqC32B,MAArC;AACH;AACD,WAAOA,MAAP;AACH,CAZD;;AAcA;AACA;AACA;AACA;AACAunB,WAAWtK,SAAX,CAAqBuT,eAArB,GAAuC,YAAW;AAC9C,QAAIpF,YAAY,KAAKA,SAArB;AACA,QAAIA,cAAY,IAAhB,EAAsB;AAClB,cAAM,+DAAN;AACH;AACD,QAAIprB,SAAS,KAAKo2B,iBAAL,CAAuBhL,SAAvB,CAAb;AACA,QAAGprB,WAAST,SAAZ,EAAuB;AACnBS,iBAASorB,UAAU1hC,MAAV,CAAiB,UAAS6kC,CAAT,EAAYhQ,CAAZ,EAAenf,CAAf,EAAkB;AAAEmvB,cAAEhQ,CAAF,IAAOnf,CAAP;AAAW,SAAhD,CAAT;AACA,aAAKg3B,iBAAL,CAAuBhL,SAAvB,IAAoCprB,MAApC;AACH;AACD,WAAOA,MAAP;AACH,CAXD;;AAaAunB,WAAWtK,SAAX,CAAqB4Z,YAArB,GAAoC,UAASC,SAAT,EAAoB;AACpD,QAAI5N,QAAQ,KAAKwN,eAAL,GAAuBI,SAAvB,CAAZ;AACA,QAAI5N,UAAS3pB,SAAb,EAAwB;AACpB,eAAO2pB,KAAP;AACH,KAFD,MAEO;AACH,eAAO1M,MAAM0G,YAAb;AACH;AACJ,CAPD;;AAUA;AACAqE,WAAWtK,SAAX,CAAqB8Z,cAArB,GAAsC,UAAS/7B,CAAT,EAAY;AAC9C,QAAIlX,OAAOkX,EAAEg8B,iBAAF,GAAsBlzC,IAAjC;AACA,QAAIC,SAASiX,EAAEg8B,iBAAF,GAAsBjzC,MAAnC;AACA,WAAO,UAAUD,IAAV,GAAiB,GAAjB,GAAuBC,MAA9B;AACH,CAJD;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwjC,WAAWtK,SAAX,CAAqBga,oBAArB,GAA4C,UAAStb,CAAT,EAAY;AACpD,QAAIA,MAAI,IAAR,EAAc;AACV,eAAO,YAAP;AACH;AACD,QAAI8D,IAAI9D,EAAEp0B,IAAV;AACA,QAAIk4B,MAAI,IAAR,EAAc;AACV,YAAI9D,EAAEz3B,IAAF,KAASs4B,MAAMsB,GAAnB,EAAwB;AACpB2B,gBAAI,OAAJ;AACH,SAFD,MAEO;AACHA,gBAAI,MAAM9D,EAAEz3B,IAAR,GAAe,GAAnB;AACH;AACJ;AACDu7B,QAAIA,EAAErkB,OAAF,CAAU,IAAV,EAAe,KAAf,EAAsBA,OAAtB,CAA8B,IAA9B,EAAmC,KAAnC,EAA0CA,OAA1C,CAAkD,IAAlD,EAAuD,KAAvD,CAAJ;AACA,WAAO,MAAMqkB,CAAN,GAAU,GAAjB;AACH,CAdD;;AAgBA8H,WAAWtK,SAAX,CAAqBqN,wBAArB,GAAgD,YAAW;AACvD,WAAO,IAAIyL,kBAAJ,CAAuB,KAAKC,UAA5B,CAAP;AACH,CAFD;;AAIA;AACA;AACAzO,WAAWtK,SAAX,CAAqBia,OAArB,GAA+B,UAASjI,QAAT,EAAmBpI,SAAnB,EAA8BsQ,WAA9B,EAA2C;AACtE,WAAO,IAAP;AACH,CAFD;;AAIA5P,WAAWtK,SAAX,CAAqB6S,QAArB,GAAgC,UAASb,QAAT,EAAoBO,UAApB,EAAgC;AAC5D,WAAO,IAAP;AACH,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA1oC,OAAO27B,cAAP,CAAsB8E,WAAWtK,SAAjC,EAA4C,OAA5C,EAAqD;AACpD3d,SAAM,eAAW;AAChB,eAAO,KAAK42B,YAAZ;AACA,KAHmD;AAIpDv3B,SAAM,aAAS2nB,KAAT,EAAgB;AACrB,aAAK4P,YAAL,GAAoB5P,KAApB;AACA;AANmD,CAArD;;AAUA9jC,QAAQ+kC,UAAR,GAAqBA,UAArB,C;;;;;;;;;;;;;;AClJA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI6P,WAAW,mBAAA3a,CAAQ,uDAAR,EAAuB2a,QAAtC;AACA,IAAI7F,mBAAmB,mBAAA9U,CAAQ,uDAAR,EAAuB8U,gBAA9C;AACA,IAAI8F,qBAAqB,mBAAA5a,CAAQ,mDAAR,EAAqB4a,kBAA9C;;AAEA,SAAShG,WAAT,CAAqBM,MAArB,EAA6BhD,aAA7B,EAA4C;AAC3CyI,UAASra,IAAT,CAAc,IAAd;AACA;AACA,MAAKgS,SAAL,GAAiB4C,UAAU,IAA3B;AACA;AACA;AACA;AACA,MAAKhD,aAAL,GAAqBA,iBAAiB,CAAC,CAAvC;AACA,QAAO,IAAP;AACA;;AAED0C,YAAYpU,SAAZ,GAAwBn2B,OAAOo2B,MAAP,CAAcka,SAASna,SAAvB,CAAxB;AACAoU,YAAYpU,SAAZ,CAAsBE,WAAtB,GAAoCkU,WAApC;;AAEAA,YAAYpU,SAAZ,CAAsBqa,KAAtB,GAA8B,YAAW;AACxC,KAAI3gB,IAAI,CAAR;AACA,KAAI+Z,IAAI,IAAR;AACA,QAAOA,MAAM,IAAb,EAAmB;AAClBA,MAAIA,EAAE3B,SAAN;AACApY,OAAK,CAAL;AACA;AACD,QAAOA,CAAP;AACA,CARD;;AAUA;AACA;AACA0a,YAAYpU,SAAZ,CAAsBuJ,OAAtB,GAAgC,YAAW;AAC1C,QAAO,KAAKmI,aAAL,KAAuB,CAAC,CAA/B;AACA,CAFD;;AAIA;;AAEA0C,YAAYpU,SAAZ,CAAsBuV,iBAAtB,GAA0C,YAAW;AACpD,QAAOjB,gBAAP;AACA,CAFD;;AAIAF,YAAYpU,SAAZ,CAAsBsa,cAAtB,GAAuC,YAAW;AACjD,QAAO,IAAP;AACA,CAFD;;AAIAlG,YAAYpU,SAAZ,CAAsBua,UAAtB,GAAmC,YAAW;AAC7C,QAAO,IAAP;AACA,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACAnG,YAAYpU,SAAZ,CAAsBsC,OAAtB,GAAgC,YAAW;AAC1C,KAAI,KAAKgT,aAAL,OAAyB,CAA7B,EAAgC;AAC/B,SAAO,EAAP;AACA,EAFD,MAEO;AACN,SAAO,KAAKV,QAAL,CAActoC,GAAd,CAAkB,UAASyoC,KAAT,EAAgB;AACxC,UAAOA,MAAMzS,OAAN,EAAP;AACA,GAFM,EAEJ73B,IAFI,CAEC,EAFD,CAAP;AAGA;AACD,CARD;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA2pC,YAAYpU,SAAZ,CAAsBwa,YAAtB,GAAqC,YAAW;AAAE,QAAOJ,kBAAP;AAA4B,CAA9E;;AAEA;AACA;AACA;AACA;AACA;AACAhG,YAAYpU,SAAZ,CAAsBmS,YAAtB,GAAqC,UAASsI,SAAT,EAAoB,CAAG,CAA5D;;AAEArG,YAAYpU,SAAZ,CAAsBiV,QAAtB,GAAiC,UAAS9yB,CAAT,EAAY;AAC5C,QAAO,IAAP;AACA,CAFD;;AAIAiyB,YAAYpU,SAAZ,CAAsBsV,aAAtB,GAAsC,YAAW;AAChD,QAAO,CAAP;AACA,CAFD;;AAIAlB,YAAYpU,SAAZ,CAAsB0a,MAAtB,GAA+B,UAASC,OAAT,EAAkB;AAChD,QAAOA,QAAQC,aAAR,CAAsB,IAAtB,CAAP;AACA,CAFD;;AAIA;AACAr1C,QAAQ6uC,WAAR,GAAsBA,WAAtB;AACA,IAAIyG,QAAQ,mBAAArb,CAAQ,yDAAR,EAAwBqb,KAApC;;AAGA;AACA;AACA;;AAEAzG,YAAYpU,SAAZ,CAAsB8a,YAAtB,GAAqC,UAAS3M,SAAT,EAAoB4M,KAApB,EAA2B;AAC/D,QAAOF,MAAMC,YAAN,CAAmB,IAAnB,EAAyB3M,SAAzB,EAAoC4M,KAApC,CAAP;AACA,CAFD;;AAIA3G,YAAYpU,SAAZ,CAAsBl0B,QAAtB,GAAiC,UAASqiC,SAAT,EAAoBjN,IAApB,EAA0B;AAC1DiN,aAAYA,aAAa,IAAzB;AACAjN,QAAOA,QAAQ,IAAf;AACA,KAAIuS,IAAI,IAAR;AACA,KAAIjR,IAAI,GAAR;AACA,QAAOiR,MAAM,IAAN,IAAcA,MAAMvS,IAA3B,EAAiC;AAChC,MAAIiN,cAAc,IAAlB,EAAwB;AACvB,OAAI,CAACsF,EAAElK,OAAF,EAAL,EAAkB;AACjB/G,SAAKiR,EAAE/B,aAAP;AACA;AACD,GAJD,MAIO;AACN,OAAIsJ,KAAKvH,EAAE7J,SAAX;AACA,OAAI0J,WAAY0H,MAAM,CAAN,IAAWA,KAAK7M,UAAU3hC,MAA3B,GAAqC2hC,UAAU6M,EAAV,CAArC,GACX,KAAKA,EADT;AAEAxY,QAAK8Q,QAAL;AACA;AACD,MAAIG,EAAE3B,SAAF,KAAgB,IAAhB,KAAyB3D,cAAc,IAAd,IAAsB,CAACsF,EAAE3B,SAAF,CAAYvI,OAAZ,EAAhD,CAAJ,EAA4E;AAC3E/G,QAAK,GAAL;AACA;AACDiR,MAAIA,EAAE3B,SAAN;AACA;AACDtP,MAAK,GAAL;AACA,QAAOA,CAAP;AACA,CAvBD,C;;;;;;;;;;;;;;ACpIA;;;;AAIA;;AAEA;AACA;AACA;;AAEA,SAASjD,KAAT,GAAiB;AAChB,MAAKiF,MAAL,GAAc,IAAd;AACA,MAAKv9B,IAAL,GAAY,IAAZ,CAFgB,CAEE;AAClB,MAAKy6B,OAAL,GAAe,IAAf,CAHgB,CAGK;AACrB,MAAK7I,KAAL,GAAa,IAAb,CAJgB,CAIG;AACnB,MAAKqI,IAAL,GAAY,IAAZ,CALgB,CAKE;AAClB,MAAKzjB,UAAL,GAAkB,IAAlB,CANgB,CAMQ;AACxB,MAAK5W,IAAL,GAAY,IAAZ,CAPgB,CAOE;AAClB,MAAKC,MAAL,GAAc,IAAd,CARgB,CAQI;AACpB,MAAKykC,KAAL,GAAa,IAAb,CATgB,CASG;AACnB,QAAO,IAAP;AACA;;AAEDhM,MAAM0G,YAAN,GAAqB,CAArB;;AAEA;AACA;AACA1G,MAAM6H,OAAN,GAAgB,CAAC,CAAjB;;AAEA7H,MAAM4K,mBAAN,GAA4B,CAA5B;;AAEA5K,MAAMsB,GAAN,GAAY,CAAC,CAAb;;AAEA;AACA;AACA;;AAEAtB,MAAMmF,eAAN,GAAwB,CAAxB;;AAEA;AACA;;AAEAnF,MAAMoM,cAAN,GAAuB,CAAvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA9hC,OAAO27B,cAAP,CAAsBjG,MAAMS,SAA5B,EAAuC,MAAvC,EAA+C;AAC9C3d,MAAM,eAAW;AAChB,SAAO,KAAKkpB,KAAZ;AACA,EAH6C;AAI9C7pB,MAAM,aAASpX,IAAT,EAAe;AACpB,OAAKihC,KAAL,GAAajhC,IAAb;AACA;AAN6C,CAA/C;;AASAi1B,MAAMS,SAAN,CAAgBib,cAAhB,GAAiC,YAAW;AAC3C,QAAO,KAAKzW,MAAL,CAAY,CAAZ,CAAP;AACA,CAFD;;AAIAjF,MAAMS,SAAN,CAAgBkR,cAAhB,GAAiC,YAAW;AAC3C,QAAO,KAAK1M,MAAL,CAAY,CAAZ,CAAP;AACA,CAFD;;AAIA,SAASL,WAAT,CAAqBK,MAArB,EAA6Bv9B,IAA7B,EAAmCy6B,OAAnC,EAA4C7I,KAA5C,EAAmDqI,IAAnD,EAAyD;AACxD3B,OAAMO,IAAN,CAAW,IAAX;AACA,MAAK0E,MAAL,GAAcA,WAAWliB,SAAX,GAAuBkiB,MAAvB,GAAgCL,YAAY+W,YAA1D;AACA,MAAKj0C,IAAL,GAAYA,SAASqb,SAAT,GAAqBrb,IAArB,GAA4B,IAAxC;AACA,MAAKy6B,OAAL,GAAeA,YAAYpf,SAAZ,GAAwBof,OAAxB,GAAkCnC,MAAMmF,eAAvD;AACA,MAAK7L,KAAL,GAAaA,UAAUvW,SAAV,GAAsBuW,KAAtB,GAA8B,CAAC,CAA5C;AACA,MAAKqI,IAAL,GAAYA,SAAS5e,SAAT,GAAqB4e,IAArB,GAA4B,CAAC,CAAzC;AACA,MAAKzjB,UAAL,GAAkB,CAAC,CAAnB;AACA,KAAI,KAAK+mB,MAAL,CAAY,CAAZ,MAAmB,IAAvB,EAA6B;AAC5B,OAAK39B,IAAL,GAAY29B,OAAO,CAAP,EAAU39B,IAAtB;AACA,OAAKC,MAAL,GAAc09B,OAAO,CAAP,EAAU19B,MAAxB;AACA,EAHD,MAGO;AACN,OAAKA,MAAL,GAAc,CAAC,CAAf;AACA;AACD,QAAO,IAAP;AACA;;AAEDq9B,YAAYnE,SAAZ,GAAwBn2B,OAAOo2B,MAAP,CAAcV,MAAMS,SAApB,CAAxB;AACAmE,YAAYnE,SAAZ,CAAsBE,WAAtB,GAAoCiE,WAApC;;AAEA;AACA;AACAA,YAAY+W,YAAZ,GAA2B,CAAE,IAAF,EAAQ,IAAR,CAA3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA/W,YAAYnE,SAAZ,CAAsBmb,KAAtB,GAA8B,YAAW;AACxC,KAAIzc,IAAI,IAAIyF,WAAJ,CAAgB,KAAKK,MAArB,EAA6B,KAAKv9B,IAAlC,EAAwC,KAAKy6B,OAA7C,EAAsD,KAAK7I,KAA3D,EACN,KAAKqI,IADC,CAAR;AAEAxC,GAAEjhB,UAAF,GAAe,KAAKA,UAApB;AACAihB,GAAE73B,IAAF,GAAS,KAAKA,IAAd;AACA63B,GAAE53B,MAAF,GAAW,KAAKA,MAAhB;AACA43B,GAAEp0B,IAAF,GAAS,KAAKA,IAAd;AACA,QAAOo0B,CAAP;AACA,CARD;;AAUA70B,OAAO27B,cAAP,CAAsBrB,YAAYnE,SAAlC,EAA6C,MAA7C,EAAqD;AACpD3d,MAAM,eAAW;AAChB,MAAI,KAAKkpB,KAAL,KAAe,IAAnB,EAAyB;AACxB,UAAO,KAAKA,KAAZ;AACA;AACD,MAAI58B,QAAQ,KAAKuiC,cAAL,EAAZ;AACA,MAAIviC,UAAU,IAAd,EAAoB;AACnB,UAAO,IAAP;AACA;AACD,MAAI+qB,IAAI/qB,MAAM6O,IAAd;AACA,MAAI,KAAKqb,KAAL,GAAaa,CAAb,IAAkB,KAAKwH,IAAL,GAAYxH,CAAlC,EAAqC;AACpC,UAAO/qB,MAAM2zB,OAAN,CAAc,KAAKzJ,KAAnB,EAA0B,KAAKqI,IAA/B,CAAP;AACA,GAFD,MAEO;AACN,UAAO,OAAP;AACA;AACD,EAfmD;AAgBpDxf,MAAM,aAASpX,IAAT,EAAe;AACpB,OAAKihC,KAAL,GAAajhC,IAAb;AACA;AAlBmD,CAArD;;AAqBA65B,YAAYnE,SAAZ,CAAsBl0B,QAAtB,GAAiC,YAAW;AAC3C,KAAIsvC,MAAM,KAAK9wC,IAAf;AACA,KAAI8wC,QAAQ,IAAZ,EAAkB;AACjBA,QAAMA,IAAIj9B,OAAJ,CAAY,KAAZ,EAAmB,KAAnB,EAA0BA,OAA1B,CAAkC,KAAlC,EAAyC,KAAzC,EAAgDA,OAAhD,CAAwD,KAAxD,EAA+D,KAA/D,CAAN;AACA,EAFD,MAEO;AACNi9B,QAAM,WAAN;AACA;AACD,QAAO,OAAO,KAAK39B,UAAZ,GAAyB,GAAzB,GAA+B,KAAKob,KAApC,GAA4C,GAA5C,GAAkD,KAAKqI,IAAvD,GAA8D,IAA9D,GACLka,GADK,GACC,KADD,GACS,KAAKn0C,IADd,GACqB,GADrB,IAEJ,KAAKy6B,OAAL,GAAe,CAAf,GAAmB,cAAc,KAAKA,OAAtC,GAAgD,EAF5C,IAEkD,GAFlD,GAGL,KAAK76B,IAHA,GAGO,GAHP,GAGa,KAAKC,MAHlB,GAG2B,GAHlC;AAIA,CAXD;;AAaAvB,QAAQg6B,KAAR,GAAgBA,KAAhB;AACAh6B,QAAQ4+B,WAAR,GAAsBA,WAAtB,C;;;;;;;;;;;;;;;;ACtJA;;;;;AAKA,SAASkX,aAAT,CAAuB16B,CAAvB,EAA0B;AACtB,WAAO,MAAMA,EAAElW,IAAF,CAAO,IAAP,CAAN,GAAqB,GAA5B;AACH;;AAEDi7B,OAAO1F,SAAP,CAAiBsb,IAAjB,GAAwB5V,OAAO1F,SAAP,CAAiBsb,IAAjB,IAAyB7lB,KAAK8lB,KAAL,CAAW9lB,KAAK+lB,MAAL,KAAgB/lB,KAAK+B,GAAL,CAAS,CAAT,EAAY,EAAZ,CAA3B,CAAjD;;AAEAkO,OAAO1F,SAAP,CAAiB8V,QAAjB,GAA4B,YAAY;AACpC,QAAI2F,SAAJ;AAAA,QAAeC,KAAf;AAAA,QAAsBC,EAAtB;AAAA,QAA0BC,GAA1B;AAAA,QAA+BC,EAA/B;AAAA,QAAmCC,GAAnC;AAAA,QAAwCC,EAAxC;AAAA,QAA4CC,GAA5C;AAAA,QAAiDC,EAAjD;AAAA,QAAqD95B,CAArD;AAAA,QACIS,MAAM,KAAK9W,QAAL,EADV;;AAGA2vC,gBAAY74B,IAAIpW,MAAJ,GAAa,CAAzB,CAJoC,CAIR;AAC5BkvC,YAAQ94B,IAAIpW,MAAJ,GAAaivC,SAArB;AACAE,SAAKjW,OAAO1F,SAAP,CAAiBsb,IAAtB;AACAO,SAAK,UAAL;AACAE,SAAK,UAAL;AACA55B,QAAI,CAAJ;;AAEA,WAAOA,IAAIu5B,KAAX,EAAkB;AACdO,aACMr5B,IAAI0iB,UAAJ,CAAenjB,CAAf,IAAoB,IAAtB,GACC,CAACS,IAAI0iB,UAAJ,CAAe,EAAEnjB,CAAjB,IAAsB,IAAvB,KAAgC,CADjC,GAEC,CAACS,IAAI0iB,UAAJ,CAAe,EAAEnjB,CAAjB,IAAsB,IAAvB,KAAgC,EAFjC,GAGC,CAACS,IAAI0iB,UAAJ,CAAe,EAAEnjB,CAAjB,IAAsB,IAAvB,KAAgC,EAJrC;AAKA,UAAEA,CAAF;;AAEA85B,aAAQ,CAACA,KAAK,MAAN,IAAgBJ,EAAjB,IAAwB,CAAE,CAACI,OAAO,EAAR,IAAcJ,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAF,GAAmE,UAAxE;AACAI,aAAMA,MAAM,EAAP,GAAcA,OAAO,EAA1B;AACAA,aAAQ,CAACA,KAAK,MAAN,IAAgBF,EAAjB,IAAwB,CAAE,CAACE,OAAO,EAAR,IAAcF,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAF,GAAmE,UAAxE;;AAEAJ,cAAMM,EAAN;AACAN,aAAMA,MAAM,EAAP,GAAcA,OAAO,EAA1B;AACAC,cAAS,CAACD,KAAK,MAAN,IAAgB,CAAjB,IAAuB,CAAE,CAACA,OAAO,EAAR,IAAc,CAAf,GAAoB,MAArB,KAAgC,EAAvD,CAAF,GAAiE,UAAvE;AACAA,aAAO,CAACC,MAAM,MAAP,IAAiB,MAAlB,IAA6B,CAAE,CAACA,QAAQ,EAAT,IAAe,MAAhB,GAA0B,MAA3B,KAAsC,EAAnE,CAAN;AACH;;AAEDK,SAAK,CAAL;;AAEA,YAAQR,SAAR;AACI,aAAK,CAAL;AACIQ,kBAAM,CAACr5B,IAAI0iB,UAAJ,CAAenjB,IAAI,CAAnB,IAAwB,IAAzB,KAAkC,EAAxC;AACJ,aAAK,CAAL;AACI85B,kBAAM,CAACr5B,IAAI0iB,UAAJ,CAAenjB,IAAI,CAAnB,IAAwB,IAAzB,KAAkC,CAAxC;AACJ,aAAK,CAAL;AACI85B,kBAAOr5B,IAAI0iB,UAAJ,CAAenjB,CAAf,IAAoB,IAA3B;;AAEA85B,iBAAO,CAACA,KAAK,MAAN,IAAgBJ,EAAjB,IAAwB,CAAE,CAACI,OAAO,EAAR,IAAcJ,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAD,GAAiE,UAAtE;AACAI,iBAAMA,MAAM,EAAP,GAAcA,OAAO,EAA1B;AACAA,iBAAO,CAACA,KAAK,MAAN,IAAgBF,EAAjB,IAAwB,CAAE,CAACE,OAAO,EAAR,IAAcF,EAAf,GAAqB,MAAtB,KAAiC,EAAzD,CAAD,GAAiE,UAAtE;AACAJ,kBAAMM,EAAN;AAXR;;AAcAN,UAAM/4B,IAAIpW,MAAV;;AAEAmvC,UAAMA,OAAO,EAAb;AACAA,SAAO,CAACA,KAAK,MAAN,IAAgB,UAAjB,IAAgC,CAAE,CAACA,OAAO,EAAR,IAAc,UAAf,GAA6B,MAA9B,KAAyC,EAAzE,CAAD,GAAiF,UAAtF;AACAA,UAAMA,OAAO,EAAb;AACAA,SAAQ,CAACA,KAAK,MAAN,IAAgB,UAAjB,IAAgC,CAAE,CAACA,OAAO,EAAR,IAAc,UAAf,GAA6B,MAA9B,KAAyC,EAAzE,CAAF,GAAmF,UAAxF;AACAA,UAAMA,OAAO,EAAb;;AAEA,WAAOA,OAAO,CAAd;AACH,CAtDD;;AAwDA,SAASO,sBAAT,CAAgCv7B,CAAhC,EAAmCm2B,CAAnC,EAAsC;AAClC,WAAOn2B,EAAE21B,MAAF,CAASQ,CAAT,CAAP;AACH;;AAED,SAASqF,wBAAT,CAAkCx7B,CAAlC,EAAqC;AACjC,WAAOA,EAAEm1B,QAAF,EAAP;AACH;;AAED,SAASzO,GAAT,CAAa+U,YAAb,EAA2BC,cAA3B,EAA2C;AACvC,SAAKhwC,IAAL,GAAY,EAAZ;AACA,SAAK+vC,YAAL,GAAoBA,gBAAgBD,wBAApC;AACA,SAAKE,cAAL,GAAsBA,kBAAkBH,sBAAxC;AACA,WAAO,IAAP;AACH;;AAEDryC,OAAO27B,cAAP,CAAsB6B,IAAIrH,SAA1B,EAAqC,QAArC,EAA+C;AAC3C3d,SAAK,eAAY;AACb,YAAInU,IAAI,CAAR;AACA,aAAK,IAAI0U,GAAT,IAAgB,KAAKvW,IAArB,EAA2B;AACvB,gBAAIuW,IAAIxQ,OAAJ,CAAY,OAAZ,MAAyB,CAA7B,EAAgC;AAC5BlE,oBAAIA,IAAI,KAAK7B,IAAL,CAAUuW,GAAV,EAAepW,MAAvB;AACH;AACJ;AACD,eAAO0B,CAAP;AACH;AAT0C,CAA/C;;AAYAm5B,IAAIrH,SAAJ,CAAcsJ,GAAd,GAAoB,UAAUp9B,KAAV,EAAiB;AACjC,QAAI8pC,OAAO,KAAKoG,YAAL,CAAkBlwC,KAAlB,CAAX;AACA,QAAI0W,MAAM,UAAUozB,IAApB;AACA,QAAIpzB,OAAO,KAAKvW,IAAhB,EAAsB;AAClB,YAAImf,SAAS,KAAKnf,IAAL,CAAUuW,GAAV,CAAb;AACA,aAAK,IAAIT,IAAI,CAAb,EAAgBA,IAAIqJ,OAAOhf,MAA3B,EAAmC2V,GAAnC,EAAwC;AACpC,gBAAI,KAAKk6B,cAAL,CAAoBnwC,KAApB,EAA2Bsf,OAAOrJ,CAAP,CAA3B,CAAJ,EAA2C;AACvC,uBAAOqJ,OAAOrJ,CAAP,CAAP;AACH;AACJ;AACDqJ,eAAOnb,IAAP,CAAYnE,KAAZ;AACA,eAAOA,KAAP;AACH,KATD,MASO;AACH,aAAKG,IAAL,CAAUuW,GAAV,IAAiB,CAAC1W,KAAD,CAAjB;AACA,eAAOA,KAAP;AACH;AACJ,CAhBD;;AAkBAm7B,IAAIrH,SAAJ,CAAcoB,QAAd,GAAyB,UAAUl1B,KAAV,EAAiB;AACtC,WAAO,KAAKmW,GAAL,CAASnW,KAAT,KAAmB,IAA1B;AACH,CAFD;;AAIAm7B,IAAIrH,SAAJ,CAAc3d,GAAd,GAAoB,UAAUnW,KAAV,EAAiB;AACjC,QAAI8pC,OAAO,KAAKoG,YAAL,CAAkBlwC,KAAlB,CAAX;AACA,QAAI0W,MAAM,UAAUozB,IAApB;AACA,QAAIpzB,OAAO,KAAKvW,IAAhB,EAAsB;AAClB,YAAImf,SAAS,KAAKnf,IAAL,CAAUuW,GAAV,CAAb;AACA,aAAK,IAAIT,IAAI,CAAb,EAAgBA,IAAIqJ,OAAOhf,MAA3B,EAAmC2V,GAAnC,EAAwC;AACpC,gBAAI,KAAKk6B,cAAL,CAAoBnwC,KAApB,EAA2Bsf,OAAOrJ,CAAP,CAA3B,CAAJ,EAA2C;AACvC,uBAAOqJ,OAAOrJ,CAAP,CAAP;AACH;AACJ;AACJ;AACD,WAAO,IAAP;AACH,CAZD;;AAcAklB,IAAIrH,SAAJ,CAAcxU,MAAd,GAAuB,YAAY;AAC/B,QAAItd,IAAI,EAAR;AACA,SAAK,IAAI0U,GAAT,IAAgB,KAAKvW,IAArB,EAA2B;AACvB,YAAIuW,IAAIxQ,OAAJ,CAAY,OAAZ,MAAyB,CAA7B,EAAgC;AAC5BlE,gBAAIA,EAAEwB,MAAF,CAAS,KAAKrD,IAAL,CAAUuW,GAAV,CAAT,CAAJ;AACH;AACJ;AACD,WAAO1U,CAAP;AACH,CARD;;AAUAm5B,IAAIrH,SAAJ,CAAcl0B,QAAd,GAAyB,YAAY;AACjC,WAAOuvC,cAAc,KAAK7vB,MAAL,EAAd,CAAP;AACH,CAFD;;AAIA,SAAS8b,MAAT,GAAkB;AACd,SAAKj7B,IAAL,GAAY,EAAZ;AACA,WAAO,IAAP;AACH;;AAEDi7B,OAAOtH,SAAP,CAAiBsJ,GAAjB,GAAuB,UAAUp9B,KAAV,EAAiB;AACpC,SAAKG,IAAL,CAAUH,KAAV,IAAmB,IAAnB;AACH,CAFD;;AAIAo7B,OAAOtH,SAAP,CAAiBnmB,EAAjB,GAAsB,UAAU6H,GAAV,EAAe;AACjC,QAAI46B,OAAO,IAAX;AACAzyC,WAAO0yC,IAAP,CAAY76B,IAAIrV,IAAhB,EAAsBC,GAAtB,CAA0B,UAAUk8B,GAAV,EAAe;AACrC8T,aAAKhT,GAAL,CAASd,GAAT;AACH,KAFD;AAGH,CALD;;AAOAlB,OAAOtH,SAAP,CAAiB6J,MAAjB,GAA0B,UAAU39B,KAAV,EAAiB;AACvC,WAAO,KAAKG,IAAL,CAAUH,KAAV,CAAP;AACH,CAFD;;AAIAo7B,OAAOtH,SAAP,CAAiBoB,QAAjB,GAA4B,UAAUl1B,KAAV,EAAiB;AACzC,WAAO,KAAKG,IAAL,CAAUH,KAAV,MAAqB,IAA5B;AACH,CAFD;;AAIAo7B,OAAOtH,SAAP,CAAiBxU,MAAjB,GAA0B,YAAY;AAClC,WAAO3hB,OAAO0yC,IAAP,CAAY,KAAKlwC,IAAjB,CAAP;AACH,CAFD;;AAIAi7B,OAAOtH,SAAP,CAAiBwc,QAAjB,GAA4B,YAAY;AACpC,WAAO/mB,KAAK6C,GAAL,CAASmkB,KAAT,CAAe,IAAf,EAAqB,KAAKjxB,MAAL,EAArB,CAAP;AACH,CAFD;;AAIA8b,OAAOtH,SAAP,CAAiB8V,QAAjB,GAA4B,YAAY;AACpC,QAAIE,OAAO,IAAIP,IAAJ,EAAX;AACAO,SAAKC,MAAL,CAAY,KAAKzqB,MAAL,EAAZ;AACA,WAAOwqB,KAAKK,MAAL,EAAP;AACH,CAJD;;AAMA/O,OAAOtH,SAAP,CAAiBsW,MAAjB,GAA0B,UAAU/P,KAAV,EAAiB;AACvC,QAAI,EAAEA,iBAAiBe,MAAnB,CAAJ,EAAgC;AAC5B,eAAO,KAAP;AACH;AACD,WAAO,KAAKwO,QAAL,OAAoBvP,MAAMuP,QAAN,EAA3B;AACH,CALD;;AAOAjsC,OAAO27B,cAAP,CAAsB8B,OAAOtH,SAA7B,EAAwC,QAAxC,EAAkD;AAC9C3d,SAAK,eAAY;AACb,eAAO,KAAKmJ,MAAL,GAAchf,MAArB;AACH;AAH6C,CAAlD;;AAMA86B,OAAOtH,SAAP,CAAiBl0B,QAAjB,GAA4B,YAAY;AACpC,WAAO,MAAM,KAAK0f,MAAL,GAAc/gB,IAAd,CAAmB,IAAnB,CAAN,GAAiC,GAAxC;AACH,CAFD;;AAIA,SAASiyC,GAAT,CAAaN,YAAb,EAA2BC,cAA3B,EAA2C;AACvC,SAAKhwC,IAAL,GAAY,EAAZ;AACA,SAAK+vC,YAAL,GAAoBA,gBAAgBD,wBAApC;AACA,SAAKE,cAAL,GAAsBA,kBAAkBH,sBAAxC;AACA,WAAO,IAAP;AACH;;AAEDryC,OAAO27B,cAAP,CAAsBkX,IAAI1c,SAA1B,EAAqC,QAArC,EAA+C;AAC3C3d,SAAK,eAAY;AACb,YAAInU,IAAI,CAAR;AACA,aAAK,IAAIyuC,OAAT,IAAoB,KAAKtwC,IAAzB,EAA+B;AAC3B,gBAAIswC,QAAQvqC,OAAR,CAAgB,OAAhB,MAA6B,CAAjC,EAAoC;AAChClE,oBAAIA,IAAI,KAAK7B,IAAL,CAAUswC,OAAV,EAAmBnwC,MAA3B;AACH;AACJ;AACD,eAAO0B,CAAP;AACH;AAT0C,CAA/C;;AAYAwuC,IAAI1c,SAAJ,CAAc4c,GAAd,GAAoB,UAAUh6B,GAAV,EAAe1W,KAAf,EAAsB;AACtC,QAAIywC,UAAU,UAAU,KAAKP,YAAL,CAAkBx5B,GAAlB,CAAxB;AACA,QAAI+5B,WAAW,KAAKtwC,IAApB,EAA0B;AACtB,YAAIwwC,UAAU,KAAKxwC,IAAL,CAAUswC,OAAV,CAAd;AACA,aAAK,IAAIx6B,IAAI,CAAb,EAAgBA,IAAI06B,QAAQrwC,MAA5B,EAAoC2V,GAApC,EAAyC;AACrC,gBAAI26B,QAAQD,QAAQ16B,CAAR,CAAZ;AACA,gBAAI,KAAKk6B,cAAL,CAAoBz5B,GAApB,EAAyBk6B,MAAMl6B,GAA/B,CAAJ,EAAyC;AACrC,oBAAIm6B,WAAWD,MAAM5wC,KAArB;AACA4wC,sBAAM5wC,KAAN,GAAcA,KAAd;AACA,uBAAO6wC,QAAP;AACH;AACJ;AACDF,gBAAQxsC,IAAR,CAAa,EAACuS,KAAIA,GAAL,EAAU1W,OAAMA,KAAhB,EAAb;AACA,eAAOA,KAAP;AACH,KAZD,MAYO;AACH,aAAKG,IAAL,CAAUswC,OAAV,IAAqB,CAAC,EAAC/5B,KAAIA,GAAL,EAAU1W,OAAMA,KAAhB,EAAD,CAArB;AACA,eAAOA,KAAP;AACH;AACJ,CAlBD;;AAoBAwwC,IAAI1c,SAAJ,CAAcgd,WAAd,GAA4B,UAAUp6B,GAAV,EAAe;AACvC,QAAI+5B,UAAU,UAAU,KAAKP,YAAL,CAAkBx5B,GAAlB,CAAxB;AACA,QAAG+5B,WAAW,KAAKtwC,IAAnB,EAAyB;AACrB,YAAIwwC,UAAU,KAAKxwC,IAAL,CAAUswC,OAAV,CAAd;AACA,aAAK,IAAIx6B,IAAI,CAAb,EAAgBA,IAAI06B,QAAQrwC,MAA5B,EAAoC2V,GAApC,EAAyC;AACrC,gBAAI26B,QAAQD,QAAQ16B,CAAR,CAAZ;AACA,gBAAI,KAAKk6B,cAAL,CAAoBz5B,GAApB,EAAyBk6B,MAAMl6B,GAA/B,CAAJ,EACI,OAAO,IAAP;AACP;AACJ;AACD,WAAO,KAAP;AACH,CAXD;;AAaA85B,IAAI1c,SAAJ,CAAc3d,GAAd,GAAoB,UAAUO,GAAV,EAAe;AAC/B,QAAI+5B,UAAU,UAAU,KAAKP,YAAL,CAAkBx5B,GAAlB,CAAxB;AACA,QAAG+5B,WAAW,KAAKtwC,IAAnB,EAAyB;AACrB,YAAIwwC,UAAU,KAAKxwC,IAAL,CAAUswC,OAAV,CAAd;AACA,aAAK,IAAIx6B,IAAI,CAAb,EAAgBA,IAAI06B,QAAQrwC,MAA5B,EAAoC2V,GAApC,EAAyC;AACrC,gBAAI26B,QAAQD,QAAQ16B,CAAR,CAAZ;AACA,gBAAI,KAAKk6B,cAAL,CAAoBz5B,GAApB,EAAyBk6B,MAAMl6B,GAA/B,CAAJ,EACI,OAAOk6B,MAAM5wC,KAAb;AACP;AACJ;AACD,WAAO,IAAP;AACH,CAXD;;AAaAwwC,IAAI1c,SAAJ,CAAc6c,OAAd,GAAwB,YAAY;AAChC,QAAI3uC,IAAI,EAAR;AACA,SAAK,IAAI0U,GAAT,IAAgB,KAAKvW,IAArB,EAA2B;AACvB,YAAIuW,IAAIxQ,OAAJ,CAAY,OAAZ,MAAyB,CAA7B,EAAgC;AAC5BlE,gBAAIA,EAAEwB,MAAF,CAAS,KAAKrD,IAAL,CAAUuW,GAAV,CAAT,CAAJ;AACH;AACJ;AACD,WAAO1U,CAAP;AACH,CARD;;AAWAwuC,IAAI1c,SAAJ,CAAcid,OAAd,GAAwB,YAAY;AAChC,WAAO,KAAKJ,OAAL,GAAevwC,GAAf,CAAmB,UAASyR,CAAT,EAAY;AAClC,eAAOA,EAAE6E,GAAT;AACH,KAFM,CAAP;AAGH,CAJD;;AAOA85B,IAAI1c,SAAJ,CAAckd,SAAd,GAA0B,YAAY;AAClC,WAAO,KAAKL,OAAL,GAAevwC,GAAf,CAAmB,UAASyR,CAAT,EAAY;AAC9B,eAAOA,EAAE7R,KAAT;AACP,KAFM,CAAP;AAGH,CAJD;;AAOAwwC,IAAI1c,SAAJ,CAAcl0B,QAAd,GAAyB,YAAY;AACjC,QAAIqxC,KAAK,KAAKN,OAAL,GAAevwC,GAAf,CAAmB,UAASwwC,KAAT,EAAgB;AACxC,eAAO,MAAMA,MAAMl6B,GAAZ,GAAkB,GAAlB,GAAwBk6B,MAAM5wC,KAA9B,GAAsC,GAA7C;AACH,KAFQ,CAAT;AAGA,WAAO,MAAMixC,GAAG1yC,IAAH,CAAQ,IAAR,CAAN,GAAsB,GAA7B;AACH,CALD;;AAQA,SAAS2yC,OAAT,GAAmB;AACf,SAAK/wC,IAAL,GAAY,EAAZ;AACA,WAAO,IAAP;AACH;;AAGD+wC,QAAQpd,SAAR,CAAkB3d,GAAlB,GAAwB,UAAUO,GAAV,EAAe;AACnCA,UAAM,OAAOA,GAAb;AACA,QAAIA,OAAO,KAAKvW,IAAhB,EAAsB;AAClB,eAAO,KAAKA,IAAL,CAAUuW,GAAV,CAAP;AACH,KAFD,MAEO;AACH,eAAO,IAAP;AACH;AACJ,CAPD;;AASAw6B,QAAQpd,SAAR,CAAkB4c,GAAlB,GAAwB,UAAUh6B,GAAV,EAAe1W,KAAf,EAAsB;AAC1C0W,UAAM,OAAOA,GAAb;AACA,SAAKvW,IAAL,CAAUuW,GAAV,IAAiB1W,KAAjB;AACH,CAHD;;AAKAkxC,QAAQpd,SAAR,CAAkBxU,MAAlB,GAA2B,YAAY;AACnC,QAAInf,OAAO,KAAKA,IAAhB;AACA,QAAIkwC,OAAO1yC,OAAO0yC,IAAP,CAAY,KAAKlwC,IAAjB,CAAX;AACA,WAAOkwC,KAAKjwC,GAAL,CAAS,UAAUsW,GAAV,EAAe;AAC3B,eAAOvW,KAAKuW,GAAL,CAAP;AACH,KAFM,CAAP;AAGH,CAND;;AAQA,SAASy6B,UAAT,GAAsB;AAClB,WAAO,IAAP;AACH;;AAED,SAAS5H,IAAT,GAAgB;AACZ,SAAKpN,KAAL,GAAa,CAAb;AACA,SAAK2N,IAAL,GAAY,CAAZ;AACA,WAAO,IAAP;AACH;;AAEDP,KAAKzV,SAAL,CAAeiW,MAAf,GAAwB,YAAY;AAChC,SAAI,IAAI9zB,IAAE,CAAV,EAAYA,IAAEm7B,UAAU9wC,MAAxB,EAA+B2V,GAA/B,EAAoC;AAChC,YAAIjW,QAAQoxC,UAAUn7B,CAAV,CAAZ;AACA,YAAIjW,SAAS,IAAb,EACI;AACJ,YAAGoK,MAAMinC,OAAN,CAAcrxC,KAAd,CAAH,EACI,KAAK+pC,MAAL,CAAYwG,KAAZ,CAAkBvwC,KAAlB,EADJ,KAEK;AACD,gBAAIo1B,IAAI,CAAR;AACA,2BAAep1B,KAAf,yCAAeA,KAAf;AACI,qBAAK,WAAL;AACA,qBAAK,UAAL;AACI;AACJ,qBAAK,QAAL;AACA,qBAAK,SAAL;AACIo1B,wBAAIp1B,KAAJ;AACA;AACJ,qBAAK,QAAL;AACIo1B,wBAAIp1B,MAAM4pC,QAAN,EAAJ;AACA;AACJ;AACI5pC,0BAAM6pC,cAAN,CAAqB,IAArB;AACA;AAbR;AAeAzU,gBAAIA,IAAI,UAAR;AACAA,gBAAKA,KAAK,EAAN,GAAaA,MAAO,KAAK,EAA7B;AACAA,gBAAIA,IAAI,UAAR;AACA,iBAAK+G,KAAL,GAAa,KAAKA,KAAL,GAAa,CAA1B;AACA,gBAAI2N,OAAO,KAAKA,IAAL,GAAY1U,CAAvB;AACA0U,mBAAQA,QAAQ,EAAT,GAAgBA,SAAU,KAAK,EAAtC;AACAA,mBAAOA,OAAO,CAAP,GAAW,UAAlB;AACA,iBAAKA,IAAL,GAAYA,IAAZ;AACH;AACJ;AACJ,CAlCD;;AAoCAP,KAAKzV,SAAL,CAAeqW,MAAf,GAAwB,YAAY;AAChC,QAAIL,OAAO,KAAKA,IAAL,GAAa,KAAK3N,KAAL,GAAa,CAArC;AACA2N,WAAOA,OAAQA,SAAS,EAAxB;AACAA,WAAOA,OAAO,UAAd;AACAA,WAAOA,OAAQA,SAAS,EAAxB;AACAA,WAAOA,OAAO,UAAd;AACAA,WAAOA,OAAQA,SAAS,EAAxB;AACA,WAAOA,IAAP;AACH,CARD;;AAUA,SAASwH,SAAT,GAAqB;AACjB,QAAIxH,OAAO,IAAIP,IAAJ,EAAX;AACAO,SAAKC,MAAL,CAAYwG,KAAZ,CAAkBa,SAAlB;AACA,WAAOtH,KAAKK,MAAL,EAAP;AACH;;AAEDgH,WAAWrd,SAAX,CAAqB3d,GAArB,GAA2B,UAAU1B,CAAV,EAAam2B,CAAb,EAAgB;AACvC,QAAIvJ,IAAI,KAAK5sB,CAAL,KAAW,IAAnB;AACA,WAAO4sB,MAAM,IAAN,GAAa,IAAb,GAAqBA,EAAEuJ,CAAF,KAAQ,IAApC;AACH,CAHD;;AAKAuG,WAAWrd,SAAX,CAAqBte,GAArB,GAA2B,UAAUf,CAAV,EAAam2B,CAAb,EAAgBxF,CAAhB,EAAmB;AAC1C,QAAI/D,IAAI,KAAK5sB,CAAL,KAAW,IAAnB;AACA,QAAI4sB,MAAM,IAAV,EAAgB;AACZA,YAAI,EAAJ;AACA,aAAK5sB,CAAL,IAAU4sB,CAAV;AACH;AACDA,MAAEuJ,CAAF,IAAOxF,CAAP;AACH,CAPD;;AAUA,SAASmM,gBAAT,CAA0Bjb,CAA1B,EAA6Bkb,YAA7B,EAA2C;AACvClb,QAAIA,EAAErkB,OAAF,CAAU,KAAV,EAAiB,KAAjB,EACEA,OADF,CACU,KADV,EACiB,KADjB,EAEEA,OAFF,CAEU,KAFV,EAEiB,KAFjB,CAAJ;AAGA,QAAIu/B,YAAJ,EAAkB;AACdlb,YAAIA,EAAErkB,OAAF,CAAU,IAAV,EAAgB,MAAhB,CAAJ;AACH;AACD,WAAOqkB,CAAP;AACH;;AAED,SAASmb,SAAT,CAAmBzoB,GAAnB,EAAwB;AACpB,WAAOA,IAAI/W,OAAJ,CAAY,QAAZ,EAAsB,UAAUi9B,GAAV,EAAe;AACxC,eAAOA,IAAI7hB,MAAJ,CAAW,CAAX,EAAcL,WAAd,KAA8BkiB,IAAIwC,MAAJ,CAAW,CAAX,CAArC;AACH,KAFM,CAAP;AAGH;;AAED,SAASC,WAAT,CAAqBl9B,CAArB,EAAwBm2B,CAAxB,EACA;AACI,QAAI,CAACxgC,MAAMinC,OAAN,CAAc58B,CAAd,CAAD,IAAqB,CAACrK,MAAMinC,OAAN,CAAczG,CAAd,CAA1B,EACI,OAAO,KAAP;AACJ,QAAIn2B,KAAKm2B,CAAT,EACI,OAAO,IAAP;AACJ,QAAIn2B,EAAEnU,MAAF,IAAYsqC,EAAEtqC,MAAlB,EACI,OAAO,KAAP;AACJ,SAAK,IAAI2V,IAAI,CAAb,EAAgBA,IAAIxB,EAAEnU,MAAtB,EAA8B2V,GAA9B,EAAmC;AAC/B,YAAIxB,EAAEwB,CAAF,KAAQ20B,EAAE30B,CAAF,CAAZ,EACI;AACJ,YAAI,CAACxB,EAAEwB,CAAF,EAAKm0B,MAAL,CAAYQ,EAAE30B,CAAF,CAAZ,CAAL,EACI,OAAO,KAAP;AACP;AACD,WAAO,IAAP;AACH;;AAED5c,QAAQkwC,IAAR,GAAeA,IAAf;AACAlwC,QAAQ8hC,GAAR,GAAcA,GAAd;AACA9hC,QAAQm3C,GAAR,GAAcA,GAAd;AACAn3C,QAAQ+hC,MAAR,GAAiBA,MAAjB;AACA/hC,QAAQ63C,OAAR,GAAkBA,OAAlB;AACA73C,QAAQ83C,UAAR,GAAqBA,UAArB;AACA93C,QAAQi4C,SAAR,GAAoBA,SAApB;AACAj4C,QAAQk4C,gBAAR,GAA2BA,gBAA3B;AACAl4C,QAAQ81C,aAAR,GAAwBA,aAAxB;AACA91C,QAAQo4C,SAAR,GAAoBA,SAApB;AACAp4C,QAAQs4C,WAAR,GAAsBA,WAAtB,C;;;;;;;;;;;;;;AC7bA;;;;;AAKA,IAAI5V,cAAc,mBAAAzI,CAAQ,8DAAR,EAA4ByI,WAA9C;AACA,IAAInC,cAAc,mBAAAtG,CAAQ,8DAAR,EAA4BsG,WAA9C;;AAEA,SAASgY,GAAT,CAAaC,WAAb,EAA2B3T,YAA3B,EAAyC;;AAErC;AACA;AACA,SAAK2T,WAAL,GAAmBA,WAAnB;AACA;AACA,SAAK3T,YAAL,GAAoBA,YAApB;AACA,SAAKX,MAAL,GAAc,EAAd;AACA;AACA;AACA;AACA,SAAKuU,eAAL,GAAuB,EAAvB;AACA;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACA;AACA,SAAKC,eAAL,GAAuB,IAAvB;AACA,SAAKC,oBAAL,GAA4B,EAA5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAKC,eAAL,GAAuB,IAAvB;AACA;AACA;AACA,SAAKC,YAAL,GAAoB,IAApB;AACA,SAAKC,gBAAL,GAAwB,EAAxB;;AAEA,WAAO,IAAP;AACH;;AAED;AACA;AACA;AACA;AACAR,IAAI9d,SAAJ,CAAcue,mBAAd,GAAoC,UAAS/b,CAAT,EAAYwG,GAAZ,EAAiB;AACjD,QAAIwV,OAAO,IAAIvW,WAAJ,CAAgB,IAAhB,CAAX;AACA,WAAOuW,KAAK1V,IAAL,CAAUtG,CAAV,EAAa,IAAb,EAAmBwG,GAAnB,CAAP;AACH,CAHD;;AAKA;AACA;AACA;AACA8U,IAAI9d,SAAJ,CAAcye,mBAAd,GAAoC,UAASjc,CAAT,EAAY;AAC5C,QAAIA,EAAEkc,mBAAF,KAA0B,IAA9B,EAAqC;AACjC,eAAOlc,EAAEkc,mBAAT;AACH;AACDlc,MAAEkc,mBAAF,GAAwB,KAAKH,mBAAL,CAAyB/b,CAAzB,EAA4B,IAA5B,CAAxB;AACAA,MAAEkc,mBAAF,CAAsBxuB,QAAtB,GAAiC,IAAjC;AACA,WAAOsS,EAAEkc,mBAAT;AACH,CAPD;;AASAZ,IAAI9d,SAAJ,CAAciT,UAAd,GAA2B,UAASzQ,CAAT,EAAYwG,GAAZ,EAAiB;AACxC,QAAKA,QAAM1mB,SAAX,EAAuB;AACnB,eAAO,KAAKm8B,mBAAL,CAAyBjc,CAAzB,CAAP;AACH,KAFD,MAEO;AACH,eAAO,KAAK+b,mBAAL,CAAyB/b,CAAzB,EAA4BwG,GAA5B,CAAP;AACH;AACJ,CAND;;AAQA8U,IAAI9d,SAAJ,CAAc2e,QAAd,GAAyB,UAAUtV,KAAV,EAAiB;AACtC,QAAKA,UAAU,IAAf,EAAsB;AAClBA,cAAMnB,GAAN,GAAY,IAAZ;AACAmB,cAAMY,WAAN,GAAoB,KAAKR,MAAL,CAAYj9B,MAAhC;AACH;AACD,SAAKi9B,MAAL,CAAYp5B,IAAZ,CAAiBg5B,KAAjB;AACH,CAND;;AAQAyU,IAAI9d,SAAJ,CAAc4e,WAAd,GAA4B,UAAUvV,KAAV,EAAiB;AACzC,SAAKI,MAAL,CAAYJ,MAAMY,WAAlB,IAAiC,IAAjC,CADyC,CACF;AAC1C,CAFD;;AAIA6T,IAAI9d,SAAJ,CAAc6e,mBAAd,GAAoC,UAAUrc,CAAV,EAAa;AAC7C,SAAKwb,eAAL,CAAqB3tC,IAArB,CAA0BmyB,CAA1B;AACAA,MAAEyR,QAAF,GAAa,KAAK+J,eAAL,CAAqBxxC,MAArB,GAA4B,CAAzC;AACA,WAAOg2B,EAAEyR,QAAT;AACH,CAJD;;AAMA6J,IAAI9d,SAAJ,CAAc8e,gBAAd,GAAiC,UAAU7K,QAAV,EAAoB;AACjD,QAAI,KAAK+J,eAAL,CAAqBxxC,MAArB,KAA8B,CAAlC,EAAqC;AACjC,eAAO,IAAP;AACH,KAFD,MAEO;AACH,eAAO,KAAKwxC,eAAL,CAAqB/J,QAArB,CAAP;AACH;AACJ,CAND;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI1U,QAAQ,mBAAAC,CAAQ,kDAAR,EAAsBD,KAAlC;;AAEAue,IAAI9d,SAAJ,CAAcmT,iBAAd,GAAkC,UAAUlJ,WAAV,EAAuBjB,GAAvB,EAA6B;AAC3D,QAAKiB,cAAc,CAAd,IAAmBA,eAAe,KAAKR,MAAL,CAAYj9B,MAAnD,EAA4D;AACxD,cAAM,uBAAN;AACH;AACD,QAAIg2B,IAAI,KAAKiH,MAAL,CAAYQ,WAAZ,CAAR;AACA,QAAI+I,YAAY,KAAKC,UAAL,CAAgBzQ,CAAhB,CAAhB;AACA,QAAI,CAACwQ,UAAU5R,QAAV,CAAmB7B,MAAM6H,OAAzB,CAAL,EAAwC;AACpC,eAAO4L,SAAP;AACH;AACD,QAAI7oC,WAAW,IAAI27B,WAAJ,EAAf;AACA37B,aAASm8B,MAAT,CAAgB0M,SAAhB;AACA7oC,aAASy8B,SAAT,CAAmBrH,MAAM6H,OAAzB;AACA,WAAO4B,QAAQ,IAAR,IAAgBA,IAAI0I,aAAJ,IAAqB,CAArC,IAA0CsB,UAAU5R,QAAV,CAAmB7B,MAAM6H,OAAzB,CAAjD,EAAoF;AAChF,YAAIsK,gBAAgB,KAAKjI,MAAL,CAAYT,IAAI0I,aAAhB,CAApB;AACA,YAAIwB,KAAKxB,cAAcpJ,WAAd,CAA0B,CAA1B,CAAT;AACA0K,oBAAY,KAAKC,UAAL,CAAgBC,GAAGlJ,WAAnB,CAAZ;AACA7/B,iBAASm8B,MAAT,CAAgB0M,SAAhB;AACA7oC,iBAASy8B,SAAT,CAAmBrH,MAAM6H,OAAzB;AACA4B,cAAMA,IAAI8I,SAAV;AACH;AACD,QAAIkB,UAAU5R,QAAV,CAAmB7B,MAAM6H,OAAzB,CAAJ,EAAuC;AACnCj9B,iBAAS+7B,MAAT,CAAgB3G,MAAMsB,GAAtB;AACH;AACD,WAAO12B,QAAP;AACH,CAxBD;;AA0BA2zC,IAAI1D,kBAAJ,GAAyB,CAAzB;;AAEA70C,QAAQu4C,GAAR,GAAcA,GAAd,C;;;;;;;;;;;;;;AC7IA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIiB,gBAAgB,mBAAAvf,CAAQ,yDAAR,EAAsBuf,aAA1C;AACA,IAAIC,kBAAkB,mBAAAxf,CAAQ,uEAAR,EAA6Bwf,eAAnD;AACA,IAAIvJ,OAAO,mBAAAjW,CAAQ,gDAAR,EAAoBiW,IAA/B;;AAGA,SAASwJ,WAAT,CAAqB1xC,MAArB,EAA6B2xC,KAA7B,EAAoC;AACnC,QAAG3xC,WAAS,IAAZ,EAAkB;AACjB,YAAIwV,SAAS,EAAEsmB,OAAM,IAAR,EAAcb,KAAI,IAAlB,EAAwBn+B,SAAQ,IAAhC,EAAsC80C,iBAAgB,IAAtD,EAAb;AACA,YAAGD,KAAH,EAAU;AACTn8B,mBAAOq8B,uBAAP,GAAiC,CAAjC;AACA;AACD,eAAOr8B,MAAP;AACA,KAND,MAMO;AACN,YAAIs8B,QAAQ,EAAZ;AACAA,cAAMhW,KAAN,GAAc97B,OAAO87B,KAAP,IAAgB,IAA9B;AACAgW,cAAM7W,GAAN,GAAaj7B,OAAOi7B,GAAP,KAAelmB,SAAhB,GAA6B,IAA7B,GAAoC/U,OAAOi7B,GAAvD;AACA6W,cAAMh1C,OAAN,GAAgBkD,OAAOlD,OAAP,IAAkB,IAAlC;AACAg1C,cAAMF,eAAN,GAAwB5xC,OAAO4xC,eAAP,IAA0B,IAAlD;AACA,YAAGD,KAAH,EAAU;AACTG,kBAAMD,uBAAN,GAAgC7xC,OAAO6xC,uBAAP,IAAkC,CAAlE;AACAC,kBAAMC,0BAAN,GAAmC/xC,OAAO+xC,0BAAP,IAAqC,KAAxE;AACA;AACD,eAAOD,KAAP;AACA;AACD;;AAED,SAAS9X,SAAT,CAAmBh6B,MAAnB,EAA2B+xB,MAA3B,EAAmC;AAClC,SAAKxV,YAAL,CAAkBvc,MAAlB,EAA0B+xB,MAA1B;AACA/xB,aAAS0xC,YAAY1xC,MAAZ,CAAT;AACA+xB,aAAS2f,YAAY3f,MAAZ,EAAoB,IAApB,CAAT;AACG;AACA,SAAK+J,KAAL,GAAa97B,OAAO87B,KAAP,KAAe,IAAf,GAAsB97B,OAAO87B,KAA7B,GAAqC/J,OAAO+J,KAAzD;AACA;AACA,SAAKb,GAAL,GAAWj7B,OAAOi7B,GAAP,KAAa,IAAb,GAAoBj7B,OAAOi7B,GAA3B,GAAiClJ,OAAOkJ,GAAnD;AACA;AACA;AACA;AACA,SAAKn+B,OAAL,GAAekD,OAAOlD,OAAP,KAAiB,IAAjB,GAAwBkD,OAAOlD,OAA/B,GAAyCi1B,OAAOj1B,OAA/D;AACA,SAAK80C,eAAL,GAAuB5xC,OAAO4xC,eAAP,KAAyB,IAAzB,GAAgC5xC,OAAO4xC,eAAvC,GAClB7f,OAAO6f,eAAP,KAAyB,IAAzB,GAAgC7f,OAAO6f,eAAvC,GAAyDH,gBAAgBO,IAD9E;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAKH,uBAAL,GAA+B9f,OAAO8f,uBAAtC;AACA,SAAKE,0BAAL,GAAkChgB,OAAOggB,0BAAzC;AACA,WAAO,IAAP;AACH;;AAED/X,UAAUvH,SAAV,CAAoBlW,YAApB,GAAmC,UAASvc,MAAT,EAAiB+xB,MAAjB,EAAyB;AAC3D,QAAG,CAAC/xB,OAAOlD,OAAP,KAAiB,IAAjB,IAAyBkD,OAAOlD,OAAP,KAAiBiY,SAA3C,MACAgd,WAAS,IAAT,IAAiBA,OAAOj1B,OAAP,KAAiB,IAAlC,IAA0Ci1B,OAAOj1B,OAAP,KAAiBiY,SAD3D,CAAH,EAC0E;AACzE,aAAKjY,OAAL,GAAe,IAAf;AACA;AACD,CALD;;AAQAk9B,UAAUvH,SAAV,CAAoB8V,QAApB,GAA+B,YAAW;AACtC,QAAIE,OAAO,IAAIP,IAAJ,EAAX;AACA,SAAKM,cAAL,CAAoBC,IAApB;AACA,WAAOA,KAAKK,MAAL,EAAP;AACH,CAJD;;AAOA9O,UAAUvH,SAAV,CAAoB+V,cAApB,GAAqC,UAASC,IAAT,EAAe;AAChDA,SAAKC,MAAL,CAAY,KAAK5M,KAAL,CAAWY,WAAvB,EAAoC,KAAKzB,GAAzC,EAA8C,KAAKn+B,OAAnD,EAA4D,KAAK80C,eAAjE;AACH,CAFD;;AAIA;AACA;AACA;;AAEA5X,UAAUvH,SAAV,CAAoBsW,MAApB,GAA6B,UAAS/P,KAAT,EAAgB;AACzC,QAAI,SAASA,KAAb,EAAoB;AAChB,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiBgB,SAApB,CAAJ,EAAoC;AACvC,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAK8B,KAAL,CAAWY,WAAX,KAAyB1D,MAAM8C,KAAN,CAAYY,WAArC,IACH,KAAKzB,GAAL,KAAWjC,MAAMiC,GADd,KAEF,KAAKn+B,OAAL,KAAe,IAAf,GAAsBk8B,MAAMl8B,OAAN,KAAgB,IAAtC,GAA6C,KAAKA,OAAL,CAAaisC,MAAb,CAAoB/P,MAAMl8B,OAA1B,CAF3C,KAGH,KAAK80C,eAAL,CAAqB7I,MAArB,CAA4B/P,MAAM4Y,eAAlC,CAHG,IAIH,KAAKG,0BAAL,KAAkC/Y,MAAM+Y,0BAJ5C;AAKH;AACJ,CAZD;;AAeA/X,UAAUvH,SAAV,CAAoBwf,oBAApB,GAA2C,YAAW;AAClD,QAAIxJ,OAAO,IAAIP,IAAJ,EAAX;AACAO,SAAKC,MAAL,CAAY,KAAK5M,KAAL,CAAWY,WAAvB,EAAoC,KAAKzB,GAAzC,EAA8C,KAAK2W,eAAnD;AACA,WAAOnJ,KAAKK,MAAL,EAAP;AACH,CAJD;;AAOA9O,UAAUvH,SAAV,CAAoByf,kBAApB,GAAyC,UAASlZ,KAAT,EAAgB;AACrD,QAAI,SAASA,KAAb,EAAoB;AAChB,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiBgB,SAApB,CAAJ,EAAoC;AACvC,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAK8B,KAAL,CAAWY,WAAX,KAAyB1D,MAAM8C,KAAN,CAAYY,WAArC,IACH,KAAKzB,GAAL,KAAWjC,MAAMiC,GADd,IAEH,KAAK2W,eAAL,CAAqB7I,MAArB,CAA4B/P,MAAM4Y,eAAlC,CAFJ;AAGH;AACJ,CAVD;;AAaA5X,UAAUvH,SAAV,CAAoBl0B,QAApB,GAA+B,YAAW;AACtC,WAAO,MAAM,KAAKu9B,KAAX,GAAmB,GAAnB,GAAyB,KAAKb,GAA9B,IACF,KAAKn+B,OAAL,KAAe,IAAf,GAAsB,OAAO,KAAKA,OAAL,CAAayB,QAAb,EAAP,GAAiC,GAAvD,GAA6D,EAD3D,KAEF,KAAKqzC,eAAL,KAAyBH,gBAAgBO,IAAzC,GACQ,MAAM,KAAKJ,eAAL,CAAqBrzC,QAArB,EADd,GAES,EAJP,KAKF,KAAKszC,uBAAL,GAA6B,CAA7B,GACQ,SAAS,KAAKA,uBADtB,GAES,EAPP,IAOa,GAPpB;AAQH,CATD;;AAYA,SAASM,cAAT,CAAwBnyC,MAAxB,EAAgC+xB,MAAhC,EAAwC;AACvCiI,cAAUzH,IAAV,CAAe,IAAf,EAAqBvyB,MAArB,EAA6B+xB,MAA7B;;AAEG;AACH,QAAIqgB,sBAAsBpyC,OAAOoyC,mBAAP,IAA8B,IAAxD;AACG,SAAKA,mBAAL,GAA2BA,wBAAwBrgB,WAAS,IAAT,GAAgBA,OAAOqgB,mBAAvB,GAA6C,IAArE,CAA3B;AACA,SAAKC,8BAAL,GAAsCtgB,WAAS,IAAT,GAAgB,KAAKugB,sBAAL,CAA4BvgB,MAA5B,EAAoC,KAAK+J,KAAzC,CAAhB,GAAkE,KAAxG;AACA,WAAO,IAAP;AACH;;AAEDqW,eAAe1f,SAAf,GAA2Bn2B,OAAOo2B,MAAP,CAAcsH,UAAUvH,SAAxB,CAA3B;AACA0f,eAAe1f,SAAf,CAAyBE,WAAzB,GAAuCwf,cAAvC;;AAEAA,eAAe1f,SAAf,CAAyB+V,cAAzB,GAA0C,UAASC,IAAT,EAAe;AACrDA,SAAKC,MAAL,CAAY,KAAK5M,KAAL,CAAWY,WAAvB,EAAoC,KAAKzB,GAAzC,EAA8C,KAAKn+B,OAAnD,EAA4D,KAAK80C,eAAjE,EAAkF,KAAKS,8BAAvF,EAAuH,KAAKD,mBAA5H;AACH,CAFD;;AAIAD,eAAe1f,SAAf,CAAyBsW,MAAzB,GAAkC,UAAS/P,KAAT,EAAgB;AAC9C,WAAO,SAASA,KAAT,IACEA,iBAAiBmZ,cAAjB,IACD,KAAKE,8BAAL,IAAuCrZ,MAAMqZ,8BAD5C,KAEA,KAAKD,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBrJ,MAAzB,CAAgC/P,MAAMoZ,mBAAtC,CAA3B,GAAwF,CAACpZ,MAAMoZ,mBAF/F,KAGDpY,UAAUvH,SAAV,CAAoBsW,MAApB,CAA2BxW,IAA3B,CAAgC,IAAhC,EAAsCyG,KAAtC,CAJR;AAKH,CAND;;AAQAmZ,eAAe1f,SAAf,CAAyBwf,oBAAzB,GAAgDE,eAAe1f,SAAf,CAAyB8V,QAAzE;;AAEA4J,eAAe1f,SAAf,CAAyByf,kBAAzB,GAA8CC,eAAe1f,SAAf,CAAyBsW,MAAvE;;AAGAoJ,eAAe1f,SAAf,CAAyB6f,sBAAzB,GAAkD,UAASrb,MAAT,EAAiBhB,MAAjB,EAAyB;AACvE,WAAOgB,OAAOob,8BAAP,IACFpc,kBAAkBub,aAAnB,IAAqCvb,OAAOsc,SADhD;AAEH,CAHD;;AAKAv6C,QAAQgiC,SAAR,GAAoBA,SAApB;AACAhiC,QAAQm6C,cAAR,GAAyBA,cAAzB,C;;;;;;;;;;;;;;AC/KA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA,IAAI5B,MAAM,mBAAAte,CAAQ,+CAAR,EAAiBse,GAA3B;AACA,IAAIiC,QAAQ,mBAAAvgB,CAAQ,kDAAR,CAAZ;AACA,IAAIiW,OAAOsK,MAAMtK,IAAjB;AACA,IAAIpO,MAAM0Y,MAAM1Y,GAAhB;AACA,IAAI2X,kBAAkB,mBAAAxf,CAAQ,uEAAR,EAA6Bwf,eAAnD;AACA,IAAInI,QAAQ,mBAAArX,CAAQ,0EAAR,EAAkCqX,KAA9C;;AAEA,SAASmJ,aAAT,CAAuB5W,CAAvB,EAA0B;AACzB,QAAOA,EAAEoW,oBAAF,EAAP;AACA;;AAED,SAASS,eAAT,CAAyBt/B,CAAzB,EAA4Bm2B,CAA5B,EAA+B;AAC9B,KAAKn2B,MAAIm2B,CAAT,EAAa;AACZ,SAAO,IAAP;AACA,EAFD,MAEO,IAAKn2B,MAAI,IAAJ,IAAYm2B,MAAI,IAArB,EAA4B;AAClC,SAAO,KAAP;AACA,EAFM,MAGD,OAAOn2B,EAAE8+B,kBAAF,CAAqB3I,CAArB,CAAP;AACL;;AAGF,SAASoJ,YAAT,CAAsBC,OAAtB,EAA+B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAKC,YAAL,GAAoB,IAAI/Y,GAAJ,CAAQ2Y,aAAR,EAAuBC,eAAvB,CAApB;AACA;AACA;AACA;AACA,MAAKE,OAAL,GAAeA,YAAY79B,SAAZ,GAAwB,IAAxB,GAA+B69B,OAA9C;AACA;AACA;AACA;AACA;AACA;AACA,MAAKjwB,QAAL,GAAgB,KAAhB;AACA;AACA,MAAKmwB,OAAL,GAAe,EAAf;;AAEA;AACA;AACA;AACA;AACA,MAAKC,SAAL,GAAiB,CAAjB;AACA,MAAKC,eAAL,GAAuB,IAAvB;;AAEA;AACA;AACA,MAAKC,kBAAL,GAA0B,KAA1B;AACA,MAAKC,oBAAL,GAA4B,KAA5B;;AAEA,MAAK/K,cAAL,GAAsB,CAAC,CAAvB;;AAEA,QAAO,IAAP;AACA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwK,aAAalgB,SAAb,CAAuBsJ,GAAvB,GAA6B,UAAShK,MAAT,EAAiB0X,UAAjB,EAA6B;AACzD,KAAIA,eAAe10B,SAAnB,EAA8B;AAC7B00B,eAAa,IAAb;AACA;AACD,KAAI,KAAK9mB,QAAT,EAAmB;AAClB,QAAM,sBAAN;AACA;AACD,KAAIoP,OAAO6f,eAAP,KAA2BH,gBAAgBO,IAA/C,EAAqD;AACpD,OAAKiB,kBAAL,GAA0B,IAA1B;AACA;AACD,KAAIlhB,OAAO8f,uBAAP,GAAiC,CAArC,EAAwC;AACvC,OAAKqB,oBAAL,GAA4B,IAA5B;AACA;AACD,KAAIrK,WAAW,KAAKgK,YAAL,CAAkB9W,GAAlB,CAAsBhK,MAAtB,CAAf;AACA,KAAI8W,aAAa9W,MAAjB,EAAyB;AACxB,OAAKoW,cAAL,GAAsB,CAAC,CAAvB;AACA,OAAK2K,OAAL,CAAahwC,IAAb,CAAkBivB,MAAlB,EAFwB,CAEG;AAC3B,SAAO,IAAP;AACA;AACD;AACA,KAAIyX,iBAAiB,CAAC,KAAKoJ,OAA3B;AACA,KAAIO,SAAS7J,MAAMT,SAAS/rC,OAAf,EAAwBi1B,OAAOj1B,OAA/B,EAAwC0sC,cAAxC,EAAwDC,UAAxD,CAAb;AACA;AACA;AACA;AACAZ,UAASgJ,uBAAT,GAAmC3pB,KAAK0C,GAAL,CAAUie,SAASgJ,uBAAnB,EAA4C9f,OAAO8f,uBAAnD,CAAnC;AACA;AACA,KAAI9f,OAAOggB,0BAAX,EAAuC;AACtClJ,WAASkJ,0BAAT,GAAsC,IAAtC;AACA;AACDlJ,UAAS/rC,OAAT,GAAmBq2C,MAAnB,CA9ByD,CA8B9B;AAC3B,QAAO,IAAP;AACA,CAhCD;;AAkCAR,aAAalgB,SAAb,CAAuB2gB,SAAvB,GAAmC,YAAW;AAC7C,KAAIlX,SAAS,IAAIpC,GAAJ,EAAb;AACA,MAAK,IAAIllB,IAAI,CAAb,EAAgBA,IAAI,KAAKk+B,OAAL,CAAa7zC,MAAjC,EAAyC2V,GAAzC,EAA8C;AAC7CsnB,SAAOH,GAAP,CAAW,KAAK+W,OAAL,CAAal+B,CAAb,EAAgBknB,KAA3B;AACA;AACD,QAAOI,MAAP;AACA,CAND;;AAQAyW,aAAalgB,SAAb,CAAuB4gB,aAAvB,GAAuC,YAAW;AACjD,KAAIC,QAAQ,EAAZ;AACA,MAAK,IAAI1+B,IAAI,CAAb,EAAgBA,IAAI,KAAKk+B,OAAL,CAAa7zC,MAAjC,EAAyC2V,GAAzC,EAA8C;AAC7C,MAAIinB,IAAI,KAAKiX,OAAL,CAAal+B,CAAb,EAAgBg9B,eAAxB;AACA,MAAI/V,MAAM4V,gBAAgBO,IAA1B,EAAgC;AAC/BsB,SAAMxwC,IAAN,CAAW+4B,EAAE+V,eAAb;AACA;AACD;AACD,QAAO0B,KAAP;AACA,CATD;;AAWAh3C,OAAO27B,cAAP,CAAsB0a,aAAalgB,SAAnC,EAA8C,OAA9C,EAAuD;AACtD3d,MAAM,eAAW;AAChB,SAAO,KAAKg+B,OAAZ;AACA;AAHqD,CAAvD;;AAMAH,aAAalgB,SAAb,CAAuB8gB,eAAvB,GAAyC,UAASC,WAAT,EAAsB;AAC9D,KAAI,KAAK7wB,QAAT,EAAmB;AAClB,QAAM,sBAAN;AACA;AACD,KAAI,KAAKkwB,YAAL,CAAkB5zC,MAAlB,KAA6B,CAAjC,EAAoC;AACnC;AACA;AACD,MAAK,IAAI2V,IAAI,CAAb,EAAgBA,IAAI,KAAKk+B,OAAL,CAAa7zC,MAAjC,EAAyC2V,GAAzC,EAA8C;AAC7C,MAAImd,SAAS,KAAK+gB,OAAL,CAAal+B,CAAb,CAAb;AACAmd,SAAOj1B,OAAP,GAAiB02C,YAAYC,gBAAZ,CAA6B1hB,OAAOj1B,OAApC,CAAjB;AACA;AACD,CAXD;;AAaA61C,aAAalgB,SAAb,CAAuBihB,MAAvB,GAAgC,UAASC,IAAT,EAAe;AAC9C,MAAK,IAAI/+B,IAAI,CAAb,EAAgBA,IAAI++B,KAAK10C,MAAzB,EAAiC2V,GAAjC,EAAsC;AACrC,OAAKmnB,GAAL,CAAS4X,KAAK/+B,CAAL,CAAT;AACA;AACD,QAAO,KAAP;AACA,CALD;;AAOA+9B,aAAalgB,SAAb,CAAuBsW,MAAvB,GAAgC,UAAS/P,KAAT,EAAgB;AAC/C,QAAO,SAASA,KAAT,IACLA,iBAAiB2Z,YAAjB,IACDH,MAAMlC,WAAN,CAAkB,KAAKwC,OAAvB,EAAgC9Z,MAAM8Z,OAAtC,CADC,IAED,KAAKF,OAAL,KAAiB5Z,MAAM4Z,OAFtB,IAGD,KAAKG,SAAL,KAAmB/Z,MAAM+Z,SAHxB,IAID,KAAKC,eAAL,KAAyBha,MAAMga,eAJ9B,IAKD,KAAKC,kBAAL,KAA4Bja,MAAMia,kBALjC,IAMD,KAAKC,oBAAL,KAA8Bla,MAAMka,oBAPrC;AAQA,CATD;;AAWAP,aAAalgB,SAAb,CAAuB8V,QAAvB,GAAkC,YAAW;AACzC,KAAIE,OAAO,IAAIP,IAAJ,EAAX;AACA,MAAKM,cAAL,CAAoBC,IAApB;AACA,QAAOA,KAAKK,MAAL,EAAP;AACH,CAJD;;AAOA6J,aAAalgB,SAAb,CAAuB+V,cAAvB,GAAwC,UAASC,IAAT,EAAe;AACtD,KAAI,KAAK9lB,QAAT,EAAmB;AAClB,MAAI,KAAKwlB,cAAL,KAAwB,CAAC,CAA7B,EAAgC;AACtB,OAAIM,OAAO,IAAIP,IAAJ,EAAX;AACAO,QAAKC,MAAL,CAAY,KAAKoK,OAAjB;AACT,QAAK3K,cAAL,GAAsBM,KAAKK,MAAL,EAAtB;AACA;AACKL,OAAKC,MAAL,CAAY,KAAKP,cAAjB;AACN,EAPD,MAOO;AACAM,OAAKC,MAAL,CAAY,KAAKoK,OAAjB;AACN;AACD,CAXD;;AAcAx2C,OAAO27B,cAAP,CAAsB0a,aAAalgB,SAAnC,EAA8C,QAA9C,EAAwD;AACvD3d,MAAM,eAAW;AAChB,SAAO,KAAKg+B,OAAL,CAAa7zC,MAApB;AACA;AAHsD,CAAxD;;AAMA0zC,aAAalgB,SAAb,CAAuBuJ,OAAvB,GAAiC,YAAW;AAC3C,QAAO,KAAK8W,OAAL,CAAa7zC,MAAb,KAAwB,CAA/B;AACA,CAFD;;AAIA0zC,aAAalgB,SAAb,CAAuBoB,QAAvB,GAAkC,UAASyE,IAAT,EAAe;AAChD,KAAI,KAAKua,YAAL,KAAsB,IAA1B,EAAgC;AAC/B,QAAM,mDAAN;AACA;AACD,QAAO,KAAKA,YAAL,CAAkBhf,QAAlB,CAA2ByE,IAA3B,CAAP;AACA,CALD;;AAOAqa,aAAalgB,SAAb,CAAuBmhB,YAAvB,GAAsC,UAAStb,IAAT,EAAe;AACpD,KAAI,KAAKua,YAAL,KAAsB,IAA1B,EAAgC;AAC/B,QAAM,mDAAN;AACA;AACD,QAAO,KAAKA,YAAL,CAAkBe,YAAlB,CAA+Btb,IAA/B,CAAP;AACA,CALD;;AAOAqa,aAAalgB,SAAb,CAAuB7f,KAAvB,GAA+B,YAAW;AACzC,KAAI,KAAK+P,QAAT,EAAmB;AAClB,QAAM,sBAAN;AACA;AACD,MAAKmwB,OAAL,GAAe,EAAf;AACA,MAAK3K,cAAL,GAAsB,CAAC,CAAvB;AACA,MAAK0K,YAAL,GAAoB,IAAI/Y,GAAJ,EAApB;AACA,CAPD;;AASA6Y,aAAalgB,SAAb,CAAuBohB,WAAvB,GAAqC,UAASlxB,QAAT,EAAmB;AACvD,MAAKA,QAAL,GAAgBA,QAAhB;AACA,KAAIA,QAAJ,EAAc;AACb,OAAKkwB,YAAL,GAAoB,IAApB,CADa,CACa;AAC1B;AACD,CALD;;AAOAF,aAAalgB,SAAb,CAAuBl0B,QAAvB,GAAkC,YAAW;AAC5C,QAAOi0C,MAAM1E,aAAN,CAAoB,KAAKgF,OAAzB,KACL,KAAKG,kBAAL,GAA0B,yBAAyB,KAAKA,kBAAxD,GAA6E,EADxE,KAEL,KAAKF,SAAL,KAAmBxC,IAAI1D,kBAAvB,GAA4C,gBAAgB,KAAKkG,SAAjE,GAA6E,EAFxE,KAGL,KAAKC,eAAL,KAAyB,IAAzB,GAAgC,sBAAsB,KAAKA,eAA3D,GAA6E,EAHxE,KAIL,KAAKE,oBAAL,GAA4B,uBAA5B,GAAsD,EAJjD,CAAP;AAKA,CAND;;AAQA,SAASY,mBAAT,GAA+B;AAC9BnB,cAAapgB,IAAb,CAAkB,IAAlB;AACA,MAAKsgB,YAAL,GAAoB,IAAI/Y,GAAJ,EAApB;AACA,QAAO,IAAP;AACA;;AAEDga,oBAAoBrhB,SAApB,GAAgCn2B,OAAOo2B,MAAP,CAAcigB,aAAalgB,SAA3B,CAAhC;AACAqhB,oBAAoBrhB,SAApB,CAA8BE,WAA9B,GAA4CmhB,mBAA5C;;AAEA97C,QAAQ26C,YAAR,GAAuBA,YAAvB;AACA36C,QAAQ87C,mBAAR,GAA8BA,mBAA9B,C;;;;;;;;;;;;;;AC9PA;;;;;AAKA,SAASvT,yBAAT,CAAmCgH,QAAnC,EAA6C;AAC5C,MAAGA,aAAWxyB,SAAd,EAAyB;AACxBwyB,eAAW,IAAX;AACA;AACD,OAAK5kB,QAAL,GAAgB,KAAhB;AACG,OAAKoxB,SAAL,GAAiBxM,aAAW,IAAX,GAAkB,IAAlB,GAAyBA,SAASwM,SAAnD;AACA,OAAK5Q,6BAAL,GAAqCoE,aAAW,IAAX,GAAkB,KAAlB,GAA0BA,SAASpE,6BAAxE;;AAEA,SAAO,IAAP;AACH;;AAED5C,0BAA0ByT,cAA1B,GAA2C,IAAIzT,yBAAJ,EAA3C;AACAA,0BAA0ByT,cAA1B,CAAyCrxB,QAAzC,GAAoD,IAApD;;AAEA;AACA;AACA;AACA;;AAEA3qB,QAAQuoC,yBAAR,GAAoCA,yBAApC,C;;;;;;;;;;;;;;ACxBA;;;;;AAKA,IAAIvO,QAAQ,mBAAAC,CAAQ,kDAAR,EAAsBD,KAAlC;AACA,IAAIue,MAAM,mBAAAte,CAAQ,+CAAR,EAAiBse,GAA3B;AACA,IAAI0D,UAAU,mBAAAhiB,CAAQ,uDAAR,EAAqBgiB,OAAnC;AACA,IAAIC,YAAY,mBAAAjiB,CAAQ,yDAAR,CAAhB;AACA,IAAIkiB,WAAWD,UAAUC,QAAzB;AACA,IAAIC,aAAaF,UAAUE,UAA3B;AACA,IAAI5C,gBAAgB0C,UAAU1C,aAA9B;AACA,IAAI6C,kBAAkBH,UAAUG,eAAhC;AACA,IAAIC,gBAAgBJ,UAAUI,aAA9B;AACA,IAAIC,eAAeL,UAAUK,YAA7B;AACA,IAAIC,iBAAiBN,UAAUM,cAA/B;AACA,IAAIva,gBAAgBia,UAAUja,aAA9B;AACA,IAAIwa,mBAAmBP,UAAUO,gBAAjC;AACA,IAAIC,oBAAoBR,UAAUQ,iBAAlC;AACA,IAAIC,oBAAoBT,UAAUS,iBAAlC;AACA,IAAIC,qBAAqBV,UAAUU,kBAAnC;AACA,IAAIC,sBAAsBX,UAAUW,mBAApC;AACA,IAAIC,sBAAsBZ,UAAUY,mBAApC;AACA,IAAIC,uBAAuBb,UAAUa,oBAArC;AACA,IAAIC,cAAc,mBAAA/iB,CAAQ,6DAAR,CAAlB;AACA,IAAIgjB,aAAaD,YAAYC,UAA7B;AACA,IAAIC,iBAAiBF,YAAYE,cAAjC;AACA,IAAIC,gBAAgBH,YAAYG,aAAhC;AACA,IAAIhb,mBAAmB6a,YAAY7a,gBAAnC;AACA,IAAID,iBAAiB8a,YAAY9a,cAAjC;AACA,IAAIkb,kBAAkBJ,YAAYI,eAAlC;AACA,IAAIC,mBAAmBL,YAAYK,gBAAnC;AACA,IAAIC,oBAAoBN,YAAYM,iBAApC;AACA,IAAIlb,qBAAqB4a,YAAY5a,kBAArC;AACA,IAAImb,sBAAsBP,YAAYO,mBAAtC;AACA,IAAIC,gCAAgCR,YAAYQ,6BAAhD;AACA,IAAIjd,cAAc,mBAAAtG,CAAQ,8DAAR,EAA4BsG,WAA9C;AACA,IAAIpG,WAAW,mBAAAF,CAAQ,8DAAR,EAA4BE,QAA3C;AACA,IAAIoO,4BAA4B,mBAAAtO,CAAQ,2FAAR,EAAuCsO,yBAAvE;AACA,IAAIkV,eAAe,mBAAAxjB,CAAQ,+DAAR,CAAnB;AACA,IAAIyjB,kBAAkBD,aAAaC,eAAnC;AACA,IAAIC,kBAAkBF,aAAaE,eAAnC;AACA,IAAIC,qBAAqBH,aAAaG,kBAAtC;AACA,IAAIC,oBAAoBJ,aAAaI,iBAArC;AACA,IAAIC,kBAAkBL,aAAaK,eAAnC;AACA,IAAIC,kBAAkBN,aAAaM,eAAnC;AACA,IAAIC,sBAAsBP,aAAaO,mBAAvC;AACA,IAAIC,qBAAqBR,aAAaQ,kBAAtC;AACA,IAAIC,kBAAkBT,aAAaS,eAAnC;AACA;AACA;AACA,IAAIC,uBAAuB,sCAA3B;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAIC,oBAAoB,sCAAxB;;AAEA;AACA;AACA,IAAIC,kBAAkB,CAAEF,oBAAF,EAAwBC,iBAAxB,CAAtB;;AAEA,IAAIE,qBAAqB,CAAzB;;AAEA;AACA,IAAIC,kBAAkBH,iBAAtB;;AAEA,SAASI,SAAT,CAAoBv3C,MAApB,EAA4BN,KAA5B,EAAmC;AAClC,QAAI83C,MAAM,EAAV;AACAA,QAAIx3C,SAAO,CAAX,IAAgBN,KAAhB;AACA,WAAO83C,IAAI13C,GAAJ,CAAQ,UAAS6V,CAAT,EAAY;AAAC,eAAOjW,KAAP;AAAc,KAAnC,CAAP;AACA;;AAED,SAAS2hC,eAAT,CAA0BoW,OAA1B,EAAmC;;AAE/B,QAAKA,YAAW3hC,SAAX,IAAwB2hC,YAAY,IAAzC,EAAgD;AAC5CA,kBAAUnW,0BAA0ByT,cAApC;AACH;AACD,SAAK9Q,sBAAL,GAA8BwT,OAA9B;AACA,SAAKC,cAAL,GAAsB,IAAtB;AACA,SAAKC,eAAL,GAAuB,IAAvB;;AAEA,WAAO,IAAP;AACH;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAtW,gBAAgB7N,SAAhB,CAA0BokB,kBAA1B,GAA+C,UAASC,OAAT,EAAkBC,UAAlB,EAA8B;AACzE,QAAIC,OAAOX,gBAAgBxxC,OAAhB,CAAwBiyC,OAAxB,CAAX;AACA,QAAIE,OAAK,CAAT,EAAY;AACR,eAAO,KAAP;AACH;AACD,QAAIC,OAAOZ,gBAAgBxxC,OAAhB,CAAwBkyC,UAAxB,CAAX;AACA,WAAOE,QAAQD,IAAf;AACH,CAPD;;AASA1W,gBAAgB7N,SAAhB,CAA0B2Q,WAA1B,GAAwC,UAAStkC,IAAT,EAAe;AACnD,SAAKi0B,KAAL,CAAWj0B,IAAX;AACA,SAAK+sC,YAAL;AACA,SAAKqL,SAAL;AACA,QAAIvc,MAAM,KAAKwc,OAAL,EAAV;AACA,SAAKC,UAAL,CAAgBzc,GAAhB;AACA,SAAK0c,SAAL,CAAe1c,GAAf;AACA,SAAK2c,SAAL,CAAe3c,GAAf;AACA,QAAI4c,OAAO,EAAX;AACA;AACA,SAAKC,QAAL,CAAc7c,GAAd,EAAmB4c,IAAnB,EAAyB,KAAKE,OAAL,CAAaz4B,IAAb,CAAkB,IAAlB,CAAzB;AACA;AACA;AACA,QAAI,KAAK63B,kBAAL,CAAwBT,iBAAxB,EAA2C,KAAKsB,IAAhD,CAAJ,EAA2D;AACvD,aAAKF,QAAL,CAAc7c,GAAd,EAAmB4c,IAAnB,EAAyB,KAAKI,SAAL,CAAe34B,IAAf,CAAoB,IAApB,CAAzB;AACH;AACD,SAAK44B,SAAL,CAAejd,GAAf,EAAoB4c,IAApB;AACA,SAAKM,aAAL,CAAmBld,GAAnB;AACA,SAAKmd,gBAAL,CAAsBnd,GAAtB;AACA,SAAKod,uBAAL,CAA6Bpd,GAA7B;AACA,SAAKoZ,SAAL,CAAepZ,GAAf;AACA,QAAI,KAAKuI,sBAAL,CAA4BC,6BAA5B,IAA6DxI,IAAI6V,WAAJ,KAAoByD,QAAQ+D,MAA7F,EAAsG;AAClG,aAAK7U,6BAAL,CAAmCxI,GAAnC;AACA;AACA,aAAKoZ,SAAL,CAAepZ,GAAf;AACH;AACD,WAAOA,GAAP;AACH,CA3BD;;AA6BA2F,gBAAgB7N,SAAhB,CAA0BM,KAA1B,GAAkC,UAASj0B,IAAT,EAAe;AAChD,QAAIm5C,SAAS,SAATA,MAAS,CAASpc,CAAT,EAAY;AAClB,YAAI78B,IAAI68B,EAAE9D,UAAF,CAAa,CAAb,CAAR;AACA,eAAO/4B,IAAE,CAAF,GAAOA,IAAE,CAAT,GAAaA,IAAI,KAAxB;AACN,KAHD;AAIG,QAAIyjB,OAAO3jB,KAAKiX,KAAL,CAAW,EAAX,EAAehX,GAAf,CAAmBk5C,MAAnB,CAAX;AACA;AACAx1B,SAAK,CAAL,IAAU3jB,KAAKi5B,UAAL,CAAgB,CAAhB,CAAV;AACA,SAAKj5B,IAAL,GAAY2jB,IAAZ;AACA,SAAK7gB,GAAL,GAAW,CAAX;AACH,CAVD;;AAYA0+B,gBAAgB7N,SAAhB,CAA0BoZ,YAA1B,GAAyC,YAAW;AAChD,QAAIqM,UAAU,KAAKT,OAAL,EAAd;AACA,QAAKS,YAAY5B,kBAAjB,EAAsC;AAClC,cAAO,4CAA4C4B,OAA5C,GAAsD,aAAtD,GAAsE5B,kBAAtE,GAA2F,IAAlG;AACH;AACJ,CALD;;AAOAhW,gBAAgB7N,SAAhB,CAA0BykB,SAA1B,GAAsC,YAAW;AAC7C,QAAIQ,OAAO,KAAKS,QAAL,EAAX;AACA,QAAI9B,gBAAgBxxC,OAAhB,CAAwB6yC,IAAxB,IAA8B,CAAlC,EAAqC;AACjC,cAAO,0CAA0CA,IAA1C,GACS,aADT,GACyBnB,eADzB,GAC2C,qBAD3C,EACkEmB,IADlE,EACwEnB,eAD/E;AAEH;AACD,SAAKmB,IAAL,GAAYA,IAAZ;AACH,CAPD;;AASApX,gBAAgB7N,SAAhB,CAA0B0kB,OAA1B,GAAoC,YAAW;AAC3C,QAAI3G,cAAc,KAAKiH,OAAL,EAAlB;AACA,QAAI5a,eAAe,KAAK4a,OAAL,EAAnB;AACA,WAAO,IAAIlH,GAAJ,CAAQC,WAAR,EAAqB3T,YAArB,CAAP;AACH,CAJD;;AAMAyD,gBAAgB7N,SAAhB,CAA0B2kB,UAA1B,GAAuC,UAASzc,GAAT,EAAc;AACpD,QAAI3L,CAAJ,EAAOopB,IAAP,EAAa1b,WAAb;AACG,QAAI2b,uBAAuB,EAA3B;AACA,QAAIC,kBAAkB,EAAtB;AACA,QAAIC,UAAU,KAAKd,OAAL,EAAd;AACA,SAAI,IAAI7iC,IAAE,CAAV,EAAaA,IAAE2jC,OAAf,EAAwB3jC,GAAxB,EAA6B;AACzB,YAAI4jC,QAAQ,KAAKf,OAAL,EAAZ;AACA;AACA,YAAIe,UAAQrE,SAASzb,YAArB,EAAmC;AAC/BiC,gBAAIyW,QAAJ,CAAa,IAAb;AACA;AACH;AACD,YAAI/U,YAAY,KAAKob,OAAL,EAAhB;AACA,YAAIpb,cAAc,MAAlB,EAA0B;AACtBA,wBAAY,CAAC,CAAb;AACH;AACD,YAAIpH,IAAI,KAAKwjB,YAAL,CAAkBD,KAAlB,EAAyBnc,SAAzB,CAAR;AACA,YAAImc,UAAUrE,SAASuE,QAAvB,EAAiC;AAAE;AAC/B,gBAAIC,sBAAsB,KAAKlB,OAAL,EAA1B;AACAY,iCAAqBv1C,IAArB,CAA0B,CAACmyB,CAAD,EAAI0jB,mBAAJ,CAA1B;AACH,SAHD,MAGO,IAAG1jB,aAAaof,eAAhB,EAAiC;AACpC,gBAAIuE,iBAAiB,KAAKnB,OAAL,EAArB;AACAa,4BAAgBx1C,IAAhB,CAAqB,CAACmyB,CAAD,EAAI2jB,cAAJ,CAArB;AACH;AACDje,YAAIyW,QAAJ,CAAanc,CAAb;AACH;AACD;AACH;AACG,SAAKjG,IAAE,CAAP,EAAUA,IAAEqpB,qBAAqBp5C,MAAjC,EAAyC+vB,GAAzC,EAA8C;AAC1CopB,eAAOC,qBAAqBrpB,CAArB,CAAP;AACAopB,aAAK,CAAL,EAAQS,aAAR,GAAwBle,IAAIuB,MAAJ,CAAWkc,KAAK,CAAL,CAAX,CAAxB;AACH;;AAED,SAAKppB,IAAE,CAAP,EAAUA,IAAEspB,gBAAgBr5C,MAA5B,EAAoC+vB,GAApC,EAAyC;AACrCopB,eAAOE,gBAAgBtpB,CAAhB,CAAP;AACAopB,aAAK,CAAL,EAAQU,QAAR,GAAmBne,IAAIuB,MAAJ,CAAWkc,KAAK,CAAL,CAAX,CAAnB;AACH;;AAED,QAAIW,qBAAqB,KAAKtB,OAAL,EAAzB;AACA,SAAKzoB,IAAE,CAAP,EAAUA,IAAE+pB,kBAAZ,EAAgC/pB,GAAhC,EAAqC;AACjC0N,sBAAc,KAAK+a,OAAL,EAAd;AACA9c,YAAIuB,MAAJ,CAAWQ,WAAX,EAAwB6V,SAAxB,GAAoC,IAApC;AACH;;AAED,QAAIyG,sBAAsB,KAAKvB,OAAL,EAA1B;AACA,SAAKzoB,IAAE,CAAP,EAAUA,IAAEgqB,mBAAZ,EAAiChqB,GAAjC,EAAsC;AAClC0N,sBAAc,KAAK+a,OAAL,EAAd;AACA9c,YAAIuB,MAAJ,CAAWQ,WAAX,EAAwBuc,gBAAxB,GAA2C,IAA3C;AACH;AACJ,CAjDD;;AAmDA3Y,gBAAgB7N,SAAhB,CAA0B4kB,SAA1B,GAAsC,UAAS1c,GAAT,EAAc;AAChD,QAAI/lB,CAAJ;AACA,QAAIskC,SAAS,KAAKzB,OAAL,EAAb;AACA,QAAI9c,IAAI6V,WAAJ,KAAoByD,QAAQkF,KAAhC,EAAwC;AACpCxe,YAAIkW,eAAJ,GAAsB2F,UAAU0C,MAAV,EAAkB,CAAlB,CAAtB;AACH;AACDve,QAAI+V,gBAAJ,GAAuB8F,UAAU0C,MAAV,EAAkB,CAAlB,CAAvB;AACA,SAAKtkC,IAAE,CAAP,EAAUA,IAAEskC,MAAZ,EAAoBtkC,GAApB,EAAyB;AACrB,YAAIqgB,IAAI,KAAKwiB,OAAL,EAAR;AACA,YAAI2B,aAAaze,IAAIuB,MAAJ,CAAWjH,CAAX,CAAjB;AACA0F,YAAI+V,gBAAJ,CAAqB97B,CAArB,IAA0BwkC,UAA1B;AACA,YAAKze,IAAI6V,WAAJ,KAAoByD,QAAQkF,KAAjC,EAAyC;AACrC,gBAAIE,YAAY,KAAK5B,OAAL,EAAhB;AACA,gBAAI4B,cAAc,MAAlB,EAA0B;AACtBA,4BAAYrnB,MAAMsB,GAAlB;AACH;AACDqH,gBAAIkW,eAAJ,CAAoBj8B,CAApB,IAAyBykC,SAAzB;AACH;AACJ;AACD1e,QAAIgW,eAAJ,GAAsB6F,UAAU0C,MAAV,EAAkB,CAAlB,CAAtB;AACA,SAAKtkC,IAAE,CAAP,EAAUA,IAAE+lB,IAAIuB,MAAJ,CAAWj9B,MAAvB,EAA+B2V,GAA/B,EAAoC;AAChC,YAAIknB,QAAQnB,IAAIuB,MAAJ,CAAWtnB,CAAX,CAAZ;AACA,YAAI,EAAEknB,iBAAiB7B,aAAnB,CAAJ,EAAuC;AACnC;AACH;AACDU,YAAIgW,eAAJ,CAAoB7U,MAAMO,SAA1B,IAAuCP,KAAvC;AACAnB,YAAI+V,gBAAJ,CAAqB5U,MAAMO,SAA3B,EAAsCb,SAAtC,GAAkDM,KAAlD;AACH;AACJ,CA5BD;;AA8BAwE,gBAAgB7N,SAAhB,CAA0B6kB,SAA1B,GAAsC,UAAS3c,GAAT,EAAc;AAChD,QAAI2e,SAAS,KAAK7B,OAAL,EAAb;AACA,SAAK,IAAI7iC,IAAE,CAAX,EAAcA,IAAE0kC,MAAhB,EAAwB1kC,GAAxB,EAA6B;AACzB,YAAIqgB,IAAI,KAAKwiB,OAAL,EAAR;AACA9c,YAAIoW,gBAAJ,CAAqBjuC,IAArB,CAA0B63B,IAAIuB,MAAJ,CAAWjH,CAAX,CAA1B;AACH;AACJ,CAND;;AAQAqL,gBAAgB7N,SAAhB,CAA0B+kB,QAA1B,GAAqC,UAAS7c,GAAT,EAAc4c,IAAd,EAAoBgC,WAApB,EAAiC;AAClE,QAAIta,IAAI,KAAKwY,OAAL,EAAR;AACA,SAAK,IAAI7iC,IAAE,CAAX,EAAcA,IAAEqqB,CAAhB,EAAmBrqB,GAAnB,EAAwB;AACpB,YAAI4kC,OAAO,IAAIjhB,WAAJ,EAAX;AACAgf,aAAKz0C,IAAL,CAAU02C,IAAV;AACA,YAAIrtB,IAAI,KAAKsrB,OAAL,EAAR;AACA,YAAIgC,cAAc,KAAKhC,OAAL,EAAlB;AACA,YAAIgC,gBAAc,CAAlB,EAAqB;AACjBD,iBAAK7gB,MAAL,CAAY,CAAC,CAAb;AACH;AACD,aAAK,IAAI3J,IAAE,CAAX,EAAcA,IAAE7C,CAAhB,EAAmB6C,GAAnB,EAAwB;AACpB,gBAAI0qB,KAAKH,aAAT;AACA,gBAAII,KAAKJ,aAAT;AACAC,iBAAK3gB,QAAL,CAAc6gB,EAAd,EAAkBC,EAAlB;AACH;AACJ;AACJ,CAhBD;;AAkBArZ,gBAAgB7N,SAAhB,CAA0BmlB,SAA1B,GAAsC,UAASjd,GAAT,EAAc4c,IAAd,EAAoB;AACzD,QAAI3iC,CAAJ,EAAOoa,CAAP,EAAU8M,KAAV,EAAiB8d,KAAjB,EAAwB3jB,MAAxB;AACG,QAAI4jB,SAAS,KAAKpC,OAAL,EAAb;AACA,SAAK7iC,IAAE,CAAP,EAAUA,IAAEilC,MAAZ,EAAoBjlC,GAApB,EAAyB;AACrB,YAAIklC,MAAM,KAAKrC,OAAL,EAAV;AACA,YAAIsC,MAAM,KAAKtC,OAAL,EAAV;AACA,YAAI/Y,QAAQ,KAAK+Y,OAAL,EAAZ;AACA,YAAIuC,OAAO,KAAKvC,OAAL,EAAX;AACA,YAAIwC,OAAO,KAAKxC,OAAL,EAAX;AACA,YAAIyC,OAAO,KAAKzC,OAAL,EAAX;AACAmC,gBAAQ,KAAKO,WAAL,CAAiBxf,GAAjB,EAAsB+D,KAAtB,EAA6Bob,GAA7B,EAAkCC,GAAlC,EAAuCC,IAAvC,EAA6CC,IAA7C,EAAmDC,IAAnD,EAAyD3C,IAAzD,CAAR;AACA,YAAI6C,WAAWzf,IAAIuB,MAAJ,CAAW4d,GAAX,CAAf;AACAM,iBAASC,aAAT,CAAuBT,KAAvB;AACH;AACD;AACA,SAAKhlC,IAAE,CAAP,EAAUA,IAAE+lB,IAAIuB,MAAJ,CAAWj9B,MAAvB,EAA+B2V,GAA/B,EAAoC;AAChCknB,gBAAQnB,IAAIuB,MAAJ,CAAWtnB,CAAX,CAAR;AACA,aAAKoa,IAAE,CAAP,EAAUA,IAAE8M,MAAMf,WAAN,CAAkB97B,MAA9B,EAAsC+vB,GAAtC,EAA2C;AACvC,gBAAImC,IAAI2K,MAAMf,WAAN,CAAkB/L,CAAlB,CAAR;AACA,gBAAI,EAAEmC,aAAa+I,cAAf,CAAJ,EAAoC;AAChC;AACH;AACV,gBAAIogB,4BAA4B,CAAC,CAAjC;AACA,gBAAI3f,IAAI+V,gBAAJ,CAAqBvf,EAAE8E,MAAF,CAASoG,SAA9B,EAAyC4c,gBAA7C,EAA+D;AAC9D,oBAAI9nB,EAAE6T,UAAF,KAAiB,CAArB,EAAwB;AACvBsV,gDAA4BnpB,EAAE8E,MAAF,CAASoG,SAArC;AACA;AACD;;AAEDud,oBAAQ,IAAItE,iBAAJ,CAAsBnkB,EAAEsL,WAAxB,EAAqC6d,yBAArC,CAAR;AACS3f,gBAAIgW,eAAJ,CAAoBxf,EAAE8E,MAAF,CAASoG,SAA7B,EAAwCge,aAAxC,CAAsDT,KAAtD;AACH;AACJ;;AAED,SAAKhlC,IAAE,CAAP,EAAUA,IAAE+lB,IAAIuB,MAAJ,CAAWj9B,MAAvB,EAA+B2V,GAA/B,EAAoC;AAChCknB,gBAAQnB,IAAIuB,MAAJ,CAAWtnB,CAAX,CAAR;AACA,YAAIknB,iBAAiBuY,eAArB,EAAsC;AAClC;AACA,gBAAIvY,MAAMgd,QAAN,KAAmB,IAAvB,EAA6B;AACzB,sBAAO,cAAP;AACH;AACD;AACT;AACS,gBAAKhd,MAAMgd,QAAN,CAAeM,UAAf,KAA8B,IAAnC,EAAyC;AACrC,sBAAO,cAAP;AACH;AACDtd,kBAAMgd,QAAN,CAAeM,UAAf,GAA4Btd,KAA5B;AACH;AACD,YAAIA,iBAAiB4Y,iBAArB,EAAwC;AACpC,iBAAK1lB,IAAE,CAAP,EAAUA,IAAE8M,MAAMf,WAAN,CAAkB97B,MAA9B,EAAsC+vB,GAAtC,EAA2C;AACvCiH,yBAAS6F,MAAMf,WAAN,CAAkB/L,CAAlB,EAAqBiH,MAA9B;AACA,oBAAIA,kBAAkB4e,mBAAtB,EAA2C;AACvC5e,2BAAO4iB,aAAP,GAAuB/c,KAAvB;AACH;AACJ;AACJ,SAPD,MAOO,IAAIA,iBAAiB6Y,iBAArB,EAAwC;AAC3C,iBAAK3lB,IAAE,CAAP,EAAUA,IAAE8M,MAAMf,WAAN,CAAkB97B,MAA9B,EAAsC+vB,GAAtC,EAA2C;AACvCiH,yBAAS6F,MAAMf,WAAN,CAAkB/L,CAAlB,EAAqBiH,MAA9B;AACA,oBAAIA,kBAAkB2e,kBAAtB,EAA0C;AACtC3e,2BAAO4iB,aAAP,GAAuB/c,KAAvB;AACH;AACJ;AACJ;AACJ;AACJ,CAhED;;AAkEAwE,gBAAgB7N,SAAhB,CAA0BolB,aAA1B,GAA0C,UAASld,GAAT,EAAc;AACpD,QAAI4f,aAAa,KAAK9C,OAAL,EAAjB;AACA,SAAK,IAAI7iC,IAAE,CAAX,EAAcA,IAAE2lC,UAAhB,EAA4B3lC,GAA5B,EAAiC;AAC7B,YAAIqgB,IAAI,KAAKwiB,OAAL,EAAR;AACA,YAAI+C,WAAW7f,IAAIuB,MAAJ,CAAWjH,CAAX,CAAf;AACA0F,YAAI8V,eAAJ,CAAoB3tC,IAApB,CAAyB03C,QAAzB;AACAA,iBAAS9T,QAAT,GAAoB9xB,CAApB;AACH;AACJ,CARD;;AAUA0rB,gBAAgB7N,SAAhB,CAA0BqlB,gBAA1B,GAA6C,UAASnd,GAAT,EAAc;AACvD,QAAIA,IAAI6V,WAAJ,KAAoByD,QAAQkF,KAAhC,EAAuC;AACnC,YAAIre,QAAQ,KAAK2c,OAAL,EAAZ;AACA9c,YAAImW,YAAJ,GAAmB0F,UAAU1b,KAAV,EAAiB,IAAjB,CAAnB;AACA,aAAK,IAAIlmB,IAAE,CAAX,EAAcA,IAAEkmB,KAAhB,EAAuBlmB,GAAvB,EAA4B;AACxB,gBAAI6lC,aAAa,KAAKhD,OAAL,EAAjB;AACA,gBAAIiD,QAAQ,KAAKjD,OAAL,EAAZ;AACA,gBAAIiD,UAAU,MAAd,EAAsB;AAClBA,wBAAQ,CAAC,CAAT;AACH;AACD,gBAAIC,QAAQ,KAAKlD,OAAL,EAAZ;AACA,gBAAIkD,UAAU,MAAd,EAAsB;AAClBA,wBAAQ,CAAC,CAAT;AACH;AACD,gBAAIC,cAAc,KAAKC,kBAAL,CAAwBJ,UAAxB,EAAoCC,KAApC,EAA2CC,KAA3C,CAAlB;AACAhgB,gBAAImW,YAAJ,CAAiBl8B,CAAjB,IAAsBgmC,WAAtB;AACH;AACJ;AACJ,CAlBD;;AAoBAta,gBAAgB7N,SAAhB,CAA0B0Q,6BAA1B,GAA0D,UAASxI,GAAT,EAAc;AACvE,QAAI/lB,CAAJ;AACG,QAAIkmB,QAAQH,IAAI+V,gBAAJ,CAAqBzxC,MAAjC;AACA,SAAI2V,IAAE,CAAN,EAASA,IAAEkmB,KAAX,EAAkBlmB,GAAlB,EAAuB;AACnB+lB,YAAIkW,eAAJ,CAAoBj8B,CAApB,IAAyB+lB,IAAIkC,YAAJ,GAAmBjoB,CAAnB,GAAuB,CAAhD;AACH;AACD,SAAIA,IAAE,CAAN,EAASA,IAAEkmB,KAAX,EAAkBlmB,GAAlB,EAAuB;AACnB,aAAKkmC,4BAAL,CAAkCngB,GAAlC,EAAuC/lB,CAAvC;AACH;AACJ,CATD;;AAWA0rB,gBAAgB7N,SAAhB,CAA0BqoB,4BAA1B,GAAyD,UAASngB,GAAT,EAAc5O,GAAd,EAAmB;AAC3E,QAAInX,CAAJ,EAAOknB,KAAP;AACG,QAAIif,cAAc,IAAIhG,oBAAJ,EAAlB;AACAgG,gBAAY1e,SAAZ,GAAwBtQ,GAAxB;AACA4O,QAAIyW,QAAJ,CAAa2J,WAAb;;AAEA,QAAIC,aAAa,IAAI1G,aAAJ,EAAjB;AACA0G,eAAW3e,SAAX,GAAuBtQ,GAAvB;AACA4O,QAAIyW,QAAJ,CAAa4J,UAAb;;AAEAD,gBAAYjC,QAAZ,GAAuBkC,UAAvB;AACArgB,QAAI2W,mBAAJ,CAAwByJ,WAAxB;;AAEAC,eAAW5B,UAAX,GAAwB2B,WAAxB;;AAEA,QAAIE,oBAAoB,IAAxB;AACA,QAAInC,WAAW,IAAf;;AAEA,QAAIne,IAAI+V,gBAAJ,CAAqB3kB,GAArB,EAA0BktB,gBAA9B,EAAgD;AAC5C;AACAH,mBAAW,IAAX;AACA,aAAIlkC,IAAE,CAAN,EAASA,IAAE+lB,IAAIuB,MAAJ,CAAWj9B,MAAtB,EAA8B2V,GAA9B,EAAmC;AAC/BknB,oBAAQnB,IAAIuB,MAAJ,CAAWtnB,CAAX,CAAR;AACA,gBAAI,KAAKsmC,kBAAL,CAAwBpf,KAAxB,EAA+B/P,GAA/B,CAAJ,EAAyC;AACrC+sB,2BAAWhd,KAAX;AACAmf,oCAAoBnf,MAAM+c,aAAN,CAAoB9d,WAApB,CAAgC,CAAhC,CAApB;AACA;AACH;AACJ;AACD,YAAIkgB,sBAAsB,IAA1B,EAAgC;AAC5B,kBAAO,sEAAP;AACH;AACJ,KAdD,MAcO;AACHnC,mBAAWne,IAAIgW,eAAJ,CAAoB5kB,GAApB,CAAX;AACH;;AAED;AACH;AACG,SAAInX,IAAE,CAAN,EAASA,IAAE+lB,IAAIuB,MAAJ,CAAWj9B,MAAtB,EAA8B2V,GAA9B,EAAmC;AAC/BknB,gBAAQnB,IAAIuB,MAAJ,CAAWtnB,CAAX,CAAR;AACA,aAAI,IAAIoa,IAAE,CAAV,EAAaA,IAAE8M,MAAMf,WAAN,CAAkB97B,MAAjC,EAAyC+vB,GAAzC,EAA8C;AAC1C,gBAAIqM,aAAaS,MAAMf,WAAN,CAAkB/L,CAAlB,CAAjB;AACA,gBAAIqM,eAAe4f,iBAAnB,EAAsC;AAClC;AACH;AACD,gBAAI5f,WAAWpF,MAAX,KAAsB6iB,QAA1B,EAAoC;AAChCzd,2BAAWpF,MAAX,GAAoB+kB,UAApB;AACH;AACJ;AACJ;;AAED;AACH;AACG,QAAItK,mBAAmB/V,IAAI+V,gBAAJ,CAAqB3kB,GAArB,CAAvB;AACA,QAAI+O,QAAQ4V,iBAAiB3V,WAAjB,CAA6B97B,MAAzC;AACA,WAAQ67B,QAAQ,CAAhB,EAAmB;AACfigB,oBAAYV,aAAZ,CAA0B3J,iBAAiB3V,WAAjB,CAA6BD,QAAM,CAAnC,CAA1B;AACA4V,yBAAiB3V,WAAjB,GAA+B2V,iBAAiB3V,WAAjB,CAA6B1C,KAA7B,CAAmC,CAAC,CAApC,CAA/B;AACH;AACD;AACAsC,QAAI+V,gBAAJ,CAAqB3kB,GAArB,EAA0BsuB,aAA1B,CAAwC,IAAI/E,iBAAJ,CAAsByF,WAAtB,CAAxC;AACAC,eAAWX,aAAX,CAAyB,IAAI/E,iBAAJ,CAAsBwD,QAAtB,CAAzB;;AAEA,QAAIqC,aAAa,IAAI/G,UAAJ,EAAjB;AACAzZ,QAAIyW,QAAJ,CAAa+J,UAAb;AACAA,eAAWd,aAAX,CAAyB,IAAInF,cAAJ,CAAmB8F,UAAnB,EAA+BrgB,IAAIkW,eAAJ,CAAoB9kB,GAApB,CAA/B,CAAzB;AACAgvB,gBAAYV,aAAZ,CAA0B,IAAI/E,iBAAJ,CAAsB6F,UAAtB,CAA1B;AACH,CAnED;;AAqEA7a,gBAAgB7N,SAAhB,CAA0ByoB,kBAA1B,GAA+C,UAASpf,KAAT,EAAgB/P,GAAhB,EAAqB;AAChE,QAAK+P,MAAMO,SAAN,KAAoBtQ,GAAzB,EAA8B;AAC1B,eAAO,IAAP;AACH;AACD,QAAI,EAAG+P,iBAAiB8Y,kBAApB,CAAJ,EAA6C;AACzC,eAAO,IAAP;AACH;AACD,QAAIwG,oBAAoBtf,MAAMf,WAAN,CAAkBe,MAAMf,WAAN,CAAkB97B,MAAlB,GAA2B,CAA7C,EAAgDg3B,MAAxE;AACA,QAAI,EAAGmlB,6BAA6B7G,YAAhC,CAAJ,EAAmD;AAC/C,eAAO,IAAP;AACH;AACD,QAAI6G,kBAAkBC,sBAAlB,IACCD,kBAAkBrgB,WAAlB,CAA8B,CAA9B,EAAiC9E,MAAjC,YAAmDgE,aADxD,EACwE;AACpE,eAAO6B,KAAP;AACH,KAHD,MAGO;AACH,eAAO,IAAP;AACH;AACJ,CAjBD;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwE,gBAAgB7N,SAAhB,CAA0BslB,uBAA1B,GAAoD,UAASpd,GAAT,EAAc;AACjE,SAAI,IAAI/lB,IAAE,CAAV,EAAaA,IAAE+lB,IAAIuB,MAAJ,CAAWj9B,MAA1B,EAAkC2V,GAAlC,EAAuC;AACtC,YAAIknB,QAAQnB,IAAIuB,MAAJ,CAAWtnB,CAAX,CAAZ;AACA,YAAI,EAAGknB,iBAAiB8Y,kBAApB,CAAJ,EAA6C;AACnC;AACH;AACD;AACA;AACA;AACA;AACA,YAAKja,IAAI+V,gBAAJ,CAAqB5U,MAAMO,SAA3B,EAAsC4c,gBAA3C,EAA6D;AACzD,gBAAImC,oBAAoBtf,MAAMf,WAAN,CAAkBe,MAAMf,WAAN,CAAkB97B,MAAlB,GAA2B,CAA7C,EAAgDg3B,MAAxE;AACA,gBAAImlB,6BAA6B7G,YAAjC,EAA+C;AAC3C,oBAAK6G,kBAAkBC,sBAAlB,IACID,kBAAkBrgB,WAAlB,CAA8B,CAA9B,EAAiC9E,MAAjC,YAAmDgE,aAD5D,EAC4E;AACxE6B,0BAAMwf,oBAAN,GAA6B,IAA7B;AACH;AACJ;AACJ;AACP;AACD,CApBD;;AAsBAhb,gBAAgB7N,SAAhB,CAA0BshB,SAA1B,GAAsC,UAASpZ,GAAT,EAAc;AAChD,QAAI,CAAC,KAAKuI,sBAAL,CAA4B6Q,SAAjC,EAA4C;AACxC;AACH;AACD;AACH,SAAI,IAAIn/B,IAAE,CAAV,EAAaA,IAAE+lB,IAAIuB,MAAJ,CAAWj9B,MAA1B,EAAkC2V,GAAlC,EAAuC;AAChC,YAAIknB,QAAQnB,IAAIuB,MAAJ,CAAWtnB,CAAX,CAAZ;AACA,YAAIknB,UAAU,IAAd,EAAoB;AAChB;AACH;AACD,aAAKyf,cAAL,CAAoBzf,MAAMuf,sBAAN,IAAgCvf,MAAMf,WAAN,CAAkB97B,MAAlB,IAA4B,CAAhF;AACA,YAAI68B,iBAAiB+Y,mBAArB,EAA0C;AACtC,iBAAK0G,cAAL,CAAoBzf,MAAM+c,aAAN,KAAwB,IAA5C;AACH,SAFD,MAEQ,IAAI/c,iBAAiB8Y,kBAArB,EAAyC;AAC7C,iBAAK2G,cAAL,CAAoBzf,MAAM+c,aAAN,KAAwB,IAA5C;AACA,iBAAK0C,cAAL,CAAoBzf,MAAMf,WAAN,CAAkB97B,MAAlB,KAA6B,CAAjD;AACA,gBAAI68B,MAAMf,WAAN,CAAkB,CAAlB,EAAqB9E,MAArB,YAAuC6e,mBAA3C,EAAgE;AAC5D,qBAAKyG,cAAL,CAAoBzf,MAAMf,WAAN,CAAkB,CAAlB,EAAqB9E,MAArB,YAAuCse,YAA3D;AACA,qBAAKgH,cAAL,CAAoB,CAACzf,MAAMyW,SAA3B;AACH,aAHD,MAGO,IAAIzW,MAAMf,WAAN,CAAkB,CAAlB,EAAqB9E,MAArB,YAAuCse,YAA3C,EAAyD;AAC5D,qBAAKgH,cAAL,CAAoBzf,MAAMf,WAAN,CAAkB,CAAlB,EAAqB9E,MAArB,YAAuC6e,mBAA3D;AACA,qBAAKyG,cAAL,CAAoBzf,MAAMyW,SAA1B;AACH,aAHM,MAGA;AACH,sBAAM,cAAN;AACH;AACJ,SAZO,MAYD,IAAIzW,iBAAiB6Y,iBAArB,EAAwC;AAC3C,iBAAK4G,cAAL,CAAoBzf,MAAMf,WAAN,CAAkB97B,MAAlB,KAA6B,CAAjD;AACA,iBAAKs8C,cAAL,CAAoBzf,MAAMf,WAAN,CAAkB,CAAlB,EAAqB9E,MAArB,YAAuC2e,kBAA3D;AACH,SAHM,MAGA,IAAI9Y,iBAAiByY,YAArB,EAAmC;AACtC,iBAAKgH,cAAL,CAAoBzf,MAAM+c,aAAN,KAAwB,IAA5C;AACH,SAFM,MAEA,IAAI/c,iBAAiB0Y,cAArB,EAAqC;AACxC,iBAAK+G,cAAL,CAAoBzf,MAAMN,SAAN,KAAoB,IAAxC;AACH,SAFM,MAEA,IAAIM,iBAAiBuY,eAArB,EAAsC;AACzC,iBAAKkH,cAAL,CAAoBzf,MAAMgd,QAAN,KAAmB,IAAvC;AACH,SAFM,MAEA,IAAIhd,iBAAiBwY,aAArB,EAAoC;AACvC,iBAAKiH,cAAL,CAAoBzf,MAAMsd,UAAN,KAAqB,IAAzC;AACH,SAFM,MAEA,IAAItd,iBAAiB0V,aAArB,EAAoC;AACvC,iBAAK+J,cAAL,CAAoBzf,MAAMf,WAAN,CAAkB97B,MAAlB,IAA4B,CAA5B,IAAiC68B,MAAM4K,QAAN,IAAkB,CAAvE;AACH,SAFM,MAEA;AACH,iBAAK6U,cAAL,CAAoBzf,MAAMf,WAAN,CAAkB97B,MAAlB,IAA4B,CAA5B,IAAkC68B,iBAAiB7B,aAAvE;AACH;AACP;AACD,CA1CD;;AA4CAqG,gBAAgB7N,SAAhB,CAA0B8oB,cAA1B,GAA2C,UAAS9gD,SAAT,EAAoB+gD,OAApB,EAA6B;AACpE,QAAI,CAAC/gD,SAAL,EAAgB;AACZ,YAAI+gD,YAAYzmC,SAAZ,IAAyBymC,YAAU,IAAvC,EAA6C;AACzCA,sBAAU,cAAV;AACH;AACD,cAAOA,OAAP;AACH;AACJ,CAPD;;AASAlb,gBAAgB7N,SAAhB,CAA0BglB,OAA1B,GAAoC,YAAW;AAC3C,WAAO,KAAK34C,IAAL,CAAU,KAAK8C,GAAL,EAAV,CAAP;AACH,CAFD;;AAIA0+B,gBAAgB7N,SAAhB,CAA0BklB,SAA1B,GAAsC,YAAW;AAC7C,QAAI8D,MAAM,KAAKhE,OAAL,EAAV;AACA,QAAIiE,OAAO,KAAKjE,OAAL,EAAX;AACA,WAAOgE,MAAOC,QAAQ,EAAtB;AACH,CAJD;;AAMApb,gBAAgB7N,SAAhB,CAA0BkpB,QAA1B,GAAqC,YAAW;AAC5C,QAAIF,MAAM,KAAK9D,SAAL,EAAV;AACA,QAAI+D,OAAO,KAAK/D,SAAL,EAAX;AACA,WAAQ8D,MAAM,kBAAP,GAA8BC,QAAQ,EAA7C;AACH,CAJD;;AAMA,SAASE,eAAT,GAA2B;AAC1B,QAAIC,MAAM,EAAV;AACA,SAAK,IAAIjnC,IAAI,CAAb,EAAgBA,IAAI,GAApB,EAAyBA,GAAzB,EAA8B;AAC7BinC,YAAIjnC,CAAJ,IAAS,CAACA,IAAI,KAAL,EAAYrW,QAAZ,CAAqB,EAArB,EAAyB8xC,MAAzB,CAAgC,CAAhC,EAAmC1kB,WAAnC,EAAT;AACA;AACD,WAAOkwB,GAAP;AACA;;AAED,IAAIC,YAAYF,iBAAhB;;AAEAtb,gBAAgB7N,SAAhB,CAA0B0lB,QAA1B,GAAqC,YAAW;AAC/C,QAAI4D,KAAK,EAAT;AACA,SAAI,IAAInnC,IAAE,CAAV,EAAYA,KAAG,CAAf,EAAiBA,GAAjB,EAAsB;AACrB,YAAIonC,MAAM,KAAKvE,OAAL,EAAV;AACA;AACAsE,WAAI,IAAEnnC,CAAH,GAAM,CAAT,IAAconC,MAAM,IAApB;AACAD,WAAG,IAAEnnC,CAAL,IAAWonC,OAAO,CAAR,GAAa,IAAvB;AACA;AACE,WAAOF,UAAUC,GAAG,CAAH,CAAV,IAAmBD,UAAUC,GAAG,CAAH,CAAV,CAAnB,GACPD,UAAUC,GAAG,CAAH,CAAV,CADO,GACYD,UAAUC,GAAG,CAAH,CAAV,CADZ,GAC+B,GAD/B,GAEPD,UAAUC,GAAG,CAAH,CAAV,CAFO,GAEYD,UAAUC,GAAG,CAAH,CAAV,CAFZ,GAE+B,GAF/B,GAGPD,UAAUC,GAAG,CAAH,CAAV,CAHO,GAGYD,UAAUC,GAAG,CAAH,CAAV,CAHZ,GAG+B,GAH/B,GAIPD,UAAUC,GAAG,CAAH,CAAV,CAJO,GAIYD,UAAUC,GAAG,CAAH,CAAV,CAJZ,GAI+B,GAJ/B,GAKPD,UAAUC,GAAG,EAAH,CAAV,CALO,GAKaD,UAAUC,GAAG,EAAH,CAAV,CALb,GAMPD,UAAUC,GAAG,EAAH,CAAV,CANO,GAMaD,UAAUC,GAAG,EAAH,CAAV,CANb,GAOPD,UAAUC,GAAG,EAAH,CAAV,CAPO,GAOaD,UAAUC,GAAG,EAAH,CAAV,CAPpB;AAQH,CAhBD;;AAkBAzb,gBAAgB7N,SAAhB,CAA0B0nB,WAA1B,GAAwC,UAASxf,GAAT,EAAcjhC,IAAd,EAAoBogD,GAApB,EAAyBC,GAAzB,EAA8BC,IAA9B,EAAoCC,IAApC,EAA0CC,IAA1C,EAAgD3C,IAAhD,EAAsD;AAC1F,QAAIthB,SAAS0E,IAAIuB,MAAJ,CAAW6d,GAAX,CAAb;AACA,YAAOrgD,IAAP;AACA,aAAKu7C,WAAWpb,OAAhB;AACI,mBAAO,IAAIyb,iBAAJ,CAAsBrf,MAAtB,CAAP;AACJ,aAAKgf,WAAWgH,KAAhB;AACI,mBAAO/B,SAAS,CAAT,GAAa,IAAI9E,eAAJ,CAAoBnf,MAApB,EAA4BjE,MAAMsB,GAAlC,EAAuC2mB,IAAvC,CAAb,GAA4D,IAAI7E,eAAJ,CAAoBnf,MAApB,EAA4B+jB,IAA5B,EAAkCC,IAAlC,CAAnE;AACJ,aAAKhF,WAAWiH,IAAhB;AACI,mBAAO,IAAIhiB,cAAJ,CAAmBS,IAAIuB,MAAJ,CAAW8d,IAAX,CAAnB,EAAqCC,IAArC,EAA2CC,IAA3C,EAAiDjkB,MAAjD,CAAP;AACJ,aAAKgf,WAAWkH,SAAhB;AACI,mBAAO,IAAI5G,mBAAJ,CAAwBtf,MAAxB,EAAgC+jB,IAAhC,EAAsCC,IAAtC,EAA4CC,SAAS,CAArD,CAAP;AACJ,aAAKjF,WAAWmH,UAAhB;AACI,mBAAO,IAAI5G,6BAAJ,CAAkCvf,MAAlC,EAA0C+jB,IAA1C,CAAP;AACJ,aAAK/E,WAAWoH,IAAhB;AACI,mBAAOnC,SAAS,CAAT,GAAa,IAAIhF,cAAJ,CAAmBjf,MAAnB,EAA2BjE,MAAMsB,GAAjC,CAAb,GAAqD,IAAI4hB,cAAJ,CAAmBjf,MAAnB,EAA2B+jB,IAA3B,CAA5D;AACJ,aAAK/E,WAAWqH,MAAhB;AACI,mBAAO,IAAIjH,gBAAJ,CAAqBpf,MAArB,EAA6B+jB,IAA7B,EAAmCC,IAAnC,EAAyCC,SAAS,CAAlD,CAAP;AACJ,aAAKjF,WAAWsH,GAAhB;AACI,mBAAO,IAAIpH,aAAJ,CAAkBlf,MAAlB,EAA0BshB,KAAKyC,IAAL,CAA1B,CAAP;AACJ,aAAK/E,WAAWuH,OAAhB;AACI,mBAAO,IAAIriB,gBAAJ,CAAqBlE,MAArB,EAA6BshB,KAAKyC,IAAL,CAA7B,CAAP;AACJ,aAAK/E,WAAWwH,QAAhB;AACI,mBAAO,IAAIriB,kBAAJ,CAAuBnE,MAAvB,CAAP;AACJ;AACI,kBAAM,oCAAoCv8B,IAApC,GAA2C,gBAAjD;AAtBJ;AAwBH,CA1BD;;AA4BA4mC,gBAAgB7N,SAAhB,CAA0BgmB,YAA1B,GAAyC,UAAS/+C,IAAT,EAAe2iC,SAAf,EAA0B;AAC/D,QAAI,KAAKsa,cAAL,KAAwB,IAA5B,EAAkC;AAC9B,YAAI+F,KAAK,EAAT;AACAA,WAAGvI,SAASzb,YAAZ,IAA4B,IAA5B;AACAgkB,WAAGvI,SAASwI,KAAZ,IAAqB,YAAW;AAAE,mBAAO,IAAIvI,UAAJ,EAAP;AAA0B,SAA5D;AACAsI,WAAGvI,SAASyI,UAAZ,IAA0B,YAAW;AAAE,mBAAO,IAAIpI,cAAJ,EAAP;AAA8B,SAArE;AACAkI,WAAGvI,SAAS0I,WAAZ,IAA2B,YAAW;AAAE,mBAAO,IAAI9H,oBAAJ,EAAP;AAAoC,SAA5E;AACA2H,WAAGvI,SAAS2I,gBAAZ,IAAgC,YAAW;AAAE,mBAAO,IAAIjI,mBAAJ,EAAP;AAAmC,SAAhF;AACA6H,WAAGvI,SAAS4I,gBAAZ,IAAgC,YAAW;AAAE,mBAAO,IAAIjI,mBAAJ,EAAP;AAAmC,SAAhF;AACA4H,WAAGvI,SAAS6I,WAAZ,IAA2B,YAAW;AAAE,mBAAO,IAAIvI,gBAAJ,EAAP;AAAgC,SAAxE;AACAiI,WAAGvI,SAAS8I,SAAZ,IAAyB,YAAW;AAAE,mBAAO,IAAIhjB,aAAJ,EAAP;AAA6B,SAAnE;AACAyiB,WAAGvI,SAAS+I,SAAZ,IAAyB,YAAW;AAAE,mBAAO,IAAI5I,aAAJ,EAAP;AAA6B,SAAnE;AACAoI,WAAGvI,SAASgJ,cAAZ,IAA8B,YAAW;AAAE,mBAAO,IAAIxI,iBAAJ,EAAP;AAAiC,SAA5E;AACA+H,WAAGvI,SAASiJ,eAAZ,IAA+B,YAAW;AAAE,mBAAO,IAAIxI,kBAAJ,EAAP;AAAkC,SAA9E;AACA8H,WAAGvI,SAASkJ,cAAZ,IAA8B,YAAW;AAAE,mBAAO,IAAI3I,iBAAJ,EAAP;AAAiC,SAA5E;AACAgI,WAAGvI,SAASuE,QAAZ,IAAwB,YAAW;AAAE,mBAAO,IAAInE,YAAJ,EAAP;AAA4B,SAAjE;AACA,aAAKoC,cAAL,GAAsB+F,EAAtB;AACH;AACD,QAAIhjD,OAAK,KAAKi9C,cAAL,CAAoB13C,MAAzB,IAAmC,KAAK03C,cAAL,CAAoBj9C,IAApB,MAA8B,IAArE,EAA2E;AACvE,cAAM,8BAA8BA,IAA9B,GAAqC,gBAA3C;AACH,KAFD,MAEO;AACH,YAAIu7B,IAAI,KAAK0hB,cAAL,CAAoBj9C,IAApB,GAAR;AACA,YAAIu7B,MAAI,IAAR,EAAc;AACVA,cAAEoH,SAAF,GAAcA,SAAd;AACA,mBAAOpH,CAAP;AACH;AACJ;AACJ,CA3BD;;AA6BAqL,gBAAgB7N,SAAhB,CAA0BooB,kBAA1B,GAA+C,UAASnhD,IAAT,EAAeghD,KAAf,EAAsBC,KAAtB,EAA6B;AACxE,QAAI,KAAK/D,eAAL,KAAyB,IAA7B,EAAmC;AAC/B,YAAI0G,KAAK,EAAT;AACAA,WAAG5H,gBAAgB6H,OAAnB,IAA8B,UAAS7C,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAO,IAAI/E,kBAAJ,CAAuB8E,KAAvB,CAAP;AAAuC,SAA9F;AACA4C,WAAG5H,gBAAgB8H,MAAnB,IAA6B,UAAS9C,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAO,IAAI9E,iBAAJ,CAAsB6E,KAAtB,EAA6BC,KAA7B,CAAP;AAA6C,SAAnG;AACA2C,WAAG5H,gBAAgB+H,IAAnB,IAA2B,UAAS/C,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAO,IAAIzE,eAAJ,CAAoBwE,KAApB,CAAP;AAAoC,SAAxF;AACA4C,WAAG5H,gBAAgBzX,IAAnB,IAA2B,UAASyc,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAO7E,gBAAgBrK,QAAvB;AAAkC,SAAtF;AACA6R,WAAG5H,gBAAgBgI,QAAnB,IAA+B,UAAShD,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAO1E,mBAAmBxK,QAA1B;AAAqC,SAA7F;AACA6R,WAAG5H,gBAAgBiI,SAAnB,IAAgC,UAASjD,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAO,IAAI3E,mBAAJ,CAAwB0E,KAAxB,CAAP;AAAwC,SAAjG;AACA4C,WAAG5H,gBAAgBxX,IAAnB,IAA2B,UAASwc,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAOhF,gBAAgBlK,QAAvB;AAAkC,SAAtF;AACA6R,WAAG5H,gBAAgBkI,IAAnB,IAA2B,UAASlD,KAAT,EAAgBC,KAAhB,EAAuB;AAAE,mBAAO,IAAI5E,eAAJ,CAAoB2E,KAApB,CAAP;AAAoC,SAAxF;AACA,aAAK9D,eAAL,GAAuB0G,EAAvB;AACH;AACD,QAAI5jD,OAAK,KAAKk9C,eAAL,CAAqB33C,MAA1B,IAAoC,KAAK23C,eAAL,CAAqBl9C,IAArB,MAA+B,IAAvE,EAA6E;AACzE,cAAM,qCAAqCA,IAArC,GAA4C,gBAAlD;AACH,KAFD,MAEO;AACH,eAAO,KAAKk9C,eAAL,CAAqBl9C,IAArB,EAA2BghD,KAA3B,EAAkCC,KAAlC,CAAP;AACH;AACJ,CAlBD;;AAqBA3iD,QAAQsoC,eAAR,GAA0BA,eAA1B,C;;;;;;;;;;;;;;ACrqBA;AACA;;;;AAIA;;AAEA,IAAIud,WAAW,mBAAA5rB,CAAQ,gEAAR,EAA6B4rB,QAA5C;AACA,IAAIlL,eAAe,mBAAA1gB,CAAQ,iEAAR,EAA0B0gB,YAA7C;AACA,IAAI5H,6BAA6B,mBAAA9Y,CAAQ,0EAAR,EAAkC8Y,0BAAnE;;AAEA,SAAS+S,YAAT,CAAsBnjB,GAAtB,EAA2BojB,kBAA3B,EAA+C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAKpjB,GAAL,GAAWA,GAAX;AACA,SAAKojB,kBAAL,GAA0BA,kBAA1B;AACA,WAAO,IAAP;AACH;;AAED;AACAD,aAAaE,KAAb,GAAqB,IAAIH,QAAJ,CAAa,UAAb,EAAyB,IAAIlL,YAAJ,EAAzB,CAArB;;AAGAmL,aAAarrB,SAAb,CAAuBghB,gBAAvB,GAA0C,UAAS32C,OAAT,EAAkB;AACxD,QAAI,KAAKihD,kBAAL,KAA2B,IAA/B,EAAqC;AACjC,eAAOjhD,OAAP;AACH;AACD,QAAImuC,UAAU,EAAd;AACA,WAAOF,2BAA2BjuC,OAA3B,EAAoC,KAAKihD,kBAAzC,EAA6D9S,OAA7D,CAAP;AACH,CAND;;AAQAjzC,QAAQ8lD,YAAR,GAAuBA,YAAvB,C;;;;;;;;;;;;;;AClDA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIG,0BAA0B,CAA9B;;AAEA,SAAS9J,QAAT,GAAoB;AAChB;AACA,OAAKxZ,GAAL,GAAW,IAAX;AACA,OAAK+B,WAAL,GAAmByX,SAAS+J,oBAA5B;AACA,OAAKC,SAAL,GAAiB,IAAjB;AACA,OAAK9hB,SAAL,GAAiB,CAAjB,CALgB,CAKI;AACpB,OAAKgf,sBAAL,GAA8B,KAA9B;AACA;AACA,OAAKtgB,WAAL,GAAmB,EAAnB;AACA;AACA,OAAKoW,mBAAL,GAA2B,IAA3B;AACA,SAAO,IAAP;AACH;;AAED;AACAgD,SAASzb,YAAT,GAAwB,CAAxB;AACAyb,SAASwI,KAAT,GAAiB,CAAjB;AACAxI,SAASyI,UAAT,GAAsB,CAAtB;AACAzI,SAAS0I,WAAT,GAAuB,CAAvB;AACA1I,SAAS2I,gBAAT,GAA4B,CAA5B;AACA3I,SAAS4I,gBAAT,GAA4B,CAA5B;AACA5I,SAAS6I,WAAT,GAAuB,CAAvB;AACA7I,SAAS8I,SAAT,GAAqB,CAArB;AACA9I,SAAS+I,SAAT,GAAqB,CAArB;AACA/I,SAASgJ,cAAT,GAA0B,CAA1B;AACAhJ,SAASiJ,eAAT,GAA2B,EAA3B;AACAjJ,SAASkJ,cAAT,GAA0B,EAA1B;AACAlJ,SAASuE,QAAT,GAAoB,EAApB;;AAEAvE,SAASiK,kBAAT,GAA8B,CAClB,SADkB,EAElB,OAFkB,EAGlB,YAHkB,EAIlB,aAJkB,EAKlB,kBALkB,EAMlB,kBANkB,EAOlB,aAPkB,EAQlB,WARkB,EASlB,WATkB,EAUlB,gBAVkB,EAWlB,iBAXkB,EAYlB,gBAZkB,EAalB,UAbkB,CAA9B;;AAeAjK,SAAS+J,oBAAT,GAAgC,CAAC,CAAjC;;AAEA/J,SAAS1hB,SAAT,CAAmBl0B,QAAnB,GAA8B,YAAW;AACxC,SAAO,KAAKm+B,WAAZ;AACA,CAFD;;AAIAyX,SAAS1hB,SAAT,CAAmBsW,MAAnB,GAA4B,UAAS/P,KAAT,EAAgB;AACxC,MAAIA,iBAAiBmb,QAArB,EAA+B;AAC3B,WAAO,KAAKzX,WAAL,KAAmB1D,MAAM0D,WAAhC;AACH,GAFD,MAEO;AACH,WAAO,KAAP;AACH;AACJ,CAND;;AAQAyX,SAAS1hB,SAAT,CAAmB4rB,oBAAnB,GAA0C,YAAW;AACjD,SAAO,KAAP;AACH,CAFD;;AAKAlK,SAAS1hB,SAAT,CAAmB4nB,aAAnB,GAAmC,UAAST,KAAT,EAAgBj3C,KAAhB,EAAuB;AACzD,MAAGA,UAAQoS,SAAX,EAAsB;AACrBpS,YAAQ,CAAC,CAAT;AACA;AACE,MAAI,KAAKo4B,WAAL,CAAiB97B,MAAjB,KAA0B,CAA9B,EAAiC;AAC7B,SAAKo8C,sBAAL,GAA8BzB,MAAMjd,SAApC;AACH,GAFD,MAEO,IAAG,KAAK0e,sBAAL,KAAgCzB,MAAMjd,SAAzC,EAAoD;AACvD,SAAK0e,sBAAL,GAA8B,KAA9B;AACH;AACD,MAAI14C,UAAQ,CAAC,CAAb,EAAgB;AACZ,SAAKo4B,WAAL,CAAiBj4B,IAAjB,CAAsB82C,KAAtB;AACH,GAFD,MAEO;AACH,SAAK7e,WAAL,CAAiB7pB,MAAjB,CAAwBvO,KAAxB,EAA+B,CAA/B,EAAkCi3C,KAAlC;AACH;AACJ,CAdD;;AAgBA,SAASxF,UAAT,GAAsB;AACrBD,WAAS5hB,IAAT,CAAc,IAAd;AACG,OAAK4rB,SAAL,GAAiBhK,SAASwI,KAA1B;AACA,SAAO,IAAP;AACH;;AAEDvI,WAAW3hB,SAAX,GAAuBn2B,OAAOo2B,MAAP,CAAcyhB,SAAS1hB,SAAvB,CAAvB;AACA2hB,WAAW3hB,SAAX,CAAqBE,WAArB,GAAmCyhB,UAAnC;;AAGA,SAAS5C,aAAT,GAAyB;AACxB2C,WAAS5hB,IAAT,CAAc,IAAd;AACG,OAAKmU,QAAL,GAAgB,CAAC,CAAjB;AACA,OAAK6L,SAAL,GAAiB,KAAjB;AACA,SAAO,IAAP;AACH;;AAEDf,cAAc/e,SAAd,GAA0Bn2B,OAAOo2B,MAAP,CAAcyhB,SAAS1hB,SAAvB,CAA1B;AACA+e,cAAc/e,SAAd,CAAwBE,WAAxB,GAAsC6e,aAAtC;;AAGA;AACA,SAAS6C,eAAT,GAA2B;AAC1B7C,gBAAcjf,IAAd,CAAmB,IAAnB;AACA,OAAKumB,QAAL,GAAgB,IAAhB;AACA,SAAO,IAAP;AACA;;AAEDzE,gBAAgB5hB,SAAhB,GAA4Bn2B,OAAOo2B,MAAP,CAAc8e,cAAc/e,SAA5B,CAA5B;AACA4hB,gBAAgB5hB,SAAhB,CAA0BE,WAA1B,GAAwC0hB,eAAxC;;AAGA,SAASU,oBAAT,GAAgC;AAC/BV,kBAAgB9hB,IAAhB,CAAqB,IAArB;AACA,OAAK4rB,SAAL,GAAiBhK,SAAS0I,WAA1B;AACA,SAAO,IAAP;AACA;;AAED9H,qBAAqBtiB,SAArB,GAAiCn2B,OAAOo2B,MAAP,CAAc2hB,gBAAgB5hB,SAA9B,CAAjC;AACAsiB,qBAAqBtiB,SAArB,CAA+BE,WAA/B,GAA6CoiB,oBAA7C;;AAGA;AACA,SAAST,aAAT,GAAyB;AACxBH,WAAS5hB,IAAT,CAAc,IAAd;AACA,OAAK4rB,SAAL,GAAiBhK,SAAS+I,SAA1B;AACG,OAAK9D,UAAL,GAAkB,IAAlB;AACA,SAAO,IAAP;AACH;;AAED9E,cAAc7hB,SAAd,GAA0Bn2B,OAAOo2B,MAAP,CAAcyhB,SAAS1hB,SAAvB,CAA1B;AACA6hB,cAAc7hB,SAAd,CAAwBE,WAAxB,GAAsC2hB,aAAtC;;AAGA;AACA;AACA;AACA;AACA;AACA,SAASra,aAAT,GAAyB;AACxBka,WAAS5hB,IAAT,CAAc,IAAd;AACG,OAAK4rB,SAAL,GAAiBhK,SAAS8I,SAA1B;AACA,SAAO,IAAP;AACH;;AAEDhjB,cAAcxH,SAAd,GAA0Bn2B,OAAOo2B,MAAP,CAAcyhB,SAAS1hB,SAAvB,CAA1B;AACAwH,cAAcxH,SAAd,CAAwBE,WAAxB,GAAsCsH,aAAtC;;AAEA,SAASua,cAAT,GAA0B;AACzBL,WAAS5hB,IAAT,CAAc,IAAd;AACA,OAAK4rB,SAAL,GAAiBhK,SAASyI,UAA1B;AACA,OAAKphB,SAAL,GAAiB,IAAjB;AACA,OAAKyd,gBAAL,GAAwB,KAAxB;AACA,SAAO,IAAP;AACA;;AAEDzE,eAAe/hB,SAAf,GAA2Bn2B,OAAOo2B,MAAP,CAAcyhB,SAAS1hB,SAAvB,CAA3B;AACA+hB,eAAe/hB,SAAf,CAAyBE,WAAzB,GAAuC6hB,cAAvC;;AAEA;AACA;AACA;AACA,SAASE,iBAAT,GAA6B;AAC5BlD,gBAAcjf,IAAd,CAAmB,IAAnB;AACA,OAAK4rB,SAAL,GAAiBhK,SAASkJ,cAA1B;AACA,SAAO,IAAP;AACA;;AAED3I,kBAAkBjiB,SAAlB,GAA8Bn2B,OAAOo2B,MAAP,CAAc8e,cAAc/e,SAA5B,CAA9B;AACAiiB,kBAAkBjiB,SAAlB,CAA4BE,WAA5B,GAA0C+hB,iBAA1C;;AAGA;AACA;AACA;AACA;AACA;AACA,SAASG,mBAAT,GAA+B;AAC9BR,kBAAgB9hB,IAAhB,CAAqB,IAArB;AACA,OAAK4rB,SAAL,GAAiBhK,SAAS2I,gBAA1B;AACG,OAAKjE,aAAL,GAAqB,IAArB;AACA,SAAO,IAAP;AACH;;AAEDhE,oBAAoBpiB,SAApB,GAAgCn2B,OAAOo2B,MAAP,CAAc2hB,gBAAgB5hB,SAA9B,CAAhC;AACAoiB,oBAAoBpiB,SAApB,CAA8BE,WAA9B,GAA4CkiB,mBAA5C;;AAEA;AACA,SAASC,mBAAT,GAA+B;AAC9BT,kBAAgB9hB,IAAhB,CAAqB,IAArB;AACA,OAAK4rB,SAAL,GAAiBhK,SAAS4I,gBAA1B;AACA,SAAO,IAAP;AACA;;AAEDjI,oBAAoBriB,SAApB,GAAgCn2B,OAAOo2B,MAAP,CAAc2hB,gBAAgB5hB,SAA9B,CAAhC;AACAqiB,oBAAoBriB,SAApB,CAA8BE,WAA9B,GAA4CmiB,mBAA5C;;AAGA,SAASH,iBAAT,GAA6B;AAC5BR,WAAS5hB,IAAT,CAAc,IAAd;AACA,OAAK4rB,SAAL,GAAiBhK,SAASgJ,cAA1B;AACA,SAAO,IAAP;AACA;;AAEDxI,kBAAkBliB,SAAlB,GAA8Bn2B,OAAOo2B,MAAP,CAAcyhB,SAAS1hB,SAAvB,CAA9B;AACAkiB,kBAAkBliB,SAAlB,CAA4BE,WAA5B,GAA0CgiB,iBAA1C;;AAGA,SAASC,kBAAT,GAA8B;AAC7BpD,gBAAcjf,IAAd,CAAmB,IAAnB;AACA,OAAK4rB,SAAL,GAAiBhK,SAASiJ,eAA1B;AACG,OAAKvE,aAAL,GAAqB,IAArB;AACA;AACA,OAAKyC,oBAAL,GAA4B,IAA5B;AACA,SAAO,IAAP;AACH;;AAED1G,mBAAmBniB,SAAnB,GAA+Bn2B,OAAOo2B,MAAP,CAAc8e,cAAc/e,SAA5B,CAA/B;AACAmiB,mBAAmBniB,SAAnB,CAA6BE,WAA7B,GAA2CiiB,kBAA3C;;AAGA;AACA,SAASL,YAAT,GAAwB;AACvBJ,WAAS5hB,IAAT,CAAc,IAAd;AACA,OAAK4rB,SAAL,GAAiBhK,SAASuE,QAA1B;AACA,OAAKG,aAAL,GAAqB,IAArB;AACA,SAAO,IAAP;AACA;;AAEDtE,aAAa9hB,SAAb,GAAyBn2B,OAAOo2B,MAAP,CAAcyhB,SAAS1hB,SAAvB,CAAzB;AACA8hB,aAAa9hB,SAAb,CAAuBE,WAAvB,GAAqC4hB,YAArC;;AAGA;AACA,SAASE,gBAAT,GAA4B;AAC3BjD,gBAAcjf,IAAd,CAAmB,IAAnB;AACA,OAAK4rB,SAAL,GAAiBhK,SAAS6I,WAA1B;AACA,SAAO,IAAP;AACA;;AAEDvI,iBAAiBhiB,SAAjB,GAA6Bn2B,OAAOo2B,MAAP,CAAc8e,cAAc/e,SAA5B,CAA7B;AACAgiB,iBAAiBhiB,SAAjB,CAA2BE,WAA3B,GAAyC8hB,gBAAzC;;AAEAz8C,QAAQm8C,QAAR,GAAmBA,QAAnB;AACAn8C,QAAQo8C,UAAR,GAAqBA,UAArB;AACAp8C,QAAQw5C,aAAR,GAAwBA,aAAxB;AACAx5C,QAAQq8C,eAAR,GAA0BA,eAA1B;AACAr8C,QAAQs8C,aAAR,GAAwBA,aAAxB;AACAt8C,QAAQu8C,YAAR,GAAuBA,YAAvB;AACAv8C,QAAQw8C,cAAR,GAAyBA,cAAzB;AACAx8C,QAAQiiC,aAAR,GAAwBA,aAAxB;AACAjiC,QAAQy8C,gBAAR,GAA2BA,gBAA3B;AACAz8C,QAAQ08C,iBAAR,GAA4BA,iBAA5B;AACA18C,QAAQ28C,iBAAR,GAA4BA,iBAA5B;AACA38C,QAAQ48C,kBAAR,GAA6BA,kBAA7B;AACA58C,QAAQ68C,mBAAR,GAA8BA,mBAA9B;AACA78C,QAAQ88C,mBAAR,GAA8BA,mBAA9B;AACA98C,QAAQ+8C,oBAAR,GAA+BA,oBAA/B,C;;;;;;;;;;;;;;ACrUA;;;;AAIA;;AAEA;;AAEA,SAASd,OAAT,GAAmB,CAElB;;AAEDA,QAAQkF,KAAR,GAAgB,CAAhB;AACAlF,QAAQ+D,MAAR,GAAiB,CAAjB;;AAEAhgD,QAAQi8C,OAAR,GAAkBA,OAAlB,C;;;;;;;;;;;;;;ACfA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIjiB,QAAQ,mBAAAC,CAAQ,kDAAR,EAAsBD,KAAlC;AACA,IAAIE,QAAQ,mBAAAD,CAAQ,kDAAR,EAAsBC,KAAlC;AACA,IAAIqe,MAAM,mBAAAte,CAAQ,+CAAR,EAAiBse,GAA3B;AACA,IAAIuN,eAAe,mBAAA7rB,CAAQ,iEAAR,EAA0B6rB,YAA7C;AACA,IAAID,WAAW,mBAAA5rB,CAAQ,gEAAR,EAA6B4rB,QAA5C;AACA,IAAIlL,eAAe,mBAAA1gB,CAAQ,iEAAR,EAA0B0gB,YAA7C;AACA,IAAImB,sBAAsB,mBAAA7hB,CAAQ,iEAAR,EAA0B6hB,mBAApD;AACA,IAAItZ,oBAAoB,mBAAAvI,CAAQ,0EAAR,EAAkCuI,iBAA1D;AACA,IAAIC,6BAA6B,mBAAAxI,CAAQ,0EAAR,EAAkCwI,0BAAnE;AACA,IAAIR,gBAAgB,mBAAAhI,CAAQ,yDAAR,EAAsBgI,aAA1C;AACA,IAAIkY,iBAAiB,mBAAAlgB,CAAQ,2DAAR,EAAuBkgB,cAA5C;AACA,IAAI8C,aAAa,mBAAAhjB,CAAQ,6DAAR,EAAwBgjB,UAAzC;AACA,IAAIqJ,sBAAsB,mBAAArsB,CAAQ,+EAAR,EAAiCqsB,mBAA3D;AACA,IAAIrhB,4BAA4B,mBAAAhL,CAAQ,gEAAR,EAA6BgL,yBAA7D;;AAEA,SAASshB,aAAT,CAAuBC,GAAvB,EAA4B;AAC3BA,KAAI77C,KAAJ,GAAY,CAAC,CAAb;AACA67C,KAAIllD,IAAJ,GAAW,CAAX;AACAklD,KAAIjlD,MAAJ,GAAa,CAAC,CAAd;AACAilD,KAAIC,QAAJ,GAAe,IAAf;AACA;;AAED,SAASC,QAAT,GAAoB;AACnBH,eAAc,IAAd;AACA,QAAO,IAAP;AACA;;AAEDG,SAASjsB,SAAT,CAAmBM,KAAnB,GAA2B,YAAW;AACrCwrB,eAAc,IAAd;AACA,CAFD;;AAIA,SAASI,iBAAT,CAA2BnR,KAA3B,EAAkC7S,GAAlC,EAAuCyL,aAAvC,EAAsD2X,kBAAtD,EAA0E;AACzED,cAAavrB,IAAb,CAAkB,IAAlB,EAAwBoI,GAAxB,EAA6BojB,kBAA7B;AACA,MAAK3X,aAAL,GAAqBA,aAArB;AACA,MAAKoH,KAAL,GAAaA,KAAb;AACA;AACA;AACA;AACA;AACA,MAAKoR,UAAL,GAAkB,CAAC,CAAnB;AACA;AACA,MAAKtlD,IAAL,GAAY,CAAZ;AACA;AACA;AACA,MAAKC,MAAL,GAAc,CAAd;AACA,MAAKwiB,IAAL,GAAYmW,MAAM6L,YAAlB;AACA;AACA;AACA,MAAK8gB,UAAL,GAAkB,IAAIH,QAAJ,EAAlB;AACA;AACA,QAAO,IAAP;AACA;;AAEDC,kBAAkBlsB,SAAlB,GAA8Bn2B,OAAOo2B,MAAP,CAAcorB,aAAarrB,SAA3B,CAA9B;AACAksB,kBAAkBlsB,SAAlB,CAA4BE,WAA5B,GAA0CgsB,iBAA1C;;AAEAA,kBAAkBxf,KAAlB,GAA0B,KAA1B;AACAwf,kBAAkBG,SAAlB,GAA8B,KAA9B;;AAEAH,kBAAkBI,YAAlB,GAAiC,CAAjC;AACAJ,kBAAkBK,YAAlB,GAAiC,GAAjC,C,CAAsC;;AAEtCL,kBAAkBM,WAAlB,GAAgC,CAAhC;;AAEAN,kBAAkBlsB,SAAlB,CAA4BysB,SAA5B,GAAwC,UAASC,SAAT,EAAoB;AAC3D,MAAK5lD,MAAL,GAAc4lD,UAAU5lD,MAAxB;AACA,MAAKD,IAAL,GAAY6lD,UAAU7lD,IAAtB;AACA,MAAKyiB,IAAL,GAAYojC,UAAUpjC,IAAtB;AACA,MAAK6iC,UAAL,GAAkBO,UAAUP,UAA5B;AACA,CALD;;AAOAD,kBAAkBlsB,SAAlB,CAA4BxtB,KAA5B,GAAoC,UAAS7D,KAAT,EAAgB2a,IAAhB,EAAsB;AACzD,MAAKkjC,WAAL,IAAoB,CAApB;AACA,MAAKljC,IAAL,GAAYA,IAAZ;AACA,KAAI6W,OAAOxxB,MAAMwxB,IAAN,EAAX;AACA,KAAI;AACH,OAAKgsB,UAAL,GAAkBx9C,MAAMuB,KAAxB;AACA,OAAKk8C,UAAL,CAAgB9rB,KAAhB;AACA,MAAIwT,MAAM,KAAKH,aAAL,CAAmBrqB,IAAnB,CAAV;AACA,MAAIwqB,IAAI6Y,EAAJ,KAAW,IAAf,EAAqB;AACpB,UAAO,KAAKC,QAAL,CAAcj+C,KAAd,CAAP;AACA,GAFD,MAEO;AACN,UAAO,KAAKk+C,OAAL,CAAal+C,KAAb,EAAoBmlC,IAAI6Y,EAAxB,CAAP;AACA;AACD,EATD,SASU;AACTh+C,QAAMyxB,OAAN,CAAcD,IAAd;AACA;AACD,CAhBD;;AAkBA+rB,kBAAkBlsB,SAAlB,CAA4BM,KAA5B,GAAoC,YAAW;AAC9C,MAAK8rB,UAAL,CAAgB9rB,KAAhB;AACA,MAAK6rB,UAAL,GAAkB,CAAC,CAAnB;AACA,MAAKtlD,IAAL,GAAY,CAAZ;AACA,MAAKC,MAAL,GAAc,CAAd;AACA,MAAKwiB,IAAL,GAAYmW,MAAM6L,YAAlB;AACA,CAND;;AAQA4gB,kBAAkBlsB,SAAlB,CAA4B4sB,QAA5B,GAAuC,UAASj+C,KAAT,EAAgB;AACtD,KAAIg4C,aAAa,KAAKze,GAAL,CAASoW,gBAAT,CAA0B,KAAKh1B,IAA/B,CAAjB;;AAEA,KAAI4iC,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,UAAQC,GAAR,CAAY,mBAAmB,KAAKwT,IAAxB,GAA+B,UAA/B,GAA4Cq9B,UAAxD;AACA;AACD,KAAImG,WAAW,KAAKxjC,IAApB;AACA,KAAIyjC,aAAa,KAAKC,iBAAL,CAAuBr+C,KAAvB,EAA8Bg4C,UAA9B,CAAjB;AACA,KAAIsG,eAAeF,WAAWvM,kBAA9B;AACAuM,YAAWvM,kBAAX,GAAgC,KAAhC;;AAEA,KAAI7zC,OAAO,KAAKugD,WAAL,CAAiBH,UAAjB,CAAX;AACA,KAAI,CAACE,YAAL,EAAmB;AAClB,OAAKtZ,aAAL,CAAmB,KAAKrqB,IAAxB,EAA8BqjC,EAA9B,GAAmChgD,IAAnC;AACA;;AAED,KAAIwgD,UAAU,KAAKN,OAAL,CAAal+C,KAAb,EAAoBhC,IAApB,CAAd;;AAEA,KAAIu/C,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,UAAQC,GAAR,CAAY,yBAAyB,KAAK69B,aAAL,CAAmBmZ,QAAnB,EAA6BM,aAA7B,EAArC;AACA;AACD,QAAOD,OAAP;AACA,CAtBD;;AAwBAjB,kBAAkBlsB,SAAlB,CAA4B6sB,OAA5B,GAAsC,UAASl+C,KAAT,EAAgB0+C,GAAhB,EAAqB;AAC1D,KAAInB,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,UAAQC,GAAR,CAAY,yBAAyBu3C,IAAIhN,OAAzC;AACA;AACD,KAAIgN,IAAIC,aAAR,EAAuB;AACtB;AACA,OAAKC,eAAL,CAAqB,KAAKnB,UAA1B,EAAsCz9C,KAAtC,EAA6C0+C,GAA7C;AACA;AACD,KAAI3uB,IAAI/vB,MAAMiyB,EAAN,CAAS,CAAT,CAAR;AACA,KAAI4B,IAAI6qB,GAAR,CAT0D,CAS7C;;AAEb,QAAO,IAAP,EAAa;AAAE;AACd,MAAInB,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,WAAQC,GAAR,CAAY,oCAAoC0sB,EAAE6d,OAAlD;AACA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAI7c,SAAS,KAAKgqB,sBAAL,CAA4BhrB,CAA5B,EAA+B9D,CAA/B,CAAb;AACA;AACA,MAAI8E,WAAW,IAAf,EAAqB;AACpBA,YAAS,KAAKiqB,kBAAL,CAAwB9+C,KAAxB,EAA+B6zB,CAA/B,EAAkC9D,CAAlC,CAAT;AACA;AACA;AACD,MAAI8E,WAAW6nB,aAAaE,KAA5B,EAAmC;AAClC;AACA;AACD;AACA;AACA;AACA;AACA,MAAI7sB,MAAMa,MAAMsB,GAAhB,EAAqB;AACpB,QAAKH,OAAL,CAAa/xB,KAAb;AACA;AACD,MAAI60B,OAAO8pB,aAAX,EAA0B;AACzB,QAAKC,eAAL,CAAqB,KAAKnB,UAA1B,EAAsCz9C,KAAtC,EAA6C60B,MAA7C;AACA,OAAI9E,MAAMa,MAAMsB,GAAhB,EAAqB;AACpB;AACA;AACD;AACDnC,MAAI/vB,MAAMiyB,EAAN,CAAS,CAAT,CAAJ;AACA4B,MAAIgB,MAAJ,CA9CY,CA8CA;AACZ;AACD,QAAO,KAAKkqB,YAAL,CAAkB,KAAKtB,UAAvB,EAAmCz9C,KAAnC,EAA0C6zB,EAAE6d,OAA5C,EAAqD3hB,CAArD,CAAP;AACA,CA5DD;;AA8DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwtB,kBAAkBlsB,SAAlB,CAA4BwtB,sBAA5B,GAAqD,UAAShrB,CAAT,EAAY9D,CAAZ,EAAe;AACnE,KAAI8D,EAAEmrB,KAAF,KAAY,IAAZ,IAAoBjvB,IAAIwtB,kBAAkBI,YAA1C,IAA0D5tB,IAAIwtB,kBAAkBK,YAApF,EAAkG;AACjG,SAAO,IAAP;AACA;;AAED,KAAI/oB,SAAShB,EAAEmrB,KAAF,CAAQjvB,IAAIwtB,kBAAkBI,YAA9B,CAAb;AACA,KAAG9oB,WAASlhB,SAAZ,EAAuB;AACtBkhB,WAAS,IAAT;AACA;AACD,KAAI0oB,kBAAkBxf,KAAlB,IAA2BlJ,WAAW,IAA1C,EAAgD;AAC/C3tB,UAAQC,GAAR,CAAY,iBAAiB0sB,EAAEyH,WAAnB,GAAiC,WAAjC,GAA+CzG,OAAOyG,WAAlE;AACA;AACD,QAAOzG,MAAP;AACA,CAbD;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA0oB,kBAAkBlsB,SAAlB,CAA4BytB,kBAA5B,GAAiD,UAAS9+C,KAAT,EAAgB6zB,CAAhB,EAAmB9D,CAAnB,EAAsB;AACtE,KAAIkvB,QAAQ,IAAIvM,mBAAJ,EAAZ;AACA;AACA;AACA,MAAKwM,qBAAL,CAA2Bl/C,KAA3B,EAAkC6zB,EAAE6d,OAApC,EAA6CuN,KAA7C,EAAoDlvB,CAApD;;AAEA,KAAIkvB,MAAME,KAAN,CAAYthD,MAAZ,KAAuB,CAA3B,EAA8B;AAAE;AAC/B,MAAI,CAACohD,MAAMpN,kBAAX,EAA+B;AAC9B;AACA;AACA,QAAKuN,UAAL,CAAgBvrB,CAAhB,EAAmB9D,CAAnB,EAAsB2sB,aAAaE,KAAnC;AACA;AACD;AACA,SAAOF,aAAaE,KAApB;AACA;AACD;AACA,QAAO,KAAKwC,UAAL,CAAgBvrB,CAAhB,EAAmB9D,CAAnB,EAAsB,IAAtB,EAA4BkvB,KAA5B,CAAP;AACA,CAjBD;;AAmBA1B,kBAAkBlsB,SAAlB,CAA4B0tB,YAA5B,GAA2C,UAAStB,UAAT,EAAqBz9C,KAArB,EAA4Bi/C,KAA5B,EAAmClvB,CAAnC,EAAsC;AAChF,KAAI,KAAK0tB,UAAL,CAAgBJ,QAAhB,KAA6B,IAAjC,EAAuC;AACtC,MAAIrM,sBAAsByM,WAAWJ,QAAX,CAAoBrM,mBAA9C;AACA,OAAKjF,MAAL,CAAY/rC,KAAZ,EAAmBgxC,mBAAnB,EAAwC,KAAKwM,UAA7C,EACEC,WAAWl8C,KADb,EACoBk8C,WAAWvlD,IAD/B,EACqCulD,WAAWtlD,MADhD;AAEA,SAAOslD,WAAWJ,QAAX,CAAoBgC,UAA3B;AACA,EALD,MAKO;AACN;AACA,MAAItvB,MAAMa,MAAMsB,GAAZ,IAAmBlyB,MAAMuB,KAAN,KAAgB,KAAKi8C,UAA5C,EAAwD;AACvD,UAAO5sB,MAAMsB,GAAb;AACA;AACD,QAAM,IAAI2J,yBAAJ,CAA8B,KAAKuQ,KAAnC,EAA0CpsC,KAA1C,EAAiD,KAAKw9C,UAAtD,EAAkEyB,KAAlE,CAAN;AACA;AACD,CAbD;;AAeA;AACA;AACA;AACA1B,kBAAkBlsB,SAAlB,CAA4B6tB,qBAA5B,GAAoD,UAASl/C,KAAT,EAAgBs/C,OAAhB,EAClDL,KADkD,EAC3ClvB,CAD2C,EACxC;AACX;AACA;AACA,KAAIwvB,UAAUpQ,IAAI1D,kBAAlB;AACA,MAAK,IAAIj4B,IAAI,CAAb,EAAgBA,IAAI8rC,QAAQH,KAAR,CAActhD,MAAlC,EAA0C2V,GAA1C,EAA+C;AAC9C,MAAIgsC,MAAMF,QAAQH,KAAR,CAAc3rC,CAAd,CAAV;AACA,MAAIisC,+BAAgCD,IAAI3lB,GAAJ,KAAY0lB,OAAhD;AACA,MAAIE,gCAAgCD,IAAIvO,8BAAxC,EAAwE;AACvE;AACA;AACD,MAAIsM,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,WAAQC,GAAR,CAAY,oBAAZ,EAAkC,KAAKu4C,YAAL,CAAkB3vB,CAAlB,CAAlC,EAAwDyvB,IACrDriD,QADqD,CAC5C,KAAKivC,KADuC,EAChC,IADgC,CAAxD;AAEA;AACD,OAAK,IAAIxe,IAAI,CAAb,EAAgBA,IAAI4xB,IAAI9kB,KAAJ,CAAUf,WAAV,CAAsB97B,MAA1C,EAAkD+vB,GAAlD,EAAuD;AACtD,OAAI4qB,QAAQgH,IAAI9kB,KAAJ,CAAUf,WAAV,CAAsB/L,CAAtB,CAAZ,CADsD,CAChB;AACtC,OAAIiH,SAAS,KAAK8qB,kBAAL,CAAwBnH,KAAxB,EAA+BzoB,CAA/B,CAAb;AACA,OAAI8E,WAAW,IAAf,EAAqB;AACpB,QAAImc,sBAAsBwO,IAAIxO,mBAA9B;AACA,QAAIA,wBAAwB,IAA5B,EAAkC;AACjCA,2BAAsBA,oBAAoB4O,oBAApB,CAAyC5/C,MAAMuB,KAAN,GAAc,KAAKi8C,UAA5D,CAAtB;AACA;AACD,QAAIqC,oBAAqB9vB,MAAMa,MAAMsB,GAArC;AACA,QAAIvB,SAAS,IAAIogB,cAAJ,CAAmB,EAACrW,OAAM7F,MAAP,EAAemc,qBAAoBA,mBAAnC,EAAnB,EAA4EwO,GAA5E,CAAb;AACA,QAAI,KAAKF,OAAL,CAAat/C,KAAb,EAAoB2wB,MAApB,EAA4BsuB,KAA5B,EACFQ,4BADE,EAC4B,IAD5B,EACkCI,iBADlC,CAAJ,EAC0D;AACzD;AACA;AACAN,eAAUC,IAAI3lB,GAAd;AACA;AACD;AACD;AACD;AACD,CAlCD;;AAoCA0jB,kBAAkBlsB,SAAlB,CAA4B0a,MAA5B,GAAqC,UAAS/rC,KAAT,EAAgBgxC,mBAAhB,EACnCwM,UADmC,EACvBj8C,KADuB,EAChBrJ,IADgB,EACV4nD,OADU,EACD;AACnC,KAAIvC,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,UAAQC,GAAR,CAAY,aAAZ,EAA2B6pC,mBAA3B;AACA;AACD;AACAhxC,OAAM4xB,IAAN,CAAWrwB,KAAX;AACA,MAAKrJ,IAAL,GAAYA,IAAZ;AACA,MAAKC,MAAL,GAAc2nD,OAAd;AACA,KAAI9O,wBAAwB,IAAxB,IAAgC,KAAK5E,KAAL,KAAe,IAAnD,EAAyD;AACxD4E,sBAAoB+O,OAApB,CAA4B,KAAK3T,KAAjC,EAAwCpsC,KAAxC,EAA+Cw9C,UAA/C;AACA;AACD,CAZD;;AAcAD,kBAAkBlsB,SAAlB,CAA4BsuB,kBAA5B,GAAiD,UAASnH,KAAT,EAAgBzoB,CAAhB,EAAmB;AACnE,KAAIyoB,MAAMwH,OAAN,CAAcjwB,CAAd,EAAiB,CAAjB,EAAoBe,MAAMoM,cAA1B,CAAJ,EAA+C;AAC9C,SAAOsb,MAAM3jB,MAAb;AACA,EAFD,MAEO;AACN,SAAO,IAAP;AACA;AACD,CAND;;AAQA0oB,kBAAkBlsB,SAAlB,CAA4BgtB,iBAA5B,GAAgD,UAASr+C,KAAT,EAAgB8kC,CAAhB,EAAmB;AAClE,KAAImb,iBAAiB7mB,kBAAkBc,KAAvC;AACA,KAAIwX,UAAU,IAAIgB,mBAAJ,EAAd;AACA,MAAK,IAAIl/B,IAAI,CAAb,EAAgBA,IAAIsxB,EAAEnL,WAAF,CAAc97B,MAAlC,EAA0C2V,GAA1C,EAA+C;AAC9C,MAAIqhB,SAASiQ,EAAEnL,WAAF,CAAcnmB,CAAd,EAAiBqhB,MAA9B;AACM,MAAI2qB,MAAM,IAAIzO,cAAJ,CAAmB,EAACrW,OAAM7F,MAAP,EAAegF,KAAIrmB,IAAE,CAArB,EAAwB9X,SAAQukD,cAAhC,EAAnB,EAAoE,IAApE,CAAV;AACN,OAAKX,OAAL,CAAat/C,KAAb,EAAoBw/C,GAApB,EAAyB9N,OAAzB,EAAkC,KAAlC,EAAyC,KAAzC,EAAgD,KAAhD;AACA;AACD,QAAOA,OAAP;AACA,CATD;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA6L,kBAAkBlsB,SAAlB,CAA4BiuB,OAA5B,GAAsC,UAASt/C,KAAT,EAAgB2wB,MAAhB,EAAwB+gB,OAAxB,EACpC+N,4BADoC,EACNS,WADM,EACOL,iBADP,EAC0B;AAC/D,KAAIL,MAAM,IAAV;AACA,KAAIjC,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,UAAQC,GAAR,CAAY,aAAawpB,OAAOxzB,QAAP,CAAgB,KAAKivC,KAArB,EAA4B,IAA5B,CAAb,GAAiD,GAA7D;AACA;AACD,KAAIzb,OAAO+J,KAAP,YAAwB7B,aAA5B,EAA2C;AAC1C,MAAI0kB,kBAAkBxf,KAAtB,EAA6B;AAC5B,OAAI,KAAKqO,KAAL,KAAe,IAAnB,EAAyB;AACxBllC,YAAQC,GAAR,CAAY,8BAAZ,EAA4C,KAAKilC,KAAL,CAAW5M,SAAX,CAAqB7O,OAAO+J,KAAP,CAAaO,SAAlC,CAA5C,EAA0FtK,MAA1F;AACA,IAFD,MAEO;AACNzpB,YAAQC,GAAR,CAAY,2BAAZ,EAAyCwpB,MAAzC;AACA;AACD;AACD,MAAIA,OAAOj1B,OAAP,KAAmB,IAAnB,IAA2Bi1B,OAAOj1B,OAAP,CAAewrC,YAAf,EAA/B,EAA8D;AAC7D,OAAIvW,OAAOj1B,OAAP,KAAmB,IAAnB,IAA2Bi1B,OAAOj1B,OAAP,CAAek/B,OAAf,EAA/B,EAAyD;AACxD8W,YAAQ/W,GAAR,CAAYhK,MAAZ;AACA,WAAO,IAAP;AACA,IAHD,MAGO;AACN+gB,YAAQ/W,GAAR,CAAY,IAAIoW,cAAJ,CAAmB,EAAErW,OAAM/J,OAAO+J,KAAf,EAAsBh/B,SAAQ09B,kBAAkBc,KAAhD,EAAnB,EAA2EvJ,MAA3E,CAAZ;AACA8uB,mCAA+B,IAA/B;AACA;AACD;AACD,MAAI9uB,OAAOj1B,OAAP,KAAmB,IAAnB,IAA2B,CAACi1B,OAAOj1B,OAAP,CAAek/B,OAAf,EAAhC,EAA0D;AACzD,QAAK,IAAIpnB,IAAI,CAAb,EAAgBA,IAAImd,OAAOj1B,OAAP,CAAemC,MAAnC,EAA2C2V,GAA3C,EAAgD;AAC/C,QAAImd,OAAOj1B,OAAP,CAAeq/B,cAAf,CAA8BvnB,CAA9B,MAAqC4lB,kBAAkB4N,kBAA3D,EAA+E;AAC9E,SAAI5L,aAAazK,OAAOj1B,OAAP,CAAey/B,SAAf,CAAyB3nB,CAAzB,CAAjB,CAD8E,CAChC;AAC9C,SAAIqnB,cAAc,KAAKtB,GAAL,CAASuB,MAAT,CAAgBnK,OAAOj1B,OAAP,CAAeq/B,cAAf,CAA8BvnB,CAA9B,CAAhB,CAAlB;AACAgsC,WAAM,IAAIzO,cAAJ,CAAmB,EAAErW,OAAMG,WAAR,EAAqBn/B,SAAQ0/B,UAA7B,EAAnB,EAA8DzK,MAA9D,CAAN;AACA8uB,oCAA+B,KAAKH,OAAL,CAAat/C,KAAb,EAAoBw/C,GAApB,EAC7B9N,OAD6B,EACpB+N,4BADoB,EACUS,WADV,EAE7BL,iBAF6B,CAA/B;AAGA;AACD;AACD;AACD,SAAOJ,4BAAP;AACA;AACD;AACA,KAAI,CAAC9uB,OAAO+J,KAAP,CAAauf,sBAAlB,EAA0C;AACzC,MAAI,CAACwF,4BAAD,IAAiC,CAAC9uB,OAAOsgB,8BAA7C,EAA6E;AAC5ES,WAAQ/W,GAAR,CAAYhK,MAAZ;AACA;AACD;AACD,MAAK,IAAI/C,IAAI,CAAb,EAAgBA,IAAI+C,OAAO+J,KAAP,CAAaf,WAAb,CAAyB97B,MAA7C,EAAqD+vB,GAArD,EAA0D;AACzD,MAAI4qB,QAAQ7nB,OAAO+J,KAAP,CAAaf,WAAb,CAAyB/L,CAAzB,CAAZ;AACA4xB,QAAM,KAAKW,gBAAL,CAAsBngD,KAAtB,EAA6B2wB,MAA7B,EAAqC6nB,KAArC,EAA4C9G,OAA5C,EAAqDwO,WAArD,EAAkEL,iBAAlE,CAAN;AACA,MAAIL,QAAQ,IAAZ,EAAkB;AACjBC,kCAA+B,KAAKH,OAAL,CAAat/C,KAAb,EAAoBw/C,GAApB,EAAyB9N,OAAzB,EAC7B+N,4BAD6B,EACCS,WADD,EACcL,iBADd,CAA/B;AAEA;AACD;AACD,QAAOJ,4BAAP;AACA,CApDD;;AAsDA;AACAlC,kBAAkBlsB,SAAlB,CAA4B8uB,gBAA5B,GAA+C,UAASngD,KAAT,EAAgB2wB,MAAhB,EAAwB6nB,KAAxB,EAC7C9G,OAD6C,EACpCwO,WADoC,EACvBL,iBADuB,EACJ;AAC1C,KAAIL,MAAM,IAAV;AACA,KAAIhH,MAAM4H,iBAAN,KAA4BvM,WAAWiH,IAA3C,EAAiD;AAChD,MAAI1f,aAAa/B,2BAA2B/H,MAA3B,CAAkCX,OAAOj1B,OAAzC,EAAkD88C,MAAMnd,WAAN,CAAkBC,WAApE,CAAjB;AACAkkB,QAAM,IAAIzO,cAAJ,CAAoB,EAAErW,OAAM8d,MAAM3jB,MAAd,EAAsBn5B,SAAQ0/B,UAA9B,EAApB,EAA+DzK,MAA/D,CAAN;AACA,EAHD,MAGO,IAAI6nB,MAAM4H,iBAAN,KAA4BvM,WAAWmH,UAA3C,EAAuD;AAC7D,QAAM,oDAAN;AACA,EAFM,MAEA,IAAIxC,MAAM4H,iBAAN,KAA4BvM,WAAWkH,SAA3C,EAAsD;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAIwC,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,WAAQC,GAAR,CAAY,eAAeqxC,MAAMvd,SAArB,GAAiC,GAAjC,GAAuCud,MAAM6H,SAAzD;AACA;AACD3O,UAAQG,kBAAR,GAA6B,IAA7B;AACA,MAAI,KAAKyO,iBAAL,CAAuBtgD,KAAvB,EAA8Bw4C,MAAMvd,SAApC,EAA+Cud,MAAM6H,SAArD,EAAgEH,WAAhE,CAAJ,EAAkF;AACjFV,SAAM,IAAIzO,cAAJ,CAAmB,EAAErW,OAAM8d,MAAM3jB,MAAd,EAAnB,EAA0ClE,MAA1C,CAAN;AACA;AACD,EA1BM,MA0BA,IAAI6nB,MAAM4H,iBAAN,KAA4BvM,WAAWqH,MAA3C,EAAmD;AACzD,MAAIvqB,OAAOj1B,OAAP,KAAmB,IAAnB,IAA2Bi1B,OAAOj1B,OAAP,CAAewrC,YAAf,EAA/B,EAA8D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAI8J,sBAAsBkM,oBAAoB7sC,MAApB,CAA2BsgB,OAAOqgB,mBAAlC,EACxB,KAAKzX,GAAL,CAASmW,YAAT,CAAsB8I,MAAMjN,WAA5B,CADwB,CAA1B;AAEAiU,SAAM,IAAIzO,cAAJ,CAAmB,EAAErW,OAAM8d,MAAM3jB,MAAd,EAAsBmc,qBAAoBA,mBAA1C,EAAnB,EAAoFrgB,MAApF,CAAN;AACA,GAhBD,MAgBO;AACN;AACA6uB,SAAM,IAAIzO,cAAJ,CAAoB,EAAErW,OAAM8d,MAAM3jB,MAAd,EAApB,EAA2ClE,MAA3C,CAAN;AACA;AACD,EArBM,MAqBA,IAAI6nB,MAAM4H,iBAAN,KAA4BvM,WAAWpb,OAA3C,EAAoD;AAC1D+mB,QAAM,IAAIzO,cAAJ,CAAmB,EAAErW,OAAM8d,MAAM3jB,MAAd,EAAnB,EAA0ClE,MAA1C,CAAN;AACA,EAFM,MAEA,IAAI6nB,MAAM4H,iBAAN,KAA4BvM,WAAWoH,IAAvC,IACRzC,MAAM4H,iBAAN,KAA4BvM,WAAWgH,KAD/B,IAERrC,MAAM4H,iBAAN,KAA4BvM,WAAWsH,GAFnC,EAEwC;AAC9C,MAAI0E,iBAAJ,EAAuB;AACtB,OAAIrH,MAAMwH,OAAN,CAAcpvB,MAAMsB,GAApB,EAAyB,CAAzB,EAA4BpB,MAAMoM,cAAlC,CAAJ,EAAuD;AACtDsiB,UAAM,IAAIzO,cAAJ,CAAoB,EAAErW,OAAM8d,MAAM3jB,MAAd,EAApB,EAA4ClE,MAA5C,CAAN;AACA;AACD;AACD;AACD,QAAO6uB,GAAP;AACA,CAnED;;AAqEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAjC,kBAAkBlsB,SAAlB,CAA4BivB,iBAA5B,GAAgD,UAAStgD,KAAT,EAAgBi7B,SAAhB,EAC9ColB,SAD8C,EACnCH,WADmC,EACtB;AACzB;AACA,KAAI,KAAK9T,KAAL,KAAe,IAAnB,EAAyB;AACxB,SAAO,IAAP;AACA;AACD,KAAI,CAAC8T,WAAL,EAAkB;AACjB,SAAO,KAAK9T,KAAL,CAAWd,OAAX,CAAmB,IAAnB,EAAyBrQ,SAAzB,EAAoColB,SAApC,CAAP;AACA;AACD,KAAIE,cAAc,KAAKpoD,MAAvB;AACA,KAAIqoD,YAAY,KAAKtoD,IAArB;AACA,KAAIqJ,QAAQvB,MAAMuB,KAAlB;AACA,KAAImwB,SAAS1xB,MAAMwxB,IAAN,EAAb;AACA,KAAI;AACH,OAAKO,OAAL,CAAa/xB,KAAb;AACA,SAAO,KAAKosC,KAAL,CAAWd,OAAX,CAAmB,IAAnB,EAAyBrQ,SAAzB,EAAoColB,SAApC,CAAP;AACA,EAHD,SAGU;AACT,OAAKloD,MAAL,GAAcooD,WAAd;AACA,OAAKroD,IAAL,GAAYsoD,SAAZ;AACAxgD,QAAM4xB,IAAN,CAAWrwB,KAAX;AACAvB,QAAMyxB,OAAN,CAAcC,MAAd;AACA;AACD,CAtBD;;AAwBA6rB,kBAAkBlsB,SAAlB,CAA4ButB,eAA5B,GAA8C,UAAS6B,QAAT,EAAmBzgD,KAAnB,EAA0Bq9C,QAA1B,EAAoC;AACjFoD,UAASl/C,KAAT,GAAiBvB,MAAMuB,KAAvB;AACAk/C,UAASvoD,IAAT,GAAgB,KAAKA,IAArB;AACAuoD,UAAStoD,MAAT,GAAkB,KAAKA,MAAvB;AACAsoD,UAASpD,QAAT,GAAoBA,QAApB;AACA,CALD;;AAOAE,kBAAkBlsB,SAAlB,CAA4B+tB,UAA5B,GAAyC,UAAShsB,KAAT,EAAgBstB,EAAhB,EAAoBrtB,EAApB,EAAwBstB,IAAxB,EAA8B;AACtE,KAAIttB,OAAO1f,SAAX,EAAsB;AACrB0f,OAAK,IAAL;AACA;AACD,KAAIstB,SAAShtC,SAAb,EAAwB;AACvBgtC,SAAO,IAAP;AACA;AACD,KAAIttB,OAAO,IAAP,IAAestB,SAAS,IAA5B,EAAkC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAIrC,eAAeqC,KAAK9O,kBAAxB;AACA8O,OAAK9O,kBAAL,GAA0B,KAA1B;;AAEAxe,OAAK,KAAKkrB,WAAL,CAAiBoC,IAAjB,CAAL;;AAEA,MAAIrC,YAAJ,EAAkB;AACjB,UAAOjrB,EAAP;AACA;AACD;AACD;AACA,KAAIqtB,KAAKnD,kBAAkBI,YAAvB,IAAuC+C,KAAKnD,kBAAkBK,YAAlE,EAAgF;AAC/E;AACA,SAAOvqB,EAAP;AACA;AACD,KAAIkqB,kBAAkBxf,KAAtB,EAA6B;AAC5B72B,UAAQC,GAAR,CAAY,UAAUisB,KAAV,GAAkB,MAAlB,GAA2BC,EAA3B,GAAgC,QAAhC,GAA2CqtB,EAAvD;AACA;AACD,KAAIttB,MAAM4rB,KAAN,KAAgB,IAApB,EAA0B;AACzB;AACA5rB,QAAM4rB,KAAN,GAAc,EAAd;AACA;AACD5rB,OAAM4rB,KAAN,CAAY0B,KAAKnD,kBAAkBI,YAAnC,IAAmDtqB,EAAnD,CAxCsE,CAwCf;;AAEvD,QAAOA,EAAP;AACA,CA3CD;;AA6CA;AACA;AACA;AACA;AACAkqB,kBAAkBlsB,SAAlB,CAA4BktB,WAA5B,GAA0C,UAAS7M,OAAT,EAAkB;AAC3D,KAAIkP,WAAW,IAAInE,QAAJ,CAAa,IAAb,EAAmB/K,OAAnB,CAAf;AACA,KAAImP,+BAA+B,IAAnC;AACA,MAAK,IAAIrtC,IAAI,CAAb,EAAgBA,IAAIk+B,QAAQyN,KAAR,CAActhD,MAAlC,EAA0C2V,GAA1C,EAA+C;AAC9C,MAAIgsC,MAAM9N,QAAQyN,KAAR,CAAc3rC,CAAd,CAAV;AACA,MAAIgsC,IAAI9kB,KAAJ,YAAqB7B,aAAzB,EAAwC;AACvCgoB,kCAA+BrB,GAA/B;AACA;AACA;AACD;AACD,KAAIqB,iCAAiC,IAArC,EAA2C;AAC1CD,WAASjC,aAAT,GAAyB,IAAzB;AACAiC,WAAS5P,mBAAT,GAA+B6P,6BAA6B7P,mBAA5D;AACA4P,WAASvB,UAAT,GAAsB,KAAK9lB,GAAL,CAASkW,eAAT,CAAyBoR,6BAA6BnmB,KAA7B,CAAmCO,SAA5D,CAAtB;AACA;AACD,KAAIkK,MAAM,KAAKH,aAAL,CAAmB,KAAKrqB,IAAxB,CAAV;AACA,KAAI8sB,WAAWtC,IAAIrK,MAAJ,CAAWpnB,GAAX,CAAektC,QAAf,CAAf;AACA,KAAInZ,aAAW,IAAf,EAAqB;AACpB,SAAOA,QAAP;AACA;AACD,KAAIqZ,WAAWF,QAAf;AACAE,UAASxlB,WAAT,GAAuB6J,IAAIrK,MAAJ,CAAWj9B,MAAlC;AACA6zC,SAAQe,WAAR,CAAoB,IAApB;AACAqO,UAASpP,OAAT,GAAmBA,OAAnB;AACAvM,KAAIrK,MAAJ,CAAWH,GAAX,CAAemmB,QAAf;AACA,QAAOA,QAAP;AACA,CA1BD;;AA4BAvD,kBAAkBlsB,SAAlB,CAA4B0vB,MAA5B,GAAqC,UAASpmC,IAAT,EAAe;AACnD,QAAO,KAAKqqB,aAAL,CAAmBrqB,IAAnB,CAAP;AACA,CAFD;;AAIA;AACA4iC,kBAAkBlsB,SAAlB,CAA4BsC,OAA5B,GAAsC,UAAS3zB,KAAT,EAAgB;AACrD;AACA,QAAOA,MAAM2zB,OAAN,CAAc,KAAK6pB,UAAnB,EAA+Bx9C,MAAMuB,KAAN,GAAc,CAA7C,CAAP;AACA,CAHD;;AAKAg8C,kBAAkBlsB,SAAlB,CAA4BU,OAA5B,GAAsC,UAAS/xB,KAAT,EAAgB;AACrD,KAAIghD,UAAUhhD,MAAMiyB,EAAN,CAAS,CAAT,CAAd;AACA,KAAI+uB,YAAY,KAAKrqB,UAAL,CAAgB,CAAhB,CAAhB,EAAoC;AACnC,OAAKz+B,IAAL,IAAa,CAAb;AACA,OAAKC,MAAL,GAAc,CAAd;AACA,EAHD,MAGO;AACN,OAAKA,MAAL,IAAe,CAAf;AACA;AACD6H,OAAM+xB,OAAN;AACA,CATD;;AAWAwrB,kBAAkBlsB,SAAlB,CAA4BquB,YAA5B,GAA2C,UAASuB,EAAT,EAAa;AACvD,KAAIA,OAAO,CAAC,CAAZ,EAAe;AACd,SAAO,KAAP;AACA,EAFD,MAEO;AACN,SAAO,MAAMlqB,OAAOwB,YAAP,CAAoB0oB,EAApB,CAAN,GAAgC,GAAvC;AACA;AACD,CAND;;AAQArqD,QAAQ2mD,iBAAR,GAA4BA,iBAA5B,C;;;;;;;;;;;;;;AC3nBA;AACA;;;;AAIC;;AAED,SAASjJ,eAAT,GAA2B,CAC1B;;AAEDA,gBAAgB6H,OAAhB,GAA0B,CAA1B,C,CAAiC;AACjC7H,gBAAgB8H,MAAhB,GAAyB,CAAzB,C,CAAiC;AACjC9H,gBAAgB+H,IAAhB,GAAuB,CAAvB,C,CAAiC;AACjC/H,gBAAgBzX,IAAhB,GAAuB,CAAvB,C,CAAiC;AACjCyX,gBAAgBgI,QAAhB,GAA2B,CAA3B,C,CAAiC;AACjChI,gBAAgBiI,SAAhB,GAA4B,CAA5B,C,CAAiC;AACjCjI,gBAAgBxX,IAAhB,GAAuB,CAAvB,C,CAAiC;AACjCwX,gBAAgBkI,IAAhB,GAAuB,CAAvB,C,CAAiC;;AAEjC,SAAS0E,WAAT,CAAqBC,MAArB,EAA6B;AACzB,SAAK9H,UAAL,GAAkB8H,MAAlB;AACA,SAAKC,mBAAL,GAA2B,KAA3B;AACA,WAAO,IAAP;AACH;;AAEDF,YAAY7vB,SAAZ,CAAsB8V,QAAtB,GAAiC,YAAW;AACxC,QAAIE,OAAO,IAAIP,IAAJ,EAAX;AACA,SAAKM,cAAL,CAAoBC,IAApB;AACA,WAAOA,KAAKK,MAAL,EAAP;AACH,CAJD;;AAMAwZ,YAAY7vB,SAAZ,CAAsB+V,cAAtB,GAAuC,UAASC,IAAT,EAAe;AAClDA,SAAKC,MAAL,CAAY,KAAK+R,UAAjB;AACH,CAFD;;AAIA6H,YAAY7vB,SAAZ,CAAsBsW,MAAtB,GAA+B,UAAS/P,KAAT,EAAgB;AAC3C,WAAO,SAASA,KAAhB;AACH,CAFD;;AAMA;AACA;AACA;AACA;AACA;AACA,SAAS2c,eAAT,GAA2B;AAC1B2M,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBmjB,gBAAgBxX,IAAvC;AACA,WAAO,IAAP;AACA;;AAEDyX,gBAAgBljB,SAAhB,GAA4Bn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAA5B;AACAkjB,gBAAgBljB,SAAhB,CAA0BE,WAA1B,GAAwCgjB,eAAxC;;AAEA;AACAA,gBAAgBlK,QAAhB,GAA2B,IAAIkK,eAAJ,EAA3B;;AAEAA,gBAAgBljB,SAAhB,CAA0B0uB,OAA1B,GAAoC,UAASjpD,KAAT,EAAgB;AAChDA,UAAM6mC,IAAN;AACH,CAFD;;AAIA4W,gBAAgBljB,SAAhB,CAA0Bl0B,QAA1B,GAAqC,YAAW;AAC/C,WAAO,MAAP;AACA,CAFD;;AAIA;AACA;AACA,SAASw3C,eAAT,CAAyBr8C,IAAzB,EAA+B;AAC9B4oD,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBmjB,gBAAgBkI,IAAvC;AACA,SAAKlkD,IAAL,GAAYA,IAAZ;AACA,WAAO,IAAP;AACA;;AAEDq8C,gBAAgBtjB,SAAhB,GAA4Bn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAA5B;AACAsjB,gBAAgBtjB,SAAhB,CAA0BE,WAA1B,GAAwCojB,eAAxC;;AAEAA,gBAAgBtjB,SAAhB,CAA0B0uB,OAA1B,GAAoC,UAASjpD,KAAT,EAAgB;AAChDA,UAAMwB,IAAN,GAAa,KAAKA,IAAlB;AACH,CAFD;;AAIAq8C,gBAAgBtjB,SAAhB,CAA0B+V,cAA1B,GAA2C,UAASC,IAAT,EAAe;AACtDA,SAAKC,MAAL,CAAY,KAAK+R,UAAjB,EAA6B,KAAK/gD,IAAlC;AACH,CAFD;;AAKAq8C,gBAAgBtjB,SAAhB,CAA0BsW,MAA1B,GAAmC,UAAS/P,KAAT,EAAgB;AAC/C,QAAG,SAASA,KAAZ,EAAmB;AACf,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiB+c,eAApB,CAAJ,EAA0C;AAC7C,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAKr8C,IAAL,KAAcs/B,MAAMt/B,IAA3B;AACH;AACJ,CARD;;AAUAq8C,gBAAgBtjB,SAAhB,CAA0Bl0B,QAA1B,GAAqC,YAAW;AAC5C,WAAO,UAAU,KAAK7E,IAAf,GAAsB,GAA7B;AACH,CAFD;;AAIA;AACA;AACA,SAASs8C,mBAAT,CAA6Bj6B,IAA7B,EAAmC;AAClCumC,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBmjB,gBAAgBiI,SAAvC;AACG,SAAK5hC,IAAL,GAAYA,IAAZ;AACA,WAAO,IAAP;AACH;;AAEDi6B,oBAAoBvjB,SAApB,GAAgCn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAAhC;AACAujB,oBAAoBvjB,SAApB,CAA8BE,WAA9B,GAA4CqjB,mBAA5C;;AAEA;AACA;AACAA,oBAAoBvjB,SAApB,CAA8B0uB,OAA9B,GAAwC,UAASjpD,KAAT,EAAgB;AACpDA,UAAMgnC,QAAN,CAAe,KAAKnjB,IAApB;AACH,CAFD;;AAIAi6B,oBAAoBvjB,SAApB,CAA8B+V,cAA9B,GAA+C,UAASC,IAAT,EAAe;AAC1DA,SAAKC,MAAL,CAAY,KAAK+R,UAAjB,EAA6B,KAAK1+B,IAAlC;AACH,CAFD;;AAIAi6B,oBAAoBvjB,SAApB,CAA8BsW,MAA9B,GAAuC,UAAS/P,KAAT,EAAgB;AACnD,QAAI,SAASA,KAAb,EAAoB;AAChB,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiBgd,mBAApB,CAAJ,EAA8C;AACjD,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAKj6B,IAAL,KAAcid,MAAMjd,IAA3B;AACH;AACJ,CARD;;AAUAi6B,oBAAoBvjB,SAApB,CAA8Bl0B,QAA9B,GAAyC,YAAW;AACnD,WAAO,cAAc,KAAKwd,IAAnB,GAA0B,GAAjC;AACA,CAFD;;AAKA;AACA;AACA;AACA;AACA,SAASk6B,kBAAT,GAA8B;AAC7BqM,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAsBmjB,gBAAgBgI,QAAtC;AACA,WAAO,IAAP;AACA;;AAEDzH,mBAAmBxjB,SAAnB,GAA+Bn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAA/B;AACAwjB,mBAAmBxjB,SAAnB,CAA6BE,WAA7B,GAA2CsjB,kBAA3C;;AAEAA,mBAAmBxK,QAAnB,GAA8B,IAAIwK,kBAAJ,EAA9B;;AAEA;AACAA,mBAAmBxjB,SAAnB,CAA6B0uB,OAA7B,GAAuC,UAASjpD,KAAT,EAAgB;AACnDA,UAAMknC,OAAN;AACH,CAFD;;AAIA6W,mBAAmBxjB,SAAnB,CAA6Bl0B,QAA7B,GAAwC,YAAW;AAClD,WAAO,SAAP;AACA,CAFD;;AAIA;AACA;AACA;AACA;AACA,SAASu3C,eAAT,GAA2B;AAC1BwM,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBmjB,gBAAgBzX,IAAvC;AACA,WAAO,IAAP;AACA;;AAED6X,gBAAgBrjB,SAAhB,GAA4Bn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAA5B;AACAqjB,gBAAgBrjB,SAAhB,CAA0BE,WAA1B,GAAwCmjB,eAAxC;;AAEAA,gBAAgBrK,QAAhB,GAA2B,IAAIqK,eAAJ,EAA3B;;AAEA;AACAA,gBAAgBrjB,SAAhB,CAA0B0uB,OAA1B,GAAoC,UAASjpD,KAAT,EAAgB;AAChDA,UAAM8mC,IAAN;AACH,CAFD;;AAIA8W,gBAAgBrjB,SAAhB,CAA0Bl0B,QAA1B,GAAqC,YAAW;AAC5C,WAAO,MAAP;AACH,CAFD;;AAKA;AACA;AACA,SAAS23C,eAAT,CAAyBn6B,IAAzB,EAA+B;AAC9BumC,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBmjB,gBAAgB+H,IAAvC;AACG,SAAK1hC,IAAL,GAAYA,IAAZ;AACA,WAAO,IAAP;AACH;;AAEDm6B,gBAAgBzjB,SAAhB,GAA4Bn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAA5B;AACAyjB,gBAAgBzjB,SAAhB,CAA0BE,WAA1B,GAAwCujB,eAAxC;;AAEA;AACA;AACAA,gBAAgBzjB,SAAhB,CAA0B0uB,OAA1B,GAAoC,UAASjpD,KAAT,EAAgB;AAChDA,UAAM6jB,IAAN,CAAW,KAAKA,IAAhB;AACH,CAFD;;AAIAm6B,gBAAgBzjB,SAAhB,CAA0B+V,cAA1B,GAA2C,UAASC,IAAT,EAAe;AACtDA,SAAKC,MAAL,CAAY,KAAK+R,UAAjB,EAA6B,KAAK1+B,IAAlC;AACH,CAFD;;AAIAm6B,gBAAgBzjB,SAAhB,CAA0BsW,MAA1B,GAAmC,UAAS/P,KAAT,EAAgB;AAC/C,QAAI,SAASA,KAAb,EAAoB;AAChB,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiBkd,eAApB,CAAJ,EAA0C;AAC7C,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAKn6B,IAAL,KAAcid,MAAMjd,IAA3B;AACH;AACJ,CARD;;AAUAm6B,gBAAgBzjB,SAAhB,CAA0Bl0B,QAA1B,GAAqC,YAAW;AAC5C,WAAO,UAAU,KAAKwd,IAAf,GAAsB,GAA7B;AACH,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGI;AACA;AACA;AACA;AACA;AACA;AACA;;AAEJ,SAAS85B,iBAAT,CAA2BxZ,SAA3B,EAAsCsQ,WAAtC,EAAmD;AAClD2V,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBmjB,gBAAgB8H,MAAvC;AACG,SAAKnhB,SAAL,GAAiBA,SAAjB;AACA,SAAKsQ,WAAL,GAAmBA,WAAnB;AACA,SAAK6V,mBAAL,GAA2B,IAA3B;AACA,WAAO,IAAP;AACH;;AAED3M,kBAAkBpjB,SAAlB,GAA8Bn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAA9B;AACAojB,kBAAkBpjB,SAAlB,CAA4BE,WAA5B,GAA0CkjB,iBAA1C;;AAEA;AACA;AACAA,kBAAkBpjB,SAAlB,CAA4B0uB,OAA5B,GAAsC,UAASjpD,KAAT,EAAgB;AAClDA,UAAMqqD,MAAN,CAAa,IAAb,EAAmB,KAAKlmB,SAAxB,EAAmC,KAAKsQ,WAAxC;AACH,CAFD;;AAIAkJ,kBAAkBpjB,SAAlB,CAA4B+V,cAA5B,GAA6C,UAASC,IAAT,EAAe;AACxDA,SAAKC,MAAL,CAAY,KAAK+R,UAAjB,EAA6B,KAAKpe,SAAlC,EAA6C,KAAKsQ,WAAlD;AACH,CAFD;;AAIAkJ,kBAAkBpjB,SAAlB,CAA4BsW,MAA5B,GAAqC,UAAS/P,KAAT,EAAgB;AACjD,QAAI,SAASA,KAAb,EAAoB;AAChB,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiB6c,iBAApB,CAAJ,EAA4C;AAC/C,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAKxZ,SAAL,KAAmBrD,MAAMqD,SAAzB,IAAsC,KAAKsQ,WAAL,KAAqB3T,MAAM2T,WAAxE;AACH;AACJ,CARD;;AAUA;AACA;AACA;AACA;AACA,SAASiJ,kBAAT,CAA4BzhB,OAA5B,EAAqC;AACpCmuB,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBmjB,gBAAgB6H,OAAvC;AACG,SAAKppB,OAAL,GAAeA,OAAf;AACA,WAAO,IAAP;AACH;;AAEDyhB,mBAAmBnjB,SAAnB,GAA+Bn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAA/B;AACAmjB,mBAAmBnjB,SAAnB,CAA6BE,WAA7B,GAA2CijB,kBAA3C;;AAEA;AACA;AACAA,mBAAmBnjB,SAAnB,CAA6B0uB,OAA7B,GAAuC,UAASjpD,KAAT,EAAgB;AACnDA,UAAM0lC,QAAN,GAAiB,KAAKzJ,OAAtB;AACH,CAFD;;AAIAyhB,mBAAmBnjB,SAAnB,CAA6B+V,cAA7B,GAA8C,UAASC,IAAT,EAAe;AACzDA,SAAKC,MAAL,CAAY,KAAK+R,UAAjB,EAA6B,KAAKtmB,OAAlC;AACH,CAFD;;AAIAyhB,mBAAmBnjB,SAAnB,CAA6BsW,MAA7B,GAAsC,UAAS/P,KAAT,EAAgB;AAClD,QAAI,SAASA,KAAb,EAAoB;AAChB,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiB4c,kBAApB,CAAJ,EAA6C;AAChD,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAKzhB,OAAL,KAAiB6E,MAAM7E,OAA9B;AACH;AACJ,CARD;;AAUAyhB,mBAAmBnjB,SAAnB,CAA6Bl0B,QAA7B,GAAwC,YAAW;AAC/C,WAAO,aAAa,KAAK41B,OAAlB,GAA4B,GAAnC;AACH,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsuB,wBAAT,CAAkCvqB,MAAlC,EAA0CqqB,MAA1C,EAAkD;AACjDD,gBAAY/vB,IAAZ,CAAiB,IAAjB,EAAuBgwB,OAAO9H,UAA9B;AACG,SAAKviB,MAAL,GAAcA,MAAd;AACA,SAAKqqB,MAAL,GAAcA,MAAd;AACA,SAAKC,mBAAL,GAA2B,IAA3B;AACA,WAAO,IAAP;AACH;;AAEDC,yBAAyBhwB,SAAzB,GAAqCn2B,OAAOo2B,MAAP,CAAc4vB,YAAY7vB,SAA1B,CAArC;AACAgwB,yBAAyBhwB,SAAzB,CAAmCE,WAAnC,GAAiD8vB,wBAAjD;;AAEA;AACA;AACAA,yBAAyBhwB,SAAzB,CAAmC0uB,OAAnC,GAA6C,UAASjpD,KAAT,EAAgB;AACzD;AACA,SAAKqqD,MAAL,CAAYpB,OAAZ,CAAoBjpD,KAApB;AACH,CAHD;;AAKAuqD,yBAAyBhwB,SAAzB,CAAmC+V,cAAnC,GAAoD,UAASC,IAAT,EAAe;AAC/DA,SAAKC,MAAL,CAAY,KAAK+R,UAAjB,EAA6B,KAAKviB,MAAlC,EAA0C,KAAKqqB,MAA/C;AACH,CAFD;;AAIAE,yBAAyBhwB,SAAzB,CAAmCsW,MAAnC,GAA4C,UAAS/P,KAAT,EAAgB;AACxD,QAAI,SAASA,KAAb,EAAoB;AAChB,eAAO,IAAP;AACH,KAFD,MAEO,IAAI,EAAGA,iBAAiBypB,wBAApB,CAAJ,EAAmD;AACtD,eAAO,KAAP;AACH,KAFM,MAEA;AACH,eAAO,KAAKvqB,MAAL,KAAgBc,MAAMd,MAAtB,IAAgC,KAAKqqB,MAAL,KAAgBvpB,MAAMupB,MAA7D;AACH;AACJ,CARD;;AAWAvqD,QAAQ09C,eAAR,GAA0BA,eAA1B;AACA19C,QAAQ29C,eAAR,GAA0BA,eAA1B;AACA39C,QAAQ49C,kBAAR,GAA6BA,kBAA7B;AACA59C,QAAQ69C,iBAAR,GAA4BA,iBAA5B;AACA79C,QAAQyqD,wBAAR,GAAmCA,wBAAnC;AACAzqD,QAAQ89C,eAAR,GAA0BA,eAA1B;AACA99C,QAAQ+9C,eAAR,GAA0BA,eAA1B;AACA/9C,QAAQg+C,mBAAR,GAA8BA,mBAA9B;AACAh+C,QAAQi+C,kBAAR,GAA6BA,kBAA7B;AACAj+C,QAAQk+C,eAAR,GAA0BA,eAA1B,C;;;;;;;;;;;;;;AC7WA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIjG,YAAY,mBAAAhe,CAAQ,gDAAR,EAAoBge,SAApC;AACA,IAAIwS,2BAA2B,mBAAAxwB,CAAQ,+DAAR,EAAyBwwB,wBAAxD;;AAEA,SAASnE,mBAAT,CAA6BxN,YAA7B,EAA2C;AAC1C,MAAKA,YAAL,GAAoBA,iBAAiB,IAAjB,GAAwB,EAAxB,GAA6BA,YAAjD;AACA;AACA;AACA,MAAK3I,cAAL,GAAsB8H,UAAUa,YAAV,CAAtB,CAJ0C,CAIK;AAC/C;AACA,QAAO,IAAP;AACA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwN,oBAAoB7sC,MAApB,GAA6B,UAAS2gC,mBAAT,EAA8BwI,WAA9B,EAA2C;AACvE,KAAIxI,wBAAwB,IAA5B,EAAkC;AACjC,SAAO,IAAIkM,mBAAJ,CAAwB,CAAE1D,WAAF,CAAxB,CAAP;AACA;AACD,KAAI9J,eAAesB,oBAAoBtB,YAApB,CAAiC3uC,MAAjC,CAAwC,CAAEy4C,WAAF,CAAxC,CAAnB;AACA,QAAO,IAAI0D,mBAAJ,CAAwBxN,YAAxB,CAAP;AACA,CAND;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAwN,oBAAoB7rB,SAApB,CAA8BuuB,oBAA9B,GAAqD,UAAS9oB,MAAT,EAAiB;AACrE,KAAIwqB,sBAAsB,IAA1B;AACA,MAAK,IAAI9tC,IAAI,CAAb,EAAgBA,IAAI,KAAKk8B,YAAL,CAAkB7xC,MAAtC,EAA8C2V,GAA9C,EAAmD;AAClD,MAAI,KAAKk8B,YAAL,CAAkBl8B,CAAlB,EAAqB4tC,mBAArB,IACF,EAAE,KAAK1R,YAAL,CAAkBl8B,CAAlB,aAAgC6tC,wBAAlC,CADF,EAC+D;AAC9D,OAAIC,wBAAwB,IAA5B,EAAkC;AACjCA,0BAAsB,KAAK5R,YAAL,CAAkB3uC,MAAlB,CAAyB,EAAzB,CAAtB;AACA;AACDugD,uBAAoB9tC,CAApB,IAAyB,IAAI6tC,wBAAJ,CAA6BvqB,MAA7B,EACvB,KAAK4Y,YAAL,CAAkBl8B,CAAlB,CADuB,CAAzB;AAEA;AACD;AACD,KAAI8tC,wBAAwB,IAA5B,EAAkC;AACjC,SAAO,IAAP;AACA,EAFD,MAEO;AACN,SAAO,IAAIpE,mBAAJ,CAAwBoE,mBAAxB,CAAP;AACA;AACD,CAjBD;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACApE,oBAAoB7rB,SAApB,CAA8B0uB,OAA9B,GAAwC,UAASjpD,KAAT,EAAgBkJ,KAAhB,EAAuBw9C,UAAvB,EAAmC;AAC1E,KAAI+D,eAAe,KAAnB;AACA,KAAIC,YAAYxhD,MAAMuB,KAAtB;AACA,KAAI;AACH,OAAK,IAAIiS,IAAI,CAAb,EAAgBA,IAAI,KAAKk8B,YAAL,CAAkB7xC,MAAtC,EAA8C2V,GAA9C,EAAmD;AAClD,OAAIgmC,cAAc,KAAK9J,YAAL,CAAkBl8B,CAAlB,CAAlB;AACA,OAAIgmC,uBAAuB6H,wBAA3B,EAAqD;AACpD,QAAIvqB,SAAS0iB,YAAY1iB,MAAzB;AACA92B,UAAM4xB,IAAN,CAAW4rB,aAAa1mB,MAAxB;AACA0iB,kBAAcA,YAAY2H,MAA1B;AACAI,mBAAgB/D,aAAa1mB,MAAd,KAA0B0qB,SAAzC;AACA,IALD,MAKO,IAAIhI,YAAY4H,mBAAhB,EAAqC;AAC3CphD,UAAM4xB,IAAN,CAAW4vB,SAAX;AACAD,mBAAe,KAAf;AACA;AACD/H,eAAYuG,OAAZ,CAAoBjpD,KAApB;AACA;AACD,EAdD,SAcU;AACT,MAAIyqD,YAAJ,EAAkB;AACjBvhD,SAAM4xB,IAAN,CAAW4vB,SAAX;AACA;AACD;AACD,CAtBD;;AAwBAtE,oBAAoB7rB,SAApB,CAA8B8V,QAA9B,GAAyC,YAAW;AACnD,QAAO,KAAKJ,cAAZ;AACA,CAFD;;AAIAmW,oBAAoB7rB,SAApB,CAA8B+V,cAA9B,GAA+C,UAASC,IAAT,EAAe;AAC1DA,MAAKC,MAAL,CAAY,KAAKP,cAAjB;AACH,CAFD;;AAKAmW,oBAAoB7rB,SAApB,CAA8BsW,MAA9B,GAAuC,UAAS/P,KAAT,EAAgB;AACtD,KAAI,SAASA,KAAb,EAAoB;AACnB,SAAO,IAAP;AACA,EAFD,MAEO,IAAI,EAAEA,iBAAiBslB,mBAAnB,CAAJ,EAA6C;AACnD,SAAO,KAAP;AACA,EAFM,MAEA,IAAI,KAAKnW,cAAL,IAAuBnP,MAAMmP,cAAjC,EAAiD;AACvD,SAAO,KAAP;AACA,EAFM,MAEA,IAAI,KAAK2I,YAAL,CAAkB7xC,MAAlB,IAA4B+5B,MAAM8X,YAAN,CAAmB7xC,MAAnD,EAA2D;AACjE,SAAO,KAAP;AACA,EAFM,MAEA;AACN,MAAI4jD,aAAa,KAAK/R,YAAL,CAAkB7xC,MAAnC;AACA,OAAK,IAAI8sB,MAAM,CAAf,EAAkBA,MAAM82B,UAAxB,EAAoC,EAAE92B,GAAtC,EAA2C;AAC1C,OAAI,CAAC,KAAK+kB,YAAL,CAAkB/kB,GAAlB,EAAuBgd,MAAvB,CAA8B/P,MAAM8X,YAAN,CAAmB/kB,GAAnB,CAA9B,CAAL,EAA6D;AAC5D,WAAO,KAAP;AACA;AACD;AACD,SAAO,IAAP;AACA;AACD,CAlBD;;AAoBA/zB,QAAQsmD,mBAAR,GAA8BA,mBAA9B,C;;;;;;;;;;;;;;ACrKA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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AAoBiW,IAA/B;AACA,IAAI+H,YAAY,mBAAAhe,CAAQ,kDAAR,EAAsBge,SAAtC;AACA,IAAIK,cAAc,mBAAAre,CAAQ,kDAAR,EAAsBqe,WAAxC;;AAEA,SAASyS,cAAT,GAA0B;AACzB,WAAO,IAAP;AACA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,eAAewB,GAAf,GAAqB,CAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAxB,eAAeI,EAAf,GAAoB,CAApB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAJ,eAAekD,wBAAf,GAA0C,CAA1C;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAlD,eAAeuC,mCAAf,GAAqD,UAAUvpC,IAAV,EAAgB+2B,OAAhB,EAAyB;AAC1E;AACA;AACA;AACA;AACA;AACA,QAAIiQ,eAAe4D,0BAAf,CAA0C7T,OAA1C,CAAJ,EAAwD;AACpD,eAAO,IAAP;AACH;AACD;AACA,QAAI/2B,SAASgnC,eAAewB,GAA5B,EAAiC;AAC7B;AACA;AACA;AACA,YAAIzR,QAAQG,kBAAZ,EAAgC;AAC5B;AACA,gBAAIkX,MAAM,IAAIxX,YAAJ,EAAV;AACA,iBAAI,IAAI/9B,IAAE,CAAV,EAAYA,IAAEk+B,QAAQyN,KAAR,CAActhD,MAA5B,EAAmC2V,GAAnC,EAAwC;AACvC,oBAAIinB,IAAIiX,QAAQyN,KAAR,CAAc3rC,CAAd,CAAR;AACGinB,oBAAI,IAAI7B,SAAJ,CAAc,EAAC4X,iBAAgBH,gBAAgBO,IAAjC,EAAd,EAAsDnW,CAAtD,CAAJ;AACAsuB,oBAAIpuB,GAAJ,CAAQF,CAAR;AACH;AACDiX,sBAAUqX,GAAV;AACH;AACD;AACH;AACD;AACA,QAAIR,UAAU5G,eAAeoC,wBAAf,CAAwCrS,OAAxC,CAAd;AACA,WAAOiQ,eAAeqH,oBAAf,CAAoCT,OAApC,KAAgD,CAAC5G,eAAesH,4BAAf,CAA4CvX,OAA5C,CAAxD;AACH,CA7BD;;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAiQ,eAAe0D,wBAAf,GAA0C,UAAS3T,OAAT,EAAkB;AAC3D,SAAI,IAAIl+B,IAAE,CAAV,EAAYA,IAAEk+B,QAAQyN,KAAR,CAActhD,MAA5B,EAAmC2V,GAAnC,EAAwC;AACvC,YAAIinB,IAAIiX,QAAQyN,KAAR,CAAc3rC,CAAd,CAAR;AACM,YAAIinB,EAAEC,KAAF,YAAmB7B,aAAvB,EAAsC;AAClC,mBAAO,IAAP;AACH;AACP;AACE,WAAO,KAAP;AACH,CARD;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA8oB,eAAe4D,0BAAf,GAA4C,UAAS7T,OAAT,EAAkB;AAC7D,SAAI,IAAIl+B,IAAE,CAAV,EAAYA,IAAEk+B,QAAQyN,KAAR,CAActhD,MAA5B,EAAmC2V,GAAnC,EAAwC;AACvC,YAAIinB,IAAIiX,QAAQyN,KAAR,CAAc3rC,CAAd,CAAR;AACM,YAAI,EAAEinB,EAAEC,KAAF,YAAmB7B,aAArB,CAAJ,EAAyC;AACrC,mBAAO,KAAP;AACH;AACP;AACE,WAAO,IAAP;AACH,CARD;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA8oB,eAAeiD,0BAAf,GAA4C,UAAS2D,OAAT,EAAkB;AAC1D,WAAO5G,eAAeoD,kBAAf,CAAkCwD,OAAlC,CAAP;AACH,CAFD;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA5G,eAAeqC,kBAAf,GAAoC,UAASuE,OAAT,EAAkB;AAClD,WAAO,CAAE5G,eAAeuH,uBAAf,CAAuCX,OAAvC,CAAT;AACH,CAFD;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA5G,eAAeuH,uBAAf,GAAyC,UAASX,OAAT,EAAkB;AAC1D,SAAI,IAAI/0C,IAAE,CAAV,EAAYA,IAAE+0C,QAAQ1qD,MAAtB,EAA6B2V,GAA7B,EAAkC;AACjC,YAAIiwC,OAAO8E,QAAQ/0C,CAAR,CAAX;AACM,YAAIiwC,KAAK5lD,MAAL,KAAc,CAAlB,EAAqB;AACjB,mBAAO,IAAP;AACH;AACP;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EAAErkB,OAAF,CAAU,KAAV,EAAgB,KAAhB,CAAJ;AACA,WAAO,MAAMqkB,CAAN,GAAU,GAAjB;AACH,CALD;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAoL,qBAAqB5N,SAArB,CAA+Bw7B,mBAA/B,GAAqD,UAASrB,UAAT,EAAqB;AACtE,QAAIjyB,MAAMiyB,WAAWtvB,OAAX,CAAmB3C,GAA7B;AACA,QAAIc,MAAMmxB,WAAW5rB,IAArB;AACA,QAAIuuB,aAAa,IAAIh3B,WAAJ,EAAjB;AACA,WAAOkD,QAAQ,IAAR,IAAgBA,IAAI0I,aAAJ,IAAmB,CAA1C,EAA6C;AACzC;AACA,YAAIA,gBAAgBxJ,IAAIuB,MAAJ,CAAWT,IAAI0I,aAAf,CAApB;AACA,YAAIwB,KAAKxB,cAAcpJ,WAAd,CAA0B,CAA1B,CAAT;AACA,YAAIy0B,SAAS70B,IAAI+K,UAAJ,CAAeC,GAAGlJ,WAAlB,CAAb;AACA8yB,mBAAWx2B,MAAX,CAAkBy2B,MAAlB;AACA/zB,cAAMA,IAAI8I,SAAV;AACH;AACDgrB,eAAWl2B,SAAX,CAAqBrH,MAAM6H,OAA3B;AACA,WAAO01B,UAAP;AACH,CAdD;;AAgBA;AACAlvB,qBAAqB5N,SAArB,CAA+By7B,YAA/B,GAA8C,UAAStB,UAAT,EAAqBz4C,GAArB,EAA0B;AACpE,QAAIuqB,QAAQkuB,WAAW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","file":"ivprog.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/main.js\");\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-31848zMNEObev5i43/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01d1\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\",\n \"\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0011\\u0003\",\n \"\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\\u0014\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0125\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u012d\\n)\\f)\\u000e)\\u0130\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0137\\n+\\r+\\u000e+\\u0138\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u013f\\n+\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e\",\n \"+\\u0143\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\",\n \"\\n+\\r+\\u000e+\\u014e\\u0005+\\u0151\\n+\\u0003,\\u0006,\\u0154\\n,\\r,\\u000e\",\n \",\\u0155\\u0003,\\u0003,\\u0006,\\u015a\\n,\\r,\\u000e,\\u015b\\u0003,\\u0006,\",\n \"\\u015f\\n,\\r,\\u000e,\\u0160\\u0003,\\u0003,\\u0007,\\u0165\\n,\\f,\\u000e,\\u0168\",\n \"\\u000b,\\u0003,\\u0005,\\u016b\\n,\\u0003-\\u0003-\\u0005-\\u016f\\n-\\u0003-\",\n \"\\u0006-\\u0172\\n-\\r-\\u000e-\\u0173\\u0003.\\u0003.\\u0007.\\u0178\\n.\\f.\\u000e\",\n \".\\u017b\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u0181\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0186\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u0191\\n3\\r3\\u000e3\\u0192\\u00033\\u00053\\u0196\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01a0\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01ad\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01ba\\n9\\f9\\u000e9\\u01bd\\u000b\",\n \"9\\u00039\\u00059\\u01c0\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c7\",\n \"\\n9\\f9\\u000e9\\u01ca\\u000b9\\u00039\\u00039\\u00059\\u01ce\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01c8\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01e5\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005{\\u0003\\u0002\\u0002\\u0002\\u0007\\u0080\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0085\\u0003\\u0002\\u0002\\u0002\\u000b\\u008d\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0094\\u0003\\u0002\\u0002\\u0002\\u000f\\u009c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a6\\u0003\\u0002\\u0002\\u0002\\u0013\\u00ad\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b2\\u0003\\u0002\\u0002\\u0002\\u0017\\u00bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c2\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d2\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d6\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dc\\u0003\\u0002\\u0002\\u0002#\\u00df\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00e5\\u0003\\u0002\\u0002\\u0002\\'\\u00e8\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00ed\\u0003\\u0002\\u0002\\u0002+\\u00f3\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u00f8\\u0003\\u0002\\u0002\\u0002/\\u00fc\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u0100\\u0003\\u0002\\u0002\\u00023\\u0103\\u0003\\u0002\\u0002\\u00025\\u0105\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0107\\u0003\\u0002\\u0002\\u00029\\u0109\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u010b\\u0003\\u0002\\u0002\\u0002=\\u010d\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u010f\\u0003\\u0002\\u0002\\u0002A\\u0111\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u0113\\u0003\\u0002\\u0002\\u0002E\\u0115\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0117\\u0003\\u0002\\u0002\\u0002I\\u0119\\u0003\\u0002\\u0002\\u0002K\\u0124\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0126\\u0003\\u0002\\u0002\\u0002O\\u0128\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u012a\\u0003\\u0002\\u0002\\u0002S\\u0131\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u0150\\u0003\\u0002\\u0002\\u0002W\\u016a\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u016c\\u0003\\u0002\\u0002\\u0002[\\u0175\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u0180\\u0003\\u0002\\u0002\\u0002_\\u0182\\u0003\\u0002\\u0002\\u0002a\\u0189\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u018d\\u0003\\u0002\\u0002\\u0002e\\u0195\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u0197\\u0003\\u0002\\u0002\\u0002i\\u0199\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u019f\\u0003\\u0002\\u0002\\u0002m\\u01ac\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01ae\\u0003\\u0002\\u0002\\u0002q\\u01cd\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z\\u0004\\u0003\\u0002\\u0002\\u0002{|\\u0007t\\u0002\\u0002|}\\u0007g\",\n \"\\u0002\\u0002}~\\u0007c\\u0002\\u0002~\\u007f\\u0007n\\u0002\\u0002\\u007f\\u0006\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0080\\u0081\\u0007x\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007q\\u0002\\u0002\\u0082\\u0083\\u0007k\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"f\\u0002\\u0002\\u0084\\b\\u0003\\u0002\\u0002\\u0002\\u0085\\u0086\\u0007d\\u0002\",\n \"\\u0002\\u0086\\u0087\\u0007q\\u0002\\u0002\\u0087\\u0088\\u0007q\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007n\\u0002\\u0002\\u0089\\u008a\\u0007g\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007c\\u0002\\u0002\\u008b\\u008c\\u0007p\\u0002\\u0002\\u008c\\n\\u0003\",\n \"\\u0002\\u0002\\u0002\\u008d\\u008e\\u0007u\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"v\\u0002\\u0002\\u008f\\u0090\\u0007t\\u0002\\u0002\\u0090\\u0091\\u0007k\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007p\\u0002\\u0002\\u0092\\u0093\\u0007i\\u0002\\u0002\",\n \"\\u0093\\f\\u0003\\u0002\\u0002\\u0002\\u0094\\u0095\\u0007k\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007p\\u0002\\u0002\\u0096\\u0097\\u0007v\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007g\\u0002\\u0002\\u0098\\u0099\\u0007i\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"g\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u000e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009c\\u009d\\u0007e\\u0002\\u0002\\u009d\\u009e\\u0007j\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u0010\\u0003\\u0002\\u0002\\u0002\\u00a6\\u00a7\",\n \"\\u0007u\\u0002\\u0002\\u00a7\\u00a8\\u0007y\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"k\\u0002\\u0002\\u00a9\\u00aa\\u0007v\\u0002\\u0002\\u00aa\\u00ab\\u0007e\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007j\\u0002\\u0002\\u00ac\\u0012\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00ad\\u00ae\\u0007e\\u0002\\u0002\\u00ae\\u00af\\u0007c\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007u\\u0002\\u0002\\u00b0\\u00b1\\u0007g\\u0002\\u0002\\u00b1\",\n \"\\u0014\\u0003\\u0002\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\",\n \"\\u00b4\\u0007v\\u0002\\u0002\\u00b4\\u00b5\\u0007j\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007g\\u0002\\u0002\\u00b6\\u00b7\\u0007t\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"y\\u0002\\u0002\\u00b8\\u00b9\\u0007k\\u0002\\u0002\\u00b9\\u00ba\\u0007u\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007g\\u0002\\u0002\\u00bb\\u0016\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00bc\\u00bd\\u0007e\\u0002\\u0002\\u00bd\\u00be\\u0007q\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007p\\u0002\\u0002\\u00bf\\u00c0\\u0007u\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007v\\u0002\\u0002\\u00c1\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c2\",\n \"\\u00c3\\u0007h\\u0002\\u0002\\u00c3\\u00c4\\u0007w\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007p\\u0002\\u0002\\u00c5\\u00c6\\u0007e\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"v\\u0002\\u0002\\u00c7\\u00c8\\u0007k\\u0002\\u0002\\u00c8\\u00c9\\u0007q\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007p\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007w\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u001c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00d2\\u00d3\\u0007h\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007q\\u0002\\u0002\\u00d4\\u00d5\\u0007t\\u0002\\u0002\\u00d5\\u001e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00d6\\u00d7\\u0007d\\u0002\\u0002\\u00d7\\u00d8\\u0007\",\n \"t\\u0002\\u0002\\u00d8\\u00d9\\u0007g\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007m\\u0002\\u0002\\u00db \\u0003\\u0002\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007f\\u0002\\u0002\\u00dd\\u00de\\u0007q\\u0002\\u0002\\u00de\",\n \"\\\"\\u0003\\u0002\\u0002\\u0002\\u00df\\u00e0\\u0007y\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007j\\u0002\\u0002\\u00e1\\u00e2\\u0007k\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"n\\u0002\\u0002\\u00e3\\u00e4\\u0007g\\u0002\\u0002\\u00e4$\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007k\\u0002\\u0002\\u00e6\\u00e7\\u0007h\\u0002\\u0002\",\n \"\\u00e7&\\u0003\\u0002\\u0002\\u0002\\u00e8\\u00e9\\u0007g\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007n\\u0002\\u0002\\u00ea\\u00eb\\u0007u\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007g\\u0002\\u0002\\u00ec(\\u0003\\u0002\\u0002\\u0002\\u00ed\\u00ee\\u0007\",\n \"h\\u0002\\u0002\\u00ee\\u00ef\\u0007c\\u0002\\u0002\\u00ef\\u00f0\\u0007n\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007u\\u0002\\u0002\\u00f1\\u00f2\\u0007g\\u0002\\u0002\",\n \"\\u00f2*\\u0003\\u0002\\u0002\\u0002\\u00f3\\u00f4\\u0007v\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007t\\u0002\\u0002\\u00f5\\u00f6\\u0007w\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007g\\u0002\\u0002\\u00f7,\\u0003\\u0002\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"p\\u0002\\u0002\\u00f9\\u00fa\\u0007q\\u0002\\u0002\\u00fa\\u00fb\\u0007v\\u0002\",\n \"\\u0002\\u00fb.\\u0003\\u0002\\u0002\\u0002\\u00fc\\u00fd\\u0007C\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007P\\u0002\\u0002\\u00fe\\u00ff\\u0007F\\u0002\\u0002\\u00ff\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u0100\\u0101\\u0007Q\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007T\\u0002\\u0002\\u01022\\u0003\\u0002\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"*\\u0002\\u0002\\u01044\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007+\\u0002\",\n \"\\u0002\\u01066\\u0003\\u0002\\u0002\\u0002\\u0107\\u0108\\u0007]\\u0002\\u0002\",\n \"\\u01088\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007_\\u0002\\u0002\\u010a\",\n \":\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007}\\u0002\\u0002\\u010c<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u010d\\u010e\\u0007\\u007f\\u0002\\u0002\\u010e>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u010f\\u0110\\u0007.\\u0002\\u0002\\u0110@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0111\\u0112\\u0007?\\u0002\\u0002\\u0112B\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0113\\u0114\\t\\u0002\\u0002\\u0002\\u0114D\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0115\\u0116\\t\\u0003\\u0002\\u0002\\u0116F\\u0003\\u0002\\u0002\\u0002\\u0117\",\n \"\\u0118\\u0005/\\u0018\\u0002\\u0118H\\u0003\\u0002\\u0002\\u0002\\u0119\\u011a\",\n \"\\u00051\\u0019\\u0002\\u011aJ\\u0003\\u0002\\u0002\\u0002\\u011b\\u011c\\u0007\",\n \"@\\u0002\\u0002\\u011c\\u0125\\u0007?\\u0002\\u0002\\u011d\\u011e\\u0007?\\u0002\",\n \"\\u0002\\u011e\\u0125\\u0007?\\u0002\\u0002\\u011f\\u0120\\u0007>\\u0002\\u0002\",\n \"\\u0120\\u0125\\u0007?\\u0002\\u0002\\u0121\\u0125\\t\\u0004\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0007#\\u0002\\u0002\\u0123\\u0125\\u0007?\\u0002\\u0002\\u0124\\u011b\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0124\\u011d\\u0003\\u0002\\u0002\\u0002\\u0124\\u011f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0124\\u0121\\u0003\\u0002\\u0002\\u0002\\u0124\\u0122\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0125L\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\",\n \"\\u0007<\\u0002\\u0002\\u0127N\\u0003\\u0002\\u0002\\u0002\\u0128\\u0129\\u0005\",\n \"-\\u0017\\u0002\\u0129P\\u0003\\u0002\\u0002\\u0002\\u012a\\u012e\\t\\u0005\\u0002\",\n \"\\u0002\\u012b\\u012d\\t\\u0006\\u0002\\u0002\\u012c\\u012b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u012d\\u0130\\u0003\\u0002\\u0002\\u0002\\u012e\\u012c\\u0003\\u0002\\u0002\",\n \"\\u0002\\u012e\\u012f\\u0003\\u0002\\u0002\\u0002\\u012fR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0130\\u012e\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\\u0005Q)\\u0002\",\n \"\\u0132\\u0133\\u00070\\u0002\\u0002\\u0133\\u0134\\u0005Q)\\u0002\\u0134T\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0135\\u0137\\t\\u0007\\u0002\\u0002\\u0136\\u0135\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0137\\u0138\\u0003\\u0002\\u0002\\u0002\\u0138\\u0136\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0138\\u0139\\u0003\\u0002\\u0002\\u0002\\u0139\\u0151\\u0003\",\n \"\\u0002\\u0002\\u0002\\u013a\\u013b\\u00072\\u0002\\u0002\\u013b\\u013f\\u0007\",\n \"z\\u0002\\u0002\\u013c\\u013d\\u00072\\u0002\\u0002\\u013d\\u013f\\u0007Z\\u0002\",\n \"\\u0002\\u013e\\u013a\\u0003\\u0002\\u0002\\u0002\\u013e\\u013c\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013f\\u0141\\u0003\\u0002\\u0002\\u0002\\u0140\\u0142\\u0005g4\\u0002\",\n \"\\u0141\\u0140\\u0003\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0143\\u0141\\u0003\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0144\\u0151\\u0003\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\",\n \"\\u0146\\u014a\\u0007d\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\",\n \"\\u014a\\u0007D\\u0002\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\",\n \"\\u0147\\u0003\\u0002\\u0002\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\",\n \"\\u014d\\t\\b\\u0002\\u0002\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\",\n \"\\u0003\\u0002\\u0002\\u0002\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u014f\\u0151\\u0003\\u0002\\u0002\\u0002\\u0150\\u0136\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0150\\u013e\\u0003\\u0002\\u0002\\u0002\\u0150\\u0149\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0151V\\u0003\\u0002\\u0002\\u0002\\u0152\\u0154\",\n \"\\t\\u0007\\u0002\\u0002\\u0153\\u0152\\u0003\\u0002\\u0002\\u0002\\u0154\\u0155\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0155\\u0153\\u0003\\u0002\\u0002\\u0002\\u0155\\u0156\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0156\\u0157\\u0003\\u0002\\u0002\\u0002\\u0157\\u0159\",\n \"\\u00070\\u0002\\u0002\\u0158\\u015a\\t\\u0007\\u0002\\u0002\\u0159\\u0158\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015a\\u015b\\u0003\\u0002\\u0002\\u0002\\u015b\\u0159\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015b\\u015c\\u0003\\u0002\\u0002\\u0002\\u015c\\u016b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015d\\u015f\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015f\\u0160\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0160\\u0161\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0162\\u0166\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\",\n \"\\u0002\\u0002\\u0164\\u0163\\u0003\\u0002\\u0002\\u0002\\u0165\\u0168\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0166\\u0164\\u0003\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0167\\u0169\\u0003\\u0002\\u0002\\u0002\\u0168\\u0166\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0169\\u016b\\u0005Y-\\u0002\\u016a\\u0153\\u0003\\u0002\\u0002\",\n \"\\u0002\\u016a\\u015e\\u0003\\u0002\\u0002\\u0002\\u016bX\\u0003\\u0002\\u0002\",\n \"\\u0002\\u016c\\u016e\\t\\t\\u0002\\u0002\\u016d\\u016f\\t\\u0002\\u0002\\u0002\\u016e\",\n \"\\u016d\\u0003\\u0002\\u0002\\u0002\\u016e\\u016f\\u0003\\u0002\\u0002\\u0002\\u016f\",\n \"\\u0171\\u0003\\u0002\\u0002\\u0002\\u0170\\u0172\\t\\u0007\\u0002\\u0002\\u0171\",\n \"\\u0170\\u0003\\u0002\\u0002\\u0002\\u0172\\u0173\\u0003\\u0002\\u0002\\u0002\\u0173\",\n \"\\u0171\\u0003\\u0002\\u0002\\u0002\\u0173\\u0174\\u0003\\u0002\\u0002\\u0002\\u0174\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0175\\u0179\\u0007$\\u0002\\u0002\\u0176\\u0178\",\n \"\\u0005]/\\u0002\\u0177\\u0176\\u0003\\u0002\\u0002\\u0002\\u0178\\u017b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0179\\u0177\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017a\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u0179\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017c\\u017d\\u0007$\\u0002\\u0002\\u017d\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u017e\\u0181\\n\\n\\u0002\\u0002\\u017f\\u0181\\u0005k6\\u0002\\u0180\",\n \"\\u017e\\u0003\\u0002\\u0002\\u0002\\u0180\\u017f\\u0003\\u0002\\u0002\\u0002\\u0181\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u0182\\u0185\\u0007)\\u0002\\u0002\\u0183\\u0186\",\n \"\\u0005k6\\u0002\\u0184\\u0186\\n\\u000b\\u0002\\u0002\\u0185\\u0183\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0185\\u0184\\u0003\\u0002\\u0002\\u0002\\u0186\\u0187\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0187\\u0188\\u0007)\\u0002\\u0002\\u0188`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0189\\u018a\\t\\f\\u0002\\u0002\\u018a\\u018b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018b\\u018c\\b1\\u0002\\u0002\\u018cb\\u0003\\u0002\\u0002\\u0002\\u018d\\u018e\",\n \"\\u0007=\\u0002\\u0002\\u018ed\\u0003\\u0002\\u0002\\u0002\\u018f\\u0191\\t\\r\\u0002\",\n \"\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0192\\u0190\\u0003\\u0002\\u0002\\u0002\\u0192\\u0193\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0193\\u0196\\u0003\\u0002\\u0002\\u0002\\u0194\\u0196\\u0005c2\\u0002\",\n \"\\u0195\\u0190\\u0003\\u0002\\u0002\\u0002\\u0195\\u0194\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196f\\u0003\\u0002\\u0002\\u0002\\u0197\\u0198\\t\\u000e\\u0002\\u0002\\u0198\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u0199\\u019a\\t\\u000f\\u0002\\u0002\\u019aj\\u0003\",\n \"\\u0002\\u0002\\u0002\\u019b\\u019c\\u0007^\\u0002\\u0002\\u019c\\u01a0\\t\\u0010\",\n \"\\u0002\\u0002\\u019d\\u01a0\\u0005o8\\u0002\\u019e\\u01a0\\u0005m7\\u0002\\u019f\",\n \"\\u019b\\u0003\\u0002\\u0002\\u0002\\u019f\\u019d\\u0003\\u0002\\u0002\\u0002\\u019f\",\n \"\\u019e\\u0003\\u0002\\u0002\\u0002\\u01a0l\\u0003\\u0002\\u0002\\u0002\\u01a1\",\n \"\\u01a2\\u0007^\\u0002\\u0002\\u01a2\\u01a3\\t\\u0011\\u0002\\u0002\\u01a3\\u01a4\",\n \"\\u0005i5\\u0002\\u01a4\\u01a5\\u0005i5\\u0002\\u01a5\\u01ad\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01a8\\u0005i5\\u0002\\u01a8\",\n \"\\u01a9\\u0005i5\\u0002\\u01a9\\u01ad\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01ab\",\n \"\\u0007^\\u0002\\u0002\\u01ab\\u01ad\\u0005i5\\u0002\\u01ac\\u01a1\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01ac\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01aa\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01adn\\u0003\\u0002\\u0002\\u0002\\u01ae\\u01af\\u0007^\\u0002\",\n \"\\u0002\\u01af\\u01b0\\u0007w\\u0002\\u0002\\u01b0\\u01b1\\u0005g4\\u0002\\u01b1\",\n \"\\u01b2\\u0005g4\\u0002\\u01b2\\u01b3\\u0005g4\\u0002\\u01b3\\u01b4\\u0005g4\\u0002\",\n \"\\u01b4p\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\\u00071\\u0002\\u0002\\u01b6\",\n \"\\u01b7\\u00071\\u0002\\u0002\\u01b7\\u01bb\\u0003\\u0002\\u0002\\u0002\\u01b8\",\n \"\\u01ba\\n\\r\\u0002\\u0002\\u01b9\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01ba\\u01bd\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bc\\u01bf\\u0003\\u0002\\u0002\\u0002\\u01bd\\u01bb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01be\\u01c0\\u0007\\u000f\\u0002\\u0002\\u01bf\\u01be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bf\\u01c0\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c1\\u01ce\\u0007\\f\\u0002\\u0002\\u01c2\\u01c3\",\n \"\\u00071\\u0002\\u0002\\u01c3\\u01c4\\u0007,\\u0002\\u0002\\u01c4\\u01c8\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c5\\u01c7\\u000b\\u0002\\u0002\\u0002\\u01c6\\u01c5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c9\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c8\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01ca\\u01c8\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\\u0007\",\n \",\\u0002\\u0002\\u01cc\\u01ce\\u00071\\u0002\\u0002\\u01cd\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01cd\\u01c2\\u0003\\u0002\\u0002\\u0002\\u01ce\\u01cf\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01cf\\u01d0\\b9\\u0003\\u0002\\u01d0r\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u0124\\u012e\\u0138\\u013e\\u0143\\u0149\\u014e\\u0150\\u0155\\u015b\",\n \"\\u0160\\u0166\\u016a\\u016e\\u0173\\u0179\\u0180\\u0185\\u0192\\u0195\\u019f\\u01ac\",\n \"\\u01bb\\u01bf\\u01c8\\u01cd\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'program'\", \"'real'\", \"'void'\", \n \"'boolean'\", \"'string'\", \"'integer'\", \n \"'character'\", \"'switch'\", \"'case'\", \"'otherwise'\", \n \"'const'\", \"'function'\", \"'return'\", \"'for'\", \n \"'break'\", \"'do'\", \"'while'\", \"'if'\", \n \"'else'\", \"'false'\", \"'true'\", \"'('\", \n \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \"','\", \n \"'='\", null, null, null, null, null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"start\",\n $read: \"read\",\n $write: \"write\",\n $numElements: \"numero_elementos\",\n $matrixLines: \"matriz_linhas\",\n $matrixColumns: \"matriz_colunas\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"e_real\",\n $isInt: \"e_inteiro\",\n $isBool: \"e_logico\",\n $castReal: \"como_real\",\n $castInt: \"como_inteiro\",\n $castBool: \"como_logico\",\n $castString: \"como_cadeia\",\n $sin: \"sen\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"raiz_quadrada\",\n $pow: \"pot\",\n $log: \"log\",\n $abs: \"modulo\",\n $negate: \"trocar_sinal\",\n $invert: \"inverter_valor\",\n $max: \"maximo\",\n $min: \"minimo\"\n}\n","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Matematica\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"IV\"\n}","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-31848uOXWlFdlHH2K/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01dc\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\",\n \"\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0130\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u0138\\n)\\f)\\u000e)\\u013b\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e+\\u0143\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\\n+\\r+\\u000e\",\n \"+\\u014e\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u0155\\n+\\u0003+\\u0006+\\u0158\",\n \"\\n+\\r+\\u000e+\\u0159\\u0005+\\u015c\\n+\\u0003,\\u0006,\\u015f\\n,\\r,\\u000e\",\n \",\\u0160\\u0003,\\u0003,\\u0006,\\u0165\\n,\\r,\\u000e,\\u0166\\u0003,\\u0006,\",\n \"\\u016a\\n,\\r,\\u000e,\\u016b\\u0003,\\u0003,\\u0007,\\u0170\\n,\\f,\\u000e,\\u0173\",\n \"\\u000b,\\u0003,\\u0005,\\u0176\\n,\\u0003-\\u0003-\\u0005-\\u017a\\n-\\u0003-\",\n \"\\u0006-\\u017d\\n-\\r-\\u000e-\\u017e\\u0003.\\u0003.\\u0007.\\u0183\\n.\\f.\\u000e\",\n \".\\u0186\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u018c\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0191\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u019c\\n3\\r3\\u000e3\\u019d\\u00033\\u00053\\u01a1\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01ab\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01b8\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c5\\n9\\f9\\u000e9\\u01c8\\u000b\",\n \"9\\u00039\\u00059\\u01cb\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01d2\",\n \"\\n9\\f9\\u000e9\\u01d5\\u000b9\\u00039\\u00039\\u00059\\u01d9\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01d3\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01f0\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005|\\u0003\\u0002\\u0002\\u0002\\u0007\\u0081\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0087\\u0003\\u0002\\u0002\\u0002\\u000b\\u008e\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0095\\u0003\\u0002\\u0002\\u0002\\u000f\\u009d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a7\\u0003\\u0002\\u0002\\u0002\\u0013\\u00af\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b4\\u0003\\u0002\\u0002\\u0002\\u0017\\u00be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c4\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d3\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d8\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dd\\u0003\\u0002\\u0002\\u0002#\\u00e2\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00eb\\u0003\\u0002\\u0002\\u0002\\'\\u00ee\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00f4\\u0003\\u0002\\u0002\\u0002+\\u00fa\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u0105\\u0003\\u0002\\u0002\\u0002/\\u0109\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u010b\\u0003\\u0002\\u0002\\u00023\\u010e\\u0003\\u0002\\u0002\\u00025\\u0110\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0112\\u0003\\u0002\\u0002\\u00029\\u0114\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u0116\\u0003\\u0002\\u0002\\u0002=\\u0118\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u011a\\u0003\\u0002\\u0002\\u0002A\\u011c\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u011e\\u0003\\u0002\\u0002\\u0002E\\u0120\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0122\\u0003\\u0002\\u0002\\u0002I\\u0124\\u0003\\u0002\\u0002\\u0002K\\u012f\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0131\\u0003\\u0002\\u0002\\u0002O\\u0133\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u0135\\u0003\\u0002\\u0002\\u0002S\\u013c\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u015b\\u0003\\u0002\\u0002\\u0002W\\u0175\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u0177\\u0003\\u0002\\u0002\\u0002[\\u0180\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u018b\\u0003\\u0002\\u0002\\u0002_\\u018d\\u0003\\u0002\\u0002\\u0002a\\u0194\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u0198\\u0003\\u0002\\u0002\\u0002e\\u01a0\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u01a2\\u0003\\u0002\\u0002\\u0002i\\u01a4\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u01aa\\u0003\\u0002\\u0002\\u0002m\\u01b7\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01b9\\u0003\\u0002\\u0002\\u0002q\\u01d8\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z{\\u0007c\\u0002\\u0002{\\u0004\\u0003\\u0002\\u0002\\u0002|}\\u0007t\",\n \"\\u0002\\u0002}~\\u0007g\\u0002\\u0002~\\u007f\\u0007c\\u0002\\u0002\\u007f\\u0080\",\n \"\\u0007n\\u0002\\u0002\\u0080\\u0006\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007x\\u0002\\u0002\\u0082\\u0083\\u0007c\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"|\\u0002\\u0002\\u0084\\u0085\\u0007k\\u0002\\u0002\\u0085\\u0086\\u0007q\\u0002\",\n \"\\u0002\\u0086\\b\\u0003\\u0002\\u0002\\u0002\\u0087\\u0088\\u0007n\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007q\\u0002\\u0002\\u0089\\u008a\\u0007i\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007k\\u0002\\u0002\\u008b\\u008c\\u0007e\\u0002\\u0002\\u008c\\u008d\",\n \"\\u0007q\\u0002\\u0002\\u008d\\n\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"e\\u0002\\u0002\\u008f\\u0090\\u0007c\\u0002\\u0002\\u0090\\u0091\\u0007f\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007g\\u0002\\u0002\\u0092\\u0093\\u0007k\\u0002\\u0002\",\n \"\\u0093\\u0094\\u0007c\\u0002\\u0002\\u0094\\f\\u0003\\u0002\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007k\\u0002\\u0002\\u0096\\u0097\\u0007p\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007v\\u0002\\u0002\\u0098\\u0099\\u0007g\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"k\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u009c\\u0007q\\u0002\",\n \"\\u0002\\u009c\\u000e\\u0003\\u0002\\u0002\\u0002\\u009d\\u009e\\u0007e\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u00a6\\u0007g\\u0002\\u0002\\u00a6\\u0010\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00a7\\u00a8\\u0007g\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"u\\u0002\\u0002\\u00a9\\u00aa\\u0007e\\u0002\\u0002\\u00aa\\u00ab\\u0007q\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007n\\u0002\\u0002\\u00ac\\u00ad\\u0007j\\u0002\\u0002\",\n \"\\u00ad\\u00ae\\u0007c\\u0002\\u0002\\u00ae\\u0012\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007c\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007u\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007e\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007q\\u0002\\u0002\\u00b6\\u00b7\\u0007p\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"v\\u0002\\u0002\\u00b8\\u00b9\\u0007t\\u0002\\u0002\\u00b9\\u00ba\\u0007c\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007t\\u0002\\u0002\\u00bb\\u00bc\\u0007k\\u0002\\u0002\",\n \"\\u00bc\\u00bd\\u0007q\\u0002\\u0002\\u00bd\\u0016\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007e\\u0002\\u0002\\u00bf\\u00c0\\u0007q\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007p\\u0002\\u0002\\u00c1\\u00c2\\u0007u\\u0002\\u0002\\u00c2\\u00c3\",\n \"\\u0007v\\u0002\\u0002\\u00c3\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007h\\u0002\\u0002\\u00c5\\u00c6\\u0007w\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"p\\u0002\\u0002\\u00c7\\u00c8\\u0007e\\u0002\\u0002\\u00c8\\u00c9\\u0007c\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007q\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007q\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u00d2\",\n \"\\u0007g\\u0002\\u0002\\u00d2\\u001c\\u0003\\u0002\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007r\\u0002\\u0002\\u00d4\\u00d5\\u0007c\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"t\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d8\\u00d9\\u0007r\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007t\\u0002\\u0002\\u00db\\u00dc\\u0007g\\u0002\\u0002\",\n \"\\u00dc \\u0003\\u0002\\u0002\\u0002\\u00dd\\u00de\\u0007h\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007c\\u0002\\u0002\\u00df\\u00e0\\u0007e\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007c\\u0002\\u0002\\u00e1\\\"\\u0003\\u0002\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"g\\u0002\\u0002\\u00e3\\u00e4\\u0007p\\u0002\\u0002\\u00e4\\u00e5\\u0007s\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007w\\u0002\\u0002\\u00e6\\u00e7\\u0007c\\u0002\\u0002\",\n \"\\u00e7\\u00e8\\u0007p\\u0002\\u0002\\u00e8\\u00e9\\u0007v\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007q\\u0002\\u0002\\u00ea$\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007u\\u0002\\u0002\\u00ec\\u00ed\\u0007g\\u0002\\u0002\\u00ed&\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ee\\u00ef\\u0007u\\u0002\\u0002\\u00ef\\u00f0\\u0007g\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007p\\u0002\\u0002\\u00f1\\u00f2\\u0007c\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007q\\u0002\\u0002\\u00f3(\\u0003\\u0002\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007h\\u0002\\u0002\\u00f5\\u00f6\\u0007c\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007n\\u0002\\u0002\\u00f7\\u00f8\\u0007u\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"q\\u0002\\u0002\\u00f9*\\u0003\\u0002\\u0002\\u0002\\u00fa\\u00fb\\u0007x\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007g\\u0002\\u0002\\u00fc\\u00fd\\u0007t\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007f\\u0002\\u0002\\u00fe\\u00ff\\u0007c\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007f\\u0002\\u0002\\u0100\\u0101\\u0007g\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007k\\u0002\\u0002\\u0102\\u0103\\u0007t\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"q\\u0002\\u0002\\u0104,\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007p\\u0002\",\n \"\\u0002\\u0106\\u0107\\u0007c\\u0002\\u0002\\u0107\\u0108\\u0007q\\u0002\\u0002\",\n \"\\u0108.\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007G\\u0002\\u0002\\u010a\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007Q\\u0002\\u0002\\u010c\\u010d\",\n \"\\u0007W\\u0002\\u0002\\u010d2\\u0003\\u0002\\u0002\\u0002\\u010e\\u010f\\u0007\",\n \"*\\u0002\\u0002\\u010f4\\u0003\\u0002\\u0002\\u0002\\u0110\\u0111\\u0007+\\u0002\",\n \"\\u0002\\u01116\\u0003\\u0002\\u0002\\u0002\\u0112\\u0113\\u0007]\\u0002\\u0002\",\n \"\\u01138\\u0003\\u0002\\u0002\\u0002\\u0114\\u0115\\u0007_\\u0002\\u0002\\u0115\",\n \":\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007}\\u0002\\u0002\\u0117<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007\\u007f\\u0002\\u0002\\u0119>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011a\\u011b\\u0007.\\u0002\\u0002\\u011b@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011c\\u011d\\u0007?\\u0002\\u0002\\u011dB\\u0003\\u0002\\u0002\",\n \"\\u0002\\u011e\\u011f\\t\\u0002\\u0002\\u0002\\u011fD\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0120\\u0121\\t\\u0003\\u0002\\u0002\\u0121F\\u0003\\u0002\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0005/\\u0018\\u0002\\u0123H\\u0003\\u0002\\u0002\\u0002\\u0124\\u0125\",\n \"\\u00051\\u0019\\u0002\\u0125J\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\\u0007\",\n \"@\\u0002\\u0002\\u0127\\u0130\\u0007?\\u0002\\u0002\\u0128\\u0129\\u0007?\\u0002\",\n \"\\u0002\\u0129\\u0130\\u0007?\\u0002\\u0002\\u012a\\u012b\\u0007>\\u0002\\u0002\",\n \"\\u012b\\u0130\\u0007?\\u0002\\u0002\\u012c\\u0130\\t\\u0004\\u0002\\u0002\\u012d\",\n \"\\u012e\\u0007#\\u0002\\u0002\\u012e\\u0130\\u0007?\\u0002\\u0002\\u012f\\u0126\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u0128\\u0003\\u0002\\u0002\\u0002\\u012f\\u012a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u012c\\u0003\\u0002\\u0002\\u0002\\u012f\\u012d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0130L\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\",\n \"\\u0007<\\u0002\\u0002\\u0132N\\u0003\\u0002\\u0002\\u0002\\u0133\\u0134\\u0005\",\n \"-\\u0017\\u0002\\u0134P\\u0003\\u0002\\u0002\\u0002\\u0135\\u0139\\t\\u0005\\u0002\",\n \"\\u0002\\u0136\\u0138\\t\\u0006\\u0002\\u0002\\u0137\\u0136\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0138\\u013b\\u0003\\u0002\\u0002\\u0002\\u0139\\u0137\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0139\\u013a\\u0003\\u0002\\u0002\\u0002\\u013aR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013b\\u0139\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u0005Q)\\u0002\",\n \"\\u013d\\u013e\\u00070\\u0002\\u0002\\u013e\\u013f\\u0005Q)\\u0002\\u013fT\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0140\\u0142\\t\\u0007\\u0002\\u0002\\u0141\\u0140\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\\u0143\\u0141\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\\u0144\\u015c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\\u0146\\u014a\\u0007\",\n \"z\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\\u014a\\u0007Z\\u0002\",\n \"\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\\u0147\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\\u014d\\u0005g4\\u0002\",\n \"\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014f\\u015c\\u0003\\u0002\\u0002\\u0002\\u0150\\u0151\\u00072\\u0002\\u0002\",\n \"\\u0151\\u0155\\u0007d\\u0002\\u0002\\u0152\\u0153\\u00072\\u0002\\u0002\\u0153\",\n \"\\u0155\\u0007D\\u0002\\u0002\\u0154\\u0150\\u0003\\u0002\\u0002\\u0002\\u0154\",\n \"\\u0152\\u0003\\u0002\\u0002\\u0002\\u0155\\u0157\\u0003\\u0002\\u0002\\u0002\\u0156\",\n \"\\u0158\\t\\b\\u0002\\u0002\\u0157\\u0156\\u0003\\u0002\\u0002\\u0002\\u0158\\u0159\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0159\\u0157\\u0003\\u0002\\u0002\\u0002\\u0159\\u015a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015a\\u015c\\u0003\\u0002\\u0002\\u0002\\u015b\\u0141\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015b\\u0149\\u0003\\u0002\\u0002\\u0002\\u015b\\u0154\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015cV\\u0003\\u0002\\u0002\\u0002\\u015d\\u015f\",\n \"\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\\u0002\\u0002\\u0002\\u0160\\u0161\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\\u0002\\u0002\\u0002\\u0162\\u0164\",\n \"\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\\u0002\\u0002\\u0164\\u0163\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0165\\u0166\\u0003\\u0002\\u0002\\u0002\\u0166\\u0164\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\\u0002\\u0002\\u0167\\u0176\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0168\\u016a\\t\\u0007\\u0002\\u0002\\u0169\\u0168\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016a\\u016b\\u0003\\u0002\\u0002\\u0002\\u016b\\u0169\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016b\\u016c\\u0003\\u0002\\u0002\\u0002\\u016c\\u016d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016d\\u0171\\u00070\\u0002\\u0002\\u016e\\u0170\\t\\u0007\",\n \"\\u0002\\u0002\\u016f\\u016e\\u0003\\u0002\\u0002\\u0002\\u0170\\u0173\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0171\\u016f\\u0003\\u0002\\u0002\\u0002\\u0171\\u0172\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0172\\u0174\\u0003\\u0002\\u0002\\u0002\\u0173\\u0171\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0174\\u0176\\u0005Y-\\u0002\\u0175\\u015e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0175\\u0169\\u0003\\u0002\\u0002\\u0002\\u0176X\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0177\\u0179\\t\\t\\u0002\\u0002\\u0178\\u017a\\t\\u0002\\u0002\\u0002\\u0179\",\n \"\\u0178\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\\u0002\\u0002\\u0002\\u017a\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u017d\\t\\u0007\\u0002\\u0002\\u017c\",\n \"\\u017b\\u0003\\u0002\\u0002\\u0002\\u017d\\u017e\\u0003\\u0002\\u0002\\u0002\\u017e\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017e\\u017f\\u0003\\u0002\\u0002\\u0002\\u017f\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0180\\u0184\\u0007$\\u0002\\u0002\\u0181\\u0183\",\n \"\\u0005]/\\u0002\\u0182\\u0181\\u0003\\u0002\\u0002\\u0002\\u0183\\u0186\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0184\\u0182\\u0003\\u0002\\u0002\\u0002\\u0184\\u0185\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0185\\u0187\\u0003\\u0002\\u0002\\u0002\\u0186\\u0184\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0187\\u0188\\u0007$\\u0002\\u0002\\u0188\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0189\\u018c\\n\\n\\u0002\\u0002\\u018a\\u018c\\u0005k6\\u0002\\u018b\",\n \"\\u0189\\u0003\\u0002\\u0002\\u0002\\u018b\\u018a\\u0003\\u0002\\u0002\\u0002\\u018c\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u018d\\u0190\\u0007)\\u0002\\u0002\\u018e\\u0191\",\n \"\\u0005k6\\u0002\\u018f\\u0191\\n\\u000b\\u0002\\u0002\\u0190\\u018e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0192\\u0193\\u0007)\\u0002\\u0002\\u0193`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0194\\u0195\\t\\f\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196\\u0197\\b1\\u0002\\u0002\\u0197b\\u0003\\u0002\\u0002\\u0002\\u0198\\u0199\",\n \"\\u0007=\\u0002\\u0002\\u0199d\\u0003\\u0002\\u0002\\u0002\\u019a\\u019c\\t\\r\\u0002\",\n \"\\u0002\\u019b\\u019a\\u0003\\u0002\\u0002\\u0002\\u019c\\u019d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019d\\u019b\\u0003\\u0002\\u0002\\u0002\\u019d\\u019e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019e\\u01a1\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a1\\u0005c2\\u0002\",\n \"\\u01a0\\u019b\\u0003\\u0002\\u0002\\u0002\\u01a0\\u019f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a1f\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a3\\t\\u000e\\u0002\\u0002\\u01a3\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\t\\u000f\\u0002\\u0002\\u01a5j\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01ab\\t\\u0010\",\n \"\\u0002\\u0002\\u01a8\\u01ab\\u0005o8\\u0002\\u01a9\\u01ab\\u0005m7\\u0002\\u01aa\",\n \"\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01a8\\u0003\\u0002\\u0002\\u0002\\u01aa\",\n \"\\u01a9\\u0003\\u0002\\u0002\\u0002\\u01abl\\u0003\\u0002\\u0002\\u0002\\u01ac\",\n \"\\u01ad\\u0007^\\u0002\\u0002\\u01ad\\u01ae\\t\\u0011\\u0002\\u0002\\u01ae\\u01af\",\n \"\\u0005i5\\u0002\\u01af\\u01b0\\u0005i5\\u0002\\u01b0\\u01b8\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01b1\\u01b2\\u0007^\\u0002\\u0002\\u01b2\\u01b3\\u0005i5\\u0002\\u01b3\",\n \"\\u01b4\\u0005i5\\u0002\\u01b4\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\",\n \"\\u0007^\\u0002\\u0002\\u01b6\\u01b8\\u0005i5\\u0002\\u01b7\\u01ac\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b7\\u01b1\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b8n\\u0003\\u0002\\u0002\\u0002\\u01b9\\u01ba\\u0007^\\u0002\",\n \"\\u0002\\u01ba\\u01bb\\u0007w\\u0002\\u0002\\u01bb\\u01bc\\u0005g4\\u0002\\u01bc\",\n \"\\u01bd\\u0005g4\\u0002\\u01bd\\u01be\\u0005g4\\u0002\\u01be\\u01bf\\u0005g4\\u0002\",\n \"\\u01bfp\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\\u00071\\u0002\\u0002\\u01c1\",\n \"\\u01c2\\u00071\\u0002\\u0002\\u01c2\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c3\",\n \"\\u01c5\\n\\r\\u0002\\u0002\\u01c4\\u01c3\\u0003\\u0002\\u0002\\u0002\\u01c5\\u01c8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c6\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0007\\u000f\\u0002\\u0002\\u01ca\\u01c9\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01d9\\u0007\\f\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u00071\\u0002\\u0002\\u01ce\\u01cf\\u0007,\\u0002\\u0002\\u01cf\\u01d3\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d0\\u01d2\\u000b\\u0002\\u0002\\u0002\\u01d1\\u01d0\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d2\\u01d5\\u0003\\u0002\\u0002\\u0002\\u01d3\\u01d4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d3\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d4\\u01d6\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d5\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d7\\u0007\",\n \",\\u0002\\u0002\\u01d7\\u01d9\\u00071\\u0002\\u0002\\u01d8\\u01c0\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01d8\\u01cd\\u0003\\u0002\\u0002\\u0002\\u01d9\\u01da\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01da\\u01db\\b9\\u0003\\u0002\\u01dbr\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u012f\\u0139\\u0143\\u0149\\u014e\\u0154\\u0159\\u015b\\u0160\\u0166\",\n \"\\u016b\\u0171\\u0175\\u0179\\u017e\\u0184\\u018b\\u0190\\u019d\\u01a0\\u01aa\\u01b7\",\n \"\\u01c6\\u01ca\\u01d3\\u01d8\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'retorne'\", \"'para'\", \n \"'pare'\", \"'faca'\", \"'enquanto'\", \"'se'\", \n \"'senao'\", \"'falso'\", \"'verdadeiro'\", \n \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \n \"','\", \"'='\", null, null, null, null, \n null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"numero_elementos\",\n $matrixLines: \"matriz_linhas\",\n $matrixColumns: \"matriz_colunas\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"e_real\",\n $isInt: \"e_inteiro\",\n $isBool: \"e_logico\",\n $castReal: \"como_real\",\n $castInt: \"como_inteiro\",\n $castBool: \"como_logico\",\n $castString: \"como_cadeia\",\n $sin: \"sen\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"raiz_quadrada\",\n $pow: \"pot\",\n $log: \"log\",\n $abs: \"modulo\",\n $negate: \"trocar_sinal\",\n $invert: \"inverter_valor\",\n $max: \"maximo\",\n $min: \"minimo\"\n}\n","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Matematica\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"IV\"\n}","import * as PT from './pt/ivprog.g4';\nimport PTFuncs from './pt/langFunctions';\nimport PTLibs from './pt/langLibs';\nimport * as EN from './en/ivprog.g4';\nimport ENFuncs from './en/langFunctions';\nimport ENLibs from './en/langLibs';\nimport * as ES from './es/ivprog.g4';\nimport ESFuncs from './es/langFunctions';\nimport ESLibs from './es/langLibs';\n\nexports.pt = {lexer: PT.ivprog, langFuncs: PTFuncs, langLibs: PTLibs};\nexports.en = {lexer: EN.ivprog, langFuncs: ENFuncs, langLibs: ENLibs};\nexports.es = {lexer: ES.ivprog, langFuncs: ESFuncs, langLibs: ESLibs};\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-31848WpK7uo7lp4Ky/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u00020\\u01e0\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0004:\\t:\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\",\n \"\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\",\n \"\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\",\n \"\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\",\n \"\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\",\n \"\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\",\n \"\\u0003\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\",\n \"\\f\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0132\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u013a\\n)\\f)\\u000e)\\u013d\\u000b)\\u0003\",\n \"*\\u0003*\\u0003+\\u0003+\\u0003+\\u0003+\\u0003,\\u0006,\\u0146\\n,\\r,\\u000e\",\n \",\\u0147\\u0003,\\u0003,\\u0003,\\u0003,\\u0005,\\u014e\\n,\\u0003,\\u0006,\\u0151\",\n \"\\n,\\r,\\u000e,\\u0152\\u0003,\\u0003,\\u0003,\\u0003,\\u0005,\\u0159\\n,\\u0003\",\n \",\\u0006,\\u015c\\n,\\r,\\u000e,\\u015d\\u0005,\\u0160\\n,\\u0003-\\u0006-\\u0163\",\n \"\\n-\\r-\\u000e-\\u0164\\u0003-\\u0003-\\u0006-\\u0169\\n-\\r-\\u000e-\\u016a\\u0003\",\n \"-\\u0006-\\u016e\\n-\\r-\\u000e-\\u016f\\u0003-\\u0003-\\u0007-\\u0174\\n-\\f-\\u000e\",\n \"-\\u0177\\u000b-\\u0003-\\u0005-\\u017a\\n-\\u0003.\\u0003.\\u0005.\\u017e\\n.\",\n \"\\u0003.\\u0006.\\u0181\\n.\\r.\\u000e.\\u0182\\u0003/\\u0003/\\u0007/\\u0187\\n\",\n \"/\\f/\\u000e/\\u018a\\u000b/\\u0003/\\u0003/\\u00030\\u00030\\u00050\\u0190\\n\",\n \"0\\u00031\\u00031\\u00031\\u00051\\u0195\\n1\\u00031\\u00031\\u00032\\u00032\\u0003\",\n \"2\\u00032\\u00033\\u00033\\u00034\\u00064\\u01a0\\n4\\r4\\u000e4\\u01a1\\u0003\",\n \"4\\u00054\\u01a5\\n4\\u00035\\u00035\\u00036\\u00036\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00057\\u01af\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00038\\u00038\\u00038\\u00058\\u01bc\\n8\\u00039\\u00039\\u00039\\u00039\\u0003\",\n \"9\\u00039\\u00039\\u0003:\\u0003:\\u0003:\\u0003:\\u0007:\\u01c9\\n:\\f:\\u000e\",\n \":\\u01cc\\u000b:\\u0003:\\u0005:\\u01cf\\n:\\u0003:\\u0003:\\u0003:\\u0003:\\u0003\",\n \":\\u0007:\\u01d6\\n:\\f:\\u000e:\\u01d9\\u000b:\\u0003:\\u0003:\\u0005:\\u01dd\",\n \"\\n:\\u0003:\\u0003:\\u0003\\u01d7\\u0002;\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\",\n \"\\t\\u0006\\u000b\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\",\n \"\\u0019\\u000e\\u001b\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\",\n \"\\'\\u0015)\\u0016+\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b\",\n \";\\u001c=\\u001d?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y+[\\u0002],_\\u0002\",\n \"a-c.e\\u0002g/i\\u0002k\\u0002m\\u0002o\\u0002q\\u0002s0\\u0003\\u0002\\u0012\",\n \"\\u0004\\u0002--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\\",\n \"aac|\\u0006\\u00022;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GG\",\n \"gg\\u0006\\u0002\\f\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\",\n \"\\u0002\\u000b\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHc\",\n \"h\\u0003\\u000229\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01f4\\u0002\",\n \"\\u0003\\u0003\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"\\u0007\\u0003\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"\\u000b\\u0003\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"\\u000f\\u0003\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"\\u0013\\u0003\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"\\u0017\\u0003\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"\\u001b\\u0003\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"\\u001f\\u0003\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"#\\u0003\\u0002\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00027\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002;\\u0003\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"?\\u0003\\u0002\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002Q\\u0003\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"U\\u0003\\u0002\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002Y\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002]\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002c\\u0003\\u0002\\u0002\\u0002\\u0002g\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002s\\u0003\\u0002\\u0002\\u0002\\u0003u\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0005~\\u0003\\u0002\\u0002\\u0002\\u0007\\u0083\\u0003\\u0002\\u0002\\u0002\",\n \"\\t\\u0089\\u0003\\u0002\\u0002\\u0002\\u000b\\u0090\\u0003\\u0002\\u0002\\u0002\",\n \"\\r\\u0097\\u0003\\u0002\\u0002\\u0002\\u000f\\u009f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0011\\u00a9\\u0003\\u0002\\u0002\\u0002\\u0013\\u00b1\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0015\\u00b6\\u0003\\u0002\\u0002\\u0002\\u0017\\u00c0\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0019\\u00c6\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cd\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u00d5\\u0003\\u0002\\u0002\\u0002\\u001f\\u00da\\u0003\\u0002\\u0002\\u0002\",\n \"!\\u00df\\u0003\\u0002\\u0002\\u0002#\\u00e4\\u0003\\u0002\\u0002\\u0002%\\u00ed\",\n \"\\u0003\\u0002\\u0002\\u0002\\'\\u00f0\\u0003\\u0002\\u0002\\u0002)\\u00f6\\u0003\",\n \"\\u0002\\u0002\\u0002+\\u00fc\\u0003\\u0002\\u0002\\u0002-\\u0107\\u0003\\u0002\",\n \"\\u0002\\u0002/\\u010b\\u0003\\u0002\\u0002\\u00021\\u010d\\u0003\\u0002\\u0002\",\n \"\\u00023\\u0110\\u0003\\u0002\\u0002\\u00025\\u0112\\u0003\\u0002\\u0002\\u0002\",\n \"7\\u0114\\u0003\\u0002\\u0002\\u00029\\u0116\\u0003\\u0002\\u0002\\u0002;\\u0118\",\n \"\\u0003\\u0002\\u0002\\u0002=\\u011a\\u0003\\u0002\\u0002\\u0002?\\u011c\\u0003\",\n \"\\u0002\\u0002\\u0002A\\u011e\\u0003\\u0002\\u0002\\u0002C\\u0120\\u0003\\u0002\",\n \"\\u0002\\u0002E\\u0122\\u0003\\u0002\\u0002\\u0002G\\u0124\\u0003\\u0002\\u0002\",\n \"\\u0002I\\u0126\\u0003\\u0002\\u0002\\u0002K\\u0131\\u0003\\u0002\\u0002\\u0002\",\n \"M\\u0133\\u0003\\u0002\\u0002\\u0002O\\u0135\\u0003\\u0002\\u0002\\u0002Q\\u0137\",\n \"\\u0003\\u0002\\u0002\\u0002S\\u013e\\u0003\\u0002\\u0002\\u0002U\\u0140\\u0003\",\n \"\\u0002\\u0002\\u0002W\\u015f\\u0003\\u0002\\u0002\\u0002Y\\u0179\\u0003\\u0002\",\n \"\\u0002\\u0002[\\u017b\\u0003\\u0002\\u0002\\u0002]\\u0184\\u0003\\u0002\\u0002\",\n \"\\u0002_\\u018f\\u0003\\u0002\\u0002\\u0002a\\u0191\\u0003\\u0002\\u0002\\u0002\",\n \"c\\u0198\\u0003\\u0002\\u0002\\u0002e\\u019c\\u0003\\u0002\\u0002\\u0002g\\u01a4\",\n \"\\u0003\\u0002\\u0002\\u0002i\\u01a6\\u0003\\u0002\\u0002\\u0002k\\u01a8\\u0003\",\n \"\\u0002\\u0002\\u0002m\\u01ae\\u0003\\u0002\\u0002\\u0002o\\u01bb\\u0003\\u0002\",\n \"\\u0002\\u0002q\\u01bd\\u0003\\u0002\\u0002\\u0002s\\u01dc\\u0003\\u0002\\u0002\",\n \"\\u0002uv\\u0007r\\u0002\\u0002vw\\u0007t\\u0002\\u0002wx\\u0007q\\u0002\\u0002\",\n \"xy\\u0007i\\u0002\\u0002yz\\u0007t\\u0002\\u0002z{\\u0007c\\u0002\\u0002{|\\u0007\",\n \"o\\u0002\\u0002|}\\u0007c\\u0002\\u0002}\\u0004\\u0003\\u0002\\u0002\\u0002~\\u007f\",\n \"\\u0007t\\u0002\\u0002\\u007f\\u0080\\u0007g\\u0002\\u0002\\u0080\\u0081\\u0007\",\n \"c\\u0002\\u0002\\u0081\\u0082\\u0007n\\u0002\\u0002\\u0082\\u0006\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0083\\u0084\\u0007x\\u0002\\u0002\\u0084\\u0085\\u0007c\\u0002\",\n \"\\u0002\\u0085\\u0086\\u0007|\\u0002\\u0002\\u0086\\u0087\\u0007k\\u0002\\u0002\",\n \"\\u0087\\u0088\\u0007q\\u0002\\u0002\\u0088\\b\\u0003\\u0002\\u0002\\u0002\\u0089\",\n \"\\u008a\\u0007n\\u0002\\u0002\\u008a\\u008b\\u0007q\\u0002\\u0002\\u008b\\u008c\",\n \"\\u0007i\\u0002\\u0002\\u008c\\u008d\\u0007k\\u0002\\u0002\\u008d\\u008e\\u0007\",\n \"e\\u0002\\u0002\\u008e\\u008f\\u0007q\\u0002\\u0002\\u008f\\n\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0090\\u0091\\u0007e\\u0002\\u0002\\u0091\\u0092\\u0007c\\u0002\\u0002\",\n \"\\u0092\\u0093\\u0007f\\u0002\\u0002\\u0093\\u0094\\u0007g\\u0002\\u0002\\u0094\",\n \"\\u0095\\u0007k\\u0002\\u0002\\u0095\\u0096\\u0007c\\u0002\\u0002\\u0096\\f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0097\\u0098\\u0007k\\u0002\\u0002\\u0098\\u0099\\u0007\",\n \"p\\u0002\\u0002\\u0099\\u009a\\u0007v\\u0002\\u0002\\u009a\\u009b\\u0007g\\u0002\",\n \"\\u0002\\u009b\\u009c\\u0007k\\u0002\\u0002\\u009c\\u009d\\u0007t\\u0002\\u0002\",\n \"\\u009d\\u009e\\u0007q\\u0002\\u0002\\u009e\\u000e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u009f\\u00a0\\u0007e\\u0002\\u0002\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\",\n \"\\u00a2\\u0007t\\u0002\\u0002\\u00a2\\u00a3\\u0007c\\u0002\\u0002\\u00a3\\u00a4\",\n \"\\u0007e\\u0002\\u0002\\u00a4\\u00a5\\u0007v\\u0002\\u0002\\u00a5\\u00a6\\u0007\",\n \"g\\u0002\\u0002\\u00a6\\u00a7\\u0007t\\u0002\\u0002\\u00a7\\u00a8\\u0007g\\u0002\",\n \"\\u0002\\u00a8\\u0010\\u0003\\u0002\\u0002\\u0002\\u00a9\\u00aa\\u0007g\\u0002\",\n \"\\u0002\\u00aa\\u00ab\\u0007u\\u0002\\u0002\\u00ab\\u00ac\\u0007e\\u0002\\u0002\",\n \"\\u00ac\\u00ad\\u0007q\\u0002\\u0002\\u00ad\\u00ae\\u0007n\\u0002\\u0002\\u00ae\",\n \"\\u00af\\u0007j\\u0002\\u0002\\u00af\\u00b0\\u0007c\\u0002\\u0002\\u00b0\\u0012\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b1\\u00b2\\u0007e\\u0002\\u0002\\u00b2\\u00b3\",\n \"\\u0007c\\u0002\\u0002\\u00b3\\u00b4\\u0007u\\u0002\\u0002\\u00b4\\u00b5\\u0007\",\n \"q\\u0002\\u0002\\u00b5\\u0014\\u0003\\u0002\\u0002\\u0002\\u00b6\\u00b7\\u0007\",\n \"e\\u0002\\u0002\\u00b7\\u00b8\\u0007q\\u0002\\u0002\\u00b8\\u00b9\\u0007p\\u0002\",\n \"\\u0002\\u00b9\\u00ba\\u0007v\\u0002\\u0002\\u00ba\\u00bb\\u0007t\\u0002\\u0002\",\n \"\\u00bb\\u00bc\\u0007c\\u0002\\u0002\\u00bc\\u00bd\\u0007t\\u0002\\u0002\\u00bd\",\n \"\\u00be\\u0007k\\u0002\\u0002\\u00be\\u00bf\\u0007q\\u0002\\u0002\\u00bf\\u0016\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00c0\\u00c1\\u0007e\\u0002\\u0002\\u00c1\\u00c2\",\n \"\\u0007q\\u0002\\u0002\\u00c2\\u00c3\\u0007p\\u0002\\u0002\\u00c3\\u00c4\\u0007\",\n \"u\\u0002\\u0002\\u00c4\\u00c5\\u0007v\\u0002\\u0002\\u00c5\\u0018\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00c6\\u00c7\\u0007h\\u0002\\u0002\\u00c7\\u00c8\\u0007w\\u0002\",\n \"\\u0002\\u00c8\\u00c9\\u0007p\\u0002\\u0002\\u00c9\\u00ca\\u0007e\\u0002\\u0002\",\n \"\\u00ca\\u00cb\\u0007c\\u0002\\u0002\\u00cb\\u00cc\\u0007q\\u0002\\u0002\\u00cc\",\n \"\\u001a\\u0003\\u0002\\u0002\\u0002\\u00cd\\u00ce\\u0007t\\u0002\\u0002\\u00ce\",\n \"\\u00cf\\u0007g\\u0002\\u0002\\u00cf\\u00d0\\u0007v\\u0002\\u0002\\u00d0\\u00d1\",\n \"\\u0007q\\u0002\\u0002\\u00d1\\u00d2\\u0007t\\u0002\\u0002\\u00d2\\u00d3\\u0007\",\n \"p\\u0002\\u0002\\u00d3\\u00d4\\u0007g\\u0002\\u0002\\u00d4\\u001c\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d5\\u00d6\\u0007r\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\",\n \"\\u0002\\u00d7\\u00d8\\u0007t\\u0002\\u0002\\u00d8\\u00d9\\u0007c\\u0002\\u0002\",\n \"\\u00d9\\u001e\\u0003\\u0002\\u0002\\u0002\\u00da\\u00db\\u0007r\\u0002\\u0002\",\n \"\\u00db\\u00dc\\u0007c\\u0002\\u0002\\u00dc\\u00dd\\u0007t\\u0002\\u0002\\u00dd\",\n \"\\u00de\\u0007g\\u0002\\u0002\\u00de \\u0003\\u0002\\u0002\\u0002\\u00df\\u00e0\",\n \"\\u0007h\\u0002\\u0002\\u00e0\\u00e1\\u0007c\\u0002\\u0002\\u00e1\\u00e2\\u0007\",\n \"e\\u0002\\u0002\\u00e2\\u00e3\\u0007c\\u0002\\u0002\\u00e3\\\"\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00e4\\u00e5\\u0007g\\u0002\\u0002\\u00e5\\u00e6\\u0007p\\u0002\\u0002\",\n \"\\u00e6\\u00e7\\u0007s\\u0002\\u0002\\u00e7\\u00e8\\u0007w\\u0002\\u0002\\u00e8\",\n \"\\u00e9\\u0007c\\u0002\\u0002\\u00e9\\u00ea\\u0007p\\u0002\\u0002\\u00ea\\u00eb\",\n \"\\u0007v\\u0002\\u0002\\u00eb\\u00ec\\u0007q\\u0002\\u0002\\u00ec$\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ed\\u00ee\\u0007u\\u0002\\u0002\\u00ee\\u00ef\\u0007g\\u0002\",\n \"\\u0002\\u00ef&\\u0003\\u0002\\u0002\\u0002\\u00f0\\u00f1\\u0007u\\u0002\\u0002\",\n \"\\u00f1\\u00f2\\u0007g\\u0002\\u0002\\u00f2\\u00f3\\u0007p\\u0002\\u0002\\u00f3\",\n \"\\u00f4\\u0007c\\u0002\\u0002\\u00f4\\u00f5\\u0007q\\u0002\\u0002\\u00f5(\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00f6\\u00f7\\u0007h\\u0002\\u0002\\u00f7\\u00f8\\u0007\",\n \"c\\u0002\\u0002\\u00f8\\u00f9\\u0007n\\u0002\\u0002\\u00f9\\u00fa\\u0007u\\u0002\",\n \"\\u0002\\u00fa\\u00fb\\u0007q\\u0002\\u0002\\u00fb*\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00fc\\u00fd\\u0007x\\u0002\\u0002\\u00fd\\u00fe\\u0007g\\u0002\\u0002\\u00fe\",\n \"\\u00ff\\u0007t\\u0002\\u0002\\u00ff\\u0100\\u0007f\\u0002\\u0002\\u0100\\u0101\",\n \"\\u0007c\\u0002\\u0002\\u0101\\u0102\\u0007f\\u0002\\u0002\\u0102\\u0103\\u0007\",\n \"g\\u0002\\u0002\\u0103\\u0104\\u0007k\\u0002\\u0002\\u0104\\u0105\\u0007t\\u0002\",\n \"\\u0002\\u0105\\u0106\\u0007q\\u0002\\u0002\\u0106,\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0107\\u0108\\u0007p\\u0002\\u0002\\u0108\\u0109\\u0007c\\u0002\\u0002\\u0109\",\n \"\\u010a\\u0007q\\u0002\\u0002\\u010a.\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\",\n \"\\u0007G\\u0002\\u0002\\u010c0\\u0003\\u0002\\u0002\\u0002\\u010d\\u010e\\u0007\",\n \"Q\\u0002\\u0002\\u010e\\u010f\\u0007W\\u0002\\u0002\\u010f2\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0110\\u0111\\u0007*\\u0002\\u0002\\u01114\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0112\\u0113\\u0007+\\u0002\\u0002\\u01136\\u0003\\u0002\\u0002\\u0002\\u0114\",\n \"\\u0115\\u0007]\\u0002\\u0002\\u01158\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\",\n \"\\u0007_\\u0002\\u0002\\u0117:\\u0003\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007\",\n \"}\\u0002\\u0002\\u0119<\\u0003\\u0002\\u0002\\u0002\\u011a\\u011b\\u0007\\u007f\",\n \"\\u0002\\u0002\\u011b>\\u0003\\u0002\\u0002\\u0002\\u011c\\u011d\\u0007.\\u0002\",\n \"\\u0002\\u011d@\\u0003\\u0002\\u0002\\u0002\\u011e\\u011f\\u0007?\\u0002\\u0002\",\n \"\\u011fB\\u0003\\u0002\\u0002\\u0002\\u0120\\u0121\\t\\u0002\\u0002\\u0002\\u0121\",\n \"D\\u0003\\u0002\\u0002\\u0002\\u0122\\u0123\\t\\u0003\\u0002\\u0002\\u0123F\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0124\\u0125\\u0005/\\u0018\\u0002\\u0125H\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0126\\u0127\\u00051\\u0019\\u0002\\u0127J\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0128\\u0129\\u0007@\\u0002\\u0002\\u0129\\u0132\\u0007?\\u0002\\u0002\",\n \"\\u012a\\u012b\\u0007?\\u0002\\u0002\\u012b\\u0132\\u0007?\\u0002\\u0002\\u012c\",\n \"\\u012d\\u0007>\\u0002\\u0002\\u012d\\u0132\\u0007?\\u0002\\u0002\\u012e\\u0132\",\n \"\\t\\u0004\\u0002\\u0002\\u012f\\u0130\\u0007#\\u0002\\u0002\\u0130\\u0132\\u0007\",\n \"?\\u0002\\u0002\\u0131\\u0128\\u0003\\u0002\\u0002\\u0002\\u0131\\u012a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0131\\u012c\\u0003\\u0002\\u0002\\u0002\\u0131\\u012e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0131\\u012f\\u0003\\u0002\\u0002\\u0002\\u0132L\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0133\\u0134\\u0007<\\u0002\\u0002\\u0134N\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0135\\u0136\\u0005-\\u0017\\u0002\\u0136P\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0137\\u013b\\t\\u0005\\u0002\\u0002\\u0138\\u013a\\t\\u0006\\u0002\\u0002\",\n \"\\u0139\\u0138\\u0003\\u0002\\u0002\\u0002\\u013a\\u013d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u013b\\u0139\\u0003\\u0002\\u0002\\u0002\\u013b\\u013c\\u0003\\u0002\\u0002\\u0002\",\n \"\\u013cR\\u0003\\u0002\\u0002\\u0002\\u013d\\u013b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u013e\\u013f\\u0007&\\u0002\\u0002\\u013fT\\u0003\\u0002\\u0002\\u0002\\u0140\",\n \"\\u0141\\u0005Q)\\u0002\\u0141\\u0142\\u00070\\u0002\\u0002\\u0142\\u0143\\u0005\",\n \"Q)\\u0002\\u0143V\\u0003\\u0002\\u0002\\u0002\\u0144\\u0146\\t\\u0007\\u0002\\u0002\",\n \"\\u0145\\u0144\\u0003\\u0002\\u0002\\u0002\\u0146\\u0147\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0147\\u0145\\u0003\\u0002\\u0002\\u0002\\u0147\\u0148\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0148\\u0160\\u0003\\u0002\\u0002\\u0002\\u0149\\u014a\\u00072\\u0002\\u0002\",\n \"\\u014a\\u014e\\u0007z\\u0002\\u0002\\u014b\\u014c\\u00072\\u0002\\u0002\\u014c\",\n \"\\u014e\\u0007Z\\u0002\\u0002\\u014d\\u0149\\u0003\\u0002\\u0002\\u0002\\u014d\",\n \"\\u014b\\u0003\\u0002\\u0002\\u0002\\u014e\\u0150\\u0003\\u0002\\u0002\\u0002\\u014f\",\n \"\\u0151\\u0005i5\\u0002\\u0150\\u014f\\u0003\\u0002\\u0002\\u0002\\u0151\\u0152\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0152\\u0150\\u0003\\u0002\\u0002\\u0002\\u0152\\u0153\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0153\\u0160\\u0003\\u0002\\u0002\\u0002\\u0154\\u0155\",\n \"\\u00072\\u0002\\u0002\\u0155\\u0159\\u0007d\\u0002\\u0002\\u0156\\u0157\\u0007\",\n \"2\\u0002\\u0002\\u0157\\u0159\\u0007D\\u0002\\u0002\\u0158\\u0154\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0158\\u0156\\u0003\\u0002\\u0002\\u0002\\u0159\\u015b\\u0003\\u0002\",\n \"\\u0002\\u0002\\u015a\\u015c\\t\\b\\u0002\\u0002\\u015b\\u015a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015c\\u015d\\u0003\\u0002\\u0002\\u0002\\u015d\\u015b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015d\\u015e\\u0003\\u0002\\u0002\\u0002\\u015e\\u0160\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015f\\u0145\\u0003\\u0002\\u0002\\u0002\\u015f\\u014d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015f\\u0158\\u0003\\u0002\\u0002\\u0002\\u0160X\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0161\\u0163\\t\\u0007\\u0002\\u0002\\u0162\\u0161\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0163\\u0164\\u0003\\u0002\\u0002\\u0002\\u0164\\u0162\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0164\\u0165\\u0003\\u0002\\u0002\\u0002\\u0165\\u0166\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0166\\u0168\\u00070\\u0002\\u0002\\u0167\\u0169\\t\\u0007\\u0002\\u0002\",\n \"\\u0168\\u0167\\u0003\\u0002\\u0002\\u0002\\u0169\\u016a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u016a\\u0168\\u0003\\u0002\\u0002\\u0002\\u016a\\u016b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u016b\\u017a\\u0003\\u0002\\u0002\\u0002\\u016c\\u016e\\t\\u0007\\u0002\\u0002\",\n \"\\u016d\\u016c\\u0003\\u0002\\u0002\\u0002\\u016e\\u016f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u016f\\u016d\\u0003\\u0002\\u0002\\u0002\\u016f\\u0170\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0170\\u0171\\u0003\\u0002\\u0002\\u0002\\u0171\\u0175\\u00070\\u0002\\u0002\",\n \"\\u0172\\u0174\\t\\u0007\\u0002\\u0002\\u0173\\u0172\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0174\\u0177\\u0003\\u0002\\u0002\\u0002\\u0175\\u0173\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0175\\u0176\\u0003\\u0002\\u0002\\u0002\\u0176\\u0178\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0177\\u0175\\u0003\\u0002\\u0002\\u0002\\u0178\\u017a\\u0005[.\\u0002\\u0179\",\n \"\\u0162\\u0003\\u0002\\u0002\\u0002\\u0179\\u016d\\u0003\\u0002\\u0002\\u0002\\u017a\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u017b\\u017d\\t\\t\\u0002\\u0002\\u017c\\u017e\\t\",\n \"\\u0002\\u0002\\u0002\\u017d\\u017c\\u0003\\u0002\\u0002\\u0002\\u017d\\u017e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017e\\u0180\\u0003\\u0002\\u0002\\u0002\\u017f\\u0181\\t\",\n \"\\u0007\\u0002\\u0002\\u0180\\u017f\\u0003\\u0002\\u0002\\u0002\\u0181\\u0182\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0182\\u0180\\u0003\\u0002\\u0002\\u0002\\u0182\\u0183\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0183\\\\\\u0003\\u0002\\u0002\\u0002\\u0184\\u0188\\u0007\",\n \"$\\u0002\\u0002\\u0185\\u0187\\u0005_0\\u0002\\u0186\\u0185\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0187\\u018a\\u0003\\u0002\\u0002\\u0002\\u0188\\u0186\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0188\\u0189\\u0003\\u0002\\u0002\\u0002\\u0189\\u018b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u018a\\u0188\\u0003\\u0002\\u0002\\u0002\\u018b\\u018c\\u0007$\\u0002\",\n \"\\u0002\\u018c^\\u0003\\u0002\\u0002\\u0002\\u018d\\u0190\\n\\n\\u0002\\u0002\\u018e\",\n \"\\u0190\\u0005m7\\u0002\\u018f\\u018d\\u0003\\u0002\\u0002\\u0002\\u018f\\u018e\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0190`\\u0003\\u0002\\u0002\\u0002\\u0191\\u0194\",\n \"\\u0007)\\u0002\\u0002\\u0192\\u0195\\u0005m7\\u0002\\u0193\\u0195\\n\\u000b\\u0002\",\n \"\\u0002\\u0194\\u0192\\u0003\\u0002\\u0002\\u0002\\u0194\\u0193\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\\u0196\\u0197\\u0007)\\u0002\",\n \"\\u0002\\u0197b\\u0003\\u0002\\u0002\\u0002\\u0198\\u0199\\t\\f\\u0002\\u0002\\u0199\",\n \"\\u019a\\u0003\\u0002\\u0002\\u0002\\u019a\\u019b\\b2\\u0002\\u0002\\u019bd\\u0003\",\n \"\\u0002\\u0002\\u0002\\u019c\\u019d\\u0007=\\u0002\\u0002\\u019df\\u0003\\u0002\",\n \"\\u0002\\u0002\\u019e\\u01a0\\t\\r\\u0002\\u0002\\u019f\\u019e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a0\\u01a1\\u0003\\u0002\\u0002\\u0002\\u01a1\\u019f\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a1\\u01a2\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a5\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a3\\u01a5\\u0005e3\\u0002\\u01a4\\u019f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a4\\u01a3\\u0003\\u0002\\u0002\\u0002\\u01a5h\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a6\\u01a7\\t\\u000e\\u0002\\u0002\\u01a7j\\u0003\\u0002\\u0002\\u0002\\u01a8\",\n \"\\u01a9\\t\\u000f\\u0002\\u0002\\u01a9l\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01ab\",\n \"\\u0007^\\u0002\\u0002\\u01ab\\u01af\\t\\u0010\\u0002\\u0002\\u01ac\\u01af\\u0005\",\n \"q9\\u0002\\u01ad\\u01af\\u0005o8\\u0002\\u01ae\\u01aa\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ae\\u01ac\\u0003\\u0002\\u0002\\u0002\\u01ae\\u01ad\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01afn\\u0003\\u0002\\u0002\\u0002\\u01b0\\u01b1\\u0007^\\u0002\\u0002\\u01b1\",\n \"\\u01b2\\t\\u0011\\u0002\\u0002\\u01b2\\u01b3\\u0005k6\\u0002\\u01b3\\u01b4\\u0005\",\n \"k6\\u0002\\u01b4\\u01bc\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\\u0007^\\u0002\",\n \"\\u0002\\u01b6\\u01b7\\u0005k6\\u0002\\u01b7\\u01b8\\u0005k6\\u0002\\u01b8\\u01bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01b9\\u01ba\\u0007^\\u0002\\u0002\\u01ba\\u01bc\",\n \"\\u0005k6\\u0002\\u01bb\\u01b0\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01b5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01bb\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01bcp\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01bd\\u01be\\u0007^\\u0002\\u0002\\u01be\\u01bf\\u0007\",\n \"w\\u0002\\u0002\\u01bf\\u01c0\\u0005i5\\u0002\\u01c0\\u01c1\\u0005i5\\u0002\\u01c1\",\n \"\\u01c2\\u0005i5\\u0002\\u01c2\\u01c3\\u0005i5\\u0002\\u01c3r\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01c4\\u01c5\\u00071\\u0002\\u0002\\u01c5\\u01c6\\u00071\\u0002\\u0002\",\n \"\\u01c6\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c7\\u01c9\\n\\r\\u0002\\u0002\\u01c8\",\n \"\\u01c7\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cc\\u0003\\u0002\\u0002\\u0002\\u01ca\",\n \"\\u01c8\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\",\n \"\\u01ce\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01cd\",\n \"\\u01cf\\u0007\\u000f\\u0002\\u0002\\u01ce\\u01cd\\u0003\\u0002\\u0002\\u0002\\u01ce\",\n \"\\u01cf\\u0003\\u0002\\u0002\\u0002\\u01cf\\u01d0\\u0003\\u0002\\u0002\\u0002\\u01d0\",\n \"\\u01dd\\u0007\\f\\u0002\\u0002\\u01d1\\u01d2\\u00071\\u0002\\u0002\\u01d2\\u01d3\",\n \"\\u0007,\\u0002\\u0002\\u01d3\\u01d7\\u0003\\u0002\\u0002\\u0002\\u01d4\\u01d6\",\n \"\\u000b\\u0002\\u0002\\u0002\\u01d5\\u01d4\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d9\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01d7\\u01d8\\u0003\\u0002\\u0002\\u0002\\u01d7\\u01d5\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01d8\\u01da\\u0003\\u0002\\u0002\\u0002\\u01d9\\u01d7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01da\\u01db\\u0007,\\u0002\\u0002\\u01db\\u01dd\",\n \"\\u00071\\u0002\\u0002\\u01dc\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01dc\\u01d1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01dd\\u01de\\u0003\\u0002\\u0002\\u0002\\u01de\\u01df\",\n \"\\b:\\u0003\\u0002\\u01dft\\u0003\\u0002\\u0002\\u0002\\u001d\\u0002\\u0131\\u013b\",\n \"\\u0147\\u014d\\u0152\\u0158\\u015d\\u015f\\u0164\\u016a\\u016f\\u0175\\u0179\\u017d\",\n \"\\u0182\\u0188\\u018f\\u0194\\u01a1\\u01a4\\u01ae\\u01bb\\u01ca\\u01ce\\u01d7\\u01dc\",\n \"\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.NULL_VALUE = 38;\nivprog.LIB_ID = 39;\nivprog.INTEGER = 40;\nivprog.REAL = 41;\nivprog.STRING = 42;\nivprog.CHARACTER = 43;\nivprog.WHITESPACE = 44;\nivprog.EOS = 45;\nivprog.COMMENTS = 46;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'retorne'\", \"'para'\", \n \"'pare'\", \"'faca'\", \"'enquanto'\", \"'se'\", \n \"'senao'\", \"'falso'\", \"'verdadeiro'\", \n \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \n \"','\", \"'='\", null, null, null, null, \n null, \"':'\", null, null, \"'$'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"NULL_VALUE\", \"LIB_ID\", \"INTEGER\", \n \"REAL\", \"STRING\", \"CHARACTER\", \"WHITESPACE\", \n \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"NULL_VALUE\", \"LIB_ID\", \"INTEGER\", \n \"REAL\", \"ExponentPart\", \"STRING\", \"STRING_CHARACTER\", \n \"CHARACTER\", \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \n \"HEX_DIGIT\", \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \n \"ESC_UNICODE\", \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"numero_elementos\",\n $matrixLines: \"matriz_linhas\",\n $matrixColumns: \"matriz_colunas\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"e_real\",\n $isInt: \"e_inteiro\",\n $isBool: \"e_logico\",\n $castReal: \"como_real\",\n $castInt: \"como_inteiro\",\n $castBool: \"como_logico\",\n $castString: \"como_cadeia\",\n $sin: \"sen\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"raiz_quadrada\",\n $pow: \"pot\",\n $log: \"log\",\n $abs: \"modulo\",\n $negate: \"trocar_sinal\",\n $invert: \"inverter_valor\",\n $max: \"maximo\",\n $min: \"minimo\"\n}\n","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Matematica\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"IV\"\n}","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","import EN from './en';\nimport PT from './pt';\nimport ES from './es';\n\nexport default {\n 'en': EN,\n 'pt': PT,\n 'es': ES\n}\n","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","import { Assign } from './assign';\n\nexport class ArrayIndexAssign extends Assign {\n\n constructor (id, lineExpression, columnExpression, expression) {\n super(id, expression);\n this.line = lineExpression;\n this.column = columnExpression;\n }\n}\n","import { Declaration } from './declaration';\n\nexport class ArrayDeclaration extends Declaration {\n\n constructor (id, type, lines, columns, initial, isConst) {\n super(id, type, initial, isConst);\n this.lines = lines;\n this.columns = columns;\n }\n}","import { Command } from './command';\n\nexport class Assign extends Command {\n \n constructor (id, expression) {\n super();\n this.id = id;\n this.expression = expression;\n }\n}","import { Command } from './command';\n\nexport class Break extends Command {\n\n constructor () {\n super();\n }\n}\n","import { Command } from './command';\n\nexport class Case extends Command {\n\n constructor (expression) {\n super();\n this.expression = expression;\n this.commands = [];\n }\n\n setCommands (commands) {\n this.commands = commands;\n }\n\n get isDefault () {\n return this.expression === null;\n }\n}","export class Command {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n this._sourceInfo = sourceInfo;\n }\n\n get sourceInfo () {\n return this._sourceInfo;\n }\n}\n","export class CommandBlock {\n\t\n\tconstructor(variables, commands) {\n\t\tthis.variables = variables;\n\t\tthis.commands = commands;\n\t\tthis._sourceInfo = null;\n\t}\n\n\tset sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class Declaration extends Command {\n \n constructor (id, type, initial, isConst) {\n super();\n this.id = id;\n this.type = type;\n this.initial = initial;\n this.isConst = isConst;\n }\n}\n","import { While } from './while';\n\nexport class DoWhile extends While {\n\n constructor(condition, commandBlock) {\n super(condition, commandBlock);\n }\n\n get testFirst () {\n return false;\n }\n \n}","import { Command } from './command';\n\nexport class For extends Command {\n\n constructor (assignment, condition, increment, commandBlock) {\n super();\n this.assignment = assignment;\n this.condition = condition;\n this.increment = increment;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n}","export class FormalParameter {\n\n constructor (type, id, byRef = false) {\n this.type = type;\n this.id = id;\n this.byRef = byRef;\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Types } from './../../typeSystem/types';\n\nexport class Function {\n\n constructor(name, returnType, formalParameters, commandBlock) {\n this.name = name;\n this.returnType = returnType;\n this.formalParameters = formalParameters;\n this.commandBlock = commandBlock;\n this._sourceInfo = null;\n }\n\n get isMain () {\n return this.name === null && this.returnType.isCompatible(Types.VOID);\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get variablesDeclarations () {\n return this.commandBlock.variables;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class IfThenElse extends Command {\n\n constructor (condition, ifTrue, ifFalse) {\n super();\n this.condition = condition;\n this.ifTrue = ifTrue;\n this.ifFalse = ifFalse;\n }\n}","import { Break } from './break';\nimport { Return } from './return';\nimport { Assign } from './assign';\nimport { ArrayIndexAssign } from './arrayAssign';\nimport { Declaration } from './declaration';\nimport { ArrayDeclaration } from './arrayDeclaration';\nimport { While } from './while';\nimport { For } from './for';\nimport { Function } from './function';\nimport { IfThenElse } from './ifThenElse';\nimport { CommandBlock } from './commandBlock';\nimport { DoWhile } from './doWhile';\nimport { Switch } from './switch';\nimport { Case } from './case';\nimport { SysCall } from './sysCall';\nimport { FormalParameter } from './formalParameter';\nimport { FunctionCall } from './../expressions/functionCall'; //Proxy to expression since they do exatcly the same thing\n\nexport {\n Break,\n Return,\n Assign,\n ArrayIndexAssign,\n Declaration,\n ArrayDeclaration,\n While,\n For,\n Function,\n IfThenElse,\n CommandBlock,\n DoWhile,\n Switch,\n Case,\n SysCall,\n FormalParameter,\n FunctionCall\n};","import { Command } from './command';\n\nexport class Return extends Command {\n\n constructor(expression) {\n super();\n this.expression = expression;\n }\n \n}","import { Command } from './command';\n\nexport class Switch extends Command {\n \n constructor (expression, cases) {\n super();\n this.expression = expression;\n this.cases = cases;\n }\n}","/**\n * This class represents all the language defined functions.\n * The language processor uses the id provided here to properly execute the desired function.\n * The function is actually implemented inside the language processor.\n * All the functions can be found at: js/processor/definedFunctions.js\n */\nexport class SysCall {\n\n constructor (langFunc) {\n this.langFunc = langFunc;\n }\n}","import { Command } from './command';\n\nexport class While extends Command {\n\n constructor (expression, commandBlock) {\n super();\n this.expression = expression;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get testFirst () {\n \treturn true;\n }\n}","export class SyntaxError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SyntaxError);\n }\n}\n","import { LocalizedStrings } from './../../services/localizedStringsService';\nimport { SyntaxError } from './syntaxError';\n\nexport const SyntaxErrorFactory = Object.freeze({\n extra_lines: () => new SyntaxError(LocalizedStrings.getError(\"extra_lines\")),\n token_missing_one: (expected, token) => {\n const context = [expected, token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"token_missing_one\", context));\n },\n token_missing_list: (expectedList, token) => {\n const line = expectedList.join(LocalizedStrings.getOR());\n return SyntaxErrorFactory.token_missing_one(line, token);\n },\n id_missing: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"id_missing\", context));\n },\n eos_missing: (token) => {\n const context = [token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"eos_missing\", context));\n },\n invalid_array_dimension: (typeName, token) => {\n const context = [token.line, token.column, typeName];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_array_dimension\", context));\n },\n invalid_array_size: (token) => {\n const context = [token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_array_size\", context));\n },\n invalid_main_return: (name, typeName, token) => {\n const context = [name, typeName, token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_main_return\", context));\n },\n invalid_var_declaration: (token) => {\n const context = [token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_var_declaration\", context));\n },\n invalid_break_command: (cmdName, token) => {\n const context = [token.line, cmdName];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_break_command\", context));\n },\n invalid_terminal: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError('invalid_terminal', context));\n },\n invalid_type: (list, token) => {\n const line = list.join(LocalizedStrings.getOR());\n const context = [token.text, token.line, token.column, line]\n return new SyntaxError(LocalizedStrings.getError(\"invalid_type\", context));\n },\n const_not_init: (token) => {\n const context = [token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"const_not_init\", context));\n },\n invalid_id_format: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_id_format\", context));\n },\n duplicate_function: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"duplicate_function\", context));\n },\n main_parameters: () => {\n return new SyntaxError(LocalizedStrings.getError(\"main_parameters\"));\n },\n duplicate_variable: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"duplicate_variable\", context));\n }\n});\n","import { Expression } from './expression';\n\nexport class ArrayAccess extends Expression {\n\t\n\tconstructor (id, line, column) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.line = line;\n\t\tthis.column = column;\n\t}\n\n\ttoString () {\n\t\tconst strLine = this.line.toString();\n\t\tlet strColumn = null;\n\t\tif(this.column) {\n\t\t\tstrColumn = this.column.toString();\n\t\t}\n\t\tif(strColumn) {\n\t\t\treturn `${this.id}[${strLine}][${strColumn}]`;\n\t\t} else {\n\t\t\treturn `${this.id}[${strLine}]`;\n\t\t}\n\t}\n}","import { Literal } from './literal';\n\nexport class ArrayLiteral extends Literal {\n \n constructor(type, value) {\n super(type);\n this.value = value;\n }\n\n get subtype () {\n let element = this.value[0];\n if (element instanceof ArrayLiteral) {\n return element.value[0].type;\n } else {\n return element.type;\n }\n }\n\n get lines () {\n return this.value.length;\n }\n\n get columns () {\n let element = this.value[0];\n if (!(element instanceof ArrayLiteral)){\n return null;\n } else {\n return element.value[0].value.length;\n }\n }\n\n get isVector () {\n return this.columns === null;\n }\n\n get isValid () {\n return true;//this.validateType() && this.validateSize();\n }\n\n validateType () {\n // let valid = true;\n // if(this.columns !== null) {\n // const len = this.columns;\n // const len2 = this.lines;\n // for (let i = len - 1; i >= 0; i--) {\n // for (let j = len2 - 1; j >= 0; j--) {\n // if(this.value[i].value[j].type !== this.subtype) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // } else {\n // const len = this.lines;\n // for (var i = len - 1; i >= 0; i--) {\n // if(this.value[i].type !== this.subtype) {\n // valid = false;\n // break;\n // }\n // }\n // }\n return true;//valid;\n }\n\n validateSize () {\n let valid = true;\n if(this.columns !== null) {\n const equalityTest = data.value.map(v => v.length)\n .reduce((old, next) => {\n if (old === null) {\n return next;\n } else if (old === next) {\n return old\n } else {\n return -1;\n }\n }, null);\n valid = equalityTest !== -1;\n }\n return valid;\n }\n\n toString () {\n const strList = this.value.map(arrayLiteral => arrayLiteral.toString());\n return \"{\" + strList.join(',') + \"}\";\n }\n}\n","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertBoolToString } from \"./../../typeSystem/parsers\";\n\nexport class BoolLiteral extends Literal {\n \n constructor(value) {\n super(Types.BOOLEAN);\n this.value = value;\n }\n\n toString () {\n return convertBoolToString(this.value);\n }\n}","export class Expression {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Expression } from './expression';\nimport { LanguageDefinedFunction } from '../../processor/definedFunctions';\n\nexport class FunctionCall extends Expression {\n\n\tconstructor (id, actualParameters) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.actualParameters = actualParameters;\n\t}\n\n\tget isMainCall () {\n\t\treturn this.id === null;\n\t}\n\n\tget parametersSize () {\n\t\treturn this.actualParameters.length;\n\t}\n\n\ttoString () {\n\t\tlet name = null;\n\t\tif(this.isMainCall) {\n\t\t\tname = LanguageDefinedFunction.getMainFunctionName();\n\t\t} else {\n\t\t\tname = LanguageDefinedFunction.getLocalName(this.id);\n\t\t}\n\t\tlet params = null;\n\t\tif(this.actualParameters.length == 0) {\n\t\t\tparams = \"()\";\n\t\t} else {\n\t\t\tconst strParams = this.actualParameters.map(v => v.toString());\n\t\t\tparams = \"(\" + strParams.join(\",\") + \")\";\n\t\t}\n\t\treturn name + params;\n\t}\n}","import { ArrayAccess } from './arrayAccess';\nimport { FunctionCall } from './functionCall';\nimport { IntLiteral } from './intLiteral';\nimport { RealLiteral } from './realLiteral';\nimport { BoolLiteral } from './boolLiteral';\nimport { StringLiteral } from './stringLiteral';\nimport { ArrayLiteral } from './arrayLiteral';\nimport { VariableLiteral } from './variableLiteral';\nimport { InfixApp } from './infixApp';\nimport { UnaryApp } from './unaryApp';\n\nexport {\n\tArrayAccess,\n\tFunctionCall,\n IntLiteral,\n RealLiteral,\n BoolLiteral,\n StringLiteral,\n ArrayLiteral,\n VariableLiteral,\n InfixApp,\n UnaryApp\n};","import { Expression } from './expression';\n\nexport class InfixApp extends Expression {\n\n constructor(op, left, right) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n const r = this.right.toString();\n return l + op + r;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class IntLiteral extends Literal {\n \n constructor(value) {\n super(Types.INTEGER);\n this.value = value;\n }\n\n toString() {\n return convertToString(this.value, this.type);\n }\n}","import { Expression } from './expression';\n\nexport class Literal extends Expression {\n \n constructor (type) {\n super();\n this.type = type;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class RealLiteral extends Literal {\n \n constructor(value) {\n super(Types.REAL);\n this.value = value;\n }\n\n toString() {\n return convertToString(this.value, this.type);\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class StringLiteral extends Literal {\n \n constructor(value) {\n super(Types.STRING);\n this.value = value;\n }\n\n toString() {\n return this.value;\n }\n}","import {InfixApp} from './infixApp';\n\nexport class UnaryApp extends InfixApp {\n \n constructor (op, left) {\n super(op, left, null);\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n return op + l;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class VariableLiteral extends Literal {\n \n constructor(id) {\n super(Types.UNDEFINED);\n this.id = id;\n }\n\n toString () {\n return this.id;\n }\n}","import { CommonTokenStream, InputStream } from 'antlr4/index';\nimport * as Expressions from './expressions/';\nimport * as Commands from './commands/';\nimport { toInt, toString, toBool, toReal } from './../typeSystem/parsers';\nimport { Types } from \"./../typeSystem/types\";\nimport { CompoundType } from \"./../typeSystem/compoundType\";\nimport { SourceInfo } from './sourceInfo';\nimport { convertFromString } from './operators';\nimport { SyntaxErrorFactory } from './error/syntaxErrorFactory';\nimport { LanguageDefinedFunction } from './../processor/definedFunctions';\nimport { LanguageService } from '../services/languageService';\n\nexport class IVProgParser {\n\n static createParser (input) {\n const lexerClass = LanguageService.getCurrentLexer();\n return new IVProgParser(input, lexerClass);\n }\n\n // <BEGIN scope consts>\n static get BASE () {\n return 0;\n }\n static get FUNCTION () {\n return 1;\n }\n static get COMMAND () {\n return 2;\n }\n static get BREAKABLE () {\n return 4;\n }\n // </ END scope consts>\n\n constructor (input, lexerClass) {\n this.lexerClass = lexerClass;\n this.lexer = new lexerClass(new InputStream(input));\n this.tokenStream = new CommonTokenStream(this.lexer);\n this.tokenStream.fill();\n this.pos = 1;\n this.variableTypes = [this.lexerClass.RK_INTEGER,\n this.lexerClass.RK_REAL,\n this.lexerClass.RK_BOOLEAN,\n this.lexerClass.RK_STRING\n ];\n this.functionTypes = this.variableTypes.concat(this.lexerClass.RK_VOID);\n this.parsingArrayDimension = 0;\n this.scope = [];\n this.langFuncs = LanguageService.getCurrentLangFuncs();\n this.definedFuncsNameList = [];\n this.definedVariablesStack = [];\n }\n\n parseTree () {\n return this.parseProgram();\n }\n\n getToken (index = this.pos) {\n // if(index === null)\n // index = this.pos;\n return this.tokenStream.LT(index);\n }\n\n insideScope (scope) {\n if(this.scope.length <= 0) {\n return IVProgParser.BASE === scope;\n } else {\n return this.scope[this.scope.length-1] === scope;\n }\n }\n\n pushScope (scope) {\n this.scope.push(scope);\n }\n\n pushVariableStack () {\n this.definedVariablesStack.push([]);\n }\n\n popScope () {\n return this.scope.pop();\n }\n\n popVariableStack () {\n return this.definedVariablesStack.pop();\n }\n\n getCurrentVariableStack () {\n return this.definedVariablesStack[this.definedVariablesStack.length - 1];\n }\n\n isEOF () {\n this.getToken(this.pos);\n return this.tokenStream.fetchedEOF;\n }\n\n parseProgram () {\n const token = this.getToken();\n let globalVars = [];\n let functions = [];\n\n if(this.lexerClass.RK_PROGRAM === token.type) {\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.pushVariableStack();\n while(true) {\n this.consumeNewLines();\n const token = this.getToken();\n if (token.type === this.lexerClass.RK_CONST || this.isVariableType(token)) {\n globalVars = globalVars.concat(this.parseGlobalVariables());\n } else if (token.type === this.lexerClass.RK_FUNCTION) {\n this.pushVariableStack();\n functions = functions.concat(this.parseFunction());\n this.popVariableStack();\n } else {\n break;\n }\n }\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n if(!this.isEOF()) {\n throw SyntaxErrorFactory.extra_lines();\n }\n this.popVariableStack();\n return {global: globalVars, functions: functions};\n } else {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_PROGRAM], token);\n }\n }\n\n checkOpenCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('{', token);\n else\n return false;\n }\n return true;\n }\n\n checkCloseCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('}', token);\n else\n return false;\n }\n return true;\n }\n\n /* It checks if the current token at position pos is a ']'.\n * As a check function it doesn't increment pos.\n *\n * @params bool:attempt, indicates that the token is optional. Defaults: false\n *\n * @returns true if the attempt is true and current token is '[',\n * false is attempt is true and current token is not '['\n **/\n checkOpenBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('[', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(']', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkOpenParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('(', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(')', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkEOS (attempt = false) {\n const eosToken = this.getToken();\n if (eosToken.type !== this.lexerClass.EOS) {\n if (!attempt)\n throw SyntaxErrorFactory.eos_missing(eosToken);\n else\n return false;\n }\n return true;\n }\n\n checkFunctionDuplicate (functionID, funcIDToken) {\n const id = functionID === null ? \"$main\" : functionID;\n const index = this.definedFuncsNameList.indexOf(id);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_function(funcIDToken);\n }\n this.definedFuncsNameList.push(id);\n }\n\n checkVariableDuplicate (variableID, variableIDToken) {\n const index = this.getCurrentVariableStack().indexOf(variableID);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_variable(variableIDToken);\n }\n this.getCurrentVariableStack().push(variableID);\n }\n\n consumeForSemiColon () {\n const eosToken = this.getToken();\n if (eosToken.type === this.lexerClass.EOS && eosToken.text.match(';')) {\n this.pos++;\n return; \n }\n throw SyntaxErrorFactory.token_missing_one(';', eosToken);\n }\n\n parseGlobalVariables () {\n const decl = this.parseMaybeConst();\n this.checkEOS();\n this.pos++;\n return decl;\n }\n\n /*\n * Checks if the next token is PR_CONST. It's only available\n * at global variables declaration level\n * @returns Declararion(const, type, id, initVal?)\n **/\n parseMaybeConst () {\n const constToken = this.getToken();\n if(constToken.type === this.lexerClass.RK_CONST) {\n this.pos++;\n const typeString = this.parseType();\n return this.parseDeclaration(typeString, true);\n } else if(this.isVariableType(constToken)) {\n const typeString = this.parseType();\n return this.parseDeclaration(typeString);\n } else {\n throw SyntaxErrorFactory.token_missing_list(\n [this.lexer.literalNames[this.lexerClass.RK_CONST]].concat(this.getTypeArray()), constToken);\n }\n\n }\n\n /*\n * Parses a declarion of the form: type --- id --- (= --- EAnd)?\n * @returns a list of Declararion(const, type, id, initVal?)\n **/\n parseDeclaration (typeString, isConst = false) {\n let initial = null;\n let dim1 = null;\n let dim2 = null;\n const idToken = this.getToken();\n const idString = this.parseID();\n this.checkVariableDuplicate(idString,idToken);\n // Check for array or vector\n // ID[int/IDi][int/IDj]\n if (this.checkOpenBrace(true)) {\n this.pos++;\n this.consumeNewLines();\n dim1 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.consumeNewLines();\n dim2 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n }\n\n const equalsToken = this.getToken();\n if(isConst && equalsToken.type !== this.lexerClass.EQUAL ) {\n throw SyntaxErrorFactory.const_not_init(idToken);\n }\n if(equalsToken.type === this.lexerClass.EQUAL) {\n this.pos++;\n initial = this.parseExpressionOR();\n }\n let declaration = null;\n let dimensions = 0;\n if (dim1 !== null) {\n dimensions++;\n if(dim2 !== null) {\n dimensions++;\n }\n declaration = new Commands.ArrayDeclaration(idString,\n new CompoundType(typeString, dimensions), dim1, dim2, initial, isConst);\n } else {\n declaration = new Commands.Declaration(idString, typeString, initial, isConst);\n }\n declaration.sourceInfo = SourceInfo.createSourceInfo(idToken);\n const commaToken = this.getToken();\n if(commaToken.type === this.lexerClass.COMMA) {\n this.pos++;\n this.consumeNewLines();\n return [declaration]\n .concat(this.parseDeclaration(typeString, isConst));\n } else {\n return [declaration]\n }\n }\n\n consumeNewLines () {\n let token = this.getToken();\n while(token.type === this.lexerClass.EOS && token.text.match('[\\r\\n]+')) {\n this.pos++;\n token = this.getToken();\n }\n }\n\n isVariableType (token) {\n return this.variableTypes.find(v => v === token.type);\n }\n\n /*\n * Reads the next token of the stream to check if it is a Integer or an ID.\n * @returns Integer | ID\n **/\n parseArrayDimension () {\n const dimToken = this.getToken();\n if(dimToken.type === this.lexerClass.INTEGER) {\n //parse as int literal\n this.pos++;\n return this.getIntLiteral(dimToken);\n } else if(dimToken.type === this.lexerClass.ID) {\n //parse as variable\n this.pos++;\n return this.parseVariable(dimToken);\n } else {\n throw SyntaxErrorFactory.invalid_array_dimension(this.lexer.literalNames[this.lexerClass.RK_INTEGER], dimToken);\n }\n }\n\n /*\n * Returns an object {type: 'int', value: value}.\n * It checks for binary and hexadecimal integers.\n * @returns object with fields type and value\n **/\n getIntLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.IntLiteral(toInt(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getRealLiteral (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.RealLiteral(toReal(token.text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getStringLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.StringLiteral(toString(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getBoolLiteral (token) {\n const val = toBool(token.text);\n const exp = new Expressions.BoolLiteral(val);\n exp.sourceInfo = SourceInfo.createSourceInfo(token);;\n return exp;\n }\n\n parseArrayLiteral () {\n this.checkOpenCurly();\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.token_missing_list(`Array dimensions exceed maximum size of 2 at line ${beginArray.line}`);\n }\n this.pos++;\n this.parsingArrayDimension++;\n this.consumeNewLines();\n const data = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseCurly()\n const endArray = this.getToken();\n this.pos++;\n this.parsingArrayDimension--;\n if (this.parsingArrayDimension === 0) {\n // if (!data.isValid) {\n // // TODO: better error message\n // console.log('invalid array');\n // throw new Error(`Invalid array at line ${beginArray.line}`);\n // }\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(beginArray, endArray);\n let dataDim = 1;\n if(data[0] instanceof Expressions.ArrayLiteral) {\n dataDim++;\n }\n const type = new CompoundType(Types.UNDEFINED, dataDim);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object {type: 'variable', value: value}.\n * @returns object with fields type and value\n **/\n parseVariable (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.VariableLiteral(token.text);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object representing a function. It has\n * four attributes: returnType, id, formalParams and block.\n * The block object has two attributes: declarations and commands\n **/\n parseFunction () {\n this.pushScope(IVProgParser.FUNCTION);\n let formalParams = [];\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_FUNCTION) {\n //throw SyntaxError.createError(this.lexer.literalNames[this.lexerClass.PR_FUNCAO], token);\n return null;\n }\n this.pos++;\n const funType = this.parseType();\n let dimensions = 0;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n }\n }\n const funcIDToken = this.getToken();\n const functionID = this.parseID();\n this.checkFunctionDuplicate(functionID, funcIDToken);\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n if (!this.checkCloseParenthesis(true)) {\n formalParams = this.parseFormalParameters(); // formal parameters \n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n } else {\n this.pos++;\n }\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n let returnType = funType;\n if(dimensions > 0) {\n returnType = new CompoundType(funType, dimensions);\n }\n const func = new Commands.Function(functionID, returnType, formalParams, commandsBlock);\n if (functionID === null && !func.isMain) {\n throw SyntaxErrorFactory.invalid_main_return(LanguageDefinedFunction.getMainFunctionName(),\n this.lexer.literalNames[this.lexerClass.RK_VOID],\n token.line);\n } else if (func.isMain && formalParams.length !== 0) {\n throw SyntaxErrorFactory.main_parameters();\n }\n this.popScope();\n return func;\n }\n\n /*\n * Parse the formal parameters of a function.\n * @returns a list of objects with the following attributes: type, id and dimensions.\n **/\n parseFormalParameters () {\n const list = [];\n while(true) {\n let dimensions = 0;\n const typeString = this.parseType();\n const idToken = this.getToken();\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, idToken);\n if (this.checkOpenBrace(true)) {\n this.pos++;\n dimensions++;\n this.checkCloseBrace();\n this.pos++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n dimensions++;\n this.checkCloseBrace();\n this.pos++;\n }\n }\n let type = null;\n if(dimensions > 0) {\n type = new CompoundType(typeString, dimensions);\n } else {\n type = typeString;\n }\n list.push(new Commands.FormalParameter(type, idString));\n const commaToken = this.getToken();\n if (commaToken.type !== this.lexerClass.COMMA)\n break;\n this.pos++;\n this.consumeNewLines();\n }\n return list;\n }\n\n parseID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID) {\n throw SyntaxErrorFactory.id_missing(token);\n }\n this.pos++;\n console.log(token.text);\n if (this.insideScope(IVProgParser.FUNCTION)) {\n if (token.text === LanguageDefinedFunction.getMainFunctionName()){\n return null;\n }\n }\n return token.text;\n }\n\n parseMaybeLibID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID && token.type !== this.lexerClass.LIB_ID) {\n throw SyntaxErrorFactory.id_missing(token);\n } \n this.pos++;\n return token.text;\n }\n\n parseType () {\n const token = this.getToken();\n if(token.type === this.lexerClass.ID && this.insideScope(IVProgParser.FUNCTION)) {\n return Types.VOID;\n } else if (token.type === this.lexerClass.RK_VOID && this.insideScope(IVProgParser.FUNCTION)) {\n this.pos++;\n return Types.VOID;\n } else if (this.isVariableType(token)) {\n this.pos++;\n switch(token.type) {\n case this.lexerClass.RK_INTEGER:\n return Types.INTEGER;\n case this.lexerClass.RK_BOOLEAN:\n return Types.BOOLEAN;\n case this.lexerClass.RK_REAL:\n return Types.REAL;\n case this.lexerClass.RK_STRING:\n return Types.STRING;\n default:\n break;\n }\n }\n \n throw SyntaxErrorFactory.invalid_type(this.getTypeArray(), token);\n }\n\n parseCommandBlock (optionalCurly = false) {\n let variablesDecl = [];\n const commands = [];\n let hasOpen = false;\n if (this.checkOpenCurly(optionalCurly)) {\n this.pos++;\n hasOpen = true;\n }\n this.consumeNewLines();\n while(true) {\n\n const cmd = this.parseCommand();\n if (cmd === null)\n break;\n if(cmd !== -1) {\n if (cmd instanceof Array) {\n variablesDecl = variablesDecl.concat(cmd);\n } else {\n commands.push(cmd);\n }\n }\n }\n this.consumeNewLines();\n if (hasOpen) {\n this.checkCloseCurly()\n this.pos++;\n this.consumeNewLines();\n }\n return new Commands.CommandBlock(variablesDecl, commands);\n }\n\n parseCommand () {\n const token = this.getToken();\n if (this.isVariableType(token)) {\n if(!this.insideScope(IVProgParser.FUNCTION)) {\n throw SyntaxErrorFactory.invalid_var_declaration(token.line);\n }\n this.pushScope(IVProgParser.BASE);\n const varType = this.parseType();\n this.popScope();\n const cmd = this.parseDeclaration(varType);\n this.checkEOS();\n this.pos++;\n return cmd;\n } else if (token.type === this.lexerClass.ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.LIB_ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.RK_RETURN) {\n return this.parseReturn();\n } else if (token.type === this.lexerClass.RK_WHILE) {\n return this.parseWhile();\n } else if (token.type === this.lexerClass.RK_FOR) {\n return this.parseFor();\n } else if (token.type === this.lexerClass.RK_BREAK ) {\n if(!this.insideScope(IVProgParser.BREAKABLE)) {\n throw SyntaxErrorFactory.invalid_break_command(\n this.lexer.literalNames[this.lexerClass.RK_BREAK],\n token\n );\n }\n return this.parseBreak();\n } else if (token.type === this.lexerClass.RK_SWITCH) {\n return this.parseSwitchCase();\n } else if (token.type === this.lexerClass.RK_DO) {\n return this.parseDoWhile();\n } else if (token.type === this.lexerClass.RK_IF) {\n return this.parseIfThenElse();\n } else if (this.checkEOS(true)){\n this.pos++;\n return -1;\n } else {\n return null;\n }\n }\n\n parseSwitchCase () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.consumeNewLines();\n const casesList = this.parseCases();\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n\n this.popScope();\n return new Commands.Switch(exp, casesList);\n }\n\n parseDoWhile () {\n this.pos++;\n this.consumeNewLines();\n this.pushScope(IVProgParser.BREAKABLE);\n const commandsBlock = this.parseCommandBlock();\n this.consumeNewLines(); //Maybe not...\n const whileToken = this.getToken();\n if (whileToken.type !== this.lexerClass.RK_WHILE) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_WHILE], whileToken);\n }\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.checkEOS();\n this.popScope();\n return new Commands.DoWhile(condition, commandsBlock);\n }\n\n parseIfThenElse () {\n if(this.insideScope(IVProgParser.BREAKABLE)) {\n this.pushScope(IVProgParser.BREAKABLE);\n } else {\n this.pushScope(IVProgParser.COMMAND);\n }\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n\n const maybeElse = this.getToken();\n if(maybeElse.type === this.lexerClass.RK_ELSE) {\n this.pos++;\n this.consumeNewLines();\n const maybeIf = this.getToken();\n let elseBlock = null;\n if(this.checkOpenCurly(true)) {\n elseBlock = this.parseCommandBlock();\n } else if(maybeIf.type === this.lexerClass.RK_IF) {\n elseBlock = this.parseIfThenElse();\n } else {\n throw SyntaxErrorFactory.token_missing_list([this.lexer.literalNames[this.lexerClass.RK_IF], '{'], maybeIf);\n }\n return new Commands.IfThenElse(logicalExpression, cmdBlocks, elseBlock);\n }\n this.popScope();\n\n return new Commands.IfThenElse(logicalExpression, cmdBlocks, null);\n }\n\n parseFor () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const attribution = this.parseForAssign();\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeForSemiColon();\n const increment = this.parseForAssign(true);\n this.checkCloseParenthesis()\n this.pos++;\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n this.popScope();\n return new Commands.For(attribution, condition, increment, commandsBlock);\n }\n\n parseWhile () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n this.popScope();\n return new Commands.While(logicalExpression, cmdBlocks);\n }\n\n parseBreak () {\n this.pos++;\n this.checkEOS();\n this.pos++;\n return new Commands.Break();\n }\n\n parseReturn () {\n this.pos++;\n let exp = null;\n if(!this.checkEOS(true)) {\n exp = this.parseExpressionOR();\n this.checkEOS();\n }\n this.pos++;\n return new Commands.Return(exp);\n }\n\n parseIDCommand () {\n const refToken = this.getToken();\n const isID = refToken.type === this.lexerClass.ID;\n const id = this.parseMaybeLibID();\n if(this.checkOpenBrace(true)) {\n this.pos++;\n let lineExpression = null;\n let columnExpression = null;\n this.consumeNewLines();\n lineExpression = this.parseExpression()\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if (this.checkOpenBrace(true)) {\n this.pos++\n this.consumeNewLines();\n columnExpression = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n const equalToken = this.getToken();\n if (equalToken.type !== this.lexerClass.EQUAL) {\n throw SyntaxErrorFactory.token_missing_one('=', equalToken);\n }\n this.pos++;\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.ArrayIndexAssign(id, lineExpression, columnExpression, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalToken);\n return cmd;\n }\n const equalOrParenthesis = this.getToken();\n if (isID && equalOrParenthesis.type === this.lexerClass.EQUAL) {\n this.pos++\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalOrParenthesis);\n return cmd;\n } else if (equalOrParenthesis.type === this.lexerClass.OPEN_PARENTHESIS) {\n const funcCall = this.parseFunctionCallCommand(id);\n this.checkEOS();\n this.pos++;\n return funcCall;\n } else if (isID) {\n throw SyntaxErrorFactory.token_missing_list(['=','('], equalOrParenthesis);\n } else {\n throw SyntaxErrorFactory.invalid_id_format(refToken);\n }\n }\n\n parseForAssign (isLast = false) {\n if(!isLast)\n this.consumeNewLines();\n if(this.checkEOS(true)) {\n return null;\n }\n const id = this.parseID();\n const equal = this.getToken();\n if (equal.type !== this.lexerClass.EQUAL) {\n throw SyntaxErrorFactory.token_missing_one('=', equal);\n }\n this.pos++\n const exp = this.parseExpressionOR();\n if(!isLast) {\n this.consumeForSemiColon();\n }\n const sourceInfo = SourceInfo.createSourceInfo(equal);\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseCases () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_CASE) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_CASE], token);\n }\n this.pos++;\n const nextToken = this.getToken();\n if(nextToken.type === this.lexerClass.RK_DEFAULT) {\n this.pos++;\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const defaultCase = new Commands.Case(null);\n defaultCase.setCommands(block.commands);\n return [defaultCase];\n } else {\n const exp = this.parseExpressionOR();\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const aCase = new Commands.Case(exp);\n aCase.setCommands(block.commands);\n const caseToken = this.getToken();\n if(caseToken.type === this.lexerClass.RK_CASE) {\n return [aCase].concat(this.parseCases());\n } else {\n return [aCase];\n }\n }\n }\n\n /*\n * Parses an Expression following the structure:\n *\n * EOR => EAnd ( 'or' EOR)? #expression and\n *\n * EOR => ENot ('and' EOR)? #expression or\n *\n * ENot => 'not'? ER #expression not\n *\n * ER => E ((>=, <=, ==, >, <) E)? #expression relational\n *\n * E => factor ((+, -) E)? #expression\n *\n * factor=> term ((*, /, %) factor)?\n *\n * term => literal || arrayAccess || FuncCall || ID || '('EAnd')'\n **/\n parseExpressionOR () {\n let exp1 = this.parseExpressionAND();\n while (this.getToken().type === this.lexerClass.OR_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const or = convertFromString('or');\n this.consumeNewLines();\n const exp2 = this.parseExpressionAND();\n const finalExp = new Expressions.InfixApp(or, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp\n }\n return exp1;\n }\n\n parseExpressionAND () {\n let exp1 = this.parseExpressionNot();\n while (this.getToken().type === this.lexerClass.AND_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const and = convertFromString('and');\n this.consumeNewLines();\n const exp2 = this.parseExpressionNot();\n const finalExp = new Expressions.InfixApp(and, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpressionNot () {\n const maybeNotToken = this.getToken();\n if (maybeNotToken.type === this.lexerClass.NOT_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const not = convertFromString('not');\n const exp1 = this.parseExpressionRel();\n finalExp = new Expressions.UnaryApp(not, exp1);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n return finalExp;\n \n } else {\n return this.parseExpressionRel();\n }\n }\n\n parseExpressionRel () {\n let exp1 = this.parseExpression();\n while (this.getToken().type === this.lexerClass.RELATIONAL_OPERATOR) {\n const relToken = this.getToken();\n this.pos++;\n const rel = convertFromString(relToken.text);\n const exp2 = this.parseExpression();\n const finalExp = new Expressions.InfixApp(rel, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(relToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpression () {\n let factor = this.parseFactor();\n while (this.getToken().type === this.lexerClass.SUM_OP) {\n const sumOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(sumOpToken.text);\n const factor2 = this.parseFactor();\n const finalExp = new Expressions.InfixApp(op, factor, factor2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(sumOpToken);\n factor = finalExp;\n }\n return factor;\n }\n\n parseFactor () {\n let term = this.parseTerm();\n while (this.getToken().type === this.lexerClass.MULTI_OP) {\n const multOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(multOpToken.text);\n const term2 =this.parseTerm();\n const finalExp = new Expressions.InfixApp(op, term, term2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(multOpToken);\n term = finalExp;\n }\n return term;\n }\n\n parseTerm () {\n const token = this.getToken();\n let sourceInfo = null;\n switch(token.type) {\n case this.lexerClass.SUM_OP:\n this.pos++;\n sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.UnaryApp(convertFromString(token.text), this.parseTerm());\n exp.sourceInfo = sourceInfo;\n return exp;\n case this.lexerClass.INTEGER:\n this.pos++;\n return this.getIntLiteral(token);\n case this.lexerClass.REAL:\n this.pos++;\n return this.getRealLiteral(token);\n case this.lexerClass.STRING:\n this.pos++;\n return this.getStringLiteral(token);\n case this.lexerClass.RK_TRUE:\n case this.lexerClass.RK_FALSE:\n this.pos++;\n return this.getBoolLiteral(token);\n case this.lexerClass.OPEN_CURLY:\n return this.parseArrayLiteral();\n case this.lexerClass.ID:\n case this.lexerClass.LIB_ID:\n return this.parseIDTerm();\n case this.lexerClass.OPEN_PARENTHESIS:\n return this.parseParenthesisExp();\n default:\n throw SyntaxErrorFactory.invalid_terminal(token);\n }\n }\n\n parseIDTerm () {\n const tokenA = this.getToken();\n const id = this.parseMaybeLibID();\n const isID = tokenA.type === this.lexerClass.ID;\n if(isID && this.checkOpenBrace(true)) {\n let tokenB = null;\n this.pos++;\n const firstIndex = this.parseExpression();\n let secondIndex = null;\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n if(this.checkOpenBrace(true)){\n this.pos++;\n secondIndex = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB); \n const exp = new Expressions.ArrayAccess(id, firstIndex, secondIndex);\n exp.sourceInfo = sourceInfo;\n return exp;\n\n } else if (this.checkOpenParenthesis(true)) {\n return this.parseFunctionCallExpression(id);\n } else if (isID) {\n const sourceInfo = SourceInfo.createSourceInfo(tokenA);\n const exp = new Expressions.VariableLiteral(id);\n exp.sourceInfo = sourceInfo;\n return exp;\n } else {\n throw SyntaxErrorFactory.invalid_id_format(tokenA);\n }\n }\n\n getFunctionName (id) {\n const name = LanguageDefinedFunction.getInternalName(id);\n if (name === null) {\n if (id === LanguageDefinedFunction.getMainFunctionName()) {\n return null;\n }\n return id;\n } else {\n return name;\n }\n }\n\n parseFunctionCallExpression (id) {\n const tokenA = this.getToken(this.pos - 1);\n const actualParameters = this.parseActualParameters();\n const tokenB = this.getToken(this.pos - 1);\n const funcName = this.getFunctionName(id);\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n const cmd = new Expressions.FunctionCall(funcName, actualParameters);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseFunctionCallCommand (id) {\n return this.parseFunctionCallExpression(id);\n }\n\n parseParenthesisExp () {\n this.checkOpenParenthesis();\n const tokenA = this.getToken();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n const tokenB = this.getToken();\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n this.pos++;\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n parseActualParameters () {\n this.checkOpenParenthesis();\n this.pos++;\n if(this.checkCloseParenthesis(true)) {\n this.pos++;\n return [];\n }\n this.consumeNewLines();\n const list = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n return list;\n }\n\n parseExpressionList () {\n const list = [];\n while(true) {\n const exp = this.parseExpressionOR();\n list.push(exp);\n const maybeToken = this.getToken();\n if (maybeToken.type !== this.lexerClass.COMMA) {\n break;\n } else {\n this.pos++;\n this.consumeNewLines();\n }\n }\n return list;\n }\n\n getTypeArray () {\n const types = this.insideScope(IVProgParser.FUNCTION) ? this.functionTypes : this.variableTypes;\n return types.map( x => this.lexer.literalNames[x]);\n }\n}","export const Operators = Object.freeze({\n ADD: {ord: 0, value: \"+\"},\n SUB: {ord: 1, value: \"-\"},\n MULT: {ord: 2, value: '*'},\n DIV: {ord: 3, value: '/'},\n MOD: {ord: 4, value: '%'},\n GT: {ord: 5, value: '>'},\n GE: {ord: 6, value: '>='},\n LT: {ord: 7, value: '<'},\n LE: {ord: 8, value: '<='},\n EQ: {ord: 9, value: '=='},\n NEQ: {ord: 10, value: '!='},\n AND: {ord: 11, value: 'and'},\n OR: {ord: 12, value: 'or'},\n NOT: {ord: 13, value: 'not'}\n});\n\nexport function convertFromString (op) {\n switch (op) {\n case '+' : return Operators.ADD;\n case '-' : return Operators.SUB;\n case '*' : return Operators.MULT;\n case '/' : return Operators.DIV;\n case '%' : return Operators.MOD;\n case '>' : return Operators.GT;\n case '>=' : return Operators.GE;\n case '<' : return Operators.LT;\n case '<=' : return Operators.LE;\n case '==' : return Operators.EQ;\n case '!=' : return Operators.NEQ;\n case 'and' : return Operators.AND;\n case 'or' : return Operators.OR;\n case 'not' : return Operators.NOT;\n }\n}","export class SourceInfo {\n\n static createSourceInfo (token) {\n return new SourceInfo(token.line, token.column, token.text.length);\n }\n\n static createSourceInfoFromList (tokenA, tokenB) {\n const line = tokenA.line;\n const column = tokenA.column;\n // copied from https://github.com/UNIVALI-LITE/Portugol-Studio/blob/master/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/Portugol.g\n // No idea why...\n const size = tokenB.tokenIndex + 1 - tokenA.tokenIndex\n return new SourceInfo(line, column, size);\n }\n\n constructor (line, column, size) {\n this.line = line;\n this.column = column;\n this.size = size;\n }\n\n}","import {Input} from './input';\nimport $ from 'jquery';\n\nexport class DOMInput extends Input{\n\n constructor (element) {\n super();\n this.el = $(element);\n this.listeners = [];\n this.setupEvents();\n }\n\n setupEvents () {\n this.el.on('keydown', (e) => {\n const code = e.keyCode || e.which;\n if (code === 13) {\n let text = this.el.val();\n text = text.replace('[\\n\\r]+', '');\n this.notifyInput(text);\n this.el.val('');\n }\n });\n }\n\n requestInput (callback) {\n this.listeners.push(callback);\n this.el.focus();\n }\n\n notifyInput (text) {\n this.listeners.forEach(resolve => {\n resolve(text);\n })\n this.listeners.splice(0, this.listeners.length);\n }\n\n}","import { Output } from './output';\nimport $ from 'jquery';\n\nexport class DOMOutput extends Output {\n\n constructor (selector) {\n super();\n this.el = $(selector);\n }\n\n sendOutput (text) {\n text = text.replace(\"\\n\", '</br>');\n text = text.replace(/\\t/g,'&#9;');\n const span = $('<span />').addClass('ivprog-io-output-text').html(text);\n this.el.append(span);\n }\n\n clear () {\n this.el.empty();\n }\n}","export class Input {\n\n requestInput (callback) {\n throw new Error(\"Must be implemented\");\n }\n}","export class Output {\n\n sendOutput (text) {\n throw new Error(\"Must be implemented\");\n }\n}","import { IVProgParser } from './ast/ivprogParser';\nimport { IVProgProcessor } from './processor/ivprogProcessor';\nimport { SemanticAnalyser } from \"./processor/semantic/semanticAnalyser\";\nimport {DOMInput} from './io/domInput';\nimport {DOMOutput} from './io/domOutput';\nimport { LanguageService } from './services/languageService';\nimport { LocalizedStrings } from './services/localizedStringsService';\n\nconst ivprogLexer = LanguageService.getCurrentLexer();\nconsole.log(LocalizedStrings.getUI('start'));\n\n// const lexer = new ivprogLexer(new InputStream(input));\n// const stream = new CommonTokenStream(lexer);\n// stream.fill();\n// let i = 1;\n// let token = null;\n// while ((token = stream.LT(i)).type !== ivprogLexer.EOF && token.type !== ivprogLexer.WHITESPACE) {\n// console.log(`${token.type}-${token.text}`);\n// console.log('\\n')\n// i++;\n// }\n// const anaSin = new IVProgParser(input, ivprogLexer);\nconst editor = new JsonEditor('#json-renderer', {});\nconst domIn = new DOMInput('#dom-in');\nconst domOut = new DOMOutput('#dom-out');\n// proc.interpretAST().then( sto => {\n// console.log(sto.applyStore('a'));\n// }).catch(e => console.log(e));\ntry {\n $('#btn').click( () => {\n const input = $('#input').val();\n const analiser = new IVProgParser(input, ivprogLexer);\n try {\n const data = analiser.parseTree();\n const semAna = new SemanticAnalyser(data);\n const proc = new IVProgProcessor(semAna.analyseTree());\n proc.registerInput(domIn);\n domOut.clear();\n proc.registerOutput(domOut);\n proc.interpretAST().then(_ => editor.load({}))\n .catch( e => {alert(e);console.log(e);});\n } catch (error) {\n alert(error);\n console.log(error);\n }\n \n });\n} catch(a) {\n console.log(a);\n}","import { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { MultiType } from '../typeSystem/multiType';\n\nfunction buildInfixAddTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n table[Types.INTEGER.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n table[Types.REAL.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.STRING.ord][Types.INTEGER.ord] = Types.STRING;\n table[Types.STRING.ord][Types.REAL.ord] = Types.STRING;\n table[Types.STRING.ord][Types.STRING.ord] = Types.STRING;\n table[Types.STRING.ord][Types.BOOLEAN.ord] = Types.STRING;\n\n return table;\n}\n\nfunction buildInfixMultiDivSubTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n\n return table;\n}\n\nfunction buildInfixEqualityInequalityTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixRelationalTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixAndOrTable () {\n const table = [[], [], [], []];\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixModTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n\n return table;\n}\n\nfunction buildUnarySumSubList () {\n const list = [];\n\n list[Types.INTEGER.ord] = Types.INTEGER;\n\n list[Types.REAL.ord] = Types.REAL;\n\n return list;\n}\n\nfunction buildUnaryNegList () {\n const list = [];\n\n list[Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return list;\n}\n\nfunction buildInfixCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildInfixAddTable());\n compatibilityMap.set(Operators.SUB, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.MULT, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.DIV, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.EQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.NEQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.GE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.GT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.OR, buildInfixAndOrTable());\n compatibilityMap.set(Operators.AND, buildInfixAndOrTable());\n compatibilityMap.set(Operators.MOD, buildInfixModTable());\n return compatibilityMap;\n}\n\nfunction buildUnaryCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildUnarySumSubList());\n compatibilityMap.set(Operators.SUB, buildUnarySumSubList());\n compatibilityMap.set(Operators.NOT, buildUnaryNegList());\n return compatibilityMap;\n}\n\nconst infixMap = buildInfixCompatibilityTable();\nconst unaryMap = buildUnaryCompatibilityTable();\n\nexport function resultTypeAfterInfixOp (operator, leftExpressionType, rightExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType && rightExpressionType instanceof MultiType) {\n let newMulti = [];\n for (let i = 0; i < leftExpressionType.types.length; i++) {\n const element = leftExpressionType.types[i];\n if(rightExpressionType.types.indexOf(element) !== -1) {\n newMulti.push(element);\n }\n }\n if(newMulti.length <= 0) {\n return Types.UNDEFINED;\n } else {\n return new MultiType(newMulti)\n }\n } else if(leftExpressionType instanceof MultiType) {\n if(leftExpressionType.isCompatible(rightExpressionType)) {\n return rightExpressionType;\n } else {\n return Types.UNDEFINED;\n }\n } else if(rightExpressionType instanceof MultiType) {\n if(rightExpressionType.isCompatible(leftExpressionType)) {\n return leftExpressionType;\n } else {\n return Types.UNDEFINED;\n }\n }\n const resultType = infixMap.get(operator)[leftExpressionType.ord][rightExpressionType.ord];\n if (resultType === null || resultType === undefined) {\n return Types.UNDEFINED\n }\n return resultType;\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n }\n }\n}\n\nexport function resultTypeAfterUnaryOp (operator, leftExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType){\n return leftExpressionType;\n }\n return unaryMap.get(operator)[leftExpressionType.ord];\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n } \n }\n}","export const Context = Object.freeze({\n BASE: Symbol('context:base'),\n BREAKABLE: Symbol('context:breakable'),\n FUNCTION: Symbol('context:function')\n});","import { LanguageService } from '../services/languageService';\nimport {createInputFun, createOutputFun} from './lib/io';\nimport {createLengthFun, createLowercaseFun,\n createrCharAtFun, createSubstringFun,\n createUppercaseFun} from './lib/strings';\nimport {createMatrixColumnsFun, createMatrixLinesFun,\n createNumElementsFun} from './lib/arrays';\nimport {createCastBoolFun, createCastIntFun,\n createCastRealFun, createCastStringFun,\n createIsBoolFun, createIsIntFun,\n createIsRealFun} from './lib/lang';\nimport {createAbsFun, createCosFun,\n createInvertFun, createLogFun,\n createMaxFun, createMinFun,\n createNegateFun, createPowFun,\n createSinFun, createSqrtFun,\n createTanFun} from './lib/math';\n\nfunction valueToKey (value, object) {\n for (const key in object) {\n if(object.hasOwnProperty(key)){\n if (object[key] === value) {\n return key;\n }\n }\n }\n return null;\n}\n\nfunction concatObjects (...objs) {\n let result = {};\n for (let i = 0; i < objs.length; i++) {\n const obj = objs[i];\n for(const key in obj) {\n if(obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n }\n return result;\n}\n\nconst libsObject = {\n $mathLib: {\n $sin: createSinFun(),\n $cos: createCosFun(),\n $tan: createTanFun(),\n $sqrt: createSqrtFun(),\n $pow: createPowFun(),\n $log: createLogFun(),\n $abs: createAbsFun(),\n $negate: createNegateFun(),\n $invert: createInvertFun(),\n $max: createMaxFun(),\n $min: createMinFun()\n },\n $ioLib: {\n $read: createInputFun(),\n $write: createOutputFun()\n },\n $strLib: {\n $substring: createSubstringFun(),\n $length: createLengthFun(),\n $uppercase: createUppercaseFun(),\n $lowercase: createLowercaseFun(),\n $charAt: createrCharAtFun(),\n },\n $arrayLib: {\n $numElements: createNumElementsFun(),\n $matrixLines: createMatrixLinesFun(),\n $matrixColumns: createMatrixColumnsFun()\n },\n $langLib: {\n $isReal: createIsRealFun(),\n $isInt: createIsIntFun(),\n $isBool: createIsBoolFun(),\n $castReal: createCastRealFun(),\n $castInt: createCastIntFun(),\n $castBool: createCastBoolFun(),\n $castString: createCastStringFun()\n }\n}\n\nconst funcsObject = concatObjects(libsObject.$ioLib, libsObject.$langLib,\n libsObject.$strLib, libsObject.$arrayLib);\n\nexport const LanguageDefinedFunction = Object.freeze({\n getMainFunctionName: () => LanguageService.getCurrentLangFuncs().main_function,\n getInternalName: (localName) => {\n if (localName.indexOf(\".\") !== -1) {\n const names = localName.split(\".\");\n const lib = valueToKey(names[0], LanguageService.getCurrentLangLibs());\n const internalName = valueToKey(names[1], LanguageService.getCurrentLangFuncs());\n if (lib === null || internalName === null) {\n return null;\n }\n return lib + \".\" + internalName;\n }\n const funcName = valueToKey(localName, LanguageService.getCurrentLangFuncs());\n if(funcName !== null) {\n if(funcsObject[funcName]) {\n return funcName;\n }\n }\n return null;\n },\n getFunction: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = names[0];\n const funName = names[1];\n return libsObject[libName][funName];\n }\n return funcsObject[internalName];\n },\n getLocalName: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = LanguageService.getCurrentLangLibs()[names[0]];\n const funName = LanguageService.getCurrentLangFuncs()[names[1]];\n return `${libName}.${funName}`;\n } else if (LanguageService.getCurrentLangFuncs()[internalName]) {\n return LanguageService.getCurrentLangFuncs()[internalName];\n } else { \n return internalName\n }\n }\n});","import { RuntimeError } from './runtimeError';\nimport { SemanticError } from './semanticError';\nimport { LocalizedStrings } from './../../services/localizedStringsService';\nimport { Operators } from '../../ast/operators';\n\nfunction translateType (type, dim) {\n switch (dim) {\n case 0:\n return LocalizedStrings.getUI(type);\n default:\n const transType = LocalizedStrings.getUI(type);\n if(dim === 1)\n return LocalizedStrings.getUI(\"vector_string\", [transType])\n else\n return LocalizedStrings.getUI(\"matrix_string\", [transType])\n }\n}\n\nfunction translateOp (op) {\n switch(op.ord) {\n case Operators.AND.ord:\n case Operators.OR.ord:\n case Operators.NOT.ord:\n return LocalizedStrings.getUI(op.value);\n default:\n return op.value;\n }\n}\n\nexport const ProcessorErrorFactory = Object.freeze({\n symbol_not_found_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"symbol_not_found_full\", context));\n } else {\n return ProcessorErrorFactory.symbol_not_found(id);\n }\n },\n symbol_not_found: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"symbol_not_found\", context));\n },\n function_missing_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"function_missing_full\", context));\n } else {\n return ProcessorErrorFactory.function_missing(id);\n }\n },\n function_missing: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"function_missing\", context));\n },\n main_missing: () => {\n return new SemanticError(LocalizedStrings.getError(\"main_missing\"));\n }, // TODO: better urgent error message\n array_dimension_not_int_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_int_full\", context));\n } else {\n return ProcessorErrorFactory.array_dimension_not_int();\n }\n },\n array_dimension_not_int: () => {\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_int\"));\n },\n unknown_command_full: (sourceInfo)=> {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new RuntimeError(LocalizedStrings.getError(\"unknown_command_full\", context));\n } else {\n return ProcessorErrorFactory.unknown_command();\n }\n \n },\n unknown_command: ()=> {\n return new RuntimeError(LocalizedStrings.getError(\"unknown_command\"));\n },\n incompatible_types_full: (type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_full\", context));\n } else {\n return ProcessorErrorFactory.incompatible_types(type, dim);\n }\n },\n incompatible_types: (type, dim) => {\n const context = [translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types\", context));\n },\n incompatible_types_array_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_array_full\", context));\n } else {\n return ProcessorErrorFactory.incompatible_types_array(exp, type, dim);\n }\n },\n incompatible_types_array: (exp, type, dim) => {\n const context = [exp, translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_array\", context));\n },\n loop_condition_type_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"loop_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.loop_condition_type();\n }\n },\n loop_condition_type: () => {\n return new SemanticError(LocalizedStrings.getError(\"loop_condition_type\"));\n },\n endless_loop_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"endless_loop_full\", context));\n } else {\n return ProcessorErrorFactory.endless_loop();\n }\n },\n endless_loop: () => {\n return new SemanticError(LocalizedStrings.getError(\"endless_loop\"));\n },\n for_condition_type_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"for_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.for_condition_type();\n }\n },\n for_condition_type: () => {\n return new SemanticError(LocalizedStrings.getError(\"for_condition_type\"));\n },\n if_condition_type_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"if_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.if_condition_type();\n }\n },\n if_condition_type: () => {\n return new SemanticError(LocalizedStrings.getError(\"if_condition_type\"));\n },\n invalid_global_var: () => {\n return new RuntimeError(LocalizedStrings.getError(\"invalid_global_var\"))\n },\n not_implemented: (id) => {\n const context = [id]\n return new RuntimeError(LocalizedStrings.getError(\"not_implemented\", context))\n },\n invalid_case_type_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_case_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_case_type(exp, type, dim);\n }\n },\n invalid_case_type: (exp, type, dim) => {\n const context = [exp, translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_case_type\", context));\n },\n void_in_expression_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, id];\n return new SemanticError(LocalizedStrings.getError(\"void_in_expression_full\", context));\n } else {\n return ProcessorErrorFactory.void_in_expression(id);\n }\n },\n void_in_expression: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"void_in_expression\", context));\n },\n invalid_array_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_array_access_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_access(id);\n }\n },\n invalid_array_access: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_array_access\", context));\n },\n invalid_matrix_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_matrix_access_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_matrix_access(id);\n }\n },\n invalid_matrix_access: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_matrix_access\", context));\n },\n matrix_column_outbounds_full: (id, value, columns, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, columns];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_column_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.matrix_column_outbounds(id, value, columns);\n }\n },\n matrix_column_outbounds: (id, value, columns) => {\n const context = [value, id, columns];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_column_outbounds\", context));\n },\n matrix_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_line_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.matrix_line_outbounds(id, value, lines);\n }\n },\n matrix_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_line_outbounds\", context));\n },\n vector_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"vector_line_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.vector_line_outbounds(id, value, lines);\n }\n },\n vector_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"vector_line_outbounds\", context));\n },\n vector_not_matrix_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id];\n return new RuntimeError(LocalizedStrings.getError(\"vector_not_matrix_full\", context));\n } else {\n return ProcessorErrorFactory.vector_not_matrix(id);\n }\n },\n vector_not_matrix: (id) => {\n const context = [id];\n return new RuntimeError(LocalizedStrings.getError(\"vector_not_matrix\", context));\n },\n function_no_return: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"function_no_return\", context));\n },\n invalid_void_return_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_void_return_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_void_return(id, type, dim);\n }\n },\n invalid_void_return: (id, type, dim) => {\n const context = [id, translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_void_return_full\", context));\n },\n invalid_return_type_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_return_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_return_type(id, type, dim);\n }\n },\n invalid_return_type: (id, type, dim) => {\n const context = [id, translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_return_type\", context));\n },\n invalid_parameters_size_full: (id, expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, expected, actual];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameters_size_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_parameters_size(id, expected, actual);\n }\n },\n invalid_parameters_size: (id, expected, actual) => {\n const context = [id, expected, actual];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameters_size\", context));\n },\n invalid_parameter_type_full: (id, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, id, sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameter_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_parameter_type(id, exp);\n }\n },\n invalid_parameter_type: (id, exp) => {\n const context = [exp, id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameter_type_full\", context));\n },\n invalid_ref_full: (id, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, id , sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"invalid_ref_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_ref(id, exp);\n }\n },\n invalid_ref: (id, exp) => {\n const context = [exp, id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_ref\", context));\n },\n unexpected_break_command_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new RuntimeError(LocalizedStrings.getError(\"unexpected_break_command_full\", context));\n } else {\n return ProcessorErrorFactory.unexpected_break_command();\n }\n },\n unexpected_break_command: () => {\n return new RuntimeError(LocalizedStrings.getError(\"unexpected_break_command\"));\n },\n invalid_array_literal_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, exp];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(exp);\n }\n },\n invalid_array_literal_type: (exp) => {\n const context = [exp];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_type\", context));\n },\n invalid_array_literal_line_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_line_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(expected, actual);\n }\n },\n invalid_array_literal_line: (expected, actual) => {\n const context = [expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_line\", context));\n },\n invalid_array_literal_column_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_column_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_column(expected, actual);\n }\n },\n invalid_array_literal_column: (expected, actual) => {\n const context = [expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_column\", context));\n },\n invalid_unary_op_full: (opName, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, translateOp(opName), translateType(type, dim)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_unary_op_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_unary_op(opName, type, dim);\n }\n },\n invalid_unary_op: (opName, type, dim) => {\n const context = [translateOp(opName), translateType(type, dim)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_unary_op\", context));\n },\n invalid_infix_op_full: (opName, typeLeft, dimLeft, typeRight, dimRight, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, translateOp(opName), translateType(typeLeft, dimLeft), translateType(typeRight, dimRight)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_infix_op_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_infix_op(opName, typeLeft, dimLeft, typeRight, dimRight);\n }\n },\n invalid_infix_op: (opName, typeLeft, dimLeft, typeRight, dimRight) => {\n const context = [translateOp(opName), translateType(typeLeft, dimLeft), translateType(typeRight, dimRight)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_infix_op\", context));\n },\n array_dimension_not_positive_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_positive_full\", context));\n } else {\n return ProcessorErrorFactory.array_dimension_not_positive();\n }\n },\n array_dimension_not_positive: () => {\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_positive\"));\n }\n});","export class RuntimeError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, RuntimeError);\n }\n}","export class SemanticError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SemanticError);\n }\n}","import { Store } from './store/store';\nimport { StoreObject } from './store/storeObject';\nimport { StoreObjectArray } from './store/storeObjectArray';\nimport { StoreObjectRef } from './store/storeObjectRef';\nimport { Modes } from './modes';\nimport { Context } from './context';\nimport { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { LanguageDefinedFunction } from './definedFunctions';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from './compatibilityTable';\nimport * as Commands from './../ast/commands/';\nimport * as Expressions from './../ast/expressions/';\nimport { StoreObjectArrayAddress } from './store/storeObjectArrayAddress';\nimport { StoreObjectArrayAddressRef } from './store/storeObjectArrayAddressRef';\nimport { CompoundType } from './../typeSystem/compoundType';\nimport { convertToString } from '../typeSystem/parsers';\nimport { Config } from '../util/config';\nimport Decimal from 'decimal.js';\nimport { ProcessorErrorFactory } from './error/processorErrorFactory';\nimport { RuntimeError } from './error/runtimeError';\n\nexport class IVProgProcessor {\n\n static get LOOP_TIMEOUT () {\n return Config.loopTimeout;\n }\n\n static set LOOP_TIMEOUT (ms) {\n Config.setConfig({loopTimeout: ms});\n }\n\n static get MAIN_INTERNAL_ID () {\n return \"$main\";\n }\n\n constructor (ast) {\n this.ast = ast;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.input = null;\n this.forceKill = false;\n this.loopTimers = [];\n this.output = null;\n }\n\n registerInput (input) {\n this.input = input;\n }\n\n registerOutput (output) {\n this.output = output;\n }\n\n checkContext(context) {\n return this.context[this.context.length - 1] === context;\n }\n\n ignoreSwitchCases (store) {\n if (store.mode === Modes.RETURN) {\n return true;\n } else if (store.mode === Modes.BREAK) {\n return true;\n } else {\n return false;\n }\n }\n\n interpretAST () {\n this.initGlobal();\n const mainFunc = this.findMainFunction();\n if(mainFunc === null) {\n throw ProcessorErrorFactory.main_missing();\n }\n return this.runFunction(mainFunc, [], this.globalStore);\n }\n\n initGlobal () {\n if(!this.checkContext(Context.BASE)) {\n throw ProcessorErrorFactory.invalid_global_var();\n }\n this.ast.global.forEach(decl => {\n this.executeCommand(this.globalStore, decl).then(sto => this.globalStore = sto);\n });\n }\n\n findMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n if(name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!!!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!!!val) {\n // TODO: better error message;\n throw ProcessorErrorFactory.function_missing(name);\n }\n return val;\n }\n }\n\n runFunction (func, actualParameters, store) {\n const funcName = func.isMain ? IVProgProcessor.MAIN_INTERNAL_ID : func.name;\n let funcStore = new Store(funcName);\n funcStore.extendStore(this.globalStore);\n let returnStoreObject = null;\n if(func.returnType instanceof CompoundType) {\n if(func.returnType.dimensions > 1) {\n returnStoreObject = new StoreObjectArray(func.returnType,-1,-1,[[]]);\n } else {\n returnStoreObject = new StoreObjectArray(func.returnType,-1,null,[]);\n }\n } else {\n returnStoreObject = new StoreObject(func.returnType, null);\n }\n funcStore.insertStore('$', returnStoreObject);\n const newFuncStore$ = this.associateParameters(func.formalParameters, actualParameters, store, funcStore);\n return newFuncStore$.then(sto => {\n this.context.push(Context.FUNCTION);\n this.stores.push(sto);\n return this.executeCommands(sto, func.variablesDeclarations)\n .then(stoWithVars => this.executeCommands(stoWithVars, func.commands)).then(finalSto => {\n this.stores.pop();\n this.context.pop();\n return finalSto;\n });\n });\n }\n\n associateParameters (formalList, actualList, callerStore, calleeStore) {\n const funcName = calleeStore.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : calleeStore.name;\n\n if (formalList.length != actualList.length) {\n throw ProcessorErrorFactory.invalid_parameters_size(funcName, formalList.length, actualList.length);\n }\n const promises$ = actualList.map(actualParameter => this.evaluateExpression(callerStore, actualParameter));\n return Promise.all(promises$).then(values => {\n for (let i = 0; i < values.length; i++) {\n const stoObj = values[i];\n const exp = actualList[i]\n const formalParameter = formalList[i];\n if(formalParameter.type.isCompatible(stoObj.type)) {\n if(formalParameter.byRef && !stoObj.inStore) {\n throw ProcessorErrorFactory.invalid_ref(funcName, exp.toString());\n }\n\n if(formalParameter.byRef) {\n let ref = null;\n if (stoObj instanceof StoreObjectArrayAddress) {\n ref = new StoreObjectArrayAddressRef(stoObj);\n } else {\n ref = new StoreObjectRef(stoObj.id, callerStore);\n }\n calleeStore.insertStore(formalParameter.id, ref);\n } else {\n let realValue = this.parseStoreObjectValue(stoObj);\n calleeStore.insertStore(formalParameter.id, realValue);\n }\n } else {\n throw ProcessorErrorFactory.invalid_parameter_type(funcName, exp.toString());\n }\n }\n return calleeStore;\n });\n }\n\n executeCommands (store, cmds) {\n // helper to partially apply a function, in this case executeCommand\n const outerRef = this;\n const partial = (fun, cmd) => (sto) => fun(sto, cmd);\n return cmds.reduce((lastCommand, next) => {\n const nextCommand = partial(outerRef.executeCommand.bind(outerRef), next);\n return lastCommand.then(nextCommand);\n }, Promise.resolve(store));\n }\n\n executeCommand (store, cmd) {\n\n if(this.forceKill) {\n return Promise.reject(\"FORCED_KILL!\");\n } else if (store.mode === Modes.PAUSE) {\n return Promise.resolve(this.executeCommand(store, cmd));\n } else if(store.mode === Modes.RETURN) {\n return Promise.resolve(store);\n } else if(this.checkContext(Context.BREAKABLE) && store.mode === Modes.BREAK) {\n return Promise.resolve(store);\n }\n\n if (cmd instanceof Commands.Declaration) {\n return this.executeDeclaration(store, cmd);\n } else if (cmd instanceof Commands.ArrayIndexAssign) {\n return this.executeArrayIndexAssign(store, cmd);\n } else if (cmd instanceof Commands.Assign) {\n return this.executeAssign(store, cmd);\n } else if (cmd instanceof Commands.Break) {\n return this.executeBreak(store, cmd);\n } else if (cmd instanceof Commands.Return) {\n return this.executeReturn(store, cmd);\n } else if (cmd instanceof Commands.IfThenElse) {\n return this.executeIfThenElse(store, cmd);\n } else if (cmd instanceof Commands.While) {\n return this.executeWhile(store, cmd);\n } else if (cmd instanceof Commands.DoWhile) {\n return this.executeDoWhile(store, cmd);\n } else if (cmd instanceof Commands.For) {\n return this.executeFor(store, cmd);\n } else if (cmd instanceof Commands.Switch) {\n return this.executeSwitch(store, cmd);\n } else if (cmd instanceof Expressions.FunctionCall) {\n \n return this.executeFunctionCall(store, cmd);\n } else if (cmd instanceof Commands.SysCall) {\n return this.executeSysCall(store, cmd);\n } else {\n throw ProcessorErrorFactory.unknown_command(cmd.sourceInfo);\n }\n }\n\n executeSysCall (store, cmd) {\n const func = cmd.langFunc.bind(this);\n return func(store, cmd);\n }\n\n executeFunctionCall (store, cmd) {\n let func = null;\n if(cmd.isMainCall) {\n func = this.findMainFunction();\n } else {\n func = this.findFunction(cmd.id);\n }\n return this.runFunction(func, cmd.actualParameters, store)\n .then(sto => {\n if(!Types.VOID.isCompatible(func.returnType) && sto.mode !== Modes.RETURN) {\n const funcName = func.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : func.name;\n return Promise.reject(ProcessorErrorFactory.function_no_return(funcName));\n } else {\n return store;\n }\n })\n }\n\n executeSwitch (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const auxCaseFun = (promise, switchExp, aCase) => {\n return promise.then( result => {\n const sto = result.sto;\n if (this.ignoreSwitchCases(sto)) {\n return Promise.resolve(result);\n } else if (result.wasTrue || aCase.isDefault) {\n const $newSto = this.executeCommands(result.sto,aCase.commands);\n return $newSto.then(nSto => {\n return Promise.resolve({wasTrue: true, sto: nSto});\n });\n } else {\n const $value = this.evaluateExpression(sto,\n new Expressions.InfixApp(Operators.EQ, switchExp, aCase.expression));\n return $value.then(vl => {\n if (vl.value) {\n const $newSto = this.executeCommands(result.sto,aCase.commands);\n return $newSto.then(nSto => {\n return Promise.resolve({wasTrue: true, sto: nSto});\n });\n } else {\n return Promise.resolve({wasTrue: false, sto: sto});\n }\n });\n }\n });\n }\n\n try {\n let breakLoop = false;\n let $result = Promise.resolve({wasTrue: false, sto: store});\n for (let index = 0; index < cmd.cases.length && !breakLoop; index++) {\n const aCase = cmd.cases[index];\n $result = auxCaseFun($result, cmd.expression, aCase);\n $result.then( r => breakLoop = this.ignoreSwitchCases(r.sto));\n }\n return $result.then(r => {\n this.context.pop();\n if(r.sto.mode === Modes.BREAK) {\n r.sto.mode = Modes.RUN;\n }\n return r.sto;\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeFor (store, cmd) {\n try {\n //BEGIN for -> while rewrite\n const initCmd = cmd.assignment;\n const condition = cmd.condition;\n const increment = cmd.increment;\n const whileBlock = new Commands.CommandBlock([],\n cmd.commands.concat(increment));\n const forAsWhile = new Commands.While(condition, whileBlock);\n //END for -> while rewrite\n const newCmdList = [initCmd,forAsWhile];\n return this.executeCommands(store, newCmdList);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeDoWhile (store, cmd) {\n const outerRef = this;\n try {\n outerRef.loopTimers.push(Date.now());\n outerRef.context.push(Context.BREAKABLE);\n const $newStore = outerRef.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n if(sto.mode === Modes.BREAK) {\n outerRef.context.pop();\n sto.mode = Modes.RUN;\n outerRef.loopTimers.pop();\n return sto;\n }\n const $value = outerRef.evaluateExpression(sto, cmd.expression);\n return $value.then(vl => {\n if (!vl.type.isCompatible(Types.BOOLEAN)) {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo));\n }\n if (vl.value) {\n outerRef.context.pop();\n for (let i = 0; i < outerRef.loopTimers.length; i++) {\n const time = outerRef.loopTimers[i];\n if(Date.now() - time >= IVProgProcessor.LOOP_TIMEOUT) {\n outerRef.forceKill = true;\n return Promise.reject(ProcessorErrorFactory.endless_loop_full(cmd.sourceInfo));\n }\n }\n return outerRef.executeCommand(sto, cmd);\n } else {\n outerRef.context.pop();\n outerRef.loopTimers.pop();\n return sto;\n }\n })\n })\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeWhile (store, cmd) {\n const outerRef = this;\n try {\n outerRef.loopTimers.push(Date.now());\n outerRef.context.push(Context.BREAKABLE);\n const $value = outerRef.evaluateExpression(store, cmd.expression);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.value) {\n const $newStore = outerRef.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n outerRef.context.pop();\n if (sto.mode === Modes.BREAK) {\n outerRef.loopTimers.pop();\n sto.mode = Modes.RUN;\n return sto;\n }\n for (let i = 0; i < outerRef.loopTimers.length; i++) {\n const time = outerRef.loopTimers[i];\n if(Date.now() - time >= IVProgProcessor.LOOP_TIMEOUT) {\n outerRef.forceKill = true;\n return Promise.reject(ProcessorErrorFactory.endless_loop_full(cmd.sourceInfo));\n }\n }\n return outerRef.executeCommand(sto, cmd);\n });\n } else {\n outerRef.context.pop();\n outerRef.loopTimers.pop();\n return store;\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo));\n }\n })\n \n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeIfThenElse (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.condition);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.value) {\n return this.executeCommands(store, cmd.ifTrue.commands);\n } else if( cmd.ifFalse !== null){\n if(cmd.ifFalse instanceof Commands.IfThenElse) {\n return this.executeCommand(store, cmd.ifFalse);\n } else {\n return this.executeCommands(store, cmd.ifFalse.commands);\n }\n } else {\n return Promise.resolve(store);\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.if_condition_type_full(cmd.sourceInfo));\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeReturn (store, cmd) {\n try {\n const funcType = store.applyStore('$').type;\n const $value = this.evaluateExpression(store, cmd.expression);\n const funcName = store.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : store.name;\n return $value.then(vl => {\n\n if(vl === null && funcType.isCompatible(Types.VOID)) {\n return Promise.resolve(store);\n }\n\n if (vl === null || !funcType.isCompatible(vl.type)) {\n const stringInfo = funcType.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo));\n } else {\n let realValue = this.parseStoreObjectValue(vl);\n store.updateStore('$', realValue);\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeBreak (store, cmd) {\n if(this.checkContext(Context.BREAKABLE)) {\n store.mode = Modes.BREAK;\n return Promise.resolve(store);\n } else {\n return Promise.reject(ProcessorErrorFactory.unexpected_break_command_full(cmd.sourceInfo));\n }\n }\n\n executeAssign (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.expression);\n return $value.then( vl => {\n let realValue = this.parseStoreObjectValue(vl);\n store.updateStore(cmd.id, realValue) \n return store;\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeArrayIndexAssign (store, cmd) {\n const mustBeArray = store.applyStore(cmd.id);\n if(!(mustBeArray.type instanceof CompoundType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo));\n }\n const line$ = this.evaluateExpression(store, cmd.line);\n const column$ = this.evaluateExpression(store, cmd.column);\n const value$ = this.evaluateExpression(store, cmd.expression);\n return Promise.all([line$, column$, value$]).then(results => {\n const lineSO = results[0];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = lineSO.number;\n const columnSO = results[1];\n let column = null\n if (columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = columnSO.number;\n }\n const value = this.parseStoreObjectValue(results[2]);\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n if (column !== null && mustBeArray.columns === null ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(cmd.id, cmd.sourceInfo));\n }\n if(column !== null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(cmd.id, column,mustBeArray.columns, cmd.sourceInfo));\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n }\n\n const newArray = Object.assign(new StoreObjectArray(null,null,null), mustBeArray);\n if (column !== null) {\n if (value.type instanceof CompoundType) {\n const type = mustBeArray.type.innerType;\n const stringInfo = type.stringInfo()\n const info = stringInfo[0]\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo));\n }\n newArray.value[line].value[column] = value;\n store.updateStore(cmd.id, newArray);\n } else {\n if(mustBeArray.columns !== null && value.type instanceof CompoundType) {\n const type = mustBeArray.type;\n const stringInfo = type.stringInfo()\n const info = stringInfo[0]\n const exp = cmd.expression.toString()\n return Promise.reject(ProcessorErrorFactory.incompatible_types_array_full(exp,info.type, info.dim-1, cmd.sourceInfo));\n }\n newArray.value[line] = value;\n store.updateStore(cmd.id, newArray);\n }\n return store;\n });\n }\n\n executeDeclaration (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.initial);\n if(cmd instanceof Commands.ArrayDeclaration) {\n const $lines = this.evaluateExpression(store, cmd.lines);\n const $columns = cmd.columns === null ? null: this.evaluateExpression(store, cmd.columns);\n return Promise.all([$lines, $columns, $value]).then(values => {\n const lineSO = values[0];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = lineSO.number;\n if(line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n const columnSO = values[1];\n let column = null\n if (columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = columnSO.number;\n if(column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n }\n const value = values[2];\n const temp = new StoreObjectArray(cmd.type, line, column, null);\n store.insertStore(cmd.id, temp);\n let realValue = value;\n if (value !== null) {\n if(value instanceof StoreObjectArrayAddress) {\n if(value.type instanceof CompoundType) {\n realValue = Object.assign(new StoreObjectArray(null,null,null), value.refValue);\n } else {\n realValue = Object.assign(new StoreObject(null,null), value.refValue);\n }\n }\n } else {\n realValue = new StoreObjectArray(cmd.type, line, column, [])\n if(column !== null) {\n for (let i = 0; i < line; i++) {\n realValue.value.push(new StoreObjectArray(new CompoundType(cmd.type.innerType, 1), column, null, []));\n }\n }\n }\n realValue.readOnly = cmd.isConst;\n store.updateStore(cmd.id, realValue);\n return store;\n });\n \n } else {\n const temp = new StoreObject(cmd.type, null);\n store.insertStore(cmd.id, temp);\n return $value.then(vl => {\n let realValue = vl;\n if (vl !== null) {\n if(vl instanceof StoreObjectArrayAddress) {\n if(vl.type instanceof CompoundType) {\n realValue = Object.assign(new StoreObjectArray(null,null,null), vl.refValue);\n } else {\n realValue = Object.assign(new StoreObject(null,null), vl.refValue);\n }\n }\n } else {\n realValue = new StoreObject(cmd.type,0);\n }\n realValue.readOnly = cmd.isConst;\n store.updateStore(cmd.id, realValue);\n return store;\n });\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n evaluateExpression (store, exp) {\n\n if (exp instanceof Expressions.UnaryApp) {\n return this.evaluateUnaryApp(store, exp);\n } else if (exp instanceof Expressions.InfixApp) {\n return this.evaluateInfixApp(store, exp);\n } else if (exp instanceof Expressions.ArrayAccess) {\n return this.evaluateArrayAccess(store, exp);\n } else if (exp instanceof Expressions.VariableLiteral) {\n return this.evaluateVariableLiteral(store, exp);\n } else if (exp instanceof Expressions.IntLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.RealLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.BoolLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.StringLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.ArrayLiteral) {\n return this.evaluateArrayLiteral(store, exp);\n } else if (exp instanceof Expressions.FunctionCall) {\n return this.evaluateFunctionCall(store, exp);\n }\n return Promise.resolve(null);\n }\n\n evaluateFunctionCall (store, exp) {\n if(exp.isMainCall) {\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), exp.sourceInfo));\n }\n const func = this.findFunction(exp.id);\n if(Types.VOID.isCompatible(func.returnType)) {\n // TODO: better error message\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(exp.id, exp.sourceInfo));\n }\n const $newStore = this.runFunction(func, exp.actualParameters, store);\n return $newStore.then( sto => {\n if(sto.mode !== Modes.RETURN) {\n return Promise.reject(new Error(\"The function that was called did not had a return command: \"+exp.id));\n }\n const val = sto.applyStore('$');\n if (val instanceof StoreObjectArray) {\n return Promise.resolve(Object.assign(new StoreObjectArray(null,null,null,null,null), val));\n } else {\n return Promise.resolve(Object.assign(new StoreObject(null,null), val));\n }\n });\n }\n\n evaluateArrayLiteral (store, exp) {\n const errorHelperFunction = (validationResult, exp) => {\n const errorCode = validationResult[0];\n switch(errorCode) {\n case StoreObjectArray.WRONG_COLUMN_NUMBER: {\n const columnValue = validationResult[1];\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_column_full(arr.columns, columnValue, exp.sourceInfo));\n }\n case StoreObjectArray.WRONG_LINE_NUMBER: {\n const lineValue = validationResult[1];\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_line_full(arr.lines, lineValue, exp.sourceInfo));\n }\n case StoreObjectArray.WRONG_TYPE: {\n let line = null;\n let strExp = null;\n if (validationResult.length > 2) {\n line = validationResult[1];\n const column = validationResult[2];\n strExp = exp.value[line].value[column].toString()\n } else {\n line = validationResult[1];\n strExp = exp.value[line].toString()\n }\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_type_full(strExp, exp.sourceInfo)); }\n }\n };\n if(!exp.isVector) {\n const $matrix = this.evaluateMatrix(store, exp.value);\n return $matrix.then(list => {\n const type = new CompoundType(list[0].type.innerType, 2);\n const arr = new StoreObjectArray(type, list.length, list[0].lines, list);\n const checkResult = arr.isValid;\n if(checkResult.length == 0)\n return Promise.resolve(arr);\n else {\n return errorHelperFunction(checkResult, exp);\n }\n });\n } else {\n return this.evaluateVector(store, exp.value).then(list => {\n const type = new CompoundType(list[0].type, 1);\n const stoArray = new StoreObjectArray(type, list.length, null, list);\n const checkResult = stoArray.isValid;\n if(checkResult.length == 0)\n return Promise.resolve(stoArray);\n else {\n return errorHelperFunction(checkResult, exp);\n }\n });\n }\n }\n\n evaluateVector (store, exps) {\n return Promise.all(exps.map( exp => this.evaluateExpression(store, exp)));\n }\n\n evaluateMatrix (store, exps) {\n return Promise.all(exps.map( vector => {\n const $vector = this.evaluateVector(store, vector.value)\n return $vector.then(list => {\n const type = new CompoundType(list[0].type, 1);\n return new StoreObjectArray(type, list.length, null, list)\n });\n } ));\n }\n\n evaluateLiteral (_, exp) {\n return Promise.resolve(new StoreObject(exp.type, exp.value));\n }\n\n evaluateVariableLiteral (store, exp) {\n try {\n const val = store.applyStore(exp.id);\n if (val instanceof StoreObjectArray) {\n return Promise.resolve(Object.assign(new StoreObjectArray(null,null,null,null), val));\n } else {\n return Promise.resolve(Object.assign(new StoreObject(null,null), val));\n }\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n evaluateArrayAccess (store, exp) {\n const mustBeArray = store.applyStore(exp.id);\n if (!(mustBeArray.type instanceof CompoundType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(exp.id, exp.sourceInfo));\n }\n const $line = this.evaluateExpression(store, exp.line);\n const $column = this.evaluateExpression(store, exp.column);\n return Promise.all([$line, $column]).then(values => {\n const lineSO = values[0];\n const columnSO = values[1];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n const line = lineSO.number;\n let column = null;\n if(columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n column = columnSO.number;\n }\n\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo);\n }\n if (column !== null && mustBeArray.columns === null ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(exp.id, exp.sourceInfo));\n }\n if(column !== null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(exp.id, column,mustBeArray.columns, exp.sourceInfo));\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo);\n }\n \n }\n return Promise.resolve(new StoreObjectArrayAddress(mustBeArray.id, line, column, store));\n });\n }\n\n evaluateUnaryApp (store, unaryApp) {\n const $left = this.evaluateExpression(store, unaryApp.left);\n return $left.then( left => {\n const resultType = resultTypeAfterUnaryOp(unaryApp.op, left.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n const stringInfo = left.type.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_unary_op_full(unaryApp.op, info.type, info.dim, unaryApp.sourceInfo));\n }\n switch (unaryApp.op.ord) {\n case Operators.ADD.ord:\n return new StoreObject(resultType, left.value);\n case Operators.SUB.ord:\n return new StoreObject(resultType, left.value.negated());\n case Operators.NOT.ord:\n return new StoreObject(resultType, !left.value);\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid UnaryApp '+ unaryApp.op));\n }\n });\n }\n\n evaluateInfixApp (store, infixApp) {\n const $left = this.evaluateExpression(store, infixApp.left);\n const $right = this.evaluateExpression(store, infixApp.right);\n return Promise.all([$left, $right]).then(values => {\n const left = values[0];\n const right = values[1];\n const resultType = resultTypeAfterInfixOp(infixApp.op, left.type, right.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n const stringInfoLeft = left.type.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = right.type.stringInfo();\n const infoRight = stringInfoRight[0];\n return Promise.reject(ProcessorErrorFactory.invalid_infix_op_full(infixApp.op, infoLeft.type, infoLeft.dim,\n infoRight.type,infoRight.dim,infixApp.sourceInfo));\n }\n let result = null;\n switch (infixApp.op.ord) {\n case Operators.ADD.ord: {\n if(Types.STRING.isCompatible(left.type)) {\n const rightStr = convertToString(right.value, right.type);\n return new StoreObject(resultType, left.value + rightStr);\n } else if (Types.STRING.isCompatible(right.type)) {\n const leftStr = convertToString(left.value, left.type);\n return new StoreObject(resultType, leftStr + right.value);\n } else {\n return new StoreObject(resultType, left.value.plus(right.value));\n }\n }\n case Operators.SUB.ord:\n return new StoreObject(resultType, left.value.minus(right.value));\n case Operators.MULT.ord: {\n result = left.value.times(right.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n }\n case Operators.DIV.ord: {\n if (Types.INTEGER.isCompatible(resultType))\n result = left.value.divToInt(right.value);\n else\n result = left.value.div(right.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n }\n case Operators.MOD.ord: {\n result = left.value.modulo(right.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n } \n case Operators.GT.ord: {\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length > right.value.length;\n } else {\n result = left.value.gt(right.value);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.GE.ord: {\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length >= right.value.length;\n } else {\n result = left.value.gte(right.value);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.LT.ord: {\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length < right.value.length;\n } else {\n result = left.value.lt(right.value);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.LE.ord: {\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length <= right.value.length;\n } else {\n result = left.value.lte(right.value);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.EQ.ord: {\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n result = left.value.eq(right.value);\n } else {\n result = left.value === right.value;\n }\n return new StoreObject(resultType, result);\n }\n case Operators.NEQ.ord: {\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n result = !left.value.eq(right.value);\n } else {\n result = left.value !== right.value;\n }\n return new StoreObject(resultType, result);\n }\n case Operators.AND.ord:\n return new StoreObject(resultType, left.value && right.value);\n case Operators.OR.ord:\n return new StoreObject(resultType, left.value || right.value);\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid InfixApp '+ infixApp.op));\n }\n });\n }\n\n parseStoreObjectValue (vl) {\n let realValue = vl;\n if(vl instanceof StoreObjectArrayAddress) { \n if(vl.type instanceof CompoundType) {\n switch(vl.type.dimensions) {\n case 1: {\n realValue = new StoreObjectArray(vl.type, vl.value);\n break;\n }\n default: {\n throw new RuntimeError(\"Three dimensional array address...\");\n }\n }\n } else {\n realValue = new StoreObject(vl.type, vl.value);\n }\n }\n return realValue;\n }\n\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { Modes } from '../modes';\n\n/**\n * num_elements\n * matrix_lines\n * matrix_columns\n */\n\nexport function createNumElementsFun () {\n const numElementsFun = (sto, _) => {\n const vector = sto.applyStore(\"vector\");\n const temp = new StoreObject(Types.INTEGER, toInt(vector.lines));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(numElementsFun)]);\n const func = new Commands.Function('$numElements', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 1), 'vector', false)],\n block);\n return func;\n }\n\nexport function createMatrixLinesFun () {\n const matrixLinesFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreObject(Types.INTEGER, toInt(matrix.lines));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixLinesFun)]);\n const func = new Commands.Function('$matrixLines', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n\nexport function createMatrixColumnsFun () {\n const matrixColumnsFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreObject(Types.INTEGER, toInt(matrix.columns));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixColumnsFun)]);\n const func = new Commands.Function('$matrixColumns', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n ","import { StoreObject } from './../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport {toInt, toString, toBool, toReal} from './../../typeSystem/parsers';\nimport { Types } from './../../typeSystem/types';\n\nexport function createOutputFun () {\n const writeFunction = function (store, _) {\n const val = store.applyStore('p1');\n if(val.type.isCompatible(Types.INTEGER)) {\n this.output.sendOutput(val.value.toString());\n } else if (val.type.isCompatible(Types.REAL)) {\n if (val.value.dp() <= 0) {\n this.output.sendOutput(val.value.toFixed(1)); \n } else {\n this.output.sendOutput(val.value.toString());\n }\n } else {\n this.output.sendOutput(val.value);\n }\n return Promise.resolve(store);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(writeFunction)]);\n const func = new Commands.Function('$write', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', false)],\n block);\n return func;\n}\n\nexport function createInputFun () {\n const readFunction = function (store, _) {\n const request = new Promise((resolve, _) => {\n this.input.requestInput(resolve);\n });\n return request.then(text => {\n const typeToConvert = store.applyStore('p1').type;\n let stoObj = null;\n if (typeToConvert.isCompatible(Types.INTEGER)) {\n const val = toInt(text);\n stoObj = new StoreObject(Types.INTEGER, val);\n } else if (typeToConvert.isCompatible(Types.REAL)) {\n stoObj = new StoreObject(Types.REAL, toReal(text));\n } else if (typeToConvert.isCompatible(Types.BOOLEAN)) {\n stoObj = new StoreObject(Types.BOOLEAN, toBool(text));\n } else if (typeToConvert.isCompatible(Types.STRING)) {\n stoObj = new StoreObject(Types.STRING, toString(text));\n }\n this.loopTimers.splice(0,this.loopTimers.length)\n store.updateStore('p1', stoObj);\n return Promise.resolve(store);\n });\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(readFunction)]);\n const func = new Commands.Function('$read', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', true)],\n block);\n return func;\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal, convertToString } from \"./../../typeSystem/parsers\";\nimport { IVProgParser } from '../../ast/ivprogParser';\nimport { RealLiteral, IntLiteral, BoolLiteral } from '../../ast/expressions';\nimport { Modes } from '../modes';\n\n/**\n * \n * is_real\n * is_int\n * is_bool\n * cast_real\n * cast_int\n * cast_bool\n * cast_string\n */\n\nexport function createIsRealFun () {\n const isRealFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof RealLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isRealFun)]);\n const func = new Commands.Function('$isReal', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsIntFun () {\n const isIntFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof IntLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isIntFun)]);\n const func = new Commands.Function('$isInt', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsBoolFun () {\n const isBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isBoolFun)]);\n const func = new Commands.Function('$isBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastRealFun () {\n const castRealFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n switch (val.type.ord) {\n case Types.INTEGER.ord: {\n const temp = new StoreObject(Types.REAL, toReal(val.number));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(val.value);\n try {\n const result = parser.parseTerm();\n if (result instanceof RealLiteral) {\n const temp = new StoreObject(Types.REAL, result.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { \n return Promise.reject(\"cannot convert string to real\");\n }\n }\n }\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castRealFun)]);\n const func = new Commands.Function('$castReal', Types.REAL,\n [new Commands.FormalParameter(Types.ALL, 'val', false)],\n block);\n return func;\n}\n\nexport function createCastIntFun () {\n const castIntFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n switch (val.type.ord) {\n case Types.REAL.ord: {\n const temp = new StoreObject(Types.INTEGER, Math.floor(val.number));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(val.value);\n try {\n const result = parser.parseTerm();\n if (result instanceof IntLiteral) {\n const temp = new StoreObject(Types.INTEGER, result.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { \n return Promise.reject(\"cannot convert string to real\");\n }\n }\n }\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castIntFun)]);\n const func = new Commands.Function('$castInt', Types.INTEGER,\n [new Commands.FormalParameter(Types.ALL, 'val', false)],\n block);\n return func;\n}\n\nexport function createCastBoolFun () {\n const castBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n const temp = new StoreObject(Types.BOOLEAN, val.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { }\n return Promise.reject(\"cannot convert \" + str.value + \" to boolean\");\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castBoolFun)]);\n const func = new Commands.Function('$castBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastStringFun () {\n const castStringFun = function (store, _) {\n const val = store.applyStore('str');\n let result = convertToString(val)\n const temp = new StoreObject(Types.STRING, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castStringFun)]);\n const func = new Commands.Function('$castString', Types.STRING,\n [new Commands.FormalParameter(Types.ALL, 'str', false)],\n block);\n return func;\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal } from \"./../../typeSystem/parsers\";\nimport { Decimal } from 'decimal.js';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { Modes } from '../modes';\nimport { Config } from '../../util/config';\n\n/**\n * sin\n * cos\n * tan\n * sqrt\n * pow\n * log\n * abs\n * negate\n * invert\n * max\n * min\n */\n\nfunction convertToRadians (degrees) {\n return degrees.times(Decimal.acos(-1)).div(180);\n}\n\nexport function createSinFun () {\n const sinFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(1);\n } else if (angle.eq(180)) {\n result = new Decimal(0);\n } else if (angle.eq(270)) {\n result = new Decimal(-1);\n } else {\n result = Decimal.sin(convertToRadians(angle));\n }\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sinFun)]);\n const func = new Commands.Function('$sin', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createCosFun () {\n const cosFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(0);\n } else if (angle.eq(180)) {\n result = new Decimal(-1);\n } else if (angle.eq(270)) {\n result = new Decimal(0)\n }\n result = Decimal.cos(convertToRadians(angle));\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(cosFun)]);\n const func = new Commands.Function('$cos', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createTanFun () {\n const tanFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n if(angle.eq(90) || angle.eq(270)) {\n return Promise.reject(\"Tangent of \"+x.value.toNumber()+\"° is undefined.\");\n }\n let result = Decimal.tan(convertToRadians(angle));\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(tanFun)]);\n const func = new Commands.Function('$tan', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createSqrtFun () {\n const sqrtFun = (sto, _) => {\n const x = sto.applyStore('x');\n let result = x.value.sqrt();\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sqrtFun)]);\n const func = new Commands.Function('$sqrt', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createPowFun () {\n const powFun = (sto, _) => {\n const x = sto.applyStore('x');\n const y = sto.applyStore('y');\n let result = x.value.pow(y.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(powFun)]);\n const func = new Commands.Function('$pow', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false),\n new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'y', false)],\n block);\n return func;\n}\n\nexport function createLogFun () {\n const logFun = (sto, _) => {\n const x = sto.applyStore('x');\n if (x.value.isNegative()) {\n return Promise.reject(\"the value passed to log function cannot be negative\");\n }\n let result = Decimal.log10(x.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(logFun)]);\n const func = new Commands.Function('$log', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createAbsFun () {\n const absFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.value.abs();\n const temp = new StoreObject(x.type, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(absFun)]);\n const func = new Commands.Function('$abs', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createNegateFun () {\n const negateFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.value.negated();\n const temp = new StoreObject(x.type, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(negateFun)]);\n const func = new Commands.Function('$negate', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createInvertFun () {\n const invertFun = (sto, _) => {\n const x = sto.applyStore('x');\n let result = toReal(1).dividedBy(x.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(invertFun)]);\n const func = new Commands.Function('$invert', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createMaxFun () {\n const maxFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.value.map(stoObj => stoObj.value);\n const result = Decimal.max(...numbers);\n const temp = new StoreObject(x.type.innerType, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n const paramType = new CompoundType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(maxFun)]);\n const func = new Commands.Function('$max', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n\nexport function createMinFun () {\n const minFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.value.map(stoObj => stoObj.value);\n const result = Decimal.min(...numbers);\n const temp = new StoreObject(x.type.innerType, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n const paramType = new CompoundType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(minFun)]);\n const func = new Commands.Function('$min', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { Modes } from '../modes';\n\n/*\n* substring\n* length\n* uppercase\n* lowercase\n* charAt\n**/\n\nexport function createSubstringFun () {\n const substringFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const start = sto.applyStore(\"start\");\n const end = sto.applyStore(\"end\");\n const result = str.value.substring(start.value, end.value);\n const temp = new StoreObject(Types.STRING, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(substringFun)]);\n const func = new Commands.Function('$substring', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'start', false),\n new Commands.FormalParameter(Types.INTEGER, 'end', false)],\n block);\n return func;\n}\n\nexport function createLengthFun () {\n const lengthFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.INTEGER, toInt(str.value.length));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lengthFun)]);\n const func = new Commands.Function('$length', Types.INTEGER,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createUppercaseFun () {\n const uppercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.STRING, str.value.toUpperCase());\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(uppercaseFun)]);\n const func = new Commands.Function('$uppercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createLowercaseFun () {\n const lowercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.STRING, str.value.toLowerCase());\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lowercaseFun)]);\n const func = new Commands.Function('$lowercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createrCharAtFun () {\n const charAtFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const idx = sto.applyStore(\"index\");\n if (idx.value.toNumber() < 0 || idx.value.toNumber() >= str.value.length) {\n return Promise.reject(new Error(\"invalid string position\"));\n }\n const temp = new StoreObject(Types.STRING, str.value.charAt(idx.value.toNumber()));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(charAtFun)]);\n const func = new Commands.Function('$charAt', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'index', false)],\n block);\n return func;\n}\n","export const Modes = Object.freeze({\n RETURN: Symbol('mode:return'),\n BREAK: Symbol('mode:break'),\n PAUSE: Symbol('mode:pause'),\n RUN: Symbol('mode:run')\n});","import { ProcessorErrorFactory } from './../error/processorErrorFactory';\nimport { LanguageDefinedFunction } from './../definedFunctions';\nimport { LanguageService } from './../../services/languageService';\nimport { ArrayDeclaration, While, For, Switch, Assign, Break, IfThenElse, Return, ArrayIndexAssign } from '../../ast/commands';\nimport { InfixApp, UnaryApp, FunctionCall, IntLiteral, RealLiteral, StringLiteral, BoolLiteral, VariableLiteral, ArrayLiteral, ArrayAccess } from '../../ast/expressions';\nimport { Literal } from '../../ast/expressions/literal';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from '../compatibilityTable';\nimport { Types } from '../../typeSystem/types';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { MultiType } from '../../typeSystem/multiType';\n\nexport class SemanticAnalyser {\n\n constructor(ast) {\n this.ast = ast;\n this.lexerClass = LanguageService.getCurrentLexer();\n const lexer = new this.lexerClass(null);\n this.literalNames = lexer.literalNames;\n this.symbolMap = null;\n this.currentFunction = null;\n }\n\n pushMap () {\n if(this.symbolMap === null) {\n this.symbolMap = {map:{}, next: null};\n } else {\n const n = {map:{}, next: this.symbolMap};\n this.symbolMap = n;\n }\n }\n\n popMap () {\n if(this.symbolMap !== null) {\n this.symbolMap = this.symbolMap.next;\n }\n }\n\n insertSymbol (id, typeInfo) {\n this.symbolMap.map[id] = typeInfo;\n }\n\n findSymbol (id, symMap) {\n if(!symMap.map[id]) {\n if(symMap.next) {\n return this.findSymbol(id, symMap.next);\n }\n return null;\n } else {\n return symMap.map[id];\n }\n }\n\n getMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n if(name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!!!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!!!val) {\n return null;\n }\n return val;\n }\n }\n\n analyseTree () {\n const globalVars = this.ast.global;\n this.pushMap();\n this.assertDeclarations(globalVars);\n const functions = this.ast.functions;\n const mainFunc = functions.filter((f) => f.name === null);\n if (mainFunc.length <= 0) {\n throw ProcessorErrorFactory.main_missing();\n }\n for (let i = 0; i < functions.length; i++) {\n const fun = functions[i];\n this.assertFunction(fun);\n }\n return this.ast;\n }\n\n assertDeclarations (list) {\n for (let i = 0; i < list.length; i++) {\n this.assertDeclaration(list[i]);\n }\n }\n\n assertDeclaration (declaration) {\n if (declaration instanceof ArrayDeclaration) {\n if(declaration.initial === null) {\n const lineType = this.evaluateExpressionType(declaration.lines);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n if (declaration.columns !== null) {\n const columnType = this.evaluateExpressionType(declaration.columns);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n }\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines, columns: declaration.columns, type: declaration.type});\n return;\n }\n this.evaluateArrayLiteral(declaration.id, declaration.lines, declaration.columns, declaration.type, declaration.initial);\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines, columns: declaration.columns, type: declaration.type});\n\n } else {\n if(declaration.initial === null) {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type});\n return;\n }\n const resultType = this.evaluateExpressionType(declaration.initial);\n if(resultType instanceof MultiType) {\n if(!resultType.isCompatible(declaration.type)) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, declaration.sourceInfo);\n }\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type})\n } else if(!declaration.type.isCompatible(resultType)) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, declaration.sourceInfo);\n } else {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type})\n }\n }\n }\n\n evaluateExpressionType (expression) {\n if(expression instanceof UnaryApp) {\n const op = expression.op;\n const resultType = this.evaluateExpressionType(expression.left);\n return resultTypeAfterUnaryOp(op, resultType);\n } else if (expression instanceof InfixApp) {\n const op = expression.op;\n const resultTypeLeft = this.evaluateExpressionType(expression.left);\n const resultTypeRight = this.evaluateExpressionType(expression.right);\n return resultTypeAfterInfixOp(op, resultTypeLeft, resultTypeRight);\n } else if (expression instanceof Literal) {\n return this.evaluateLiteralType(expression);\n } else if (expression instanceof FunctionCall) {\n if (expression.isMainCall) {\n throw ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), expression.sourceInfo);\n }\n const fun = this.findFunction(expression.id);\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(expression.id, expression.sourceInfo);\n }\n if (fun.returnType.isCompatible(Types.VOID)) {\n throw ProcessorErrorFactory.void_in_expression_full(expression.id, expression.sourceInfo);\n }\n this.assertParameters(fun, expression.actualParameters);\n return fun.returnType;\n } else if (expression instanceof ArrayAccess) {\n const arrayTypeInfo = this.findSymbol(expression.id, this.symbolMap);\n if(arrayTypeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(expression.id, expression.sourceInfo);\n }\n if (!(arrayTypeInfo.type instanceof CompoundType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(expression.id, expression.sourceInfo);\n }\n const lineType = this.evaluateExpressionType(expression.line);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n if (expression.column !== null) {\n if (arrayTypeInfo.columns === null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(expression.id, expression.sourceInfo);\n }\n const columnType = this.evaluateExpressionType(expression.column);\n if(!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n }\n const arrType = arrayTypeInfo.type;\n if(expression.column !== null) {\n // indexing matrix\n return arrType.innerType;\n } else {\n if(arrayTypeInfo.columns === null) {\n return arrType.innerType;\n }\n return new CompoundType(arrType.innerType, 1);\n }\n }\n }\n\n evaluateLiteralType (literal) {\n if(literal instanceof IntLiteral) {\n return literal.type;\n } else if (literal instanceof RealLiteral) {\n return literal.type;\n } else if (literal instanceof StringLiteral) {\n return literal.type;\n } else if (literal instanceof BoolLiteral) {\n return literal.type;\n } else if (literal instanceof VariableLiteral) {\n const typeInfo = this.findSymbol(literal.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(literal.id, literal.sourceInfo);\n }\n if (typeInfo.type instanceof CompoundType) {\n return typeInfo.type;\n }\n return typeInfo.type;\n } else {\n console.warn(\"Evaluating type only for an array literal...\");\n let last = null;\n if(literal.value.length === 1) {\n last = this.evaluateExpressionType(literal.value[0]);\n } else {\n for (let i = 0; i < literal.value.length; i++) {\n const e = this.evaluateExpressionType(literal.value[i]);\n if(last === null) {\n last = e;\n } else if(!last.isCompatible(e)) {\n const strInfo = last.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n }\n }\n if(last instanceof CompoundType) {\n return new CompoundType(last.innerType, last.dimensions + 1);\n }\n return new CompoundType(last, 1);\n }\n }\n\n evaluateArrayLiteral (id, lines, columns, type, literal) {\n if (literal instanceof ArrayLiteral) {\n if (columns === null) {\n // it's a vector...\n const dimType = this.evaluateExpressionType(lines);\n if (!dimType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(literal.sourceInfo);\n }\n if ((lines instanceof IntLiteral)) {\n if (!lines.value.eq(literal.value.length)) {\n if(type.dimensions > 1) {\n throw ProcessorErrorFactory.matrix_line_outbounds_full(id, literal.value.length, lines.values.toNumber(), literal.sourceInfo)\n } else {\n throw ProcessorErrorFactory.vector_line_outbounds_full(id, literal.value.length, lines.values.toNumber(), literal.sourceInfo)\n }\n } else if (line.value.isNeg()) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(literal.sourceInfo);\n }\n \n }\n literal.value.reduce((last, next) => {\n const eType = this.evaluateExpressionType(next);\n if (!last.canAccept(eType)) {\n const strInfo = last.stringInfo();invalid\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n return last;\n }, type);\n return true;\n } else {\n const dimType = this.evaluateExpressionType(columns);\n if (!dimType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(literal.sourceInfo);\n }\n if ((columns instanceof IntLiteral)) {\n if (!columns.value.eq(literal.value.length)) {\n if(type.dimensions > 1) {\n throw ProcessorErrorFactory.matrix_column_outbounds_full(id, literal.value.length, columns.values.toNumber(), literal.sourceInfo)\n } else {\n throw ProcessorErrorFactory.invalid_matrix_access_full(id, literal.sourceInfo);\n }\n } else if (columns.value.isNeg()) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(literal.sourceInfo);\n }\n \n }\n for (let i = 0; i < columns; i++) {\n const anotherArray = literal.value[i];\n this.evaluateArrayLiteral(id, lines, null, type, anotherArray)\n }\n }\n\n } else {\n\n const resultType = this.evaluateExpressionType(literal);\n if (!(resultType instanceof CompoundType)) {\n const strInfo = type.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n if (!type.isCompatible(resultType)) {\n const strInfo = type.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n return true;\n }\n }\n\n assertFunction (fun) {\n this.pushMap();\n this.currentFunction = fun;\n fun.formalParameters.forEach(formalParam => {\n if(formalParam.type instanceof CompoundType) {\n if(formalParam.type.dimensions > 1) {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: -1, type: formalParam.type});\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: null, type: formalParam.type});\n }\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, type: formalParam.type});\n }\n })\n this.assertDeclarations(fun.variablesDeclarations);\n const optional = fun.returnType.isCompatible(Types.VOID);\n const valid = this.assertReturn(fun, optional);\n if (!valid) {\n throw ProcessorErrorFactory.function_no_return(fun.name);\n }\n this.popMap();\n }\n\n assertReturn (fun, optional) {\n return fun.commands.reduce(\n (last, next) => this.checkCommand(fun.returnType, next, optional) || last, optional\n );\n }\n\n checkCommand (type, cmd, optional) {\n if (cmd instanceof While) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo);\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof For) {\n this.checkCommand(type, cmd.assignment, optional);\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.for_condition_type_full(cmd.sourceInfo);\n }\n this.checkCommand(type, cmd.increment, optional);\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof Switch) {\n const sType = this.evaluateExpressionType(cmd.expression);\n let result = optional;\n let hasDefault = false;\n for (let i = 0; i < cmd.cases.length; i++) {\n const aCase = cmd.cases[i];\n if (aCase.expression !== null) {\n const caseType = this.evaluateExpressionType(aCase.expression);\n if (!sType.isCompatible(caseType)) {\n const strInfo = sType.stringInfo();\n const info = strInfo[0];\n const strExp = aCase.expression.toString();\n throw ProcessorErrorFactory.invalid_case_type_full(strExp, info.type, info.dim, aCase.sourceInfo);\n }\n } else {\n hasDefault = true;\n }\n result = result && this.checkCommands(type, aCase.commands, result); \n }\n return result && hasDefault;\n\n } else if (cmd instanceof ArrayIndexAssign) {\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n if(!(typeInfo.type instanceof CompoundType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n const lineExp = cmd.line;\n const lineType = this.evaluateExpressionType(lineExp);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n const columnExp = cmd.column;\n if (typeInfo.columns === null && columnExp !== null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(cmd.id, cmd.sourceInfo);\n } else if (columnExp !== null) {\n const columnType = this.evaluateExpressionType(columnExp);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n }\n // exp can be a arrayLiteral, a single value exp or an array access\n if(exp instanceof ArrayLiteral) {\n this.evaluateArrayLiteral(cmd.id, typeInfo.lines, (columnExp ? typeInfo.columns : null), typeInfo.type, exp);\n } else {\n // cannot properly evaluate since type system is poorly constructed\n }\n return optional;\n } else if (cmd instanceof Assign) {\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n if(exp instanceof ArrayLiteral) {\n if(!(typeInfo.type instanceof CompoundType)) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo);\n }\n this.evaluateArrayLiteral(cmd.id, typeInfo.lines, typeInfo.columns, typeInfo.type, exp);\n } else {\n const resultType = this.evaluateExpressionType(exp);\n if(!resultType.isCompatible(typeInfo.type)) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo);\n }\n }\n return optional;\n } else if (cmd instanceof Break) {\n return optional;\n } else if (cmd instanceof IfThenElse) {\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.if_condition_type_full(cmd.sourceInfo);\n }\n if(cmd.ifFalse instanceof IfThenElse) {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommand(type, cmd.ifFalse, optional);\n } else {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommands(type, cmd.ifFalse.commands,optional);\n }\n\n } else if (cmd instanceof FunctionCall) {\n let fun = null;\n if (cmd.isMainCall) {\n fun = this.getMainFunction();\n } else {\n fun = this.findFunction(cmd.id);\n }\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(cmd.id, cmd.sourceInfo);\n }\n this.assertParameters(fun, cmd.actualParameters);\n return optional;\n } else if (cmd instanceof Return) {\n const funcName = this.currentFunction.isMain ? LanguageDefinedFunction.getMainFunctionName() : this.currentFunction.name\n if (cmd.expression === null && !type.isCompatible(Types.VOID)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_void_return_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else if (cmd.expression !== null) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!type.isCompatible(resultType)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n\n checkCommands (type, cmds, optional) {\n return cmds.reduce(\n (last, next) => this.checkCommand(type, next, optional) || last, optional\n );\n }\n\n assertParameters (fun, actualParametersList) {\n if (fun.formalParameters.length !== actualParametersList.length) {\n throw ProcessorErrorFactory.invalid_parameters_size_full(fun.name, actualParametersList.length, fun.formalParameters.length, null);\n }\n for (let i = 0; i < actualParametersList.length; i++) {\n const param = actualParametersList[i];\n const formalParam = fun.formalParameters[i];\n if(formalParam.byRef) {\n if (!(param instanceof VariableLiteral || param instanceof ArrayAccess)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n }\n const resultType = this.evaluateExpressionType(param);\n if(resultType instanceof MultiType && formalParam.type instanceof MultiType) {\n let shared = 0\n for (let j = 0; j < resultType.types.length; j++) {\n const element = resultType.types[j];\n if(formalParam.type.types.indexOf(element) !== -1) {\n shared++;\n }\n }\n if(shared <= 0) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n } else if (resultType instanceof MultiType) {\n if(!resultType.isCompatible(formalParam.type)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n } else if(!formalParam.type.isCompatible(resultType)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n\n }\n }\n}\n","import { Modes } from './../modes';\n\nexport class Store {\n\n constructor(name) {\n this.name = name;\n this.store = {};\n this.nextStore = null;\n this.mode = Modes.RUN; \n }\n\n extendStore (nextStore) {\n this.nextStore = nextStore;\n }\n\n applyStore (id) {\n if(!this.store[id]) {\n if (this.nextStore !== null) {\n return this.nextStore.applyStore(id);\n } else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n }\n const val = this.store[id];\n if (val.isRef) {\n return val.getRefObj();\n }\n return this.store[id];\n }\n\n updateStore (id, stoObj) {\n if(!this.store[id]) {\n if(this.nextStore !== null) {\n this.nextStore.updateStore(id, stoObj);\n return this;\n } else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n } else {\n const oldObj = this.store[id];\n if(oldObj.readOnly) {\n // TODO: better error message\n throw new Error(\"Cannot change value of a read only variable: \" + id);\n }\n if(oldObj.isRef) {\n oldObj.updateRef(stoObj);\n return this;\n } else if(oldObj.isCompatible(stoObj)) {\n stoObj.setID(id);\n this.store[id] = Object.freeze(stoObj);\n return this;\n } else {\n const oldType = oldObj.type;\n const stoType = stoObj.type;\n // TODO: better error message\n throw new Error(`${oldType} is not compatible with type ${stoType} given`);\n }\n }\n }\n\n //In case of future use of ref, it needs to have a special function to update the storeRefObject\n // and no the StoreObject refferenced by it\n // updateStoreRef(id, stoObjAddress) {...}\n\n insertStore (id, stoObj) {\n if (this.store[id]) {\n // TODO: better error message\n throw new Error(`${id} is already defined`);\n }\n stoObj.setID(id);\n this.store[id] = Object.freeze(stoObj);\n return this;\n }\n}","import Decimal from 'decimal.js';\n\nexport class StoreObject {\n\n constructor (type, value, readOnly = false) {\n this._type = type;\n this._value = value;\n this._readOnly = readOnly;\n this._id = null;\n }\n\n setID (id) {\n this._id = id;\n }\n\n get id () {\n return this._id;\n }\n\n get inStore () {\n return this.id !== null;\n }\n\n get type () {\n return this._type;\n }\n\n get value () {\n return this._value;\n }\n \n get number () {\n if (this._value instanceof Decimal) {\n return this._value.toNumber();\n } else {\n return null;\n }\n }\n\n get readOnly () {\n return this._readOnly;\n }\n\n set readOnly (value) {\n this._readOnly = value;\n }\n\n isCompatible (another) {\n if( another instanceof StoreObject) {\n return this.type.isCompatible(another.type);\n }\n return false;\n }\n}","import { StoreObject } from './storeObject';\n\nexport class StoreObjectArray extends StoreObject {\n\n static get WRONG_LINE_NUMBER () {\n return 1;\n }\n\n static get WRONG_TYPE () {\n return 2;\n }\n\n static get WRONG_COLUMN_NUMBER () {\n return 3;\n }\n\n constructor (type, lines, columns, value = null, readOnly = false) {\n super(type, value, readOnly);\n this._lines = lines;\n this._columns = columns;\n }\n\n get lines () {\n return this._lines;\n }\n\n get columns () {\n return this._columns;\n }\n\n isCompatible (another) {\n if(another instanceof StoreObject) {\n if(((this.lines === -1 && another.lines > 0) ||\n (this.lines === another.lines))) {\n if ((this.columns === -1 && another.columns > 0) ||\n (this.columns === another.columns)) {\n return super.isCompatible(another);\n }\n }\n }\n return false;\n }\n\n get isVector () {\n return this.type.dimensions === 1;\n }\n\n get isValid () {\n if (this.value !== null) {\n if( this.isVector) {\n if(this.value.length !== this.lines) {\n return [StoreObjectArray.WRONG_LINE_NUMBER, this.value.length];;\n }\n const mustBeNull = this.value.find(v => !this.type.canAccept(v.type) );\n if(!!mustBeNull) {\n return [StoreObjectArray.WRONG_TYPE, this.value.indexOf(mustBeNull)];;\n }\n }\n return [];\n } else {\n if(this.lines !== this.value.length) {\n return [StoreObjectArray.WRONG_LINE_NUMBER, this.value.length];\n }\n for (let i = 0; i < this.lines; i++) {\n for (let j = 0; j < this.columns; j++) {\n const arr = this.value[i];\n if(arr.length !== this.columns) {\n return [StoreObjectArray.WRONG_COLUMN_NUMBER, arr.length];\n }\n const mustBeNull = arr.find(v => !this.type.canAccept(v.type) );\n if(!!mustBeNull) {\n return [StoreObjectArray.WRONG_TYPE, i, arr.indexOf(mustBeNull)];\n } \n }\n }\n return [];\n }\n }\n}\n","import { StoreObject } from './storeObject';\nimport { StoreObjectArray } from './storeObjectArray';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\nexport class StoreObjectArrayAddress extends StoreObject {\n\n constructor (refID, line, column, store) {\n super(null, null, false);\n this.refID = refID;\n this.store = store;\n this.line = line;\n this.column = column;\n }\n\n get isRef () {\n return false;\n }\n\n get inStore () {\n return true;\n }\n\n get refValue () {\n const refLine = this.store.applyStore(this.refID).value[this.line];\n if(!refLine) {\n if(this.getArrayObject().isVector) {\n throw ProcessorErrorFactory.vector_line_outbounds(this.refID, this.line, this.getArrayObject().lines);\n } else {\n throw ProcessorErrorFactory.matrix_line_outbounds(this.refID, this.line, this.getArrayObject().lines);\n }\n }\n if (this.column !== null) {\n const refColumn = refLine.value[this.column];\n if(!refColumn) {\n if(this.getArrayObject().isVector) {\n throw ProcessorErrorFactory.vector_not_matrix(this.refID);\n } else {\n throw ProcessorErrorFactory.matrix_column_outbounds(this.refID, this.column, this.getArrayObject().columns);\n }\n }\n return refColumn;\n }\n return refLine;\n }\n\n get value () {\n return this.refValue.value;\n }\n\n get type () {\n return this.refValue.type;\n }\n\n get lines () {\n if(!(this.type instanceof CompoundType)) {\n return null;\n }\n return this.refValue.value.length;\n }\n\n get columns () {\n switch (this.type.dimensions) {\n case 2:\n return this.refValue.value[0].value.length;\n default:\n return null;\n }\n }\n\n getArrayObject () {\n return this.store.applyStore(this.refID);\n }\n\n updateArrayObject (stoObj) {\n const anArray = this.getArrayObject();\n const newArray = Object.assign(new StoreObjectArray(null,null,null), anArray);\n if(!stoObj.type.isCompatible(this.type)) {\n throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);\n } else if (this.type instanceof CompoundType && this.type.canAccept(stoObj.type)) {\n throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);\n }\n if (this.column !== null) {\n newArray.value[this.line].value[this.column] = stoObj;\n return newArray;\n } else {\n newArray.value[this.line] = stoObj;\n return newArray;\n }\n }\n\n isCompatible (another) {\n if(this.type.isCompatible(another.type)) {\n if(another.type instanceof CompoundType) {\n return this.lines === another.lines && this.columns === another.columns;\n } else {\n this.refValue.isCompatible(another);\n }\n }\n }\n}\n","import { StoreObject } from './storeObject';\nimport Decimal from 'decimal.js';\n\nexport class StoreObjectArrayAddressRef extends StoreObject {\n\n constructor (address) {\n super(null, null, false);\n this.address = address;\n }\n\n get isRef () {\n return true;\n }\n\n get type () {\n return this.address.type;\n }\n\n get value () {\n return this.address.value;\n }\n\n get number () {\n if (this.value instanceof Decimal) {\n return this.value.toNumber();\n } else {\n return null;\n }\n }\n\n getRefObj () {\n return this.address.refValue;\n }\n\n updateRef (stoObj) {\n const newArray = this.address.updateArrayObject(stoObj);\n this.address.store.updateStore(this.address.refID, newArray);\n }\n\n isCompatible (another) {\n return this.address.isCompatible(another);\n }\n}","import { StoreObject } from './storeObject';\nimport Decimal from 'decimal.js';\n\nexport class StoreObjectRef extends StoreObject {\n\n constructor (refID, store) {\n super(null, null, false);\n this.refID = refID;\n this.store = store;\n }\n\n get isRef () {\n return true;\n }\n\n get type () {\n return this.store.applyStore(this.refID).type;\n }\n\n get value () {\n return this.store.applyStore(this.refID).value;\n }\n\n get number () {\n if (this.value instanceof Decimal) {\n return this.value.toNumber();\n } else {\n return null;\n }\n }\n\n getRefObj () {\n return this.store.applyStore(this.refID);\n }\n\n updateRef (stoObj) {\n this.store.updateStore(this.refID, stoObj);\n }\n\n isCompatible (another) {\n return this.store.applyStore(this.refID).isCompatible(another);\n }\n}","import Lexers from './../../grammar/';\nimport line_i18n from 'line-i18n';\n\nconst DEFAULT_LANG = \"pt\";\n\nclass LanguageServiceExtended extends line_i18n.LanguageService {\n\n constructor () {\n super(\"ivprog.lang\", DEFAULT_LANG);\n }\n\n getCurrentLexer () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].lexer;\n } else {\n return langInfo.lexer;\n }\n }\n\n getCurrentLangFuncs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langFuncs;\n } else {\n return langInfo.langFuncs;\n }\n }\n\n getCurrentLangLibs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langLibs;\n }\n return langInfo.langLibs;\n }\n}\n\nexport const LanguageService = Object.freeze(new LanguageServiceExtended());\n","import { LanguageService } from \"./languageService\";\nimport line_i18n from 'line-i18n'\nimport Langs from './../../i18n';\n\nexport const LocalizedStrings = Object.freeze(new line_i18n.LocalizedStrings(LanguageService, Langs, true));","class BaseType {\n constructor(name, ord) {\n this.name = name;\n this.ord = ord;\n }\n\n get value () {\n return this.name;\n }\n\n isCompatible (another) {\n if(another instanceof BaseType) {\n return this.name === another.name && this.ord === another.ord;\n }\n return false;\n }\n}\n\n// Base types names are the same as i18n ui type keys\nexport const BaseTypes = Object.freeze({\n INTEGER: new BaseType(\"integer\", 0),\n REAL: new BaseType(\"real\", 1),\n STRING: new BaseType(\"text\", 2),\n BOOLEAN: new BaseType(\"boolean\", 3),\n VOID: new BaseType(\"void\", 4),\n UNDEFINED: new BaseType(\"undefined\", 5)\n})\n","import { Type } from \"./type\";\n\nexport class CompoundType extends Type {\n\n constructor (type, dimensions) {\n super(null);\n this.innerType = type;\n this.dimensions = dimensions;\n }\n\n isCompatible (another) {\n if(another instanceof CompoundType){\n if(this.dimensions !== another.dimensions) {\n return false;\n }\n return this.innerType.isCompatible(another.innerType);\n }\n return false;\n }\n\n stringInfo () {\n const list = this.innerType.stringInfo();\n list.forEach(v => {\n v.dim = this.dimensions;\n });\n return list;\n }\n\n canAccept (another) {\n if(another instanceof CompoundType) {\n return this.dimensions > another.dimensions && this.innerType.isCompatible(another.innerType);\n } else {\n return this.innerType.isCompatible(another);\n }\n }\n}\n","import { Type } from \"./type\";\n\nexport class MultiType extends Type {\n\n constructor (types) {\n super(null);\n this.types = types;\n }\n\n get value () {\n return null;\n }\n\n get ord () {\n return null;\n }\n\n stringInfo () {\n let list = [];\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n list = list.concat(t.stringInfo());\n }\n return list;\n }\n\n isCompatible (another) {\n if(another instanceof Type) {\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n if (t.isCompatible(another)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","import { LanguageService } from \"../services/languageService\";\nimport { Types } from \"./types\";\nimport Decimal from \"decimal.js\";\n\nexport function toInt (str) {\n return new Decimal(str);\n}\n\nexport function toString (str) {\n let value = str.replace(/^\"/, '');\n value = value.replace(/\"$/, '');\n value = value.replace(/\\\\b/g, \"\\b\");\n value = value.replace(/\\\\t/g, \"\\t\");\n value = value.replace(/\\\\n/g, \"\\n\");\n value = value.replace(/\\\\r/g, \"\\r\");\n value = value.replace(/\\\\\\\"/g, \"\\\"\");\n value = value.replace(/\\\\\\'/g, \"\\'\");\n value = value.replace(/\\\\\\\\/g, \"\\\\\");\n return value;\n}\n\nexport function toReal (value) {\n return new Decimal(value);\n}\n\nexport function toBool (str) {\n const val = \"'\" + str + \"'\";\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n if (instance.literalNames[lexer.RK_TRUE] === val) {\n return true;\n } else if (instance.literalNames[lexer.RK_FALSE] === val) {\n return false;\n } else {\n // TODO: better error message\n throw new Error(str + \"not a valid boolean\");\n }\n}\n\nfunction convertBoolToString (bool) {\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n if (bool) {\n return instance.literalNames[lexer.RK_TRUE];\n } else {\n return instance.literalNames[lexer.RK_FALSE];\n }\n}\n\nexport function convertToString(stoObj, type) {\n switch (type.ord) {\n case Types.INTEGER.ord:\n return stoObj.toString();\n case Types.REAL.ord: {\n if (stoObj.dp() <= 0) {\n return stoObj.toFixed(1); \n } else {\n return stoObj.toNumber();\n }\n }\n case Types.BOOLEAN.ord:\n return convertBoolToString(stoObj);\n default:\n return stoObj;\n }\n}","export class Type {\n\n constructor(baseType) {\n this.baseType = baseType;\n }\n\n get value () {\n return this.baseType.value;\n }\n\n get ord () {\n return this.baseType.ord;\n }\n\n stringInfo () {\n return [{type: this.baseType.name, dim: 0}];\n }\n\n isCompatible (another) {\n if(another instanceof Type) {\n return this.baseType.isCompatible(another.baseType);\n }\n return false;\n }\n}\n","import { BaseTypes } from './baseTypes';\nimport { Type } from \"./type\";\nimport { MultiType } from \"./multiType\";\n\nconst INTEGER = new Type(BaseTypes.INTEGER);\nconst REAL = new Type(BaseTypes.REAL);\nconst STRING = new Type(BaseTypes.STRING);\nconst BOOLEAN = new Type(BaseTypes.BOOLEAN);\nconst VOID = new Type(BaseTypes.VOID);\nconst UNDEFINED = new Type(BaseTypes.UNDEFINED);\nconst ALL = new MultiType([INTEGER, REAL, STRING, BOOLEAN]);\n\nexport const Types = Object.freeze({\n INTEGER: INTEGER,\n REAL: REAL,\n STRING: STRING,\n BOOLEAN: BOOLEAN,\n VOID: VOID,\n UNDEFINED: UNDEFINED,\n ALL: ALL\n});\n","class ConfigObject {\n\n constructor () {\n this.loopTimeout = 5000;\n this.decimalPlaces = 5;\n this.intConvertRoundMode = 2;\n }\n\n setConfig (opts) {\n for (const key in opts) {\n if(this.hasOwnProperty(key)){\n this[key] = opts[key];\n }\n }\n }\n}\nlet config = new ConfigObject();\nexport const Config = config;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// This implementation of {@link TokenStream} loads tokens from a\n// {@link TokenSource} on-demand, and places the tokens in a buffer to provide\n// access to any previous token by index.\n//\n// <p>\n// This token stream ignores the value of {@link Token//getChannel}. If your\n// parser requires the token stream filter tokens to only those on a particular\n// channel, such as {@link Token//DEFAULT_CHANNEL} or\n// {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a\n// {@link CommonTokenStream}.</p>\n\nvar Token = require('./Token').Token;\nvar Lexer = require('./Lexer').Lexer;\nvar Interval = require('./IntervalSet').Interval;\n\n// this is just to keep meaningful parameter types to Parser\nfunction TokenStream() {\n\treturn this;\n}\n\nfunction BufferedTokenStream(tokenSource) {\n\n\tTokenStream.call(this);\n\t// The {@link TokenSource} from which tokens for this stream are fetched.\n\tthis.tokenSource = tokenSource;\n\n\t// A collection of all tokens fetched from the token source. The list is\n\t// considered a complete view of the input once {@link //fetchedEOF} is set\n\t// to {@code true}.\n\tthis.tokens = [];\n\n\t// The index into {@link //tokens} of the current token (next token to\n\t// {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should\n\t// be\n\t// {@link //LT LT(1)}.\n\t//\n\t// <p>This field is set to -1 when the stream is first constructed or when\n\t// {@link //setTokenSource} is called, indicating that the first token has\n\t// not yet been fetched from the token source. For additional information,\n\t// see the documentation of {@link IntStream} for a description of\n\t// Initializing Methods.</p>\n\tthis.index = -1;\n\n\t// Indicates whether the {@link Token//EOF} token has been fetched from\n\t// {@link //tokenSource} and added to {@link //tokens}. This field improves\n\t// performance for the following cases:\n\t//\n\t// <ul>\n\t// <li>{@link //consume}: The lookahead check in {@link //consume} to\n\t// prevent\n\t// consuming the EOF symbol is optimized by checking the values of\n\t// {@link //fetchedEOF} and {@link //p} instead of calling {@link\n\t// //LA}.</li>\n\t// <li>{@link //fetch}: The check to prevent adding multiple EOF symbols\n\t// into\n\t// {@link //tokens} is trivial with this field.</li>\n\t// <ul>\n\tthis.fetchedEOF = false;\n\treturn this;\n}\n\nBufferedTokenStream.prototype = Object.create(TokenStream.prototype);\nBufferedTokenStream.prototype.constructor = BufferedTokenStream;\n\nBufferedTokenStream.prototype.mark = function() {\n\treturn 0;\n};\n\nBufferedTokenStream.prototype.release = function(marker) {\n\t// no resources to release\n};\n\nBufferedTokenStream.prototype.reset = function() {\n\tthis.seek(0);\n};\n\nBufferedTokenStream.prototype.seek = function(index) {\n\tthis.lazyInit();\n\tthis.index = this.adjustSeekIndex(index);\n};\n\nBufferedTokenStream.prototype.get = function(index) {\n\tthis.lazyInit();\n\treturn this.tokens[index];\n};\n\nBufferedTokenStream.prototype.consume = function() {\n\tvar skipEofCheck = false;\n\tif (this.index >= 0) {\n\t\tif (this.fetchedEOF) {\n\t\t\t// the last token in tokens is EOF. skip check if p indexes any\n\t\t\t// fetched token except the last.\n\t\t\tskipEofCheck = this.index < this.tokens.length - 1;\n\t\t} else {\n\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\n\t\t\tskipEofCheck = this.index < this.tokens.length;\n\t\t}\n\t} else {\n\t\t// not yet initialized\n\t\tskipEofCheck = false;\n\t}\n\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\n\t\tthrow \"cannot consume EOF\";\n\t}\n\tif (this.sync(this.index + 1)) {\n\t\tthis.index = this.adjustSeekIndex(this.index + 1);\n\t}\n};\n\n// Make sure index {@code i} in tokens has a token.\n//\n// @return {@code true} if a token is located at index {@code i}, otherwise\n// {@code false}.\n// @see //get(int i)\n// /\nBufferedTokenStream.prototype.sync = function(i) {\n\tvar n = i - this.tokens.length + 1; // how many more elements we need?\n\tif (n > 0) {\n\t\tvar fetched = this.fetch(n);\n\t\treturn fetched >= n;\n\t}\n\treturn true;\n};\n\n// Add {@code n} elements to buffer.\n//\n// @return The actual number of elements added to the buffer.\n// /\nBufferedTokenStream.prototype.fetch = function(n) {\n\tif (this.fetchedEOF) {\n\t\treturn 0;\n\t}\n\tfor (var i = 0; i < n; i++) {\n\t\tvar t = this.tokenSource.nextToken();\n\t\tt.tokenIndex = this.tokens.length;\n\t\tthis.tokens.push(t);\n\t\tif (t.type === Token.EOF) {\n\t\t\tthis.fetchedEOF = true;\n\t\t\treturn i + 1;\n\t\t}\n\t}\n\treturn n;\n};\n\n// Get all tokens from start..stop inclusively///\nBufferedTokenStream.prototype.getTokens = function(start, stop, types) {\n\tif (types === undefined) {\n\t\ttypes = null;\n\t}\n\tif (start < 0 || stop < 0) {\n\t\treturn null;\n\t}\n\tthis.lazyInit();\n\tvar subset = [];\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tfor (var i = start; i < stop; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\tif (types === null || types.contains(t.type)) {\n\t\t\tsubset.push(t);\n\t\t}\n\t}\n\treturn subset;\n};\n\nBufferedTokenStream.prototype.LA = function(i) {\n\treturn this.LT(i).type;\n};\n\nBufferedTokenStream.prototype.LB = function(k) {\n\tif (this.index - k < 0) {\n\t\treturn null;\n\t}\n\treturn this.tokens[this.index - k];\n};\n\nBufferedTokenStream.prototype.LT = function(k) {\n\tthis.lazyInit();\n\tif (k === 0) {\n\t\treturn null;\n\t}\n\tif (k < 0) {\n\t\treturn this.LB(-k);\n\t}\n\tvar i = this.index + k - 1;\n\tthis.sync(i);\n\tif (i >= this.tokens.length) { // return EOF token\n\t\t// EOF must be last token\n\t\treturn this.tokens[this.tokens.length - 1];\n\t}\n\treturn this.tokens[i];\n};\n\n// Allowed derived classes to modify the behavior of operations which change\n// the current stream position by adjusting the target token index of a seek\n// operation. The default implementation simply returns {@code i}. If an\n// exception is thrown in this method, the current stream index should not be\n// changed.\n//\n// <p>For example, {@link CommonTokenStream} overrides this method to ensure\n// that\n// the seek target is always an on-channel token.</p>\n//\n// @param i The target token index.\n// @return The adjusted target token index.\n\nBufferedTokenStream.prototype.adjustSeekIndex = function(i) {\n\treturn i;\n};\n\nBufferedTokenStream.prototype.lazyInit = function() {\n\tif (this.index === -1) {\n\t\tthis.setup();\n\t}\n};\n\nBufferedTokenStream.prototype.setup = function() {\n\tthis.sync(0);\n\tthis.index = this.adjustSeekIndex(0);\n};\n\n// Reset this token stream by setting its token source.///\nBufferedTokenStream.prototype.setTokenSource = function(tokenSource) {\n\tthis.tokenSource = tokenSource;\n\tthis.tokens = [];\n\tthis.index = -1;\n\tthis.fetchedEOF = false;\n};\n\n\n// Given a starting index, return the index of the next token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and EOF.\n// /\nBufferedTokenStream.prototype.nextTokenOnChannel = function(i, channel) {\n\tthis.sync(i);\n\tif (i >= this.tokens.length) {\n\t\treturn -1;\n\t}\n\tvar token = this.tokens[i];\n\twhile (token.channel !== this.channel) {\n\t\tif (token.type === Token.EOF) {\n\t\t\treturn -1;\n\t\t}\n\t\ti += 1;\n\t\tthis.sync(i);\n\t\ttoken = this.tokens[i];\n\t}\n\treturn i;\n};\n\n// Given a starting index, return the index of the previous token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and 0.\nBufferedTokenStream.prototype.previousTokenOnChannel = function(i, channel) {\n\twhile (i >= 0 && this.tokens[i].channel !== channel) {\n\t\ti -= 1;\n\t}\n\treturn i;\n};\n\n// Collect all tokens on specified channel to the right of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or\n// EOF. If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToRight = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tvar from_ = tokenIndex + 1;\n\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\n\tvar to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\n// Collect all tokens on specified channel to the left of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.\n// If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToLeft = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tif (prevOnChannel === tokenIndex - 1) {\n\t\treturn null;\n\t}\n\t// if none on channel to left, prevOnChannel=-1 then from=0\n\tvar from_ = prevOnChannel + 1;\n\tvar to = tokenIndex - 1;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\nBufferedTokenStream.prototype.filterForChannel = function(left, right, channel) {\n\tvar hidden = [];\n\tfor (var i = left; i < right + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (channel === -1) {\n\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\n\t\t\t\thidden.push(t);\n\t\t\t}\n\t\t} else if (t.channel === channel) {\n\t\t\thidden.push(t);\n\t\t}\n\t}\n\tif (hidden.length === 0) {\n\t\treturn null;\n\t}\n\treturn hidden;\n};\n\nBufferedTokenStream.prototype.getSourceName = function() {\n\treturn this.tokenSource.getSourceName();\n};\n\n// Get the text of all tokens in this buffer.///\nBufferedTokenStream.prototype.getText = function(interval) {\n\tthis.lazyInit();\n\tthis.fill();\n\tif (interval === undefined || interval === null) {\n\t\tinterval = new Interval(0, this.tokens.length - 1);\n\t}\n\tvar start = interval.start;\n\tif (start instanceof Token) {\n\t\tstart = start.tokenIndex;\n\t}\n\tvar stop = interval.stop;\n\tif (stop instanceof Token) {\n\t\tstop = stop.tokenIndex;\n\t}\n\tif (start === null || stop === null || start < 0 || stop < 0) {\n\t\treturn \"\";\n\t}\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tvar s = \"\";\n\tfor (var i = start; i < stop + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\ts = s + t.text;\n\t}\n\treturn s;\n};\n\n// Get all tokens from lexer until EOF///\nBufferedTokenStream.prototype.fill = function() {\n\tthis.lazyInit();\n\twhile (this.fetch(1000) === 1000) {\n\t\tcontinue;\n\t}\n};\n\nexports.BufferedTokenStream = BufferedTokenStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar InputStream = require('./InputStream').InputStream;\n\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\n// Utility functions to create InputStreams from various sources.\n//\n// All returned InputStreams support the full range of Unicode\n// up to U+10FFFF (the default behavior of InputStream only supports\n// code points up to U+FFFF).\nvar CharStreams = {\n // Creates an InputStream from a string.\n fromString: function(str) {\n return new InputStream(str, true);\n },\n\n // Asynchronously creates an InputStream from a blob given the\n // encoding of the bytes in that blob (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes onLoad(result) on success, onError(error) on\n // failure.\n fromBlob: function(blob, encoding, onLoad, onError) {\n var reader = FileReader();\n reader.onload = function(e) {\n var is = new InputStream(e.target.result, true);\n onLoad(is);\n };\n reader.onerror = onError;\n reader.readAsText(blob, encoding);\n },\n\n // Creates an InputStream from a Buffer given the\n // encoding of the bytes in that buffer (defaults to 'utf8' if\n // encoding is null).\n fromBuffer: function(buffer, encoding) {\n return new InputStream(buffer.toString(encoding), true);\n },\n\n // Asynchronously creates an InputStream from a file on disk given\n // the encoding of the bytes in that file (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes callback(error, result) on completion.\n fromPath: function(path, encoding, callback) {\n fs.readFile(path, encoding, function(err, data) {\n var is = null;\n if (data !== null) {\n is = new InputStream(data, true);\n }\n callback(err, is);\n });\n },\n\n // Synchronously creates an InputStream given a path to a file\n // on disk and the encoding of the bytes in that file (defaults to\n // 'utf8' if encoding is null).\n fromPathSync: function(path, encoding) {\n var data = fs.readFileSync(path, encoding);\n return new InputStream(data, true);\n }\n};\n\nexports.CharStreams = CharStreams;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This default implementation of {@link TokenFactory} creates\n// {@link CommonToken} objects.\n//\n\nvar CommonToken = require('./Token').CommonToken;\n\nfunction TokenFactory() {\n\treturn this;\n}\n\nfunction CommonTokenFactory(copyText) {\n\tTokenFactory.call(this);\n // Indicates whether {@link CommonToken//setText} should be called after\n // constructing tokens to explicitly set the text. This is useful for cases\n // where the input stream might not be able to provide arbitrary substrings\n // of text from the input after the lexer creates a token (e.g. the\n // implementation of {@link CharStream//getText} in\n // {@link UnbufferedCharStream} throws an\n // {@link UnsupportedOperationException}). Explicitly setting the token text\n // allows {@link Token//getText} to be called at any time regardless of the\n // input stream implementation.\n //\n // <p>\n // The default value is {@code false} to avoid the performance and memory\n // overhead of copying text for every token unless explicitly requested.</p>\n //\n this.copyText = copyText===undefined ? false : copyText;\n\treturn this;\n}\n\nCommonTokenFactory.prototype = Object.create(TokenFactory.prototype);\nCommonTokenFactory.prototype.constructor = CommonTokenFactory;\n\n//\n// The default {@link CommonTokenFactory} instance.\n//\n// <p>\n// This token factory does not explicitly copy token text when constructing\n// tokens.</p>\n//\nCommonTokenFactory.DEFAULT = new CommonTokenFactory();\n\nCommonTokenFactory.prototype.create = function(source, type, text, channel, start, stop, line, column) {\n var t = new CommonToken(source, type, channel, start, stop);\n t.line = line;\n t.column = column;\n if (text !==null) {\n t.text = text;\n } else if (this.copyText && source[1] !==null) {\n t.text = source[1].getText(start,stop);\n }\n return t;\n};\n\nCommonTokenFactory.prototype.createThin = function(type, text) {\n var t = new CommonToken(null, type);\n t.text = text;\n return t;\n};\n\nexports.CommonTokenFactory = CommonTokenFactory;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n//\n// This class extends {@link BufferedTokenStream} with functionality to filter\n// token streams to tokens on a particular channel (tokens where\n// {@link Token//getChannel} returns a particular value).\n//\n// <p>\n// This token stream provides access to all tokens by index or when calling\n// methods like {@link //getText}. The channel filtering is only used for code\n// accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and\n// {@link //LB}.</p>\n//\n// <p>\n// By default, tokens are placed on the default channel\n// ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the\n// {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to\n// call {@link Lexer//setChannel}.\n// </p>\n//\n// <p>\n// Note: lexer rules which use the {@code ->skip} lexer command or call\n// {@link Lexer//skip} do not produce tokens at all, so input text matched by\n// such a rule will not be available as part of the token stream, regardless of\n// channel.</p>\n///\n\nvar Token = require('./Token').Token;\nvar BufferedTokenStream = require('./BufferedTokenStream').BufferedTokenStream;\n\nfunction CommonTokenStream(lexer, channel) {\n\tBufferedTokenStream.call(this, lexer);\n this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;\n return this;\n}\n\nCommonTokenStream.prototype = Object.create(BufferedTokenStream.prototype);\nCommonTokenStream.prototype.constructor = CommonTokenStream;\n\nCommonTokenStream.prototype.adjustSeekIndex = function(i) {\n return this.nextTokenOnChannel(i, this.channel);\n};\n\nCommonTokenStream.prototype.LB = function(k) {\n if (k===0 || this.index-k<0) {\n return null;\n }\n var i = this.index;\n var n = 1;\n // find k good tokens looking backwards\n while (n <= k) {\n // skip off-channel tokens\n i = this.previousTokenOnChannel(i - 1, this.channel);\n n += 1;\n }\n if (i < 0) {\n return null;\n }\n return this.tokens[i];\n};\n\nCommonTokenStream.prototype.LT = function(k) {\n this.lazyInit();\n if (k === 0) {\n return null;\n }\n if (k < 0) {\n return this.LB(-k);\n }\n var i = this.index;\n var n = 1; // we know tokens[pos] is a good one\n // find k good tokens\n while (n < k) {\n // skip off-channel tokens, but make sure to not look past EOF\n if (this.sync(i + 1)) {\n i = this.nextTokenOnChannel(i + 1, this.channel);\n }\n n += 1;\n }\n return this.tokens[i];\n};\n\n// Count EOF just once.///\nCommonTokenStream.prototype.getNumberOfOnChannelTokens = function() {\n var n = 0;\n this.fill();\n for (var i =0; i< this.tokens.length;i++) {\n var t = this.tokens[i];\n if( t.channel===this.channel) {\n n += 1;\n }\n if( t.type===Token.EOF) {\n break;\n }\n }\n return n;\n};\n\nexports.CommonTokenStream = CommonTokenStream;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This is an InputStream that is loaded from a file all at once\n// when you construct the object.\n//\nvar InputStream = require('./InputStream').InputStream;\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\nfunction FileStream(fileName, decodeToUnicodeCodePoints) {\n\tvar data = fs.readFileSync(fileName, \"utf8\");\n\tInputStream.call(this, data, decodeToUnicodeCodePoints);\n\tthis.fileName = fileName;\n\treturn this;\n}\n\nFileStream.prototype = Object.create(InputStream.prototype);\nFileStream.prototype.constructor = FileStream;\n\nexports.FileStream = FileStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nrequire('./polyfills/codepointat');\nrequire('./polyfills/fromcodepoint');\n\n// Vacuum all input from a string and then treat it like a buffer.\n\nfunction _loadString(stream, decodeToUnicodeCodePoints) {\n\tstream._index = 0;\n\tstream.data = [];\n\tif (stream.decodeToUnicodeCodePoints) {\n\t\tfor (var i = 0; i < stream.strdata.length; ) {\n\t\t\tvar codePoint = stream.strdata.codePointAt(i);\n\t\t\tstream.data.push(codePoint);\n\t\t\ti += codePoint <= 0xFFFF ? 1 : 2;\n\t\t}\n\t} else {\n\t\tfor (var i = 0; i < stream.strdata.length; i++) {\n\t\t\tvar codeUnit = stream.strdata.charCodeAt(i);\n\t\t\tstream.data.push(codeUnit);\n\t\t}\n\t}\n\tstream._size = stream.data.length;\n}\n\n// If decodeToUnicodeCodePoints is true, the input is treated\n// as a series of Unicode code points.\n//\n// Otherwise, the input is treated as a series of 16-bit UTF-16 code\n// units.\nfunction InputStream(data, decodeToUnicodeCodePoints) {\n\tthis.name = \"<empty>\";\n\tthis.strdata = data;\n\tthis.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;\n\t_loadString(this);\n\treturn this;\n}\n\nObject.defineProperty(InputStream.prototype, \"index\", {\n\tget : function() {\n\t\treturn this._index;\n\t}\n});\n\nObject.defineProperty(InputStream.prototype, \"size\", {\n\tget : function() {\n\t\treturn this._size;\n\t}\n});\n\n// Reset the stream so that it's in the same state it was\n// when the object was created *except* the data array is not\n// touched.\n//\nInputStream.prototype.reset = function() {\n\tthis._index = 0;\n};\n\nInputStream.prototype.consume = function() {\n\tif (this._index >= this._size) {\n\t\t// assert this.LA(1) == Token.EOF\n\t\tthrow (\"cannot consume EOF\");\n\t}\n\tthis._index += 1;\n};\n\nInputStream.prototype.LA = function(offset) {\n\tif (offset === 0) {\n\t\treturn 0; // undefined\n\t}\n\tif (offset < 0) {\n\t\toffset += 1; // e.g., translate LA(-1) to use offset=0\n\t}\n\tvar pos = this._index + offset - 1;\n\tif (pos < 0 || pos >= this._size) { // invalid\n\t\treturn Token.EOF;\n\t}\n\treturn this.data[pos];\n};\n\nInputStream.prototype.LT = function(offset) {\n\treturn this.LA(offset);\n};\n\n// mark/release do nothing; we have entire buffer\nInputStream.prototype.mark = function() {\n\treturn -1;\n};\n\nInputStream.prototype.release = function(marker) {\n};\n\n// consume() ahead until p==_index; can't just set p=_index as we must\n// update line and column. If we seek backwards, just set p\n//\nInputStream.prototype.seek = function(_index) {\n\tif (_index <= this._index) {\n\t\tthis._index = _index; // just jump; don't update stream state (line,\n\t\t\t\t\t\t\t\t// ...)\n\t\treturn;\n\t}\n\t// seek forward\n\tthis._index = Math.min(_index, this._size);\n};\n\nInputStream.prototype.getText = function(start, stop) {\n\tif (stop >= this._size) {\n\t\tstop = this._size - 1;\n\t}\n\tif (start >= this._size) {\n\t\treturn \"\";\n\t} else {\n\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\tvar result = \"\";\n\t\t\tfor (var i = start; i <= stop; i++) {\n\t\t\t\tresult += String.fromCodePoint(this.data[i]);\n\t\t\t}\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn this.strdata.slice(start, stop + 1);\n\t\t}\n\t}\n};\n\nInputStream.prototype.toString = function() {\n\treturn this.strdata;\n};\n\nexports.InputStream = InputStream;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/*jslint smarttabs:true */\n\nvar Token = require('./Token').Token;\n\n/* stop is not included! */\nfunction Interval(start, stop) {\n\tthis.start = start;\n\tthis.stop = stop;\n\treturn this;\n}\n\nInterval.prototype.contains = function(item) {\n\treturn item >= this.start && item < this.stop;\n};\n\nInterval.prototype.toString = function() {\n\tif(this.start===this.stop-1) {\n\t\treturn this.start.toString();\n\t} else {\n\t\treturn this.start.toString() + \"..\" + (this.stop-1).toString();\n\t}\n};\n\n\nObject.defineProperty(Interval.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.stop - this.start;\n\t}\n});\n\nfunction IntervalSet() {\n\tthis.intervals = null;\n\tthis.readOnly = false;\n}\n\nIntervalSet.prototype.first = function(v) {\n\tif (this.intervals === null || this.intervals.length===0) {\n\t\treturn Token.INVALID_TYPE;\n\t} else {\n\t\treturn this.intervals[0].start;\n\t}\n};\n\nIntervalSet.prototype.addOne = function(v) {\n\tthis.addInterval(new Interval(v, v + 1));\n};\n\nIntervalSet.prototype.addRange = function(l, h) {\n\tthis.addInterval(new Interval(l, h + 1));\n};\n\nIntervalSet.prototype.addInterval = function(v) {\n\tif (this.intervals === null) {\n\t\tthis.intervals = [];\n\t\tthis.intervals.push(v);\n\t} else {\n\t\t// find insert pos\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// distinct range -> insert\n\t\t\tif (v.stop < i.start) {\n\t\t\t\tthis.intervals.splice(k, 0, v);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// contiguous range -> adjust\n\t\t\telse if (v.stop === i.start) {\n\t\t\t\tthis.intervals[k].start = v.start;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// overlapping range -> adjust and reduce\n\t\t\telse if (v.start <= i.stop) {\n\t\t\t\tthis.intervals[k] = new Interval(Math.min(i.start, v.start), Math.max(i.stop, v.stop));\n\t\t\t\tthis.reduce(k);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// greater than any existing\n\t\tthis.intervals.push(v);\n\t}\n};\n\nIntervalSet.prototype.addSet = function(other) {\n\tif (other.intervals !== null) {\n\t\tfor (var k = 0; k < other.intervals.length; k++) {\n\t\t\tvar i = other.intervals[k];\n\t\t\tthis.addInterval(new Interval(i.start, i.stop));\n\t\t}\n\t}\n\treturn this;\n};\n\nIntervalSet.prototype.reduce = function(k) {\n\t// only need to reduce if k is not the last\n\tif (k < this.intervalslength - 1) {\n\t\tvar l = this.intervals[k];\n\t\tvar r = this.intervals[k + 1];\n\t\t// if r contained in l\n\t\tif (l.stop >= r.stop) {\n\t\t\tthis.intervals.pop(k + 1);\n\t\t\tthis.reduce(k);\n\t\t} else if (l.stop >= r.start) {\n\t\t\tthis.intervals[k] = new Interval(l.start, r.stop);\n\t\t\tthis.intervals.pop(k + 1);\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.complement = function(start, stop) {\n var result = new IntervalSet();\n result.addInterval(new Interval(start,stop+1));\n for(var i=0; i<this.intervals.length; i++) {\n result.removeRange(this.intervals[i]);\n }\n return result;\n};\n\nIntervalSet.prototype.contains = function(item) {\n\tif (this.intervals === null) {\n\t\treturn false;\n\t} else {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tif(this.intervals[k].contains(item)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n};\n\nObject.defineProperty(IntervalSet.prototype, \"length\", {\n\tget : function() {\n\t\tvar len = 0;\n\t\tthis.intervals.map(function(i) {len += i.length;});\n\t\treturn len;\n\t}\n});\n\nIntervalSet.prototype.removeRange = function(v) {\n if(v.start===v.stop-1) {\n this.removeOne(v.start);\n } else if (this.intervals!==null) {\n var k = 0;\n for(var n=0; n<this.intervals.length; n++) {\n var i = this.intervals[k];\n // intervals are ordered\n if (v.stop<=i.start) {\n return;\n }\n // check for including range, split it\n else if(v.start>i.start && v.stop<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n var x = new Interval(v.stop, i.stop);\n this.intervals.splice(k, 0, x);\n return;\n }\n // check for included range, remove it\n else if(v.start<=i.start && v.stop>=i.stop) {\n this.intervals.splice(k, 1);\n k = k - 1; // need another pass\n }\n // check for lower boundary\n else if(v.start<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n }\n // check for upper boundary\n else if(v.stop<i.stop) {\n this.intervals[k] = new Interval(v.stop, i.stop);\n }\n k += 1;\n }\n }\n};\n\nIntervalSet.prototype.removeOne = function(v) {\n\tif (this.intervals !== null) {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// intervals is ordered\n\t\t\tif (v < i.start) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for single value range\n\t\t\telse if (v === i.start && v === i.stop - 1) {\n\t\t\t\tthis.intervals.splice(k, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for lower boundary\n\t\t\telse if (v === i.start) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start + 1, i.stop);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for upper boundary\n\t\t\telse if (v === i.stop - 1) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start, i.stop - 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// split existing range\n\t\t\telse if (v < i.stop - 1) {\n\t\t\t\tvar x = new Interval(i.start, v);\n\t\t\t\ti.start = v + 1;\n\t\t\t\tthis.intervals.splice(k, 0, x);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.toString = function(literalNames, symbolicNames, elemsAreChar) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\telemsAreChar = elemsAreChar || false;\n\tif (this.intervals === null) {\n\t\treturn \"{}\";\n\t} else if(literalNames!==null || symbolicNames!==null) {\n\t\treturn this.toTokenString(literalNames, symbolicNames);\n\t} else if(elemsAreChar) {\n\t\treturn this.toCharString();\n\t} else {\n\t\treturn this.toIndexString();\n\t}\n};\n\nIntervalSet.prototype.toCharString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'\");\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'..'\" + String.fromCharCode(v.stop-1) + \"'\");\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toIndexString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(v.start.toString());\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(v.start.toString() + \"..\" + (v.stop-1).toString());\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toTokenString = function(literalNames, symbolicNames) {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tfor (var j = v.start; j < v.stop; j++) {\n\t\t\tnames.push(this.elementName(literalNames, symbolicNames, j));\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\nIntervalSet.prototype.elementName = function(literalNames, symbolicNames, a) {\n\tif (a === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (a === Token.EPSILON) {\n\t\treturn \"<EPSILON>\";\n\t} else {\n\t\treturn literalNames[a] || symbolicNames[a];\n\t}\n};\n\nexports.Interval = Interval;\nexports.IntervalSet = IntervalSet;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar Set = require('./Utils').Set;\nvar BitSet = require('./Utils').BitSet;\nvar Token = require('./Token').Token;\nvar ATNConfig = require('./atn/ATNConfig').ATNConfig;\nvar Interval = require('./IntervalSet').Interval;\nvar IntervalSet = require('./IntervalSet').IntervalSet;\nvar RuleStopState = require('./atn/ATNState').RuleStopState;\nvar RuleTransition = require('./atn/Transition').RuleTransition;\nvar NotSetTransition = require('./atn/Transition').NotSetTransition;\nvar WildcardTransition = require('./atn/Transition').WildcardTransition;\nvar AbstractPredicateTransition = require('./atn/Transition').AbstractPredicateTransition;\n\nvar pc = require('./PredictionContext');\nvar predictionContextFromRuleContext = pc.predictionContextFromRuleContext;\nvar PredictionContext = pc.PredictionContext;\nvar SingletonPredictionContext = pc.SingletonPredictionContext;\n\nfunction LL1Analyzer (atn) {\n this.atn = atn;\n}\n\n//* Special value added to the lookahead sets to indicate that we hit\n// a predicate during analysis if {@code seeThruPreds==false}.\n///\nLL1Analyzer.HIT_PRED = Token.INVALID_TYPE;\n\n\n//*\n// Calculates the SLL(1) expected lookahead set for each outgoing transition\n// of an {@link ATNState}. The returned array has one element for each\n// outgoing transition in {@code s}. If the closure from transition\n// <em>i</em> leads to a semantic predicate before matching a symbol, the\n// element at index <em>i</em> of the result will be {@code null}.\n//\n// @param s the ATN state\n// @return the expected symbols for each outgoing transition of {@code s}.\n///\nLL1Analyzer.prototype.getDecisionLookahead = function(s) {\n if (s === null) {\n return null;\n }\n var count = s.transitions.length;\n var look = [];\n for(var alt=0; alt< count; alt++) {\n look[alt] = new IntervalSet();\n var lookBusy = new Set();\n var seeThruPreds = false; // fail to get lookahead upon pred\n this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,\n look[alt], lookBusy, new BitSet(), seeThruPreds, false);\n // Wipe out lookahead for this alternative if we found nothing\n // or we had a predicate when we !seeThruPreds\n if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {\n look[alt] = null;\n }\n }\n return look;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and the end of the rule containing\n// {@code s} is reached, {@link Token//EPSILON} is added to the result set.\n// If {@code ctx} is not {@code null} and the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx the complete parser context, or {@code null} if the context\n// should be ignored\n//\n// @return The set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n///\nLL1Analyzer.prototype.LOOK = function(s, stopState, ctx) {\n var r = new IntervalSet();\n var seeThruPreds = true; // ignore preds; get all lookahead\n\tctx = ctx || null;\n var lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;\n this._LOOK(s, stopState, lookContext, r, new Set(), new BitSet(), seeThruPreds, true);\n return r;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and {@code stopState} or the end of the\n// rule containing {@code s} is reached, {@link Token//EPSILON} is added to\n// the result set. If {@code ctx} is not {@code null} and {@code addEOF} is\n// {@code true} and {@code stopState} or the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state.\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx The outer context, or {@code null} if the outer context should\n// not be used.\n// @param look The result lookahead set.\n// @param lookBusy A set used for preventing epsilon closures in the ATN\n// from causing a stack overflow. Outside code should pass\n// {@code new Set<ATNConfig>} for this argument.\n// @param calledRuleStack A set used for preventing left recursion in the\n// ATN from causing a stack overflow. Outside code should pass\n// {@code new BitSet()} for this argument.\n// @param seeThruPreds {@code true} to true semantic predicates as\n// implicitly {@code true} and \"see through them\", otherwise {@code false}\n// to treat semantic predicates as opaque and add {@link //HIT_PRED} to the\n// result if one is encountered.\n// @param addEOF Add {@link Token//EOF} to the result if the end of the\n// outermost context is reached. This parameter has no effect if {@code ctx}\n// is {@code null}.\n///\nLL1Analyzer.prototype._LOOK = function(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {\n var c = new ATNConfig({state:s, alt:0, context: ctx}, null);\n if (lookBusy.contains(c)) {\n return;\n }\n lookBusy.add(c);\n if (s === stopState) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n }\n if (s instanceof RuleStopState ) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n if (ctx !== PredictionContext.EMPTY) {\n // run thru all possible stack tops in ctx\n for(var i=0; i<ctx.length; i++) {\n var returnState = this.atn.states[ctx.getReturnState(i)];\n var removed = calledRuleStack.contains(returnState.ruleIndex);\n try {\n calledRuleStack.remove(returnState.ruleIndex);\n this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n if (removed) {\n calledRuleStack.add(returnState.ruleIndex);\n }\n }\n }\n return;\n }\n }\n for(var j=0; j<s.transitions.length; j++) {\n var t = s.transitions[j];\n if (t.constructor === RuleTransition) {\n if (calledRuleStack.contains(t.target.ruleIndex)) {\n continue;\n }\n var newContext = SingletonPredictionContext.create(ctx, t.followState.stateNumber);\n try {\n calledRuleStack.add(t.target.ruleIndex);\n this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n calledRuleStack.remove(t.target.ruleIndex);\n }\n } else if (t instanceof AbstractPredicateTransition ) {\n if (seeThruPreds) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else {\n look.addOne(LL1Analyzer.HIT_PRED);\n }\n } else if( t.isEpsilon) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else if (t.constructor === WildcardTransition) {\n look.addRange( Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType );\n } else {\n var set = t.label;\n if (set !== null) {\n if (t instanceof NotSetTransition) {\n set = set.complement(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType);\n }\n look.addSet(set);\n }\n }\n }\n};\n\nexports.LL1Analyzer = LL1Analyzer;\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A lexer is recognizer that draws input symbols from a character stream.\n// lexer grammars result in a subclass of this object. A Lexer object\n// uses simplified match() and error recovery mechanisms in the interest of speed.\n\nvar Token = require('./Token').Token;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar CommonTokenFactory = require('./CommonTokenFactory').CommonTokenFactory;\nvar RecognitionException = require('./error/Errors').RecognitionException;\nvar LexerNoViableAltException = require('./error/Errors').LexerNoViableAltException;\n\nfunction TokenSource() {\n\treturn this;\n}\n\nfunction Lexer(input) {\n\tRecognizer.call(this);\n\tthis._input = input;\n\tthis._factory = CommonTokenFactory.DEFAULT;\n\tthis._tokenFactorySourcePair = [ this, input ];\n\n\tthis._interp = null; // child classes must populate this\n\n\t// The goal of all lexer rules/methods is to create a token object.\n\t// this is an instance variable as multiple rules may collaborate to\n\t// create a single token. nextToken will return this object after\n\t// matching lexer rule(s). If you subclass to allow multiple token\n\t// emissions, then set this to the last token to be matched or\n\t// something nonnull so that the auto token emit mechanism will not\n\t// emit another token.\n\tthis._token = null;\n\n\t// What character index in the stream did the current token start at?\n\t// Needed, for example, to get the text for current token. Set at\n\t// the start of nextToken.\n\tthis._tokenStartCharIndex = -1;\n\n\t// The line on which the first character of the token resides///\n\tthis._tokenStartLine = -1;\n\n\t// The character position of first character within the line///\n\tthis._tokenStartColumn = -1;\n\n\t// Once we see EOF on char stream, next token will be EOF.\n\t// If you have DONE : EOF ; then you see DONE EOF.\n\tthis._hitEOF = false;\n\n\t// The channel number for the current token///\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\n\t// The token type for the current token///\n\tthis._type = Token.INVALID_TYPE;\n\n\tthis._modeStack = [];\n\tthis._mode = Lexer.DEFAULT_MODE;\n\n\t// You can set the text for the current token to override what is in\n\t// the input char buffer. Use setText() or can set this instance var.\n\t// /\n\tthis._text = null;\n\n\treturn this;\n}\n\nLexer.prototype = Object.create(Recognizer.prototype);\nLexer.prototype.constructor = Lexer;\n\nLexer.DEFAULT_MODE = 0;\nLexer.MORE = -2;\nLexer.SKIP = -3;\n\nLexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;\nLexer.HIDDEN = Token.HIDDEN_CHANNEL;\nLexer.MIN_CHAR_VALUE = 0x0000;\nLexer.MAX_CHAR_VALUE = 0x10FFFF;\n\nLexer.prototype.reset = function() {\n\t// wack Lexer state variables\n\tif (this._input !== null) {\n\t\tthis._input.seek(0); // rewind the input\n\t}\n\tthis._token = null;\n\tthis._type = Token.INVALID_TYPE;\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\tthis._tokenStartCharIndex = -1;\n\tthis._tokenStartColumn = -1;\n\tthis._tokenStartLine = -1;\n\tthis._text = null;\n\n\tthis._hitEOF = false;\n\tthis._mode = Lexer.DEFAULT_MODE;\n\tthis._modeStack = [];\n\n\tthis._interp.reset();\n};\n\n// Return a token from this source; i.e., match a token on the char stream.\nLexer.prototype.nextToken = function() {\n\tif (this._input === null) {\n\t\tthrow \"nextToken requires a non-null input stream.\";\n\t}\n\n\t// Mark start location in char stream so unbuffered streams are\n\t// guaranteed at least have text of current token\n\tvar tokenStartMarker = this._input.mark();\n\ttry {\n\t\twhile (true) {\n\t\t\tif (this._hitEOF) {\n\t\t\t\tthis.emitEOF();\n\t\t\t\treturn this._token;\n\t\t\t}\n\t\t\tthis._token = null;\n\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\t\tthis._tokenStartCharIndex = this._input.index;\n\t\t\tthis._tokenStartColumn = this._interp.column;\n\t\t\tthis._tokenStartLine = this._interp.line;\n\t\t\tthis._text = null;\n\t\t\tvar continueOuter = false;\n\t\t\twhile (true) {\n\t\t\t\tthis._type = Token.INVALID_TYPE;\n\t\t\t\tvar ttype = Lexer.SKIP;\n\t\t\t\ttry {\n\t\t\t\t\tttype = this._interp.match(this._input, this._mode);\n\t\t\t\t} catch (e) {\n\t\t\t\t if(e instanceof RecognitionException) {\n this.notifyListeners(e); // report error\n this.recover(e);\n } else {\n console.log(e.stack);\n throw e;\n }\n\t\t\t\t}\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis._hitEOF = true;\n\t\t\t\t}\n\t\t\t\tif (this._type === Token.INVALID_TYPE) {\n\t\t\t\t\tthis._type = ttype;\n\t\t\t\t}\n\t\t\t\tif (this._type === Lexer.SKIP) {\n\t\t\t\t\tcontinueOuter = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (this._type !== Lexer.MORE) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (continueOuter) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._token === null) {\n\t\t\t\tthis.emit();\n\t\t\t}\n\t\t\treturn this._token;\n\t\t}\n\t} finally {\n\t\t// make sure we release marker after match or\n\t\t// unbuffered char stream will keep buffering\n\t\tthis._input.release(tokenStartMarker);\n\t}\n};\n\n// Instruct the lexer to skip creating a token for current lexer rule\n// and look for another token. nextToken() knows to keep looking when\n// a lexer rule finishes with token set to SKIP_TOKEN. Recall that\n// if token==null at end of any token rule, it creates one for you\n// and emits it.\n// /\nLexer.prototype.skip = function() {\n\tthis._type = Lexer.SKIP;\n};\n\nLexer.prototype.more = function() {\n\tthis._type = Lexer.MORE;\n};\n\nLexer.prototype.mode = function(m) {\n\tthis._mode = m;\n};\n\nLexer.prototype.pushMode = function(m) {\n\tif (this._interp.debug) {\n\t\tconsole.log(\"pushMode \" + m);\n\t}\n\tthis._modeStack.push(this._mode);\n\tthis.mode(m);\n};\n\nLexer.prototype.popMode = function() {\n\tif (this._modeStack.length === 0) {\n\t\tthrow \"Empty Stack\";\n\t}\n\tif (this._interp.debug) {\n\t\tconsole.log(\"popMode back to \" + this._modeStack.slice(0, -1));\n\t}\n\tthis.mode(this._modeStack.pop());\n\treturn this._mode;\n};\n\n// Set the char stream and reset the lexer\nObject.defineProperty(Lexer.prototype, \"inputStream\", {\n\tget : function() {\n\t\treturn this._input;\n\t},\n\tset : function(input) {\n\t\tthis._input = null;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t\tthis.reset();\n\t\tthis._input = input;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"sourceName\", {\n\tget : function sourceName() {\n\t\treturn this._input.sourceName;\n\t}\n});\n\n// By default does not support multiple emits per nextToken invocation\n// for efficiency reasons. Subclass and override this method, nextToken,\n// and getToken (to push tokens into a list and pull from that list\n// rather than a single variable as this implementation does).\n// /\nLexer.prototype.emitToken = function(token) {\n\tthis._token = token;\n};\n\n// The standard method called to automatically emit a token at the\n// outermost lexical rule. The token object should point into the\n// char buffer start..stop. If there is a text override in 'text',\n// use that to set the token's text. Override this method to emit\n// custom Token objects or provide a new factory.\n// /\nLexer.prototype.emit = function() {\n\tvar t = this._factory.create(this._tokenFactorySourcePair, this._type,\n\t\t\tthis._text, this._channel, this._tokenStartCharIndex, this\n\t\t\t\t\t.getCharIndex() - 1, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn);\n\tthis.emitToken(t);\n\treturn t;\n};\n\nLexer.prototype.emitEOF = function() {\n\tvar cpos = this.column;\n\tvar lpos = this.line;\n\tvar eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,\n\t\t\tnull, Token.DEFAULT_CHANNEL, this._input.index,\n\t\t\tthis._input.index - 1, lpos, cpos);\n\tthis.emitToken(eof);\n\treturn eof;\n};\n\nObject.defineProperty(Lexer.prototype, \"type\", {\n\tget : function() {\n\t\treturn this.type;\n\t},\n\tset : function(type) {\n\t\tthis._type = type;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"line\", {\n\tget : function() {\n\t\treturn this._interp.line;\n\t},\n\tset : function(line) {\n\t\tthis._interp.line = line;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"column\", {\n\tget : function() {\n\t\treturn this._interp.column;\n\t},\n\tset : function(column) {\n\t\tthis._interp.column = column;\n\t}\n});\n\n\n// What is the index of the current character of lookahead?///\nLexer.prototype.getCharIndex = function() {\n\treturn this._input.index;\n};\n\n// Return the text matched so far for the current token or any text override.\n//Set the complete text of this token; it wipes any previous changes to the text.\nObject.defineProperty(Lexer.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t} else {\n\t\t\treturn this._interp.getText(this._input);\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n// Return a list of all Token objects in input char stream.\n// Forces load of all tokens. Does not include EOF token.\n// /\nLexer.prototype.getAllTokens = function() {\n\tvar tokens = [];\n\tvar t = this.nextToken();\n\twhile (t.type !== Token.EOF) {\n\t\ttokens.push(t);\n\t\tt = this.nextToken();\n\t}\n\treturn tokens;\n};\n\nLexer.prototype.notifyListeners = function(e) {\n\tvar start = this._tokenStartCharIndex;\n\tvar stop = this._input.index;\n\tvar text = this._input.getText(start, stop);\n\tvar msg = \"token recognition error at: '\" + this.getErrorDisplay(text) + \"'\";\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, null, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn, msg, e);\n};\n\nLexer.prototype.getErrorDisplay = function(s) {\n\tvar d = [];\n\tfor (var i = 0; i < s.length; i++) {\n\t\td.push(s[i]);\n\t}\n\treturn d.join('');\n};\n\nLexer.prototype.getErrorDisplayForChar = function(c) {\n\tif (c.charCodeAt(0) === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (c === '\\n') {\n\t\treturn \"\\\\n\";\n\t} else if (c === '\\t') {\n\t\treturn \"\\\\t\";\n\t} else if (c === '\\r') {\n\t\treturn \"\\\\r\";\n\t} else {\n\t\treturn c;\n\t}\n};\n\nLexer.prototype.getCharErrorDisplay = function(c) {\n\treturn \"'\" + this.getErrorDisplayForChar(c) + \"'\";\n};\n\n// Lexers can normally match any char in it's vocabulary after matching\n// a token, so do the easy thing and just kill a character and hope\n// it all works out. You can instead use the rule invocation stack\n// to do sophisticated error recovery if you are in a fragment rule.\n// /\nLexer.prototype.recover = function(re) {\n\tif (this._input.LA(1) !== Token.EOF) {\n\t\tif (re instanceof LexerNoViableAltException) {\n\t\t\t// skip a char and try again\n\t\t\tthis._interp.consume(this._input);\n\t\t} else {\n\t\t\t// TODO: Do we lose character or line position information?\n\t\t\tthis._input.consume();\n\t\t}\n\t}\n};\n\nexports.Lexer = Lexer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./Token').Token;\nvar ParseTreeListener = require('./tree/Tree').ParseTreeListener;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar DefaultErrorStrategy = require('./error/ErrorStrategy').DefaultErrorStrategy;\nvar ATNDeserializer = require('./atn/ATNDeserializer').ATNDeserializer;\nvar ATNDeserializationOptions = require('./atn/ATNDeserializationOptions').ATNDeserializationOptions;\nvar TerminalNode = require('./tree/Tree').TerminalNode;\nvar ErrorNode = require('./tree/Tree').ErrorNode;\n\nfunction TraceListener(parser) {\n\tParseTreeListener.call(this);\n this.parser = parser;\n\treturn this;\n}\n\nTraceListener.prototype = Object.create(ParseTreeListener.prototype);\nTraceListener.prototype.constructor = TraceListener;\n\nTraceListener.prototype.enterEveryRule = function(ctx) {\n\tconsole.log(\"enter \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\nTraceListener.prototype.visitTerminal = function( node) {\n\tconsole.log(\"consume \" + node.symbol + \" rule \" + this.parser.ruleNames[this.parser._ctx.ruleIndex]);\n};\n\nTraceListener.prototype.exitEveryRule = function(ctx) {\n\tconsole.log(\"exit \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\n// this is all the parsing support code essentially; most of it is error\n// recovery stuff.//\nfunction Parser(input) {\n\tRecognizer.call(this);\n\t// The input stream.\n\tthis._input = null;\n\t// The error handling strategy for the parser. The default value is a new\n\t// instance of {@link DefaultErrorStrategy}.\n\tthis._errHandler = new DefaultErrorStrategy();\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\t// The {@link ParserRuleContext} object for the currently executing rule.\n\t// this is always non-null during the parsing process.\n\tthis._ctx = null;\n\t// Specifies whether or not the parser should construct a parse tree during\n\t// the parsing process. The default value is {@code true}.\n\tthis.buildParseTrees = true;\n\t// When {@link //setTrace}{@code (true)} is called, a reference to the\n\t// {@link TraceListener} is stored here so it can be easily removed in a\n\t// later call to {@link //setTrace}{@code (false)}. The listener itself is\n\t// implemented as a parser listener so this field is not directly used by\n\t// other parser methods.\n\tthis._tracer = null;\n\t// The list of {@link ParseTreeListener} listeners registered to receive\n\t// events during the parse.\n\tthis._parseListeners = null;\n\t// The number of syntax errors reported during parsing. this value is\n\t// incremented each time {@link //notifyErrorListeners} is called.\n\tthis._syntaxErrors = 0;\n\tthis.setInputStream(input);\n\treturn this;\n}\n\nParser.prototype = Object.create(Recognizer.prototype);\nParser.prototype.contructor = Parser;\n\n// this field maps from the serialized ATN string to the deserialized {@link\n// ATN} with\n// bypass alternatives.\n//\n// @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()\n//\nParser.bypassAltsAtnCache = {};\n\n// reset the parser's state//\nParser.prototype.reset = function() {\n\tif (this._input !== null) {\n\t\tthis._input.seek(0);\n\t}\n\tthis._errHandler.reset(this);\n\tthis._ctx = null;\n\tthis._syntaxErrors = 0;\n\tthis.setTrace(false);\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\tif (this._interp !== null) {\n\t\tthis._interp.reset();\n\t}\n};\n\n// Match current input symbol against {@code ttype}. If the symbol type\n// matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are\n// called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @param ttype the token type to match\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// {@code ttype} and the error strategy could not recover from the\n// mismatched symbol\n\nParser.prototype.match = function(ttype) {\n\tvar t = this.getCurrentToken();\n\tif (t.type === ttype) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this.buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n// Match current input symbol as a wildcard. If the symbol type matches\n// (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}\n// and {@link //consume} are called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// a wildcard and the error strategy could not recover from the mismatched\n// symbol\n\nParser.prototype.matchWildcard = function() {\n\tvar t = this.getCurrentToken();\n\tif (t.type > 0) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n\nParser.prototype.getParseListeners = function() {\n\treturn this._parseListeners || [];\n};\n\n// Registers {@code listener} to receive events during the parsing process.\n//\n// <p>To support output-preserving grammar transformations (including but not\n// limited to left-recursion removal, automated left-factoring, and\n// optimized code generation), calls to listener methods during the parse\n// may differ substantially from calls made by\n// {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In\n// particular, rule entry and exit events may occur in a different order\n// during the parse than after the parser. In addition, calls to certain\n// rule entry methods may be omitted.</p>\n//\n// <p>With the following specific exceptions, calls to listener events are\n// <em>deterministic</em>, i.e. for identical input the calls to listener\n// methods will be the same.</p>\n//\n// <ul>\n// <li>Alterations to the grammar used to generate code may change the\n// behavior of the listener calls.</li>\n// <li>Alterations to the command line options passed to ANTLR 4 when\n// generating the parser may change the behavior of the listener calls.</li>\n// <li>Changing the version of the ANTLR Tool used to generate the parser\n// may change the behavior of the listener calls.</li>\n// </ul>\n//\n// @param listener the listener to add\n//\n// @throws NullPointerException if {@code} listener is {@code null}\n//\nParser.prototype.addParseListener = function(listener) {\n\tif (listener === null) {\n\t\tthrow \"listener\";\n\t}\n\tif (this._parseListeners === null) {\n\t\tthis._parseListeners = [];\n\t}\n\tthis._parseListeners.push(listener);\n};\n\n//\n// Remove {@code listener} from the list of parse listeners.\n//\n// <p>If {@code listener} is {@code null} or has not been added as a parse\n// listener, this method does nothing.</p>\n// @param listener the listener to remove\n//\nParser.prototype.removeParseListener = function(listener) {\n\tif (this._parseListeners !== null) {\n\t\tvar idx = this._parseListeners.indexOf(listener);\n\t\tif (idx >= 0) {\n\t\t\tthis._parseListeners.splice(idx, 1);\n\t\t}\n\t\tif (this._parseListeners.length === 0) {\n\t\t\tthis._parseListeners = null;\n\t\t}\n\t}\n};\n\n// Remove all parse listeners.\nParser.prototype.removeParseListeners = function() {\n\tthis._parseListeners = null;\n};\n\n// Notify any parse listeners of an enter rule event.\nParser.prototype.triggerEnterRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n var ctx = this._ctx;\n\t\tthis._parseListeners.map(function(listener) {\n\t\t\tlistener.enterEveryRule(ctx);\n\t\t\tctx.enterRule(listener);\n\t\t});\n\t}\n};\n\n//\n// Notify any parse listeners of an exit rule event.\n//\n// @see //addParseListener\n//\nParser.prototype.triggerExitRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n\t\t// reverse order walk of listeners\n var ctx = this._ctx;\n\t\tthis._parseListeners.slice(0).reverse().map(function(listener) {\n\t\t\tctx.exitRule(listener);\n\t\t\tlistener.exitEveryRule(ctx);\n\t\t});\n\t}\n};\n\nParser.prototype.getTokenFactory = function() {\n\treturn this._input.tokenSource._factory;\n};\n\n// Tell our token source and error strategy about a new way to create tokens.//\nParser.prototype.setTokenFactory = function(factory) {\n\tthis._input.tokenSource._factory = factory;\n};\n\n// The ATN with bypass alternatives is expensive to create so we create it\n// lazily.\n//\n// @throws UnsupportedOperationException if the current parser does not\n// implement the {@link //getSerializedATN()} method.\n//\nParser.prototype.getATNWithBypassAlts = function() {\n\tvar serializedAtn = this.getSerializedATN();\n\tif (serializedAtn === null) {\n\t\tthrow \"The current parser does not support an ATN with bypass alternatives.\";\n\t}\n\tvar result = this.bypassAltsAtnCache[serializedAtn];\n\tif (result === null) {\n\t\tvar deserializationOptions = new ATNDeserializationOptions();\n\t\tdeserializationOptions.generateRuleBypassTransitions = true;\n\t\tresult = new ATNDeserializer(deserializationOptions)\n\t\t\t\t.deserialize(serializedAtn);\n\t\tthis.bypassAltsAtnCache[serializedAtn] = result;\n\t}\n\treturn result;\n};\n\n// The preferred method of getting a tree pattern. For example, here's a\n// sample use:\n//\n// <pre>\n// ParseTree t = parser.expr();\n// ParseTreePattern p = parser.compileParseTreePattern(\"&lt;ID&gt;+0\",\n// MyParser.RULE_expr);\n// ParseTreeMatch m = p.match(t);\n// String id = m.get(\"ID\");\n// </pre>\n\nvar Lexer = require('./Lexer').Lexer;\n\nParser.prototype.compileParseTreePattern = function(pattern, patternRuleIndex, lexer) {\n\tlexer = lexer || null;\n\tif (lexer === null) {\n\t\tif (this.getTokenStream() !== null) {\n\t\t\tvar tokenSource = this.getTokenStream().tokenSource;\n\t\t\tif (tokenSource instanceof Lexer) {\n\t\t\t\tlexer = tokenSource;\n\t\t\t}\n\t\t}\n\t}\n\tif (lexer === null) {\n\t\tthrow \"Parser can't discover a lexer to use\";\n\t}\n\tvar m = new ParseTreePatternMatcher(lexer, this);\n\treturn m.compile(pattern, patternRuleIndex);\n};\n\nParser.prototype.getInputStream = function() {\n\treturn this.getTokenStream();\n};\n\nParser.prototype.setInputStream = function(input) {\n\tthis.setTokenStream(input);\n};\n\nParser.prototype.getTokenStream = function() {\n\treturn this._input;\n};\n\n// Set the token stream and reset the parser.//\nParser.prototype.setTokenStream = function(input) {\n\tthis._input = null;\n\tthis.reset();\n\tthis._input = input;\n};\n\n// Match needs to return the current input symbol, which gets put\n// into the label for the associated token ref; e.g., x=ID.\n//\nParser.prototype.getCurrentToken = function() {\n\treturn this._input.LT(1);\n};\n\nParser.prototype.notifyErrorListeners = function(msg, offendingToken, err) {\n\toffendingToken = offendingToken || null;\n\terr = err || null;\n\tif (offendingToken === null) {\n\t\toffendingToken = this.getCurrentToken();\n\t}\n\tthis._syntaxErrors += 1;\n\tvar line = offendingToken.line;\n\tvar column = offendingToken.column;\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, offendingToken, line, column, msg, err);\n};\n\n//\n// Consume and return the {@linkplain //getCurrentToken current symbol}.\n//\n// <p>E.g., given the following input with {@code A} being the current\n// lookahead symbol, this function moves the cursor to {@code B} and returns\n// {@code A}.</p>\n//\n// <pre>\n// A B\n// ^\n// </pre>\n//\n// If the parser is not in error recovery mode, the consumed symbol is added\n// to the parse tree using {@link ParserRuleContext//addChild(Token)}, and\n// {@link ParseTreeListener//visitTerminal} is called on any parse listeners.\n// If the parser <em>is</em> in error recovery mode, the consumed symbol is\n// added to the parse tree using\n// {@link ParserRuleContext//addErrorNode(Token)}, and\n// {@link ParseTreeListener//visitErrorNode} is called on any parse\n// listeners.\n//\nParser.prototype.consume = function() {\n\tvar o = this.getCurrentToken();\n\tif (o.type !== Token.EOF) {\n\t\tthis.getInputStream().consume();\n\t}\n\tvar hasListener = this._parseListeners !== null && this._parseListeners.length > 0;\n\tif (this.buildParseTrees || hasListener) {\n\t\tvar node;\n\t\tif (this._errHandler.inErrorRecoveryMode(this)) {\n\t\t\tnode = this._ctx.addErrorNode(o);\n\t\t} else {\n\t\t\tnode = this._ctx.addTokenNode(o);\n\t\t}\n node.invokingState = this.state;\n\t\tif (hasListener) {\n\t\t\tthis._parseListeners.map(function(listener) {\n\t\t\t\tif (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {\n\t\t\t\t\tlistener.visitErrorNode(node);\n\t\t\t\t} else if (node instanceof TerminalNode) {\n\t\t\t\t\tlistener.visitTerminal(node);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn o;\n};\n\nParser.prototype.addContextToParseTree = function() {\n\t// add current context to parent if we have a parent\n\tif (this._ctx.parentCtx !== null) {\n\t\tthis._ctx.parentCtx.addChild(this._ctx);\n\t}\n};\n\n// Always called by generated parsers upon entry to a rule. Access field\n// {@link //_ctx} get the current context.\n\nParser.prototype.enterRule = function(localctx, state, ruleIndex) {\n\tthis.state = state;\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this.buildParseTrees) {\n\t\tthis.addContextToParseTree();\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent();\n\t}\n};\n\nParser.prototype.exitRule = function() {\n\tthis._ctx.stop = this._input.LT(-1);\n\t// trigger event on _ctx, before it reverts to parent\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerExitRuleEvent();\n\t}\n\tthis.state = this._ctx.invokingState;\n\tthis._ctx = this._ctx.parentCtx;\n};\n\nParser.prototype.enterOuterAlt = function(localctx, altNum) {\n \tlocalctx.setAltNumber(altNum);\n\t// if we have new localctx, make sure we replace existing ctx\n\t// that is previous child of parse tree\n\tif (this.buildParseTrees && this._ctx !== localctx) {\n\t\tif (this._ctx.parentCtx !== null) {\n\t\t\tthis._ctx.parentCtx.removeLastChild();\n\t\t\tthis._ctx.parentCtx.addChild(localctx);\n\t\t}\n\t}\n\tthis._ctx = localctx;\n};\n\n// Get the precedence level for the top-most precedence rule.\n//\n// @return The precedence level for the top-most precedence rule, or -1 if\n// the parser context is not nested within a precedence rule.\n\nParser.prototype.getPrecedence = function() {\n\tif (this._precedenceStack.length === 0) {\n\t\treturn -1;\n\t} else {\n\t\treturn this._precedenceStack[this._precedenceStack.length-1];\n\t}\n};\n\nParser.prototype.enterRecursionRule = function(localctx, state, ruleIndex,\n\t\tprecedence) {\n\tthis.state = state;\n\tthis._precedenceStack.push(precedence);\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\n//\n// Like {@link //enterRule} but for recursive rules.\n\nParser.prototype.pushNewRecursionContext = function(localctx, state, ruleIndex) {\n\tvar previous = this._ctx;\n\tprevious.parentCtx = localctx;\n\tprevious.invokingState = state;\n\tprevious.stop = this._input.LT(-1);\n\n\tthis._ctx = localctx;\n\tthis._ctx.start = previous.start;\n\tif (this.buildParseTrees) {\n\t\tthis._ctx.addChild(previous);\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\nParser.prototype.unrollRecursionContexts = function(parentCtx) {\n\tthis._precedenceStack.pop();\n\tthis._ctx.stop = this._input.LT(-1);\n\tvar retCtx = this._ctx; // save current ctx (return value)\n\t// unroll so _ctx is as it was before call to recursive method\n\tif (this._parseListeners !== null) {\n\t\twhile (this._ctx !== parentCtx) {\n\t\t\tthis.triggerExitRuleEvent();\n\t\t\tthis._ctx = this._ctx.parentCtx;\n\t\t}\n\t} else {\n\t\tthis._ctx = parentCtx;\n\t}\n\t// hook into tree\n\tretCtx.parentCtx = parentCtx;\n\tif (this.buildParseTrees && parentCtx !== null) {\n\t\t// add return ctx into invoking rule's tree\n\t\tparentCtx.addChild(retCtx);\n\t}\n};\n\nParser.prototype.getInvokingContext = function(ruleIndex) {\n\tvar ctx = this._ctx;\n\twhile (ctx !== null) {\n\t\tif (ctx.ruleIndex === ruleIndex) {\n\t\t\treturn ctx;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\treturn null;\n};\n\nParser.prototype.precpred = function(localctx, precedence) {\n\treturn precedence >= this._precedenceStack[this._precedenceStack.length-1];\n};\n\nParser.prototype.inContext = function(context) {\n\t// TODO: useful in parser?\n\treturn false;\n};\n\n//\n// Checks whether or not {@code symbol} can follow the current state in the\n// ATN. The behavior of this method is equivalent to the following, but is\n// implemented such that the complete context-sensitive follow set does not\n// need to be explicitly constructed.\n//\n// <pre>\n// return getExpectedTokens().contains(symbol);\n// </pre>\n//\n// @param symbol the symbol type to check\n// @return {@code true} if {@code symbol} can follow the current state in\n// the ATN, otherwise {@code false}.\n\nParser.prototype.isExpectedToken = function(symbol) {\n\tvar atn = this._interp.atn;\n\tvar ctx = this._ctx;\n\tvar s = atn.states[this.state];\n\tvar following = atn.nextTokens(s);\n\tif (following.contains(symbol)) {\n\t\treturn true;\n\t}\n\tif (!following.contains(Token.EPSILON)) {\n\t\treturn false;\n\t}\n\twhile (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n\t\tvar invokingState = atn.states[ctx.invokingState];\n\t\tvar rt = invokingState.transitions[0];\n\t\tfollowing = atn.nextTokens(rt.followState);\n\t\tif (following.contains(symbol)) {\n\t\t\treturn true;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\tif (following.contains(Token.EPSILON) && symbol === Token.EOF) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n// Computes the set of input symbols which could follow the current parser\n// state and context, as given by {@link //getState} and {@link //getContext},\n// respectively.\n//\n// @see ATN//getExpectedTokens(int, RuleContext)\n//\nParser.prototype.getExpectedTokens = function() {\n\treturn this._interp.atn.getExpectedTokens(this.state, this._ctx);\n};\n\nParser.prototype.getExpectedTokensWithinCurrentRule = function() {\n\tvar atn = this._interp.atn;\n\tvar s = atn.states[this.state];\n\treturn atn.nextTokens(s);\n};\n\n// Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.//\nParser.prototype.getRuleIndex = function(ruleName) {\n\tvar ruleIndex = this.getRuleIndexMap()[ruleName];\n\tif (ruleIndex !== null) {\n\t\treturn ruleIndex;\n\t} else {\n\t\treturn -1;\n\t}\n};\n\n// Return List&lt;String&gt; of the rule names in your parser instance\n// leading up to a call to the current rule. You could override if\n// you want more details such as the file/line info of where\n// in the ATN a rule is invoked.\n//\n// this is very useful for error messages.\n//\nParser.prototype.getRuleInvocationStack = function(p) {\n\tp = p || null;\n\tif (p === null) {\n\t\tp = this._ctx;\n\t}\n\tvar stack = [];\n\twhile (p !== null) {\n\t\t// compute what follows who invoked us\n\t\tvar ruleIndex = p.ruleIndex;\n\t\tif (ruleIndex < 0) {\n\t\t\tstack.push(\"n/a\");\n\t\t} else {\n\t\t\tstack.push(this.ruleNames[ruleIndex]);\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\treturn stack;\n};\n\n// For debugging and other purposes.//\nParser.prototype.getDFAStrings = function() {\n\treturn this._interp.decisionToDFA.toString();\n};\n// For debugging and other purposes.//\nParser.prototype.dumpDFA = function() {\n\tvar seenOne = false;\n\tfor (var i = 0; i < this._interp.decisionToDFA.length; i++) {\n\t\tvar dfa = this._interp.decisionToDFA[i];\n\t\tif (dfa.states.length > 0) {\n\t\t\tif (seenOne) {\n\t\t\t\tconsole.log();\n\t\t\t}\n\t\t\tthis.printer.println(\"Decision \" + dfa.decision + \":\");\n\t\t\tthis.printer.print(dfa.toString(this.literalNames, this.symbolicNames));\n\t\t\tseenOne = true;\n\t\t}\n\t}\n};\n\n/*\n\"\t\t\tprinter = function() {\\r\\n\" +\n\"\t\t\t\tthis.println = function(s) { document.getElementById('output') += s + '\\\\n'; }\\r\\n\" +\n\"\t\t\t\tthis.print = function(s) { document.getElementById('output') += s; }\\r\\n\" +\n\"\t\t\t};\\r\\n\" +\n*/\n\nParser.prototype.getSourceName = function() {\n\treturn this._input.sourceName;\n};\n\n// During a parse is sometimes useful to listen in on the rule entry and exit\n// events as well as token matches. this is for quick and dirty debugging.\n//\nParser.prototype.setTrace = function(trace) {\n\tif (!trace) {\n\t\tthis.removeParseListener(this._tracer);\n\t\tthis._tracer = null;\n\t} else {\n\t\tif (this._tracer !== null) {\n\t\t\tthis.removeParseListener(this._tracer);\n\t\t}\n\t\tthis._tracer = new TraceListener(this);\n\t\tthis.addParseListener(this._tracer);\n\t}\n};\n\nexports.Parser = Parser;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//* A rule invocation record for parsing.\n//\n// Contains all of the information about the current rule not stored in the\n// RuleContext. It handles parse tree children list, Any ATN state\n// tracing, and the default values available for rule indications:\n// start, stop, rule index, current alt number, current\n// ATN state.\n//\n// Subclasses made for each rule and grammar track the parameters,\n// return values, locals, and labels specific to that rule. These\n// are the objects that are returned from rules.\n//\n// Note text is not an actual field of a rule return value; it is computed\n// from start and stop using the input stream's toString() method. I\n// could add a ctor to this so that we can pass in and store the input\n// stream, but I'm not sure we want to do that. It would seem to be undefined\n// to get the .text property anyway if the rule matches tokens from multiple\n// input streams.\n//\n// I do not use getters for fields of objects that are used simply to\n// group values such as this aggregate. The getters/setters are there to\n// satisfy the superclass interface.\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Tree = require('./tree/Tree');\nvar INVALID_INTERVAL = Tree.INVALID_INTERVAL;\nvar TerminalNode = Tree.TerminalNode;\nvar TerminalNodeImpl = Tree.TerminalNodeImpl;\nvar ErrorNodeImpl = Tree.ErrorNodeImpl;\nvar Interval = require(\"./IntervalSet\").Interval;\n\nfunction ParserRuleContext(parent, invokingStateNumber) {\n\tparent = parent || null;\n\tinvokingStateNumber = invokingStateNumber || null;\n\tRuleContext.call(this, parent, invokingStateNumber);\n\tthis.ruleIndex = -1;\n // * If we are debugging or building a parse tree for a visitor,\n // we need to track all of the tokens and rule invocations associated\n // with this rule's context. This is empty for parsing w/o tree constr.\n // operation because we don't the need to track the details about\n // how we parse this rule.\n // /\n this.children = null;\n this.start = null;\n this.stop = null;\n // The exception that forced this rule to return. If the rule successfully\n // completed, this is {@code null}.\n this.exception = null;\n}\n\nParserRuleContext.prototype = Object.create(RuleContext.prototype);\nParserRuleContext.prototype.constructor = ParserRuleContext;\n\n// * COPY a ctx (I'm deliberately not using copy constructor)///\nParserRuleContext.prototype.copyFrom = function(ctx) {\n // from RuleContext\n this.parentCtx = ctx.parentCtx;\n this.invokingState = ctx.invokingState;\n this.children = null;\n this.start = ctx.start;\n this.stop = ctx.stop;\n // copy any error nodes to alt label node\n if(ctx.children) {\n this.children = [];\n // reset parent pointer for any error nodes\n \tctx.children.map(function(child) {\n \t\tif (child instanceof ErrorNodeImpl) {\n this.children.push(child);\n child.parentCtx = this;\n }\n\t\t}, this);\n\t}\n};\n\n// Double dispatch methods for listeners\nParserRuleContext.prototype.enterRule = function(listener) {\n};\n\nParserRuleContext.prototype.exitRule = function(listener) {\n};\n\n// * Does not set parent link; other add methods do that///\nParserRuleContext.prototype.addChild = function(child) {\n if (this.children === null) {\n this.children = [];\n }\n this.children.push(child);\n return child;\n};\n\n// * Used by enterOuterAlt to toss out a RuleContext previously added as\n// we entered a rule. If we have // label, we will need to remove\n// generic ruleContext object.\n// /\nParserRuleContext.prototype.removeLastChild = function() {\n if (this.children !== null) {\n this.children.pop();\n }\n};\n\nParserRuleContext.prototype.addTokenNode = function(token) {\n var node = new TerminalNodeImpl(token);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.addErrorNode = function(badToken) {\n var node = new ErrorNodeImpl(badToken);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.getChild = function(i, type) {\n\ttype = type || null;\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tif (type === null) {\n\t\treturn this.children[i];\n\t} else {\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif(child instanceof type) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n }\n};\n\n\nParserRuleContext.prototype.getToken = function(ttype, i) {\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tfor(var j=0; j<this.children.length; j++) {\n\t\tvar child = this.children[j];\n\t\tif (child instanceof TerminalNode) {\n\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n }\n\t}\n return null;\n};\n\nParserRuleContext.prototype.getTokens = function(ttype ) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar tokens = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof TerminalNode) {\n\t\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\t\ttokens.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn tokens;\n }\n};\n\nParserRuleContext.prototype.getTypedRuleContext = function(ctxType, i) {\n return this.getChild(i, ctxType);\n};\n\nParserRuleContext.prototype.getTypedRuleContexts = function(ctxType) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar contexts = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof ctxType) {\n\t\t\t\tcontexts.push(child);\n\t\t\t}\n\t\t}\n\t\treturn contexts;\n\t}\n};\n\nParserRuleContext.prototype.getChildCount = function() {\n\tif (this.children=== null) {\n\t\treturn 0;\n\t} else {\n\t\treturn this.children.length;\n\t}\n};\n\nParserRuleContext.prototype.getSourceInterval = function() {\n if( this.start === null || this.stop === null) {\n return INVALID_INTERVAL;\n } else {\n return new Interval(this.start.tokenIndex, this.stop.tokenIndex);\n }\n};\n\nRuleContext.EMPTY = new ParserRuleContext();\n\nfunction InterpreterRuleContext(parent, invokingStateNumber, ruleIndex) {\n\tParserRuleContext.call(parent, invokingStateNumber);\n this.ruleIndex = ruleIndex;\n return this;\n}\n\nInterpreterRuleContext.prototype = Object.create(ParserRuleContext.prototype);\nInterpreterRuleContext.prototype.constructor = InterpreterRuleContext;\n\nexports.ParserRuleContext = ParserRuleContext;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Hash = require('./Utils').Hash;\n\nfunction PredictionContext(cachedHashCode) {\n\tthis.cachedHashCode = cachedHashCode;\n}\n\n// Represents {@code $} in local context prediction, which means wildcard.\n// {@code//+x =//}.\n// /\nPredictionContext.EMPTY = null;\n\n// Represents {@code $} in an array in full context mode, when {@code $}\n// doesn't mean wildcard: {@code $ + x = [$,x]}. Here,\n// {@code $} = {@link //EMPTY_RETURN_STATE}.\n// /\nPredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;\n\nPredictionContext.globalNodeCount = 1;\nPredictionContext.id = PredictionContext.globalNodeCount;\n\n// Stores the computed hash code of this {@link PredictionContext}. The hash\n// code is computed in parts to match the following reference algorithm.\n//\n// <pre>\n// private int referenceHashCode() {\n// int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link\n// //INITIAL_HASH});\n//\n// for (int i = 0; i &lt; {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent\n// getParent}(i));\n// }\n//\n// for (int i = 0; i &lt; {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link\n// //getReturnState getReturnState}(i));\n// }\n//\n// hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link\n// //size()});\n// return hash;\n// }\n// </pre>\n// /\n\n// This means only the {@link //EMPTY} context is in set.\nPredictionContext.prototype.isEmpty = function() {\n\treturn this === PredictionContext.EMPTY;\n};\n\nPredictionContext.prototype.hasEmptyPath = function() {\n\treturn this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nPredictionContext.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\n\nPredictionContext.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n/*\nfunction calculateHashString(parent, returnState) {\n\treturn \"\" + parent + returnState;\n}\n*/\n\n// Used to cache {@link PredictionContext} objects. Its used for the shared\n// context cash associated with contexts in DFA states. This cache\n// can be used for both lexers and parsers.\n\nfunction PredictionContextCache() {\n\tthis.cache = {};\n\treturn this;\n}\n\n// Add a context to the cache and return it. If the context already exists,\n// return that one instead and do not add a new context to the cache.\n// Protect shared cache from unsafe thread access.\n//\nPredictionContextCache.prototype.add = function(ctx) {\n\tif (ctx === PredictionContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\tvar existing = this.cache[ctx] || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\tthis.cache[ctx] = ctx;\n\treturn ctx;\n};\n\nPredictionContextCache.prototype.get = function(ctx) {\n\treturn this.cache[ctx] || null;\n};\n\nObject.defineProperty(PredictionContextCache.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.cache.length;\n\t}\n});\n\nfunction SingletonPredictionContext(parent, returnState) {\n\tvar hashCode = 0;\n\tif(parent !== null) {\n\t\tvar hash = new Hash();\n\t\thash.update(parent, returnState);\n hashCode = hash.finish();\n\t}\n\tPredictionContext.call(this, hashCode);\n\tthis.parentCtx = parent;\n\tthis.returnState = returnState;\n}\n\nSingletonPredictionContext.prototype = Object.create(PredictionContext.prototype);\nSingletonPredictionContext.prototype.contructor = SingletonPredictionContext;\n\nSingletonPredictionContext.create = function(parent, returnState) {\n\tif (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {\n\t\t// someone can pass in the bits of an array ctx that mean $\n\t\treturn PredictionContext.EMPTY;\n\t} else {\n\t\treturn new SingletonPredictionContext(parent, returnState);\n\t}\n};\n\nObject.defineProperty(SingletonPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn 1;\n\t}\n});\n\nSingletonPredictionContext.prototype.getParent = function(index) {\n\treturn this.parentCtx;\n};\n\nSingletonPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nSingletonPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof SingletonPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\tif(this.returnState !== other.returnState)\n return false;\n else if(this.parentCtx==null)\n return other.parentCtx==null\n\t\telse\n return this.parentCtx.equals(other.parentCtx);\n\t}\n};\n\nSingletonPredictionContext.prototype.toString = function() {\n\tvar up = this.parentCtx === null ? \"\" : this.parentCtx.toString();\n\tif (up.length === 0) {\n\t\tif (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\treturn \"$\";\n\t\t} else {\n\t\t\treturn \"\" + this.returnState;\n\t\t}\n\t} else {\n\t\treturn \"\" + this.returnState + \" \" + up;\n\t}\n};\n\nfunction EmptyPredictionContext() {\n\tSingletonPredictionContext.call(this, null, PredictionContext.EMPTY_RETURN_STATE);\n\treturn this;\n}\n\nEmptyPredictionContext.prototype = Object.create(SingletonPredictionContext.prototype);\nEmptyPredictionContext.prototype.constructor = EmptyPredictionContext;\n\nEmptyPredictionContext.prototype.isEmpty = function() {\n\treturn true;\n};\n\nEmptyPredictionContext.prototype.getParent = function(index) {\n\treturn null;\n};\n\nEmptyPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nEmptyPredictionContext.prototype.equals = function(other) {\n\treturn this === other;\n};\n\nEmptyPredictionContext.prototype.toString = function() {\n\treturn \"$\";\n};\n\nPredictionContext.EMPTY = new EmptyPredictionContext();\n\nfunction ArrayPredictionContext(parents, returnStates) {\n\t// Parent can be null only if full ctx mode and we make an array\n\t// from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using\n\t// null parent and\n\t// returnState == {@link //EMPTY_RETURN_STATE}.\n\tvar h = new Hash();\n\th.update(parents, returnStates);\n\tvar hashCode = h.finish();\n\tPredictionContext.call(this, hashCode);\n\tthis.parents = parents;\n\tthis.returnStates = returnStates;\n\treturn this;\n}\n\nArrayPredictionContext.prototype = Object.create(PredictionContext.prototype);\nArrayPredictionContext.prototype.constructor = ArrayPredictionContext;\n\nArrayPredictionContext.prototype.isEmpty = function() {\n\t// since EMPTY_RETURN_STATE can only appear in the last position, we\n\t// don't need to verify that size==1\n\treturn this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nObject.defineProperty(ArrayPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.returnStates.length;\n\t}\n});\n\nArrayPredictionContext.prototype.getParent = function(index) {\n\treturn this.parents[index];\n};\n\nArrayPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnStates[index];\n};\n\nArrayPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof ArrayPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\treturn this.returnStates === other.returnStates &&\n\t\t\t\tthis.parents === other.parents;\n\t}\n};\n\nArrayPredictionContext.prototype.toString = function() {\n\tif (this.isEmpty()) {\n\t\treturn \"[]\";\n\t} else {\n\t\tvar s = \"[\";\n\t\tfor (var i = 0; i < this.returnStates.length; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\ts = s + \", \";\n\t\t\t}\n\t\t\tif (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\ts = s + \"$\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ts = s + this.returnStates[i];\n\t\t\tif (this.parents[i] !== null) {\n\t\t\t\ts = s + \" \" + this.parents[i];\n\t\t\t} else {\n\t\t\t\ts = s + \"null\";\n\t\t\t}\n\t\t}\n\t\treturn s + \"]\";\n\t}\n};\n\n// Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.\n// Return {@link //EMPTY} if {@code outerContext} is empty or null.\n// /\nfunction predictionContextFromRuleContext(atn, outerContext) {\n\tif (outerContext === undefined || outerContext === null) {\n\t\touterContext = RuleContext.EMPTY;\n\t}\n\t// if we are in RuleContext of start rule, s, then PredictionContext\n\t// is EMPTY. Nobody called us. (if we are empty, return empty)\n\tif (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\t// If we have a parent, convert it to a PredictionContext graph\n\tvar parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);\n\tvar state = atn.states[outerContext.invokingState];\n\tvar transition = state.transitions[0];\n\treturn SingletonPredictionContext.create(parent, transition.followState.stateNumber);\n}\n/*\nfunction calculateListsHashString(parents, returnStates) {\n\tvar s = \"\";\n\tparents.map(function(p) {\n\t\ts = s + p;\n\t});\n\treturnStates.map(function(r) {\n\t\ts = s + r;\n\t});\n\treturn s;\n}\n*/\nfunction merge(a, b, rootIsWildcard, mergeCache) {\n\t// share same graph if both same\n\tif (a === b) {\n\t\treturn a;\n\t}\n\tif (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {\n\t\treturn mergeSingletons(a, b, rootIsWildcard, mergeCache);\n\t}\n\t// At least one of a or b is array\n\t// If one is $ and rootIsWildcard, return $ as// wildcard\n\tif (rootIsWildcard) {\n\t\tif (a instanceof EmptyPredictionContext) {\n\t\t\treturn a;\n\t\t}\n\t\tif (b instanceof EmptyPredictionContext) {\n\t\t\treturn b;\n\t\t}\n\t}\n\t// convert singleton so both are arrays to normalize\n\tif (a instanceof SingletonPredictionContext) {\n\t\ta = new ArrayPredictionContext([a.getParent()], [a.returnState]);\n\t}\n\tif (b instanceof SingletonPredictionContext) {\n\t\tb = new ArrayPredictionContext([b.getParent()], [b.returnState]);\n\t}\n\treturn mergeArrays(a, b, rootIsWildcard, mergeCache);\n}\n\n//\n// Merge two {@link SingletonPredictionContext} instances.\n//\n// <p>Stack tops equal, parents merge is same; return left graph.<br>\n// <embed src=\"images/SingletonMerge_SameRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Same stack top, parents differ; merge parents giving array node, then\n// remainders of those graphs. A new root node is created to point to the\n// merged parents.<br>\n// <embed src=\"images/SingletonMerge_SameRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to same parent. Make array node for the\n// root where both element in the root point to the same (original)\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to different parents. Make array node for\n// the root where each element points to the corresponding original\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// @param mergeCache\n// /\nfunction mergeSingletons(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\n\tvar rootMerge = mergeRoot(a, b, rootIsWildcard);\n\tif (rootMerge !== null) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, rootMerge);\n\t\t}\n\t\treturn rootMerge;\n\t}\n\tif (a.returnState === b.returnState) {\n\t\tvar parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);\n\t\t// if parent is same as existing a or b parent or reduced to a parent,\n\t\t// return it\n\t\tif (parent === a.parentCtx) {\n\t\t\treturn a; // ax + bx = ax, if a=b\n\t\t}\n\t\tif (parent === b.parentCtx) {\n\t\t\treturn b; // ax + bx = bx, if a=b\n\t\t}\n\t\t// else: ax + ay = a'[x,y]\n\t\t// merge parents x and y, giving array node with x,y then remainders\n\t\t// of those graphs. dup a, a' points at merged array\n\t\t// new joined parent so create new singleton pointing to it, a'\n\t\tvar spc = SingletonPredictionContext.create(parent, a.returnState);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, spc);\n\t\t}\n\t\treturn spc;\n\t} else { // a != b payloads differ\n\t\t// see if we can collapse parents due to $+x parents if local ctx\n\t\tvar singleParent = null;\n\t\tif (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// bx =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// [a,b]x\n\t\t\tsingleParent = a.parentCtx;\n\t\t}\n\t\tif (singleParent !== null) { // parents are same\n\t\t\t// sort payloads and use same parent\n\t\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\t\tif (a.returnState > b.returnState) {\n\t\t\t\tpayloads[0] = b.returnState;\n\t\t\t\tpayloads[1] = a.returnState;\n\t\t\t}\n\t\t\tvar parents = [ singleParent, singleParent ];\n\t\t\tvar apc = new ArrayPredictionContext(parents, payloads);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, apc);\n\t\t\t}\n\t\t\treturn apc;\n\t\t}\n\t\t// parents differ and can't merge them. Just pack together\n\t\t// into array; can't merge.\n\t\t// ax + by = [ax,by]\n\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\tvar parents = [ a.parentCtx, b.parentCtx ];\n\t\tif (a.returnState > b.returnState) { // sort by payload\n\t\t\tpayloads[0] = b.returnState;\n\t\t\tpayloads[1] = a.returnState;\n\t\t\tparents = [ b.parentCtx, a.parentCtx ];\n\t\t}\n\t\tvar a_ = new ArrayPredictionContext(parents, payloads);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a_);\n\t\t}\n\t\treturn a_;\n\t}\n}\n\n//\n// Handle case where at least one of {@code a} or {@code b} is\n// {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used\n// to represent {@link //EMPTY}.\n//\n// <h2>Local-Context Merges</h2>\n//\n// <p>These local-context merge operations are used when {@code rootIsWildcard}\n// is true.</p>\n//\n// <p>{@link //EMPTY} is superset of any graph; return {@link //EMPTY}.<br>\n// <embed src=\"images/LocalMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>{@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is\n// {@code //EMPTY}; return left graph.<br>\n// <embed src=\"images/LocalMerge_EmptyParent.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Special case of last merge if local context.<br>\n// <embed src=\"images/LocalMerge_DiffRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <h2>Full-Context Merges</h2>\n//\n// <p>These full-context merge operations are used when {@code rootIsWildcard}\n// is false.</p>\n//\n// <p><embed src=\"images/FullMerge_EmptyRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Must keep all contexts; {@link //EMPTY} in array is a special value (and\n// null parent).<br>\n// <embed src=\"images/FullMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p><embed src=\"images/FullMerge_SameRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// /\nfunction mergeRoot(a, b, rootIsWildcard) {\n\tif (rootIsWildcard) {\n\t\tif (a === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // // + b =//\n\t\t}\n\t\tif (b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // a +// =//\n\t\t}\n\t} else {\n\t\tif (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // $ + $ = $\n\t\t} else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]\n\t\t\tvar payloads = [ b.returnState,\n\t\t\t\t\tPredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ b.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t} else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)\n\t\t\tvar payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ a.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t}\n\t}\n\treturn null;\n}\n\n//\n// Merge two {@link ArrayPredictionContext} instances.\n//\n// <p>Different tops, different parents.<br>\n// <embed src=\"images/ArrayMerge_DiffTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, same parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSamePar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, different parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, all shared parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSharePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Equal tops, merge parents and reduce top to\n// {@link SingletonPredictionContext}.<br>\n// <embed src=\"images/ArrayMerge_EqualTop.svg\" type=\"image/svg+xml\"/></p>\n// /\nfunction mergeArrays(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\t// merge sorted payloads a + b => M\n\tvar i = 0; // walks a\n\tvar j = 0; // walks b\n\tvar k = 0; // walks target M array\n\n\tvar mergedReturnStates = [];\n\tvar mergedParents = [];\n\t// walk and merge to yield mergedParents, mergedReturnStates\n\twhile (i < a.returnStates.length && j < b.returnStates.length) {\n\t\tvar a_parent = a.parents[i];\n\t\tvar b_parent = b.parents[j];\n\t\tif (a.returnStates[i] === b.returnStates[j]) {\n\t\t\t// same payload (stack tops are equal), must yield merged singleton\n\t\t\tvar payload = a.returnStates[i];\n\t\t\t// $+$ = $\n\t\t\tvar bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&\n\t\t\t\t\ta_parent === null && b_parent === null;\n\t\t\tvar ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ax\n\t\t\tif (bothDollars || ax_ax) {\n\t\t\t\tmergedParents[k] = a_parent; // choose left\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t} else { // ax+ay -> a'[x,y]\n\t\t\t\tvar mergedParent = merge(a_parent, b_parent, rootIsWildcard, mergeCache);\n\t\t\t\tmergedParents[k] = mergedParent;\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t}\n\t\t\ti += 1; // hop over left one as usual\n\t\t\tj += 1; // but also skip one in right side since we merge\n\t\t} else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M\n\t\t\tmergedParents[k] = a_parent;\n\t\t\tmergedReturnStates[k] = a.returnStates[i];\n\t\t\ti += 1;\n\t\t} else { // b > a, copy b[j] to M\n\t\t\tmergedParents[k] = b_parent;\n\t\t\tmergedReturnStates[k] = b.returnStates[j];\n\t\t\tj += 1;\n\t\t}\n\t\tk += 1;\n\t}\n\t// copy over any payloads remaining in either array\n\tif (i < a.returnStates.length) {\n\t\tfor (var p = i; p < a.returnStates.length; p++) {\n\t\t\tmergedParents[k] = a.parents[p];\n\t\t\tmergedReturnStates[k] = a.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t} else {\n\t\tfor (var p = j; p < b.returnStates.length; p++) {\n\t\t\tmergedParents[k] = b.parents[p];\n\t\t\tmergedReturnStates[k] = b.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t}\n\t// trim merged if we combined a few that had same stack tops\n\tif (k < mergedParents.length) { // write index < last position; trim\n\t\tif (k === 1) { // for just one merged element, return singleton top\n\t\t\tvar a_ = SingletonPredictionContext.create(mergedParents[0],\n\t\t\t\t\tmergedReturnStates[0]);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, a_);\n\t\t\t}\n\t\t\treturn a_;\n\t\t}\n\t\tmergedParents = mergedParents.slice(0, k);\n\t\tmergedReturnStates = mergedReturnStates.slice(0, k);\n\t}\n\n\tvar M = new ArrayPredictionContext(mergedParents, mergedReturnStates);\n\n\t// if we created same array as a or b, return that instead\n\t// TODO: track whether this is possible above during merge sort for speed\n\tif (M === a) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a);\n\t\t}\n\t\treturn a;\n\t}\n\tif (M === b) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, b);\n\t\t}\n\t\treturn b;\n\t}\n\tcombineCommonParents(mergedParents);\n\n\tif (mergeCache !== null) {\n\t\tmergeCache.set(a, b, M);\n\t}\n\treturn M;\n}\n\n//\n// Make pass over all <em>M</em> {@code parents}; merge any {@code equals()}\n// ones.\n// /\nfunction combineCommonParents(parents) {\n\tvar uniqueParents = {};\n\n\tfor (var p = 0; p < parents.length; p++) {\n\t\tvar parent = parents[p];\n\t\tif (!(parent in uniqueParents)) {\n\t\t\tuniqueParents[parent] = parent;\n\t\t}\n\t}\n\tfor (var q = 0; q < parents.length; q++) {\n\t\tparents[q] = uniqueParents[parents[q]];\n\t}\n}\n\nfunction getCachedPredictionContext(context, contextCache, visited) {\n\tif (context.isEmpty()) {\n\t\treturn context;\n\t}\n\tvar existing = visited[context] || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\texisting = contextCache.get(context);\n\tif (existing !== null) {\n\t\tvisited[context] = existing;\n\t\treturn existing;\n\t}\n\tvar changed = false;\n\tvar parents = [];\n\tfor (var i = 0; i < parents.length; i++) {\n\t\tvar parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);\n\t\tif (changed || parent !== context.getParent(i)) {\n\t\t\tif (!changed) {\n\t\t\t\tparents = [];\n\t\t\t\tfor (var j = 0; j < context.length; j++) {\n\t\t\t\t\tparents[j] = context.getParent(j);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tparents[i] = parent;\n\t\t}\n\t}\n\tif (!changed) {\n\t\tcontextCache.add(context);\n\t\tvisited[context] = context;\n\t\treturn context;\n\t}\n\tvar updated = null;\n\tif (parents.length === 0) {\n\t\tupdated = PredictionContext.EMPTY;\n\t} else if (parents.length === 1) {\n\t\tupdated = SingletonPredictionContext.create(parents[0], context\n\t\t\t\t.getReturnState(0));\n\t} else {\n\t\tupdated = new ArrayPredictionContext(parents, context.returnStates);\n\t}\n\tcontextCache.add(updated);\n\tvisited[updated] = updated;\n\tvisited[context] = updated;\n\n\treturn updated;\n}\n\n// ter's recursive version of Sam's getAllNodes()\nfunction getAllContextNodes(context, nodes, visited) {\n\tif (nodes === null) {\n\t\tnodes = [];\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else if (visited === null) {\n\t\tvisited = {};\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else {\n\t\tif (context === null || visited[context] !== null) {\n\t\t\treturn nodes;\n\t\t}\n\t\tvisited[context] = context;\n\t\tnodes.push(context);\n\t\tfor (var i = 0; i < context.length; i++) {\n\t\t\tgetAllContextNodes(context.getParent(i), nodes, visited);\n\t\t}\n\t\treturn nodes;\n\t}\n}\n\nexports.merge = merge;\nexports.PredictionContext = PredictionContext;\nexports.PredictionContextCache = PredictionContextCache;\nexports.SingletonPredictionContext = SingletonPredictionContext;\nexports.predictionContextFromRuleContext = predictionContextFromRuleContext;\nexports.getCachedPredictionContext = getCachedPredictionContext;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nvar ConsoleErrorListener = require('./error/ErrorListener').ConsoleErrorListener;\nvar ProxyErrorListener = require('./error/ErrorListener').ProxyErrorListener;\n\nfunction Recognizer() {\n this._listeners = [ ConsoleErrorListener.INSTANCE ];\n this._interp = null;\n this._stateNumber = -1;\n return this;\n}\n\nRecognizer.tokenTypeMapCache = {};\nRecognizer.ruleIndexMapCache = {};\n\n\nRecognizer.prototype.checkVersion = function(toolVersion) {\n var runtimeVersion = \"4.7.1\";\n if (runtimeVersion!==toolVersion) {\n console.log(\"ANTLR runtime and generated code versions disagree: \"+runtimeVersion+\"!=\"+toolVersion);\n }\n};\n\nRecognizer.prototype.addErrorListener = function(listener) {\n this._listeners.push(listener);\n};\n\nRecognizer.prototype.removeErrorListeners = function() {\n this._listeners = [];\n};\n\nRecognizer.prototype.getTokenTypeMap = function() {\n var tokenNames = this.getTokenNames();\n if (tokenNames===null) {\n throw(\"The current recognizer does not provide a list of token names.\");\n }\n var result = this.tokenTypeMapCache[tokenNames];\n if(result===undefined) {\n result = tokenNames.reduce(function(o, k, i) { o[k] = i; });\n result.EOF = Token.EOF;\n this.tokenTypeMapCache[tokenNames] = result;\n }\n return result;\n};\n\n// Get a map from rule names to rule indexes.\n//\n// <p>Used for XPath and tree pattern compilation.</p>\n//\nRecognizer.prototype.getRuleIndexMap = function() {\n var ruleNames = this.ruleNames;\n if (ruleNames===null) {\n throw(\"The current recognizer does not provide a list of rule names.\");\n }\n var result = this.ruleIndexMapCache[ruleNames];\n if(result===undefined) {\n result = ruleNames.reduce(function(o, k, i) { o[k] = i; });\n this.ruleIndexMapCache[ruleNames] = result;\n }\n return result;\n};\n\nRecognizer.prototype.getTokenType = function(tokenName) {\n var ttype = this.getTokenTypeMap()[tokenName];\n if (ttype !==undefined) {\n return ttype;\n } else {\n return Token.INVALID_TYPE;\n }\n};\n\n\n// What is the error header, normally line/character position information?//\nRecognizer.prototype.getErrorHeader = function(e) {\n var line = e.getOffendingToken().line;\n var column = e.getOffendingToken().column;\n return \"line \" + line + \":\" + column;\n};\n\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\n// @deprecated This method is not called by the ANTLR 4 Runtime. Specific\n// implementations of {@link ANTLRErrorStrategy} may provide a similar\n// feature when necessary. For example, see\n// {@link DefaultErrorStrategy//getTokenErrorDisplay}.\n//\nRecognizer.prototype.getTokenErrorDisplay = function(t) {\n if (t===null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s===null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n s = s.replace(\"\\n\",\"\\\\n\").replace(\"\\r\",\"\\\\r\").replace(\"\\t\",\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\nRecognizer.prototype.getErrorListenerDispatch = function() {\n return new ProxyErrorListener(this._listeners);\n};\n\n// subclass needs to override these if there are sempreds or actions\n// that the ATN interp needs to execute\nRecognizer.prototype.sempred = function(localctx, ruleIndex, actionIndex) {\n return true;\n};\n\nRecognizer.prototype.precpred = function(localctx , precedence) {\n return true;\n};\n\n//Indicate that the recognizer has changed internal state that is\n//consistent with the ATN state passed in. This way we always know\n//where we are in the ATN as the parser goes along. The rule\n//context objects form a stack that lets us see the stack of\n//invoking rules. Combine this and we have complete ATN\n//configuration information.\n\nObject.defineProperty(Recognizer.prototype, \"state\", {\n\tget : function() {\n\t\treturn this._stateNumber;\n\t},\n\tset : function(state) {\n\t\tthis._stateNumber = state;\n\t}\n});\n\n\nexports.Recognizer = Recognizer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A rule context is a record of a single rule invocation. It knows\n// which context invoked it, if any. If there is no parent context, then\n// naturally the invoking state is not valid. The parent link\n// provides a chain upwards from the current rule invocation to the root\n// of the invocation tree, forming a stack. We actually carry no\n// information about the rule associated with this context (except\n// when parsing). We keep only the state number of the invoking state from\n// the ATN submachine that invoked this. Contrast this with the s\n// pointer inside ParserRuleContext that tracks the current state\n// being \"executed\" for the current rule.\n//\n// The parent contexts are useful for computing lookahead sets and\n// getting error information.\n//\n// These objects are used during parsing and prediction.\n// For the special case of parsers, we use the subclass\n// ParserRuleContext.\n//\n// @see ParserRuleContext\n///\n\nvar RuleNode = require('./tree/Tree').RuleNode;\nvar INVALID_INTERVAL = require('./tree/Tree').INVALID_INTERVAL;\nvar INVALID_ALT_NUMBER = require('./atn/ATN').INVALID_ALT_NUMBER;\n\nfunction RuleContext(parent, invokingState) {\n\tRuleNode.call(this);\n\t// What context invoked this rule?\n\tthis.parentCtx = parent || null;\n\t// What state invoked the rule associated with this context?\n\t// The \"return address\" is the followState of invokingState\n\t// If parent is null, this should be -1.\n\tthis.invokingState = invokingState || -1;\n\treturn this;\n}\n\nRuleContext.prototype = Object.create(RuleNode.prototype);\nRuleContext.prototype.constructor = RuleContext;\n\nRuleContext.prototype.depth = function() {\n\tvar n = 0;\n\tvar p = this;\n\twhile (p !== null) {\n\t\tp = p.parentCtx;\n\t\tn += 1;\n\t}\n\treturn n;\n};\n\n// A context is empty if there is no invoking state; meaning nobody call\n// current context.\nRuleContext.prototype.isEmpty = function() {\n\treturn this.invokingState === -1;\n};\n\n// satisfy the ParseTree / SyntaxTree interface\n\nRuleContext.prototype.getSourceInterval = function() {\n\treturn INVALID_INTERVAL;\n};\n\nRuleContext.prototype.getRuleContext = function() {\n\treturn this;\n};\n\nRuleContext.prototype.getPayload = function() {\n\treturn this;\n};\n\n// Return the combined text of all child nodes. This method only considers\n// tokens which have been added to the parse tree.\n// <p>\n// Since tokens on hidden channels (e.g. whitespace or comments) are not\n// added to the parse trees, they will not appear in the output of this\n// method.\n// /\nRuleContext.prototype.getText = function() {\n\tif (this.getChildCount() === 0) {\n\t\treturn \"\";\n\t} else {\n\t\treturn this.children.map(function(child) {\n\t\t\treturn child.getText();\n\t\t}).join(\"\");\n\t}\n};\n\n// For rule associated with this parse tree internal node, return\n// the outer alternative number used to match the input. Default\n// implementation does not compute nor store this alt num. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\n// to set it.\nRuleContext.prototype.getAltNumber = function() { return INVALID_ALT_NUMBER; }\n\n// Set the outer alternative number for this context node. Default\n// implementation does nothing to avoid backing field overhead for\n// trees that don't need it. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\nRuleContext.prototype.setAltNumber = function(altNumber) { }\n\nRuleContext.prototype.getChild = function(i) {\n\treturn null;\n};\n\nRuleContext.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nRuleContext.prototype.accept = function(visitor) {\n\treturn visitor.visitChildren(this);\n};\n\n//need to manage circular dependencies, so export now\nexports.RuleContext = RuleContext;\nvar Trees = require('./tree/Trees').Trees;\n\n\n// Print out a whole tree, not just a node, in LISP format\n// (root child1 .. childN). Print just a node if this is a leaf.\n//\n\nRuleContext.prototype.toStringTree = function(ruleNames, recog) {\n\treturn Trees.toStringTree(this, ruleNames, recog);\n};\n\nRuleContext.prototype.toString = function(ruleNames, stop) {\n\truleNames = ruleNames || null;\n\tstop = stop || null;\n\tvar p = this;\n\tvar s = \"[\";\n\twhile (p !== null && p !== stop) {\n\t\tif (ruleNames === null) {\n\t\t\tif (!p.isEmpty()) {\n\t\t\t\ts += p.invokingState;\n\t\t\t}\n\t\t} else {\n\t\t\tvar ri = p.ruleIndex;\n\t\t\tvar ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]\n\t\t\t\t\t: \"\" + ri;\n\t\t\ts += ruleName;\n\t\t}\n\t\tif (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {\n\t\t\ts += \" \";\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\ts += \"]\";\n\treturn s;\n};\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A token has properties: text, type, line, character position in the line\n// (so we can ignore tabs), token channel, index, and source from which\n// we obtained this token.\n\nfunction Token() {\n\tthis.source = null;\n\tthis.type = null; // token type of the token\n\tthis.channel = null; // The parser ignores everything not on DEFAULT_CHANNEL\n\tthis.start = null; // optional; return -1 if not implemented.\n\tthis.stop = null; // optional; return -1 if not implemented.\n\tthis.tokenIndex = null; // from 0..n-1 of the token object in the input stream\n\tthis.line = null; // line=1..n of the 1st character\n\tthis.column = null; // beginning of the line at which it occurs, 0..n-1\n\tthis._text = null; // text of the token.\n\treturn this;\n}\n\nToken.INVALID_TYPE = 0;\n\n// During lookahead operations, this \"token\" signifies we hit rule end ATN state\n// and did not follow it despite needing to.\nToken.EPSILON = -2;\n\nToken.MIN_USER_TOKEN_TYPE = 1;\n\nToken.EOF = -1;\n\n// All tokens go to the parser (unless skip() is called in that rule)\n// on a particular \"channel\". The parser tunes to a particular channel\n// so that whitespace etc... can go to the parser on a \"hidden\" channel.\n\nToken.DEFAULT_CHANNEL = 0;\n\n// Anything on different channel than DEFAULT_CHANNEL is not parsed\n// by parser.\n\nToken.HIDDEN_CHANNEL = 1;\n\n// Explicitly set the text for this token. If {code text} is not\n// {@code null}, then {@link //getText} will return this value rather than\n// extracting the text from the input.\n//\n// @param text The explicit text of the token, or {@code null} if the text\n// should be obtained from the input along with the start and stop indexes\n// of the token.\n\nObject.defineProperty(Token.prototype, \"text\", {\n\tget : function() {\n\t\treturn this._text;\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nToken.prototype.getTokenSource = function() {\n\treturn this.source[0];\n};\n\nToken.prototype.getInputStream = function() {\n\treturn this.source[1];\n};\n\nfunction CommonToken(source, type, channel, start, stop) {\n\tToken.call(this);\n\tthis.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;\n\tthis.type = type !== undefined ? type : null;\n\tthis.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;\n\tthis.start = start !== undefined ? start : -1;\n\tthis.stop = stop !== undefined ? stop : -1;\n\tthis.tokenIndex = -1;\n\tif (this.source[0] !== null) {\n\t\tthis.line = source[0].line;\n\t\tthis.column = source[0].column;\n\t} else {\n\t\tthis.column = -1;\n\t}\n\treturn this;\n}\n\nCommonToken.prototype = Object.create(Token.prototype);\nCommonToken.prototype.constructor = CommonToken;\n\n// An empty {@link Pair} which is used as the default value of\n// {@link //source} for tokens that do not have a source.\nCommonToken.EMPTY_SOURCE = [ null, null ];\n\n// Constructs a new {@link CommonToken} as a copy of another {@link Token}.\n//\n// <p>\n// If {@code oldToken} is also a {@link CommonToken} instance, the newly\n// constructed token will share a reference to the {@link //text} field and\n// the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will\n// be assigned the result of calling {@link //getText}, and {@link //source}\n// will be constructed from the result of {@link Token//getTokenSource} and\n// {@link Token//getInputStream}.</p>\n//\n// @param oldToken The token to copy.\n//\nCommonToken.prototype.clone = function() {\n\tvar t = new CommonToken(this.source, this.type, this.channel, this.start,\n\t\t\tthis.stop);\n\tt.tokenIndex = this.tokenIndex;\n\tt.line = this.line;\n\tt.column = this.column;\n\tt.text = this.text;\n\treturn t;\n};\n\nObject.defineProperty(CommonToken.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t}\n\t\tvar input = this.getInputStream();\n\t\tif (input === null) {\n\t\t\treturn null;\n\t\t}\n\t\tvar n = input.size;\n\t\tif (this.start < n && this.stop < n) {\n\t\t\treturn input.getText(this.start, this.stop);\n\t\t} else {\n\t\t\treturn \"<EOF>\";\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nCommonToken.prototype.toString = function() {\n\tvar txt = this.text;\n\tif (txt !== null) {\n\t\ttxt = txt.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\");\n\t} else {\n\t\ttxt = \"<no text>\";\n\t}\n\treturn \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" +\n\t\t\ttxt + \"',<\" + this.type + \">\" +\n\t\t\t(this.channel > 0 ? \",channel=\" + this.channel : \"\") + \",\" +\n\t\t\tthis.line + \":\" + this.column + \"]\";\n};\n\nexports.Token = Token;\nexports.CommonToken = CommonToken;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction arrayToString(a) {\n return \"[\" + a.join(\", \") + \"]\";\n}\n\nString.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));\n\nString.prototype.hashCode = function () {\n var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i,\n key = this.toString();\n\n remainder = key.length & 3; // key.length % 4\n bytes = key.length - remainder;\n h1 = String.prototype.seed;\n c1 = 0xcc9e2d51;\n c2 = 0x1b873593;\n i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n k1 ^= (key.charCodeAt(i) & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n};\n\nfunction standardEqualsFunction(a, b) {\n return a.equals(b);\n}\n\nfunction standardHashCodeFunction(a) {\n return a.hashCode();\n}\n\nfunction Set(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Set.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l + this.data[key].length;\n }\n }\n return l;\n }\n});\n\nSet.prototype.add = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n values.push(value);\n return value;\n } else {\n this.data[key] = [value];\n return value;\n }\n};\n\nSet.prototype.contains = function (value) {\n return this.get(value) != null;\n};\n\nSet.prototype.get = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n }\n return null;\n};\n\nSet.prototype.values = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\nSet.prototype.toString = function () {\n return arrayToString(this.values());\n};\n\nfunction BitSet() {\n this.data = [];\n return this;\n}\n\nBitSet.prototype.add = function (value) {\n this.data[value] = true;\n};\n\nBitSet.prototype.or = function (set) {\n var bits = this;\n Object.keys(set.data).map(function (alt) {\n bits.add(alt);\n });\n};\n\nBitSet.prototype.remove = function (value) {\n delete this.data[value];\n};\n\nBitSet.prototype.contains = function (value) {\n return this.data[value] === true;\n};\n\nBitSet.prototype.values = function () {\n return Object.keys(this.data);\n};\n\nBitSet.prototype.minValue = function () {\n return Math.min.apply(null, this.values());\n};\n\nBitSet.prototype.hashCode = function () {\n var hash = new Hash();\n hash.update(this.values());\n return hash.finish();\n};\n\nBitSet.prototype.equals = function (other) {\n if (!(other instanceof BitSet)) {\n return false;\n }\n return this.hashCode() === other.hashCode();\n};\n\nObject.defineProperty(BitSet.prototype, \"length\", {\n get: function () {\n return this.values().length;\n }\n});\n\nBitSet.prototype.toString = function () {\n return \"{\" + this.values().join(\", \") + \"}\";\n};\n\nfunction Map(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Map.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var hashKey in this.data) {\n if (hashKey.indexOf(\"hash_\") === 0) {\n l = l + this.data[hashKey].length;\n }\n }\n return l;\n }\n});\n\nMap.prototype.put = function (key, value) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if (hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key)) {\n var oldValue = entry.value;\n entry.value = value;\n return oldValue;\n }\n }\n entries.push({key:key, value:value});\n return value;\n } else {\n this.data[hashKey] = [{key:key, value:value}];\n return value;\n }\n};\n\nMap.prototype.containsKey = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return true;\n }\n }\n return false;\n};\n\nMap.prototype.get = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return entry.value;\n }\n }\n return null;\n};\n\nMap.prototype.entries = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\n\nMap.prototype.getKeys = function () {\n return this.entries().map(function(e) {\n return e.key;\n });\n};\n\n\nMap.prototype.getValues = function () {\n return this.entries().map(function(e) {\n return e.value;\n });\n};\n\n\nMap.prototype.toString = function () {\n var ss = this.entries().map(function(entry) {\n return '{' + entry.key + ':' + entry.value + '}';\n });\n return '[' + ss.join(\", \") + ']';\n};\n\n\nfunction AltDict() {\n this.data = {};\n return this;\n}\n\n\nAltDict.prototype.get = function (key) {\n key = \"k-\" + key;\n if (key in this.data) {\n return this.data[key];\n } else {\n return null;\n }\n};\n\nAltDict.prototype.put = function (key, value) {\n key = \"k-\" + key;\n this.data[key] = value;\n};\n\nAltDict.prototype.values = function () {\n var data = this.data;\n var keys = Object.keys(this.data);\n return keys.map(function (key) {\n return data[key];\n });\n};\n\nfunction DoubleDict() {\n return this;\n}\n\nfunction Hash() {\n this.count = 0;\n this.hash = 0;\n return this;\n}\n\nHash.prototype.update = function () {\n for(var i=0;i<arguments.length;i++) {\n var value = arguments[i];\n if (value == null)\n continue;\n if(Array.isArray(value))\n this.update.apply(value);\n else {\n var k = 0;\n switch (typeof(value)) {\n case 'undefined':\n case 'function':\n continue;\n case 'number':\n case 'boolean':\n k = value;\n break;\n case 'string':\n k = value.hashCode();\n break;\n default:\n value.updateHashCode(this);\n continue;\n }\n k = k * 0xCC9E2D51;\n k = (k << 15) | (k >>> (32 - 15));\n k = k * 0x1B873593;\n this.count = this.count + 1;\n var hash = this.hash ^ k;\n hash = (hash << 13) | (hash >>> (32 - 13));\n hash = hash * 5 + 0xE6546B64;\n this.hash = hash;\n }\n }\n}\n\nHash.prototype.finish = function () {\n var hash = this.hash ^ (this.count * 4);\n hash = hash ^ (hash >>> 16);\n hash = hash * 0x85EBCA6B;\n hash = hash ^ (hash >>> 13);\n hash = hash * 0xC2B2AE35;\n hash = hash ^ (hash >>> 16);\n return hash;\n}\n\nfunction hashStuff() {\n var hash = new Hash();\n hash.update.apply(arguments);\n return hash.finish();\n}\n\nDoubleDict.prototype.get = function (a, b) {\n var d = this[a] || null;\n return d === null ? null : (d[b] || null);\n};\n\nDoubleDict.prototype.set = function (a, b, o) {\n var d = this[a] || null;\n if (d === null) {\n d = {};\n this[a] = d;\n }\n d[b] = o;\n};\n\n\nfunction escapeWhitespace(s, escapeSpaces) {\n s = s.replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\");\n if (escapeSpaces) {\n s = s.replace(/ /g, \"\\u00B7\");\n }\n return s;\n}\n\nfunction titleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n};\n\nfunction equalArrays(a, b)\n{\n if (!Array.isArray(a) || !Array.isArray(b))\n return false;\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (var i = 0; i < a.length; i++) {\n if (a[i] == b[i])\n continue;\n if (!a[i].equals(b[i]))\n return false;\n }\n return true;\n};\n\nexports.Hash = Hash;\nexports.Set = Set;\nexports.Map = Map;\nexports.BitSet = BitSet;\nexports.AltDict = AltDict;\nexports.DoubleDict = DoubleDict;\nexports.hashStuff = hashStuff;\nexports.escapeWhitespace = escapeWhitespace;\nexports.arrayToString = arrayToString;\nexports.titleCase = titleCase;\nexports.equalArrays = equalArrays;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar LL1Analyzer = require('./../LL1Analyzer').LL1Analyzer;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ATN(grammarType , maxTokenType) {\n\n // Used for runtime deserialization of ATNs from strings///\n // The type of the ATN.\n this.grammarType = grammarType;\n // The maximum value for any symbol recognized by a transition in the ATN.\n this.maxTokenType = maxTokenType;\n this.states = [];\n // Each subrule/rule is a decision point and we must track them so we\n // can go back later and build DFA predictors for them. This includes\n // all the rules, subrules, optional blocks, ()+, ()* etc...\n this.decisionToState = [];\n // Maps from rule index to starting state number.\n this.ruleToStartState = [];\n // Maps from rule index to stop state number.\n this.ruleToStopState = null;\n this.modeNameToStartState = {};\n // For lexer ATNs, this maps the rule index to the resulting token type.\n // For parser ATNs, this maps the rule index to the generated bypass token\n // type if the\n // {@link ATNDeserializationOptions//isGenerateRuleBypassTransitions}\n // deserialization option was specified; otherwise, this is {@code null}.\n this.ruleToTokenType = null;\n // For lexer ATNs, this is an array of {@link LexerAction} objects which may\n // be referenced by action transitions in the ATN.\n this.lexerActions = null;\n this.modeToStartState = [];\n\n return this;\n}\n\n// Compute the set of valid tokens that can occur starting in state {@code s}.\n// If {@code ctx} is null, the set of tokens will not include what can follow\n// the rule surrounding {@code s}. In other words, the set will be\n// restricted to tokens reachable staying within {@code s}'s rule.\nATN.prototype.nextTokensInContext = function(s, ctx) {\n var anal = new LL1Analyzer(this);\n return anal.LOOK(s, null, ctx);\n};\n\n// Compute the set of valid tokens that can occur starting in {@code s} and\n// staying in same rule. {@link Token//EPSILON} is in set if we reach end of\n// rule.\nATN.prototype.nextTokensNoContext = function(s) {\n if (s.nextTokenWithinRule !== null ) {\n return s.nextTokenWithinRule;\n }\n s.nextTokenWithinRule = this.nextTokensInContext(s, null);\n s.nextTokenWithinRule.readOnly = true;\n return s.nextTokenWithinRule;\n};\n\nATN.prototype.nextTokens = function(s, ctx) {\n if ( ctx===undefined ) {\n return this.nextTokensNoContext(s);\n } else {\n return this.nextTokensInContext(s, ctx);\n }\n};\n\nATN.prototype.addState = function( state) {\n if ( state !== null ) {\n state.atn = this;\n state.stateNumber = this.states.length;\n }\n this.states.push(state);\n};\n\nATN.prototype.removeState = function( state) {\n this.states[state.stateNumber] = null; // just free mem, don't shift states in list\n};\n\nATN.prototype.defineDecisionState = function( s) {\n this.decisionToState.push(s);\n s.decision = this.decisionToState.length-1;\n return s.decision;\n};\n\nATN.prototype.getDecisionState = function( decision) {\n if (this.decisionToState.length===0) {\n return null;\n } else {\n return this.decisionToState[decision];\n }\n};\n\n// Computes the set of input symbols which could follow ATN state number\n// {@code stateNumber} in the specified full {@code context}. This method\n// considers the complete parser context, but does not evaluate semantic\n// predicates (i.e. all predicates encountered during the calculation are\n// assumed true). If a path in the ATN exists from the starting state to the\n// {@link RuleStopState} of the outermost context without matching any\n// symbols, {@link Token//EOF} is added to the returned set.\n//\n// <p>If {@code context} is {@code null}, it is treated as\n// {@link ParserRuleContext//EMPTY}.</p>\n//\n// @param stateNumber the ATN state number\n// @param context the full parse context\n// @return The set of potentially valid input symbols which could follow the\n// specified state in the specified context.\n// @throws IllegalArgumentException if the ATN does not contain a state with\n// number {@code stateNumber}\nvar Token = require('./../Token').Token;\n\nATN.prototype.getExpectedTokens = function( stateNumber, ctx ) {\n if ( stateNumber < 0 || stateNumber >= this.states.length ) {\n throw(\"Invalid state number.\");\n }\n var s = this.states[stateNumber];\n var following = this.nextTokens(s);\n if (!following.contains(Token.EPSILON)) {\n return following;\n }\n var expected = new IntervalSet();\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n var invokingState = this.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n following = this.nextTokens(rt.followState);\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n ctx = ctx.parentCtx;\n }\n if (following.contains(Token.EPSILON)) {\n expected.addOne(Token.EOF);\n }\n return expected;\n};\n\nATN.INVALID_ALT_NUMBER = 0;\n\nexports.ATN = ATN;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A tuple: (ATN state, predicted alt, syntactic, semantic context).\n// The syntactic context is a graph-structured stack node whose\n// path(s) to the root is the rule invocation(s)\n// chain used to arrive at the state. The semantic context is\n// the tree of semantic predicates encountered before reaching\n// an ATN state.\n///\n\nvar DecisionState = require('./ATNState').DecisionState;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\n\n\nfunction checkParams(params, isCfg) {\n\tif(params===null) {\n\t\tvar result = { state:null, alt:null, context:null, semanticContext:null };\n\t\tif(isCfg) {\n\t\t\tresult.reachesIntoOuterContext = 0;\n\t\t}\n\t\treturn result;\n\t} else {\n\t\tvar props = {};\n\t\tprops.state = params.state || null;\n\t\tprops.alt = (params.alt === undefined) ? null : params.alt;\n\t\tprops.context = params.context || null;\n\t\tprops.semanticContext = params.semanticContext || null;\n\t\tif(isCfg) {\n\t\t\tprops.reachesIntoOuterContext = params.reachesIntoOuterContext || 0;\n\t\t\tprops.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false;\n\t\t}\n\t\treturn props;\n\t}\n}\n\nfunction ATNConfig(params, config) {\n\tthis.checkContext(params, config);\n\tparams = checkParams(params);\n\tconfig = checkParams(config, true);\n // The ATN state associated with this configuration///\n this.state = params.state!==null ? params.state : config.state;\n // What alt (or lexer rule) is predicted by this configuration///\n this.alt = params.alt!==null ? params.alt : config.alt;\n // The stack of invoking states leading to the rule/states associated\n // with this config. We track only those contexts pushed during\n // execution of the ATN simulator.\n this.context = params.context!==null ? params.context : config.context;\n this.semanticContext = params.semanticContext!==null ? params.semanticContext :\n (config.semanticContext!==null ? config.semanticContext : SemanticContext.NONE);\n // We cannot execute predicates dependent upon local context unless\n // we know for sure we are in the correct context. Because there is\n // no way to do this efficiently, we simply cannot evaluate\n // dependent predicates unless we are in the rule that initially\n // invokes the ATN simulator.\n //\n // closure() tracks the depth of how far we dip into the\n // outer context: depth &gt; 0. Note that it may not be totally\n // accurate depth since I don't ever decrement. TODO: make it a boolean then\n this.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.precedenceFilterSuppressed = config.precedenceFilterSuppressed;\n return this;\n}\n\nATNConfig.prototype.checkContext = function(params, config) {\n\tif((params.context===null || params.context===undefined) &&\n\t\t\t(config===null || config.context===null || config.context===undefined)) {\n\t\tthis.context = null;\n\t}\n};\n\n\nATNConfig.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n\nATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext);\n};\n\n// An ATN configuration is equal to another if both have\n// the same state, they predict the same alternative, and\n// syntactic/semantic contexts are the same.\n\nATNConfig.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n (this.context===null ? other.context===null : this.context.equals(other.context)) &&\n this.semanticContext.equals(other.semanticContext) &&\n this.precedenceFilterSuppressed===other.precedenceFilterSuppressed;\n }\n};\n\n\nATNConfig.prototype.hashCodeForConfigSet = function() {\n var hash = new Hash();\n hash.update(this.state.stateNumber, this.alt, this.semanticContext);\n return hash.finish();\n};\n\n\nATNConfig.prototype.equalsForConfigSet = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n this.semanticContext.equals(other.semanticContext);\n }\n};\n\n\nATNConfig.prototype.toString = function() {\n return \"(\" + this.state + \",\" + this.alt +\n (this.context!==null ? \",[\" + this.context.toString() + \"]\" : \"\") +\n (this.semanticContext !== SemanticContext.NONE ?\n (\",\" + this.semanticContext.toString())\n : \"\") +\n (this.reachesIntoOuterContext>0 ?\n (\",up=\" + this.reachesIntoOuterContext)\n : \"\") + \")\";\n};\n\n\nfunction LexerATNConfig(params, config) {\n\tATNConfig.call(this, params, config);\n\n // This is the backing field for {@link //getLexerActionExecutor}.\n\tvar lexerActionExecutor = params.lexerActionExecutor || null;\n this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);\n this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;\n return this;\n}\n\nLexerATNConfig.prototype = Object.create(ATNConfig.prototype);\nLexerATNConfig.prototype.constructor = LexerATNConfig;\n\nLexerATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);\n};\n\nLexerATNConfig.prototype.equals = function(other) {\n return this === other ||\n (other instanceof LexerATNConfig &&\n this.passedThroughNonGreedyDecision == other.passedThroughNonGreedyDecision &&\n (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&\n ATNConfig.prototype.equals.call(this, other));\n};\n\nLexerATNConfig.prototype.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;\n\nLexerATNConfig.prototype.equalsForConfigSet = LexerATNConfig.prototype.equals;\n\n\nLexerATNConfig.prototype.checkNonGreedyDecision = function(source, target) {\n return source.passedThroughNonGreedyDecision ||\n (target instanceof DecisionState) && target.nonGreedy;\n};\n\nexports.ATNConfig = ATNConfig;\nexports.LexerATNConfig = LexerATNConfig;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//\n// Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track\n// info about the set, with support for combining similar configurations using a\n// graph-structured stack.\n///\n\nvar ATN = require('./ATN').ATN;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar merge = require('./../PredictionContext').merge;\n\nfunction hashATNConfig(c) {\n\treturn c.hashCodeForConfigSet();\n}\n\nfunction equalATNConfigs(a, b) {\n\tif ( a===b ) {\n\t\treturn true;\n\t} else if ( a===null || b===null ) {\n\t\treturn false;\n\t} else\n return a.equalsForConfigSet(b);\n }\n\n\nfunction ATNConfigSet(fullCtx) {\n\t//\n\t// The reason that we need this is because we don't want the hash map to use\n\t// the standard hash code and equals. We need all configurations with the\n\t// same\n\t// {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively\n\t// doubles\n\t// the number of objects associated with ATNConfigs. The other solution is\n\t// to\n\t// use a hash table that lets us specify the equals/hashcode operation.\n\t// All configs but hashed by (s, i, _, pi) not including context. Wiped out\n\t// when we go readonly as this set becomes a DFA state.\n\tthis.configLookup = new Set(hashATNConfig, equalATNConfigs);\n\t// Indicates that this configuration set is part of a full context\n\t// LL prediction. It will be used to determine how to merge $. With SLL\n\t// it's a wildcard whereas it is not for LL context merge.\n\tthis.fullCtx = fullCtx === undefined ? true : fullCtx;\n\t// Indicates that the set of configurations is read-only. Do not\n\t// allow any code to manipulate the set; DFA states will point at\n\t// the sets and they must not change. This does not protect the other\n\t// fields; in particular, conflictingAlts is set after\n\t// we've made this readonly.\n\tthis.readOnly = false;\n\t// Track the elements as they are added to the set; supports get(i)///\n\tthis.configs = [];\n\n\t// TODO: these fields make me pretty uncomfortable but nice to pack up info\n\t// together, saves recomputation\n\t// TODO: can we track conflicts as they are added to save scanning configs\n\t// later?\n\tthis.uniqueAlt = 0;\n\tthis.conflictingAlts = null;\n\n\t// Used in parser and lexer. In lexer, it indicates we hit a pred\n\t// while computing a closure operation. Don't make a DFA state from this.\n\tthis.hasSemanticContext = false;\n\tthis.dipsIntoOuterContext = false;\n\n\tthis.cachedHashCode = -1;\n\n\treturn this;\n}\n\n// Adding a new config means merging contexts with existing configs for\n// {@code (s, i, pi, _)}, where {@code s} is the\n// {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and\n// {@code pi} is the {@link ATNConfig//semanticContext}. We use\n// {@code (s,i,pi)} as key.\n//\n// <p>This method updates {@link //dipsIntoOuterContext} and\n// {@link //hasSemanticContext} when necessary.</p>\n// /\nATNConfigSet.prototype.add = function(config, mergeCache) {\n\tif (mergeCache === undefined) {\n\t\tmergeCache = null;\n\t}\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (config.semanticContext !== SemanticContext.NONE) {\n\t\tthis.hasSemanticContext = true;\n\t}\n\tif (config.reachesIntoOuterContext > 0) {\n\t\tthis.dipsIntoOuterContext = true;\n\t}\n\tvar existing = this.configLookup.add(config);\n\tif (existing === config) {\n\t\tthis.cachedHashCode = -1;\n\t\tthis.configs.push(config); // track order here\n\t\treturn true;\n\t}\n\t// a previous (s,i,pi,_), merge with it and save result\n\tvar rootIsWildcard = !this.fullCtx;\n\tvar merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);\n\t// no need to check for existing.context, config.context in cache\n\t// since only way to create new graphs is \"call rule\" and here. We\n\t// cache at both places.\n\texisting.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);\n\t// make sure to preserve the precedence filter suppression during the merge\n\tif (config.precedenceFilterSuppressed) {\n\t\texisting.precedenceFilterSuppressed = true;\n\t}\n\texisting.context = merged; // replace context; no need to alt mapping\n\treturn true;\n};\n\nATNConfigSet.prototype.getStates = function() {\n\tvar states = new Set();\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tstates.add(this.configs[i].state);\n\t}\n\treturn states;\n};\n\nATNConfigSet.prototype.getPredicates = function() {\n\tvar preds = [];\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar c = this.configs[i].semanticContext;\n\t\tif (c !== SemanticContext.NONE) {\n\t\t\tpreds.push(c.semanticContext);\n\t\t}\n\t}\n\treturn preds;\n};\n\nObject.defineProperty(ATNConfigSet.prototype, \"items\", {\n\tget : function() {\n\t\treturn this.configs;\n\t}\n});\n\nATNConfigSet.prototype.optimizeConfigs = function(interpreter) {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (this.configLookup.length === 0) {\n\t\treturn;\n\t}\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar config = this.configs[i];\n\t\tconfig.context = interpreter.getCachedContext(config.context);\n\t}\n};\n\nATNConfigSet.prototype.addAll = function(coll) {\n\tfor (var i = 0; i < coll.length; i++) {\n\t\tthis.add(coll[i]);\n\t}\n\treturn false;\n};\n\nATNConfigSet.prototype.equals = function(other) {\n\treturn this === other ||\n\t\t(other instanceof ATNConfigSet &&\n\t\tUtils.equalArrays(this.configs, other.configs) &&\n\t\tthis.fullCtx === other.fullCtx &&\n\t\tthis.uniqueAlt === other.uniqueAlt &&\n\t\tthis.conflictingAlts === other.conflictingAlts &&\n\t\tthis.hasSemanticContext === other.hasSemanticContext &&\n\t\tthis.dipsIntoOuterContext === other.dipsIntoOuterContext);\n};\n\nATNConfigSet.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n\nATNConfigSet.prototype.updateHashCode = function(hash) {\n\tif (this.readOnly) {\n\t\tif (this.cachedHashCode === -1) {\n var hash = new Hash();\n hash.update(this.configs);\n\t\t\tthis.cachedHashCode = hash.finish();\n\t\t}\n hash.update(this.cachedHashCode);\n\t} else {\n hash.update(this.configs);\n\t}\n};\n\n\nObject.defineProperty(ATNConfigSet.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.configs.length;\n\t}\n});\n\nATNConfigSet.prototype.isEmpty = function() {\n\treturn this.configs.length === 0;\n};\n\nATNConfigSet.prototype.contains = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.contains(item);\n};\n\nATNConfigSet.prototype.containsFast = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.containsFast(item);\n};\n\nATNConfigSet.prototype.clear = function() {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tthis.configs = [];\n\tthis.cachedHashCode = -1;\n\tthis.configLookup = new Set();\n};\n\nATNConfigSet.prototype.setReadonly = function(readOnly) {\n\tthis.readOnly = readOnly;\n\tif (readOnly) {\n\t\tthis.configLookup = null; // can't mod, no need for lookup cache\n\t}\n};\n\nATNConfigSet.prototype.toString = function() {\n\treturn Utils.arrayToString(this.configs) +\n\t\t(this.hasSemanticContext ? \",hasSemanticContext=\" + this.hasSemanticContext : \"\") +\n\t\t(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? \",uniqueAlt=\" + this.uniqueAlt : \"\") +\n\t\t(this.conflictingAlts !== null ? \",conflictingAlts=\" + this.conflictingAlts : \"\") +\n\t\t(this.dipsIntoOuterContext ? \",dipsIntoOuterContext\" : \"\");\n};\n\nfunction OrderedATNConfigSet() {\n\tATNConfigSet.call(this);\n\tthis.configLookup = new Set();\n\treturn this;\n}\n\nOrderedATNConfigSet.prototype = Object.create(ATNConfigSet.prototype);\nOrderedATNConfigSet.prototype.constructor = OrderedATNConfigSet;\n\nexports.ATNConfigSet = ATNConfigSet;\nexports.OrderedATNConfigSet = OrderedATNConfigSet;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction ATNDeserializationOptions(copyFrom) {\n\tif(copyFrom===undefined) {\n\t\tcopyFrom = null;\n\t}\n\tthis.readOnly = false;\n this.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;\n this.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;\n\n return this;\n}\n\nATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();\nATNDeserializationOptions.defaultOptions.readOnly = true;\n\n// def __setattr__(self, key, value):\n// if key!=\"readOnly\" and self.readOnly:\n// raise Exception(\"The object is read only.\")\n// super(type(self), self).__setattr__(key,value)\n\nexports.ATNDeserializationOptions = ATNDeserializationOptions;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./../Token').Token;\nvar ATN = require('./ATN').ATN;\nvar ATNType = require('./ATNType').ATNType;\nvar ATNStates = require('./ATNState');\nvar ATNState = ATNStates.ATNState;\nvar BasicState = ATNStates.BasicState;\nvar DecisionState = ATNStates.DecisionState;\nvar BlockStartState = ATNStates.BlockStartState;\nvar BlockEndState = ATNStates.BlockEndState;\nvar LoopEndState = ATNStates.LoopEndState;\nvar RuleStartState = ATNStates.RuleStartState;\nvar RuleStopState = ATNStates.RuleStopState;\nvar TokensStartState = ATNStates.TokensStartState;\nvar PlusLoopbackState = ATNStates.PlusLoopbackState;\nvar StarLoopbackState = ATNStates.StarLoopbackState;\nvar StarLoopEntryState = ATNStates.StarLoopEntryState;\nvar PlusBlockStartState = ATNStates.PlusBlockStartState;\nvar StarBlockStartState = ATNStates.StarBlockStartState;\nvar BasicBlockStartState = ATNStates.BasicBlockStartState;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar AtomTransition = Transitions.AtomTransition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar RangeTransition = Transitions.RangeTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar EpsilonTransition = Transitions.EpsilonTransition;\nvar WildcardTransition = Transitions.WildcardTransition;\nvar PredicateTransition = Transitions.PredicateTransition;\nvar PrecedencePredicateTransition = Transitions.PrecedencePredicateTransition;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Interval = require('./../IntervalSet').Interval;\nvar ATNDeserializationOptions = require('./ATNDeserializationOptions').ATNDeserializationOptions;\nvar LexerActions = require('./LexerAction');\nvar LexerActionType = LexerActions.LexerActionType;\nvar LexerSkipAction = LexerActions.LexerSkipAction;\nvar LexerChannelAction = LexerActions.LexerChannelAction;\nvar LexerCustomAction = LexerActions.LexerCustomAction;\nvar LexerMoreAction = LexerActions.LexerMoreAction;\nvar LexerTypeAction = LexerActions.LexerTypeAction;\nvar LexerPushModeAction = LexerActions.LexerPushModeAction;\nvar LexerPopModeAction = LexerActions.LexerPopModeAction;\nvar LexerModeAction = LexerActions.LexerModeAction;\n// This is the earliest supported serialized UUID.\n// stick to serialized version for now, we don't need a UUID instance\nvar BASE_SERIALIZED_UUID = \"AADB8D7E-AEEF-4415-AD2B-8204D6CF042E\";\n\n//\n// This UUID indicates the serialized ATN contains two sets of\n// IntervalSets, where the second set's values are encoded as\n// 32-bit integers to support the full Unicode SMP range up to U+10FFFF.\n//\nvar ADDED_UNICODE_SMP = \"59627784-3BE5-417A-B9EB-8131A7286089\";\n\n// This list contains all of the currently supported UUIDs, ordered by when\n// the feature first appeared in this branch.\nvar SUPPORTED_UUIDS = [ BASE_SERIALIZED_UUID, ADDED_UNICODE_SMP ];\n\nvar SERIALIZED_VERSION = 3;\n\n// This is the current serialized UUID.\nvar SERIALIZED_UUID = ADDED_UNICODE_SMP;\n\nfunction initArray( length, value) {\n\tvar tmp = [];\n\ttmp[length-1] = value;\n\treturn tmp.map(function(i) {return value;});\n}\n\nfunction ATNDeserializer (options) {\n\n if ( options=== undefined || options === null ) {\n options = ATNDeserializationOptions.defaultOptions;\n }\n this.deserializationOptions = options;\n this.stateFactories = null;\n this.actionFactories = null;\n\n return this;\n}\n\n// Determines if a particular serialized representation of an ATN supports\n// a particular feature, identified by the {@link UUID} used for serializing\n// the ATN at the time the feature was first introduced.\n//\n// @param feature The {@link UUID} marking the first time the feature was\n// supported in the serialized ATN.\n// @param actualUuid The {@link UUID} of the actual serialized ATN which is\n// currently being deserialized.\n// @return {@code true} if the {@code actualUuid} value represents a\n// serialized ATN at or after the feature identified by {@code feature} was\n// introduced; otherwise, {@code false}.\n\nATNDeserializer.prototype.isFeatureSupported = function(feature, actualUuid) {\n var idx1 = SUPPORTED_UUIDS.indexOf(feature);\n if (idx1<0) {\n return false;\n }\n var idx2 = SUPPORTED_UUIDS.indexOf(actualUuid);\n return idx2 >= idx1;\n};\n\nATNDeserializer.prototype.deserialize = function(data) {\n this.reset(data);\n this.checkVersion();\n this.checkUUID();\n var atn = this.readATN();\n this.readStates(atn);\n this.readRules(atn);\n this.readModes(atn);\n var sets = [];\n // First, deserialize sets with 16-bit arguments <= U+FFFF.\n this.readSets(atn, sets, this.readInt.bind(this));\n // Next, if the ATN was serialized with the Unicode SMP feature,\n // deserialize sets with 32-bit arguments <= U+10FFFF.\n if (this.isFeatureSupported(ADDED_UNICODE_SMP, this.uuid)) {\n this.readSets(atn, sets, this.readInt32.bind(this));\n }\n this.readEdges(atn, sets);\n this.readDecisions(atn);\n this.readLexerActions(atn);\n this.markPrecedenceDecisions(atn);\n this.verifyATN(atn);\n if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {\n this.generateRuleBypassTransitions(atn);\n // re-verify after modification\n this.verifyATN(atn);\n }\n return atn;\n};\n\nATNDeserializer.prototype.reset = function(data) {\n\tvar adjust = function(c) {\n var v = c.charCodeAt(0);\n return v>1 ? v-2 : v + 65533;\n\t};\n var temp = data.split(\"\").map(adjust);\n // don't adjust the first value since that's the version number\n temp[0] = data.charCodeAt(0);\n this.data = temp;\n this.pos = 0;\n};\n\nATNDeserializer.prototype.checkVersion = function() {\n var version = this.readInt();\n if ( version !== SERIALIZED_VERSION ) {\n throw (\"Could not deserialize ATN with version \" + version + \" (expected \" + SERIALIZED_VERSION + \").\");\n }\n};\n\nATNDeserializer.prototype.checkUUID = function() {\n var uuid = this.readUUID();\n if (SUPPORTED_UUIDS.indexOf(uuid)<0) {\n throw (\"Could not deserialize ATN with UUID: \" + uuid +\n \" (expected \" + SERIALIZED_UUID + \" or a legacy UUID).\", uuid, SERIALIZED_UUID);\n }\n this.uuid = uuid;\n};\n\nATNDeserializer.prototype.readATN = function() {\n var grammarType = this.readInt();\n var maxTokenType = this.readInt();\n return new ATN(grammarType, maxTokenType);\n};\n\nATNDeserializer.prototype.readStates = function(atn) {\n\tvar j, pair, stateNumber;\n var loopBackStateNumbers = [];\n var endStateNumbers = [];\n var nstates = this.readInt();\n for(var i=0; i<nstates; i++) {\n var stype = this.readInt();\n // ignore bad type of states\n if (stype===ATNState.INVALID_TYPE) {\n atn.addState(null);\n continue;\n }\n var ruleIndex = this.readInt();\n if (ruleIndex === 0xFFFF) {\n ruleIndex = -1;\n }\n var s = this.stateFactory(stype, ruleIndex);\n if (stype === ATNState.LOOP_END) { // special case\n var loopBackStateNumber = this.readInt();\n loopBackStateNumbers.push([s, loopBackStateNumber]);\n } else if(s instanceof BlockStartState) {\n var endStateNumber = this.readInt();\n endStateNumbers.push([s, endStateNumber]);\n }\n atn.addState(s);\n }\n // delay the assignment of loop back and end states until we know all the\n\t// state instances have been initialized\n for (j=0; j<loopBackStateNumbers.length; j++) {\n pair = loopBackStateNumbers[j];\n pair[0].loopBackState = atn.states[pair[1]];\n }\n\n for (j=0; j<endStateNumbers.length; j++) {\n pair = endStateNumbers[j];\n pair[0].endState = atn.states[pair[1]];\n }\n\n var numNonGreedyStates = this.readInt();\n for (j=0; j<numNonGreedyStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].nonGreedy = true;\n }\n\n var numPrecedenceStates = this.readInt();\n for (j=0; j<numPrecedenceStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].isPrecedenceRule = true;\n }\n};\n\nATNDeserializer.prototype.readRules = function(atn) {\n var i;\n var nrules = this.readInt();\n if (atn.grammarType === ATNType.LEXER ) {\n atn.ruleToTokenType = initArray(nrules, 0);\n }\n atn.ruleToStartState = initArray(nrules, 0);\n for (i=0; i<nrules; i++) {\n var s = this.readInt();\n var startState = atn.states[s];\n atn.ruleToStartState[i] = startState;\n if ( atn.grammarType === ATNType.LEXER ) {\n var tokenType = this.readInt();\n if (tokenType === 0xFFFF) {\n tokenType = Token.EOF;\n }\n atn.ruleToTokenType[i] = tokenType;\n }\n }\n atn.ruleToStopState = initArray(nrules, 0);\n for (i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (!(state instanceof RuleStopState)) {\n continue;\n }\n atn.ruleToStopState[state.ruleIndex] = state;\n atn.ruleToStartState[state.ruleIndex].stopState = state;\n }\n};\n\nATNDeserializer.prototype.readModes = function(atn) {\n var nmodes = this.readInt();\n for (var i=0; i<nmodes; i++) {\n var s = this.readInt();\n atn.modeToStartState.push(atn.states[s]);\n }\n};\n\nATNDeserializer.prototype.readSets = function(atn, sets, readUnicode) {\n var m = this.readInt();\n for (var i=0; i<m; i++) {\n var iset = new IntervalSet();\n sets.push(iset);\n var n = this.readInt();\n var containsEof = this.readInt();\n if (containsEof!==0) {\n iset.addOne(-1);\n }\n for (var j=0; j<n; j++) {\n var i1 = readUnicode();\n var i2 = readUnicode();\n iset.addRange(i1, i2);\n }\n }\n};\n\nATNDeserializer.prototype.readEdges = function(atn, sets) {\n\tvar i, j, state, trans, target;\n var nedges = this.readInt();\n for (i=0; i<nedges; i++) {\n var src = this.readInt();\n var trg = this.readInt();\n var ttype = this.readInt();\n var arg1 = this.readInt();\n var arg2 = this.readInt();\n var arg3 = this.readInt();\n trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);\n var srcState = atn.states[src];\n srcState.addTransition(trans);\n }\n // edges for rule stop states can be derived, so they aren't serialized\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for (j=0; j<state.transitions.length; j++) {\n var t = state.transitions[j];\n if (!(t instanceof RuleTransition)) {\n continue;\n }\n\t\t\tvar outermostPrecedenceReturn = -1;\n\t\t\tif (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) {\n\t\t\t\tif (t.precedence === 0) {\n\t\t\t\t\toutermostPrecedenceReturn = t.target.ruleIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttrans = new EpsilonTransition(t.followState, outermostPrecedenceReturn);\n atn.ruleToStopState[t.target.ruleIndex].addTransition(trans);\n }\n }\n\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (state instanceof BlockStartState) {\n // we need to know the end state to set its start state\n if (state.endState === null) {\n throw (\"IllegalState\");\n }\n // block end states can only be associated to a single block start\n\t\t\t// state\n if ( state.endState.startState !== null) {\n throw (\"IllegalState\");\n }\n state.endState.startState = state;\n }\n if (state instanceof PlusLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof PlusBlockStartState) {\n target.loopBackState = state;\n }\n }\n } else if (state instanceof StarLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof StarLoopEntryState) {\n target.loopBackState = state;\n }\n }\n }\n }\n};\n\nATNDeserializer.prototype.readDecisions = function(atn) {\n var ndecisions = this.readInt();\n for (var i=0; i<ndecisions; i++) {\n var s = this.readInt();\n var decState = atn.states[s];\n atn.decisionToState.push(decState);\n decState.decision = i;\n }\n};\n\nATNDeserializer.prototype.readLexerActions = function(atn) {\n if (atn.grammarType === ATNType.LEXER) {\n var count = this.readInt();\n atn.lexerActions = initArray(count, null);\n for (var i=0; i<count; i++) {\n var actionType = this.readInt();\n var data1 = this.readInt();\n if (data1 === 0xFFFF) {\n data1 = -1;\n }\n var data2 = this.readInt();\n if (data2 === 0xFFFF) {\n data2 = -1;\n }\n var lexerAction = this.lexerActionFactory(actionType, data1, data2);\n atn.lexerActions[i] = lexerAction;\n }\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransitions = function(atn) {\n\tvar i;\n var count = atn.ruleToStartState.length;\n for(i=0; i<count; i++) {\n atn.ruleToTokenType[i] = atn.maxTokenType + i + 1;\n }\n for(i=0; i<count; i++) {\n this.generateRuleBypassTransition(atn, i);\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransition = function(atn, idx) {\n\tvar i, state;\n var bypassStart = new BasicBlockStartState();\n bypassStart.ruleIndex = idx;\n atn.addState(bypassStart);\n\n var bypassStop = new BlockEndState();\n bypassStop.ruleIndex = idx;\n atn.addState(bypassStop);\n\n bypassStart.endState = bypassStop;\n atn.defineDecisionState(bypassStart);\n\n bypassStop.startState = bypassStart;\n\n var excludeTransition = null;\n var endState = null;\n\n if (atn.ruleToStartState[idx].isPrecedenceRule) {\n // wrap from the beginning of the rule to the StarLoopEntryState\n endState = null;\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (this.stateIsEndStateFor(state, idx)) {\n endState = state;\n excludeTransition = state.loopBackState.transitions[0];\n break;\n }\n }\n if (excludeTransition === null) {\n throw (\"Couldn't identify final state of the precedence rule prefix section.\");\n }\n } else {\n endState = atn.ruleToStopState[idx];\n }\n\n // all non-excluded transitions that currently target end state need to\n\t// target blockEnd instead\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for(var j=0; j<state.transitions.length; j++) {\n var transition = state.transitions[j];\n if (transition === excludeTransition) {\n continue;\n }\n if (transition.target === endState) {\n transition.target = bypassStop;\n }\n }\n }\n\n // all transitions leaving the rule start state need to leave blockStart\n\t// instead\n var ruleToStartState = atn.ruleToStartState[idx];\n var count = ruleToStartState.transitions.length;\n while ( count > 0) {\n bypassStart.addTransition(ruleToStartState.transitions[count-1]);\n ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);\n }\n // link the new states\n atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));\n bypassStop.addTransition(new EpsilonTransition(endState));\n\n var matchState = new BasicState();\n atn.addState(matchState);\n matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));\n bypassStart.addTransition(new EpsilonTransition(matchState));\n};\n\nATNDeserializer.prototype.stateIsEndStateFor = function(state, idx) {\n if ( state.ruleIndex !== idx) {\n return null;\n }\n if (!( state instanceof StarLoopEntryState)) {\n return null;\n }\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (!( maybeLoopEndState instanceof LoopEndState)) {\n return null;\n }\n if (maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n return state;\n } else {\n return null;\n }\n};\n\n//\n// Analyze the {@link StarLoopEntryState} states in the specified ATN to set\n// the {@link StarLoopEntryState//isPrecedenceDecision} field to the\n// correct value.\n//\n// @param atn The ATN.\n//\nATNDeserializer.prototype.markPrecedenceDecisions = function(atn) {\n\tfor(var i=0; i<atn.states.length; i++) {\n\t\tvar state = atn.states[i];\n\t\tif (!( state instanceof StarLoopEntryState)) {\n continue;\n }\n // We analyze the ATN to determine if this ATN decision state is the\n // decision for the closure block that determines whether a\n // precedence rule should continue or complete.\n //\n if ( atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (maybeLoopEndState instanceof LoopEndState) {\n if ( maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n state.isPrecedenceDecision = true;\n }\n }\n }\n\t}\n};\n\nATNDeserializer.prototype.verifyATN = function(atn) {\n if (!this.deserializationOptions.verifyATN) {\n return;\n }\n // verify assumptions\n\tfor(var i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (state === null) {\n continue;\n }\n this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1);\n if (state instanceof PlusBlockStartState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof StarLoopEntryState) {\n this.checkCondition(state.loopBackState !== null);\n this.checkCondition(state.transitions.length === 2);\n if (state.transitions[0].target instanceof StarBlockStartState) {\n this.checkCondition(state.transitions[1].target instanceof LoopEndState);\n this.checkCondition(!state.nonGreedy);\n } else if (state.transitions[0].target instanceof LoopEndState) {\n this.checkCondition(state.transitions[1].target instanceof StarBlockStartState);\n this.checkCondition(state.nonGreedy);\n } else {\n throw(\"IllegalState\");\n }\n } else if (state instanceof StarLoopbackState) {\n this.checkCondition(state.transitions.length === 1);\n this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState);\n } else if (state instanceof LoopEndState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof RuleStartState) {\n this.checkCondition(state.stopState !== null);\n } else if (state instanceof BlockStartState) {\n this.checkCondition(state.endState !== null);\n } else if (state instanceof BlockEndState) {\n this.checkCondition(state.startState !== null);\n } else if (state instanceof DecisionState) {\n this.checkCondition(state.transitions.length <= 1 || state.decision >= 0);\n } else {\n this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));\n }\n\t}\n};\n\nATNDeserializer.prototype.checkCondition = function(condition, message) {\n if (!condition) {\n if (message === undefined || message===null) {\n message = \"IllegalState\";\n }\n throw (message);\n }\n};\n\nATNDeserializer.prototype.readInt = function() {\n return this.data[this.pos++];\n};\n\nATNDeserializer.prototype.readInt32 = function() {\n var low = this.readInt();\n var high = this.readInt();\n return low | (high << 16);\n};\n\nATNDeserializer.prototype.readLong = function() {\n var low = this.readInt32();\n var high = this.readInt32();\n return (low & 0x00000000FFFFFFFF) | (high << 32);\n};\n\nfunction createByteToHex() {\n\tvar bth = [];\n\tfor (var i = 0; i < 256; i++) {\n\t\tbth[i] = (i + 0x100).toString(16).substr(1).toUpperCase();\n\t}\n\treturn bth;\n}\n\nvar byteToHex = createByteToHex();\n\nATNDeserializer.prototype.readUUID = function() {\n\tvar bb = [];\n\tfor(var i=7;i>=0;i--) {\n\t\tvar int = this.readInt();\n\t\t/* jshint bitwise: false */\n\t\tbb[(2*i)+1] = int & 0xFF;\n\t\tbb[2*i] = (int >> 8) & 0xFF;\n\t}\n return byteToHex[bb[0]] + byteToHex[bb[1]] +\n byteToHex[bb[2]] + byteToHex[bb[3]] + '-' +\n byteToHex[bb[4]] + byteToHex[bb[5]] + '-' +\n byteToHex[bb[6]] + byteToHex[bb[7]] + '-' +\n byteToHex[bb[8]] + byteToHex[bb[9]] + '-' +\n byteToHex[bb[10]] + byteToHex[bb[11]] +\n byteToHex[bb[12]] + byteToHex[bb[13]] +\n byteToHex[bb[14]] + byteToHex[bb[15]];\n};\n\nATNDeserializer.prototype.edgeFactory = function(atn, type, src, trg, arg1, arg2, arg3, sets) {\n var target = atn.states[trg];\n switch(type) {\n case Transition.EPSILON:\n return new EpsilonTransition(target);\n case Transition.RANGE:\n return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);\n case Transition.RULE:\n return new RuleTransition(atn.states[arg1], arg2, arg3, target);\n case Transition.PREDICATE:\n return new PredicateTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.PRECEDENCE:\n return new PrecedencePredicateTransition(target, arg1);\n case Transition.ATOM:\n return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);\n case Transition.ACTION:\n return new ActionTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.SET:\n return new SetTransition(target, sets[arg1]);\n case Transition.NOT_SET:\n return new NotSetTransition(target, sets[arg1]);\n case Transition.WILDCARD:\n return new WildcardTransition(target);\n default:\n throw \"The specified transition type: \" + type + \" is not valid.\";\n }\n};\n\nATNDeserializer.prototype.stateFactory = function(type, ruleIndex) {\n if (this.stateFactories === null) {\n var sf = [];\n sf[ATNState.INVALID_TYPE] = null;\n sf[ATNState.BASIC] = function() { return new BasicState(); };\n sf[ATNState.RULE_START] = function() { return new RuleStartState(); };\n sf[ATNState.BLOCK_START] = function() { return new BasicBlockStartState(); };\n sf[ATNState.PLUS_BLOCK_START] = function() { return new PlusBlockStartState(); };\n sf[ATNState.STAR_BLOCK_START] = function() { return new StarBlockStartState(); };\n sf[ATNState.TOKEN_START] = function() { return new TokensStartState(); };\n sf[ATNState.RULE_STOP] = function() { return new RuleStopState(); };\n sf[ATNState.BLOCK_END] = function() { return new BlockEndState(); };\n sf[ATNState.STAR_LOOP_BACK] = function() { return new StarLoopbackState(); };\n sf[ATNState.STAR_LOOP_ENTRY] = function() { return new StarLoopEntryState(); };\n sf[ATNState.PLUS_LOOP_BACK] = function() { return new PlusLoopbackState(); };\n sf[ATNState.LOOP_END] = function() { return new LoopEndState(); };\n this.stateFactories = sf;\n }\n if (type>this.stateFactories.length || this.stateFactories[type] === null) {\n throw(\"The specified state type \" + type + \" is not valid.\");\n } else {\n var s = this.stateFactories[type]();\n if (s!==null) {\n s.ruleIndex = ruleIndex;\n return s;\n }\n }\n};\n\nATNDeserializer.prototype.lexerActionFactory = function(type, data1, data2) {\n if (this.actionFactories === null) {\n var af = [];\n af[LexerActionType.CHANNEL] = function(data1, data2) { return new LexerChannelAction(data1); };\n af[LexerActionType.CUSTOM] = function(data1, data2) { return new LexerCustomAction(data1, data2); };\n af[LexerActionType.MODE] = function(data1, data2) { return new LexerModeAction(data1); };\n af[LexerActionType.MORE] = function(data1, data2) { return LexerMoreAction.INSTANCE; };\n af[LexerActionType.POP_MODE] = function(data1, data2) { return LexerPopModeAction.INSTANCE; };\n af[LexerActionType.PUSH_MODE] = function(data1, data2) { return new LexerPushModeAction(data1); };\n af[LexerActionType.SKIP] = function(data1, data2) { return LexerSkipAction.INSTANCE; };\n af[LexerActionType.TYPE] = function(data1, data2) { return new LexerTypeAction(data1); };\n this.actionFactories = af;\n }\n if (type>this.actionFactories.length || this.actionFactories[type] === null) {\n throw(\"The specified lexer action type \" + type + \" is not valid.\");\n } else {\n return this.actionFactories[type](data1, data2);\n }\n};\n\n\nexports.ATNDeserializer = ATNDeserializer;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar getCachedPredictionContext = require('./../PredictionContext').getCachedPredictionContext;\n\nfunction ATNSimulator(atn, sharedContextCache) {\n\n // The context cache maps all PredictionContext objects that are ==\n // to a single cached copy. This cache is shared across all contexts\n // in all ATNConfigs in all DFA states. We rebuild each ATNConfigSet\n // to use only cached nodes/graphs in addDFAState(). We don't want to\n // fill this during closure() since there are lots of contexts that\n // pop up but are not used ever again. It also greatly slows down closure().\n //\n // <p>This cache makes a huge difference in memory and a little bit in speed.\n // For the Java grammar on java.*, it dropped the memory requirements\n // at the end from 25M to 16M. We don't store any of the full context\n // graphs in the DFA because they are limited to local context only,\n // but apparently there's a lot of repetition there as well. We optimize\n // the config contexts before storing the config set in the DFA states\n // by literally rebuilding them with cached subgraphs only.</p>\n //\n // <p>I tried a cache for use during closure operations, that was\n // whacked after each adaptivePredict(). It cost a little bit\n // more time I think and doesn't save on the overall footprint\n // so it's not worth the complexity.</p>\n ///\n this.atn = atn;\n this.sharedContextCache = sharedContextCache;\n return this;\n}\n\n// Must distinguish between missing edge and edge we know leads nowhere///\nATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());\n\n\nATNSimulator.prototype.getCachedContext = function(context) {\n if (this.sharedContextCache ===null) {\n return context;\n }\n var visited = {};\n return getCachedPredictionContext(context, this.sharedContextCache, visited);\n};\n\nexports.ATNSimulator = ATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// The following images show the relation of states and\n// {@link ATNState//transitions} for various grammar constructs.\n//\n// <ul>\n//\n// <li>Solid edges marked with an &//0949; indicate a required\n// {@link EpsilonTransition}.</li>\n//\n// <li>Dashed edges indicate locations where any transition derived from\n// {@link Transition} might appear.</li>\n//\n// <li>Dashed nodes are place holders for either a sequence of linked\n// {@link BasicState} states or the inclusion of a block representing a nested\n// construct in one of the forms below.</li>\n//\n// <li>Nodes showing multiple outgoing alternatives with a {@code ...} support\n// any number of alternatives (one or more). Nodes without the {@code ...} only\n// support the exact number of alternatives shown in the diagram.</li>\n//\n// </ul>\n//\n// <h2>Basic Blocks</h2>\n//\n// <h3>Rule</h3>\n//\n// <embed src=\"images/Rule.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Block of 1 or more alternatives</h3>\n//\n// <embed src=\"images/Block.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Greedy Loops</h2>\n//\n// <h3>Greedy Closure: {@code (...)*}</h3>\n//\n// <embed src=\"images/ClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Positive Closure: {@code (...)+}</h3>\n//\n// <embed src=\"images/PositiveClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Optional: {@code (...)?}</h3>\n//\n// <embed src=\"images/OptionalGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Non-Greedy Loops</h2>\n//\n// <h3>Non-Greedy Closure: {@code (...)*?}</h3>\n//\n// <embed src=\"images/ClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Positive Closure: {@code (...)+?}</h3>\n//\n// <embed src=\"images/PositiveClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Optional: {@code (...)??}</h3>\n//\n// <embed src=\"images/OptionalNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n\nvar INITIAL_NUM_TRANSITIONS = 4;\n\nfunction ATNState() {\n // Which ATN are we in?\n this.atn = null;\n this.stateNumber = ATNState.INVALID_STATE_NUMBER;\n this.stateType = null;\n this.ruleIndex = 0; // at runtime, we don't have Rule objects\n this.epsilonOnlyTransitions = false;\n // Track the transitions emanating from this ATN state.\n this.transitions = [];\n // Used to cache lookahead during parsing, not used during construction\n this.nextTokenWithinRule = null;\n return this;\n}\n\n// constants for serialization\nATNState.INVALID_TYPE = 0;\nATNState.BASIC = 1;\nATNState.RULE_START = 2;\nATNState.BLOCK_START = 3;\nATNState.PLUS_BLOCK_START = 4;\nATNState.STAR_BLOCK_START = 5;\nATNState.TOKEN_START = 6;\nATNState.RULE_STOP = 7;\nATNState.BLOCK_END = 8;\nATNState.STAR_LOOP_BACK = 9;\nATNState.STAR_LOOP_ENTRY = 10;\nATNState.PLUS_LOOP_BACK = 11;\nATNState.LOOP_END = 12;\n\nATNState.serializationNames = [\n \"INVALID\",\n \"BASIC\",\n \"RULE_START\",\n \"BLOCK_START\",\n \"PLUS_BLOCK_START\",\n \"STAR_BLOCK_START\",\n \"TOKEN_START\",\n \"RULE_STOP\",\n \"BLOCK_END\",\n \"STAR_LOOP_BACK\",\n \"STAR_LOOP_ENTRY\",\n \"PLUS_LOOP_BACK\",\n \"LOOP_END\" ];\n\nATNState.INVALID_STATE_NUMBER = -1;\n\nATNState.prototype.toString = function() {\n\treturn this.stateNumber;\n};\n\nATNState.prototype.equals = function(other) {\n if (other instanceof ATNState) {\n return this.stateNumber===other.stateNumber;\n } else {\n return false;\n }\n};\n\nATNState.prototype.isNonGreedyExitState = function() {\n return false;\n};\n\n\nATNState.prototype.addTransition = function(trans, index) {\n\tif(index===undefined) {\n\t\tindex = -1;\n\t}\n if (this.transitions.length===0) {\n this.epsilonOnlyTransitions = trans.isEpsilon;\n } else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {\n this.epsilonOnlyTransitions = false;\n }\n if (index===-1) {\n this.transitions.push(trans);\n } else {\n this.transitions.splice(index, 1, trans);\n }\n};\n\nfunction BasicState() {\n\tATNState.call(this);\n this.stateType = ATNState.BASIC;\n return this;\n}\n\nBasicState.prototype = Object.create(ATNState.prototype);\nBasicState.prototype.constructor = BasicState;\n\n\nfunction DecisionState() {\n\tATNState.call(this);\n this.decision = -1;\n this.nonGreedy = false;\n return this;\n}\n\nDecisionState.prototype = Object.create(ATNState.prototype);\nDecisionState.prototype.constructor = DecisionState;\n\n\n// The start of a regular {@code (...)} block.\nfunction BlockStartState() {\n\tDecisionState.call(this);\n\tthis.endState = null;\n\treturn this;\n}\n\nBlockStartState.prototype = Object.create(DecisionState.prototype);\nBlockStartState.prototype.constructor = BlockStartState;\n\n\nfunction BasicBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.BLOCK_START;\n\treturn this;\n}\n\nBasicBlockStartState.prototype = Object.create(BlockStartState.prototype);\nBasicBlockStartState.prototype.constructor = BasicBlockStartState;\n\n\n// Terminal node of a simple {@code (a|b|c)} block.\nfunction BlockEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.BLOCK_END;\n this.startState = null;\n return this;\n}\n\nBlockEndState.prototype = Object.create(ATNState.prototype);\nBlockEndState.prototype.constructor = BlockEndState;\n\n\n// The last node in the ATN for a rule, unless that rule is the start symbol.\n// In that case, there is one transition to EOF. Later, we might encode\n// references to all calls to this rule to compute FOLLOW sets for\n// error handling.\n//\nfunction RuleStopState() {\n\tATNState.call(this);\n this.stateType = ATNState.RULE_STOP;\n return this;\n}\n\nRuleStopState.prototype = Object.create(ATNState.prototype);\nRuleStopState.prototype.constructor = RuleStopState;\n\nfunction RuleStartState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.RULE_START;\n\tthis.stopState = null;\n\tthis.isPrecedenceRule = false;\n\treturn this;\n}\n\nRuleStartState.prototype = Object.create(ATNState.prototype);\nRuleStartState.prototype.constructor = RuleStartState;\n\n// Decision state for {@code A+} and {@code (A|B)+}. It has two transitions:\n// one to the loop back to start of the block and one to exit.\n//\nfunction PlusLoopbackState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.PLUS_LOOP_BACK;\n\treturn this;\n}\n\nPlusLoopbackState.prototype = Object.create(DecisionState.prototype);\nPlusLoopbackState.prototype.constructor = PlusLoopbackState;\n\n\n// Start of {@code (A|B|...)+} loop. Technically a decision state, but\n// we don't use for code generation; somebody might need it, so I'm defining\n// it for completeness. In reality, the {@link PlusLoopbackState} node is the\n// real decision-making note for {@code A+}.\n//\nfunction PlusBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.PLUS_BLOCK_START;\n this.loopBackState = null;\n return this;\n}\n\nPlusBlockStartState.prototype = Object.create(BlockStartState.prototype);\nPlusBlockStartState.prototype.constructor = PlusBlockStartState;\n\n// The block that begins a closure loop.\nfunction StarBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.STAR_BLOCK_START;\n\treturn this;\n}\n\nStarBlockStartState.prototype = Object.create(BlockStartState.prototype);\nStarBlockStartState.prototype.constructor = StarBlockStartState;\n\n\nfunction StarLoopbackState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_BACK;\n\treturn this;\n}\n\nStarLoopbackState.prototype = Object.create(ATNState.prototype);\nStarLoopbackState.prototype.constructor = StarLoopbackState;\n\n\nfunction StarLoopEntryState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_ENTRY;\n this.loopBackState = null;\n // Indicates whether this state can benefit from a precedence DFA during SLL decision making.\n this.isPrecedenceDecision = null;\n return this;\n}\n\nStarLoopEntryState.prototype = Object.create(DecisionState.prototype);\nStarLoopEntryState.prototype.constructor = StarLoopEntryState;\n\n\n// Mark the end of a * or + loop.\nfunction LoopEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.LOOP_END;\n\tthis.loopBackState = null;\n\treturn this;\n}\n\nLoopEndState.prototype = Object.create(ATNState.prototype);\nLoopEndState.prototype.constructor = LoopEndState;\n\n\n// The Tokens rule start state linking to each lexer rule start state */\nfunction TokensStartState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.TOKEN_START;\n\treturn this;\n}\n\nTokensStartState.prototype = Object.create(DecisionState.prototype);\nTokensStartState.prototype.constructor = TokensStartState;\n\nexports.ATNState = ATNState;\nexports.BasicState = BasicState;\nexports.DecisionState = DecisionState;\nexports.BlockStartState = BlockStartState;\nexports.BlockEndState = BlockEndState;\nexports.LoopEndState = LoopEndState;\nexports.RuleStartState = RuleStartState;\nexports.RuleStopState = RuleStopState;\nexports.TokensStartState = TokensStartState;\nexports.PlusLoopbackState = PlusLoopbackState;\nexports.StarLoopbackState = StarLoopbackState;\nexports.StarLoopEntryState = StarLoopEntryState;\nexports.PlusBlockStartState = PlusBlockStartState;\nexports.StarBlockStartState = StarBlockStartState;\nexports.BasicBlockStartState = BasicBlockStartState;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents the type of recognizer an ATN applies to.\n\nfunction ATNType() {\n\n}\n\nATNType.LEXER = 0;\nATNType.PARSER = 1;\n\nexports.ATNType = ATNType;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// When we hit an accept state in either the DFA or the ATN, we\n// have to notify the character stream to start buffering characters\n// via {@link IntStream//mark} and record the current state. The current sim state\n// includes the current index into the input, the current line,\n// and current character position in that line. Note that the Lexer is\n// tracking the starting line and characterization of the token. These\n// variables track the \"state\" of the simulator when it hits an accept state.\n//\n// <p>We track these variables separately for the DFA and ATN simulation\n// because the DFA simulation often has to fail over to the ATN\n// simulation. If the ATN simulation fails, we need the DFA to fall\n// back to its previously accepted state, if any. If the ATN succeeds,\n// then the ATN does the accept and the DFA simulator that invoked it\n// can simply return the predicted token type.</p>\n///\n\nvar Token = require('./../Token').Token;\nvar Lexer = require('./../Lexer').Lexer;\nvar ATN = require('./ATN').ATN;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar OrderedATNConfigSet = require('./ATNConfigSet').OrderedATNConfigSet;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar LexerATNConfig = require('./ATNConfig').LexerATNConfig;\nvar Transition = require('./Transition').Transition;\nvar LexerActionExecutor = require('./LexerActionExecutor').LexerActionExecutor;\nvar LexerNoViableAltException = require('./../error/Errors').LexerNoViableAltException;\n\nfunction resetSimState(sim) {\n\tsim.index = -1;\n\tsim.line = 0;\n\tsim.column = -1;\n\tsim.dfaState = null;\n}\n\nfunction SimState() {\n\tresetSimState(this);\n\treturn this;\n}\n\nSimState.prototype.reset = function() {\n\tresetSimState(this);\n};\n\nfunction LexerATNSimulator(recog, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n\tthis.decisionToDFA = decisionToDFA;\n\tthis.recog = recog;\n\t// The current token's starting index into the character stream.\n\t// Shared across DFA to ATN simulation in case the ATN fails and the\n\t// DFA did not have a previous accept state. In this case, we use the\n\t// ATN-generated exception object.\n\tthis.startIndex = -1;\n\t// line number 1..n within the input///\n\tthis.line = 1;\n\t// The index of the character relative to the beginning of the line\n\t// 0..n-1///\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n\t// Used during DFA/ATN exec to record the most recent accept configuration\n\t// info\n\tthis.prevAccept = new SimState();\n\t// done\n\treturn this;\n}\n\nLexerATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nLexerATNSimulator.prototype.constructor = LexerATNSimulator;\n\nLexerATNSimulator.debug = false;\nLexerATNSimulator.dfa_debug = false;\n\nLexerATNSimulator.MIN_DFA_EDGE = 0;\nLexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN\n\nLexerATNSimulator.match_calls = 0;\n\nLexerATNSimulator.prototype.copyState = function(simulator) {\n\tthis.column = simulator.column;\n\tthis.line = simulator.line;\n\tthis.mode = simulator.mode;\n\tthis.startIndex = simulator.startIndex;\n};\n\nLexerATNSimulator.prototype.match = function(input, mode) {\n\tthis.match_calls += 1;\n\tthis.mode = mode;\n\tvar mark = input.mark();\n\ttry {\n\t\tthis.startIndex = input.index;\n\t\tthis.prevAccept.reset();\n\t\tvar dfa = this.decisionToDFA[mode];\n\t\tif (dfa.s0 === null) {\n\t\t\treturn this.matchATN(input);\n\t\t} else {\n\t\t\treturn this.execATN(input, dfa.s0);\n\t\t}\n\t} finally {\n\t\tinput.release(mark);\n\t}\n};\n\nLexerATNSimulator.prototype.reset = function() {\n\tthis.prevAccept.reset();\n\tthis.startIndex = -1;\n\tthis.line = 1;\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n};\n\nLexerATNSimulator.prototype.matchATN = function(input) {\n\tvar startState = this.atn.modeToStartState[this.mode];\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"matchATN mode \" + this.mode + \" start: \" + startState);\n\t}\n\tvar old_mode = this.mode;\n\tvar s0_closure = this.computeStartState(input, startState);\n\tvar suppressEdge = s0_closure.hasSemanticContext;\n\ts0_closure.hasSemanticContext = false;\n\n\tvar next = this.addDFAState(s0_closure);\n\tif (!suppressEdge) {\n\t\tthis.decisionToDFA[this.mode].s0 = next;\n\t}\n\n\tvar predict = this.execATN(input, next);\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"DFA after matchATN: \" + this.decisionToDFA[old_mode].toLexerString());\n\t}\n\treturn predict;\n};\n\nLexerATNSimulator.prototype.execATN = function(input, ds0) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"start state closure=\" + ds0.configs);\n\t}\n\tif (ds0.isAcceptState) {\n\t\t// allow zero-length tokens\n\t\tthis.captureSimState(this.prevAccept, input, ds0);\n\t}\n\tvar t = input.LA(1);\n\tvar s = ds0; // s is current/from DFA state\n\n\twhile (true) { // while more work\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"execATN loop starting closure: \" + s.configs);\n\t\t}\n\n\t\t// As we move src->trg, src->trg, we keep track of the previous trg to\n\t\t// avoid looking up the DFA state again, which is expensive.\n\t\t// If the previous target was already part of the DFA, we might\n\t\t// be able to avoid doing a reach operation upon t. If s!=null,\n\t\t// it means that semantic predicates didn't prevent us from\n\t\t// creating a DFA state. Once we know s!=null, we check to see if\n\t\t// the DFA state has an edge already for t. If so, we can just reuse\n\t\t// it's configuration set; there's no point in re-computing it.\n\t\t// This is kind of like doing DFA simulation within the ATN\n\t\t// simulation because DFA simulation is really just a way to avoid\n\t\t// computing reach/closure sets. Technically, once we know that\n\t\t// we have a previously added DFA state, we could jump over to\n\t\t// the DFA simulator. But, that would mean popping back and forth\n\t\t// a lot and making things more complicated algorithmically.\n\t\t// This optimization makes a lot of sense for loops within DFA.\n\t\t// A character will take us back to an existing DFA state\n\t\t// that already has lots of edges out of it. e.g., .* in comments.\n\t\t// print(\"Target for:\" + str(s) + \" and:\" + str(t))\n\t\tvar target = this.getExistingTargetState(s, t);\n\t\t// print(\"Existing:\" + str(target))\n\t\tif (target === null) {\n\t\t\ttarget = this.computeTargetState(input, s, t);\n\t\t\t// print(\"Computed:\" + str(target))\n\t\t}\n\t\tif (target === ATNSimulator.ERROR) {\n\t\t\tbreak;\n\t\t}\n\t\t// If this is a consumable input element, make sure to consume before\n\t\t// capturing the accept state so the input index, line, and char\n\t\t// position accurately reflect the state of the interpreter at the\n\t\t// end of the token.\n\t\tif (t !== Token.EOF) {\n\t\t\tthis.consume(input);\n\t\t}\n\t\tif (target.isAcceptState) {\n\t\t\tthis.captureSimState(this.prevAccept, input, target);\n\t\t\tif (t === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tt = input.LA(1);\n\t\ts = target; // flip; current DFA target becomes new src/from state\n\t}\n\treturn this.failOrAccept(this.prevAccept, input, s.configs, t);\n};\n\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param s The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\nLexerATNSimulator.prototype.getExistingTargetState = function(s, t) {\n\tif (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\treturn null;\n\t}\n\n\tvar target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];\n\tif(target===undefined) {\n\t\ttarget = null;\n\t}\n\tif (LexerATNSimulator.debug && target !== null) {\n\t\tconsole.log(\"reuse state \" + s.stateNumber + \" edge to \" + target.stateNumber);\n\t}\n\treturn target;\n};\n\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param input The input stream\n// @param s The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\nLexerATNSimulator.prototype.computeTargetState = function(input, s, t) {\n\tvar reach = new OrderedATNConfigSet();\n\t// if we don't find an existing DFA state\n\t// Fill reach starting from closure, following t transitions\n\tthis.getReachableConfigSet(input, s.configs, reach, t);\n\n\tif (reach.items.length === 0) { // we got nowhere on t from s\n\t\tif (!reach.hasSemanticContext) {\n\t\t\t// we got nowhere on t, don't throw out this knowledge; it'd\n\t\t\t// cause a failover from DFA later.\n\t\t\tthis.addDFAEdge(s, t, ATNSimulator.ERROR);\n\t\t}\n\t\t// stop when we can't match any more char\n\t\treturn ATNSimulator.ERROR;\n\t}\n\t// Add an edge from s to target DFA found/created for reach\n\treturn this.addDFAEdge(s, t, null, reach);\n};\n\nLexerATNSimulator.prototype.failOrAccept = function(prevAccept, input, reach, t) {\n\tif (this.prevAccept.dfaState !== null) {\n\t\tvar lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;\n\t\tthis.accept(input, lexerActionExecutor, this.startIndex,\n\t\t\t\tprevAccept.index, prevAccept.line, prevAccept.column);\n\t\treturn prevAccept.dfaState.prediction;\n\t} else {\n\t\t// if no accept and EOF is first char, return EOF\n\t\tif (t === Token.EOF && input.index === this.startIndex) {\n\t\t\treturn Token.EOF;\n\t\t}\n\t\tthrow new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\n\t}\n};\n\n// Given a starting configuration set, figure out all ATN configurations\n// we can reach upon input {@code t}. Parameter {@code reach} is a return\n// parameter.\nLexerATNSimulator.prototype.getReachableConfigSet = function(input, closure,\n\t\treach, t) {\n\t// this is used to skip processing for configs which have a lower priority\n\t// than a config that already reached an accept state for the same rule\n\tvar skipAlt = ATN.INVALID_ALT_NUMBER;\n\tfor (var i = 0; i < closure.items.length; i++) {\n\t\tvar cfg = closure.items[i];\n\t\tvar currentAltReachedAcceptState = (cfg.alt === skipAlt);\n\t\tif (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"testing %s at %s\\n\", this.getTokenName(t), cfg\n\t\t\t\t\t.toString(this.recog, true));\n\t\t}\n\t\tfor (var j = 0; j < cfg.state.transitions.length; j++) {\n\t\t\tvar trans = cfg.state.transitions[j]; // for each transition\n\t\t\tvar target = this.getReachableTarget(trans, t);\n\t\t\tif (target !== null) {\n\t\t\t\tvar lexerActionExecutor = cfg.lexerActionExecutor;\n\t\t\t\tif (lexerActionExecutor !== null) {\n\t\t\t\t\tlexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\n\t\t\t\t}\n\t\t\t\tvar treatEofAsEpsilon = (t === Token.EOF);\n\t\t\t\tvar config = new LexerATNConfig({state:target, lexerActionExecutor:lexerActionExecutor}, cfg);\n\t\t\t\tif (this.closure(input, config, reach,\n\t\t\t\t\t\tcurrentAltReachedAcceptState, true, treatEofAsEpsilon)) {\n\t\t\t\t\t// any remaining configs for this alt have a lower priority\n\t\t\t\t\t// than the one that just reached an accept state.\n\t\t\t\t\tskipAlt = cfg.alt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nLexerATNSimulator.prototype.accept = function(input, lexerActionExecutor,\n\t\tstartIndex, index, line, charPos) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"ACTION %s\\n\", lexerActionExecutor);\n\t}\n\t// seek to after last char in token\n\tinput.seek(index);\n\tthis.line = line;\n\tthis.column = charPos;\n\tif (lexerActionExecutor !== null && this.recog !== null) {\n\t\tlexerActionExecutor.execute(this.recog, input, startIndex);\n\t}\n};\n\nLexerATNSimulator.prototype.getReachableTarget = function(trans, t) {\n\tif (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\treturn trans.target;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nLexerATNSimulator.prototype.computeStartState = function(input, p) {\n\tvar initialContext = PredictionContext.EMPTY;\n\tvar configs = new OrderedATNConfigSet();\n\tfor (var i = 0; i < p.transitions.length; i++) {\n\t\tvar target = p.transitions[i].target;\n var cfg = new LexerATNConfig({state:target, alt:i+1, context:initialContext}, null);\n\t\tthis.closure(input, cfg, configs, false, false, false);\n\t}\n\treturn configs;\n};\n\n// Since the alternatives within any lexer decision are ordered by\n// preference, this method stops pursuing the closure as soon as an accept\n// state is reached. After the first accept state is reached by depth-first\n// search from {@code config}, all other (potentially reachable) states for\n// this rule would have a lower priority.\n//\n// @return {@code true} if an accept state is reached, otherwise\n// {@code false}.\nLexerATNSimulator.prototype.closure = function(input, config, configs,\n\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"closure(\" + config.toString(this.recog, true) + \")\");\n\t}\n\tif (config.state instanceof RuleStopState) {\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tif (this.recog !== null) {\n\t\t\t\tconsole.log(\"closure at %s rule stop %s\\n\", this.recog.ruleNames[config.state.ruleIndex], config);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"closure at rule stop %s\\n\", config);\n\t\t\t}\n\t\t}\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\tif (config.context === null || config.context.isEmpty()) {\n\t\t\t\tconfigs.add(config);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tconfigs.add(new LexerATNConfig({ state:config.state, context:PredictionContext.EMPTY}, config));\n\t\t\t\tcurrentAltReachedAcceptState = true;\n\t\t\t}\n\t\t}\n\t\tif (config.context !== null && !config.context.isEmpty()) {\n\t\t\tfor (var i = 0; i < config.context.length; i++) {\n\t\t\t\tif (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\t\tvar newContext = config.context.getParent(i); // \"pop\" return state\n\t\t\t\t\tvar returnState = this.atn.states[config.context.getReturnState(i)];\n\t\t\t\t\tcfg = new LexerATNConfig({ state:returnState, context:newContext }, config);\n\t\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg,\n\t\t\t\t\t\t\tconfigs, currentAltReachedAcceptState, speculative,\n\t\t\t\t\t\t\ttreatEofAsEpsilon);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn currentAltReachedAcceptState;\n\t}\n\t// optimization\n\tif (!config.state.epsilonOnlyTransitions) {\n\t\tif (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {\n\t\t\tconfigs.add(config);\n\t\t}\n\t}\n\tfor (var j = 0; j < config.state.transitions.length; j++) {\n\t\tvar trans = config.state.transitions[j];\n\t\tcfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);\n\t\tif (cfg !== null) {\n\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg, configs,\n\t\t\t\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon);\n\t\t}\n\t}\n\treturn currentAltReachedAcceptState;\n};\n\n// side-effect: can alter configs.hasSemanticContext\nLexerATNSimulator.prototype.getEpsilonTarget = function(input, config, trans,\n\t\tconfigs, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (trans.serializationType === Transition.RULE) {\n\t\tvar newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);\n\t\tcfg = new LexerATNConfig( { state:trans.target, context:newContext}, config);\n\t} else if (trans.serializationType === Transition.PRECEDENCE) {\n\t\tthrow \"Precedence predicates are not supported in lexers.\";\n\t} else if (trans.serializationType === Transition.PREDICATE) {\n\t\t// Track traversing semantic predicates. If we traverse,\n\t\t// we cannot add a DFA state for this \"reach\" computation\n\t\t// because the DFA would not test the predicate again in the\n\t\t// future. Rather than creating collections of semantic predicates\n\t\t// like v3 and testing them on prediction, v4 will test them on the\n\t\t// fly all the time using the ATN not the DFA. This is slower but\n\t\t// semantically it's not used that often. One of the key elements to\n\t\t// this predicate mechanism is not adding DFA states that see\n\t\t// predicates immediately afterwards in the ATN. For example,\n\n\t\t// a : ID {p1}? | ID {p2}? ;\n\n\t\t// should create the start state for rule 'a' (to save start state\n\t\t// competition), but should not create target of ID state. The\n\t\t// collection of ATN states the following ID references includes\n\t\t// states reached by traversing predicates. Since this is when we\n\t\t// test them, we cannot cash the DFA state target of ID.\n\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"EVAL rule \" + trans.ruleIndex + \":\" + trans.predIndex);\n\t\t}\n\t\tconfigs.hasSemanticContext = true;\n\t\tif (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {\n\t\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.ACTION) {\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\t// execute actions anywhere in the start rule for a token.\n\t\t\t//\n\t\t\t// TODO: if the entry rule is invoked recursively, some\n\t\t\t// actions may be executed during the recursive call. The\n\t\t\t// problem can appear when hasEmptyPath() is true but\n\t\t\t// isEmpty() is false. In this case, the config needs to be\n\t\t\t// split into two contexts - one with just the empty path\n\t\t\t// and another with everything but the empty path.\n\t\t\t// Unfortunately, the current algorithm does not allow\n\t\t\t// getEpsilonTarget to return two configurations, so\n\t\t\t// additional modifications are needed before we can support\n\t\t\t// the split operation.\n\t\t\tvar lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,\n\t\t\t\t\tthis.atn.lexerActions[trans.actionIndex]);\n\t\t\tcfg = new LexerATNConfig({ state:trans.target, lexerActionExecutor:lexerActionExecutor }, config);\n\t\t} else {\n\t\t\t// ignore actions in referenced rules\n\t\t\tcfg = new LexerATNConfig( { state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.EPSILON) {\n\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t} else if (trans.serializationType === Transition.ATOM ||\n\t\t\t\ttrans.serializationType === Transition.RANGE ||\n\t\t\t\ttrans.serializationType === Transition.SET) {\n\t\tif (treatEofAsEpsilon) {\n\t\t\tif (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\t\t\tcfg = new LexerATNConfig( { state:trans.target }, config);\n\t\t\t}\n\t\t}\n\t}\n\treturn cfg;\n};\n\n// Evaluate a predicate specified in the lexer.\n//\n// <p>If {@code speculative} is {@code true}, this method was called before\n// {@link //consume} for the matched character. This method should call\n// {@link //consume} before evaluating the predicate to ensure position\n// sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},\n// and {@link Lexer//getcolumn}, properly reflect the current\n// lexer state. This method should restore {@code input} and the simulator\n// to the original state before returning (i.e. undo the actions made by the\n// call to {@link //consume}.</p>\n//\n// @param input The input stream.\n// @param ruleIndex The rule containing the predicate.\n// @param predIndex The index of the predicate within the rule.\n// @param speculative {@code true} if the current index in {@code input} is\n// one character before the predicate's location.\n//\n// @return {@code true} if the specified predicate evaluates to\n// {@code true}.\n// /\nLexerATNSimulator.prototype.evaluatePredicate = function(input, ruleIndex,\n\t\tpredIndex, speculative) {\n\t// assume true if no recognizer was provided\n\tif (this.recog === null) {\n\t\treturn true;\n\t}\n\tif (!speculative) {\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t}\n\tvar savedcolumn = this.column;\n\tvar savedLine = this.line;\n\tvar index = input.index;\n\tvar marker = input.mark();\n\ttry {\n\t\tthis.consume(input);\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t} finally {\n\t\tthis.column = savedcolumn;\n\t\tthis.line = savedLine;\n\t\tinput.seek(index);\n\t\tinput.release(marker);\n\t}\n};\n\nLexerATNSimulator.prototype.captureSimState = function(settings, input, dfaState) {\n\tsettings.index = input.index;\n\tsettings.line = this.line;\n\tsettings.column = this.column;\n\tsettings.dfaState = dfaState;\n};\n\nLexerATNSimulator.prototype.addDFAEdge = function(from_, tk, to, cfgs) {\n\tif (to === undefined) {\n\t\tto = null;\n\t}\n\tif (cfgs === undefined) {\n\t\tcfgs = null;\n\t}\n\tif (to === null && cfgs !== null) {\n\t\t// leading to this call, ATNConfigSet.hasSemanticContext is used as a\n\t\t// marker indicating dynamic predicate evaluation makes this edge\n\t\t// dependent on the specific input sequence, so the static edge in the\n\t\t// DFA should be omitted. The target DFAState is still created since\n\t\t// execATN has the ability to resynchronize with the DFA state cache\n\t\t// following the predicate evaluation step.\n\t\t//\n\t\t// TJP notes: next time through the DFA, we see a pred again and eval.\n\t\t// If that gets us to a previously created (but dangling) DFA\n\t\t// state, we can continue in pure DFA mode from there.\n\t\t// /\n\t\tvar suppressEdge = cfgs.hasSemanticContext;\n\t\tcfgs.hasSemanticContext = false;\n\n\t\tto = this.addDFAState(cfgs);\n\n\t\tif (suppressEdge) {\n\t\t\treturn to;\n\t\t}\n\t}\n\t// add the edge\n\tif (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\t// Only track edges within the DFA bounds\n\t\treturn to;\n\t}\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + tk);\n\t}\n\tif (from_.edges === null) {\n\t\t// make room for tokens 1..n and -1 masquerading as index 0\n\t\tfrom_.edges = [];\n\t}\n\tfrom_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect\n\n\treturn to;\n};\n\n// Add a new DFA state if there isn't one with this set of\n// configurations already. This method also detects the first\n// configuration containing an ATN rule stop state. Later, when\n// traversing the DFA, we will know which rule to accept.\nLexerATNSimulator.prototype.addDFAState = function(configs) {\n\tvar proposed = new DFAState(null, configs);\n\tvar firstConfigWithRuleStopState = null;\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tvar cfg = configs.items[i];\n\t\tif (cfg.state instanceof RuleStopState) {\n\t\t\tfirstConfigWithRuleStopState = cfg;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (firstConfigWithRuleStopState !== null) {\n\t\tproposed.isAcceptState = true;\n\t\tproposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;\n\t\tproposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\n\t}\n\tvar dfa = this.decisionToDFA[this.mode];\n\tvar existing = dfa.states.get(proposed);\n\tif (existing!==null) {\n\t\treturn existing;\n\t}\n\tvar newState = proposed;\n\tnewState.stateNumber = dfa.states.length;\n\tconfigs.setReadonly(true);\n\tnewState.configs = configs;\n\tdfa.states.add(newState);\n\treturn newState;\n};\n\nLexerATNSimulator.prototype.getDFA = function(mode) {\n\treturn this.decisionToDFA[mode];\n};\n\n// Get the text matched so far for the current token.\nLexerATNSimulator.prototype.getText = function(input) {\n\t// index is first lookahead char, don't include.\n\treturn input.getText(this.startIndex, input.index - 1);\n};\n\nLexerATNSimulator.prototype.consume = function(input) {\n\tvar curChar = input.LA(1);\n\tif (curChar === \"\\n\".charCodeAt(0)) {\n\t\tthis.line += 1;\n\t\tthis.column = 0;\n\t} else {\n\t\tthis.column += 1;\n\t}\n\tinput.consume();\n};\n\nLexerATNSimulator.prototype.getTokenName = function(tt) {\n\tif (tt === -1) {\n\t\treturn \"EOF\";\n\t} else {\n\t\treturn \"'\" + String.fromCharCode(tt) + \"'\";\n\t}\n};\n\nexports.LexerATNSimulator = LexerATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n //\n\nfunction LexerActionType() {\n}\n\nLexerActionType.CHANNEL = 0; //The type of a {@link LexerChannelAction} action.\nLexerActionType.CUSTOM = 1; //The type of a {@link LexerCustomAction} action.\nLexerActionType.MODE = 2; //The type of a {@link LexerModeAction} action.\nLexerActionType.MORE = 3; //The type of a {@link LexerMoreAction} action.\nLexerActionType.POP_MODE = 4; //The type of a {@link LexerPopModeAction} action.\nLexerActionType.PUSH_MODE = 5; //The type of a {@link LexerPushModeAction} action.\nLexerActionType.SKIP = 6; //The type of a {@link LexerSkipAction} action.\nLexerActionType.TYPE = 7; //The type of a {@link LexerTypeAction} action.\n\nfunction LexerAction(action) {\n this.actionType = action;\n this.isPositionDependent = false;\n return this;\n}\n\nLexerAction.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish()\n};\n\nLexerAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType);\n};\n\nLexerAction.prototype.equals = function(other) {\n return this === other;\n};\n\n\n\n//\n// Implements the {@code skip} lexer action by calling {@link Lexer//skip}.\n//\n// <p>The {@code skip} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerSkipAction() {\n\tLexerAction.call(this, LexerActionType.SKIP);\n\treturn this;\n}\n\nLexerSkipAction.prototype = Object.create(LexerAction.prototype);\nLexerSkipAction.prototype.constructor = LexerSkipAction;\n\n// Provides a singleton instance of this parameterless lexer action.\nLexerSkipAction.INSTANCE = new LexerSkipAction();\n\nLexerSkipAction.prototype.execute = function(lexer) {\n lexer.skip();\n};\n\nLexerSkipAction.prototype.toString = function() {\n\treturn \"skip\";\n};\n\n// Implements the {@code type} lexer action by calling {@link Lexer//setType}\n// with the assigned type.\nfunction LexerTypeAction(type) {\n\tLexerAction.call(this, LexerActionType.TYPE);\n\tthis.type = type;\n\treturn this;\n}\n\nLexerTypeAction.prototype = Object.create(LexerAction.prototype);\nLexerTypeAction.prototype.constructor = LexerTypeAction;\n\nLexerTypeAction.prototype.execute = function(lexer) {\n lexer.type = this.type;\n};\n\nLexerTypeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.type);\n};\n\n\nLexerTypeAction.prototype.equals = function(other) {\n if(this === other) {\n return true;\n } else if (! (other instanceof LexerTypeAction)) {\n return false;\n } else {\n return this.type === other.type;\n }\n};\n\nLexerTypeAction.prototype.toString = function() {\n return \"type(\" + this.type + \")\";\n};\n\n// Implements the {@code pushMode} lexer action by calling\n// {@link Lexer//pushMode} with the assigned mode.\nfunction LexerPushModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.PUSH_MODE);\n this.mode = mode;\n return this;\n}\n\nLexerPushModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPushModeAction.prototype.constructor = LexerPushModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//pushMode} with the\n// value provided by {@link //getMode}.</p>\nLexerPushModeAction.prototype.execute = function(lexer) {\n lexer.pushMode(this.mode);\n};\n\nLexerPushModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerPushModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerPushModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerPushModeAction.prototype.toString = function() {\n\treturn \"pushMode(\" + this.mode + \")\";\n};\n\n\n// Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.\n//\n// <p>The {@code popMode} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerPopModeAction() {\n\tLexerAction.call(this,LexerActionType.POP_MODE);\n\treturn this;\n}\n\nLexerPopModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPopModeAction.prototype.constructor = LexerPopModeAction;\n\nLexerPopModeAction.INSTANCE = new LexerPopModeAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerPopModeAction.prototype.execute = function(lexer) {\n lexer.popMode();\n};\n\nLexerPopModeAction.prototype.toString = function() {\n\treturn \"popMode\";\n};\n\n// Implements the {@code more} lexer action by calling {@link Lexer//more}.\n//\n// <p>The {@code more} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerMoreAction() {\n\tLexerAction.call(this, LexerActionType.MORE);\n\treturn this;\n}\n\nLexerMoreAction.prototype = Object.create(LexerAction.prototype);\nLexerMoreAction.prototype.constructor = LexerMoreAction;\n\nLexerMoreAction.INSTANCE = new LexerMoreAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerMoreAction.prototype.execute = function(lexer) {\n lexer.more();\n};\n\nLexerMoreAction.prototype.toString = function() {\n return \"more\";\n};\n\n\n// Implements the {@code mode} lexer action by calling {@link Lexer//mode} with\n// the assigned mode.\nfunction LexerModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.MODE);\n this.mode = mode;\n return this;\n}\n\nLexerModeAction.prototype = Object.create(LexerAction.prototype);\nLexerModeAction.prototype.constructor = LexerModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//mode} with the\n// value provided by {@link //getMode}.</p>\nLexerModeAction.prototype.execute = function(lexer) {\n lexer.mode(this.mode);\n};\n\nLexerModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerModeAction.prototype.toString = function() {\n return \"mode(\" + this.mode + \")\";\n};\n\n// Executes a custom lexer action by calling {@link Recognizer//action} with the\n// rule and action indexes assigned to the custom action. The implementation of\n// a custom action is added to the generated code for the lexer in an override\n// of {@link Recognizer//action} when the grammar is compiled.\n//\n// <p>This class may represent embedded actions created with the <code>{...}</code>\n// syntax in ANTLR 4, as well as actions created for lexer commands where the\n// command argument could not be evaluated when the grammar was compiled.</p>\n\n\n // Constructs a custom lexer action with the specified rule and action\n // indexes.\n //\n // @param ruleIndex The rule index to use for calls to\n // {@link Recognizer//action}.\n // @param actionIndex The action index to use for calls to\n // {@link Recognizer//action}.\n\nfunction LexerCustomAction(ruleIndex, actionIndex) {\n\tLexerAction.call(this, LexerActionType.CUSTOM);\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerCustomAction.prototype.constructor = LexerCustomAction;\n\n// <p>Custom actions are implemented by calling {@link Lexer//action} with the\n// appropriate rule and action indexes.</p>\nLexerCustomAction.prototype.execute = function(lexer) {\n lexer.action(null, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerCustomAction)) {\n return false;\n } else {\n return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;\n }\n};\n\n// Implements the {@code channel} lexer action by calling\n// {@link Lexer//setChannel} with the assigned channel.\n// Constructs a new {@code channel} action with the specified channel value.\n// @param channel The channel value to pass to {@link Lexer//setChannel}.\nfunction LexerChannelAction(channel) {\n\tLexerAction.call(this, LexerActionType.CHANNEL);\n this.channel = channel;\n return this;\n}\n\nLexerChannelAction.prototype = Object.create(LexerAction.prototype);\nLexerChannelAction.prototype.constructor = LexerChannelAction;\n\n// <p>This action is implemented by calling {@link Lexer//setChannel} with the\n// value provided by {@link //getChannel}.</p>\nLexerChannelAction.prototype.execute = function(lexer) {\n lexer._channel = this.channel;\n};\n\nLexerChannelAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.channel);\n};\n\nLexerChannelAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerChannelAction)) {\n return false;\n } else {\n return this.channel === other.channel;\n }\n};\n\nLexerChannelAction.prototype.toString = function() {\n return \"channel(\" + this.channel + \")\";\n};\n\n// This implementation of {@link LexerAction} is used for tracking input offsets\n// for position-dependent actions within a {@link LexerActionExecutor}.\n//\n// <p>This action is not serialized as part of the ATN, and is only required for\n// position-dependent lexer actions which appear at a location other than the\n// end of a rule. For more information about DFA optimizations employed for\n// lexer actions, see {@link LexerActionExecutor//append} and\n// {@link LexerActionExecutor//fixOffsetBeforeMatch}.</p>\n\n// Constructs a new indexed custom action by associating a character offset\n// with a {@link LexerAction}.\n//\n// <p>Note: This class is only required for lexer actions for which\n// {@link LexerAction//isPositionDependent} returns {@code true}.</p>\n//\n// @param offset The offset into the input {@link CharStream}, relative to\n// the token start index, at which the specified lexer action should be\n// executed.\n// @param action The lexer action to execute at a particular offset in the\n// input {@link CharStream}.\nfunction LexerIndexedCustomAction(offset, action) {\n\tLexerAction.call(this, action.actionType);\n this.offset = offset;\n this.action = action;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerIndexedCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerIndexedCustomAction.prototype.constructor = LexerIndexedCustomAction;\n\n// <p>This method calls {@link //execute} on the result of {@link //getAction}\n// using the provided {@code lexer}.</p>\nLexerIndexedCustomAction.prototype.execute = function(lexer) {\n // assume the input stream position was properly set by the calling code\n this.action.execute(lexer);\n};\n\nLexerIndexedCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.offset, this.action);\n};\n\nLexerIndexedCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerIndexedCustomAction)) {\n return false;\n } else {\n return this.offset === other.offset && this.action === other.action;\n }\n};\n\n\nexports.LexerActionType = LexerActionType;\nexports.LexerSkipAction = LexerSkipAction;\nexports.LexerChannelAction = LexerChannelAction;\nexports.LexerCustomAction = LexerCustomAction;\nexports.LexerIndexedCustomAction = LexerIndexedCustomAction;\nexports.LexerMoreAction = LexerMoreAction;\nexports.LexerTypeAction = LexerTypeAction;\nexports.LexerPushModeAction = LexerPushModeAction;\nexports.LexerPopModeAction = LexerPopModeAction;\nexports.LexerModeAction = LexerModeAction;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents an executor for a sequence of lexer actions which traversed during\n// the matching operation of a lexer rule (token).\n//\n// <p>The executor tracks position information for position-dependent lexer actions\n// efficiently, ensuring that actions appearing only at the end of the rule do\n// not cause bloating of the {@link DFA} created for the lexer.</p>\n\nvar hashStuff = require(\"../Utils\").hashStuff;\nvar LexerIndexedCustomAction = require('./LexerAction').LexerIndexedCustomAction;\n\nfunction LexerActionExecutor(lexerActions) {\n\tthis.lexerActions = lexerActions === null ? [] : lexerActions;\n\t// Caches the result of {@link //hashCode} since the hash code is an element\n\t// of the performance-critical {@link LexerATNConfig//hashCode} operation.\n\tthis.cachedHashCode = hashStuff(lexerActions); // \"\".join([str(la) for la in\n\t// lexerActions]))\n\treturn this;\n}\n\n// Creates a {@link LexerActionExecutor} which executes the actions for\n// the input {@code lexerActionExecutor} followed by a specified\n// {@code lexerAction}.\n//\n// @param lexerActionExecutor The executor for actions already traversed by\n// the lexer while matching a token within a particular\n// {@link LexerATNConfig}. If this is {@code null}, the method behaves as\n// though it were an empty executor.\n// @param lexerAction The lexer action to execute after the actions\n// specified in {@code lexerActionExecutor}.\n//\n// @return A {@link LexerActionExecutor} for executing the combine actions\n// of {@code lexerActionExecutor} and {@code lexerAction}.\nLexerActionExecutor.append = function(lexerActionExecutor, lexerAction) {\n\tif (lexerActionExecutor === null) {\n\t\treturn new LexerActionExecutor([ lexerAction ]);\n\t}\n\tvar lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);\n\treturn new LexerActionExecutor(lexerActions);\n};\n\n// Creates a {@link LexerActionExecutor} which encodes the current offset\n// for position-dependent lexer actions.\n//\n// <p>Normally, when the executor encounters lexer actions where\n// {@link LexerAction//isPositionDependent} returns {@code true}, it calls\n// {@link IntStream//seek} on the input {@link CharStream} to set the input\n// position to the <em>end</em> of the current token. This behavior provides\n// for efficient DFA representation of lexer actions which appear at the end\n// of a lexer rule, even when the lexer rule matches a variable number of\n// characters.</p>\n//\n// <p>Prior to traversing a match transition in the ATN, the current offset\n// from the token start index is assigned to all position-dependent lexer\n// actions which have not already been assigned a fixed offset. By storing\n// the offsets relative to the token start index, the DFA representation of\n// lexer actions which appear in the middle of tokens remains efficient due\n// to sharing among tokens of the same length, regardless of their absolute\n// position in the input stream.</p>\n//\n// <p>If the current executor already has offsets assigned to all\n// position-dependent lexer actions, the method returns {@code this}.</p>\n//\n// @param offset The current offset to assign to all position-dependent\n// lexer actions which do not already have offsets assigned.\n//\n// @return A {@link LexerActionExecutor} which stores input stream offsets\n// for all position-dependent lexer actions.\n// /\nLexerActionExecutor.prototype.fixOffsetBeforeMatch = function(offset) {\n\tvar updatedLexerActions = null;\n\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\tif (this.lexerActions[i].isPositionDependent &&\n\t\t\t\t!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {\n\t\t\tif (updatedLexerActions === null) {\n\t\t\t\tupdatedLexerActions = this.lexerActions.concat([]);\n\t\t\t}\n\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset,\n\t\t\t\t\tthis.lexerActions[i]);\n\t\t}\n\t}\n\tif (updatedLexerActions === null) {\n\t\treturn this;\n\t} else {\n\t\treturn new LexerActionExecutor(updatedLexerActions);\n\t}\n};\n\n// Execute the actions encapsulated by this executor within the context of a\n// particular {@link Lexer}.\n//\n// <p>This method calls {@link IntStream//seek} to set the position of the\n// {@code input} {@link CharStream} prior to calling\n// {@link LexerAction//execute} on a position-dependent action. Before the\n// method returns, the input position will be restored to the same position\n// it was in when the method was invoked.</p>\n//\n// @param lexer The lexer instance.\n// @param input The input stream which is the source for the current token.\n// When this method is called, the current {@link IntStream//index} for\n// {@code input} should be the start of the following token, i.e. 1\n// character past the end of the current token.\n// @param startIndex The token start index. This value may be passed to\n// {@link IntStream//seek} to set the {@code input} position to the beginning\n// of the token.\n// /\nLexerActionExecutor.prototype.execute = function(lexer, input, startIndex) {\n\tvar requiresSeek = false;\n\tvar stopIndex = input.index;\n\ttry {\n\t\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\t\tvar lexerAction = this.lexerActions[i];\n\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\n\t\t\t\tvar offset = lexerAction.offset;\n\t\t\t\tinput.seek(startIndex + offset);\n\t\t\t\tlexerAction = lexerAction.action;\n\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\n\t\t\t} else if (lexerAction.isPositionDependent) {\n\t\t\t\tinput.seek(stopIndex);\n\t\t\t\trequiresSeek = false;\n\t\t\t}\n\t\t\tlexerAction.execute(lexer);\n\t\t}\n\t} finally {\n\t\tif (requiresSeek) {\n\t\t\tinput.seek(stopIndex);\n\t\t}\n\t}\n};\n\nLexerActionExecutor.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\nLexerActionExecutor.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n\n\nLexerActionExecutor.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof LexerActionExecutor)) {\n\t\treturn false;\n\t} else if (this.cachedHashCode != other.cachedHashCode) {\n\t\treturn false;\n\t} else if (this.lexerActions.length != other.lexerActions.length) {\n\t\treturn false;\n\t} else {\n\t\tvar numActions = this.lexerActions.length\n\t\tfor (var idx = 0; idx < numActions; ++idx) {\n\t\t\tif (!this.lexerActions[idx].equals(other.lexerActions[idx])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n};\n\nexports.LexerActionExecutor = LexerActionExecutor;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\n//\n// <p>\n// The basic complexity of the adaptive strategy makes it harder to understand.\n// We begin with ATN simulation to build paths in a DFA. Subsequent prediction\n// requests go through the DFA first. If they reach a state without an edge for\n// the current symbol, the algorithm fails over to the ATN simulation to\n// complete the DFA path for the current input (until it finds a conflict state\n// or uniquely predicting state).</p>\n//\n// <p>\n// All of that is done without using the outer context because we want to create\n// a DFA that is not dependent upon the rule invocation stack when we do a\n// prediction. One DFA works in all contexts. We avoid using context not\n// necessarily because it's slower, although it can be, but because of the DFA\n// caching problem. The closure routine only considers the rule invocation stack\n// created during prediction beginning in the decision rule. For example, if\n// prediction occurs without invoking another rule's ATN, there are no context\n// stacks in the configurations. When lack of context leads to a conflict, we\n// don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\n// strategy (versus full LL(*)).</p>\n//\n// <p>\n// When SLL yields a configuration set with conflict, we rewind the input and\n// retry the ATN simulation, this time using full outer context without adding\n// to the DFA. Configuration context stacks will be the full invocation stacks\n// from the start rule. If we get a conflict using full context, then we can\n// definitively say we have a true ambiguity for that input sequence. If we\n// don't get a conflict, it implies that the decision is sensitive to the outer\n// context. (It is not context-sensitive in the sense of context-sensitive\n// grammars.)</p>\n//\n// <p>\n// The next time we reach this DFA state with an SLL conflict, through DFA\n// simulation, we will again retry the ATN simulation using full context mode.\n// This is slow because we can't save the results and have to \"interpret\" the\n// ATN each time we get that input.</p>\n//\n// <p>\n// <strong>CACHING FULL CONTEXT PREDICTIONS</strong></p>\n//\n// <p>\n// We could cache results from full context to predicted alternative easily and\n// that saves a lot of time but doesn't work in presence of predicates. The set\n// of visible predicates from the ATN start state changes depending on the\n// context, because closure can fall off the end of a rule. I tried to cache\n// tuples (stack context, semantic context, predicted alt) but it was slower\n// than interpreting and much more complicated. Also required a huge amount of\n// memory. The goal is not to create the world's fastest parser anyway. I'd like\n// to keep this algorithm simple. By launching multiple threads, we can improve\n// the speed of parsing across a large number of files.</p>\n//\n// <p>\n// There is no strict ordering between the amount of input used by SLL vs LL,\n// which makes it really hard to build a cache for full context. Let's say that\n// we have input A B C that leads to an SLL conflict with full context X. That\n// implies that using X we might only use A B but we could also use A B C D to\n// resolve conflict. Input A B C D could predict alternative 1 in one position\n// in the input and A B C E could predict alternative 2 in another position in\n// input. The conflicting SLL configurations could still be non-unique in the\n// full context prediction, which would lead us to requiring more input than the\n// original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\n// input\tused during the previous prediction. That amounts to a cache that maps\n// X to a specific DFA for that context.</p>\n//\n// <p>\n// Something should be done for left-recursive expression predictions. They are\n// likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\n// with full LL thing Sam does.</p>\n//\n// <p>\n// <strong>AVOIDING FULL CONTEXT PREDICTION</strong></p>\n//\n// <p>\n// We avoid doing full context retry when the outer context is empty, we did not\n// dip into the outer context by falling off the end of the decision state rule,\n// or when we force SLL mode.</p>\n//\n// <p>\n// As an example of the not dip into outer context case, consider as super\n// constructor calls versus function calls. One grammar might look like\n// this:</p>\n//\n// <pre>\n// ctorBody\n// : '{' superCall? stat* '}'\n// ;\n// </pre>\n//\n// <p>\n// Or, you might see something like</p>\n//\n// <pre>\n// stat\n// : superCall ';'\n// | expression ';'\n// | ...\n// ;\n// </pre>\n//\n// <p>\n// In both cases I believe that no closure operations will dip into the outer\n// context. In the first case ctorBody in the worst case will stop at the '}'.\n// In the 2nd case it should stop at the ';'. Both cases should stay within the\n// entry rule and not dip into the outer context.</p>\n//\n// <p>\n// <strong>PREDICATES</strong></p>\n//\n// <p>\n// Predicates are always evaluated if present in either SLL or LL both. SLL and\n// LL simulation deals with predicates differently. SLL collects predicates as\n// it performs closure operations like ANTLR v3 did. It delays predicate\n// evaluation until it reaches and accept state. This allows us to cache the SLL\n// ATN simulation whereas, if we had evaluated predicates on-the-fly during\n// closure, the DFA state configuration sets would be different and we couldn't\n// build up a suitable DFA.</p>\n//\n// <p>\n// When building a DFA accept state during ATN simulation, we evaluate any\n// predicates and return the sole semantically valid alternative. If there is\n// more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\n// we throw an exception. Alternatives without predicates act like they have\n// true predicates. The simple way to think about it is to strip away all\n// alternatives with false predicates and choose the minimum alternative that\n// remains.</p>\n//\n// <p>\n// When we start in the DFA and reach an accept state that's predicated, we test\n// those and return the minimum semantically viable alternative. If no\n// alternatives are viable, we throw an exception.</p>\n//\n// <p>\n// During full LL ATN simulation, closure always evaluates predicates and\n// on-the-fly. This is crucial to reducing the configuration set size during\n// closure. It hits a landmine when parsing with the Java grammar, for example,\n// without this on-the-fly evaluation.</p>\n//\n// <p>\n// <strong>SHARING DFA</strong></p>\n//\n// <p>\n// All instances of the same parser share the same decision DFAs through a\n// static field. Each instance gets its own ATN simulator but they share the\n// same {@link //decisionToDFA} field. They also share a\n// {@link PredictionContextCache} object that makes sure that all\n// {@link PredictionContext} objects are shared among the DFA states. This makes\n// a big size difference.</p>\n//\n// <p>\n// <strong>THREAD SAFETY</strong></p>\n//\n// <p>\n// The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when\n// it adds a new DFA object to that array. {@link //addDFAEdge}\n// locks on the DFA for the current decision when setting the\n// {@link DFAState//edges} field. {@link //addDFAState} locks on\n// the DFA for the current decision when looking up a DFA state to see if it\n// already exists. We must make sure that all requests to add DFA states that\n// are equivalent result in the same shared DFA object. This is because lots of\n// threads will be trying to update the DFA at once. The\n// {@link //addDFAState} method also locks inside the DFA lock\n// but this time on the shared context cache when it rebuilds the\n// configurations' {@link PredictionContext} objects using cached\n// subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\n// safe as long as we can guarantee that all threads referencing\n// {@code s.edge[t]} get the same physical target {@link DFAState}, or\n// {@code null}. Once into the DFA, the DFA simulation does not reference the\n// {@link DFA//states} map. It follows the {@link DFAState//edges} field to new\n// targets. The DFA simulator will either find {@link DFAState//edges} to be\n// {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or\n// {@code dfa.edges[t]} to be non-null. The\n// {@link //addDFAEdge} method could be racing to set the field\n// but in either case the DFA simulator works; if {@code null}, and requests ATN\n// simulation. It could also race trying to get {@code dfa.edges[t]}, but either\n// way it will work because it's not doing a test and set operation.</p>\n//\n// <p>\n// <strong>Starting with SLL then failing to combined SLL/LL (Two-Stage\n// Parsing)</strong></p>\n//\n// <p>\n// Sam pointed out that if SLL does not give a syntax error, then there is no\n// point in doing full LL, which is slower. We only have to try LL if we get a\n// syntax error. For maximum speed, Sam starts the parser set to pure SLL\n// mode with the {@link BailErrorStrategy}:</p>\n//\n// <pre>\n// parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};\n// parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\n// </pre>\n//\n// <p>\n// If it does not get a syntax error, then we're done. If it does get a syntax\n// error, we need to retry with the combined SLL/LL strategy.</p>\n//\n// <p>\n// The reason this works is as follows. If there are no SLL conflicts, then the\n// grammar is SLL (at least for that input set). If there is an SLL conflict,\n// the full LL analysis must yield a set of viable alternatives which is a\n// subset of the alternatives reported by SLL. If the LL set is a singleton,\n// then the grammar is LL but not SLL. If the LL set is the same size as the SLL\n// set, the decision is SLL. If the LL set has size &gt; 1, then that decision\n// is truly ambiguous on the current input. If the LL set is smaller, then the\n// SLL conflict resolution might choose an alternative that the full LL would\n// rule out as a possibility based upon better context information. If that's\n// the case, then the SLL parse will definitely get an error because the full LL\n// analysis says it's not viable. If SLL conflict resolution chooses an\n// alternative within the LL set, them both SLL and LL would choose the same\n// alternative because they both choose the minimum of multiple conflicting\n// alternatives.</p>\n//\n// <p>\n// Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and\n// a smaller LL set called <em>s</em>. If <em>s</em> is {@code {2, 3}}, then SLL\n// parsing will get an error because SLL will pursue alternative 1. If\n// <em>s</em> is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will\n// choose the same alternative because alternative one is the minimum of either\n// set. If <em>s</em> is {@code {2}} or {@code {3}} then SLL will get a syntax\n// error. If <em>s</em> is {@code {1}} then SLL will succeed.</p>\n//\n// <p>\n// Of course, if the input is invalid, then we will get an error for sure in\n// both SLL and LL parsing. Erroneous input will therefore require 2 passes over\n// the input.</p>\n//\n\nvar Utils = require('./../Utils');\nvar Set = Utils.Set;\nvar BitSet = Utils.BitSet;\nvar DoubleDict = Utils.DoubleDict;\nvar ATN = require('./ATN').ATN;\nvar ATNState = require('./ATNState').ATNState;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar Token = require('./../Token').Token;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar PredPrediction = require('./../dfa/DFAState').PredPrediction;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar PredictionMode = require('./PredictionMode').PredictionMode;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar StarLoopEntryState = require('./ATNState').StarLoopEntryState;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar Interval = require('./../IntervalSet').Interval;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar NoViableAltException = require('./../error/Errors').NoViableAltException;\n\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar predictionContextFromRuleContext = require('./../PredictionContext').predictionContextFromRuleContext;\n\nfunction ParserATNSimulator(parser, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n this.parser = parser;\n this.decisionToDFA = decisionToDFA;\n // SLL, LL, or LL + exact ambig detection?//\n this.predictionMode = PredictionMode.LL;\n // LAME globals to avoid parameters!!!!! I need these down deep in predTransition\n this._input = null;\n this._startIndex = 0;\n this._outerContext = null;\n this._dfa = null;\n // Each prediction operation uses a cache for merge of prediction contexts.\n // Don't keep around as it wastes huge amounts of memory. DoubleKeyMap\n // isn't synchronized but we're ok since two threads shouldn't reuse same\n // parser/atnsim object because it can only handle one input at a time.\n // This maps graphs a and b to merged result c. (a,b)&rarr;c. We can avoid\n // the merge if we ever see a and b again. Note that (b,a)&rarr;c should\n // also be examined during cache lookup.\n //\n this.mergeCache = null;\n return this;\n}\n\nParserATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nParserATNSimulator.prototype.constructor = ParserATNSimulator;\n\nParserATNSimulator.prototype.debug = false;\nParserATNSimulator.prototype.debug_closure = false;\nParserATNSimulator.prototype.debug_add = false;\nParserATNSimulator.prototype.debug_list_atn_decisions = false;\nParserATNSimulator.prototype.dfa_debug = false;\nParserATNSimulator.prototype.retry_debug = false;\n\n\nParserATNSimulator.prototype.reset = function() {\n};\n\nParserATNSimulator.prototype.adaptivePredict = function(input, decision, outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"adaptivePredict decision \" + decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" +\n input.LT(1).column);\n }\n this._input = input;\n this._startIndex = input.index;\n this._outerContext = outerContext;\n\n var dfa = this.decisionToDFA[decision];\n this._dfa = dfa;\n var m = input.mark();\n var index = input.index;\n\n // Now we are certain to have a specific decision's DFA\n // But, do we still need an initial state?\n try {\n var s0;\n if (dfa.precedenceDfa) {\n // the start state for a precedence DFA depends on the current\n // parser precedence, and is provided by a DFA method.\n s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());\n } else {\n // the start state for a \"regular\" DFA is just s0\n s0 = dfa.s0;\n }\n if (s0===null) {\n if (outerContext===null) {\n outerContext = RuleContext.EMPTY;\n }\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"predictATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \", outerContext=\" + outerContext.toString(this.parser.ruleNames));\n }\n\n var fullCtx = false;\n var s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);\n\n if( dfa.precedenceDfa) {\n // If this is a precedence DFA, we use applyPrecedenceFilter\n // to convert the computed start state to a precedence start\n // state. We then use DFA.setPrecedenceStartState to set the\n // appropriate start state for the precedence level rather\n // than simply setting DFA.s0.\n //\n dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway\n s0_closure = this.applyPrecedenceFilter(s0_closure);\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);\n } else {\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.s0 = s0;\n }\n }\n var alt = this.execATN(dfa, s0, input, index, outerContext);\n if (this.debug) {\n console.log(\"DFA after predictATN: \" + dfa.toString(this.parser.literalNames));\n }\n return alt;\n } finally {\n this._dfa = null;\n this.mergeCache = null; // wack cache after each prediction\n input.seek(index);\n input.release(m);\n }\n};\n// Performs ATN simulation to compute a predicted alternative based\n// upon the remaining input, but also updates the DFA cache to avoid\n// having to traverse the ATN again for the same input sequence.\n\n// There are some key conditions we're looking for after computing a new\n// set of ATN configs (proposed DFA state):\n // if the set is empty, there is no viable alternative for current symbol\n // does the state uniquely predict an alternative?\n // does the state have a conflict that would prevent us from\n // putting it on the work list?\n\n// We also have some key operations to do:\n // add an edge from previous DFA state to potentially new DFA state, D,\n // upon current symbol but only if adding to work list, which means in all\n // cases except no viable alternative (and possibly non-greedy decisions?)\n // collecting predicates and adding semantic context to DFA accept states\n // adding rule context to context-sensitive DFA accept states\n // consuming an input symbol\n // reporting a conflict\n // reporting an ambiguity\n // reporting a context sensitivity\n // reporting insufficient predicates\n\n// cover these cases:\n// dead end\n// single alt\n// single alt + preds\n// conflict\n// conflict + preds\n//\nParserATNSimulator.prototype.execATN = function(dfa, s0, input, startIndex, outerContext ) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" + input.LT(1).column);\n }\n var alt;\n var previousD = s0;\n\n if (this.debug) {\n console.log(\"s0 = \" + s0);\n }\n var t = input.LA(1);\n while(true) { // while more work\n var D = this.getExistingTargetState(previousD, t);\n if(D===null) {\n D = this.computeTargetState(dfa, previousD, t);\n }\n if(D===ATNSimulator.ERROR) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for SLL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);\n input.seek(startIndex);\n alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {\n // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)\n var conflictingAlts = null;\n if (D.predicates!==null) {\n if (this.debug) {\n console.log(\"DFA state has preds in DFA sim LL failover\");\n }\n var conflictIndex = input.index;\n if(conflictIndex !== startIndex) {\n input.seek(startIndex);\n }\n conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (conflictingAlts.length===1) {\n if(this.debug) {\n console.log(\"Full LL avoided\");\n }\n return conflictingAlts.minValue();\n }\n if (conflictIndex !== startIndex) {\n // restore the index so reporting the fallback to full\n // context occurs with the index at the correct spot\n input.seek(conflictIndex);\n }\n }\n if (this.dfa_debug) {\n console.log(\"ctx sensitive state \" + outerContext +\" in \" + D);\n }\n var fullCtx = true;\n var s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);\n this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);\n alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);\n return alt;\n }\n if (D.isAcceptState) {\n if (D.predicates===null) {\n return D.prediction;\n }\n var stopIndex = input.index;\n input.seek(startIndex);\n var alts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (alts.length===0) {\n throw this.noViableAlt(input, outerContext, D.configs, startIndex);\n } else if (alts.length===1) {\n return alts.minValue();\n } else {\n // report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.\n this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);\n return alts.minValue();\n }\n }\n previousD = D;\n\n if (t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n};\n//\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param previousD The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\n//\nParserATNSimulator.prototype.getExistingTargetState = function(previousD, t) {\n var edges = previousD.edges;\n if (edges===null) {\n return null;\n } else {\n return edges[t + 1] || null;\n }\n};\n//\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param dfa The DFA\n// @param previousD The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\n//\nParserATNSimulator.prototype.computeTargetState = function(dfa, previousD, t) {\n var reach = this.computeReachSet(previousD.configs, t, false);\n if(reach===null) {\n this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);\n return ATNSimulator.ERROR;\n }\n // create new target state; we'll add to DFA after it's complete\n var D = new DFAState(null, reach);\n\n var predictedAlt = this.getUniqueAlt(reach);\n\n if (this.debug) {\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n console.log(\"SLL altSubSets=\" + Utils.arrayToString(altSubSets) +\n \", previous=\" + previousD.configs +\n \", configs=\" + reach +\n \", predict=\" + predictedAlt +\n \", allSubsetsConflict=\" +\n PredictionMode.allSubsetsConflict(altSubSets) + \", conflictingAlts=\" +\n this.getConflictingAlts(reach));\n }\n if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {\n // NO CONFLICT, UNIQUELY PREDICTED ALT\n D.isAcceptState = true;\n D.configs.uniqueAlt = predictedAlt;\n D.prediction = predictedAlt;\n } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {\n // MORE THAN ONE VIABLE ALTERNATIVE\n D.configs.conflictingAlts = this.getConflictingAlts(reach);\n D.requiresFullContext = true;\n // in SLL-only mode, we will stop at this state and return the minimum alt\n D.isAcceptState = true;\n D.prediction = D.configs.conflictingAlts.minValue();\n }\n if (D.isAcceptState && D.configs.hasSemanticContext) {\n this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));\n if( D.predicates!==null) {\n D.prediction = ATN.INVALID_ALT_NUMBER;\n }\n }\n // all adds to dfa are done after we've created full D state\n D = this.addDFAEdge(dfa, previousD, t, D);\n return D;\n};\n\nParserATNSimulator.prototype.predicateDFAState = function(dfaState, decisionState) {\n // We need to test all predicates, even in DFA states that\n // uniquely predict alternative.\n var nalts = decisionState.transitions.length;\n // Update DFA so reach becomes accept state with (predicate,alt)\n // pairs if preds found for conflicting alts\n var altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);\n var altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);\n if (altToPred!==null) {\n dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);\n dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds\n } else {\n // There are preds in configs but they might go away\n // when OR'd together like {p}? || NONE == NONE. If neither\n // alt has preds, resolve to min alt\n dfaState.prediction = altsToCollectPredsFrom.minValue();\n }\n};\n\n// comes back with reach.uniqueAlt set to a valid alt\nParserATNSimulator.prototype.execATNWithFullContext = function(dfa, D, // how far we got before failing over\n s0,\n input,\n startIndex,\n outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATNWithFullContext \"+s0);\n }\n var fullCtx = true;\n var foundExactAmbig = false;\n var reach = null;\n var previous = s0;\n input.seek(startIndex);\n var t = input.LA(1);\n var predictedAlt = -1;\n while (true) { // while more work\n reach = this.computeReachSet(previous, t, fullCtx);\n if (reach===null) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for LL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previous, startIndex);\n input.seek(startIndex);\n var alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n if(this.debug) {\n console.log(\"LL altSubSets=\" + altSubSets + \", predict=\" +\n PredictionMode.getUniqueAlt(altSubSets) + \", resolvesToJustOneViableAlt=\" +\n PredictionMode.resolvesToJustOneViableAlt(altSubSets));\n }\n reach.uniqueAlt = this.getUniqueAlt(reach);\n // unique prediction?\n if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {\n predictedAlt = reach.uniqueAlt;\n break;\n } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {\n predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);\n if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {\n break;\n }\n } else {\n // In exact ambiguity mode, we never try to terminate early.\n // Just keeps scarfing until we know what the conflict is\n if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {\n foundExactAmbig = true;\n predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);\n break;\n }\n // else there are multiple non-conflicting subsets or\n // we're not sure what the ambiguity is yet.\n // So, keep going.\n }\n previous = reach;\n if( t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n // If the configuration set uniquely predicts an alternative,\n // without conflict, then we know that it's a full LL decision\n // not SLL.\n if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {\n this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);\n return predictedAlt;\n }\n // We do not check predicates here because we have checked them\n // on-the-fly when doing full context prediction.\n\n //\n // In non-exact ambiguity detection mode, we might\tactually be able to\n // detect an exact ambiguity, but I'm not going to spend the cycles\n // needed to check. We only emit ambiguity warnings in exact ambiguity\n // mode.\n //\n // For example, we might know that we have conflicting configurations.\n // But, that does not mean that there is no way forward without a\n // conflict. It's possible to have nonconflicting alt subsets as in:\n\n // altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]\n\n // from\n //\n // [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),\n // (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]\n //\n // In this case, (17,1,[5 $]) indicates there is some next sequence that\n // would resolve this without conflict to alternative 1. Any other viable\n // next sequence, however, is associated with a conflict. We stop\n // looking for input because no amount of further lookahead will alter\n // the fact that we should predict alternative 1. We just can't say for\n // sure that there is an ambiguity without looking further.\n\n this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);\n\n return predictedAlt;\n};\n\nParserATNSimulator.prototype.computeReachSet = function(closure, t, fullCtx) {\n if (this.debug) {\n console.log(\"in computeReachSet, starting closure: \" + closure);\n }\n if( this.mergeCache===null) {\n this.mergeCache = new DoubleDict();\n }\n var intermediate = new ATNConfigSet(fullCtx);\n\n // Configurations already in a rule stop state indicate reaching the end\n // of the decision rule (local context) or end of the start rule (full\n // context). Once reached, these configurations are never updated by a\n // closure operation, so they are handled separately for the performance\n // advantage of having a smaller intermediate set when calling closure.\n //\n // For full-context reach operations, separate handling is required to\n // ensure that the alternative matching the longest overall sequence is\n // chosen when multiple such configurations can match the input.\n\n var skippedStopStates = null;\n\n // First figure out where we can reach on input t\n for (var i=0; i<closure.items.length;i++) {\n var c = closure.items[i];\n if(this.debug_add) {\n console.log(\"testing \" + this.getTokenName(t) + \" at \" + c);\n }\n if (c.state instanceof RuleStopState) {\n if (fullCtx || t === Token.EOF) {\n if (skippedStopStates===null) {\n skippedStopStates = [];\n }\n skippedStopStates.push(c);\n if(this.debug_add) {\n console.log(\"added \" + c + \" to skippedStopStates\");\n }\n }\n continue;\n }\n for(var j=0;j<c.state.transitions.length;j++) {\n var trans = c.state.transitions[j];\n var target = this.getReachableTarget(trans, t);\n if (target!==null) {\n var cfg = new ATNConfig({state:target}, c);\n intermediate.add(cfg, this.mergeCache);\n if(this.debug_add) {\n console.log(\"added \" + cfg + \" to intermediate\");\n }\n }\n }\n }\n // Now figure out where the reach operation can take us...\n var reach = null;\n\n // This block optimizes the reach operation for intermediate sets which\n // trivially indicate a termination state for the overall\n // adaptivePredict operation.\n //\n // The conditions assume that intermediate\n // contains all configurations relevant to the reach set, but this\n // condition is not true when one or more configurations have been\n // withheld in skippedStopStates, or when the current symbol is EOF.\n //\n if (skippedStopStates===null && t!==Token.EOF) {\n if (intermediate.items.length===1) {\n // Don't pursue the closure if there is just one state.\n // It can only have one alternative; just add to result\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n } else if (this.getUniqueAlt(intermediate)!==ATN.INVALID_ALT_NUMBER) {\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n }\n }\n // If the reach set could not be trivially determined, perform a closure\n // operation on the intermediate set to compute its initial value.\n //\n if (reach===null) {\n reach = new ATNConfigSet(fullCtx);\n var closureBusy = new Set();\n var treatEofAsEpsilon = t === Token.EOF;\n for (var k=0; k<intermediate.items.length;k++) {\n this.closure(intermediate.items[k], reach, closureBusy, false, fullCtx, treatEofAsEpsilon);\n }\n }\n if (t === Token.EOF) {\n // After consuming EOF no additional input is possible, so we are\n // only interested in configurations which reached the end of the\n // decision rule (local context) or end of the start rule (full\n // context). Update reach to contain only these configurations. This\n // handles both explicit EOF transitions in the grammar and implicit\n // EOF transitions following the end of the decision or start rule.\n //\n // When reach==intermediate, no closure operation was performed. In\n // this case, removeAllConfigsNotInRuleStopState needs to check for\n // reachable rule stop states as well as configurations already in\n // a rule stop state.\n //\n // This is handled before the configurations in skippedStopStates,\n // because any configurations potentially added from that list are\n // already guaranteed to meet this condition whether or not it's\n // required.\n //\n reach = this.removeAllConfigsNotInRuleStopState(reach, reach === intermediate);\n }\n // If skippedStopStates!==null, then it contains at least one\n // configuration. For full-context reach operations, these\n // configurations reached the end of the start rule, in which case we\n // only add them back to reach if no configuration during the current\n // closure operation reached such a state. This ensures adaptivePredict\n // chooses an alternative matching the longest overall sequence when\n // multiple alternatives are viable.\n //\n if (skippedStopStates!==null && ( (! fullCtx) || (! PredictionMode.hasConfigInRuleStopState(reach)))) {\n for (var l=0; l<skippedStopStates.length;l++) {\n reach.add(skippedStopStates[l], this.mergeCache);\n }\n }\n if (reach.items.length===0) {\n return null;\n } else {\n return reach;\n }\n};\n//\n// Return a configuration set containing only the configurations from\n// {@code configs} which are in a {@link RuleStopState}. If all\n// configurations in {@code configs} are already in a rule stop state, this\n// method simply returns {@code configs}.\n//\n// <p>When {@code lookToEndOfRule} is true, this method uses\n// {@link ATN//nextTokens} for each configuration in {@code configs} which is\n// not already in a rule stop state to see if a rule stop state is reachable\n// from the configuration via epsilon-only transitions.</p>\n//\n// @param configs the configuration set to update\n// @param lookToEndOfRule when true, this method checks for rule stop states\n// reachable by epsilon-only transitions from each configuration in\n// {@code configs}.\n//\n// @return {@code configs} if all configurations in {@code configs} are in a\n// rule stop state, otherwise return a new configuration set containing only\n// the configurations from {@code configs} which are in a rule stop state\n//\nParserATNSimulator.prototype.removeAllConfigsNotInRuleStopState = function(configs, lookToEndOfRule) {\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return configs;\n }\n var result = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length;i++) {\n var config = configs.items[i];\n if (config.state instanceof RuleStopState) {\n result.add(config, this.mergeCache);\n continue;\n }\n if (lookToEndOfRule && config.state.epsilonOnlyTransitions) {\n var nextTokens = this.atn.nextTokens(config.state);\n if (nextTokens.contains(Token.EPSILON)) {\n var endOfRuleState = this.atn.ruleToStopState[config.state.ruleIndex];\n result.add(new ATNConfig({state:endOfRuleState}, config), this.mergeCache);\n }\n }\n }\n return result;\n};\n\nParserATNSimulator.prototype.computeStartState = function(p, ctx, fullCtx) {\n // always at least the implicit call to start rule\n var initialContext = predictionContextFromRuleContext(this.atn, ctx);\n var configs = new ATNConfigSet(fullCtx);\n for(var i=0;i<p.transitions.length;i++) {\n var target = p.transitions[i].target;\n var c = new ATNConfig({ state:target, alt:i+1, context:initialContext }, null);\n var closureBusy = new Set();\n this.closure(c, configs, closureBusy, true, fullCtx, false);\n }\n return configs;\n};\n\n//\n// This method transforms the start state computed by\n// {@link //computeStartState} to the special start state used by a\n// precedence DFA for a particular precedence value. The transformation\n// process applies the following changes to the start state's configuration\n// set.\n//\n// <ol>\n// <li>Evaluate the precedence predicates for each configuration using\n// {@link SemanticContext//evalPrecedence}.</li>\n// <li>Remove all configurations which predict an alternative greater than\n// 1, for which another configuration that predicts alternative 1 is in the\n// same ATN state with the same prediction context. This transformation is\n// valid for the following reasons:\n// <ul>\n// <li>The closure block cannot contain any epsilon transitions which bypass\n// the body of the closure, so all states reachable via alternative 1 are\n// part of the precedence alternatives of the transformed left-recursive\n// rule.</li>\n// <li>The \"primary\" portion of a left recursive rule cannot contain an\n// epsilon transition, so the only way an alternative other than 1 can exist\n// in a state that is also reachable via alternative 1 is by nesting calls\n// to the left-recursive rule, with the outer calls not being at the\n// preferred precedence level.</li>\n// </ul>\n// </li>\n// </ol>\n//\n// <p>\n// The prediction context must be considered by this filter to address\n// situations like the following.\n// </p>\n// <code>\n// <pre>\n// grammar TA;\n// prog: statement* EOF;\n// statement: letterA | statement letterA 'b' ;\n// letterA: 'a';\n// </pre>\n// </code>\n// <p>\n// If the above grammar, the ATN state immediately before the token\n// reference {@code 'a'} in {@code letterA} is reachable from the left edge\n// of both the primary and closure blocks of the left-recursive rule\n// {@code statement}. The prediction context associated with each of these\n// configurations distinguishes between them, and prevents the alternative\n// which stepped out to {@code prog} (and then back in to {@code statement}\n// from being eliminated by the filter.\n// </p>\n//\n// @param configs The configuration set computed by\n// {@link //computeStartState} as the start state for the DFA.\n// @return The transformed configuration set representing the start state\n// for a precedence DFA at a particular precedence level (determined by\n// calling {@link Parser//getPrecedence}).\n//\nParserATNSimulator.prototype.applyPrecedenceFilter = function(configs) {\n\tvar config;\n\tvar statesFromAlt1 = [];\n var configSet = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n // handle alt 1 first\n if (config.alt !== 1) {\n continue;\n }\n var updatedContext = config.semanticContext.evalPrecedence(this.parser, this._outerContext);\n if (updatedContext===null) {\n // the configuration was eliminated\n continue;\n }\n statesFromAlt1[config.state.stateNumber] = config.context;\n if (updatedContext !== config.semanticContext) {\n configSet.add(new ATNConfig({semanticContext:updatedContext}, config), this.mergeCache);\n } else {\n configSet.add(config, this.mergeCache);\n }\n }\n for(i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n if (config.alt === 1) {\n // already handled\n continue;\n }\n // In the future, this elimination step could be updated to also\n // filter the prediction context for alternatives predicting alt>1\n // (basically a graph subtraction algorithm).\n\t\tif (!config.precedenceFilterSuppressed) {\n var context = statesFromAlt1[config.state.stateNumber] || null;\n if (context!==null && context.equals(config.context)) {\n // eliminated\n continue;\n }\n\t\t}\n configSet.add(config, this.mergeCache);\n }\n return configSet;\n};\n\nParserATNSimulator.prototype.getReachableTarget = function(trans, ttype) {\n if (trans.matches(ttype, 0, this.atn.maxTokenType)) {\n return trans.target;\n } else {\n return null;\n }\n};\n\nParserATNSimulator.prototype.getPredsForAmbigAlts = function(ambigAlts, configs, nalts) {\n // REACH=[1|1|[]|0:0, 1|2|[]|0:1]\n // altToPred starts as an array of all null contexts. The entry at index i\n // corresponds to alternative i. altToPred[i] may have one of three values:\n // 1. null: no ATNConfig c is found such that c.alt==i\n // 2. SemanticContext.NONE: At least one ATNConfig c exists such that\n // c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,\n // alt i has at least one unpredicated config.\n // 3. Non-NONE Semantic Context: There exists at least one, and for all\n // ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.\n //\n // From this, it is clear that NONE||anything==NONE.\n //\n var altToPred = [];\n for(var i=0;i<configs.items.length;i++) {\n var c = configs.items[i];\n if(ambigAlts.contains( c.alt )) {\n altToPred[c.alt] = SemanticContext.orContext(altToPred[c.alt] || null, c.semanticContext);\n }\n }\n var nPredAlts = 0;\n for (i =1;i< nalts+1;i++) {\n var pred = altToPred[i] || null;\n if (pred===null) {\n altToPred[i] = SemanticContext.NONE;\n } else if (pred !== SemanticContext.NONE) {\n nPredAlts += 1;\n }\n }\n // nonambig alts are null in altToPred\n if (nPredAlts===0) {\n altToPred = null;\n }\n if (this.debug) {\n console.log(\"getPredsForAmbigAlts result \" + Utils.arrayToString(altToPred));\n }\n return altToPred;\n};\n\nParserATNSimulator.prototype.getPredicatePredictions = function(ambigAlts, altToPred) {\n var pairs = [];\n var containsPredicate = false;\n for (var i=1; i<altToPred.length;i++) {\n var pred = altToPred[i];\n // unpredicated is indicated by SemanticContext.NONE\n if( ambigAlts!==null && ambigAlts.contains( i )) {\n pairs.push(new PredPrediction(pred, i));\n }\n if (pred !== SemanticContext.NONE) {\n containsPredicate = true;\n }\n }\n if (! containsPredicate) {\n return null;\n }\n return pairs;\n};\n\n//\n// This method is used to improve the localization of error messages by\n// choosing an alternative rather than throwing a\n// {@link NoViableAltException} in particular prediction scenarios where the\n// {@link //ERROR} state was reached during ATN simulation.\n//\n// <p>\n// The default implementation of this method uses the following\n// algorithm to identify an ATN configuration which successfully parsed the\n// decision entry rule. Choosing such an alternative ensures that the\n// {@link ParserRuleContext} returned by the calling rule will be complete\n// and valid, and the syntax error will be reported later at a more\n// localized location.</p>\n//\n// <ul>\n// <li>If a syntactically valid path or paths reach the end of the decision rule and\n// they are semantically valid if predicated, return the min associated alt.</li>\n// <li>Else, if a semantically invalid but syntactically valid path exist\n// or paths exist, return the minimum associated alt.\n// </li>\n// <li>Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.</li>\n// </ul>\n//\n// <p>\n// In some scenarios, the algorithm described above could predict an\n// alternative which will result in a {@link FailedPredicateException} in\n// the parser. Specifically, this could occur if the <em>only</em> configuration\n// capable of successfully parsing to the end of the decision rule is\n// blocked by a semantic predicate. By choosing this alternative within\n// {@link //adaptivePredict} instead of throwing a\n// {@link NoViableAltException}, the resulting\n// {@link FailedPredicateException} in the parser will identify the specific\n// predicate which is preventing the parser from successfully parsing the\n// decision rule, which helps developers identify and correct logic errors\n// in semantic predicates.\n// </p>\n//\n// @param configs The ATN configurations which were valid immediately before\n// the {@link //ERROR} state was reached\n// @param outerContext The is the \\gamma_0 initial parser context from the paper\n// or the parser stack at the instant before prediction commences.\n//\n// @return The value to return from {@link //adaptivePredict}, or\n// {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not\n// identified and {@link //adaptivePredict} should report an error instead.\n//\nParserATNSimulator.prototype.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule = function(configs, outerContext) {\n var cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);\n var semValidConfigs = cfgs[0];\n var semInvalidConfigs = cfgs[1];\n var alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists\n return alt;\n }\n // Is there a syntactically valid path with a failed pred?\n if (semInvalidConfigs.items.length>0) {\n alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists\n return alt;\n }\n }\n return ATN.INVALID_ALT_NUMBER;\n};\n\nParserATNSimulator.prototype.getAltThatFinishedDecisionEntryRule = function(configs) {\n var alts = [];\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.reachesIntoOuterContext>0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {\n if(alts.indexOf(c.alt)<0) {\n alts.push(c.alt);\n }\n }\n }\n if (alts.length===0) {\n return ATN.INVALID_ALT_NUMBER;\n } else {\n return Math.min.apply(null, alts);\n }\n};\n// Walk the list of configurations and split them according to\n// those that have preds evaluating to true/false. If no pred, assume\n// true pred and include in succeeded set. Returns Pair of sets.\n//\n// Create a new set so as not to alter the incoming parameter.\n//\n// Assumption: the input stream has been restored to the starting point\n// prediction, which is where predicates need to evaluate.\n//\nParserATNSimulator.prototype.splitAccordingToSemanticValidity = function( configs, outerContext) {\n var succeeded = new ATNConfigSet(configs.fullCtx);\n var failed = new ATNConfigSet(configs.fullCtx);\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.semanticContext !== SemanticContext.NONE) {\n var predicateEvaluationResult = c.semanticContext.evaluate(this.parser, outerContext);\n if (predicateEvaluationResult) {\n succeeded.add(c);\n } else {\n failed.add(c);\n }\n } else {\n succeeded.add(c);\n }\n }\n return [succeeded, failed];\n};\n\n// Look through a list of predicate/alt pairs, returning alts for the\n// pairs that win. A {@code NONE} predicate indicates an alt containing an\n// unpredicated config which behaves as \"always true.\" If !complete\n// then we stop at the first predicate that evaluates to true. This\n// includes pairs with null predicates.\n//\nParserATNSimulator.prototype.evalSemanticContext = function(predPredictions, outerContext, complete) {\n var predictions = new BitSet();\n for(var i=0;i<predPredictions.length;i++) {\n \tvar pair = predPredictions[i];\n if (pair.pred === SemanticContext.NONE) {\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n continue;\n }\n var predicateEvaluationResult = pair.pred.evaluate(this.parser, outerContext);\n if (this.debug || this.dfa_debug) {\n console.log(\"eval pred \" + pair + \"=\" + predicateEvaluationResult);\n }\n if (predicateEvaluationResult) {\n if (this.debug || this.dfa_debug) {\n console.log(\"PREDICT \" + pair.alt);\n }\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n }\n }\n return predictions;\n};\n\n// TODO: If we are doing predicates, there is no point in pursuing\n// closure operations if we reach a DFA state that uniquely predicts\n// alternative. We will not be caching that DFA state and it is a\n// waste to pursue the closure. Might have to advance when we do\n// ambig detection thought :(\n//\n\nParserATNSimulator.prototype.closure = function(config, configs, closureBusy, collectPredicates, fullCtx, treatEofAsEpsilon) {\n var initialDepth = 0;\n this.closureCheckingStopState(config, configs, closureBusy, collectPredicates,\n fullCtx, initialDepth, treatEofAsEpsilon);\n};\n\n\nParserATNSimulator.prototype.closureCheckingStopState = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n if (this.debug || this.debug_closure) {\n console.log(\"closure(\" + config.toString(this.parser,true) + \")\");\n // console.log(\"configs(\" + configs.toString() + \")\");\n if(config.reachesIntoOuterContext>50) {\n throw \"problem\";\n }\n }\n if (config.state instanceof RuleStopState) {\n // We hit rule end. If we have context info, use it\n // run thru all possible stack tops in ctx\n if (! config.context.isEmpty()) {\n for ( var i =0; i<config.context.length; i++) {\n if (config.context.getReturnState(i) === PredictionContext.EMPTY_RETURN_STATE) {\n if (fullCtx) {\n configs.add(new ATNConfig({state:config.state, context:PredictionContext.EMPTY}, config), this.mergeCache);\n continue;\n } else {\n // we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n this.closure_(config, configs, closureBusy, collectPredicates,\n fullCtx, depth, treatEofAsEpsilon);\n }\n continue;\n }\n var returnState = this.atn.states[config.context.getReturnState(i)];\n var newContext = config.context.getParent(i); // \"pop\" return state\n var parms = {state:returnState, alt:config.alt, context:newContext, semanticContext:config.semanticContext};\n var c = new ATNConfig(parms, null);\n // While we have context to pop back from, we may have\n // gotten that context AFTER having falling off a rule.\n // Make sure we track that we are now out of context.\n c.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon);\n }\n return;\n } else if( fullCtx) {\n // reached end of start rule\n configs.add(config, this.mergeCache);\n return;\n } else {\n // else if we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n }\n }\n this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon);\n};\n\n\n// Do the actual work of walking epsilon edges//\nParserATNSimulator.prototype.closure_ = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n var p = config.state;\n // optimization\n if (! p.epsilonOnlyTransitions) {\n configs.add(config, this.mergeCache);\n // make sure to not return here, because EOF transitions can act as\n // both epsilon transitions and non-epsilon transitions.\n }\n for(var i = 0;i<p.transitions.length; i++) {\n if(i==0 && this.canDropLoopEntryEdgeInLeftRecursiveRule(config))\n continue;\n\n var t = p.transitions[i];\n var continueCollecting = collectPredicates && !(t instanceof ActionTransition);\n var c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, fullCtx, treatEofAsEpsilon);\n if (c!==null) {\n\t\t\tif (!t.isEpsilon && closureBusy.add(c)!==c){\n\t\t\t\t// avoid infinite recursion for EOF* and EOF+\n\t\t\t\tcontinue;\n\t\t\t}\n var newDepth = depth;\n if ( config.state instanceof RuleStopState) {\n // target fell off end of rule; mark resulting c as having dipped into outer context\n // We can't get here if incoming config was rule stop and we had context\n // track how far we dip into outer context. Might\n // come in handy and we avoid evaluating context dependent\n // preds if this is > 0.\n\n if (closureBusy.add(c)!==c) {\n // avoid infinite recursion for right-recursive rules\n continue;\n }\n\n\t\t\t\tif (this._dfa !== null && this._dfa.precedenceDfa) {\n\t\t\t\t\tif (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {\n\t\t\t\t\t\tc.precedenceFilterSuppressed = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n c.reachesIntoOuterContext += 1;\n configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method\n newDepth -= 1;\n if (this.debug) {\n console.log(\"dips into outer ctx: \" + c);\n }\n } else if (t instanceof RuleTransition) {\n // latch when newDepth goes negative - once we step out of the entry context we can't return\n if (newDepth >= 0) {\n newDepth += 1;\n }\n }\n this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);\n }\n }\n};\n\n\nParserATNSimulator.prototype.canDropLoopEntryEdgeInLeftRecursiveRule = function(config) {\n // return False\n var p = config.state;\n // First check to see if we are in StarLoopEntryState generated during\n // left-recursion elimination. For efficiency, also check if\n // the context has an empty stack case. If so, it would mean\n // global FOLLOW so we can't perform optimization\n // Are we the special loop entry/exit state? or SLL wildcard\n if(p.stateType != ATNState.STAR_LOOP_ENTRY)\n return false;\n if(p.stateType != ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||\n config.context.isEmpty() || config.context.hasEmptyPath())\n return false;\n\n // Require all return states to return back to the same rule that p is in.\n var numCtxs = config.context.length;\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnState = this.atn.states[config.context.getReturnState(i)];\n if (returnState.ruleIndex != p.ruleIndex)\n return false;\n }\n\n var decisionStartState = p.transitions[0].target;\n var blockEndStateNum = decisionStartState.endState.stateNumber;\n var blockEndState = this.atn.states[blockEndStateNum];\n\n // Verify that the top of each stack context leads to loop entry/exit\n // state through epsilon edges and w/o leaving rule.\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnStateNumber = config.context.getReturnState(i);\n var returnState = this.atn.states[returnStateNumber];\n // all states must have single outgoing epsilon edge\n if (returnState.transitions.length != 1 || !returnState.transitions[0].isEpsilon)\n return false;\n\n // Look for prefix op case like 'not expr', (' type ')' expr\n var returnStateTarget = returnState.transitions[0].target;\n if ( returnState.stateType == ATNState.BLOCK_END && returnStateTarget == p )\n continue;\n\n // Look for 'expr op expr' or case where expr's return state is block end\n // of (...)* internal block; the block end points to loop back\n // which points to p but we don't need to check that\n if ( returnState == blockEndState )\n continue;\n\n // Look for ternary expr ? expr : expr. The return state points at block end,\n // which points at loop entry state\n if ( returnStateTarget == blockEndState )\n continue;\n\n // Look for complex prefix 'between expr and expr' case where 2nd expr's\n // return state points at block end state of (...)* internal block\n if (returnStateTarget.stateType == ATNState.BLOCK_END && returnStateTarget.transitions.length == 1\n && returnStateTarget.transitions[0].isEpsilon && returnStateTarget.transitions[0].target == p)\n continue;\n\n // anything else ain't conforming\n return false;\n }\n return true;\n};\n\n\nParserATNSimulator.prototype.getRuleName = function( index) {\n if (this.parser!==null && index>=0) {\n return this.parser.ruleNames[index];\n } else {\n return \"<rule \" + index + \">\";\n }\n};\n\nParserATNSimulator.prototype.getEpsilonTarget = function(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {\n switch(t.serializationType) {\n case Transition.RULE:\n return this.ruleTransition(config, t);\n case Transition.PRECEDENCE:\n return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.PREDICATE:\n return this.predTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.ACTION:\n return this.actionTransition(config, t);\n case Transition.EPSILON:\n return new ATNConfig({state:t.target}, config);\n case Transition.ATOM:\n case Transition.RANGE:\n case Transition.SET:\n // EOF transitions act like epsilon transitions after the first EOF\n // transition is traversed\n if (treatEofAsEpsilon) {\n if (t.matches(Token.EOF, 0, 1)) {\n return new ATNConfig({state: t.target}, config);\n }\n }\n return null;\n default:\n \treturn null;\n }\n};\n\nParserATNSimulator.prototype.actionTransition = function(config, t) {\n if (this.debug) {\n var index = t.actionIndex==-1 ? 65535 : t.actionIndex;\n console.log(\"ACTION edge \" + t.ruleIndex + \":\" + index);\n }\n return new ATNConfig({state:t.target}, config);\n};\n\nParserATNSimulator.prototype.precedenceTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\n pt.precedence + \">=_p, ctx dependent=true\");\n if (this.parser!==null) {\n \tconsole.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && inContext) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.predTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" + pt.ruleIndex +\n \":\" + pt.predIndex + \", ctx dependent=\" + pt.isCtxDependent);\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.ruleTransition = function(config, t) {\n if (this.debug) {\n console.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) + \", ctx=\" + config.context);\n }\n var returnState = t.followState;\n var newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);\n return new ATNConfig({state:t.target, context:newContext}, config );\n};\n\nParserATNSimulator.prototype.getConflictingAlts = function(configs) {\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.getAlts(altsets);\n};\n\n // Sam pointed out a problem with the previous definition, v3, of\n // ambiguous states. If we have another state associated with conflicting\n // alternatives, we should keep going. For example, the following grammar\n //\n // s : (ID | ID ID?) ';' ;\n //\n // When the ATN simulation reaches the state before ';', it has a DFA\n // state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally\n // 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node\n // because alternative to has another way to continue, via [6|2|[]].\n // The key is that we have a single state that has config's only associated\n // with a single alternative, 2, and crucially the state transitions\n // among the configurations are all non-epsilon transitions. That means\n // we don't consider any conflicts that include alternative 2. So, we\n // ignore the conflict between alts 1 and 2. We ignore a set of\n // conflicting alts when there is an intersection with an alternative\n // associated with a single alt state in the state&rarr;config-list map.\n //\n // It's also the case that we might have two conflicting configurations but\n // also a 3rd nonconflicting configuration for a different alternative:\n // [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:\n //\n // a : A | A | A B ;\n //\n // After matching input A, we reach the stop state for rule A, state 1.\n // State 8 is the state right before B. Clearly alternatives 1 and 2\n // conflict and no amount of further lookahead will separate the two.\n // However, alternative 3 will be able to continue and so we do not\n // stop working on this state. In the previous example, we're concerned\n // with states associated with the conflicting alternatives. Here alt\n // 3 is not associated with the conflicting configs, but since we can continue\n // looking for input reasonably, I don't declare the state done. We\n // ignore a set of conflicting alts when we have an alternative\n // that we still need to pursue.\n//\n\nParserATNSimulator.prototype.getConflictingAltsOrUniqueAlt = function(configs) {\n var conflictingAlts = null;\n if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {\n conflictingAlts = new BitSet();\n conflictingAlts.add(configs.uniqueAlt);\n } else {\n conflictingAlts = configs.conflictingAlts;\n }\n return conflictingAlts;\n};\n\nParserATNSimulator.prototype.getTokenName = function( t) {\n if (t===Token.EOF) {\n return \"EOF\";\n }\n if( this.parser!==null && this.parser.literalNames!==null) {\n if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {\n console.log(\"\" + t + \" ttype out of range: \" + this.parser.literalNames);\n console.log(\"\" + this.parser.getInputStream().getTokens());\n } else {\n var name = this.parser.literalNames[t] || this.parser.symbolicNames[t];\n return name + \"<\" + t + \">\";\n }\n }\n return \"\" + t;\n};\n\nParserATNSimulator.prototype.getLookaheadName = function(input) {\n return this.getTokenName(input.LA(1));\n};\n\n// Used for debugging in adaptivePredict around execATN but I cut\n// it out for clarity now that alg. works well. We can leave this\n// \"dead\" code for a bit.\n//\nParserATNSimulator.prototype.dumpDeadEndConfigs = function(nvae) {\n console.log(\"dead end configs: \");\n var decs = nvae.getDeadEndConfigs();\n for(var i=0; i<decs.length; i++) {\n \tvar c = decs[i];\n var trans = \"no edges\";\n if (c.state.transitions.length>0) {\n var t = c.state.transitions[0];\n if (t instanceof AtomTransition) {\n trans = \"Atom \"+ this.getTokenName(t.label);\n } else if (t instanceof SetTransition) {\n var neg = (t instanceof NotSetTransition);\n trans = (neg ? \"~\" : \"\") + \"Set \" + t.set;\n }\n }\n console.error(c.toString(this.parser, true) + \":\" + trans);\n }\n};\n\nParserATNSimulator.prototype.noViableAlt = function(input, outerContext, configs, startIndex) {\n return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);\n};\n\nParserATNSimulator.prototype.getUniqueAlt = function(configs) {\n var alt = ATN.INVALID_ALT_NUMBER;\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n if (alt === ATN.INVALID_ALT_NUMBER) {\n alt = c.alt // found first alt\n } else if( c.alt!==alt) {\n return ATN.INVALID_ALT_NUMBER;\n }\n }\n return alt;\n};\n\n//\n// Add an edge to the DFA, if possible. This method calls\n// {@link //addDFAState} to ensure the {@code to} state is present in the\n// DFA. If {@code from} is {@code null}, or if {@code t} is outside the\n// range of edges that can be represented in the DFA tables, this method\n// returns without adding the edge to the DFA.\n//\n// <p>If {@code to} is {@code null}, this method returns {@code null}.\n// Otherwise, this method returns the {@link DFAState} returned by calling\n// {@link //addDFAState} for the {@code to} state.</p>\n//\n// @param dfa The DFA\n// @param from The source state for the edge\n// @param t The input symbol\n// @param to The target state for the edge\n//\n// @return If {@code to} is {@code null}, this method returns {@code null};\n// otherwise this method returns the result of calling {@link //addDFAState}\n// on {@code to}\n//\nParserATNSimulator.prototype.addDFAEdge = function(dfa, from_, t, to) {\n if( this.debug) {\n console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + this.getTokenName(t));\n }\n if (to===null) {\n return null;\n }\n to = this.addDFAState(dfa, to); // used existing if possible not incoming\n if (from_===null || t < -1 || t > this.atn.maxTokenType) {\n return to;\n }\n if (from_.edges===null) {\n from_.edges = [];\n }\n from_.edges[t+1] = to; // connect\n\n if (this.debug) {\n var literalNames = this.parser===null ? null : this.parser.literalNames;\n var symbolicNames = this.parser===null ? null : this.parser.symbolicNames;\n console.log(\"DFA=\\n\" + dfa.toString(literalNames, symbolicNames));\n }\n return to;\n};\n//\n// Add state {@code D} to the DFA if it is not already present, and return\n// the actual instance stored in the DFA. If a state equivalent to {@code D}\n// is already in the DFA, the existing state is returned. Otherwise this\n// method returns {@code D} after adding it to the DFA.\n//\n// <p>If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and\n// does not change the DFA.</p>\n//\n// @param dfa The dfa\n// @param D The DFA state to add\n// @return The state stored in the DFA. This will be either the existing\n// state if {@code D} is already in the DFA, or {@code D} itself if the\n// state was not already present.\n//\nParserATNSimulator.prototype.addDFAState = function(dfa, D) {\n if (D == ATNSimulator.ERROR) {\n return D;\n }\n var existing = dfa.states.get(D);\n if(existing!==null) {\n return existing;\n }\n D.stateNumber = dfa.states.length;\n if (! D.configs.readOnly) {\n D.configs.optimizeConfigs(this);\n D.configs.setReadonly(true);\n }\n dfa.states.add(D);\n if (this.debug) {\n console.log(\"adding new DFA state: \" + D);\n }\n return D;\n};\n\nParserATNSimulator.prototype.reportAttemptingFullContext = function(dfa, conflictingAlts, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);\n }\n};\n\nParserATNSimulator.prototype.reportContextSensitivity = function(dfa, prediction, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);\n }\n};\n\n// If context sensitive parsing, we know it's ambiguity not conflict//\nParserATNSimulator.prototype.reportAmbiguity = function(dfa, D, startIndex, stopIndex,\n exact, ambigAlts, configs ) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAmbiguity \" + ambigAlts + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\n }\n};\n\nexports.ParserATNSimulator = ParserATNSimulator;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n//\n// This enumeration defines the prediction modes available in ANTLR 4 along with\n// utility methods for analyzing configuration sets for conflicts and/or\n// ambiguities.\n\nvar Set = require('./../Utils').Set;\nvar Map = require('./../Utils').Map;\nvar BitSet = require('./../Utils').BitSet;\nvar AltDict = require('./../Utils').AltDict;\nvar ATN = require('./ATN').ATN;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\nvar hashStuff = require('./../Utils').hashStuff;\nvar equalArrays = require('./../Utils').equalArrays;\n\nfunction PredictionMode() {\n\treturn this;\n}\n\n//\n// The SLL(*) prediction mode. This prediction mode ignores the current\n// parser context when making predictions. This is the fastest prediction\n// mode, and provides correct results for many grammars. This prediction\n// mode is more powerful than the prediction mode provided by ANTLR 3, but\n// may result in syntax errors for grammar and input combinations which are\n// not SLL.\n//\n// <p>\n// When using this prediction mode, the parser will either return a correct\n// parse tree (i.e. the same parse tree that would be returned with the\n// {@link //LL} prediction mode), or it will report a syntax error. If a\n// syntax error is encountered when using the {@link //SLL} prediction mode,\n// it may be due to either an actual syntax error in the input or indicate\n// that the particular combination of grammar and input requires the more\n// powerful {@link //LL} prediction abilities to complete successfully.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.SLL = 0;\n//\n// The LL(*) prediction mode. This prediction mode allows the current parser\n// context to be used for resolving SLL conflicts that occur during\n// prediction. This is the fastest prediction mode that guarantees correct\n// parse results for all combinations of grammars with syntactically correct\n// inputs.\n//\n// <p>\n// When using this prediction mode, the parser will make correct decisions\n// for all syntactically-correct grammar and input combinations. However, in\n// cases where the grammar is truly ambiguous this prediction mode might not\n// report a precise answer for <em>exactly which</em> alternatives are\n// ambiguous.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL = 1;\n//\n// The LL(*) prediction mode with exact ambiguity detection. In addition to\n// the correctness guarantees provided by the {@link //LL} prediction mode,\n// this prediction mode instructs the prediction algorithm to determine the\n// complete and exact set of ambiguous alternatives for every ambiguous\n// decision encountered while parsing.\n//\n// <p>\n// This prediction mode may be used for diagnosing ambiguities during\n// grammar development. Due to the performance overhead of calculating sets\n// of ambiguous alternatives, this prediction mode should be avoided when\n// the exact results are not necessary.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL_EXACT_AMBIG_DETECTION = 2;\n\n\n//\n// Computes the SLL prediction termination condition.\n//\n// <p>\n// This method computes the SLL prediction termination condition for both of\n// the following cases.</p>\n//\n// <ul>\n// <li>The usual SLL+LL fallback upon SLL conflict</li>\n// <li>Pure SLL without LL fallback</li>\n// </ul>\n//\n// <p><strong>COMBINED SLL+LL PARSING</strong></p>\n//\n// <p>When LL-fallback is enabled upon SLL conflict, correct predictions are\n// ensured regardless of how the termination condition is computed by this\n// method. Due to the substantially higher cost of LL prediction, the\n// prediction should only fall back to LL when the additional lookahead\n// cannot lead to a unique SLL prediction.</p>\n//\n// <p>Assuming combined SLL+LL parsing, an SLL configuration set with only\n// conflicting subsets should fall back to full LL, even if the\n// configuration sets don't resolve to the same alternative (e.g.\n// {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting\n// configuration, SLL could continue with the hopes that more lookahead will\n// resolve via one of those non-conflicting configurations.</p>\n//\n// <p>Here's the prediction termination rule them: SLL (for SLL+LL parsing)\n// stops when it sees only conflicting configuration subsets. In contrast,\n// full LL keeps going when there is uncertainty.</p>\n//\n// <p><strong>HEURISTIC</strong></p>\n//\n// <p>As a heuristic, we stop prediction when we see any conflicting subset\n// unless we see a state that only has one alternative associated with it.\n// The single-alt-state thing lets prediction continue upon rules like\n// (otherwise, it would admit defeat too soon):</p>\n//\n// <p>{@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}</p>\n//\n// <p>When the ATN simulation reaches the state before {@code ';'}, it has a\n// DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally\n// {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop\n// processing this node because alternative to has another way to continue,\n// via {@code [6|2|[]]}.</p>\n//\n// <p>It also let's us continue for this rule:</p>\n//\n// <p>{@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}</p>\n//\n// <p>After matching input A, we reach the stop state for rule A, state 1.\n// State 8 is the state right before B. Clearly alternatives 1 and 2\n// conflict and no amount of further lookahead will separate the two.\n// However, alternative 3 will be able to continue and so we do not stop\n// working on this state. In the previous example, we're concerned with\n// states associated with the conflicting alternatives. Here alt 3 is not\n// associated with the conflicting configs, but since we can continue\n// looking for input reasonably, don't declare the state done.</p>\n//\n// <p><strong>PURE SLL PARSING</strong></p>\n//\n// <p>To handle pure SLL parsing, all we have to do is make sure that we\n// combine stack contexts for configurations that differ only by semantic\n// predicate. From there, we can do the usual SLL termination heuristic.</p>\n//\n// <p><strong>PREDICATES IN SLL+LL PARSING</strong></p>\n//\n// <p>SLL decisions don't evaluate predicates until after they reach DFA stop\n// states because they need to create the DFA cache that works in all\n// semantic situations. In contrast, full LL evaluates predicates collected\n// during start state computation so it can ignore predicates thereafter.\n// This means that SLL termination detection can totally ignore semantic\n// predicates.</p>\n//\n// <p>Implementation-wise, {@link ATNConfigSet} combines stack contexts but not\n// semantic predicate contexts so we might see two configurations like the\n// following.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p})}</p>\n//\n// <p>Before testing these configurations against others, we have to merge\n// {@code x} and {@code x'} (without modifying the existing configurations).\n// For example, we test {@code (x+x')==x''} when looking for conflicts in\n// the following configurations.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}</p>\n//\n// <p>If the configuration set has predicates (as indicated by\n// {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of\n// the configurations to strip out all of the predicates so that a standard\n// {@link ATNConfigSet} will merge everything ignoring predicates.</p>\n//\nPredictionMode.hasSLLConflictTerminatingPrediction = function( mode, configs) {\n // Configs in rule stop states indicate reaching the end of the decision\n // rule (local context) or end of start rule (full context). If all\n // configs meet this condition, then none of the configurations is able\n // to match additional input so we terminate prediction.\n //\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return true;\n }\n // pure SLL mode parsing\n if (mode === PredictionMode.SLL) {\n // Don't bother with combining configs from different semantic\n // contexts if we can fail over to full LL; costs more time\n // since we'll often fail over anyway.\n if (configs.hasSemanticContext) {\n // dup configs, tossing out semantic predicates\n var dup = new ATNConfigSet();\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n c = new ATNConfig({semanticContext:SemanticContext.NONE}, c);\n dup.add(c);\n }\n configs = dup;\n }\n // now we have combined contexts for configs with dissimilar preds\n }\n // pure SLL or combined SLL+LL mode parsing\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.hasConflictingAltSet(altsets) && !PredictionMode.hasStateAssociatedWithOneAlt(configs);\n};\n\n// Checks if any configuration in {@code configs} is in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if any configuration in {@code configs} is in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.hasConfigInRuleStopState = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (c.state instanceof RuleStopState) {\n return true;\n }\n\t}\n return false;\n};\n\n// Checks if all configurations in {@code configs} are in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if all configurations in {@code configs} are in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.allConfigsInRuleStopStates = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (!(c.state instanceof RuleStopState)) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Full LL prediction termination.\n//\n// <p>Can we stop looking ahead during ATN simulation or is there some\n// uncertainty as to which alternative we will ultimately pick, after\n// consuming more input? Even if there are partial conflicts, we might know\n// that everything is going to resolve to the same minimum alternative. That\n// means we can stop since no more lookahead will change that fact. On the\n// other hand, there might be multiple conflicts that resolve to different\n// minimums. That means we need more look ahead to decide which of those\n// alternatives we should predict.</p>\n//\n// <p>The basic idea is to split the set of configurations {@code C}, into\n// conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with\n// non-conflicting configurations. Two configurations conflict if they have\n// identical {@link ATNConfig//state} and {@link ATNConfig//context} values\n// but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}\n// and {@code (s, j, ctx, _)} for {@code i!=j}.</p>\n//\n// <p>Reduce these configuration subsets to the set of possible alternatives.\n// You can compute the alternative subsets in one pass as follows:</p>\n//\n// <p>{@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in\n// {@code C} holding {@code s} and {@code ctx} fixed.</p>\n//\n// <p>Or in pseudo-code, for each configuration {@code c} in {@code C}:</p>\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n//\n// <p>The values in {@code map} are the set of {@code A_s,ctx} sets.</p>\n//\n// <p>If {@code |A_s,ctx|=1} then there is no conflict associated with\n// {@code s} and {@code ctx}.</p>\n//\n// <p>Reduce the subsets to singletons by choosing a minimum of each subset. If\n// the union of these alternative subsets is a singleton, then no amount of\n// more lookahead will help us. We will always pick that alternative. If,\n// however, there is more than one alternative, then we are uncertain which\n// alternative to predict and must continue looking for resolution. We may\n// or may not discover an ambiguity in the future, even if there are no\n// conflicting subsets this round.</p>\n//\n// <p>The biggest sin is to terminate early because it means we've made a\n// decision but were uncertain as to the eventual outcome. We haven't used\n// enough lookahead. On the other hand, announcing a conflict too late is no\n// big deal; you will still have the conflict. It's just inefficient. It\n// might even look until the end of file.</p>\n//\n// <p>No special consideration for semantic predicates is required because\n// predicates are evaluated on-the-fly for full LL prediction, ensuring that\n// no configuration contains a semantic context during the termination\n// check.</p>\n//\n// <p><strong>CONFLICTING CONFIGS</strong></p>\n//\n// <p>Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict\n// when {@code i!=j} but {@code x=x'}. Because we merge all\n// {@code (s, i, _)} configurations together, that means that there are at\n// most {@code n} configurations associated with state {@code s} for\n// {@code n} possible alternatives in the decision. The merged stacks\n// complicate the comparison of configuration contexts {@code x} and\n// {@code x'}. Sam checks to see if one is a subset of the other by calling\n// merge and checking to see if the merged result is either {@code x} or\n// {@code x'}. If the {@code x} associated with lowest alternative {@code i}\n// is the superset, then {@code i} is the only possible prediction since the\n// others resolve to {@code min(i)} as well. However, if {@code x} is\n// associated with {@code j>i} then at least one stack configuration for\n// {@code j} is not in conflict with alternative {@code i}. The algorithm\n// should keep going, looking for more lookahead due to the uncertainty.</p>\n//\n// <p>For simplicity, I'm doing a equality check between {@code x} and\n// {@code x'} that lets the algorithm continue to consume lookahead longer\n// than necessary. The reason I like the equality is of course the\n// simplicity but also because that is the test you need to detect the\n// alternatives that are actually in conflict.</p>\n//\n// <p><strong>CONTINUE/STOP RULE</strong></p>\n//\n// <p>Continue if union of resolved alternative sets from non-conflicting and\n// conflicting alternative subsets has more than one alternative. We are\n// uncertain about which alternative to predict.</p>\n//\n// <p>The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which\n// alternatives are still in the running for the amount of input we've\n// consumed at this point. The conflicting sets let us to strip away\n// configurations that won't lead to more states because we resolve\n// conflicts to the configuration with a minimum alternate for the\n// conflicting set.</p>\n//\n// <p><strong>CASES</strong></p>\n//\n// <ul>\n//\n// <li>no conflicts and more than 1 alternative in set =&gt; continue</li>\n//\n// <li> {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},\n// {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set\n// {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1,3}} =&gt; continue\n// </li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set\n// {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1}} =&gt; stop and predict 1</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {1}} = {@code {1}} =&gt; stop and predict 1, can announce\n// ambiguity {@code {1,2}}</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},\n// {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {2}} = {@code {1,2}} =&gt; continue</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},\n// {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {3}} = {@code {1,3}} =&gt; continue</li>\n//\n// </ul>\n//\n// <p><strong>EXACT AMBIGUITY DETECTION</strong></p>\n//\n// <p>If all states report the same conflicting set of alternatives, then we\n// know we have the exact ambiguity set.</p>\n//\n// <p><code>|A_<em>i</em>|&gt;1</code> and\n// <code>A_<em>i</em> = A_<em>j</em></code> for all <em>i</em>, <em>j</em>.</p>\n//\n// <p>In other words, we continue examining lookahead until all {@code A_i}\n// have more than one alternative and all {@code A_i} are the same. If\n// {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate\n// because the resolved set is {@code {1}}. To determine what the real\n// ambiguity is, we have to know whether the ambiguity is between one and\n// two or one and three so we keep going. We can only stop prediction when\n// we need exact ambiguity detection when the sets look like\n// {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...</p>\n//\nPredictionMode.resolvesToJustOneViableAlt = function(altsets) {\n return PredictionMode.getSingleViableAlt(altsets);\n};\n\n//\n// Determines if every alternative subset in {@code altsets} contains more\n// than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every {@link BitSet} in {@code altsets} has\n// {@link BitSet//cardinality cardinality} &gt; 1, otherwise {@code false}\n//\nPredictionMode.allSubsetsConflict = function(altsets) {\n return ! PredictionMode.hasNonConflictingAltSet(altsets);\n};\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// exactly one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} 1, otherwise {@code false}\n//\nPredictionMode.hasNonConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length===1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// more than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} &gt; 1, otherwise {@code false}\n//\nPredictionMode.hasConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length>1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if every alternative subset in {@code altsets} is equivalent.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every member of {@code altsets} is equal to the\n// others, otherwise {@code false}\n//\nPredictionMode.allSubsetsEqual = function(altsets) {\n var first = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (first === null) {\n first = alts;\n } else if (alts!==first) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Returns the unique alternative predicted by all alternative subsets in\n// {@code altsets}. If no such alternative exists, this method returns\n// {@link ATN//INVALID_ALT_NUMBER}.\n//\n// @param altsets a collection of alternative subsets\n//\nPredictionMode.getUniqueAlt = function(altsets) {\n var all = PredictionMode.getAlts(altsets);\n if (all.length===1) {\n return all.minValue();\n } else {\n return ATN.INVALID_ALT_NUMBER;\n }\n};\n\n// Gets the complete set of represented alternatives for a collection of\n// alternative subsets. This method returns the union of each {@link BitSet}\n// in {@code altsets}.\n//\n// @param altsets a collection of alternative subsets\n// @return the set of represented alternatives in {@code altsets}\n//\nPredictionMode.getAlts = function(altsets) {\n var all = new BitSet();\n altsets.map( function(alts) { all.or(alts); });\n return all;\n};\n\n//\n// This function gets the conflicting alt subsets from a configuration set.\n// For each configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n\nPredictionMode.getConflictingAltSubsets = function(configs) {\n var configToAlts = new Map();\n configToAlts.hashFunction = function(cfg) { hashStuff(cfg.state.stateNumber, cfg.context); };\n configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber==c2.state.stateNumber && c1.context.equals(c2.context);}\n configs.items.map(function(cfg) {\n var alts = configToAlts.get(cfg);\n if (alts === null) {\n alts = new BitSet();\n configToAlts.put(cfg, alts);\n }\n alts.add(cfg.alt);\n\t});\n return configToAlts.getValues();\n};\n\n//\n// Get a map from state to alt subset from a configuration set. For each\n// configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}\n// </pre>\n//\nPredictionMode.getStateToAltMap = function(configs) {\n var m = new AltDict();\n configs.items.map(function(c) {\n var alts = m.get(c.state);\n if (alts === null) {\n alts = new BitSet();\n m.put(c.state, alts);\n }\n alts.add(c.alt);\n });\n return m;\n};\n\nPredictionMode.hasStateAssociatedWithOneAlt = function(configs) {\n var values = PredictionMode.getStateToAltMap(configs).values();\n for(var i=0;i<values.length;i++) {\n if (values[i].length===1) {\n return true;\n }\n }\n return false;\n};\n\nPredictionMode.getSingleViableAlt = function(altsets) {\n var result = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n var minAlt = alts.minValue();\n if(result===null) {\n result = minAlt;\n } else if(result!==minAlt) { // more than 1 viable alt\n return ATN.INVALID_ALT_NUMBER;\n }\n\t}\n return result;\n};\n\nexports.PredictionMode = PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A tree structure used to record the semantic context in which\n// an ATN configuration is valid. It's either a single predicate,\n// a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.\n//\n// <p>I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\n// {@link SemanticContext} within the scope of this outer class.</p>\n//\n\nvar Set = require('./../Utils').Set;\nvar Hash = require('./../Utils').Hash;\n\nfunction SemanticContext() {\n\treturn this;\n}\n\nSemanticContext.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n// For context independent predicates, we evaluate them without a local\n// context (i.e., null context). That way, we can evaluate them without\n// having to create proper rule-specific context during prediction (as\n// opposed to the parser, which creates them naturally). In a practical\n// sense, this avoids a cast exception from RuleContext to myruleContext.\n//\n// <p>For context dependent predicates, we must pass in a local context so that\n// references such as $arg evaluate properly as _localctx.arg. We only\n// capture context dependent predicates in the context in which we begin\n// prediction, so we passed in the outer context here in case of context\n// dependent predicate evaluation.</p>\n//\nSemanticContext.prototype.evaluate = function(parser, outerContext) {\n};\n\n//\n// Evaluate the precedence predicates for the context and reduce the result.\n//\n// @param parser The parser instance.\n// @param outerContext The current parser context object.\n// @return The simplified semantic context after precedence predicates are\n// evaluated, which will be one of the following values.\n// <ul>\n// <li>{@link //NONE}: if the predicate simplifies to {@code true} after\n// precedence predicates are evaluated.</li>\n// <li>{@code null}: if the predicate simplifies to {@code false} after\n// precedence predicates are evaluated.</li>\n// <li>{@code this}: if the semantic context is not changed as a result of\n// precedence predicate evaluation.</li>\n// <li>A non-{@code null} {@link SemanticContext}: the new simplified\n// semantic context after precedence predicates are evaluated.</li>\n// </ul>\n//\nSemanticContext.prototype.evalPrecedence = function(parser, outerContext) {\n\treturn this;\n};\n\nSemanticContext.andContext = function(a, b) {\n\tif (a === null || a === SemanticContext.NONE) {\n\t\treturn b;\n\t}\n\tif (b === null || b === SemanticContext.NONE) {\n\t\treturn a;\n\t}\n\tvar result = new AND(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nSemanticContext.orContext = function(a, b) {\n\tif (a === null) {\n\t\treturn b;\n\t}\n\tif (b === null) {\n\t\treturn a;\n\t}\n\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = new OR(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nfunction Predicate(ruleIndex, predIndex, isCtxDependent) {\n\tSemanticContext.call(this);\n\tthis.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;\n\tthis.predIndex = predIndex === undefined ? -1 : predIndex;\n\tthis.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred\n\treturn this;\n}\n\nPredicate.prototype = Object.create(SemanticContext.prototype);\nPredicate.prototype.constructor = Predicate;\n\n//The default {@link SemanticContext}, which is semantically equivalent to\n//a predicate of the form {@code {true}?}.\n//\nSemanticContext.NONE = new Predicate();\n\n\nPredicate.prototype.evaluate = function(parser, outerContext) {\n\tvar localctx = this.isCtxDependent ? outerContext : null;\n\treturn parser.sempred(localctx, this.ruleIndex, this.predIndex);\n};\n\nPredicate.prototype.updateHashCode = function(hash) {\n\thash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof Predicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.ruleIndex === other.ruleIndex &&\n\t\t\t\tthis.predIndex === other.predIndex &&\n\t\t\t\tthis.isCtxDependent === other.isCtxDependent;\n\t}\n};\n\nPredicate.prototype.toString = function() {\n\treturn \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\n};\n\nfunction PrecedencePredicate(precedence) {\n\tSemanticContext.call(this);\n\tthis.precedence = precedence === undefined ? 0 : precedence;\n}\n\nPrecedencePredicate.prototype = Object.create(SemanticContext.prototype);\nPrecedencePredicate.prototype.constructor = PrecedencePredicate;\n\nPrecedencePredicate.prototype.evaluate = function(parser, outerContext) {\n\treturn parser.precpred(outerContext, this.precedence);\n};\n\nPrecedencePredicate.prototype.evalPrecedence = function(parser, outerContext) {\n\tif (parser.precpred(outerContext, this.precedence)) {\n\t\treturn SemanticContext.NONE;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nPrecedencePredicate.prototype.compareTo = function(other) {\n\treturn this.precedence - other.precedence;\n};\n\nPrecedencePredicate.prototype.updateHashCode = function(hash) {\n hash.update(31);\n};\n\nPrecedencePredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof PrecedencePredicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.precedence === other.precedence;\n\t}\n};\n\nPrecedencePredicate.prototype.toString = function() {\n\treturn \"{\"+this.precedence+\">=prec}?\";\n};\n\n\n\nPrecedencePredicate.filterPrecedencePredicates = function(set) {\n\tvar result = [];\n\tset.values().map( function(context) {\n\t\tif (context instanceof PrecedencePredicate) {\n\t\t\tresult.push(context);\n\t\t}\n\t});\n\treturn result;\n};\n\n\n// A semantic context which is true whenever none of the contained contexts\n// is false.\n//\nfunction AND(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof AND) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof AND) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the lowest precedence\n\t\tvar reduced = null;\n\t\tprecedencePredicates.map( function(p) {\n\t\t\tif(reduced===null || p.precedence<reduced.precedence) {\n\t\t\t\treduced = p;\n\t\t\t}\n\t\t});\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nAND.prototype = Object.create(SemanticContext.prototype);\nAND.prototype.constructor = AND;\n\nAND.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof AND)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nAND.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"AND\");\n};\n//\n// {@inheritDoc}\n//\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nAND.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (!this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nAND.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === null) {\n\t\t\t// The AND context is false if any element is false\n\t\t\treturn null;\n\t\t} else if (evaluated !== SemanticContext.NONE) {\n\t\t\t// Reduce the result by skipping true elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were true, so the AND context is true\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\tresult = result === null ? o : SemanticContext.andContext(result, o);\n\t});\n\treturn result;\n};\n\nAND.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"&& \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\n//\n// A semantic context which is true whenever at least one of the contained\n// contexts is true.\n//\nfunction OR(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof OR) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof OR) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the highest precedence\n\t\tvar s = precedencePredicates.sort(function(a, b) {\n\t\t\treturn a.compareTo(b);\n\t\t});\n\t\tvar reduced = s[s.length-1];\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nOR.prototype = Object.create(SemanticContext.prototype);\nOR.prototype.constructor = OR;\n\nOR.prototype.constructor = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof OR)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nOR.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"OR\");\n};\n\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nOR.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nOR.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === SemanticContext.NONE) {\n\t\t\t// The OR context is true if any element is true\n\t\t\treturn SemanticContext.NONE;\n\t\t} else if (evaluated !== null) {\n\t\t\t// Reduce the result by skipping false elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were false, so the OR context is false\n\t\treturn null;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\treturn result === null ? o : SemanticContext.orContext(result, o);\n\t});\n\treturn result;\n};\n\nOR.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"|| \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\nexports.SemanticContext = SemanticContext;\nexports.PrecedencePredicate = PrecedencePredicate;\nexports.Predicate = Predicate;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// An ATN transition between any two ATN states. Subclasses define\n// atom, set, epsilon, action, predicate, rule transitions.\n//\n// <p>This is a one way link. It emanates from a state (usually via a list of\n// transitions) and has a target state.</p>\n//\n// <p>Since we never have to change the ATN transitions once we construct it,\n// we can fix these transitions as specific classes. The DFA transitions\n// on the other hand need to update the labels as it adds transitions to\n// the states. We'll use the term Edge for the DFA to distinguish them from\n// ATN transitions.</p>\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Predicate = require('./SemanticContext').Predicate;\nvar PrecedencePredicate = require('./SemanticContext').PrecedencePredicate;\n\nfunction Transition (target) {\n // The target of this transition.\n if (target===undefined || target===null) {\n throw \"target cannot be null.\";\n }\n this.target = target;\n // Are we epsilon, action, sempred?\n this.isEpsilon = false;\n this.label = null;\n return this;\n}\n // constants for serialization\nTransition.EPSILON = 1;\nTransition.RANGE = 2;\nTransition.RULE = 3;\nTransition.PREDICATE = 4; // e.g., {isType(input.LT(1))}?\nTransition.ATOM = 5;\nTransition.ACTION = 6;\nTransition.SET = 7; // ~(A|B) or ~atom, wildcard, which convert to next 2\nTransition.NOT_SET = 8;\nTransition.WILDCARD = 9;\nTransition.PRECEDENCE = 10;\n\nTransition.serializationNames = [\n \"INVALID\",\n \"EPSILON\",\n \"RANGE\",\n \"RULE\",\n \"PREDICATE\",\n \"ATOM\",\n \"ACTION\",\n \"SET\",\n \"NOT_SET\",\n \"WILDCARD\",\n \"PRECEDENCE\"\n ];\n\nTransition.serializationTypes = {\n EpsilonTransition: Transition.EPSILON,\n RangeTransition: Transition.RANGE,\n RuleTransition: Transition.RULE,\n PredicateTransition: Transition.PREDICATE,\n AtomTransition: Transition.ATOM,\n ActionTransition: Transition.ACTION,\n SetTransition: Transition.SET,\n NotSetTransition: Transition.NOT_SET,\n WildcardTransition: Transition.WILDCARD,\n PrecedencePredicateTransition: Transition.PRECEDENCE\n };\n\n\n// TODO: make all transitions sets? no, should remove set edges\nfunction AtomTransition(target, label) {\n\tTransition.call(this, target);\n\tthis.label_ = label; // The token type or character value; or, signifies special label.\n this.label = this.makeLabel();\n this.serializationType = Transition.ATOM;\n return this;\n}\n\nAtomTransition.prototype = Object.create(Transition.prototype);\nAtomTransition.prototype.constructor = AtomTransition;\n\nAtomTransition.prototype.makeLabel = function() {\n\tvar s = new IntervalSet();\n s.addOne(this.label_);\n return s;\n};\n\nAtomTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label_ === symbol;\n};\n\nAtomTransition.prototype.toString = function() {\n\treturn this.label_;\n};\n\nfunction RuleTransition(ruleStart, ruleIndex, precedence, followState) {\n\tTransition.call(this, ruleStart);\n this.ruleIndex = ruleIndex; // ptr to the rule definition object for this rule ref\n this.precedence = precedence;\n this.followState = followState; // what node to begin computations following ref to rule\n this.serializationType = Transition.RULE;\n this.isEpsilon = true;\n return this;\n}\n\nRuleTransition.prototype = Object.create(Transition.prototype);\nRuleTransition.prototype.constructor = RuleTransition;\n\nRuleTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\n\nfunction EpsilonTransition(target, outermostPrecedenceReturn) {\n\tTransition.call(this, target);\n this.serializationType = Transition.EPSILON;\n this.isEpsilon = true;\n this.outermostPrecedenceReturn = outermostPrecedenceReturn;\n return this;\n}\n\nEpsilonTransition.prototype = Object.create(Transition.prototype);\nEpsilonTransition.prototype.constructor = EpsilonTransition;\n\nEpsilonTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nEpsilonTransition.prototype.toString = function() {\n\treturn \"epsilon\";\n};\n\nfunction RangeTransition(target, start, stop) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.RANGE;\n this.start = start;\n this.stop = stop;\n this.label = this.makeLabel();\n return this;\n}\n\nRangeTransition.prototype = Object.create(Transition.prototype);\nRangeTransition.prototype.constructor = RangeTransition;\n\nRangeTransition.prototype.makeLabel = function() {\n var s = new IntervalSet();\n s.addRange(this.start, this.stop);\n return s;\n};\n\nRangeTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= this.start && symbol <= this.stop;\n};\n\nRangeTransition.prototype.toString = function() {\n\treturn \"'\" + String.fromCharCode(this.start) + \"'..'\" + String.fromCharCode(this.stop) + \"'\";\n};\n\nfunction AbstractPredicateTransition(target) {\n\tTransition.call(this, target);\n\treturn this;\n}\n\nAbstractPredicateTransition.prototype = Object.create(Transition.prototype);\nAbstractPredicateTransition.prototype.constructor = AbstractPredicateTransition;\n\nfunction PredicateTransition(target, ruleIndex, predIndex, isCtxDependent) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PREDICATE;\n this.ruleIndex = ruleIndex;\n this.predIndex = predIndex;\n this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nPredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPredicateTransition.prototype.constructor = PredicateTransition;\n\nPredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPredicateTransition.prototype.getPredicate = function() {\n\treturn new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicateTransition.prototype.toString = function() {\n\treturn \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\n};\n\nfunction ActionTransition(target, ruleIndex, actionIndex, isCtxDependent) {\n\tTransition.call(this, target);\n this.serializationType = Transition.ACTION;\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex===undefined ? -1 : actionIndex;\n this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nActionTransition.prototype = Object.create(Transition.prototype);\nActionTransition.prototype.constructor = ActionTransition;\n\n\nActionTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nActionTransition.prototype.toString = function() {\n\treturn \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\n};\n\n\n// A transition containing a set of values.\nfunction SetTransition(target, set) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.SET;\n if (set !==undefined && set !==null) {\n this.label = set;\n } else {\n this.label = new IntervalSet();\n this.label.addOne(Token.INVALID_TYPE);\n }\n return this;\n}\n\nSetTransition.prototype = Object.create(Transition.prototype);\nSetTransition.prototype.constructor = SetTransition;\n\nSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn this.label.contains(symbol);\n};\n\n\nSetTransition.prototype.toString = function() {\n\treturn this.label.toString();\n};\n\nfunction NotSetTransition(target, set) {\n\tSetTransition.call(this, target, set);\n\tthis.serializationType = Transition.NOT_SET;\n\treturn this;\n}\n\nNotSetTransition.prototype = Object.create(SetTransition.prototype);\nNotSetTransition.prototype.constructor = NotSetTransition;\n\nNotSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&\n\t\t\t!SetTransition.prototype.matches.call(this, symbol, minVocabSymbol, maxVocabSymbol);\n};\n\nNotSetTransition.prototype.toString = function() {\n\treturn '~' + SetTransition.prototype.toString.call(this);\n};\n\nfunction WildcardTransition(target) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.WILDCARD;\n\treturn this;\n}\n\nWildcardTransition.prototype = Object.create(Transition.prototype);\nWildcardTransition.prototype.constructor = WildcardTransition;\n\n\nWildcardTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\n};\n\nWildcardTransition.prototype.toString = function() {\n\treturn \".\";\n};\n\nfunction PrecedencePredicateTransition(target, precedence) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PRECEDENCE;\n this.precedence = precedence;\n this.isEpsilon = true;\n return this;\n}\n\nPrecedencePredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPrecedencePredicateTransition.prototype.constructor = PrecedencePredicateTransition;\n\nPrecedencePredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPrecedencePredicateTransition.prototype.getPredicate = function() {\n\treturn new PrecedencePredicate(this.precedence);\n};\n\nPrecedencePredicateTransition.prototype.toString = function() {\n\treturn this.precedence + \" >= _p\";\n};\n\nexports.Transition = Transition;\nexports.AtomTransition = AtomTransition;\nexports.SetTransition = SetTransition;\nexports.NotSetTransition = NotSetTransition;\nexports.RuleTransition = RuleTransition;\nexports.ActionTransition = ActionTransition;\nexports.EpsilonTransition = EpsilonTransition;\nexports.RangeTransition = RangeTransition;\nexports.WildcardTransition = WildcardTransition;\nexports.PredicateTransition = PredicateTransition;\nexports.PrecedencePredicateTransition = PrecedencePredicateTransition;\nexports.AbstractPredicateTransition = AbstractPredicateTransition;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.ATN = require('./ATN').ATN;\nexports.ATNDeserializer = require('./ATNDeserializer').ATNDeserializer;\nexports.LexerATNSimulator = require('./LexerATNSimulator').LexerATNSimulator;\nexports.ParserATNSimulator = require('./ParserATNSimulator').ParserATNSimulator;\nexports.PredictionMode = require('./PredictionMode').PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Set = require(\"../Utils\").Set;\nvar DFAState = require('./DFAState').DFAState;\nvar StarLoopEntryState = require('../atn/ATNState').StarLoopEntryState;\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar DFASerializer = require('./DFASerializer').DFASerializer;\nvar LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\n\n\n\nfunction DFA(atnStartState, decision) {\n\tif (decision === undefined) {\n\t\tdecision = 0;\n\t}\n\t// From which ATN state did we create this DFA?\n\tthis.atnStartState = atnStartState;\n\tthis.decision = decision;\n\t// A set of all DFA states. Use {@link Map} so we can get old state back\n\t// ({@link Set} only allows you to see if it's there).\n\tthis._states = new Set();\n\tthis.s0 = null;\n\t// {@code true} if this DFA is for a precedence decision; otherwise,\n\t// {@code false}. This is the backing field for {@link //isPrecedenceDfa},\n\t// {@link //setPrecedenceDfa}.\n\tthis.precedenceDfa = false;\n if (atnStartState instanceof StarLoopEntryState)\n {\n if (atnStartState.isPrecedenceDecision) {\n this.precedenceDfa = true;\n var precedenceState = new DFAState(null, new ATNConfigSet());\n precedenceState.edges = [];\n precedenceState.isAcceptState = false;\n precedenceState.requiresFullContext = false;\n this.s0 = precedenceState;\n }\n }\n\treturn this;\n}\n\n// Get the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @return The start state corresponding to the specified precedence, or\n// {@code null} if no start state exists for the specified precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n\nDFA.prototype.getPrecedenceStartState = function(precedence) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\t// s0.edges is never null for a precedence DFA\n\tif (precedence < 0 || precedence >= this.s0.edges.length) {\n\t\treturn null;\n\t}\n\treturn this.s0.edges[precedence] || null;\n};\n\n// Set the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @param startState The start state corresponding to the specified\n// precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n//\nDFA.prototype.setPrecedenceStartState = function(precedence, startState) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\tif (precedence < 0) {\n\t\treturn;\n\t}\n\n\t// synchronization on s0 here is ok. when the DFA is turned into a\n\t// precedence DFA, s0 will be initialized once and not updated again\n\t// s0.edges is never null for a precedence DFA\n\tthis.s0.edges[precedence] = startState;\n};\n\n//\n// Sets whether this is a precedence DFA. If the specified value differs\n// from the current DFA configuration, the following actions are taken;\n// otherwise no changes are made to the current DFA.\n//\n// <ul>\n// <li>The {@link //states} map is cleared</li>\n// <li>If {@code precedenceDfa} is {@code false}, the initial state\n// {@link //s0} is set to {@code null}; otherwise, it is initialized to a new\n// {@link DFAState} with an empty outgoing {@link DFAState//edges} array to\n// store the start states for individual precedence values.</li>\n// <li>The {@link //precedenceDfa} field is updated</li>\n// </ul>\n//\n// @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,\n// {@code false}\n\nDFA.prototype.setPrecedenceDfa = function(precedenceDfa) {\n\tif (this.precedenceDfa!==precedenceDfa) {\n\t\tthis._states = new DFAStatesSet();\n\t\tif (precedenceDfa) {\n\t\t\tvar precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\tprecedenceState.edges = [];\n\t\t\tprecedenceState.isAcceptState = false;\n\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\tthis.s0 = precedenceState;\n\t\t} else {\n\t\t\tthis.s0 = null;\n\t\t}\n\t\tthis.precedenceDfa = precedenceDfa;\n\t}\n};\n\nObject.defineProperty(DFA.prototype, \"states\", {\n\tget : function() {\n\t\treturn this._states;\n\t}\n});\n\n// Return a list of all states in this DFA, ordered by state number.\nDFA.prototype.sortedStates = function() {\n\tvar list = this._states.values();\n\treturn list.sort(function(a, b) {\n\t\treturn a.stateNumber - b.stateNumber;\n\t});\n};\n\nDFA.prototype.toString = function(literalNames, symbolicNames) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new DFASerializer(this, literalNames, symbolicNames);\n\treturn serializer.toString();\n};\n\nDFA.prototype.toLexerString = function() {\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new LexerDFASerializer(this);\n\treturn serializer.toString();\n};\n\nexports.DFA = DFA;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// A DFA walker that knows how to dump them to serialized strings.#/\n\n\nfunction DFASerializer(dfa, literalNames, symbolicNames) {\n\tthis.dfa = dfa;\n\tthis.literalNames = literalNames || [];\n\tthis.symbolicNames = symbolicNames || [];\n\treturn this;\n}\n\nDFASerializer.prototype.toString = function() {\n if(this.dfa.s0 === null) {\n return null;\n }\n var buf = \"\";\n var states = this.dfa.sortedStates();\n for(var i=0;i<states.length;i++) {\n var s = states[i];\n if(s.edges!==null) {\n var n = s.edges.length;\n for(var j=0;j<n;j++) {\n var t = s.edges[j] || null;\n if(t!==null && t.stateNumber !== 0x7FFFFFFF) {\n buf = buf.concat(this.getStateString(s));\n buf = buf.concat(\"-\");\n buf = buf.concat(this.getEdgeLabel(j));\n buf = buf.concat(\"->\");\n buf = buf.concat(this.getStateString(t));\n buf = buf.concat('\\n');\n }\n }\n }\n }\n return buf.length===0 ? null : buf;\n};\n\nDFASerializer.prototype.getEdgeLabel = function(i) {\n if (i===0) {\n return \"EOF\";\n } else if(this.literalNames !==null || this.symbolicNames!==null) {\n return this.literalNames[i-1] || this.symbolicNames[i-1];\n } else {\n return String.fromCharCode(i-1);\n }\n};\n\nDFASerializer.prototype.getStateString = function(s) {\n var baseStateStr = ( s.isAcceptState ? \":\" : \"\") + \"s\" + s.stateNumber + ( s.requiresFullContext ? \"^\" : \"\");\n if(s.isAcceptState) {\n if (s.predicates !== null) {\n return baseStateStr + \"=>\" + s.predicates.toString();\n } else {\n return baseStateStr + \"=>\" + s.prediction.toString();\n }\n } else {\n return baseStateStr;\n }\n};\n\nfunction LexerDFASerializer(dfa) {\n\tDFASerializer.call(this, dfa, null);\n\treturn this;\n}\n\nLexerDFASerializer.prototype = Object.create(DFASerializer.prototype);\nLexerDFASerializer.prototype.constructor = LexerDFASerializer;\n\nLexerDFASerializer.prototype.getEdgeLabel = function(i) {\n\treturn \"'\" + String.fromCharCode(i) + \"'\";\n};\n\nexports.DFASerializer = DFASerializer;\nexports.LexerDFASerializer = LexerDFASerializer;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\n\n// Map a predicate to a predicted alternative.///\n\nfunction PredPrediction(pred, alt) {\n\tthis.alt = alt;\n\tthis.pred = pred;\n\treturn this;\n}\n\nPredPrediction.prototype.toString = function() {\n\treturn \"(\" + this.pred + \", \" + this.alt + \")\";\n};\n\n// A DFA state represents a set of possible ATN configurations.\n// As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\n// to keep track of all possible states the ATN can be in after\n// reading each input symbol. That is to say, after reading\n// input a1a2..an, the DFA is in a state that represents the\n// subset T of the states of the ATN that are reachable from the\n// ATN's start state along some path labeled a1a2..an.\"\n// In conventional NFA&rarr;DFA conversion, therefore, the subset T\n// would be a bitset representing the set of states the\n// ATN could be in. We need to track the alt predicted by each\n// state as well, however. More importantly, we need to maintain\n// a stack of states, tracking the closure operations as they\n// jump from rule to rule, emulating rule invocations (method calls).\n// I have to add a stack to simulate the proper lookahead sequences for\n// the underlying LL grammar from which the ATN was derived.\n//\n// <p>I use a set of ATNConfig objects not simple states. An ATNConfig\n// is both a state (ala normal conversion) and a RuleContext describing\n// the chain of rules (if any) followed to arrive at that state.</p>\n//\n// <p>A DFA state may have multiple references to a particular state,\n// but with different ATN contexts (with same or different alts)\n// meaning that state was reached via a different set of rule invocations.</p>\n// /\n\nfunction DFAState(stateNumber, configs) {\n\tif (stateNumber === null) {\n\t\tstateNumber = -1;\n\t}\n\tif (configs === null) {\n\t\tconfigs = new ATNConfigSet();\n\t}\n\tthis.stateNumber = stateNumber;\n\tthis.configs = configs;\n\t// {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)\n\t// {@link Token//EOF} maps to {@code edges[0]}.\n\tthis.edges = null;\n\tthis.isAcceptState = false;\n\t// if accept state, what ttype do we match or alt do we predict?\n\t// This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link\n\t// //predicates}{@code !=null} or\n\t// {@link //requiresFullContext}.\n\tthis.prediction = 0;\n\tthis.lexerActionExecutor = null;\n\t// Indicates that this state was created during SLL prediction that\n\t// discovered a conflict between the configurations in the state. Future\n\t// {@link ParserATNSimulator//execATN} invocations immediately jumped doing\n\t// full context prediction if this field is true.\n\tthis.requiresFullContext = false;\n\t// During SLL parsing, this is a list of predicates associated with the\n\t// ATN configurations of the DFA state. When we have predicates,\n\t// {@link //requiresFullContext} is {@code false} since full context\n\t// prediction evaluates predicates\n\t// on-the-fly. If this is not null, then {@link //prediction} is\n\t// {@link ATN//INVALID_ALT_NUMBER}.\n\t//\n\t// <p>We only use these for non-{@link //requiresFullContext} but\n\t// conflicting states. That\n\t// means we know from the context (it's $ or we don't dip into outer\n\t// context) that it's an ambiguity not a conflict.</p>\n\t//\n\t// <p>This list is computed by {@link\n\t// ParserATNSimulator//predicateDFAState}.</p>\n\tthis.predicates = null;\n\treturn this;\n}\n\n// Get the set of all alts mentioned by all ATN configurations in this\n// DFA state.\nDFAState.prototype.getAltSet = function() {\n\tvar alts = new Set();\n\tif (this.configs !== null) {\n\t\tfor (var i = 0; i < this.configs.length; i++) {\n\t\t\tvar c = this.configs[i];\n\t\t\talts.add(c.alt);\n\t\t}\n\t}\n\tif (alts.length === 0) {\n\t\treturn null;\n\t} else {\n\t\treturn alts;\n\t}\n};\n\n// Two {@link DFAState} instances are equal if their ATN configuration sets\n// are the same. This method is used to see if a state already exists.\n//\n// <p>Because the number of alternatives and number of ATN configurations are\n// finite, there is a finite number of DFA states that can be processed.\n// This is necessary to show that the algorithm terminates.</p>\n//\n// <p>Cannot test the DFA state numbers here because in\n// {@link ParserATNSimulator//addDFAState} we need to know if any other state\n// exists that has this exact set of ATN configurations. The\n// {@link //stateNumber} is irrelevant.</p>\nDFAState.prototype.equals = function(other) {\n\t// compare set of ATN configurations in this set with other\n\treturn this === other ||\n\t\t\t(other instanceof DFAState &&\n\t\t\t\tthis.configs.equals(other.configs));\n};\n\nDFAState.prototype.toString = function() {\n\tvar s = \"\" + this.stateNumber + \":\" + this.configs;\n\tif(this.isAcceptState) {\n s = s + \"=>\";\n if (this.predicates !== null)\n s = s + this.predicates;\n else\n s = s + this.prediction;\n }\n\treturn s;\n};\n\nDFAState.prototype.hashCode = function() {\n\tvar hash = new Hash();\n\thash.update(this.configs);\n\tif(this.isAcceptState) {\n if (this.predicates !== null)\n hash.update(this.predicates);\n else\n hash.update(this.prediction);\n }\n return hash.finish();\n};\n\nexports.DFAState = DFAState;\nexports.PredPrediction = PredPrediction;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.DFA = require('./DFA').DFA;\nexports.DFASerializer = require('./DFASerializer').DFASerializer;\nexports.LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\nexports.PredPrediction = require('./DFAState').PredPrediction;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This implementation of {@link ANTLRErrorListener} can be used to identify\n// certain potential correctness and performance problems in grammars. \"Reports\"\n// are made by calling {@link Parser//notifyErrorListeners} with the appropriate\n// message.\n//\n// <ul>\n// <li><b>Ambiguities</b>: These are cases where more than one path through the\n// grammar can match the input.</li>\n// <li><b>Weak context sensitivity</b>: These are cases where full-context\n// prediction resolved an SLL conflict to a unique alternative which equaled the\n// minimum alternative of the SLL conflict.</li>\n// <li><b>Strong (forced) context sensitivity</b>: These are cases where the\n// full-context prediction resolved an SLL conflict to a unique alternative,\n// <em>and</em> the minimum alternative of the SLL conflict was found to not be\n// a truly viable alternative. Two-stage parsing cannot be used for inputs where\n// this situation occurs.</li>\n// </ul>\n\nvar BitSet = require('./../Utils').BitSet;\nvar ErrorListener = require('./ErrorListener').ErrorListener;\nvar Interval = require('./../IntervalSet').Interval;\n\nfunction DiagnosticErrorListener(exactOnly) {\n\tErrorListener.call(this);\n\texactOnly = exactOnly || true;\n\t// whether all ambiguities or only exact ambiguities are reported.\n\tthis.exactOnly = exactOnly;\n\treturn this;\n}\n\nDiagnosticErrorListener.prototype = Object.create(ErrorListener.prototype);\nDiagnosticErrorListener.prototype.constructor = DiagnosticErrorListener;\n\nDiagnosticErrorListener.prototype.reportAmbiguity = function(recognizer, dfa,\n\t\tstartIndex, stopIndex, exact, ambigAlts, configs) {\n\tif (this.exactOnly && !exact) {\n\t\treturn;\n\t}\n\tvar msg = \"reportAmbiguity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\": ambigAlts=\" +\n\t\t\tthis.getConflictingAlts(ambigAlts, configs) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportAttemptingFullContext = function(\n\t\trecognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tvar msg = \"reportAttemptingFullContext d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportContextSensitivity = function(\n\t\trecognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tvar msg = \"reportContextSensitivity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.getDecisionDescription = function(recognizer, dfa) {\n\tvar decision = dfa.decision;\n\tvar ruleIndex = dfa.atnStartState.ruleIndex;\n\n\tvar ruleNames = recognizer.ruleNames;\n\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\n\t\treturn \"\" + decision;\n\t}\n\tvar ruleName = ruleNames[ruleIndex] || null;\n\tif (ruleName === null || ruleName.length === 0) {\n\t\treturn \"\" + decision;\n\t}\n\treturn \"\" + decision + \" (\" + ruleName + \")\";\n};\n\n//\n// Computes the set of conflicting or ambiguous alternatives from a\n// configuration set, if that information was not already provided by the\n// parser.\n//\n// @param reportedAlts The set of conflicting or ambiguous alternatives, as\n// reported by the parser.\n// @param configs The conflicting or ambiguous configuration set.\n// @return Returns {@code reportedAlts} if it is not {@code null}, otherwise\n// returns the set of alternatives represented in {@code configs}.\n//\nDiagnosticErrorListener.prototype.getConflictingAlts = function(reportedAlts, configs) {\n\tif (reportedAlts !== null) {\n\t\treturn reportedAlts;\n\t}\n\tvar result = new BitSet();\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tresult.add(configs.items[i].alt);\n\t}\n\treturn \"{\" + result.values().join(\", \") + \"}\";\n};\n\nexports.DiagnosticErrorListener = DiagnosticErrorListener;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// Provides an empty default implementation of {@link ANTLRErrorListener}. The\n// default implementation of each method does nothing, but can be overridden as\n// necessary.\n\nfunction ErrorListener() {\n\treturn this;\n}\n\nErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n};\n\nErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n};\n\nErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n};\n\nErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n};\n\nfunction ConsoleErrorListener() {\n\tErrorListener.call(this);\n\treturn this;\n}\n\nConsoleErrorListener.prototype = Object.create(ErrorListener.prototype);\nConsoleErrorListener.prototype.constructor = ConsoleErrorListener;\n\n//\n// Provides a default instance of {@link ConsoleErrorListener}.\n//\nConsoleErrorListener.INSTANCE = new ConsoleErrorListener();\n\n//\n// {@inheritDoc}\n//\n// <p>\n// This implementation prints messages to {@link System//err} containing the\n// values of {@code line}, {@code charPositionInLine}, and {@code msg} using\n// the following format.</p>\n//\n// <pre>\n// line <em>line</em>:<em>charPositionInLine</em> <em>msg</em>\n// </pre>\n//\nConsoleErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n console.error(\"line \" + line + \":\" + column + \" \" + msg);\n};\n\nfunction ProxyErrorListener(delegates) {\n\tErrorListener.call(this);\n if (delegates===null) {\n throw \"delegates\";\n }\n this.delegates = delegates;\n\treturn this;\n}\n\nProxyErrorListener.prototype = Object.create(ErrorListener.prototype);\nProxyErrorListener.prototype.constructor = ProxyErrorListener;\n\nProxyErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n this.delegates.map(function(d) { d.syntaxError(recognizer, offendingSymbol, line, column, msg, e); });\n};\n\nProxyErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n this.delegates.map(function(d) { d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tthis.delegates.map(function(d) { d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tthis.delegates.map(function(d) { d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); });\n};\n\nexports.ErrorListener = ErrorListener;\nexports.ConsoleErrorListener = ConsoleErrorListener;\nexports.ProxyErrorListener = ProxyErrorListener;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./../Token').Token;\nvar Errors = require('./Errors');\nvar NoViableAltException = Errors.NoViableAltException;\nvar InputMismatchException = Errors.InputMismatchException;\nvar FailedPredicateException = Errors.FailedPredicateException;\nvar ParseCancellationException = Errors.ParseCancellationException;\nvar ATNState = require('./../atn/ATNState').ATNState;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ErrorStrategy() {\n\n}\n\nErrorStrategy.prototype.reset = function(recognizer){\n};\n\nErrorStrategy.prototype.recoverInline = function(recognizer){\n};\n\nErrorStrategy.prototype.recover = function(recognizer, e){\n};\n\nErrorStrategy.prototype.sync = function(recognizer){\n};\n\nErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer){\n};\n\nErrorStrategy.prototype.reportError = function(recognizer){\n};\n\n\n\n// This is the default implementation of {@link ANTLRErrorStrategy} used for\n// error reporting and recovery in ANTLR parsers.\n//\nfunction DefaultErrorStrategy() {\n\tErrorStrategy.call(this);\n // Indicates whether the error strategy is currently \"recovering from an\n // error\". This is used to suppress reporting multiple error messages while\n // attempting to recover from a detected syntax error.\n //\n // @see //inErrorRecoveryMode\n //\n this.errorRecoveryMode = false;\n\n // The index into the input stream where the last error occurred.\n // This is used to prevent infinite loops where an error is found\n // but no token is consumed during recovery...another error is found,\n // ad nauseum. This is a failsafe mechanism to guarantee that at least\n // one token/tree node is consumed for two errors.\n //\n this.lastErrorIndex = -1;\n this.lastErrorStates = null;\n return this;\n}\n\nDefaultErrorStrategy.prototype = Object.create(ErrorStrategy.prototype);\nDefaultErrorStrategy.prototype.constructor = DefaultErrorStrategy;\n\n// <p>The default implementation simply calls {@link //endErrorCondition} to\n// ensure that the handler is not in error recovery mode.</p>\nDefaultErrorStrategy.prototype.reset = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// This method is called to enter error recovery mode when a recognition\n// exception is reported.\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.beginErrorCondition = function(recognizer) {\n this.errorRecoveryMode = true;\n};\n\nDefaultErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer) {\n return this.errorRecoveryMode;\n};\n\n//\n// This method is called to leave error recovery mode after recovering from\n// a recognition exception.\n//\n// @param recognizer\n//\nDefaultErrorStrategy.prototype.endErrorCondition = function(recognizer) {\n this.errorRecoveryMode = false;\n this.lastErrorStates = null;\n this.lastErrorIndex = -1;\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation simply calls {@link //endErrorCondition}.</p>\n//\nDefaultErrorStrategy.prototype.reportMatch = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation returns immediately if the handler is already\n// in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}\n// and dispatches the reporting task based on the runtime type of {@code e}\n// according to the following table.</p>\n//\n// <ul>\n// <li>{@link NoViableAltException}: Dispatches the call to\n// {@link //reportNoViableAlternative}</li>\n// <li>{@link InputMismatchException}: Dispatches the call to\n// {@link //reportInputMismatch}</li>\n// <li>{@link FailedPredicateException}: Dispatches the call to\n// {@link //reportFailedPredicate}</li>\n// <li>All other types: calls {@link Parser//notifyErrorListeners} to report\n// the exception</li>\n// </ul>\n//\nDefaultErrorStrategy.prototype.reportError = function(recognizer, e) {\n // if we've already reported an error and have not matched a token\n // yet successfully, don't report any errors.\n if(this.inErrorRecoveryMode(recognizer)) {\n return; // don't report spurious errors\n }\n this.beginErrorCondition(recognizer);\n if ( e instanceof NoViableAltException ) {\n this.reportNoViableAlternative(recognizer, e);\n } else if ( e instanceof InputMismatchException ) {\n this.reportInputMismatch(recognizer, e);\n } else if ( e instanceof FailedPredicateException ) {\n this.reportFailedPredicate(recognizer, e);\n } else {\n console.log(\"unknown recognition error type: \" + e.constructor.name);\n console.log(e.stack);\n recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);\n }\n};\n//\n// {@inheritDoc}\n//\n// <p>The default implementation resynchronizes the parser by consuming tokens\n// until we find one in the resynchronization set--loosely the set of tokens\n// that can follow the current rule.</p>\n//\nDefaultErrorStrategy.prototype.recover = function(recognizer, e) {\n if (this.lastErrorIndex===recognizer.getInputStream().index &&\n this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {\n\t\t// uh oh, another error at same token index and previously-visited\n\t\t// state in ATN; must be a case where LT(1) is in the recovery\n\t\t// token set so nothing got consumed. Consume a single token\n\t\t// at least to prevent an infinite loop; this is a failsafe.\n\t\trecognizer.consume();\n }\n this.lastErrorIndex = recognizer._input.index;\n if (this.lastErrorStates === null) {\n this.lastErrorStates = [];\n }\n this.lastErrorStates.push(recognizer.state);\n var followSet = this.getErrorRecoverySet(recognizer);\n this.consumeUntil(recognizer, followSet);\n};\n\n// The default implementation of {@link ANTLRErrorStrategy//sync} makes sure\n// that the current lookahead symbol is consistent with what were expecting\n// at this point in the ATN. You can call this anytime but ANTLR only\n// generates code to check before subrules/loops and each iteration.\n//\n// <p>Implements Jim Idle's magic sync mechanism in closures and optional\n// subrules. E.g.,</p>\n//\n// <pre>\n// a : sync ( stuff sync )* ;\n// sync : {consume to what can follow sync} ;\n// </pre>\n//\n// At the start of a sub rule upon error, {@link //sync} performs single\n// token deletion, if possible. If it can't do that, it bails on the current\n// rule and uses the default error recovery, which consumes until the\n// resynchronization set of the current rule.\n//\n// <p>If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block\n// with an empty alternative), then the expected set includes what follows\n// the subrule.</p>\n//\n// <p>During loop iteration, it consumes until it sees a token that can start a\n// sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\n// stay in the loop as long as possible.</p>\n//\n// <p><strong>ORIGINS</strong></p>\n//\n// <p>Previous versions of ANTLR did a poor job of their recovery within loops.\n// A single mismatch token or missing token would force the parser to bail\n// out of the entire rules surrounding the loop. So, for rule</p>\n//\n// <pre>\n// classDef : 'class' ID '{' member* '}'\n// </pre>\n//\n// input with an extra token between members would force the parser to\n// consume until it found the next class definition rather than the next\n// member definition of the current class.\n//\n// <p>This functionality cost a little bit of effort because the parser has to\n// compare token set at the start of the loop and at each iteration. If for\n// some reason speed is suffering for you, you can turn off this\n// functionality by simply overriding this method as a blank { }.</p>\n//\nDefaultErrorStrategy.prototype.sync = function(recognizer) {\n // If already recovering, don't try to sync\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n var s = recognizer._interp.atn.states[recognizer.state];\n var la = recognizer.getTokenStream().LA(1);\n // try cheaper subset first; might get lucky. seems to shave a wee bit off\n var nextTokens = recognizer.atn.nextTokens(s);\n if (nextTokens.contains(Token.EPSILON) || nextTokens.contains(la)) {\n return;\n }\n switch (s.stateType) {\n case ATNState.BLOCK_START:\n case ATNState.STAR_BLOCK_START:\n case ATNState.PLUS_BLOCK_START:\n case ATNState.STAR_LOOP_ENTRY:\n // report error and recover if possible\n if( this.singleTokenDeletion(recognizer) !== null) {\n return;\n } else {\n throw new InputMismatchException(recognizer);\n }\n break;\n case ATNState.PLUS_LOOP_BACK:\n case ATNState.STAR_LOOP_BACK:\n this.reportUnwantedToken(recognizer);\n var expecting = new IntervalSet();\n expecting.addSet(recognizer.getExpectedTokens());\n var whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer));\n this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\n break;\n default:\n // do nothing if we can't identify the exact kind of ATN state\n }\n};\n\n// This is called by {@link //reportError} when the exception is a\n// {@link NoViableAltException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportNoViableAlternative = function(recognizer, e) {\n var tokens = recognizer.getTokenStream();\n var input;\n if(tokens !== null) {\n if (e.startToken.type===Token.EOF) {\n input = \"<EOF>\";\n } else {\n input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));\n }\n } else {\n input = \"<unknown input>\";\n }\n var msg = \"no viable alternative at input \" + this.escapeWSAndQuote(input);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is an\n// {@link InputMismatchException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportInputMismatch = function(recognizer, e) {\n var msg = \"mismatched input \" + this.getTokenErrorDisplay(e.offendingToken) +\n \" expecting \" + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is a\n// {@link FailedPredicateException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportFailedPredicate = function(recognizer, e) {\n var ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex];\n var msg = \"rule \" + ruleName + \" \" + e.message;\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n// This method is called to report a syntax error which requires the removal\n// of a token from the input stream. At the time this method is called, the\n// erroneous symbol is current {@code LT(1)} symbol and has not yet been\n// removed from the input stream. When this method returns,\n// {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenDeletion} identifies\n// single-token deletion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportUnwantedToken = function(recognizer) {\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var tokenName = this.getTokenErrorDisplay(t);\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"extraneous input \" + tokenName + \" expecting \" +\n expecting.toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n// This method is called to report a syntax error which requires the\n// insertion of a missing token into the input stream. At the time this\n// method is called, the missing token has not yet been inserted. When this\n// method returns, {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenInsertion} identifies\n// single-token insertion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportMissingToken = function(recognizer) {\n if ( this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"missing \" + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +\n \" at \" + this.getTokenErrorDisplay(t);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n\n// <p>The default implementation attempts to recover from the mismatched input\n// by using single token insertion and deletion as described below. If the\n// recovery attempt fails, this method throws an\n// {@link InputMismatchException}.</p>\n//\n// <p><strong>EXTRA TOKEN</strong> (single token deletion)</p>\n//\n// <p>{@code LA(1)} is not what we are looking for. If {@code LA(2)} has the\n// right token, however, then assume {@code LA(1)} is some extra spurious\n// token and delete it. Then consume and return the next token (which was\n// the {@code LA(2)} token) as the successful result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenDeletion}.</p>\n//\n// <p><strong>MISSING TOKEN</strong> (single token insertion)</p>\n//\n// <p>If current token (at {@code LA(1)}) is consistent with what could come\n// after the expected {@code LA(1)} token, then assume the token is missing\n// and use the parser's {@link TokenFactory} to create it on the fly. The\n// \"insertion\" is performed by returning the created token as the successful\n// result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenInsertion}.</p>\n//\n// <p><strong>EXAMPLE</strong></p>\n//\n// <p>For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When\n// the parser returns from the nested call to {@code expr}, it will have\n// call chain:</p>\n//\n// <pre>\n// stat &rarr; expr &rarr; atom\n// </pre>\n//\n// and it will be trying to match the {@code ')'} at this point in the\n// derivation:\n//\n// <pre>\n// =&gt; ID '=' '(' INT ')' ('+' atom)* ';'\n// ^\n// </pre>\n//\n// The attempt to match {@code ')'} will fail when it sees {@code ';'} and\n// call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}\n// is in the set of tokens that can follow the {@code ')'} token reference\n// in rule {@code atom}. It can assume that you forgot the {@code ')'}.\n//\nDefaultErrorStrategy.prototype.recoverInline = function(recognizer) {\n // SINGLE TOKEN DELETION\n var matchedSymbol = this.singleTokenDeletion(recognizer);\n if (matchedSymbol !== null) {\n // we have deleted the extra token.\n // now, move past ttype token as if all were ok\n recognizer.consume();\n return matchedSymbol;\n }\n // SINGLE TOKEN INSERTION\n if (this.singleTokenInsertion(recognizer)) {\n return this.getMissingSymbol(recognizer);\n }\n // even that didn't work; must throw the exception\n throw new InputMismatchException(recognizer);\n};\n\n//\n// This method implements the single-token insertion inline error recovery\n// strategy. It is called by {@link //recoverInline} if the single-token\n// deletion strategy fails to recover from the mismatched input. If this\n// method returns {@code true}, {@code recognizer} will be in error recovery\n// mode.\n//\n// <p>This method determines whether or not single-token insertion is viable by\n// checking if the {@code LA(1)} input symbol could be successfully matched\n// if it were instead the {@code LA(2)} symbol. If this method returns\n// {@code true}, the caller is responsible for creating and inserting a\n// token with the correct type to produce this behavior.</p>\n//\n// @param recognizer the parser instance\n// @return {@code true} if single-token insertion is a viable recovery\n// strategy for the current mismatched input, otherwise {@code false}\n//\nDefaultErrorStrategy.prototype.singleTokenInsertion = function(recognizer) {\n var currentSymbolType = recognizer.getTokenStream().LA(1);\n // if current token is consistent with what could come after current\n // ATN state, then we know we're missing a token; error recovery\n // is free to conjure up and insert the missing token\n var atn = recognizer._interp.atn;\n var currentState = atn.states[recognizer.state];\n var next = currentState.transitions[0].target;\n var expectingAtLL2 = atn.nextTokens(next, recognizer._ctx);\n if (expectingAtLL2.contains(currentSymbolType) ){\n this.reportMissingToken(recognizer);\n return true;\n } else {\n return false;\n }\n};\n\n// This method implements the single-token deletion inline error recovery\n// strategy. It is called by {@link //recoverInline} to attempt to recover\n// from mismatched input. If this method returns null, the parser and error\n// handler state will not have changed. If this method returns non-null,\n// {@code recognizer} will <em>not</em> be in error recovery mode since the\n// returned token was a successful match.\n//\n// <p>If the single-token deletion is successful, this method calls\n// {@link //reportUnwantedToken} to report the error, followed by\n// {@link Parser//consume} to actually \"delete\" the extraneous token. Then,\n// before returning {@link //reportMatch} is called to signal a successful\n// match.</p>\n//\n// @param recognizer the parser instance\n// @return the successfully matched {@link Token} instance if single-token\n// deletion successfully recovers from the mismatched input, otherwise\n// {@code null}\n//\nDefaultErrorStrategy.prototype.singleTokenDeletion = function(recognizer) {\n var nextTokenType = recognizer.getTokenStream().LA(2);\n var expecting = this.getExpectedTokens(recognizer);\n if (expecting.contains(nextTokenType)) {\n this.reportUnwantedToken(recognizer);\n // print(\"recoverFromMismatchedToken deleting \" \\\n // + str(recognizer.getTokenStream().LT(1)) \\\n // + \" since \" + str(recognizer.getTokenStream().LT(2)) \\\n // + \" is what we want\", file=sys.stderr)\n recognizer.consume(); // simply delete extra token\n // we want to return the token we're actually matching\n var matchedSymbol = recognizer.getCurrentToken();\n this.reportMatch(recognizer); // we know current token is correct\n return matchedSymbol;\n } else {\n return null;\n }\n};\n\n// Conjure up a missing token during error recovery.\n//\n// The recognizer attempts to recover from single missing\n// symbols. But, actions might refer to that missing symbol.\n// For example, x=ID {f($x);}. The action clearly assumes\n// that there has been an identifier matched previously and that\n// $x points at that token. If that token is missing, but\n// the next token in the stream is what we want we assume that\n// this token is missing and we keep going. Because we\n// have to return some token to replace the missing token,\n// we have to conjure one up. This method gives the user control\n// over the tokens returned for missing tokens. Mostly,\n// you will want to create something special for identifier\n// tokens. For literals such as '{' and ',', the default\n// action in the parser or tree parser works. It simply creates\n// a CommonToken of the appropriate type. The text will be the token.\n// If you change what tokens must be created by the lexer,\n// override this method to create the appropriate tokens.\n//\nDefaultErrorStrategy.prototype.getMissingSymbol = function(recognizer) {\n var currentSymbol = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var expectedTokenType = expecting.first(); // get any element\n var tokenText;\n if (expectedTokenType===Token.EOF) {\n tokenText = \"<missing EOF>\";\n } else {\n tokenText = \"<missing \" + recognizer.literalNames[expectedTokenType] + \">\";\n }\n var current = currentSymbol;\n var lookback = recognizer.getTokenStream().LT(-1);\n if (current.type===Token.EOF && lookback !== null) {\n current = lookback;\n }\n return recognizer.getTokenFactory().create(current.source,\n expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,\n -1, -1, current.line, current.column);\n};\n\nDefaultErrorStrategy.prototype.getExpectedTokens = function(recognizer) {\n return recognizer.getExpectedTokens();\n};\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\nDefaultErrorStrategy.prototype.getTokenErrorDisplay = function(t) {\n if (t === null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s === null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n return this.escapeWSAndQuote(s);\n};\n\nDefaultErrorStrategy.prototype.escapeWSAndQuote = function(s) {\n s = s.replace(/\\n/g,\"\\\\n\");\n s = s.replace(/\\r/g,\"\\\\r\");\n s = s.replace(/\\t/g,\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\n// Compute the error recovery set for the current rule. During\n// rule invocation, the parser pushes the set of tokens that can\n// follow that rule reference on the stack; this amounts to\n// computing FIRST of what follows the rule reference in the\n// enclosing rule. See LinearApproximator.FIRST().\n// This local follow set only includes tokens\n// from within the rule; i.e., the FIRST computation done by\n// ANTLR stops at the end of a rule.\n//\n// EXAMPLE\n//\n// When you find a \"no viable alt exception\", the input is not\n// consistent with any of the alternatives for rule r. The best\n// thing to do is to consume tokens until you see something that\n// can legally follow a call to r//or* any rule that called r.\n// You don't want the exact set of viable next tokens because the\n// input might just be missing a token--you might consume the\n// rest of the input looking for one of the missing tokens.\n//\n// Consider grammar:\n//\n// a : '[' b ']'\n// | '(' b ')'\n// ;\n// b : c '^' INT ;\n// c : ID\n// | INT\n// ;\n//\n// At each rule invocation, the set of tokens that could follow\n// that rule is pushed on a stack. Here are the various\n// context-sensitive follow sets:\n//\n// FOLLOW(b1_in_a) = FIRST(']') = ']'\n// FOLLOW(b2_in_a) = FIRST(')') = ')'\n// FOLLOW(c_in_b) = FIRST('^') = '^'\n//\n// Upon erroneous input \"[]\", the call chain is\n//\n// a -> b -> c\n//\n// and, hence, the follow context stack is:\n//\n// depth follow set start of rule execution\n// 0 <EOF> a (from main())\n// 1 ']' b\n// 2 '^' c\n//\n// Notice that ')' is not included, because b would have to have\n// been called from a different context in rule a for ')' to be\n// included.\n//\n// For error recovery, we cannot consider FOLLOW(c)\n// (context-sensitive or otherwise). We need the combined set of\n// all context-sensitive FOLLOW sets--the set of all tokens that\n// could follow any reference in the call chain. We need to\n// resync to one of those tokens. Note that FOLLOW(c)='^' and if\n// we resync'd to that token, we'd consume until EOF. We need to\n// sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\n// In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\n// not consume anything. After printing an error, rule c would\n// return normally. Rule b would not find the required '^' though.\n// At this point, it gets a mismatched token error and throws an\n// exception (since LA(1) is not in the viable following token\n// set). The rule exception handler tries to recover, but finds\n// the same recovery set and doesn't consume anything. Rule b\n// exits normally returning to rule a. Now it finds the ']' (and\n// with the successful match exits errorRecovery mode).\n//\n// So, you can see that the parser walks up the call chain looking\n// for the token that was a member of the recovery set.\n//\n// Errors are not generated in errorRecovery mode.\n//\n// ANTLR's error recovery mechanism is based upon original ideas:\n//\n// \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\n//\n// and\n//\n// \"A note on error recovery in recursive descent parsers\":\n// http://portal.acm.org/citation.cfm?id=947902.947905\n//\n// Later, Josef Grosch had some good ideas:\n//\n// \"Efficient and Comfortable Error Recovery in Recursive Descent\n// Parsers\":\n// ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\n//\n// Like Grosch I implement context-sensitive FOLLOW sets that are combined\n// at run-time upon error to avoid overhead during parsing.\n//\nDefaultErrorStrategy.prototype.getErrorRecoverySet = function(recognizer) {\n var atn = recognizer._interp.atn;\n var ctx = recognizer._ctx;\n var recoverSet = new IntervalSet();\n while (ctx !== null && ctx.invokingState>=0) {\n // compute what follows who invoked us\n var invokingState = atn.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n var follow = atn.nextTokens(rt.followState);\n recoverSet.addSet(follow);\n ctx = ctx.parentCtx;\n }\n recoverSet.removeOne(Token.EPSILON);\n return recoverSet;\n};\n\n// Consume tokens until one matches the given token set.//\nDefaultErrorStrategy.prototype.consumeUntil = function(recognizer, set) {\n var ttype = recognizer.getTokenStream().LA(1);\n while( ttype !== Token.EOF && !set.contains(ttype)) {\n recognizer.consume();\n ttype = recognizer.getTokenStream().LA(1);\n }\n};\n\n//\n// This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\n// by immediately canceling the parse operation with a\n// {@link ParseCancellationException}. The implementation ensures that the\n// {@link ParserRuleContext//exception} field is set for all parse tree nodes\n// that were not completed prior to encountering the error.\n//\n// <p>\n// This error strategy is useful in the following scenarios.</p>\n//\n// <ul>\n// <li><strong>Two-stage parsing:</strong> This error strategy allows the first\n// stage of two-stage parsing to immediately terminate if an error is\n// encountered, and immediately fall back to the second stage. In addition to\n// avoiding wasted work by attempting to recover from errors here, the empty\n// implementation of {@link BailErrorStrategy//sync} improves the performance of\n// the first stage.</li>\n// <li><strong>Silent validation:</strong> When syntax errors are not being\n// reported or logged, and the parse result is simply ignored if errors occur,\n// the {@link BailErrorStrategy} avoids wasting work on recovering from errors\n// when the result will be ignored either way.</li>\n// </ul>\n//\n// <p>\n// {@code myparser.setErrorHandler(new BailErrorStrategy());}</p>\n//\n// @see Parser//setErrorHandler(ANTLRErrorStrategy)\n//\nfunction BailErrorStrategy() {\n\tDefaultErrorStrategy.call(this);\n\treturn this;\n}\n\nBailErrorStrategy.prototype = Object.create(DefaultErrorStrategy.prototype);\nBailErrorStrategy.prototype.constructor = BailErrorStrategy;\n\n// Instead of recovering from exception {@code e}, re-throw it wrapped\n// in a {@link ParseCancellationException} so it is not caught by the\n// rule function catches. Use {@link Exception//getCause()} to get the\n// original {@link RecognitionException}.\n//\nBailErrorStrategy.prototype.recover = function(recognizer, e) {\n var context = recognizer._ctx;\n while (context !== null) {\n context.exception = e;\n context = context.parentCtx;\n }\n throw new ParseCancellationException(e);\n};\n\n// Make sure we don't attempt to recover inline; if the parser\n// successfully recovers, it won't throw an exception.\n//\nBailErrorStrategy.prototype.recoverInline = function(recognizer) {\n this.recover(recognizer, new InputMismatchException(recognizer));\n};\n\n// Make sure we don't attempt to recover from problems in subrules.//\nBailErrorStrategy.prototype.sync = function(recognizer) {\n // pass\n};\n\nexports.BailErrorStrategy = BailErrorStrategy;\nexports.DefaultErrorStrategy = DefaultErrorStrategy;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\n// 3 kinds of errors: prediction errors, failed predicate errors, and\n// mismatched input errors. In each case, the parser knows where it is\n// in the input, where it is in the ATN, the rule invocation stack,\n// and what kind of problem occurred.\n\nvar PredicateTransition = require('./../atn/Transition').PredicateTransition;\n\nfunction RecognitionException(params) {\n\tError.call(this);\n\tif (!!Error.captureStackTrace) {\n Error.captureStackTrace(this, RecognitionException);\n\t} else {\n\t\tvar stack = new Error().stack;\n\t}\n\tthis.message = params.message;\n this.recognizer = params.recognizer;\n this.input = params.input;\n this.ctx = params.ctx;\n // The current {@link Token} when an error occurred. Since not all streams\n // support accessing symbols by index, we have to track the {@link Token}\n // instance itself.\n this.offendingToken = null;\n // Get the ATN state number the parser was in at the time the error\n // occurred. For {@link NoViableAltException} and\n // {@link LexerNoViableAltException} exceptions, this is the\n // {@link DecisionState} number. For others, it is the state whose outgoing\n // edge we couldn't match.\n this.offendingState = -1;\n if (this.recognizer!==null) {\n this.offendingState = this.recognizer.state;\n }\n return this;\n}\n\nRecognitionException.prototype = Object.create(Error.prototype);\nRecognitionException.prototype.constructor = RecognitionException;\n\n// <p>If the state number is not known, this method returns -1.</p>\n\n//\n// Gets the set of input symbols which could potentially follow the\n// previously matched symbol at the time this exception was thrown.\n//\n// <p>If the set of expected tokens is not known and could not be computed,\n// this method returns {@code null}.</p>\n//\n// @return The set of token types that could potentially follow the current\n// state in the ATN, or {@code null} if the information is not available.\n// /\nRecognitionException.prototype.getExpectedTokens = function() {\n if (this.recognizer!==null) {\n return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);\n } else {\n return null;\n }\n};\n\nRecognitionException.prototype.toString = function() {\n return this.message;\n};\n\nfunction LexerNoViableAltException(lexer, input, startIndex, deadEndConfigs) {\n\tRecognitionException.call(this, {message:\"\", recognizer:lexer, input:input, ctx:null});\n this.startIndex = startIndex;\n this.deadEndConfigs = deadEndConfigs;\n return this;\n}\n\nLexerNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nLexerNoViableAltException.prototype.constructor = LexerNoViableAltException;\n\nLexerNoViableAltException.prototype.toString = function() {\n var symbol = \"\";\n if (this.startIndex >= 0 && this.startIndex < this.input.size) {\n symbol = this.input.getText((this.startIndex,this.startIndex));\n }\n return \"LexerNoViableAltException\" + symbol;\n};\n\n// Indicates that the parser could not decide which of two or more paths\n// to take based upon the remaining input. It tracks the starting token\n// of the offending input and also knows where the parser was\n// in the various paths when the error. Reported by reportNoViableAlternative()\n//\nfunction NoViableAltException(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {\n\tctx = ctx || recognizer._ctx;\n\toffendingToken = offendingToken || recognizer.getCurrentToken();\n\tstartToken = startToken || recognizer.getCurrentToken();\n\tinput = input || recognizer.getInputStream();\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:input, ctx:ctx});\n // Which configurations did we try at input.index() that couldn't match\n\t// input.LT(1)?//\n this.deadEndConfigs = deadEndConfigs;\n // The token object at the start index; the input stream might\n // not be buffering tokens so get a reference to it. (At the\n // time the error occurred, of course the stream needs to keep a\n // buffer all of the tokens but later we might not have access to those.)\n this.startToken = startToken;\n this.offendingToken = offendingToken;\n}\n\nNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nNoViableAltException.prototype.constructor = NoViableAltException;\n\n// This signifies any kind of mismatched input exceptions such as\n// when the current input does not match the expected token.\n//\nfunction InputMismatchException(recognizer) {\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:recognizer.getInputStream(), ctx:recognizer._ctx});\n this.offendingToken = recognizer.getCurrentToken();\n}\n\nInputMismatchException.prototype = Object.create(RecognitionException.prototype);\nInputMismatchException.prototype.constructor = InputMismatchException;\n\n// A semantic predicate failed during validation. Validation of predicates\n// occurs when normally parsing the alternative just like matching a token.\n// Disambiguating predicate evaluation occurs when we test a predicate during\n// prediction.\n\nfunction FailedPredicateException(recognizer, predicate, message) {\n\tRecognitionException.call(this, {message:this.formatMessage(predicate,message || null), recognizer:recognizer,\n input:recognizer.getInputStream(), ctx:recognizer._ctx});\n var s = recognizer._interp.atn.states[recognizer.state];\n var trans = s.transitions[0];\n if (trans instanceof PredicateTransition) {\n this.ruleIndex = trans.ruleIndex;\n this.predicateIndex = trans.predIndex;\n } else {\n this.ruleIndex = 0;\n this.predicateIndex = 0;\n }\n this.predicate = predicate;\n this.offendingToken = recognizer.getCurrentToken();\n return this;\n}\n\nFailedPredicateException.prototype = Object.create(RecognitionException.prototype);\nFailedPredicateException.prototype.constructor = FailedPredicateException;\n\nFailedPredicateException.prototype.formatMessage = function(predicate, message) {\n if (message !==null) {\n return message;\n } else {\n return \"failed predicate: {\" + predicate + \"}?\";\n }\n};\n\nfunction ParseCancellationException() {\n\tError.call(this);\n\tError.captureStackTrace(this, ParseCancellationException);\n\treturn this;\n}\n\nParseCancellationException.prototype = Object.create(Error.prototype);\nParseCancellationException.prototype.constructor = ParseCancellationException;\n\nexports.RecognitionException = RecognitionException;\nexports.NoViableAltException = NoViableAltException;\nexports.LexerNoViableAltException = LexerNoViableAltException;\nexports.InputMismatchException = InputMismatchException;\nexports.FailedPredicateException = FailedPredicateException;\nexports.ParseCancellationException = ParseCancellationException;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.RecognitionException = require('./Errors').RecognitionException;\nexports.NoViableAltException = require('./Errors').NoViableAltException;\nexports.LexerNoViableAltException = require('./Errors').LexerNoViableAltException;\nexports.InputMismatchException = require('./Errors').InputMismatchException;\nexports.FailedPredicateException = require('./Errors').FailedPredicateException;\nexports.DiagnosticErrorListener = require('./DiagnosticErrorListener').DiagnosticErrorListener;\nexports.BailErrorStrategy = require('./ErrorStrategy').BailErrorStrategy;\nexports.ErrorListener = require('./ErrorListener').ErrorListener;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexports.atn = require('./atn/index');\nexports.codepointat = require('./polyfills/codepointat');\nexports.dfa = require('./dfa/index');\nexports.fromcodepoint = require('./polyfills/fromcodepoint');\nexports.tree = require('./tree/index');\nexports.error = require('./error/index');\nexports.Token = require('./Token').Token;\nexports.CharStreams = require('./CharStreams').CharStreams;\nexports.CommonToken = require('./Token').CommonToken;\nexports.InputStream = require('./InputStream').InputStream;\nexports.FileStream = require('./FileStream').FileStream;\nexports.CommonTokenStream = require('./CommonTokenStream').CommonTokenStream;\nexports.Lexer = require('./Lexer').Lexer;\nexports.Parser = require('./Parser').Parser;\nvar pc = require('./PredictionContext');\nexports.PredictionContextCache = pc.PredictionContextCache;\nexports.ParserRuleContext = require('./ParserRuleContext').ParserRuleContext;\nexports.Interval = require('./IntervalSet').Interval;\nexports.Utils = require('./Utils');\n","/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\tvar size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tvar index = position ? Number(position) : 0;\n\t\t\tif (index != index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tvar first = string.charCodeAt(index);\n\t\t\tvar second;\n\t\t\tif ( // check if it’s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n","/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (!String.fromCodePoint) {\n\t(function() {\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar stringFromCharCode = String.fromCharCode;\n\t\tvar floor = Math.floor;\n\t\tvar fromCodePoint = function(_) {\n\t\t\tvar MAX_SIZE = 0x4000;\n\t\t\tvar codeUnits = [];\n\t\t\tvar highSurrogate;\n\t\t\tvar lowSurrogate;\n\t\t\tvar index = -1;\n\t\t\tvar length = arguments.length;\n\t\t\tif (!length) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (++index < length) {\n\t\t\t\tvar codePoint = Number(arguments[index]);\n\t\t\t\tif (\n\t\t\t\t\t!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t\t\t\tcodePoint < 0 || // not a valid Unicode code point\n\t\t\t\t\tcodePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t\t\t\tfloor(codePoint) != codePoint // not an integer\n\t\t\t\t) {\n\t\t\t\t\tthrow RangeError('Invalid code point: ' + codePoint);\n\t\t\t\t}\n\t\t\t\tif (codePoint <= 0xFFFF) { // BMP code point\n\t\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t\t} else { // Astral code point; split in surrogate halves\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\thighSurrogate = (codePoint >> 10) + 0xD800;\n\t\t\t\t\tlowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t\t}\n\t\t\t\tif (index + 1 == length || codeUnits.length > MAX_SIZE) {\n\t\t\t\t\tresult += stringFromCharCode.apply(null, codeUnits);\n\t\t\t\t\tcodeUnits.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String, 'fromCodePoint', {\n\t\t\t\t'value': fromCodePoint,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.fromCodePoint = fromCodePoint;\n\t\t}\n\t}());\n}\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// The basic notion of a tree has a parent, a payload, and a list of children.\n// It is the most abstract interface for all the trees used by ANTLR.\n///\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar INVALID_INTERVAL = new Interval(-1, -2);\nvar Utils = require('../Utils.js');\n\n\nfunction Tree() {\n\treturn this;\n}\n\nfunction SyntaxTree() {\n\tTree.call(this);\n\treturn this;\n}\n\nSyntaxTree.prototype = Object.create(Tree.prototype);\nSyntaxTree.prototype.constructor = SyntaxTree;\n\nfunction ParseTree() {\n\tSyntaxTree.call(this);\n\treturn this;\n}\n\nParseTree.prototype = Object.create(SyntaxTree.prototype);\nParseTree.prototype.constructor = ParseTree;\n\nfunction RuleNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nRuleNode.prototype = Object.create(ParseTree.prototype);\nRuleNode.prototype.constructor = RuleNode;\n\nfunction TerminalNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nTerminalNode.prototype = Object.create(ParseTree.prototype);\nTerminalNode.prototype.constructor = TerminalNode;\n\nfunction ErrorNode() {\n\tTerminalNode.call(this);\n\treturn this;\n}\n\nErrorNode.prototype = Object.create(TerminalNode.prototype);\nErrorNode.prototype.constructor = ErrorNode;\n\nfunction ParseTreeVisitor() {\n\treturn this;\n}\n\nParseTreeVisitor.prototype.visit = function(ctx) {\n \tif (Array.isArray(ctx)) {\n\t\treturn ctx.map(function(child) {\n return child.accept(this);\n }, this);\n\t} else {\n\t\treturn ctx.accept(this);\n\t}\n};\n\nParseTreeVisitor.prototype.visitChildren = function(ctx) {\n return this.visit(ctx.children);\n}\n\nParseTreeVisitor.prototype.visitTerminal = function(node) {\n};\n\nParseTreeVisitor.prototype.visitErrorNode = function(node) {\n};\n\n\nfunction ParseTreeListener() {\n\treturn this;\n}\n\nParseTreeListener.prototype.visitTerminal = function(node) {\n};\n\nParseTreeListener.prototype.visitErrorNode = function(node) {\n};\n\nParseTreeListener.prototype.enterEveryRule = function(node) {\n};\n\nParseTreeListener.prototype.exitEveryRule = function(node) {\n};\n\nfunction TerminalNodeImpl(symbol) {\n\tTerminalNode.call(this);\n\tthis.parentCtx = null;\n\tthis.symbol = symbol;\n\treturn this;\n}\n\nTerminalNodeImpl.prototype = Object.create(TerminalNode.prototype);\nTerminalNodeImpl.prototype.constructor = TerminalNodeImpl;\n\nTerminalNodeImpl.prototype.getChild = function(i) {\n\treturn null;\n};\n\nTerminalNodeImpl.prototype.getSymbol = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getParent = function() {\n\treturn this.parentCtx;\n};\n\nTerminalNodeImpl.prototype.getPayload = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getSourceInterval = function() {\n\tif (this.symbol === null) {\n\t\treturn INVALID_INTERVAL;\n\t}\n\tvar tokenIndex = this.symbol.tokenIndex;\n\treturn new Interval(tokenIndex, tokenIndex);\n};\n\nTerminalNodeImpl.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nTerminalNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitTerminal(this);\n};\n\nTerminalNodeImpl.prototype.getText = function() {\n\treturn this.symbol.text;\n};\n\nTerminalNodeImpl.prototype.toString = function() {\n\tif (this.symbol.type === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else {\n\t\treturn this.symbol.text;\n\t}\n};\n\n// Represents a token that was consumed during resynchronization\n// rather than during a valid match operation. For example,\n// we will create this kind of a node during single token insertion\n// and deletion as well as during \"consume until error recovery set\"\n// upon no viable alternative exceptions.\n\nfunction ErrorNodeImpl(token) {\n\tTerminalNodeImpl.call(this, token);\n\treturn this;\n}\n\nErrorNodeImpl.prototype = Object.create(TerminalNodeImpl.prototype);\nErrorNodeImpl.prototype.constructor = ErrorNodeImpl;\n\nErrorNodeImpl.prototype.isErrorNode = function() {\n\treturn true;\n};\n\nErrorNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitErrorNode(this);\n};\n\nfunction ParseTreeWalker() {\n\treturn this;\n}\n\nParseTreeWalker.prototype.walk = function(listener, t) {\n\tvar errorNode = t instanceof ErrorNode ||\n\t\t\t(t.isErrorNode !== undefined && t.isErrorNode());\n\tif (errorNode) {\n\t\tlistener.visitErrorNode(t);\n\t} else if (t instanceof TerminalNode) {\n\t\tlistener.visitTerminal(t);\n\t} else {\n\t\tthis.enterRule(listener, t);\n\t\tfor (var i = 0; i < t.getChildCount(); i++) {\n\t\t\tvar child = t.getChild(i);\n\t\t\tthis.walk(listener, child);\n\t\t}\n\t\tthis.exitRule(listener, t);\n\t}\n};\n//\n// The discovery of a rule node, involves sending two events: the generic\n// {@link ParseTreeListener//enterEveryRule} and a\n// {@link RuleContext}-specific event. First we trigger the generic and then\n// the rule specific. We to them in reverse order upon finishing the node.\n//\nParseTreeWalker.prototype.enterRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tlistener.enterEveryRule(ctx);\n\tctx.enterRule(listener);\n};\n\nParseTreeWalker.prototype.exitRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tctx.exitRule(listener);\n\tlistener.exitEveryRule(ctx);\n};\n\nParseTreeWalker.DEFAULT = new ParseTreeWalker();\n\nexports.RuleNode = RuleNode;\nexports.ErrorNode = ErrorNode;\nexports.TerminalNode = TerminalNode;\nexports.ErrorNodeImpl = ErrorNodeImpl;\nexports.TerminalNodeImpl = TerminalNodeImpl;\nexports.ParseTreeListener = ParseTreeListener;\nexports.ParseTreeVisitor = ParseTreeVisitor;\nexports.ParseTreeWalker = ParseTreeWalker;\nexports.INVALID_INTERVAL = INVALID_INTERVAL;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Utils = require('./../Utils');\nvar Token = require('./../Token').Token;\nvar RuleNode = require('./Tree').RuleNode;\nvar ErrorNode = require('./Tree').ErrorNode;\nvar TerminalNode = require('./Tree').TerminalNode;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar INVALID_ALT_NUMBER = require('./../atn/ATN').INVALID_ALT_NUMBER;\n\n\n/** A set of utility routines useful for all kinds of ANTLR trees. */\nfunction Trees() {\n}\n\n// Print out a whole tree in LISP form. {@link //getNodeText} is used on the\n// node payloads to get the text for the nodes. Detect\n// parse trees and extract data appropriately.\nTrees.toStringTree = function(tree, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n var s = Trees.getNodeText(tree, ruleNames);\n s = Utils.escapeWhitespace(s, false);\n var c = tree.getChildCount();\n if(c===0) {\n return s;\n }\n var res = \"(\" + s + ' ';\n if(c>0) {\n s = Trees.toStringTree(tree.getChild(0), ruleNames);\n res = res.concat(s);\n }\n for(var i=1;i<c;i++) {\n s = Trees.toStringTree(tree.getChild(i), ruleNames);\n res = res.concat(' ' + s);\n }\n res = res.concat(\")\");\n return res;\n};\n\nTrees.getNodeText = function(t, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n if(ruleNames!==null) {\n if (t instanceof RuleContext) {\n var altNumber = t.getAltNumber();\n if ( altNumber!=INVALID_ALT_NUMBER ) {\n return ruleNames[t.ruleIndex]+\":\"+altNumber;\n }\n return ruleNames[t.ruleIndex];\n } else if ( t instanceof ErrorNode) {\n return t.toString();\n } else if(t instanceof TerminalNode) {\n if(t.symbol!==null) {\n return t.symbol.text;\n }\n }\n }\n // no recog for rule names\n var payload = t.getPayload();\n if (payload instanceof Token ) {\n return payload.text;\n }\n return t.getPayload().toString();\n};\n\n\n// Return ordered list of all children of this node\nTrees.getChildren = function(t) {\n\tvar list = [];\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tlist.push(t.getChild(i));\n\t}\n\treturn list;\n};\n\n// Return a list of all ancestors of this node. The first node of\n// list is the root and the last is the parent of this node.\n//\nTrees.getAncestors = function(t) {\n var ancestors = [];\n t = t.getParent();\n while(t!==null) {\n ancestors = [t].concat(ancestors);\n t = t.getParent();\n }\n return ancestors;\n};\n\nTrees.findAllTokenNodes = function(t, ttype) {\n return Trees.findAllNodes(t, ttype, true);\n};\n\nTrees.findAllRuleNodes = function(t, ruleIndex) {\n\treturn Trees.findAllNodes(t, ruleIndex, false);\n};\n\nTrees.findAllNodes = function(t, index, findTokens) {\n\tvar nodes = [];\n\tTrees._findAllNodes(t, index, findTokens, nodes);\n\treturn nodes;\n};\n\nTrees._findAllNodes = function(t, index, findTokens, nodes) {\n\t// check this node (the root) first\n\tif(findTokens && (t instanceof TerminalNode)) {\n\t\tif(t.symbol.type===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t} else if(!findTokens && (t instanceof ParserRuleContext)) {\n\t\tif(t.ruleIndex===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t}\n\t// check children\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tTrees._findAllNodes(t.getChild(i), index, findTokens, nodes);\n\t}\n};\n\nTrees.descendants = function(t) {\n\tvar nodes = [t];\n for(var i=0;i<t.getChildCount();i++) {\n nodes = nodes.concat(Trees.descendants(t.getChild(i)));\n }\n return nodes;\n};\n\n\nexports.Trees = Trees;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Tree = require('./Tree');\nexports.Trees = require('./Trees').Trees;\nexports.RuleNode = Tree.RuleNode;\nexports.ParseTreeListener = Tree.ParseTreeListener;\nexports.ParseTreeVisitor = Tree.ParseTreeVisitor;\nexports.ParseTreeWalker = Tree.ParseTreeWalker;\n","/*! decimal.js v10.0.1 https://github.com/MikeMcl/decimal.js/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js v10.0.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2017 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\n var EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n Decimal, inexact, noConflict, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { name: '[object Decimal]' };\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * ceil\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\n P.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\n P.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\n P.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * Math.pow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = Math.pow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\n P.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\n P.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = Math.pow(4, -k).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\n P.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(Math.pow(5, -k));\r\n\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\n P.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\n P.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\n P.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\n P.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\n P.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\n P.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\n P.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\n P.isFinite = function () {\r\n return !!this.d;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\n P.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\n P.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\n P.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n };\r\n\r\n\r\n\r\n /*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\n P.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n // Add aliases to match BigDecimal method names.\r\n // P.add = P.plus;\r\n P.subtract = P.minus;\r\n P.multiply = P.times;\r\n P.divide = P.div;\r\n P.remainder = P.mod;\r\n P.compareTo = P.cmp;\r\n P.negate = P.neg;\r\n */\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\n function checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n // Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n // Eg. convertBase('255', 10, 16) returns [15, 15].\r\n // Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\n function convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n\r\n /*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function cosine(Ctor, x) {\r\n var k, y,\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = Math.pow(4, -k).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Perform division in the specified base.\r\n */\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n }\r\n\r\n\r\n function getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n }\r\n\r\n\r\n function getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\n function intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n }\r\n\r\n\r\n function isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n }\r\n\r\n\r\n /*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\n function maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\n function naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\n function naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n // ±Infinity, NaN.\r\n function nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\n function parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? Math.pow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) return taylorSeries(Ctor, 2, x, x);\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n // Max k before Math.pow precision loss is 22\r\n x = x.times(Math.pow(5, -k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\n function taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n }\r\n\r\n\r\n // Return the absolute value of `x` reduced to less than or equal to half pi.\r\n function toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\n function toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function abs(x) {\r\n return new this(x).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function acos(x) {\r\n return new this(x).acos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function acosh(x) {\r\n return new this(x).acosh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function add(x, y) {\r\n return new this(x).plus(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function asin(x) {\r\n return new this(x).asin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function asinh(x) {\r\n return new this(x).asinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function atan(x) {\r\n return new this(x).atan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function atanh(x) {\r\n return new this(x).atanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\n function atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function cbrt(x) {\r\n return new this(x).cbrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cos(x) {\r\n return new this(x).cos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cosh(x) {\r\n return new this(x).cosh();\r\n }\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (v instanceof Decimal) {\r\n x.s = v.s;\r\n x.e = v.e;\r\n x.d = (v = v.d) ? v.slice() : v;\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n x.e = e;\r\n x.d = [v];\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if (v.charCodeAt(0) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function div(x, y) {\r\n return new this(x).div(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\n function exp(x) {\r\n return new this(x).exp();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n */\r\n function hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\n function isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.name === '[object Decimal]' || false;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ln(x) {\r\n return new this(x).ln();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n function log(x, y) {\r\n return new this(x).log(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log2(x) {\r\n return new this(x).log(2);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log10(x) {\r\n return new this(x).log(10);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mod(x, y) {\r\n return new this(x).mod(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mul(x, y) {\r\n return new this(x).mul(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\n function pow(x, y) {\r\n return new this(x).pow(y);\r\n }\r\n\r\n\r\n /*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\n function random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n }\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n */\r\n function sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sin(x) {\r\n return new this(x).sin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sinh(x) {\r\n return new this(x).sinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function sqrt(x) {\r\n return new this(x).sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function sub(x, y) {\r\n return new this(x).sub(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tan(x) {\r\n return new this(x).tan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tanh(x) {\r\n return new this(x).tanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(DEFAULTS);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Create the internal constants from their string values.\r\n LN10 = new Decimal(LN10);\r\n PI = new Decimal(PI);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self ? self : window;\r\n }\r\n\r\n noConflict = globalScope.Decimal;\r\n Decimal.noConflict = function () {\r\n globalScope.Decimal = noConflict;\r\n return Decimal;\r\n };\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","var LanguageService = /** @class */ (function () {\n function LanguageService(lsKey, defaultLang) {\n if (defaultLang === void 0) { defaultLang = 'pt'; }\n this.lsKey = lsKey;\n this.defaultLang = defaultLang;\n this.listeners = [];\n this.document = document;\n this.setupListener();\n }\n LanguageService.prototype.setupListener = function () {\n var _this = this;\n if (this.document !== null) {\n this.document.addEventListener(\"storage\", (function (event) {\n var e = event;\n if (e.key === _this.lsKey) {\n _this.listeners.forEach(function (l) { return l(); });\n }\n }));\n }\n };\n LanguageService.prototype.getLang = function () {\n var lang = localStorage.getItem(this.lsKey);\n if (lang === null || lang === undefined) {\n console.warn(\"Internal Error: User language information has not been set. Returning default...\");\n return this.getDefaultLang();\n }\n return lang;\n };\n LanguageService.prototype.getDefaultLang = function () {\n return this.defaultLang;\n };\n LanguageService.prototype.registerLanguageChangeListener = function (listener) {\n this.listeners.push(listener);\n };\n return LanguageService;\n}());\nexport { LanguageService };\n","var LanguageServiceNoLS = /** @class */ (function () {\n function LanguageServiceNoLS(lang) {\n this.lang = lang;\n this.listeners = [];\n }\n LanguageServiceNoLS.prototype.setupListener = function () { };\n LanguageServiceNoLS.prototype.notifyChange = function () {\n this.listeners.forEach(function (l) { return l(); });\n };\n LanguageServiceNoLS.prototype.setLang = function (lang) {\n this.lang = lang;\n this.notifyChange();\n };\n LanguageServiceNoLS.prototype.getLang = function () {\n return this.lang;\n };\n LanguageServiceNoLS.prototype.getDefaultLang = function () {\n return this.lang;\n };\n LanguageServiceNoLS.prototype.registerLanguageChangeListener = function (listener) {\n this.listeners.push(listener);\n };\n return LanguageServiceNoLS;\n}());\nexport { LanguageServiceNoLS };\n","import { StringTypes } from './StringTypes';\nvar LocalizedStrings = /** @class */ (function () {\n function LocalizedStrings(service, i18nData, listenToChange) {\n if (listenToChange === void 0) { listenToChange = false; }\n var _this = this;\n this.service = service;\n this.i18nData = i18nData;\n this.listenToChange = listenToChange;\n this.document = document;\n if (this.listenToChange) {\n service.registerLanguageChangeListener(function () {\n _this.updateTagText();\n });\n }\n }\n LocalizedStrings.prototype.getString = function (id, type) {\n var i18nObj = this.i18nData[this.service.getLang()];\n if (!!!i18nObj) {\n console.warn(\"Internal Error. The language set at ivprog.lang is not valid: \" + this.service.getLang());\n i18nObj = this.i18nData[this.service.getDefaultLang()];\n }\n if (!!!i18nObj[type]) {\n return \"{MISSING_I18N_TYPE_IDENTIFIER}\";\n }\n else if (!!!i18nObj[type][id]) {\n return \"{MISSING_I18N_IDENTIFIER}\";\n }\n else {\n return i18nObj[type][id];\n }\n };\n LocalizedStrings.prototype.getOR = function () {\n return this.getUI('join_or');\n };\n LocalizedStrings.prototype.getError = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.ERROR);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.getMessage = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.MESSAGE);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.getUI = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.UI);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.processString = function (text, context) {\n for (var i = 0; i < context.length; i++) {\n var v = context[i];\n text = text.replace('\\$' + i, v);\n }\n return text;\n };\n LocalizedStrings.prototype.updateTagText = function (func) {\n var _this = this;\n if (func === void 0) { func = null; }\n if (this.document !== null) {\n var list = this.document.querySelectorAll(\"data.i18n\");\n list.forEach(function (node) {\n if (func === null) {\n node.innerHTML = _this.processTagTex(node.getAttribute(\"value\"));\n }\n else {\n node.innerHTML = func(node.getAttribute(\"value\"));\n }\n });\n }\n };\n LocalizedStrings.prototype.processTagTex = function (text) {\n if (text === null) {\n return \"<Invalid i18n identifier>\";\n }\n var opts = text.split(':');\n var type = opts[0].toLowerCase();\n var id = opts[1];\n if (StringTypes.ERROR === type) {\n return this.getError(id);\n }\n else if (StringTypes.MESSAGE === type) {\n return this.getMessage(id);\n }\n else if (StringTypes.UI === type) {\n return this.getUI(id);\n }\n else {\n console.warn(\" A string has been passed to the i18n helper function that was not in the form type:id -> \" + text);\n return this.getString(id, type);\n }\n };\n return LocalizedStrings;\n}());\nexport { LocalizedStrings };\n","export var StringTypes;\n(function (StringTypes) {\n StringTypes[\"ERROR\"] = \"error\";\n StringTypes[\"MESSAGE\"] = \"message\";\n StringTypes[\"UI\"] = \"ui\";\n})(StringTypes || (StringTypes = {}));\n","import { LanguageService } from \"./LanguageService\";\nimport { LocalizedStrings } from \"./LocalizedStrings\";\nimport { StringTypes } from \"./StringTypes\";\nimport { LanguageServiceNoLS } from \"./LanguageServiceNoLS\";\nexport default {\n LanguageService: LanguageService,\n LanguageServiceNoLS: LanguageServiceNoLS,\n LocalizedStrings: LocalizedStrings,\n StringTypes: StringTypes\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}