4;:[10885],\"lat;\":[10923],\"lcy;\":[1083],\"leg;\":[8922],\"leq;\":[8804],\"les;\":[10877],\"lfr;\":[120105],\"lgE;\":[10897],\"lnE;\":[8808],\"lne;\":[10887],\"loz;\":[9674],\"lrm;\":[8206],\"lsh;\":[8624],\"macr\":[175],\"map;\":[8614],\"mcy;\":[1084],\"mfr;\":[120106],\"mho;\":[8487],\"mid;\":[8739],\"nGg;\":[8921,824],\"nGt;\":[8811,8402],\"nLl;\":[8920,824],\"nLt;\":[8810,8402],\"nap;\":[8777],\"nbsp\":[160],\"ncy;\":[1085],\"nfr;\":[120107],\"ngE;\":[8807,824],\"nge;\":[8817],\"ngt;\":[8815],\"nis;\":[8956],\"niv;\":[8715],\"nlE;\":[8806,824],\"nle;\":[8816],\"nlt;\":[8814],\"not;\":[172],\"npr;\":[8832],\"nsc;\":[8833],\"num;\":[35],\"ocy;\":[1086],\"ofr;\":[120108],\"ogt;\":[10689],\"ohm;\":[937],\"olt;\":[10688],\"ord;\":[10845],\"ordf\":[170],\"ordm\":[186],\"orv;\":[10843],\"ouml\":[246],\"par;\":[8741],\"para\":[182],\"pcy;\":[1087],\"pfr;\":[120109],\"phi;\":[966],\"piv;\":[982],\"prE;\":[10931],\"pre;\":[10927],\"psi;\":[968],\"qfr;\":[120110],\"quot\":[34],\"rcy;\":[1088],\"reg;\":[174],\"rfr;\":[120111],\"rho;\":[961],\"rlm;\":[8207],\"rsh;\":[8625],\"scE;\":[10932],\"sce;\":[10928],\"scy;\":[1089],\"sect\":[167],\"sfr;\":[120112],\"shy;\":[173],\"sim;\":[8764],\"smt;\":[10922],\"sol;\":[47],\"squ;\":[9633],\"sub;\":[8834],\"sum;\":[8721],\"sup1\":[185],\"sup2\":[178],\"sup3\":[179],\"sup;\":[8835],\"tau;\":[964],\"tcy;\":[1090],\"tfr;\":[120113],\"top;\":[8868],\"ucy;\":[1091],\"ufr;\":[120114],\"uml;\":[168],\"uuml\":[252],\"vcy;\":[1074],\"vee;\":[8744],\"vfr;\":[120115],\"wfr;\":[120116],\"xfr;\":[120117],\"ycy;\":[1099],\"yen;\":[165],\"yfr;\":[120118],\"yuml\":[255],\"zcy;\":[1079],\"zfr;\":[120119],\"zwj;\":[8205]}},{\"length\":3,\"entities\":{\"AMP\":[38],\"DD;\":[8517],\"ETH\":[208],\"GT;\":[62],\"Gg;\":[8921],\"Gt;\":[8811],\"Im;\":[8465],\"LT;\":[60],\"Ll;\":[8920],\"Lt;\":[8810],\"Mu;\":[924],\"Nu;\":[925],\"Or;\":[10836],\"Pi;\":[928],\"Pr;\":[10939],\"REG\":[174],\"Re;\":[8476],\"Sc;\":[10940],\"Xi;\":[926],\"ac;\":[8766],\"af;\":[8289],\"amp\":[38],\"ap;\":[8776],\"dd;\":[8518],\"deg\":[176],\"ee;\":[8519],\"eg;\":[10906],\"el;\":[10905],\"eth\":[240],\"gE;\":[8807],\"ge;\":[8805],\"gg;\":[8811],\"gl;\":[8823],\"gt;\":[62],\"ic;\":[8291],\"ii;\":[8520],\"in;\":[8712],\"it;\":[8290],\"lE;\":[8806],\"le;\":[8804],\"lg;\":[8822],\"ll;\":[8810],\"lt;\":[60],\"mp;\":[8723],\"mu;\":[956],\"ne;\":[8800],\"ni;\":[8715],\"not\":[172],\"nu;\":[957],\"oS;\":[9416],\"or;\":[8744],\"pi;\":[960],\"pm;\":[177],\"pr;\":[8826],\"reg\":[174],\"rx;\":[8478],\"sc;\":[8827],\"shy\":[173],\"uml\":[168],\"wp;\":[8472],\"wr;\":[8768],\"xi;\":[958],\"yen\":[165]}},{\"length\":2,\"entities\":{\"GT\":[62],\"LT\":[60],\"gt\":[62],\"lt\":[60]}}]\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\nexport const EOF = -1\nexport const NULL = 0x00\nexport const TABULATION = 0x09\nexport const CARRIAGE_RETURN = 0x0D\nexport const LINE_FEED = 0x0A\nexport const FORM_FEED = 0x0C\nexport const SPACE = 0x20\nexport const EXCLAMATION_MARK = 0x21\nexport const QUOTATION_MARK = 0x22\nexport const NUMBER_SIGN = 0x23\nexport const AMPERSAND = 0x26\nexport const APOSTROPHE = 0x27\nexport const HYPHEN_MINUS = 0x2D\nexport const SOLIDUS = 0x2F\nexport const DIGIT_0 = 0x30\nexport const DIGIT_9 = 0x39\nexport const SEMICOLON = 0x3B\nexport const LESS_THAN_SIGN = 0x3C\nexport const EQUALS_SIGN = 0x3D\nexport const GREATER_THAN_SIGN = 0x3E\nexport const QUESTION_MARK = 0x3F\nexport const LATIN_CAPITAL_A = 0x41\nexport const LATIN_CAPITAL_D = 0x44\nexport const LATIN_CAPITAL_F = 0x46\nexport const LATIN_CAPITAL_X = 0x58\nexport const LATIN_CAPITAL_Z = 0x5A\nexport const LEFT_SQUARE_BRACKET = 0x5B\nexport const RIGHT_SQUARE_BRACKET = 0x5D\nexport const GRAVE_ACCENT = 0x60\nexport const LATIN_SMALL_A = 0x61\nexport const LATIN_SMALL_F = 0x66\nexport const LATIN_SMALL_X = 0x78\nexport const LATIN_SMALL_Z = 0x7A\nexport const LEFT_CURLY_BRACKET = 0x7B\nexport const RIGHT_CURLY_BRACKET = 0x7D\nexport const NULL_REPLACEMENT = 0xFFFD\n\n/**\n * Check whether the code point is a whitespace.\n * @param cp The code point to check.\n * @returns `true` if the code point is a whitespace.\n */\nexport function isWhitespace(cp: number): boolean {\n return cp === TABULATION || cp === LINE_FEED || cp === FORM_FEED || cp === CARRIAGE_RETURN || cp === SPACE\n}\n\n/**\n * Check whether the code point is an uppercase letter character.\n * @param cp The code point to check.\n * @returns `true` if the code point is an uppercase letter character.\n */\nexport function isUpperLetter(cp: number): boolean {\n return cp >= LATIN_CAPITAL_A && cp <= LATIN_CAPITAL_Z\n}\n\n/**\n * Check whether the code point is a lowercase letter character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a lowercase letter character.\n */\nexport function isLowerLetter(cp: number): boolean {\n return cp >= LATIN_SMALL_A && cp <= LATIN_SMALL_Z\n}\n\n/**\n * Check whether the code point is a letter character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a letter character.\n */\nexport function isLetter(cp: number): boolean {\n return isLowerLetter(cp) || isUpperLetter(cp)\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isDigit(cp: number): boolean {\n return cp >= DIGIT_0 && cp <= DIGIT_9\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isUpperHexDigit(cp: number): boolean {\n return cp >= LATIN_CAPITAL_A && cp <= LATIN_CAPITAL_F\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isLowerHexDigit(cp: number): boolean {\n return cp >= LATIN_SMALL_A && cp <= LATIN_SMALL_F\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isHexDigit(cp: number): boolean {\n return isDigit(cp) || isUpperHexDigit(cp) || isLowerHexDigit(cp)\n}\n\n/**\n * Check whether the code point is a control character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a control character.\n */\nexport function isControl(cp: number): boolean {\n return (cp >= 0 && cp <= 0x1F) || (cp >= 0x7F && cp <= 0x9F)\n}\n\n/**\n * Check whether the code point is a surrogate character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a surrogate character.\n */\nexport function isSurrogate(cp: number): boolean {\n return cp >= 0xD800 && cp <= 0xDFFF\n}\n\n/**\n * Check whether the code point is a surrogate pair character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a surrogate pair character.\n */\nexport function isSurrogatePair(cp: number): boolean {\n return cp >= 0xDC00 && cp <= 0xDFFF\n}\n\n/**\n * Check whether the code point is a surrogate character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a surrogate character.\n */\nexport function isNonCharacter(cp: number): boolean {\n return (\n (cp >= 0xFDD0 && cp <= 0xFDEF) ||\n ((cp & 0xFFFE) === 0xFFFE && cp <= 0x10FFFF)\n )\n}\n\n// export function isReservedCodePoint(cp: number): boolean {\n// return (cp >= 0xD800 && cp <= 0xDFFF) || cp > 0x10FFFF\n// }\n\n/**\n * Convert the given character to lowercases.\n * @param cp The code point to convert.\n * @returns Converted code point.\n */\nexport function toLowerCodePoint(cp: number): number {\n return cp + 0x0020\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport assert from \"assert\"\nimport { debug } from \"../common/debug\"\nimport { ErrorCode, Namespace, NS, ParseError, Token } from \"../ast\"\nimport { alternativeCR } from \"./util/alternative-cr\"\nimport { entitySets } from \"./util/entities\"\nimport {\n AMPERSAND, APOSTROPHE, CARRIAGE_RETURN, EOF, EQUALS_SIGN, EXCLAMATION_MARK,\n GRAVE_ACCENT, GREATER_THAN_SIGN, HYPHEN_MINUS, isControl, isDigit,\n isHexDigit, isLetter, isLowerHexDigit, isNonCharacter, isSurrogate,\n isSurrogatePair, isUpperHexDigit, isUpperLetter, isWhitespace,\n LATIN_CAPITAL_D, LATIN_CAPITAL_X, LATIN_SMALL_X, LEFT_CURLY_BRACKET,\n LEFT_SQUARE_BRACKET, LESS_THAN_SIGN, LINE_FEED, NULL, NULL_REPLACEMENT,\n NUMBER_SIGN, QUESTION_MARK, QUOTATION_MARK, RIGHT_CURLY_BRACKET,\n RIGHT_SQUARE_BRACKET, SEMICOLON, SOLIDUS, toLowerCodePoint,\n} from \"./util/unicode\"\n\n/**\n * Enumeration of token types.\n */\nexport type TokenType =\n \"HTMLAssociation\" |\n \"HTMLBogusComment\" |\n \"HTMLCDataText\" |\n \"HTMLComment\" |\n \"HTMLEndTagOpen\" |\n \"HTMLIdentifier\" |\n \"HTMLLiteral\" |\n \"HTMLRCDataText\" |\n \"HTMLRawText\" |\n \"HTMLSelfClosingTagClose\" |\n \"HTMLTagClose\" |\n \"HTMLTagOpen\" |\n \"HTMLText\" |\n \"HTMLWhitespace\" |\n \"VExpressionStart\" |\n \"VExpressionEnd\"\n\n/**\n * Enumeration of tokenizer's state types.\n */\nexport type TokenizerState =\n \"DATA\" |\n \"TAG_OPEN\" |\n \"END_TAG_OPEN\" |\n \"TAG_NAME\" |\n \"RCDATA\" |\n \"RCDATA_LESS_THAN_SIGN\" |\n \"RCDATA_END_TAG_OPEN\" |\n \"RCDATA_END_TAG_NAME\" |\n \"RAWTEXT\" |\n \"RAWTEXT_LESS_THAN_SIGN\" |\n \"RAWTEXT_END_TAG_OPEN\" |\n \"RAWTEXT_END_TAG_NAME\" |\n \"BEFORE_ATTRIBUTE_NAME\" |\n \"ATTRIBUTE_NAME\" |\n \"AFTER_ATTRIBUTE_NAME\" |\n \"BEFORE_ATTRIBUTE_VALUE\" |\n \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\" |\n \"ATTRIBUTE_VALUE_SINGLE_QUOTED\" |\n \"ATTRIBUTE_VALUE_UNQUOTED\" |\n \"AFTER_ATTRIBUTE_VALUE_QUOTED\" |\n \"SELF_CLOSING_START_TAG\" |\n \"BOGUS_COMMENT\" |\n \"MARKUP_DECLARATION_OPEN\" |\n \"COMMENT_START\" |\n \"COMMENT_START_DASH\" |\n \"COMMENT\" |\n \"COMMENT_LESS_THAN_SIGN\" |\n \"COMMENT_LESS_THAN_SIGN_BANG\" |\n \"COMMENT_LESS_THAN_SIGN_BANG_DASH\" |\n \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\" |\n \"COMMENT_END_DASH\" |\n \"COMMENT_END\" |\n \"COMMENT_END_BANG\" |\n \"CDATA_SECTION\" |\n \"CDATA_SECTION_BRACKET\" |\n \"CDATA_SECTION_END\" |\n \"CHARACTER_REFERENCE\" |\n \"NAMED_CHARACTER_REFERENCE\" |\n \"AMBIGUOUS_AMPERSAND\" |\n \"NUMERIC_CHARACTER_REFERENCE\" |\n \"HEXADEMICAL_CHARACTER_REFERENCE_START\" |\n \"DECIMAL_CHARACTER_REFERENCE_START\" |\n \"HEXADEMICAL_CHARACTER_REFERENCE\" |\n \"DECIMAL_CHARACTER_REFERENCE\" |\n \"NUMERIC_CHARACTER_REFERENCE_END\" |\n \"CHARACTER_REFERENCE_END\" |\n \"V_EXPRESSION_START\" |\n \"V_EXPRESSION_END\"\n // ---- Use RAWTEXT state for <script> elements instead ----\n // \"SCRIPT_DATA\" |\n // \"SCRIPT_DATA_LESS_THAN_SIGN\" |\n // \"SCRIPT_DATA_END_TAG_OPEN\" |\n // \"SCRIPT_DATA_END_TAG_NAME\" |\n // \"SCRIPT_DATA_ESCAPE_START\" |\n // \"SCRIPT_DATA_ESCAPE_START_DASH\" |\n // \"SCRIPT_DATA_ESCAPED\" |\n // \"SCRIPT_DATA_ESCAPED_DASH\" |\n // \"SCRIPT_DATA_ESCAPED_DASH_DASH\" |\n // \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\" |\n // \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\" |\n // \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\" |\n // \"SCRIPT_DATA_DOUBLE_ESCAPE_START\" |\n // \"SCRIPT_DATA_DOUBLE_ESCAPED\" |\n // \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\" |\n // \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\" |\n // \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\" |\n // \"SCRIPT_DATA_DOUBLE_ESCAPE_END\" |\n // ---- Use BOGUS_COMMENT state for DOCTYPEs instead ----\n // \"DOCTYPE\" |\n // \"DOCTYPE_NAME\" |\n // \"AFTER_DOCTYPE_NAME\" |\n // \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\" |\n // \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\" |\n // \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\" |\n // \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\" |\n // \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\" |\n // \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\" |\n // \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\" |\n // \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\" |\n // \"BOGUS_DOCTYPE\"\n\n/**\n * Tokenizer for HTML.\n */\nexport class Tokenizer {\n // Reading\n public readonly text: string\n public readonly gaps: number[]\n public readonly lineTerminators: number[]\n private lastCodePoint: number\n private offset: number\n private column: number\n private line: number\n\n // Tokenizing\n private returnState: TokenizerState\n private reconsuming: boolean\n private buffer: number[]\n private crStartOffset: number\n private crCode: number\n private committedToken: Token | null\n private provisionalToken: Token | null // can be rollbacked.\n private currentToken: Token | null\n private lastTagOpenToken: Token | null\n private tokenStartOffset: number\n private tokenStartLine: number\n private tokenStartColumn: number\n\n /**\n * The current state.\n */\n public state: TokenizerState\n\n /**\n * Syntax errors.\n */\n public errors: ParseError[]\n\n /**\n * The current namespace.\n */\n public namespace: Namespace\n\n /**\n * The flag which enables expression tokens.\n * If this is true, this tokenizer will generate V_EXPRESSION_START and V_EXPRESSION_END tokens.\n */\n public expressionEnabled: boolean\n\n /**\n * Initialize this tokenizer.\n * @param text The source code to tokenize.\n */\n constructor(text: string) {\n debug(\"[html] the source code length: %d\", text.length)\n this.text = text\n this.gaps = []\n this.lineTerminators = []\n this.lastCodePoint = NULL\n this.offset = -1\n this.column = -1\n this.line = 1\n this.state = \"DATA\"\n this.returnState = \"DATA\"\n this.reconsuming = false\n this.buffer = []\n this.crStartOffset = -1\n this.crCode = 0\n this.errors = []\n this.committedToken = null\n this.provisionalToken = null\n this.currentToken = null\n this.lastTagOpenToken = null\n this.tokenStartOffset = -1\n this.tokenStartColumn = -1\n this.tokenStartLine = 1\n this.namespace = NS.HTML\n this.expressionEnabled = false\n }\n\n /**\n * Get the next token.\n * @returns The next token or null.\n */\n public nextToken(): Token | null {\n let cp = this.lastCodePoint\n while (this.committedToken == null && (cp !== EOF || this.reconsuming)) {\n if (this.provisionalToken != null && !this.isProvisionalState()) {\n this.commitProvisionalToken()\n if (this.committedToken != null) {\n break\n }\n }\n\n if (this.reconsuming) {\n this.reconsuming = false\n cp = this.lastCodePoint\n }\n else {\n cp = this.consumeNextCodePoint()\n }\n\n debug(\"[html] parse\", cp, this.state)\n this.state = this[this.state](cp)\n }\n\n {\n const token = this.consumeCommittedToken()\n if (token != null) {\n return token\n }\n }\n\n assert(cp === EOF)\n\n if (this.currentToken != null) {\n this.endToken()\n\n const token = this.consumeCommittedToken()\n if (token != null) {\n return token\n }\n }\n return this.currentToken\n }\n\n /**\n * Consume the last committed token.\n * @returns The last committed token.\n */\n private consumeCommittedToken(): Token | null {\n const token = this.committedToken\n this.committedToken = null\n return token\n }\n\n /**\n * Consume the next code point.\n * @returns The consumed code point.\n */\n private consumeNextCodePoint(): number {\n if (this.offset >= this.text.length) {\n this.lastCodePoint = EOF\n return EOF\n }\n\n this.offset += (this.lastCodePoint >= 0x10000 ? 2 : 1)\n if (this.offset >= this.text.length) {\n this.advanceLocation()\n this.lastCodePoint = EOF\n return EOF\n }\n\n const cp = this.text.codePointAt(this.offset) as number\n\n if (isSurrogate(this.text.charCodeAt(this.offset)) &&\n !isSurrogatePair(this.text.charCodeAt(this.offset + 1))\n ) {\n this.reportParseError(\"surrogate-in-input-stream\")\n }\n if (isNonCharacter(cp)) {\n this.reportParseError(\"noncharacter-in-input-stream\")\n }\n if (isControl(cp) && !isWhitespace(cp) && cp !== NULL) {\n this.reportParseError(\"control-character-in-input-stream\")\n }\n\n // Skip LF to convert CRLF → LF.\n if (this.lastCodePoint === CARRIAGE_RETURN && cp === LINE_FEED) {\n this.lastCodePoint = LINE_FEED\n this.gaps.push(this.offset)\n return this.consumeNextCodePoint()\n }\n\n // Update locations.\n this.advanceLocation()\n this.lastCodePoint = cp\n\n // To convert CRLF → LF.\n if (cp === CARRIAGE_RETURN) {\n return LINE_FEED\n }\n\n return cp\n }\n\n /**\n * Advance the current line and column.\n */\n private advanceLocation(): void {\n if (this.lastCodePoint === LINE_FEED) {\n this.lineTerminators.push(this.offset)\n this.line += 1\n this.column = 0\n }\n else {\n this.column += (this.lastCodePoint >= 0x10000 ? 2 : 1)\n }\n }\n\n /**\n * Directive reconsuming the current code point as the given state.\n * @param state The next state.\n * @returns The next state.\n */\n private reconsumeAs(state: TokenizerState): TokenizerState {\n this.reconsuming = true\n return state\n }\n\n /**\n * Report an invalid character error.\n * @param code The error code.\n */\n private reportParseError(code: ErrorCode): void {\n const error = ParseError.fromCode(code, this.offset, this.line, this.column)\n this.errors.push(error)\n\n debug(\"[html] syntax error:\", error.message)\n }\n\n /**\n * Mark the current location as a start of tokens.\n */\n private setStartTokenMark(): void {\n this.tokenStartOffset = this.offset\n this.tokenStartLine = this.line\n this.tokenStartColumn = this.column\n }\n\n /**\n * Mark the current location as a start of tokens.\n */\n private clearStartTokenMark(): void {\n this.tokenStartOffset = -1\n }\n\n /**\n * Start new token.\n * @param type The type of new token.\n * @returns The new token.\n */\n private startToken(type: TokenType): Token {\n if (this.tokenStartOffset === -1) {\n this.setStartTokenMark()\n }\n const offset = this.tokenStartOffset\n const line = this.tokenStartLine\n const column = this.tokenStartColumn\n\n if (this.currentToken != null) {\n this.endToken()\n }\n this.tokenStartOffset = -1\n\n const token = this.currentToken = {\n type,\n range: [offset, -1],\n loc: {\n start: { line, column },\n end: { line: -1, column: -1 },\n },\n value: \"\",\n }\n\n debug(\"[html] start token: %d %s\", offset, token.type)\n return this.currentToken\n }\n\n /**\n * Commit the current token.\n * @returns The ended token.\n */\n private endToken(): Token | null {\n if (this.currentToken == null) {\n throw new Error(\"Invalid state\")\n }\n if (this.tokenStartOffset === -1) {\n this.setStartTokenMark()\n }\n const token = this.currentToken\n const offset = this.tokenStartOffset\n const line = this.tokenStartLine\n const column = this.tokenStartColumn\n const provisional = this.isProvisionalState()\n\n this.currentToken = null\n this.tokenStartOffset = -1\n\n token.range[1] = offset\n token.loc.end.line = line\n token.loc.end.column = column\n\n if (token.range[0] === offset && !provisional) {\n debug(\"[html] abandon token: %j %s %j\", token.range, token.type, token.value)\n return null\n }\n\n if (provisional) {\n if (this.provisionalToken != null) {\n this.commitProvisionalToken()\n }\n this.provisionalToken = token\n debug(\"[html] provisional-commit token: %j %s %j\", token.range, token.type, token.value)\n }\n else {\n this.commitToken(token)\n }\n\n return token\n }\n\n /**\n * Commit the given token.\n * @param token The token to commit.\n */\n private commitToken(token: Token): void {\n assert(this.committedToken == null, \"Invalid state: the commited token existed already.\")\n debug(\"[html] commit token: %j %j %s %j\", token.range, token.loc, token.type, token.value)\n\n this.committedToken = token\n if (token.type === \"HTMLTagOpen\") {\n this.lastTagOpenToken = token\n }\n }\n\n /**\n * Check whether this is provisional state or not.\n * @returns `true` if this is provisional state.\n */\n private isProvisionalState(): boolean {\n return this.state.startsWith(\"RCDATA_\") || this.state.startsWith(\"RAWTEXT_\")\n }\n\n /**\n * Commit the last provisional committed token.\n */\n private commitProvisionalToken(): void {\n assert(this.provisionalToken != null, \"Invalid state: the provisional token was not found.\")\n\n const token = this.provisionalToken as Token\n this.provisionalToken = null\n\n if (token.range[0] < token.range[1]) {\n this.commitToken(token)\n }\n }\n\n /**\n * Cancel the current token and set the last provisional committed token as the current token.\n */\n private rollbackProvisionalToken(): void {\n assert(this.currentToken != null)\n assert(this.provisionalToken != null)\n\n const token = this.currentToken as Token\n debug(\"[html] rollback token: %d %s\", token.range[0], token.type)\n\n this.currentToken = this.provisionalToken as Token\n this.provisionalToken = null\n }\n\n /**\n * Append the given code point into the value of the current token.\n * @param cp The code point to append.\n * @param expected The expected type of the current token.\n */\n private appendTokenValue(cp: number, expected: TokenType | null): void {\n const token = this.currentToken\n if (token == null || (expected != null && token.type !== expected)) {\n const msg1 = (expected ? `\"${expected}\" type` : \"any token\")\n const msg2 = (token ? `\"${token.type}\" type` : \"no token\")\n\n throw new Error(`Tokenizer: Invalid state. Expected ${msg1}, but got ${msg2}.`)\n }\n\n token.value += String.fromCodePoint(cp)\n }\n\n /**\n * Check whether the current token is appropriate `HTMLEndTagOpen` token.\n * @returns {boolean} `true` if the current token is appropriate `HTMLEndTagOpen` token.\n */\n private isAppropriateEndTagOpen(): boolean {\n return (\n this.currentToken != null &&\n this.lastTagOpenToken != null &&\n this.currentToken.type === \"HTMLEndTagOpen\" &&\n this.currentToken.value === this.lastTagOpenToken.value\n )\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#data-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected DATA(cp: number): TokenizerState {\n this.clearStartTokenMark()\n\n while (true) {\n const type = isWhitespace(cp) ? \"HTMLWhitespace\" : \"HTMLText\"\n if (this.currentToken != null && this.currentToken.type !== type) {\n this.endToken()\n return this.reconsumeAs(this.state)\n }\n if (this.currentToken == null) {\n this.startToken(type)\n }\n\n if (cp === AMPERSAND) {\n this.returnState = \"DATA\"\n return \"CHARACTER_REFERENCE\"\n }\n if (cp === LESS_THAN_SIGN) {\n this.setStartTokenMark()\n return \"TAG_OPEN\"\n }\n if (cp === LEFT_CURLY_BRACKET && this.expressionEnabled) {\n this.setStartTokenMark()\n this.returnState = \"DATA\"\n return \"V_EXPRESSION_START\"\n }\n if (cp === RIGHT_CURLY_BRACKET && this.expressionEnabled) {\n this.setStartTokenMark()\n this.returnState = \"DATA\"\n return \"V_EXPRESSION_END\"\n }\n if (cp === EOF) {\n return \"DATA\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n }\n this.appendTokenValue(cp, type)\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RCDATA(cp: number): TokenizerState {\n this.clearStartTokenMark()\n\n while (true) {\n const type = isWhitespace(cp) ? \"HTMLWhitespace\" : \"HTMLRCDataText\"\n if (this.currentToken != null && this.currentToken.type !== type) {\n this.endToken()\n return this.reconsumeAs(this.state)\n }\n if (this.currentToken == null) {\n this.startToken(type)\n }\n\n if (cp === AMPERSAND) {\n this.returnState = \"RCDATA\"\n return \"CHARACTER_REFERENCE\"\n }\n if (cp === LESS_THAN_SIGN) {\n this.setStartTokenMark()\n return \"RCDATA_LESS_THAN_SIGN\"\n }\n if (cp === LEFT_CURLY_BRACKET && this.expressionEnabled) {\n this.setStartTokenMark()\n this.returnState = \"RCDATA\"\n return \"V_EXPRESSION_START\"\n }\n if (cp === RIGHT_CURLY_BRACKET && this.expressionEnabled) {\n this.setStartTokenMark()\n this.returnState = \"RCDATA\"\n return \"V_EXPRESSION_END\"\n }\n if (cp === EOF) {\n return \"DATA\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n this.appendTokenValue(cp, type)\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RAWTEXT(cp: number): TokenizerState {\n this.clearStartTokenMark()\n\n while (true) {\n const type = isWhitespace(cp) ? \"HTMLWhitespace\" : \"HTMLRawText\"\n if (this.currentToken != null && this.currentToken.type !== type) {\n this.endToken()\n return this.reconsumeAs(this.state)\n }\n if (this.currentToken == null) {\n this.startToken(type)\n }\n\n if (cp === LESS_THAN_SIGN) {\n this.setStartTokenMark()\n return \"RAWTEXT_LESS_THAN_SIGN\"\n }\n if (cp === LEFT_CURLY_BRACKET && this.expressionEnabled) {\n this.setStartTokenMark()\n this.returnState = \"RAWTEXT\"\n return \"V_EXPRESSION_START\"\n }\n if (cp === RIGHT_CURLY_BRACKET && this.expressionEnabled) {\n this.setStartTokenMark()\n this.returnState = \"RAWTEXT\"\n return \"V_EXPRESSION_END\"\n }\n if (cp === EOF) {\n return \"DATA\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n this.appendTokenValue(cp, type)\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected TAG_OPEN(cp: number): TokenizerState {\n if (cp === EXCLAMATION_MARK) {\n return \"MARKUP_DECLARATION_OPEN\"\n }\n if (cp === SOLIDUS) {\n return \"END_TAG_OPEN\"\n }\n if (isLetter(cp)) {\n this.startToken(\"HTMLTagOpen\")\n return this.reconsumeAs(\"TAG_NAME\")\n }\n if (cp === QUESTION_MARK) {\n this.reportParseError(\"unexpected-question-mark-instead-of-tag-name\")\n this.startToken(\"HTMLBogusComment\")\n return this.reconsumeAs(\"BOGUS_COMMENT\")\n }\n if (cp === EOF) {\n this.clearStartTokenMark()\n this.reportParseError(\"eof-before-tag-name\")\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLText\")\n return \"DATA\"\n }\n\n this.reportParseError(\"invalid-first-character-of-tag-name\")\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLText\")\n return this.reconsumeAs(\"DATA\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#end-tag-open-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected END_TAG_OPEN(cp: number): TokenizerState {\n if (isLetter(cp)) {\n this.startToken(\"HTMLEndTagOpen\")\n return this.reconsumeAs(\"TAG_NAME\")\n }\n if (cp === GREATER_THAN_SIGN) {\n this.endToken() // < Commit or abandon the current text token.\n this.reportParseError(\"missing-end-tag-name\")\n return \"DATA\"\n }\n if (cp === EOF) {\n this.clearStartTokenMark()\n this.reportParseError(\"eof-before-tag-name\")\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLText\")\n this.appendTokenValue(SOLIDUS, \"HTMLText\")\n return \"DATA\"\n }\n\n this.reportParseError(\"invalid-first-character-of-tag-name\")\n this.startToken(\"HTMLBogusComment\")\n return this.reconsumeAs(\"BOGUS_COMMENT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected TAG_NAME(cp: number): TokenizerState {\n while (true) {\n if (isWhitespace(cp)) {\n this.endToken()\n return \"BEFORE_ATTRIBUTE_NAME\"\n }\n if (cp === SOLIDUS) {\n this.endToken()\n this.setStartTokenMark()\n return \"SELF_CLOSING_START_TAG\"\n }\n if (cp === GREATER_THAN_SIGN) {\n this.startToken(\"HTMLTagClose\")\n return \"DATA\"\n }\n if (cp === EOF) {\n this.reportParseError(\"eof-in-tag\")\n return \"DATA\"\n }\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n\n this.appendTokenValue(\n isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n null\n )\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-less-than-sign-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RCDATA_LESS_THAN_SIGN(cp: number): TokenizerState {\n if (cp === SOLIDUS) {\n this.buffer = []\n return \"RCDATA_END_TAG_OPEN\"\n }\n\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRCDataText\")\n return this.reconsumeAs(\"RCDATA\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-end-tag-open-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RCDATA_END_TAG_OPEN(cp: number): TokenizerState {\n if (isLetter(cp)) {\n this.startToken(\"HTMLEndTagOpen\")\n return this.reconsumeAs(\"RCDATA_END_TAG_NAME\")\n }\n\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRCDataText\")\n this.appendTokenValue(SOLIDUS, \"HTMLRCDataText\")\n return this.reconsumeAs(\"RCDATA\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-end-tag-name-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RCDATA_END_TAG_NAME(cp: number): TokenizerState {\n while (true) {\n if (isWhitespace(cp) && this.isAppropriateEndTagOpen()) {\n this.endToken()\n return \"BEFORE_ATTRIBUTE_NAME\"\n }\n if (cp === SOLIDUS && this.isAppropriateEndTagOpen()) {\n this.endToken()\n this.setStartTokenMark()\n return \"SELF_CLOSING_START_TAG\"\n }\n if (cp === GREATER_THAN_SIGN && this.isAppropriateEndTagOpen()) {\n this.startToken(\"HTMLTagClose\")\n return \"DATA\"\n }\n if (!isLetter(cp)) {\n this.rollbackProvisionalToken()\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRCDataText\")\n this.appendTokenValue(SOLIDUS, \"HTMLRCDataText\")\n for (const cp1 of this.buffer) {\n this.appendTokenValue(cp1, \"HTMLRCDataText\")\n }\n return this.reconsumeAs(\"RCDATA\")\n }\n\n this.appendTokenValue(\n isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n \"HTMLEndTagOpen\"\n )\n this.buffer.push(cp)\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-less-than-sign-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RAWTEXT_LESS_THAN_SIGN(cp: number): TokenizerState {\n if (cp === SOLIDUS) {\n this.buffer = []\n return \"RAWTEXT_END_TAG_OPEN\"\n }\n\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRawText\")\n return this.reconsumeAs(\"RAWTEXT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-end-tag-open-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RAWTEXT_END_TAG_OPEN(cp: number): TokenizerState {\n if (isLetter(cp)) {\n this.startToken(\"HTMLEndTagOpen\")\n return this.reconsumeAs(\"RAWTEXT_END_TAG_NAME\")\n }\n\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRawText\")\n this.appendTokenValue(SOLIDUS, \"HTMLRawText\")\n return this.reconsumeAs(\"RAWTEXT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-end-tag-name-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected RAWTEXT_END_TAG_NAME(cp: number): TokenizerState {\n while (true) {\n if (cp === SOLIDUS && this.isAppropriateEndTagOpen()) {\n this.endToken()\n this.setStartTokenMark()\n return \"SELF_CLOSING_START_TAG\"\n }\n if (cp === GREATER_THAN_SIGN && this.isAppropriateEndTagOpen()) {\n this.startToken(\"HTMLTagClose\")\n return \"DATA\"\n }\n if (isWhitespace(cp) && this.isAppropriateEndTagOpen()) {\n this.endToken()\n return \"BEFORE_ATTRIBUTE_NAME\"\n }\n if (!isLetter(cp)) {\n this.rollbackProvisionalToken()\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRawText\")\n this.appendTokenValue(SOLIDUS, \"HTMLRawText\")\n for (const cp1 of this.buffer) {\n this.appendTokenValue(cp1, \"HTMLRawText\")\n }\n return this.reconsumeAs(\"RAWTEXT\")\n }\n\n this.appendTokenValue(\n isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n \"HTMLEndTagOpen\"\n )\n this.buffer.push(cp)\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected BEFORE_ATTRIBUTE_NAME(cp: number): TokenizerState {\n while (isWhitespace(cp)) {\n cp = this.consumeNextCodePoint()\n }\n\n if (cp === SOLIDUS || cp === GREATER_THAN_SIGN || cp === EOF) {\n return this.reconsumeAs(\"AFTER_ATTRIBUTE_NAME\")\n }\n\n if (cp === EQUALS_SIGN) {\n this.reportParseError(\"unexpected-equals-sign-before-attribute-name\")\n this.startToken(\"HTMLIdentifier\")\n this.appendTokenValue(cp, \"HTMLIdentifier\")\n return \"ATTRIBUTE_NAME\"\n }\n\n this.startToken(\"HTMLIdentifier\")\n return this.reconsumeAs(\"ATTRIBUTE_NAME\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#attribute-name-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected ATTRIBUTE_NAME(cp: number): TokenizerState {\n while (true) {\n if (isWhitespace(cp) || cp === SOLIDUS || cp === GREATER_THAN_SIGN || cp === EOF) {\n this.endToken()\n return this.reconsumeAs(\"AFTER_ATTRIBUTE_NAME\")\n }\n if (cp === EQUALS_SIGN) {\n this.startToken(\"HTMLAssociation\")\n return \"BEFORE_ATTRIBUTE_VALUE\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n if (cp === QUOTATION_MARK || cp === APOSTROPHE || cp === LESS_THAN_SIGN) {\n this.reportParseError(\"unexpected-character-in-attribute-name\")\n }\n\n this.appendTokenValue(\n isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n \"HTMLIdentifier\"\n )\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#after-attribute-name-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected AFTER_ATTRIBUTE_NAME(cp: number): TokenizerState {\n while (isWhitespace(cp)) {\n cp = this.consumeNextCodePoint()\n }\n\n if (cp === SOLIDUS) {\n this.setStartTokenMark()\n return \"SELF_CLOSING_START_TAG\"\n }\n if (cp === EQUALS_SIGN) {\n this.startToken(\"HTMLAssociation\")\n return \"BEFORE_ATTRIBUTE_VALUE\"\n }\n if (cp === GREATER_THAN_SIGN) {\n this.startToken(\"HTMLTagClose\")\n return \"DATA\"\n }\n\n if (cp === EOF) {\n this.reportParseError(\"eof-in-tag\")\n return \"DATA\"\n }\n\n this.startToken(\"HTMLIdentifier\")\n return this.reconsumeAs(\"ATTRIBUTE_NAME\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#before-attribute-value-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected BEFORE_ATTRIBUTE_VALUE(cp: number): TokenizerState {\n this.endToken()\n\n while (isWhitespace(cp)) {\n cp = this.consumeNextCodePoint()\n }\n\n if (cp === GREATER_THAN_SIGN) {\n this.reportParseError(\"missing-attribute-value\")\n this.startToken(\"HTMLTagClose\")\n return \"DATA\"\n }\n\n this.startToken(\"HTMLLiteral\")\n if (cp === QUOTATION_MARK) {\n return \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"\n }\n if (cp === APOSTROPHE) {\n return \"ATTRIBUTE_VALUE_SINGLE_QUOTED\"\n }\n return this.reconsumeAs(\"ATTRIBUTE_VALUE_UNQUOTED\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(double-quoted)-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected ATTRIBUTE_VALUE_DOUBLE_QUOTED(cp: number): TokenizerState {\n while (true) {\n if (cp === QUOTATION_MARK) {\n return \"AFTER_ATTRIBUTE_VALUE_QUOTED\"\n }\n if (cp === AMPERSAND) {\n this.returnState = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"\n return \"CHARACTER_REFERENCE\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n if (cp === EOF) {\n this.reportParseError(\"eof-in-tag\")\n return \"DATA\"\n }\n\n this.appendTokenValue(cp, \"HTMLLiteral\")\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(single-quoted)-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected ATTRIBUTE_VALUE_SINGLE_QUOTED(cp: number): TokenizerState {\n while (true) {\n if (cp === APOSTROPHE) {\n return \"AFTER_ATTRIBUTE_VALUE_QUOTED\"\n }\n if (cp === AMPERSAND) {\n this.returnState = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\"\n return \"CHARACTER_REFERENCE\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n if (cp === EOF) {\n this.reportParseError(\"eof-in-tag\")\n return \"DATA\"\n }\n\n this.appendTokenValue(cp, \"HTMLLiteral\")\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(unquoted)-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected ATTRIBUTE_VALUE_UNQUOTED(cp: number): TokenizerState {\n while (true) {\n if (isWhitespace(cp)) {\n this.endToken()\n return \"BEFORE_ATTRIBUTE_NAME\"\n }\n if (cp === AMPERSAND) {\n this.returnState = \"ATTRIBUTE_VALUE_UNQUOTED\"\n return \"CHARACTER_REFERENCE\"\n }\n if (cp === GREATER_THAN_SIGN) {\n this.startToken(\"HTMLTagClose\")\n return \"DATA\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n if (cp === QUOTATION_MARK || cp === APOSTROPHE || cp === LESS_THAN_SIGN || cp === EQUALS_SIGN || cp === GRAVE_ACCENT) {\n this.reportParseError(\"unexpected-character-in-unquoted-attribute-value\")\n }\n if (cp === EOF) {\n this.reportParseError(\"eof-in-tag\")\n return \"DATA\"\n }\n\n this.appendTokenValue(cp, \"HTMLLiteral\")\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#after-attribute-value-(quoted)-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected AFTER_ATTRIBUTE_VALUE_QUOTED(cp: number): TokenizerState {\n this.endToken()\n\n if (isWhitespace(cp)) {\n return \"BEFORE_ATTRIBUTE_NAME\"\n }\n if (cp === SOLIDUS) {\n this.setStartTokenMark()\n return \"SELF_CLOSING_START_TAG\"\n }\n if (cp === GREATER_THAN_SIGN) {\n this.startToken(\"HTMLTagClose\")\n return \"DATA\"\n }\n\n if (cp === EOF) {\n this.reportParseError(\"eof-in-tag\")\n return \"DATA\"\n }\n\n this.reportParseError(\"missing-whitespace-between-attributes\")\n return this.reconsumeAs(\"BEFORE_ATTRIBUTE_NAME\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#self-closing-start-tag-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected SELF_CLOSING_START_TAG(cp: number): TokenizerState {\n if (cp === GREATER_THAN_SIGN) {\n this.startToken(\"HTMLSelfClosingTagClose\")\n\n // Vue.js supports self-closing elements.\n // So don't switch to RCDATA/RAWTEXT from any elements.\n return \"DATA\"\n }\n\n if (cp === EOF) {\n this.reportParseError(\"eof-in-tag\")\n return \"DATA\"\n }\n\n this.reportParseError(\"unexpected-solidus-in-tag\")\n this.clearStartTokenMark()\n return this.reconsumeAs(\"BEFORE_ATTRIBUTE_NAME\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#bogus-comment-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected BOGUS_COMMENT(cp: number): TokenizerState {\n while (true) {\n if (cp === GREATER_THAN_SIGN) {\n return \"DATA\"\n }\n\n if (cp === EOF) {\n return \"DATA\"\n }\n if (cp === NULL) {\n cp = NULL_REPLACEMENT\n }\n this.appendTokenValue(cp, null)\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected MARKUP_DECLARATION_OPEN(cp: number): TokenizerState {\n if (cp === HYPHEN_MINUS && this.text[this.offset + 1] === \"-\") {\n this.offset += 1\n this.column += 1\n\n this.startToken(\"HTMLComment\")\n return \"COMMENT_START\"\n }\n if (cp === LATIN_CAPITAL_D && this.text.slice(this.offset + 1, this.offset + 7) === \"OCTYPE\") {\n // It does not support DOCTYPE.\n // this.offset += 6\n // this.column += 6\n // return \"DOCTYPE\"\n\n // TODO\n this.startToken(\"HTMLBogusComment\")\n this.appendTokenValue(cp, \"HTMLBogusComment\")\n return \"BOGUS_COMMENT\"\n }\n if (cp === LEFT_SQUARE_BRACKET && this.text.slice(this.offset + 1, this.offset + 7) === \"CDATA[\") {\n this.offset += 6\n this.column += 6\n\n if (this.namespace === NS.HTML) {\n this.reportParseError(\"cdata-in-html-content\")\n this.startToken(\"HTMLBogusComment\").value = \"[CDATA[\"\n return \"BOGUS_COMMENT\"\n }\n\n this.startToken(\"HTMLCDataText\")\n return \"CDATA_SECTION\"\n }\n\n this.reportParseError(\"incorrectly-opened-comment\")\n this.startToken(\"HTMLBogusComment\")\n return this.reconsumeAs(\"BOGUS_COMMENT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-start-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_START(cp: number): TokenizerState {\n if (cp === HYPHEN_MINUS) {\n return \"COMMENT_START_DASH\"\n }\n if (cp === GREATER_THAN_SIGN) {\n this.reportParseError(\"abrupt-closing-of-empty-comment\")\n return \"DATA\"\n }\n\n return this.reconsumeAs(\"COMMENT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-start-dash-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_START_DASH(cp: number): TokenizerState {\n if (cp === HYPHEN_MINUS) {\n return \"COMMENT_END\"\n }\n\n if (cp === GREATER_THAN_SIGN) {\n this.reportParseError(\"abrupt-closing-of-empty-comment\")\n return \"DATA\"\n }\n if (cp === EOF) {\n this.reportParseError(\"eof-in-comment\")\n return \"DATA\"\n }\n\n this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n return this.reconsumeAs(\"COMMENT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT(cp: number): TokenizerState {\n while (true) {\n if (cp === LESS_THAN_SIGN) {\n this.appendTokenValue(LESS_THAN_SIGN, \"HTMLComment\")\n return \"COMMENT_LESS_THAN_SIGN\"\n }\n if (cp === HYPHEN_MINUS) {\n return \"COMMENT_END_DASH\"\n }\n\n if (cp === NULL) {\n this.reportParseError(\"unexpected-null-character\")\n cp = NULL_REPLACEMENT\n }\n if (cp === EOF) {\n this.reportParseError(\"eof-in-comment\")\n return \"DATA\"\n }\n\n this.appendTokenValue(cp, \"HTMLComment\")\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_LESS_THAN_SIGN(cp: number): TokenizerState {\n while (true) {\n if (cp === EXCLAMATION_MARK) {\n this.appendTokenValue(cp, \"HTMLComment\")\n return \"COMMENT_LESS_THAN_SIGN_BANG\"\n }\n if (cp !== LESS_THAN_SIGN) {\n return this.reconsumeAs(\"COMMENT\")\n }\n\n this.appendTokenValue(cp, \"HTMLComment\")\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-bang-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_LESS_THAN_SIGN_BANG(cp: number): TokenizerState {\n if (cp === HYPHEN_MINUS) {\n return \"COMMENT_LESS_THAN_SIGN_BANG_DASH\"\n }\n return this.reconsumeAs(\"COMMENT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-bang-dash-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_LESS_THAN_SIGN_BANG_DASH(cp: number): TokenizerState {\n if (cp === HYPHEN_MINUS) {\n return \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"\n }\n return this.reconsumeAs(\"COMMENT_END_DASH\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-bang-dash-dash-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH(cp: number): TokenizerState {\n if (cp !== GREATER_THAN_SIGN && cp !== EOF) {\n this.reportParseError(\"nested-comment\")\n }\n return this.reconsumeAs(\"COMMENT_END\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-end-dash-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_END_DASH(cp: number): TokenizerState {\n if (cp === HYPHEN_MINUS) {\n return \"COMMENT_END\"\n }\n\n if (cp === EOF) {\n this.reportParseError(\"eof-in-comment\")\n return \"DATA\"\n }\n\n this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n return this.reconsumeAs(\"COMMENT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-end-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_END(cp: number): TokenizerState {\n while (true) {\n if (cp === GREATER_THAN_SIGN) {\n return \"DATA\"\n }\n if (cp === EXCLAMATION_MARK) {\n return \"COMMENT_END_BANG\"\n }\n\n if (cp === EOF) {\n this.reportParseError(\"eof-in-comment\")\n return \"DATA\"\n }\n\n this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n\n if (cp !== HYPHEN_MINUS) {\n return this.reconsumeAs(\"COMMENT\")\n }\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#comment-end-bang-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected COMMENT_END_BANG(cp: number): TokenizerState {\n if (cp === HYPHEN_MINUS) {\n this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n this.appendTokenValue(EXCLAMATION_MARK, \"HTMLComment\")\n return \"COMMENT_END_DASH\"\n }\n\n if (cp === GREATER_THAN_SIGN) {\n this.reportParseError(\"incorrectly-closed-comment\")\n return \"DATA\"\n }\n if (cp === EOF) {\n this.reportParseError(\"eof-in-comment\")\n return \"DATA\"\n }\n\n this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n this.appendTokenValue(EXCLAMATION_MARK, \"HTMLComment\")\n return this.reconsumeAs(\"COMMENT\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#cdata-section-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected CDATA_SECTION(cp: number): TokenizerState {\n while (true) {\n if (cp === RIGHT_SQUARE_BRACKET) {\n return \"CDATA_SECTION_BRACKET\"\n }\n\n if (cp === EOF) {\n this.reportParseError(\"eof-in-cdata\")\n return \"DATA\"\n }\n\n this.appendTokenValue(cp, \"HTMLCDataText\")\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#cdata-section-bracket-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected CDATA_SECTION_BRACKET(cp: number): TokenizerState {\n if (cp === RIGHT_SQUARE_BRACKET) {\n return \"CDATA_SECTION_END\"\n }\n\n this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n return this.reconsumeAs(\"CDATA_SECTION\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#cdata-section-end-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected CDATA_SECTION_END(cp: number): TokenizerState {\n while (true) {\n if (cp === GREATER_THAN_SIGN) {\n return \"DATA\"\n }\n if (cp !== RIGHT_SQUARE_BRACKET) {\n this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n return this.reconsumeAs(\"CDATA_SECTION\")\n }\n\n this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#character-reference-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected CHARACTER_REFERENCE(cp: number): TokenizerState {\n this.crStartOffset = this.offset - 1\n this.buffer = [AMPERSAND]\n\n if (isWhitespace(cp) || cp === LESS_THAN_SIGN || cp === EOF) {\n return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n }\n if (cp === NUMBER_SIGN) {\n this.buffer.push(cp)\n return \"NUMERIC_CHARACTER_REFERENCE\"\n }\n return this.reconsumeAs(\"NAMED_CHARACTER_REFERENCE\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected NAMED_CHARACTER_REFERENCE(cp: number): TokenizerState {\n for (const entitySet of entitySets) {\n const length = entitySet.length\n const entities = entitySet.entities\n const text = this.text.slice(this.offset, this.offset + length)\n const codepoints = entities[text]\n\n if (codepoints == null) {\n continue\n }\n\n const semi = text.endsWith(\";\")\n const next = this.text.codePointAt(this.offset + 1)\n\n this.offset += length - 1\n this.column += length - 1\n\n if (this.returnState.startsWith(\"ATTR\") &&\n !semi &&\n next != null &&\n (next === EQUALS_SIGN || isLetter(next) || isDigit(next))\n ) {\n for (const cp1 of text) {\n this.buffer.push(cp1.codePointAt(0) as number)\n }\n }\n else {\n if (!semi) {\n this.reportParseError(\"missing-semicolon-after-character-reference\")\n }\n this.buffer = codepoints\n }\n\n return \"CHARACTER_REFERENCE_END\"\n }\n\n for (const cp0 of this.buffer) {\n this.appendTokenValue(cp0, null)\n }\n this.appendTokenValue(cp, null)\n\n return \"AMBIGUOUS_AMPERSAND\"\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#ambiguous-ampersand-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected AMBIGUOUS_AMPERSAND(cp: number): TokenizerState {\n while (isDigit(cp) || isLetter(cp)) {\n this.appendTokenValue(cp, null)\n cp = this.consumeNextCodePoint()\n }\n\n if (cp === SEMICOLON) {\n this.reportParseError(\"unknown-named-character-reference\")\n }\n return this.reconsumeAs(this.returnState)\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected NUMERIC_CHARACTER_REFERENCE(cp: number): TokenizerState {\n this.crCode = 0\n\n if (cp === LATIN_SMALL_X || cp === LATIN_CAPITAL_X) {\n this.buffer.push(cp)\n return \"HEXADEMICAL_CHARACTER_REFERENCE_START\"\n }\n return this.reconsumeAs(\"DECIMAL_CHARACTER_REFERENCE_START\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#hexademical-character-reference-start-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected HEXADEMICAL_CHARACTER_REFERENCE_START(cp: number): TokenizerState {\n if (isHexDigit(cp)) {\n return this.reconsumeAs(\"HEXADEMICAL_CHARACTER_REFERENCE\")\n }\n\n this.reportParseError(\"absence-of-digits-in-numeric-character-reference\")\n return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#decimal-character-reference-start-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected DECIMAL_CHARACTER_REFERENCE_START(cp: number): TokenizerState {\n if (isDigit(cp)) {\n return this.reconsumeAs(\"DECIMAL_CHARACTER_REFERENCE\")\n }\n\n this.reportParseError(\"absence-of-digits-in-numeric-character-reference\")\n return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#hexademical-character-reference-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected HEXADEMICAL_CHARACTER_REFERENCE(cp: number): TokenizerState {\n while (true) {\n if (isDigit(cp)) {\n this.crCode = 16 * this.crCode + (cp - 0x30)\n }\n else if (isUpperHexDigit(cp)) {\n this.crCode = 16 * this.crCode + (cp - 0x37)\n }\n else if (isLowerHexDigit(cp)) {\n this.crCode = 16 * this.crCode + (cp - 0x57)\n }\n else {\n if (cp === SEMICOLON) {\n return \"NUMERIC_CHARACTER_REFERENCE_END\"\n }\n\n this.reportParseError(\"missing-semicolon-after-character-reference\")\n return this.reconsumeAs(\"NUMERIC_CHARACTER_REFERENCE_END\")\n }\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#decimal-character-reference-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected DECIMAL_CHARACTER_REFERENCE(cp: number): TokenizerState {\n while (true) {\n if (isDigit(cp)) {\n this.crCode = 10 * this.crCode + (cp - 0x30)\n }\n else {\n if (cp === SEMICOLON) {\n return \"NUMERIC_CHARACTER_REFERENCE_END\"\n }\n\n this.reportParseError(\"missing-semicolon-after-character-reference\")\n return this.reconsumeAs(\"NUMERIC_CHARACTER_REFERENCE_END\")\n }\n\n cp = this.consumeNextCodePoint()\n }\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected NUMERIC_CHARACTER_REFERENCE_END(_cp: number): TokenizerState {\n let code = this.crCode\n\n if (code === 0) {\n this.reportParseError(\"null-character-reference\")\n code = NULL_REPLACEMENT\n }\n else if (code > 0x10FFFF) {\n this.reportParseError(\"character-reference-outside-unicode-range\")\n code = NULL_REPLACEMENT\n }\n else if (isSurrogate(code)) {\n this.reportParseError(\"surrogate-character-reference\")\n code = NULL_REPLACEMENT\n }\n else if (isNonCharacter(code)) {\n this.reportParseError(\"noncharacter-character-reference\")\n }\n else if (code === 0x0D || (isControl(code) && !isWhitespace(code))) {\n this.reportParseError(\"control-character-reference\")\n code = alternativeCR.get(code) || code\n }\n\n this.buffer = [code]\n return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n }\n\n /**\n * https://html.spec.whatwg.org/multipage/parsing.html#character-reference-end-state\n * @param cp The current code point.\n * @returns The next state.\n */\n protected CHARACTER_REFERENCE_END(_cp: number): TokenizerState {\n assert(this.currentToken != null)\n\n // The this.buffer.length is not new length since it includes surrogate pairs.\n // Calculate new length.\n const token = this.currentToken as Token\n const len0 = token.value.length\n for (const cp1 of this.buffer) {\n this.appendTokenValue(cp1, null)\n }\n const newLength = token.value.length - len0\n\n // Make gaps in the difference of length.\n for (let i = this.crStartOffset + newLength; i < this.offset; ++i) {\n this.gaps.push(i)\n }\n\n return this.reconsumeAs(this.returnState)\n }\n\n /**\n * Original state.\n * Create `{{ `token.\n * @param cp The current code point.\n * @returns The next state.\n */\n protected V_EXPRESSION_START(cp: number): TokenizerState {\n if (cp === LEFT_CURLY_BRACKET) {\n this.startToken(\"VExpressionStart\")\n this.appendTokenValue(LEFT_CURLY_BRACKET, null)\n this.appendTokenValue(LEFT_CURLY_BRACKET, null)\n return this.returnState\n }\n\n this.appendTokenValue(LEFT_CURLY_BRACKET, null)\n return this.reconsumeAs(this.returnState)\n }\n\n /**\n * Create `}} `token.\n * @param cp The current code point.\n * @returns The next state.\n */\n protected V_EXPRESSION_END(cp: number): TokenizerState {\n if (cp === RIGHT_CURLY_BRACKET) {\n this.startToken(\"VExpressionEnd\")\n this.appendTokenValue(RIGHT_CURLY_BRACKET, null)\n this.appendTokenValue(RIGHT_CURLY_BRACKET, null)\n return this.returnState\n }\n\n this.appendTokenValue(RIGHT_CURLY_BRACKET, null)\n return this.reconsumeAs(this.returnState)\n }\n}\n","/**\n * This file is copied from `eslint/lib/util/node-event-generator.js`\n */\nimport EventEmitter from \"events\"\nimport esquery, {Selector} from \"esquery\"\nimport union from \"lodash/union\"\nimport intersection from \"lodash/intersection\"\nimport memoize from \"lodash/memoize\"\nimport {Node} from \"../ast\"\n\ninterface NodeSelector {\n rawSelector: string\n isExit: boolean\n parsedSelector: Selector\n listenerTypes: string[] | null\n attributeCount: number\n identifierCount: number\n}\n\n/**\n* Gets the possible types of a selector\n* @param parsedSelector An object (from esquery) describing the matching behavior of the selector\n* @returns The node types that could possibly trigger this selector, or `null` if all node types could trigger it\n*/\nfunction getPossibleTypes(parsedSelector: Selector): string[] | null {\n switch (parsedSelector.type) {\n case \"identifier\":\n return [parsedSelector.value]\n\n case \"matches\": {\n const typesForComponents = parsedSelector.selectors.map(getPossibleTypes)\n\n if (typesForComponents.every(Boolean)) {\n return union.apply(null, typesForComponents)\n }\n return null\n }\n\n case \"compound\": {\n const typesForComponents = parsedSelector.selectors.map(getPossibleTypes).filter(typesForComponent => typesForComponent)\n\n // If all of the components could match any type, then the compound could also match any type.\n if (!typesForComponents.length) {\n return null\n }\n\n /*\n * If at least one of the components could only match a particular type, the compound could only match\n * the intersection of those types.\n */\n return intersection.apply(null, typesForComponents)\n }\n\n case \"child\":\n case \"descendant\":\n case \"sibling\":\n case \"adjacent\":\n return getPossibleTypes(parsedSelector.right)\n\n default:\n return null\n }\n}\n\n/**\n * Counts the number of class, pseudo-class, and attribute queries in this selector\n * @param parsedSelector An object (from esquery) describing the selector's matching behavior\n * @returns The number of class, pseudo-class, and attribute queries in this selector\n */\nfunction countClassAttributes(parsedSelector: Selector): number {\n switch (parsedSelector.type) {\n case \"child\":\n case \"descendant\":\n case \"sibling\":\n case \"adjacent\":\n return countClassAttributes(parsedSelector.left) + countClassAttributes(parsedSelector.right)\n\n case \"compound\":\n case \"not\":\n case \"matches\":\n return parsedSelector.selectors.reduce((sum, childSelector) => sum + countClassAttributes(childSelector), 0)\n\n case \"attribute\":\n case \"field\":\n case \"nth-child\":\n case \"nth-last-child\":\n return 1\n\n default:\n return 0\n }\n}\n\n/**\n * Counts the number of identifier queries in this selector\n * @param parsedSelector An object (from esquery) describing the selector's matching behavior\n * @returns The number of identifier queries\n */\nfunction countIdentifiers(parsedSelector: Selector): number {\n switch (parsedSelector.type) {\n case \"child\":\n case \"descendant\":\n case \"sibling\":\n case \"adjacent\":\n return countIdentifiers(parsedSelector.left) + countIdentifiers(parsedSelector.right)\n\n case \"compound\":\n case \"not\":\n case \"matches\":\n return parsedSelector.selectors.reduce((sum, childSelector) => sum + countIdentifiers(childSelector), 0)\n\n case \"identifier\":\n return 1\n\n default:\n return 0\n }\n}\n\n/**\n * Compares the specificity of two selector objects, with CSS-like rules.\n * @param selectorA An AST selector descriptor\n * @param selectorB Another AST selector descriptor\n * @returns\n * a value less than 0 if selectorA is less specific than selectorB\n * a value greater than 0 if selectorA is more specific than selectorB\n * a value less than 0 if selectorA and selectorB have the same specificity, and selectorA <= selectorB alphabetically\n * a value greater than 0 if selectorA and selectorB have the same specificity, and selectorA > selectorB alphabetically\n */\nfunction compareSpecificity(selectorA: NodeSelector, selectorB: NodeSelector): number {\n return selectorA.attributeCount - selectorB.attributeCount ||\n selectorA.identifierCount - selectorB.identifierCount ||\n (selectorA.rawSelector <= selectorB.rawSelector ? -1 : 1)\n}\n\n/**\n * Parses a raw selector string, and throws a useful error if parsing fails.\n * @param rawSelector A raw AST selector\n * @returns An object (from esquery) describing the matching behavior of this selector\n * @throws An error if the selector is invalid\n */\nfunction tryParseSelector(rawSelector: string): Selector {\n try {\n return esquery.parse(rawSelector.replace(/:exit$/, \"\"))\n }\n catch (err) {\n if (typeof err.offset === \"number\") {\n throw new Error(`Syntax error in selector \"${rawSelector}\" at position ${err.offset}: ${err.message}`)\n }\n throw err\n }\n}\n\n/**\n * Parses a raw selector string, and returns the parsed selector along with specificity and type information.\n * @param {string} rawSelector A raw AST selector\n * @returns {ASTSelector} A selector descriptor\n */\nconst parseSelector = memoize<(rawSelector: string) => NodeSelector>(rawSelector => {\n const parsedSelector = tryParseSelector(rawSelector)\n\n return {\n rawSelector,\n isExit: rawSelector.endsWith(\":exit\"),\n parsedSelector,\n listenerTypes: getPossibleTypes(parsedSelector),\n attributeCount: countClassAttributes(parsedSelector),\n identifierCount: countIdentifiers(parsedSelector),\n }\n})\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * The event generator for AST nodes.\n * This implements below interface.\n *\n * ```ts\n * interface EventGenerator {\n * emitter: EventEmitter\n * enterNode(node: ASTNode): void\n * leaveNode(node: ASTNode): void\n * }\n * ```\n */\nexport default class NodeEventGenerator {\n emitter: EventEmitter\n\n private currentAncestry: Node[]\n private enterSelectorsByNodeType: Map<string, NodeSelector[]>\n private exitSelectorsByNodeType: Map<string, NodeSelector[]>\n private anyTypeEnterSelectors: NodeSelector[]\n private anyTypeExitSelectors: NodeSelector[]\n\n /**\n * @param emitter - An event emitter which is the destination of events. This emitter must already\n * have registered listeners for all of the events that it needs to listen for.\n */\n constructor(emitter: EventEmitter) {\n this.emitter = emitter\n this.currentAncestry = []\n this.enterSelectorsByNodeType = new Map()\n this.exitSelectorsByNodeType = new Map()\n this.anyTypeEnterSelectors = []\n this.anyTypeExitSelectors = []\n\n const eventNames = typeof emitter.eventNames === \"function\"\n\n // Use the built-in eventNames() function if available (Node 6+)\n ? emitter.eventNames()\n\n /*\n * Otherwise, use the private _events property.\n * Using a private property isn't ideal here, but this seems to\n * be the best way to get a list of event names without overriding\n * addEventListener, which would hurt performance. This property\n * is widely used and unlikely to be removed in a future version\n * (see https://github.com/nodejs/node/issues/1817). Also, future\n * node versions will have eventNames() anyway.\n */\n : Object.keys((emitter as any)._events)\n\n for (const rawSelector of eventNames) {\n if (typeof rawSelector === \"symbol\") {\n continue\n }\n const selector = parseSelector(rawSelector)\n\n if (selector.listenerTypes) {\n for (const nodeType of selector.listenerTypes) {\n const typeMap = selector.isExit ? this.exitSelectorsByNodeType : this.enterSelectorsByNodeType\n\n let selectors = typeMap.get(nodeType)\n if (selectors == null) {\n typeMap.set(nodeType, (selectors = []))\n }\n selectors.push(selector)\n }\n }\n else {\n (selector.isExit ? this.anyTypeExitSelectors : this.anyTypeEnterSelectors).push(selector)\n }\n }\n\n this.anyTypeEnterSelectors.sort(compareSpecificity)\n this.anyTypeExitSelectors.sort(compareSpecificity)\n for (const selectorList of this.enterSelectorsByNodeType.values()) {\n selectorList.sort(compareSpecificity)\n }\n for (const selectorList of this.exitSelectorsByNodeType.values()) {\n selectorList.sort(compareSpecificity)\n }\n }\n\n /**\n * Checks a selector against a node, and emits it if it matches\n * @param node The node to check\n * @param selector An AST selector descriptor\n */\n private applySelector(node: Node, selector: NodeSelector): void {\n if (esquery.matches(node, selector.parsedSelector, this.currentAncestry)) {\n this.emitter.emit(selector.rawSelector, node)\n }\n }\n\n /**\n * Applies all appropriate selectors to a node, in specificity order\n * @param node The node to check\n * @param isExit `false` if the node is currently being entered, `true` if it's currently being exited\n */\n private applySelectors(node: Node, isExit: boolean): void {\n const selectorsByNodeType = (isExit ? this.exitSelectorsByNodeType : this.enterSelectorsByNodeType).get(node.type) || []\n const anyTypeSelectors = isExit ? this.anyTypeExitSelectors : this.anyTypeEnterSelectors\n\n /*\n * selectorsByNodeType and anyTypeSelectors were already sorted by specificity in the constructor.\n * Iterate through each of them, applying selectors in the right order.\n */\n let selectorsByTypeIndex = 0\n let anyTypeSelectorsIndex = 0\n\n while (selectorsByTypeIndex < selectorsByNodeType.length || anyTypeSelectorsIndex < anyTypeSelectors.length) {\n if (\n selectorsByTypeIndex >= selectorsByNodeType.length ||\n (anyTypeSelectorsIndex < anyTypeSelectors.length && compareSpecificity(anyTypeSelectors[anyTypeSelectorsIndex], selectorsByNodeType[selectorsByTypeIndex]) < 0)\n ) {\n this.applySelector(node, anyTypeSelectors[anyTypeSelectorsIndex++])\n }\n else {\n this.applySelector(node, selectorsByNodeType[selectorsByTypeIndex++])\n }\n }\n }\n\n /**\n * Emits an event of entering AST node.\n * @param node - A node which was entered.\n */\n enterNode(node: Node): void {\n if (node.parent) {\n this.currentAncestry.unshift(node.parent)\n }\n this.applySelectors(node, false)\n }\n\n /**\n * Emits an event of leaving AST node.\n * @param node - A node which was left.\n */\n leaveNode(node: Node): void {\n this.applySelectors(node, true)\n this.currentAncestry.shift()\n }\n}\n","/**\n * @fileoverview Define utilify functions for token store.\n * @author Toru Nagashima\n */\nimport sortedIndexBy from \"lodash/sortedIndexBy\"\nimport {HasLocation} from \"../../ast\"\n\n/**\n * Gets `token.range[0]` from the given token.\n *\n * @param token - The token to get.\n * @returns The start location.\n * @private\n */\nfunction getStartLocation(token: { range: number[] }): number {\n return token.range[0]\n}\n\n/**\n * Binary-searches the index of the first token which is after the given location.\n * If it was not found, this returns `tokens.length`.\n *\n * @param tokens - It searches the token in this list.\n * @param location - The location to search.\n * @returns The found index or `tokens.length`.\n */\nexport function search(tokens: HasLocation[], location: number): number {\n return sortedIndexBy(\n tokens,\n {range: [location]},\n getStartLocation\n )\n}\n\n/**\n * Gets the index of the `startLoc` in `tokens`.\n * `startLoc` can be the value of `node.range[1]`, so this checks about `startLoc - 1` as well.\n *\n * @param tokens - The tokens to find an index.\n * @param indexMap - The map from locations to indices.\n * @param startLoc - The location to get an index.\n * @returns The index.\n */\nexport function getFirstIndex(tokens: HasLocation[], indexMap: { [key: number]: number }, startLoc: number): number {\n if (startLoc in indexMap) {\n return indexMap[startLoc]\n }\n if ((startLoc - 1) in indexMap) {\n const index = indexMap[startLoc - 1]\n const token = (index >= 0 && index < tokens.length) ? tokens[index] : null\n\n // For the map of \"comment's location -> token's index\", it points the next token of a comment.\n // In that case, +1 is unnecessary.\n if (token && token.range[0] >= startLoc) {\n return index\n }\n return index + 1\n }\n return 0\n}\n\n/**\n * Gets the index of the `endLoc` in `tokens`.\n * The information of end locations are recorded at `endLoc - 1` in `indexMap`, so this checks about `endLoc - 1` as well.\n *\n * @param tokens - The tokens to find an index.\n * @param indexMap - The map from locations to indices.\n * @param endLoc - The location to get an index.\n * @returns The index.\n */\nexport function getLastIndex(tokens: HasLocation[], indexMap: { [key: number]: number }, endLoc: number): number {\n if (endLoc in indexMap) {\n return indexMap[endLoc] - 1\n }\n if ((endLoc - 1) in indexMap) {\n const index = indexMap[endLoc - 1]\n const token = (index >= 0 && index < tokens.length) ? tokens[index] : null\n\n // For the map of \"comment's location -> token's index\", it points the next token of a comment.\n // In that case, -1 is necessary.\n if (token && token.range[1] > endLoc) {\n return index - 1\n }\n return index\n }\n return tokens.length - 1\n}\n","/**\n * @fileoverview Define the abstract class about cursors which iterate tokens.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\n\n/**\n * The abstract class about cursors which iterate tokens.\n *\n * This class has 2 abstract methods.\n *\n * - `current: Token | Comment | null` ... The current token.\n * - `moveNext(): boolean` ... Moves this cursor to the next token. If the next token didn't exist, it returns `false`.\n *\n * This is similar to ES2015 Iterators.\n * However, Iterators were slow (at 2017-01), so I created this class as similar to C# IEnumerable.\n *\n * There are the following known sub classes.\n *\n * - ForwardTokenCursor .......... The cursor which iterates tokens only.\n * - BackwardTokenCursor ......... The cursor which iterates tokens only in reverse.\n * - ForwardTokenCommentCursor ... The cursor which iterates tokens and comments.\n * - BackwardTokenCommentCursor .. The cursor which iterates tokens and comments in reverse.\n * - DecorativeCursor\n * - FilterCursor ............ The cursor which ignores the specified tokens.\n * - SkipCursor .............. The cursor which ignores the first few tokens.\n * - LimitCursor ............. The cursor which limits the count of tokens.\n *\n */\nexport default abstract class Cursor {\n current: Token | null\n\n /**\n * Initializes this cursor.\n */\n constructor() {\n this.current = null\n }\n\n /**\n * Gets the first token.\n * This consumes this cursor.\n * @returns The first token or null.\n */\n getOneToken(): Token | null {\n return this.moveNext() ? this.current : null\n }\n\n /**\n * Gets the first tokens.\n * This consumes this cursor.\n * @returns All tokens.\n */\n getAllTokens(): Token[] {\n const tokens: Token[] = []\n\n while (this.moveNext()) {\n tokens.push(this.current as Token)\n }\n\n return tokens\n }\n\n /**\n * Moves this cursor to the next token.\n * @returns {boolean} `true` if the next token exists.\n * @abstract\n */\n abstract moveNext(): boolean\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens and comments in reverse.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getLastIndex, search} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens and comments in reverse.\n */\nexport default class BackwardTokenCommentCursor extends Cursor {\n private tokens: Token[]\n private comments: Token[]\n private tokenIndex: number\n private commentIndex: number\n private border: number\n\n /**\n * Initializes this cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n */\n constructor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n super()\n this.tokens = tokens\n this.comments = comments\n this.tokenIndex = getLastIndex(tokens, indexMap, endLoc)\n this.commentIndex = search(comments, endLoc) - 1\n this.border = startLoc\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n const token = (this.tokenIndex >= 0) ? this.tokens[this.tokenIndex] : null\n const comment = (this.commentIndex >= 0) ? this.comments[this.commentIndex] : null\n\n if (token && (!comment || token.range[1] > comment.range[1])) {\n this.current = token\n this.tokenIndex -= 1\n }\n else if (comment) {\n this.current = comment\n this.commentIndex -= 1\n }\n else {\n this.current = null\n }\n\n return this.current != null && (this.border === -1 || this.current.range[0] >= this.border)\n }\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens only in reverse.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getFirstIndex, getLastIndex} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens only in reverse.\n */\nexport default class BackwardTokenCursor extends Cursor {\n private tokens: Token[]\n private index: number\n private indexEnd: number\n\n /**\n * Initializes this cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n */\n constructor(tokens: Token[], _comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n super()\n this.tokens = tokens\n this.index = getLastIndex(tokens, indexMap, endLoc)\n this.indexEnd = getFirstIndex(tokens, indexMap, startLoc)\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n if (this.index >= this.indexEnd) {\n this.current = this.tokens[this.index]\n this.index -= 1\n return true\n }\n return false\n }\n\n //\n // Shorthand for performance.\n //\n\n /** @inheritdoc */\n getOneToken(): Token | null {\n return (this.index >= this.indexEnd) ? this.tokens[this.index] : null\n }\n}\n","/**\n * @fileoverview Define the abstract class about cursors which manipulate another cursor.\n * @author Toru Nagashima\n */\nimport Cursor from \"./cursor\"\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The abstract class about cursors which manipulate another cursor.\n */\nexport default class DecorativeCursor extends Cursor {\n protected cursor: Cursor\n\n /**\n * Initializes this cursor.\n * @param cursor - The cursor to be decorated.\n */\n constructor(cursor: Cursor) {\n super()\n this.cursor = cursor\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n const retv = this.cursor.moveNext()\n\n this.current = this.cursor.current\n\n return retv\n }\n}\n","/**\n * @fileoverview Define the cursor which ignores specified tokens.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport Cursor from \"./cursor\"\nimport DecorativeCursor from \"./decorative-cursor\"\n\n/**\n * The decorative cursor which ignores specified tokens.\n */\nexport default class FilterCursor extends DecorativeCursor {\n private predicate: (token: Token) => boolean\n\n /**\n * Initializes this cursor.\n * @param cursor - The cursor to be decorated.\n * @param predicate - The predicate function to decide tokens this cursor iterates.\n */\n constructor(cursor: Cursor, predicate: (token: Token) => boolean) {\n super(cursor)\n this.predicate = predicate\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n const predicate = this.predicate\n\n while (super.moveNext()) {\n if (predicate(this.current as Token)) {\n return true\n }\n }\n return false\n }\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens and comments.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getFirstIndex, search} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens and comments.\n */\nexport default class ForwardTokenCommentCursor extends Cursor {\n private tokens: Token[]\n private comments: Token[]\n private tokenIndex: number\n private commentIndex: number\n private border: number\n\n /**\n * Initializes this cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n */\n constructor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n super()\n this.tokens = tokens\n this.comments = comments\n this.tokenIndex = getFirstIndex(tokens, indexMap, startLoc)\n this.commentIndex = search(comments, startLoc)\n this.border = endLoc\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n const token = (this.tokenIndex < this.tokens.length) ? this.tokens[this.tokenIndex] : null\n const comment = (this.commentIndex < this.comments.length) ? this.comments[this.commentIndex] : null\n\n if (token && (!comment || token.range[0] < comment.range[0])) {\n this.current = token\n this.tokenIndex += 1\n }\n else if (comment) {\n this.current = comment\n this.commentIndex += 1\n }\n else {\n this.current = null\n }\n\n return this.current != null && (this.border === -1 || this.current.range[1] <= this.border)\n }\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens only.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getFirstIndex, getLastIndex} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens only.\n */\nexport default class ForwardTokenCursor extends Cursor {\n private tokens: Token[]\n protected index: number\n protected indexEnd: number\n\n /**\n * Initializes this cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n */\n constructor(tokens: Token[], _comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n super()\n this.tokens = tokens\n this.index = getFirstIndex(tokens, indexMap, startLoc)\n this.indexEnd = getLastIndex(tokens, indexMap, endLoc)\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n if (this.index <= this.indexEnd) {\n this.current = this.tokens[this.index]\n this.index += 1\n return true\n }\n return false\n }\n\n //\n // Shorthand for performance.\n //\n\n /** @inheritdoc */\n getOneToken(): Token | null {\n return (this.index <= this.indexEnd) ? this.tokens[this.index] : null\n }\n\n /** @inheritdoc */\n getAllTokens(): Token[] {\n return this.tokens.slice(this.index, this.indexEnd + 1)\n }\n}\n","/**\n * @fileoverview Define the cursor which limits the number of tokens.\n * @author Toru Nagashima\n */\nimport Cursor from \"./cursor\"\nimport DecorativeCursor from \"./decorative-cursor\"\n\n/**\n * The decorative cursor which limits the number of tokens.\n */\nexport default class LimitCursor extends DecorativeCursor {\n private count: number\n\n /**\n * Initializes this cursor.\n * @param cursor - The cursor to be decorated.\n * @param count - The count of tokens this cursor iterates.\n */\n constructor(cursor: Cursor, count: number) {\n super(cursor)\n this.count = count\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n if (this.count > 0) {\n this.count -= 1\n return super.moveNext()\n }\n return false\n }\n}\n","/**\n * @fileoverview Define the cursor which ignores the first few tokens.\n * @author Toru Nagashima\n */\nimport Cursor from \"./cursor\"\nimport DecorativeCursor from \"./decorative-cursor\"\n\n/**\n * The decorative cursor which ignores the first few tokens.\n */\nexport default class SkipCursor extends DecorativeCursor {\n private count: number\n\n /**\n * Initializes this cursor.\n * @param cursor - The cursor to be decorated.\n * @param count - The count of tokens this cursor skips.\n */\n constructor(cursor: Cursor, count: number) {\n super(cursor)\n this.count = count\n }\n\n /** @inheritdoc */\n moveNext(): boolean {\n while (this.count > 0) {\n this.count -= 1\n if (!super.moveNext()) {\n return false\n }\n }\n return super.moveNext()\n }\n}\n","/**\n * @fileoverview Define 2 token factories; forward and backward.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport BackwardTokenCommentCursor from \"./backward-token-comment-cursor\"\nimport BackwardTokenCursor from \"./backward-token-cursor\"\nimport Cursor from \"./cursor\"\nimport FilterCursor from \"./filter-cursor\"\nimport ForwardTokenCommentCursor from \"./forward-token-comment-cursor\"\nimport ForwardTokenCursor from \"./forward-token-cursor\"\nimport LimitCursor from \"./limit-cursor\"\nimport SkipCursor from \"./skip-cursor\"\n\n/**\n * The cursor factory.\n * @private\n */\nexport class CursorFactory {\n private TokenCursor: typeof BackwardTokenCursor | typeof ForwardTokenCursor\n private TokenCommentCursor: typeof BackwardTokenCommentCursor | typeof ForwardTokenCommentCursor\n\n /**\n * Initializes this cursor.\n * @param TokenCursor - The class of the cursor which iterates tokens only.\n * @param TokenCommentCursor - The class of the cursor which iterates the mix of tokens and comments.\n */\n constructor(TokenCursor: typeof BackwardTokenCursor | typeof ForwardTokenCursor, TokenCommentCursor: typeof BackwardTokenCommentCursor | typeof ForwardTokenCommentCursor) {\n this.TokenCursor = TokenCursor\n this.TokenCommentCursor = TokenCommentCursor\n }\n\n /**\n * Creates a base cursor instance that can be decorated by createCursor.\n *\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param includeComments - The flag to iterate comments as well.\n * @returns The created base cursor.\n */\n createBaseCursor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, includeComments: boolean): Cursor {\n const TokenCursor = includeComments ? this.TokenCommentCursor : this.TokenCursor\n return new TokenCursor(tokens, comments, indexMap, startLoc, endLoc)\n }\n\n /**\n * Creates a cursor that iterates tokens with normalized options.\n *\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param includeComments - The flag to iterate comments as well.\n * @param filter - The predicate function to choose tokens.\n * @param skip - The count of tokens the cursor skips.\n * @param count - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.\n * @returns The created cursor.\n */\n createCursor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, includeComments: boolean, filter: ((token: Token) => boolean) | null, skip: number, count: number): Cursor {\n let cursor = this.createBaseCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments)\n\n if (filter) {\n cursor = new FilterCursor(cursor, filter)\n }\n if (skip >= 1) {\n cursor = new SkipCursor(cursor, skip)\n }\n if (count >= 0) {\n cursor = new LimitCursor(cursor, count)\n }\n\n return cursor\n }\n}\n\nexport const forward = new CursorFactory(ForwardTokenCursor, ForwardTokenCommentCursor)\nexport const backward = new CursorFactory(BackwardTokenCursor, BackwardTokenCommentCursor)\n","/**\n * @fileoverview Define the cursor which iterates tokens only, with inflated range.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport ForwardTokenCursor from \"./forward-token-cursor\"\n\n/**\n * The cursor which iterates tokens only, with inflated range.\n * This is for the backward compatibility of padding options.\n */\nexport default class PaddedTokenCursor extends ForwardTokenCursor {\n /**\n * Initializes this cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param beforeCount - The number of tokens this cursor iterates before start.\n * @param afterCount - The number of tokens this cursor iterates after end.\n */\n constructor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, beforeCount: number, afterCount: number) {\n super(tokens, comments, indexMap, startLoc, endLoc)\n this.index = Math.max(0, this.index - beforeCount)\n this.indexEnd = Math.min(tokens.length - 1, this.indexEnd + afterCount)\n }\n}\n","/**\n * @fileoverview Object to handle access and retrieval of tokens.\n * @author Brandon Mills\n */\nimport assert from \"assert\"\nimport {HasLocation, Token} from \"../../ast\"\nimport * as cursors from \"./cursors\"\nimport Cursor from \"./cursors/cursor\"\nimport ForwardTokenCursor from \"./cursors/forward-token-cursor\"\nimport PaddedTokenCursor from \"./cursors/padded-token-cursor\"\nimport {search} from \"./utils\"\n\nexport type SkipOptions = number | ((token: Token) => boolean) | {\n includeComments?: boolean\n filter?: (token: Token) => boolean\n skip?: number\n}\nexport type CountOptions = number | ((token: Token) => boolean) | {\n includeComments?: boolean\n filter?: (token: Token) => boolean\n count?: number\n}\n\n/**\n * Check whether the given token is a comment token or not.\n * @param token The token to check.\n * @returns `true` if the token is a comment token.\n */\nfunction isCommentToken(token: Token): boolean {\n return token.type === \"Line\" || token.type === \"Block\" || token.type === \"Shebang\"\n}\n\n/**\n * Creates the map from locations to indices in `tokens`.\n *\n * The first/last location of tokens is mapped to the index of the token.\n * The first/last location of comments is mapped to the index of the next token of each comment.\n *\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @returns The map from locations to indices in `tokens`.\n * @private\n */\nfunction createIndexMap(tokens: Token[], comments: Token[]): { [key: number]: number } {\n const map = Object.create(null)\n let tokenIndex = 0\n let commentIndex = 0\n let nextStart = 0\n let range: [number, number] | null = null\n\n while (tokenIndex < tokens.length || commentIndex < comments.length) {\n nextStart = (commentIndex < comments.length) ? comments[commentIndex].range[0] : Number.MAX_SAFE_INTEGER\n while (tokenIndex < tokens.length && (range = tokens[tokenIndex].range)[0] < nextStart) {\n map[range[0]] = tokenIndex\n map[range[1] - 1] = tokenIndex\n tokenIndex += 1\n }\n\n nextStart = (tokenIndex < tokens.length) ? tokens[tokenIndex].range[0] : Number.MAX_SAFE_INTEGER\n while (commentIndex < comments.length && (range = comments[commentIndex].range)[0] < nextStart) {\n map[range[0]] = tokenIndex\n map[range[1] - 1] = tokenIndex\n commentIndex += 1\n }\n }\n\n return map\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n *\n * @param factory - The cursor factory to initialize cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param opts - The option object. If this is a number then it's `opts.skip`. If this is a function then it's `opts.filter`.\n * @returns The created cursor.\n * @private\n */\nfunction createCursorWithSkip(factory: cursors.CursorFactory, tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, opts?: SkipOptions): Cursor {\n let includeComments = false\n let skip = 0\n let filter: ((token: Token) => boolean) | null = null\n\n if (typeof opts === \"number\") {\n skip = opts | 0\n }\n else if (typeof opts === \"function\") {\n filter = opts\n }\n else if (opts) {\n includeComments = Boolean(opts.includeComments)\n skip = opts.skip || 0\n filter = opts.filter || null\n }\n assert(skip >= 0, \"options.skip should be zero or a positive integer.\")\n assert(!filter || typeof filter === \"function\", \"options.filter should be a function.\")\n\n return factory.createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, skip, -1)\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n *\n * @param factory - The cursor factory to initialize cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param opts - The option object. If this is a number then it's `opts.count`. If this is a function then it's `opts.filter`.\n * @returns The created cursor.\n * @private\n */\nfunction createCursorWithCount(factory: cursors.CursorFactory, tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, opts?: CountOptions): Cursor {\n let includeComments = false\n let count = 0\n let countExists = false\n let filter: ((token: Token) => boolean) | null = null\n\n if (typeof opts === \"number\") {\n count = opts | 0\n countExists = true\n }\n else if (typeof opts === \"function\") {\n filter = opts\n }\n else if (opts) {\n includeComments = Boolean(opts.includeComments)\n count = opts.count || 0\n countExists = typeof opts.count === \"number\"\n filter = opts.filter || null\n }\n assert(count >= 0, \"options.count should be zero or a positive integer.\")\n assert(!filter || typeof filter === \"function\", \"options.filter should be a function.\")\n\n return factory.createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, 0, countExists ? count : -1)\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n *\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param beforeCount - The number of tokens before the node to retrieve.\n * @param afterCount - The number of tokens after the node to retrieve.\n * @returns The created cursor.\n * @private\n */\nfunction createCursorWithPadding(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, beforeCount?: CountOptions, afterCount?: number): Cursor {\n if (typeof beforeCount === \"undefined\" && typeof afterCount === \"undefined\") {\n return new ForwardTokenCursor(tokens, comments, indexMap, startLoc, endLoc)\n }\n if (typeof beforeCount === \"number\" || typeof beforeCount === \"undefined\") {\n return new PaddedTokenCursor(tokens, comments, indexMap, startLoc, endLoc, beforeCount || 0, afterCount || 0)\n }\n return createCursorWithCount(cursors.forward, tokens, comments, indexMap, startLoc, endLoc, beforeCount)\n}\n\n/**\n * Gets comment tokens that are adjacent to the current cursor position.\n * @param cursor - A cursor instance.\n * @returns An array of comment tokens adjacent to the current cursor position.\n * @private\n */\nfunction getAdjacentCommentTokensFromCursor(cursor: Cursor): Token[] {\n const tokens: Token[] = []\n let currentToken = cursor.getOneToken()\n\n while (currentToken && isCommentToken(currentToken)) {\n tokens.push(currentToken)\n currentToken = cursor.getOneToken()\n }\n\n return tokens\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The token store.\n *\n * This class provides methods to get tokens by locations as fast as possible.\n * The methods are a part of public API, so we should be careful if it changes this class.\n *\n * People can get tokens in O(1) by the hash map which is mapping from the location of tokens/comments to tokens.\n * Also people can get a mix of tokens and comments in O(log k), the k is the number of comments.\n * Assuming that comments to be much fewer than tokens, this does not make hash map from token's locations to comments to reduce memory cost.\n * This uses binary-searching instead for comments.\n */\nexport default class TokenStore {\n private _tokens: Token[]\n private _comments: Token[]\n private _indexMap: { [key: number]: number }\n\n /**\n * Initializes this token store.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n */\n constructor(tokens: Token[], comments: Token[]) {\n this._tokens = tokens\n this._comments = comments\n this._indexMap = createIndexMap(tokens, comments)\n }\n\n //--------------------------------------------------------------------------\n // Gets single token.\n //--------------------------------------------------------------------------\n\n /**\n * Gets the token starting at the specified index.\n * @param offset - Index of the start of the token's range.\n * @param options - The option object.\n * @returns The token starting at index, or null if no such token.\n */\n getTokenByRangeStart(offset: number, options?: { includeComments: boolean }): Token | null {\n const includeComments = Boolean(options && options.includeComments)\n const token = cursors.forward.createBaseCursor(\n this._tokens,\n this._comments,\n this._indexMap,\n offset,\n -1,\n includeComments\n ).getOneToken()\n\n if (token && token.range[0] === offset) {\n return token\n }\n return null\n }\n\n /**\n * Gets the first token of the given node.\n * @param node - The AST node.\n * @param options - The option object.\n * @returns An object representing the token.\n */\n getFirstToken(node: HasLocation, options?: SkipOptions): Token | null {\n return createCursorWithSkip(\n cursors.forward,\n this._tokens,\n this._comments,\n this._indexMap,\n node.range[0],\n node.range[1],\n options\n ).getOneToken()\n }\n\n /**\n * Gets the last token of the given node.\n * @param node - The AST node.\n * @param options - The option object.\n * @returns An object representing the token.\n */\n getLastToken(node: HasLocation, options?: SkipOptions): Token | null {\n return createCursorWithSkip(\n cursors.backward,\n this._tokens,\n this._comments,\n this._indexMap,\n node.range[0],\n node.range[1],\n options\n ).getOneToken()\n }\n\n /**\n * Gets the token that precedes a given node or token.\n * @param node - The AST node or token.\n * @param options - The option object.\n * @returns An object representing the token.\n */\n getTokenBefore(node: HasLocation, options?: SkipOptions): Token | null {\n return createCursorWithSkip(\n cursors.backward,\n this._tokens,\n this._comments,\n this._indexMap,\n -1,\n node.range[0],\n options\n ).getOneToken()\n }\n\n /**\n * Gets the token that follows a given node or token.\n * @param node - The AST node or token.\n * @param options - The option object.\n * @returns An object representing the token.\n */\n getTokenAfter(node: HasLocation, options?: SkipOptions): Token | null {\n return createCursorWithSkip(\n cursors.forward,\n this._tokens,\n this._comments,\n this._indexMap,\n node.range[1],\n -1,\n options\n ).getOneToken()\n }\n\n /**\n * Gets the first token between two non-overlapping nodes.\n * @param left - Node before the desired token range.\n * @param right - Node after the desired token range.\n * @param options - The option object.\n * @returns An object representing the token.\n */\n getFirstTokenBetween(left: HasLocation, right: HasLocation, options?: SkipOptions): Token | null {\n return createCursorWithSkip(\n cursors.forward,\n this._tokens,\n this._comments,\n this._indexMap,\n left.range[1],\n right.range[0],\n options\n ).getOneToken()\n }\n\n /**\n * Gets the last token between two non-overlapping nodes.\n * @param left Node before the desired token range.\n * @param right Node after the desired token range.\n * @param options - The option object.\n * @returns An object representing the token.\n */\n getLastTokenBetween(left: HasLocation, right: HasLocation, options?: SkipOptions): Token | null {\n return createCursorWithSkip(\n cursors.backward,\n this._tokens,\n this._comments,\n this._indexMap,\n left.range[1],\n right.range[0],\n options\n ).getOneToken()\n }\n\n /**\n * Gets the token that precedes a given node or token in the token stream.\n * This is defined for backward compatibility. Use `includeComments` option instead.\n * TODO: We have a plan to remove this in a future major version.\n * @param node The AST node or token.\n * @param skip A number of tokens to skip.\n * @returns An object representing the token.\n * @deprecated\n */\n getTokenOrCommentBefore(node: HasLocation, skip?: number): Token | null {\n return this.getTokenBefore(node, {includeComments: true, skip})\n }\n\n /**\n * Gets the token that follows a given node or token in the token stream.\n * This is defined for backward compatibility. Use `includeComments` option instead.\n * TODO: We have a plan to remove this in a future major version.\n * @param node The AST node or token.\n * @param skip A number of tokens to skip.\n * @returns An object representing the token.\n * @deprecated\n */\n getTokenOrCommentAfter(node: HasLocation, skip?: number): Token | null {\n return this.getTokenAfter(node, {includeComments: true, skip})\n }\n\n //--------------------------------------------------------------------------\n // Gets multiple tokens.\n //--------------------------------------------------------------------------\n\n /**\n * Gets the first `count` tokens of the given node.\n * @param node - The AST node.\n * @param [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.\n * @param [options.includeComments=false] - The flag to iterate comments as well.\n * @param [options.filter=null] - The predicate function to choose tokens.\n * @param [options.count=0] - The maximum count of tokens the cursor iterates.\n * @returns Tokens.\n */\n getFirstTokens(node: HasLocation, options?: CountOptions): Token[] {\n return createCursorWithCount(\n cursors.forward,\n this._tokens,\n this._comments,\n this._indexMap,\n node.range[0],\n node.range[1],\n options\n ).getAllTokens()\n }\n\n /**\n * Gets the last `count` tokens of the given node.\n * @param node - The AST node.\n * @param [options=0] - The option object. Same options as getFirstTokens()\n * @returns Tokens.\n */\n getLastTokens(node: HasLocation, options?: CountOptions) {\n return createCursorWithCount(\n cursors.backward,\n this._tokens,\n this._comments,\n this._indexMap,\n node.range[0],\n node.range[1],\n options\n ).getAllTokens().reverse()\n }\n\n /**\n * Gets the `count` tokens that precedes a given node or token.\n * @param node - The AST node or token.\n * @param [options=0] - The option object. Same options as getFirstTokens()\n * @returns Tokens.\n */\n getTokensBefore(node: HasLocation, options?: CountOptions): Token[] {\n return createCursorWithCount(\n cursors.backward,\n this._tokens,\n this._comments,\n this._indexMap,\n -1,\n node.range[0],\n options\n ).getAllTokens().reverse()\n }\n\n /**\n * Gets the `count` tokens that follows a given node or token.\n * @param node - The AST node or token.\n * @param [options=0] - The option object. Same options as getFirstTokens()\n * @returns Tokens.\n */\n getTokensAfter(node: HasLocation, options?: CountOptions): Token[] {\n return createCursorWithCount(\n cursors.forward,\n this._tokens,\n this._comments,\n this._indexMap,\n node.range[1],\n -1,\n options\n ).getAllTokens()\n }\n\n /**\n * Gets the first `count` tokens between two non-overlapping nodes.\n * @param left - Node before the desired token range.\n * @param right - Node after the desired token range.\n * @param [options=0] - The option object. Same options as getFirstTokens()\n * @returns Tokens between left and right.\n */\n getFirstTokensBetween(left: HasLocation, right: HasLocation, options?: CountOptions): Token[] {\n return createCursorWithCount(\n cursors.forward,\n this._tokens,\n this._comments,\n this._indexMap,\n left.range[1],\n right.range[0],\n options\n ).getAllTokens()\n }\n\n /**\n * Gets the last `count` tokens between two non-overlapping nodes.\n * @param left Node before the desired token range.\n * @param right Node after the desired token range.\n * @param [options=0] - The option object. Same options as getFirstTokens()\n * @returns Tokens between left and right.\n */\n getLastTokensBetween(left: HasLocation, right: HasLocation, options?: CountOptions): Token[] {\n return createCursorWithCount(\n cursors.backward,\n this._tokens,\n this._comments,\n this._indexMap,\n left.range[1],\n right.range[0],\n options\n ).getAllTokens().reverse()\n }\n\n /**\n * Gets all tokens that are related to the given node.\n * @param node - The AST node.\n * @param beforeCount - The number of tokens before the node to retrieve.\n * @param afterCount - The number of tokens after the node to retrieve.\n * @returns Array of objects representing tokens.\n */\n getTokens(node: HasLocation, beforeCount?: CountOptions, afterCount?: number): Token[] {\n return createCursorWithPadding(\n this._tokens,\n this._comments,\n this._indexMap,\n node.range[0],\n node.range[1],\n beforeCount,\n afterCount\n ).getAllTokens()\n }\n\n /**\n * Gets all of the tokens between two non-overlapping nodes.\n * @param left Node before the desired token range.\n * @param right Node after the desired token range.\n * @param padding Number of extra tokens on either side of center.\n * @returns Tokens between left and right.\n */\n getTokensBetween(left: HasLocation, right: HasLocation, padding?: CountOptions): Token[] {\n return createCursorWithPadding(\n this._tokens,\n this._comments,\n this._indexMap,\n left.range[1],\n right.range[0],\n padding,\n typeof padding === \"number\" ? padding : undefined\n ).getAllTokens()\n }\n\n //--------------------------------------------------------------------------\n // Others.\n //--------------------------------------------------------------------------\n\n /**\n * Checks whether any comments exist or not between the given 2 nodes.\n *\n * @param left - The node to check.\n * @param right - The node to check.\n * @returns `true` if one or more comments exist.\n */\n commentsExistBetween(left: HasLocation, right: HasLocation): boolean {\n const index = search(this._comments, left.range[1])\n\n return (\n index < this._comments.length &&\n this._comments[index].range[1] <= right.range[0]\n )\n }\n\n /**\n * Gets all comment tokens directly before the given node or token.\n * @param nodeOrToken The AST node or token to check for adjacent comment tokens.\n * @returns An array of comments in occurrence order.\n */\n getCommentsBefore(nodeOrToken: HasLocation): Token[] {\n const cursor = createCursorWithCount(\n cursors.backward,\n this._tokens,\n this._comments,\n this._indexMap,\n -1,\n nodeOrToken.range[0],\n {includeComments: true}\n )\n\n return getAdjacentCommentTokensFromCursor(cursor).reverse()\n }\n\n /**\n * Gets all comment tokens directly after the given node or token.\n * @param nodeOrToken The AST node or token to check for adjacent comment tokens.\n * @returns An array of comments in occurrence order.\n */\n getCommentsAfter(nodeOrToken: HasLocation): Token[] {\n const cursor = createCursorWithCount(\n cursors.forward,\n this._tokens,\n this._comments,\n this._indexMap,\n nodeOrToken.range[1],\n -1,\n {includeComments: true}\n )\n\n return getAdjacentCommentTokensFromCursor(cursor)\n }\n\n /**\n * Gets all comment tokens inside the given node.\n * @param node The AST node to get the comments for.\n * @returns An array of comments in occurrence order.\n */\n getCommentsInside(node: HasLocation): Token[] {\n return this.getTokens(node, {\n includeComments: true,\n filter: isCommentToken,\n })\n }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport EventEmitter from \"events\"\nimport NodeEventGenerator from \"./external/node-event-generator\"\nimport TokenStore from \"./external/token-store\"\nimport { traverseNodes, ESLintProgram, VElement } from \"./ast\"\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst emitters = new WeakMap<object, EventEmitter>()\nconst stores = new WeakMap<object, TokenStore>()\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * Define the parser service\n * @param rootAST\n */\nexport function define(rootAST: ESLintProgram) {\n return {\n /**\n * Define handlers to traverse the template body.\n * @param templateBodyVisitor The template body handlers.\n * @param scriptVisitor The script handlers. This is optional.\n */\n defineTemplateBodyVisitor(templateBodyVisitor: { [key: string]: Function }, scriptVisitor?: { [key: string]: Function }): object {\n if (scriptVisitor == null) {\n scriptVisitor = {}\n }\n if (rootAST.templateBody == null) {\n return scriptVisitor\n }\n\n let emitter = emitters.get(rootAST)\n\n // If this is the first time, initialize the intermediate event emitter.\n if (emitter == null) {\n emitters.set(rootAST, (emitter = new EventEmitter()))\n\n const programExitHandler = scriptVisitor[\"Program:exit\"]\n scriptVisitor[\"Program:exit\"] = function() {\n try {\n if (typeof programExitHandler === \"function\") {\n programExitHandler.apply(this, arguments) //eslint-disable-line prefer-rest-params\n }\n\n // Traverse template body.\n const generator = new NodeEventGenerator(emitter as EventEmitter)\n traverseNodes(rootAST.templateBody as VElement, generator)\n }\n finally {\n // @ts-ignore\n scriptVisitor[\"Program:exit\"] = programExitHandler\n emitters.delete(rootAST)\n }\n }\n }\n\n // Register handlers into the intermediate event emitter.\n for (const selector of Object.keys(templateBodyVisitor)) {\n emitter.on(selector, templateBodyVisitor[selector])\n }\n\n return scriptVisitor\n },\n\n /**\n * Get the token store of the template body.\n * @returns The token store of template body.\n */\n getTemplateBodyTokenStore(): TokenStore {\n const ast = rootAST.templateBody\n const key = ast || stores\n let store = stores.get(key)\n\n if (!store) {\n store = (ast != null)\n ? new TokenStore(ast.tokens, ast.comments)\n : new TokenStore([], [])\n stores.set(key, store)\n }\n\n return store\n },\n }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport * as path from \"path\"\nimport * as AST from \"./ast\"\nimport { LocationCalculator } from \"./common/location-calculator\"\nimport { HTMLParser, HTMLTokenizer } from \"./html\"\nimport { parseScript, parseScriptElement } from \"./script\"\nimport * as services from \"./parser-services\"\n\nconst STARTS_WITH_LT = /^\\s*</\n\n/**\n * Check whether the code is a Vue.js component.\n * @param code The source code to check.\n * @param options The parser options.\n * @returns `true` if the source code is a Vue.js component.\n */\nfunction isVueFile(code: string, options: any): boolean {\n const filePath = (options.filePath as string | undefined) || \"unknown.js\"\n return path.extname(filePath) === \".vue\" || STARTS_WITH_LT.test(code)\n}\n\n/**\n * Check whether the node is a `<template>` element.\n * @param node The node to check.\n * @returns `true` if the node is a `<template>` element.\n */\nfunction isTemplateElement(node: AST.VNode): node is AST.VElement {\n return node.type === \"VElement\" && node.name === \"template\"\n}\n\n/**\n * Check whether the node is a `<script>` element.\n * @param node The node to check.\n * @returns `true` if the node is a `<script>` element.\n */\nfunction isScriptElement(node: AST.VNode): node is AST.VElement {\n return node.type === \"VElement\" && node.name === \"script\"\n}\n\n/**\n * Check whether the attribute node is a `lang` attribute.\n * @param attribute The attribute node to check.\n * @returns `true` if the attribute node is a `lang` attribute.\n */\nfunction isLang(attribute: AST.VAttribute | AST.VDirective): attribute is AST.VAttribute {\n return attribute.directive === false && attribute.key.name === \"lang\"\n}\n\n/**\n * Parse the given source code.\n * @param code The source code to parse.\n * @param options The parser options.\n * @returns The parsing result.\n */\nexport function parseForESLint(code: string, options: any): AST.ESLintExtendedProgram {\n options = Object.assign({\n comment: true,\n ecmaVersion: 2015,\n loc: true,\n range: true,\n tokens: true,\n }, options || {})\n\n let result: AST.ESLintExtendedProgram\n if (!isVueFile(code, options)) {\n result = parseScript(code, options)\n }\n else {\n const tokenizer = new HTMLTokenizer(code)\n const rootAST = new HTMLParser(tokenizer, options).parse()\n const locationCalcurator = new LocationCalculator(tokenizer.gaps, tokenizer.lineTerminators)\n const script = rootAST.children.find(isScriptElement)\n const template = rootAST.children.find(isTemplateElement)\n const templateLangAttr = template && template.startTag.attributes.find(isLang)\n const templateLang = (templateLangAttr && templateLangAttr.value && templateLangAttr.value.value) || \"html\"\n const concreteInfo: AST.HasConcreteInfo = {\n tokens: rootAST.tokens,\n comments: rootAST.comments,\n errors: rootAST.errors,\n }\n\n result = (script != null)\n ? parseScriptElement(script, locationCalcurator, options)\n : parseScript(\"\", options)\n result.ast.templateBody = (template != null && templateLang === \"html\")\n ? Object.assign(template, concreteInfo)\n : undefined\n }\n\n result.services = Object.assign(result.services || {}, services.define(result.ast))\n\n return result\n}\n\n/**\n * Parse the given source code.\n * @param code The source code to parse.\n * @param options The parser options.\n * @returns The parsing result.\n */\nexport function parse(code: string, options: any): AST.ESLintProgram {\n return parseForESLint(code, options).ast\n}\n\nexport { AST }\n"],"names":["DUMMY_PARENT","cursors.forward","cursors.backward","path.extname","HTMLTokenizer","HTMLParser","services.define"],"mappings":"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AAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,KAAK,CAAC,EAAC,iBAAiB,EAAC,CAAC,KAAK,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,KAAK,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,EAAE,EAAC,UAAU,EAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,KAAK,CAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,KAAK,CAAC,EAAC,gBAAgB,EAAC,CAAC,KAAK,CAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,KAAK,CAAC,EAAC,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Aa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,EAAE,EAAC,UAAU,EAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,KAAK,CAAC,EAAC,YAAY,EAAC,CAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC,KAAK,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,KAAK,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,YAAY,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,KAAK,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,KAAK,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,YAAY,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,EAAE,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,EAAE,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,EAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KA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"} kodo - Gogs: Go Git Service

暂无描述

Brightcells: b95db9c5c3 Basic gis command 8 年之前
..
__init__.py b95db9c5c3 Basic gis command 8 年之前